1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652 |
- ! function (t, e) {
- "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).BMturf = {})
- }(this, (function (t) {
- "use strict";
- var e = 6371008.8,
- n = {
- centimeters: 637100880,
- centimetres: 637100880,
- degrees: 57.22891354143274,
- feet: 20902260.511392,
- inches: 39.37 * e,
- kilometers: 6371.0088,
- kilometres: 6371.0088,
- meters: e,
- metres: e,
- miles: 3958.761333810546,
- millimeters: 6371008800,
- millimetres: 6371008800,
- nauticalmiles: e / 1852,
- radians: 1,
- yards: 6967335.223679999
- },
- r = {
- centimeters: 100,
- centimetres: 100,
- degrees: 1 / 111325,
- feet: 3.28084,
- inches: 39.37,
- kilometers: .001,
- kilometres: .001,
- meters: 1,
- metres: 1,
- miles: 1 / 1609.344,
- millimeters: 1e3,
- millimetres: 1e3,
- nauticalmiles: 1 / 1852,
- radians: 1 / e,
- yards: 1.0936133
- },
- i = {
- acres: 247105e-9,
- centimeters: 1e4,
- centimetres: 1e4,
- feet: 10.763910417,
- hectares: 1e-4,
- inches: 1550.003100006,
- kilometers: 1e-6,
- kilometres: 1e-6,
- meters: 1,
- metres: 1,
- miles: 386e-9,
- millimeters: 1e6,
- millimetres: 1e6,
- yards: 1.195990046
- };
- function o(t, e, n) {
- void 0 === n && (n = {});
- var r = {
- type: "Feature"
- };
- return (0 === n.id || n.id) && (r.id = n.id), n.bbox && (r.bbox = n.bbox), r.properties = e || {}, r.geometry = t, r
- }
- function s(t, e, n) {
- switch (t) {
- case "Point":
- return a(e).geometry;
- case "LineString":
- return h(e).geometry;
- case "Polygon":
- return l(e).geometry;
- case "MultiPoint":
- return d(e).geometry;
- case "MultiLineString":
- return g(e).geometry;
- case "MultiPolygon":
- return y(e).geometry;
- default:
- throw new Error(t + " is invalid")
- }
- }
- function a(t, e, n) {
- if (void 0 === n && (n = {}), !t) throw new Error("coordinates is required");
- if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
- if (t.length < 2) throw new Error("coordinates must be at least 2 numbers long");
- if (!C(t[0]) || !C(t[1])) throw new Error("coordinates must contain numbers");
- return o({
- type: "Point",
- coordinates: t
- }, e, n)
- }
- function u(t, e, n) {
- return void 0 === n && (n = {}), f(t.map((function (t) {
- return a(t, e)
- })), n)
- }
- function l(t, e, n) {
- void 0 === n && (n = {});
- for (var r = 0, i = t; r < i.length; r++) {
- var s = i[r];
- if (s.length < 4) throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
- for (var a = 0; a < s[s.length - 1].length; a++)
- if (s[s.length - 1][a] !== s[0][a]) throw new Error("First and last Position are not equivalent.")
- }
- return o({
- type: "Polygon",
- coordinates: t
- }, e, n)
- }
- function c(t, e, n) {
- return void 0 === n && (n = {}), f(t.map((function (t) {
- return l(t, e)
- })), n)
- }
- function h(t, e, n) {
- if (void 0 === n && (n = {}), t.length < 2) throw new Error("coordinates must be an array of two or more positions");
- return o({
- type: "LineString",
- coordinates: t
- }, e, n)
- }
- function p(t, e, n) {
- return void 0 === n && (n = {}), f(t.map((function (t) {
- return h(t, e)
- })), n)
- }
- function f(t, e) {
- void 0 === e && (e = {});
- var n = {
- type: "FeatureCollection"
- };
- return e.id && (n.id = e.id), e.bbox && (n.bbox = e.bbox), n.features = t, n
- }
- function g(t, e, n) {
- return void 0 === n && (n = {}), o({
- type: "MultiLineString",
- coordinates: t
- }, e, n)
- }
- function d(t, e, n) {
- return void 0 === n && (n = {}), o({
- type: "MultiPoint",
- coordinates: t
- }, e, n)
- }
- function y(t, e, n) {
- return void 0 === n && (n = {}), o({
- type: "MultiPolygon",
- coordinates: t
- }, e, n)
- }
- function v(t, e, n) {
- return void 0 === n && (n = {}), o({
- type: "GeometryCollection",
- geometries: t
- }, e, n)
- }
- function _(t, e) {
- if (void 0 === e && (e = 0), e && !(e >= 0)) throw new Error("precision must be a positive number");
- var n = Math.pow(10, e || 0);
- return Math.round(t * n) / n
- }
- function m(t, e) {
- void 0 === e && (e = "kilometers");
- var r = n[e];
- if (!r) throw new Error(e + " units is invalid");
- return t * r
- }
- function x(t, e) {
- void 0 === e && (e = "kilometers");
- var r = n[e];
- if (!r) throw new Error(e + " units is invalid");
- return t / r
- }
- function E(t, e) {
- return w(x(t, e))
- }
- function b(t) {
- var e = t % 360;
- return e < 0 && (e += 360), e
- }
- function w(t) {
- return 180 * (t % (2 * Math.PI)) / Math.PI
- }
- function I(t) {
- return t % 360 * Math.PI / 180
- }
- function N(t, e, n) {
- if (void 0 === e && (e = "kilometers"), void 0 === n && (n = "kilometers"), !(t >= 0)) throw new Error("length must be a positive number");
- return m(x(t, e), n)
- }
- function S(t, e, n) {
- if (void 0 === e && (e = "meters"), void 0 === n && (n = "kilometers"), !(t >= 0)) throw new Error("area must be a positive number");
- var r = i[e];
- if (!r) throw new Error("invalid original units");
- var o = i[n];
- if (!o) throw new Error("invalid final units");
- return t / r * o
- }
- function C(t) {
- return !isNaN(t) && null !== t && !Array.isArray(t)
- }
- function P(t) {
- return !!t && t.constructor === Object
- }
- function M(t) {
- if (!t) throw new Error("bbox is required");
- if (!Array.isArray(t)) throw new Error("bbox must be an Array");
- if (4 !== t.length && 6 !== t.length) throw new Error("bbox must be an Array of 4 or 6 numbers");
- t.forEach((function (t) {
- if (!C(t)) throw new Error("bbox must only contain numbers")
- }))
- }
- function L(t) {
- if (!t) throw new Error("id is required");
- if (-1 === ["string", "number"].indexOf(typeof t)) throw new Error("id must be a number or a string")
- }
- var O = Object.freeze({
- __proto__: null,
- earthRadius: e,
- factors: n,
- unitsFactors: r,
- areaFactors: i,
- feature: o,
- geometry: s,
- point: a,
- points: u,
- polygon: l,
- polygons: c,
- lineString: h,
- lineStrings: p,
- featureCollection: f,
- multiLineString: g,
- multiPoint: d,
- multiPolygon: y,
- geometryCollection: v,
- round: _,
- radiansToLength: m,
- lengthToRadians: x,
- lengthToDegrees: E,
- bearingToAzimuth: b,
- radiansToDegrees: w,
- degreesToRadians: I,
- convertLength: N,
- convertArea: S,
- isNumber: C,
- isObject: P,
- validateBBox: M,
- validateId: L
- });
- function R(t, e, n) {
- if (null !== t)
- for (var r, i, o, s, a, u, l, c, h = 0, p = 0, f = t.type, g = "FeatureCollection" === f, d = "Feature" === f, y = g ? t.features.length : 1, v = 0; v < y; v++) {
- a = (c = !!(l = g ? t.features[v].geometry : d ? t.geometry : t) && "GeometryCollection" === l.type) ? l.geometries.length : 1;
- for (var _ = 0; _ < a; _++) {
- var m = 0,
- x = 0;
- if (null !== (s = c ? l.geometries[_] : l)) {
- u = s.coordinates;
- var E = s.type;
- switch (h = !n || "Polygon" !== E && "MultiPolygon" !== E ? 0 : 1, E) {
- case null:
- break;
- case "Point":
- if (!1 === e(u, p, v, m, x)) return !1;
- p++, m++;
- break;
- case "LineString":
- case "MultiPoint":
- for (r = 0; r < u.length; r++) {
- if (!1 === e(u[r], p, v, m, x)) return !1;
- p++, "MultiPoint" === E && m++
- }
- "LineString" === E && m++;
- break;
- case "Polygon":
- case "MultiLineString":
- for (r = 0; r < u.length; r++) {
- for (i = 0; i < u[r].length - h; i++) {
- if (!1 === e(u[r][i], p, v, m, x)) return !1;
- p++
- }
- "MultiLineString" === E && m++, "Polygon" === E && x++
- }
- "Polygon" === E && m++;
- break;
- case "MultiPolygon":
- for (r = 0; r < u.length; r++) {
- for (x = 0, i = 0; i < u[r].length; i++) {
- for (o = 0; o < u[r][i].length - h; o++) {
- if (!1 === e(u[r][i][o], p, v, m, x)) return !1;
- p++
- }
- x++
- }
- m++
- }
- break;
- case "GeometryCollection":
- for (r = 0; r < s.geometries.length; r++)
- if (!1 === R(s.geometries[r], e, n)) return !1;
- break;
- default:
- throw new Error("Unknown Geometry Type")
- }
- }
- }
- }
- }
- function T(t, e, n, r) {
- var i = n;
- return R(t, (function (t, r, o, s, a) {
- i = 0 === r && void 0 === n ? t : e(i, t, r, o, s, a)
- }), r), i
- }
- function A(t, e) {
- var n;
- switch (t.type) {
- case "FeatureCollection":
- for (n = 0; n < t.features.length && !1 !== e(t.features[n].properties, n); n++);
- break;
- case "Feature":
- e(t.properties, 0)
- }
- }
- function D(t, e, n) {
- var r = n;
- return A(t, (function (t, i) {
- r = 0 === i && void 0 === n ? t : e(r, t, i)
- })), r
- }
- function F(t, e) {
- if ("Feature" === t.type) e(t, 0);
- else if ("FeatureCollection" === t.type)
- for (var n = 0; n < t.features.length && !1 !== e(t.features[n], n); n++);
- }
- function k(t, e, n) {
- var r = n;
- return F(t, (function (t, i) {
- r = 0 === i && void 0 === n ? t : e(r, t, i)
- })), r
- }
- function G(t) {
- var e = [];
- return R(t, (function (t) {
- e.push(t)
- })), e
- }
- function q(t, e) {
- var n, r, i, o, s, a, u, l, c, h, p = 0,
- f = "FeatureCollection" === t.type,
- g = "Feature" === t.type,
- d = f ? t.features.length : 1;
- for (n = 0; n < d; n++) {
- for (a = f ? t.features[n].geometry : g ? t.geometry : t, l = f ? t.features[n].properties : g ? t.properties : {}, c = f ? t.features[n].bbox : g ? t.bbox : void 0, h = f ? t.features[n].id : g ? t.id : void 0, s = (u = !!a && "GeometryCollection" === a.type) ? a.geometries.length : 1, i = 0; i < s; i++)
- if (null !== (o = u ? a.geometries[i] : a)) switch (o.type) {
- case "Point":
- case "LineString":
- case "MultiPoint":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon":
- if (!1 === e(o, p, l, c, h)) return !1;
- break;
- case "GeometryCollection":
- for (r = 0; r < o.geometries.length; r++)
- if (!1 === e(o.geometries[r], p, l, c, h)) return !1;
- break;
- default:
- throw new Error("Unknown Geometry Type")
- } else if (!1 === e(null, p, l, c, h)) return !1;
- p++
- }
- }
- function B(t, e, n) {
- var r = n;
- return q(t, (function (t, i, o, s, a) {
- r = 0 === i && void 0 === n ? t : e(r, t, i, o, s, a)
- })), r
- }
- function z(t, e) {
- q(t, (function (t, n, r, i, s) {
- var a, u = null === t ? null : t.type;
- switch (u) {
- case null:
- case "Point":
- case "LineString":
- case "Polygon":
- return !1 !== e(o(t, r, {
- bbox: i,
- id: s
- }), n, 0) && void 0
- }
- switch (u) {
- case "MultiPoint":
- a = "Point";
- break;
- case "MultiLineString":
- a = "LineString";
- break;
- case "MultiPolygon":
- a = "Polygon"
- }
- for (var l = 0; l < t.coordinates.length; l++) {
- var c = t.coordinates[l];
- if (!1 === e(o({
- type: a,
- coordinates: c
- }, r), n, l)) return !1
- }
- }))
- }
- function j(t, e, n) {
- var r = n;
- return z(t, (function (t, i, o) {
- r = 0 === i && 0 === o && void 0 === n ? t : e(r, t, i, o)
- })), r
- }
- function U(t, e) {
- z(t, (function (t, n, r) {
- var i = 0;
- if (t.geometry) {
- var o = t.geometry.type;
- if ("Point" !== o && "MultiPoint" !== o) {
- var s, a = 0,
- u = 0,
- l = 0;
- return !1 !== R(t, (function (o, c, p, f, g) {
- if (void 0 === s || n > a || f > u || g > l) return s = o, a = n, u = f, l = g, void(i = 0);
- var d = h([s, o], t.properties);
- if (!1 === e(d, n, r, g, i)) return !1;
- i++, s = o
- })) && void 0
- }
- }
- }))
- }
- function V(t, e, n) {
- var r = n,
- i = !1;
- return U(t, (function (t, o, s, a, u) {
- r = !1 === i && void 0 === n ? t : e(r, t, o, s, a, u), i = !0
- })), r
- }
- function X(t, e) {
- if (!t) throw new Error("geojson is required");
- z(t, (function (t, n, r) {
- if (null !== t.geometry) {
- var i = t.geometry.type,
- o = t.geometry.coordinates;
- switch (i) {
- case "LineString":
- if (!1 === e(t, n, r, 0, 0)) return !1;
- break;
- case "Polygon":
- for (var s = 0; s < o.length; s++)
- if (!1 === e(h(o[s], t.properties), n, r, s)) return !1
- }
- }
- }))
- }
- function Y(t, e, n) {
- var r = n;
- return X(t, (function (t, i, o, s) {
- r = 0 === i && void 0 === n ? t : e(r, t, i, o, s)
- })), r
- }
- function H(t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n, r = e.featureIndex || 0,
- i = e.multiFeatureIndex || 0,
- o = e.geometryIndex || 0,
- s = e.segmentIndex || 0,
- a = e.properties;
- switch (t.type) {
- case "FeatureCollection":
- r < 0 && (r = t.features.length + r), a = a || t.features[r].properties, n = t.features[r].geometry;
- break;
- case "Feature":
- a = a || t.properties, n = t.geometry;
- break;
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon":
- n = t;
- break;
- default:
- throw new Error("geojson is invalid")
- }
- if (null === n) return null;
- var u = n.coordinates;
- switch (n.type) {
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- return s < 0 && (s = u.length + s - 1), h([u[s], u[s + 1]], a, e);
- case "Polygon":
- return o < 0 && (o = u.length + o), s < 0 && (s = u[o].length + s - 1), h([u[o][s], u[o][s + 1]], a, e);
- case "MultiLineString":
- return i < 0 && (i = u.length + i), s < 0 && (s = u[i].length + s - 1), h([u[i][s], u[i][s + 1]], a, e);
- case "MultiPolygon":
- return i < 0 && (i = u.length + i), o < 0 && (o = u[i].length + o), s < 0 && (s = u[i][o].length - s - 1), h([u[i][o][s], u[i][o][s + 1]], a, e)
- }
- throw new Error("geojson is invalid")
- }
- function W(t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n, r = e.featureIndex || 0,
- i = e.multiFeatureIndex || 0,
- o = e.geometryIndex || 0,
- s = e.coordIndex || 0,
- u = e.properties;
- switch (t.type) {
- case "FeatureCollection":
- r < 0 && (r = t.features.length + r), u = u || t.features[r].properties, n = t.features[r].geometry;
- break;
- case "Feature":
- u = u || t.properties, n = t.geometry;
- break;
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon":
- n = t;
- break;
- default:
- throw new Error("geojson is invalid")
- }
- if (null === n) return null;
- var l = n.coordinates;
- switch (n.type) {
- case "Point":
- return a(l, u, e);
- case "MultiPoint":
- return i < 0 && (i = l.length + i), a(l[i], u, e);
- case "LineString":
- return s < 0 && (s = l.length + s), a(l[s], u, e);
- case "Polygon":
- return o < 0 && (o = l.length + o), s < 0 && (s = l[o].length + s), a(l[o][s], u, e);
- case "MultiLineString":
- return i < 0 && (i = l.length + i), s < 0 && (s = l[i].length + s), a(l[i][s], u, e);
- case "MultiPolygon":
- return i < 0 && (i = l.length + i), o < 0 && (o = l[i].length + o), s < 0 && (s = l[i][o].length - s), a(l[i][o][s], u, e)
- }
- throw new Error("geojson is invalid")
- }
- var J = Object.freeze({
- __proto__: null,
- coordAll: G,
- coordEach: R,
- coordReduce: T,
- featureEach: F,
- featureReduce: k,
- findPoint: W,
- findSegment: H,
- flattenEach: z,
- flattenReduce: j,
- geomEach: q,
- geomReduce: B,
- lineEach: X,
- lineReduce: Y,
- propEach: A,
- propReduce: D,
- segmentEach: U,
- segmentReduce: V
- });
- function Z(t) {
- var e = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
- return R(t, (function (t) {
- e[0] > t[0] && (e[0] = t[0]), e[1] > t[1] && (e[1] = t[1]), e[2] < t[0] && (e[2] = t[0]), e[3] < t[1] && (e[3] = t[1])
- })), e
- }
- function K(t) {
- if (!t) throw new Error("coord is required");
- if (!Array.isArray(t)) {
- if ("Feature" === t.type && null !== t.geometry && "Point" === t.geometry.type) return t.geometry.coordinates;
- if ("Point" === t.type) return t.coordinates
- }
- if (Array.isArray(t) && t.length >= 2 && !Array.isArray(t[0]) && !Array.isArray(t[1])) return t;
- throw new Error("coord must be GeoJSON Point or an Array of numbers")
- }
- function Q(t) {
- if (Array.isArray(t)) return t;
- if ("Feature" === t.type) {
- if (null !== t.geometry) return t.geometry.coordinates
- } else if (t.coordinates) return t.coordinates;
- throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")
- }
- function $(t) {
- if (t.length > 1 && C(t[0]) && C(t[1])) return !0;
- if (Array.isArray(t[0]) && t[0].length) return $(t[0]);
- throw new Error("coordinates must only contain numbers")
- }
- function tt(t, e, n) {
- if (!e || !n) throw new Error("type and name required");
- if (!t || t.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + t.type)
- }
- function et(t, e, n) {
- if (!t) throw new Error("No feature passed");
- if (!n) throw new Error(".featureOf() requires a name");
- if (!t || "Feature" !== t.type || !t.geometry) throw new Error("Invalid input to " + n + ", Feature with geometry required");
- if (!t.geometry || t.geometry.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + t.geometry.type)
- }
- function nt(t, e, n) {
- if (!t) throw new Error("No featureCollection passed");
- if (!n) throw new Error(".collectionOf() requires a name");
- if (!t || "FeatureCollection" !== t.type) throw new Error("Invalid input to " + n + ", FeatureCollection required");
- for (var r = 0, i = t.features; r < i.length; r++) {
- var o = i[r];
- if (!o || "Feature" !== o.type || !o.geometry) throw new Error("Invalid input to " + n + ", Feature with geometry required");
- if (!o.geometry || o.geometry.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + o.geometry.type)
- }
- }
- function rt(t) {
- return "Feature" === t.type ? t.geometry : t
- }
- function it(t, e) {
- return "FeatureCollection" === t.type ? "FeatureCollection" : "GeometryCollection" === t.type ? "GeometryCollection" : "Feature" === t.type && null !== t.geometry ? t.geometry.type : t.type
- }
- Z.default = Z;
- var ot = Object.freeze({
- __proto__: null,
- getCoord: K,
- getCoords: Q,
- containsNumber: $,
- geojsonType: tt,
- featureOf: et,
- collectionOf: nt,
- getGeom: rt,
- getType: it
- }),
- st = Object.getOwnPropertySymbols,
- at = Object.prototype.hasOwnProperty,
- ut = Object.prototype.propertyIsEnumerable;
- /*
- object-assign
- (c) Sindre Sorhus
- @license MIT
- */
- function lt(t) {
- if (null == t) throw new TypeError("Object.assign cannot be called with null or undefined");
- return Object(t)
- }
- var ct = function () {
- try {
- if (!Object.assign) return !1;
- var t = new String("abc");
- if (t[5] = "de", "5" === Object.getOwnPropertyNames(t)[0]) return !1;
- for (var e = {}, n = 0; n < 10; n++) e["_" + String.fromCharCode(n)] = n;
- if ("0123456789" !== Object.getOwnPropertyNames(e).map((function (t) {
- return e[t]
- })).join("")) return !1;
- var r = {};
- return "abcdefghijklmnopqrst".split("").forEach((function (t) {
- r[t] = t
- })), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, r)).join("")
- } catch (t) {
- return !1
- }
- }() ? Object.assign : function (t, e) {
- for (var n, r, i = lt(t), o = 1; o < arguments.length; o++) {
- for (var s in n = Object(arguments[o])) at.call(n, s) && (i[s] = n[s]);
- if (st) {
- r = st(n);
- for (var a = 0; a < r.length; a++) ut.call(n, r[a]) && (i[r[a]] = n[r[a]])
- }
- }
- return i
- },
- ht = {
- successCallback: null,
- verbose: !1
- },
- pt = {};
- /**
- * @license GNU Affero General Public License.
- * Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>
- * v. 1.2.0
- * https://github.com/RaumZeit/MarchingSquares.js
- *
- * MarchingSquaresJS is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MarchingSquaresJS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * As additional permission under GNU Affero General Public License version 3
- * section 7, third-party projects (personal or commercial) may distribute,
- * include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the
- * requirement that said third-party project for that reason alone becomes
- * subject to any requirement of the GNU Affero General Public License version 3.
- * Any modifications to MarchingSquaresJS, however, must be shared with the public
- * and made available.
- *
- * In summary this:
- * - allows you to use MarchingSquaresJS at no cost
- * - allows you to use MarchingSquaresJS for both personal and commercial purposes
- * - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any
- * license as long as this license notice is included
- * - enables you to keep the source code of your program that uses MarchingSquaresJS
- * undisclosed
- * - forces you to share any modifications you have made to MarchingSquaresJS,
- * e.g. bug-fixes
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with MarchingSquaresJS. If not, see <http://www.gnu.org/licenses/>.
- */
- function ft(t, e, n) {
- n = n || {};
- for (var r = Object.keys(ht), i = 0; i < r.length; i++) {
- var o = r[i],
- s = n[o];
- s = null != s ? s : ht[o], pt[o] = s
- }
- pt.verbose && console.log("MarchingSquaresJS-isoContours: computing isocontour for " + e);
- var a = function (t) {
- var e = [],
- n = 0,
- r = 1e-7;
- return t.cells.forEach((function (i, o) {
- i.forEach((function (i, s) {
- if (void 0 !== i && (5 !== (f = i).cval && 10 !== f.cval) && !dt(i)) {
- var a = function (t, e, n) {
- var r, i, o = t.length,
- s = [],
- a = [0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 1, 1, -1, 0, -1, 0],
- u = [0, -1, 0, 0, 1, 1, 1, 1, 0, -1, 0, 0, 0, -1, 0, 0],
- l = ["none", "left", "bottom", "left", "right", "none", "bottom", "left", "top", "top", "none", "top", "right", "right", "bottom", "none"],
- c = ["none", "bottom", "right", "right", "top", "top", "top", "top", "left", "bottom", "right", "right", "left", "bottom", "left", "none"],
- h = t[e][n],
- p = h.cval,
- f = l[p],
- g = vt(h, f);
- s.push([n + g[0], e + g[1]]), f = c[p], g = vt(h, f), s.push([n + g[0], e + g[1]]), yt(h);
- var d = n + a[p],
- y = e + u[p],
- v = p;
- for (; d >= 0 && y >= 0 && y < o && (d != n || y != e) && void 0 !== (h = t[y][d]);) {
- if (0 === (p = h.cval) || 15 === p) return {
- path: s,
- info: "mergeable"
- };
- f = c[p], r = a[p], i = u[p], 5 !== p && 10 !== p || (5 === p ? h.flipped ? -1 === u[v] ? (f = "left", r = -1, i = 0) : (f = "right", r = 1, i = 0) : -1 === a[v] && (f = "bottom", r = 0, i = -1) : 10 === p && (h.flipped ? -1 === a[v] ? (f = "top", r = 0, i = 1) : (f = "bottom", r = 0, i = -1) : 1 === u[v] && (f = "left", r = -1, i = 0))), g = vt(h, f), s.push([d + g[0], y + g[1]]), yt(h), d += r, y += i, v = p
- }
- return {
- path: s,
- info: "closed"
- }
- }(t.cells, o, s),
- u = !1;
- if ("mergeable" === a.info)
- for (var l = a.path[a.path.length - 1][0], c = a.path[a.path.length - 1][1], h = n - 1; h >= 0; h--)
- if (Math.abs(e[h][0][0] - l) <= r && Math.abs(e[h][0][1] - c) <= r) {
- for (var p = a.path.length - 2; p >= 0; --p) e[h].unshift(a.path[p]);
- u = !0;
- break
- } u || (e[n++] = a.path)
- }
- var f
- }))
- })), e
- }(function (t, e) {
- for (var n = t.length - 1, r = t[0].length - 1, i = {
- rows: n,
- cols: r,
- cells: []
- }, o = 0; o < n; ++o) {
- i.cells[o] = [];
- for (var s = 0; s < r; ++s) {
- var a = 0,
- u = t[o + 1][s],
- l = t[o + 1][s + 1],
- c = t[o][s + 1],
- h = t[o][s];
- if (!(isNaN(u) || isNaN(l) || isNaN(c) || isNaN(h))) {
- a |= u >= e ? 8 : 0, a |= l >= e ? 4 : 0, a |= c >= e ? 2 : 0;
- var p, f, g, d, y = !1;
- if (5 === (a |= h >= e ? 1 : 0) || 10 === a) {
- var v = (u + l + c + h) / 4;
- 5 === a && v < e ? (a = 10, y = !0) : 10 === a && v < e && (a = 5, y = !0)
- }
- if (0 !== a && 15 !== a) p = f = g = d = .5, 1 === a ? (g = 1 - gt(e, u, h), f = 1 - gt(e, c, h)) : 2 === a ? (f = gt(e, h, c), d = 1 - gt(e, l, c)) : 3 === a ? (g = 1 - gt(e, u, h), d = 1 - gt(e, l, c)) : 4 === a ? (p = gt(e, u, l), d = gt(e, c, l)) : 5 === a ? (p = gt(e, u, l), d = gt(e, c, l), f = 1 - gt(e, c, h), g = 1 - gt(e, u, h)) : 6 === a ? (f = gt(e, h, c), p = gt(e, u, l)) : 7 === a ? (g = 1 - gt(e, u, h), p = gt(e, u, l)) : 8 === a ? (g = gt(e, h, u), p = 1 - gt(e, l, u)) : 9 === a ? (f = 1 - gt(e, c, h), p = 1 - gt(e, l, u)) : 10 === a ? (p = 1 - gt(e, l, u), d = 1 - gt(e, l, c), f = gt(e, h, c), g = gt(e, h, u)) : 11 === a ? (p = 1 - gt(e, l, u), d = 1 - gt(e, l, c)) : 12 === a ? (g = gt(e, h, u), d = gt(e, c, l)) : 13 === a ? (f = 1 - gt(e, c, h), d = gt(e, c, l)) : 14 === a ? (g = gt(e, h, u), f = gt(e, h, c)) : console.log("MarchingSquaresJS-isoContours: Illegal cval detected: " + a), i.cells[o][s] = {
- cval: a,
- flipped: y,
- top: p,
- right: d,
- bottom: f,
- left: g
- }
- }
- }
- }
- return i
- }(t, e));
- return "function" == typeof pt.successCallback && pt.successCallback(a), a
- }
- function gt(t, e, n) {
- return (t - e) / (n - e)
- }
- function dt(t) {
- return 0 === t.cval || 15 === t.cval
- }
- function yt(t) {
- dt(t) || 5 === t.cval || 10 === t.cval || (t.cval = 15)
- }
- function vt(t, e) {
- return "top" === e ? [t.top, 1] : "bottom" === e ? [t.bottom, 0] : "right" === e ? [1, t.right] : "left" === e ? [0, t.left] : void 0
- }
- function _t(t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n = e.zProperty || "elevation",
- r = e.flip,
- i = e.flags;
- nt(t, "Point", "input must contain Points");
- for (var o = function (t, e) {
- var n = {};
- return F(t, (function (t) {
- var e = Q(t)[1];
- n[e] || (n[e] = []), n[e].push(t)
- })), Object.keys(n).map((function (t) {
- return n[t].sort((function (t, e) {
- return Q(t)[0] - Q(e)[0]
- }))
- })).sort((function (t, n) {
- return e ? Q(t[0])[1] - Q(n[0])[1] : Q(n[0])[1] - Q(t[0])[1]
- }))
- }(t, r), s = [], a = 0; a < o.length; a++) {
- for (var u = o[a], l = [], c = 0; c < u.length; c++) {
- var h = u[c];
- h.properties[n] ? l.push(h.properties[n]) : l.push(0), !0 === i && (h.properties.matrixPosition = [a, c])
- }
- s.push(l)
- }
- return s
- }
- var mt = Et,
- xt = Et;
- function Et(t, e, n, r, i) {
- bt(t, e, n || 0, r || t.length - 1, i || It)
- }
- function bt(t, e, n, r, i) {
- for (; r > n;) {
- if (r - n > 600) {
- var o = r - n + 1,
- s = e - n + 1,
- a = Math.log(o),
- u = .5 * Math.exp(2 * a / 3),
- l = .5 * Math.sqrt(a * u * (o - u) / o) * (s - o / 2 < 0 ? -1 : 1);
- bt(t, e, Math.max(n, Math.floor(e - s * u / o + l)), Math.min(r, Math.floor(e + (o - s) * u / o + l)), i)
- }
- var c = t[e],
- h = n,
- p = r;
- for (wt(t, n, e), i(t[r], c) > 0 && wt(t, n, r); h < p;) {
- for (wt(t, h, p), h++, p--; i(t[h], c) < 0;) h++;
- for (; i(t[p], c) > 0;) p--
- }
- 0 === i(t[n], c) ? wt(t, n, p) : wt(t, ++p, r), p <= e && (n = p + 1), e <= p && (r = p - 1)
- }
- }
- function wt(t, e, n) {
- var r = t[e];
- t[e] = t[n], t[n] = r
- }
- function It(t, e) {
- return t < e ? -1 : t > e ? 1 : 0
- }
- mt.default = xt;
- var Nt = Ct,
- St = Ct;
- function Ct(t, e) {
- if (!(this instanceof Ct)) return new Ct(t, e);
- this._maxEntries = Math.max(4, t || 9), this._minEntries = Math.max(2, Math.ceil(.4 * this._maxEntries)), e && this._initFormat(e), this.clear()
- }
- function Pt(t, e, n) {
- if (!n) return e.indexOf(t);
- for (var r = 0; r < e.length; r++)
- if (n(t, e[r])) return r;
- return -1
- }
- function Mt(t, e) {
- Lt(t, 0, t.children.length, e, t)
- }
- function Lt(t, e, n, r, i) {
- i || (i = Gt(null)), i.minX = 1 / 0, i.minY = 1 / 0, i.maxX = -1 / 0, i.maxY = -1 / 0;
- for (var o, s = e; s < n; s++) o = t.children[s], Ot(i, t.leaf ? r(o) : o);
- return i
- }
- function Ot(t, e) {
- return t.minX = Math.min(t.minX, e.minX), t.minY = Math.min(t.minY, e.minY), t.maxX = Math.max(t.maxX, e.maxX), t.maxY = Math.max(t.maxY, e.maxY), t
- }
- function Rt(t, e) {
- return t.minX - e.minX
- }
- function Tt(t, e) {
- return t.minY - e.minY
- }
- function At(t) {
- return (t.maxX - t.minX) * (t.maxY - t.minY)
- }
- function Dt(t) {
- return t.maxX - t.minX + (t.maxY - t.minY)
- }
- function Ft(t, e) {
- return t.minX <= e.minX && t.minY <= e.minY && e.maxX <= t.maxX && e.maxY <= t.maxY
- }
- function kt(t, e) {
- return e.minX <= t.maxX && e.minY <= t.maxY && e.maxX >= t.minX && e.maxY >= t.minY
- }
- function Gt(t) {
- return {
- children: t,
- height: 1,
- leaf: !0,
- minX: 1 / 0,
- minY: 1 / 0,
- maxX: -1 / 0,
- maxY: -1 / 0
- }
- }
- function qt(t, e, n, r, i) {
- for (var o, s = [e, n]; s.length;)(n = s.pop()) - (e = s.pop()) <= r || (o = e + Math.ceil((n - e) / r / 2) * r, mt(t, o, e, n, i), s.push(e, o, o, n))
- }
- function Bt(t) {
- var e = {
- exports: {}
- };
- return t(e, e.exports), e.exports
- }
- Ct.prototype = {
- all: function () {
- return this._all(this.data, [])
- },
- search: function (t) {
- var e = this.data,
- n = [],
- r = this.toBBox;
- if (!kt(t, e)) return n;
- for (var i, o, s, a, u = []; e;) {
- for (i = 0, o = e.children.length; i < o; i++) s = e.children[i], kt(t, a = e.leaf ? r(s) : s) && (e.leaf ? n.push(s) : Ft(t, a) ? this._all(s, n) : u.push(s));
- e = u.pop()
- }
- return n
- },
- collides: function (t) {
- var e = this.data,
- n = this.toBBox;
- if (!kt(t, e)) return !1;
- for (var r, i, o, s, a = []; e;) {
- for (r = 0, i = e.children.length; r < i; r++)
- if (o = e.children[r], kt(t, s = e.leaf ? n(o) : o)) {
- if (e.leaf || Ft(t, s)) return !0;
- a.push(o)
- } e = a.pop()
- }
- return !1
- },
- load: function (t) {
- if (!t || !t.length) return this;
- if (t.length < this._minEntries) {
- for (var e = 0, n = t.length; e < n; e++) this.insert(t[e]);
- return this
- }
- var r = this._build(t.slice(), 0, t.length - 1, 0);
- if (this.data.children.length)
- if (this.data.height === r.height) this._splitRoot(this.data, r);
- else {
- if (this.data.height < r.height) {
- var i = this.data;
- this.data = r, r = i
- }
- this._insert(r, this.data.height - r.height - 1, !0)
- }
- else this.data = r;
- return this
- },
- insert: function (t) {
- return t && this._insert(t, this.data.height - 1), this
- },
- clear: function () {
- return this.data = Gt([]), this
- },
- remove: function (t, e) {
- if (!t) return this;
- for (var n, r, i, o, s = this.data, a = this.toBBox(t), u = [], l = []; s || u.length;) {
- if (s || (s = u.pop(), r = u[u.length - 1], n = l.pop(), o = !0), s.leaf && -1 !== (i = Pt(t, s.children, e))) return s.children.splice(i, 1), u.push(s), this._condense(u), this;
- o || s.leaf || !Ft(s, a) ? r ? (n++, s = r.children[n], o = !1) : s = null : (u.push(s), l.push(n), n = 0, r = s, s = s.children[0])
- }
- return this
- },
- toBBox: function (t) {
- return t
- },
- compareMinX: Rt,
- compareMinY: Tt,
- toJSON: function () {
- return this.data
- },
- fromJSON: function (t) {
- return this.data = t, this
- },
- _all: function (t, e) {
- for (var n = []; t;) t.leaf ? e.push.apply(e, t.children) : n.push.apply(n, t.children), t = n.pop();
- return e
- },
- _build: function (t, e, n, r) {
- var i, o = n - e + 1,
- s = this._maxEntries;
- if (o <= s) return Mt(i = Gt(t.slice(e, n + 1)), this.toBBox), i;
- r || (r = Math.ceil(Math.log(o) / Math.log(s)), s = Math.ceil(o / Math.pow(s, r - 1))), (i = Gt([])).leaf = !1, i.height = r;
- var a, u, l, c, h = Math.ceil(o / s),
- p = h * Math.ceil(Math.sqrt(s));
- for (qt(t, e, n, p, this.compareMinX), a = e; a <= n; a += p)
- for (qt(t, a, l = Math.min(a + p - 1, n), h, this.compareMinY), u = a; u <= l; u += h) c = Math.min(u + h - 1, l), i.children.push(this._build(t, u, c, r - 1));
- return Mt(i, this.toBBox), i
- },
- _chooseSubtree: function (t, e, n, r) {
- for (var i, o, s, a, u, l, c, h, p, f; r.push(e), !e.leaf && r.length - 1 !== n;) {
- for (c = h = 1 / 0, i = 0, o = e.children.length; i < o; i++) u = At(s = e.children[i]), p = t, f = s, (l = (Math.max(f.maxX, p.maxX) - Math.min(f.minX, p.minX)) * (Math.max(f.maxY, p.maxY) - Math.min(f.minY, p.minY)) - u) < h ? (h = l, c = u < c ? u : c, a = s) : l === h && u < c && (c = u, a = s);
- e = a || e.children[0]
- }
- return e
- },
- _insert: function (t, e, n) {
- var r = this.toBBox,
- i = n ? t : r(t),
- o = [],
- s = this._chooseSubtree(i, this.data, e, o);
- for (s.children.push(t), Ot(s, i); e >= 0 && o[e].children.length > this._maxEntries;) this._split(o, e), e--;
- this._adjustParentBBoxes(i, o, e)
- },
- _split: function (t, e) {
- var n = t[e],
- r = n.children.length,
- i = this._minEntries;
- this._chooseSplitAxis(n, i, r);
- var o = this._chooseSplitIndex(n, i, r),
- s = Gt(n.children.splice(o, n.children.length - o));
- s.height = n.height, s.leaf = n.leaf, Mt(n, this.toBBox), Mt(s, this.toBBox), e ? t[e - 1].children.push(s) : this._splitRoot(n, s)
- },
- _splitRoot: function (t, e) {
- this.data = Gt([t, e]), this.data.height = t.height + 1, this.data.leaf = !1, Mt(this.data, this.toBBox)
- },
- _chooseSplitIndex: function (t, e, n) {
- var r, i, o, s, a, u, l, c, h, p, f, g, d, y;
- for (u = l = 1 / 0, r = e; r <= n - e; r++) i = Lt(t, 0, r, this.toBBox), o = Lt(t, r, n, this.toBBox), h = i, p = o, f = void 0, g = void 0, d = void 0, y = void 0, f = Math.max(h.minX, p.minX), g = Math.max(h.minY, p.minY), d = Math.min(h.maxX, p.maxX), y = Math.min(h.maxY, p.maxY), s = Math.max(0, d - f) * Math.max(0, y - g), a = At(i) + At(o), s < u ? (u = s, c = r, l = a < l ? a : l) : s === u && a < l && (l = a, c = r);
- return c
- },
- _chooseSplitAxis: function (t, e, n) {
- var r = t.leaf ? this.compareMinX : Rt,
- i = t.leaf ? this.compareMinY : Tt;
- this._allDistMargin(t, e, n, r) < this._allDistMargin(t, e, n, i) && t.children.sort(r)
- },
- _allDistMargin: function (t, e, n, r) {
- t.children.sort(r);
- var i, o, s = this.toBBox,
- a = Lt(t, 0, e, s),
- u = Lt(t, n - e, n, s),
- l = Dt(a) + Dt(u);
- for (i = e; i < n - e; i++) o = t.children[i], Ot(a, t.leaf ? s(o) : o), l += Dt(a);
- for (i = n - e - 1; i >= e; i--) o = t.children[i], Ot(u, t.leaf ? s(o) : o), l += Dt(u);
- return l
- },
- _adjustParentBBoxes: function (t, e, n) {
- for (var r = n; r >= 0; r--) Ot(e[r], t)
- },
- _condense: function (t) {
- for (var e, n = t.length - 1; n >= 0; n--) 0 === t[n].children.length ? n > 0 ? (e = t[n - 1].children).splice(e.indexOf(t[n]), 1) : this.clear() : Mt(t[n], this.toBBox)
- },
- _initFormat: function (t) {
- var e = ["return a", " - b", ";"];
- this.compareMinX = new Function("a", "b", e.join(t[0])), this.compareMinY = new Function("a", "b", e.join(t[1])), this.toBBox = new Function("a", "return {minX: a" + t[0] + ", minY: a" + t[1] + ", maxX: a" + t[2] + ", maxY: a" + t[3] + "};")
- }
- }, Nt.default = St;
- var zt = function (t, e, n) {
- var r = t * e,
- i = jt * t,
- o = i - (i - t),
- s = t - o,
- a = jt * e,
- u = a - (a - e),
- l = e - u,
- c = s * l - (r - o * u - s * u - o * l);
- if (n) return n[0] = c, n[1] = r, n;
- return [c, r]
- },
- jt = +(Math.pow(2, 27) + 1);
- var Ut = function (t, e) {
- var n = 0 | t.length,
- r = 0 | e.length;
- if (1 === n && 1 === r) return function (t, e) {
- var n = t + e,
- r = n - t,
- i = t - (n - r) + (e - r);
- if (i) return [i, n];
- return [n]
- }(t[0], e[0]);
- var i, o, s = new Array(n + r),
- a = 0,
- u = 0,
- l = 0,
- c = Math.abs,
- h = t[u],
- p = c(h),
- f = e[l],
- g = c(f);
- p < g ? (o = h, (u += 1) < n && (h = t[u], p = c(h))) : (o = f, (l += 1) < r && (f = e[l], g = c(f)));
- u < n && p < g || l >= r ? (i = h, (u += 1) < n && (h = t[u], p = c(h))) : (i = f, (l += 1) < r && (f = e[l], g = c(f)));
- var d, y, v = i + o,
- _ = v - i,
- m = o - _,
- x = m,
- E = v;
- for (; u < n && l < r;) p < g ? (i = h, (u += 1) < n && (h = t[u], p = c(h))) : (i = f, (l += 1) < r && (f = e[l], g = c(f))), (m = (o = x) - (_ = (v = i + o) - i)) && (s[a++] = m), x = E - ((d = E + v) - (y = d - E)) + (v - y), E = d;
- for (; u < n;)(m = (o = x) - (_ = (v = (i = h) + o) - i)) && (s[a++] = m), x = E - ((d = E + v) - (y = d - E)) + (v - y), E = d, (u += 1) < n && (h = t[u]);
- for (; l < r;)(m = (o = x) - (_ = (v = (i = f) + o) - i)) && (s[a++] = m), x = E - ((d = E + v) - (y = d - E)) + (v - y), E = d, (l += 1) < r && (f = e[l]);
- x && (s[a++] = x);
- E && (s[a++] = E);
- a || (s[a++] = 0);
- return s.length = a, s
- };
- var Vt = function (t, e, n) {
- var r = t + e,
- i = r - t,
- o = e - i,
- s = t - (r - i);
- if (n) return n[0] = s + o, n[1] = r, n;
- return [s + o, r]
- };
- var Xt = function (t, e) {
- var n = t.length;
- if (1 === n) {
- var r = zt(t[0], e);
- return r[0] ? r : [r[1]]
- }
- var i = new Array(2 * n),
- o = [.1, .1],
- s = [.1, .1],
- a = 0;
- zt(t[0], e, o), o[0] && (i[a++] = o[0]);
- for (var u = 1; u < n; ++u) {
- zt(t[u], e, s);
- var l = o[1];
- Vt(l, s[0], o), o[0] && (i[a++] = o[0]);
- var c = s[1],
- h = o[1],
- p = c + h,
- f = h - (p - c);
- o[1] = p, f && (i[a++] = f)
- }
- o[1] && (i[a++] = o[1]);
- 0 === a && (i[a++] = 0);
- return i.length = a, i
- };
- var Yt = function (t, e) {
- var n = 0 | t.length,
- r = 0 | e.length;
- if (1 === n && 1 === r) return function (t, e) {
- var n = t + e,
- r = n - t,
- i = t - (n - r) + (e - r);
- if (i) return [i, n];
- return [n]
- }(t[0], -e[0]);
- var i, o, s = new Array(n + r),
- a = 0,
- u = 0,
- l = 0,
- c = Math.abs,
- h = t[u],
- p = c(h),
- f = -e[l],
- g = c(f);
- p < g ? (o = h, (u += 1) < n && (h = t[u], p = c(h))) : (o = f, (l += 1) < r && (f = -e[l], g = c(f)));
- u < n && p < g || l >= r ? (i = h, (u += 1) < n && (h = t[u], p = c(h))) : (i = f, (l += 1) < r && (f = -e[l], g = c(f)));
- var d, y, v = i + o,
- _ = v - i,
- m = o - _,
- x = m,
- E = v;
- for (; u < n && l < r;) p < g ? (i = h, (u += 1) < n && (h = t[u], p = c(h))) : (i = f, (l += 1) < r && (f = -e[l], g = c(f))), (m = (o = x) - (_ = (v = i + o) - i)) && (s[a++] = m), x = E - ((d = E + v) - (y = d - E)) + (v - y), E = d;
- for (; u < n;)(m = (o = x) - (_ = (v = (i = h) + o) - i)) && (s[a++] = m), x = E - ((d = E + v) - (y = d - E)) + (v - y), E = d, (u += 1) < n && (h = t[u]);
- for (; l < r;)(m = (o = x) - (_ = (v = (i = f) + o) - i)) && (s[a++] = m), x = E - ((d = E + v) - (y = d - E)) + (v - y), E = d, (l += 1) < r && (f = -e[l]);
- x && (s[a++] = x);
- E && (s[a++] = E);
- a || (s[a++] = 0);
- return s.length = a, s
- };
- var Ht = Bt((function (t) {
- function e(t, e) {
- for (var n = new Array(t.length - 1), r = 1; r < t.length; ++r)
- for (var i = n[r - 1] = new Array(t.length - 1), o = 0, s = 0; o < t.length; ++o) o !== e && (i[s++] = t[r][o]);
- return n
- }
- function n(t) {
- if (1 === t.length) return t[0];
- if (2 === t.length) return ["sum(", t[0], ",", t[1], ")"].join("");
- var e = t.length >> 1;
- return ["sum(", n(t.slice(0, e)), ",", n(t.slice(e)), ")"].join("")
- }
- function r(t) {
- if (2 === t.length) return [
- ["sum(prod(", t[0][0], ",", t[1][1], "),prod(-", t[0][1], ",", t[1][0], "))"].join("")
- ];
- for (var i = [], o = 0; o < t.length; ++o) i.push(["scale(", n(r(e(t, o))), ",", (s = o, 1 & s ? "-" : ""), t[0][o], ")"].join(""));
- return i;
- var s
- }
- function i(t) {
- for (var i = [], o = [], s = function (t) {
- for (var e = new Array(t), n = 0; n < t; ++n) {
- e[n] = new Array(t);
- for (var r = 0; r < t; ++r) e[n][r] = ["m", r, "[", t - n - 1, "]"].join("")
- }
- return e
- }(t), a = [], u = 0; u < t; ++u) 0 == (1 & u) ? i.push.apply(i, r(e(s, u))) : o.push.apply(o, r(e(s, u))), a.push("m" + u);
- var l = n(i),
- c = n(o),
- h = "orientation" + t + "Exact",
- p = ["function ", h, "(", a.join(), "){var p=", l, ",n=", c, ",d=sub(p,n);return d[d.length-1];};return ", h].join("");
- return new Function("sum", "prod", "scale", "sub", p)(Ut, zt, Xt, Yt)
- }
- var o = i(3),
- s = i(4),
- a = [function () {
- return 0
- }, function () {
- return 0
- }, function (t, e) {
- return e[0] - t[0]
- }, function (t, e, n) {
- var r, i = (t[1] - n[1]) * (e[0] - n[0]),
- s = (t[0] - n[0]) * (e[1] - n[1]),
- a = i - s;
- if (i > 0) {
- if (s <= 0) return a;
- r = i + s
- } else {
- if (!(i < 0)) return a;
- if (s >= 0) return a;
- r = -(i + s)
- }
- var u = 33306690738754716e-32 * r;
- return a >= u || a <= -u ? a : o(t, e, n)
- }, function (t, e, n, r) {
- var i = t[0] - r[0],
- o = e[0] - r[0],
- a = n[0] - r[0],
- u = t[1] - r[1],
- l = e[1] - r[1],
- c = n[1] - r[1],
- h = t[2] - r[2],
- p = e[2] - r[2],
- f = n[2] - r[2],
- g = o * c,
- d = a * l,
- y = a * u,
- v = i * c,
- _ = i * l,
- m = o * u,
- x = h * (g - d) + p * (y - v) + f * (_ - m),
- E = 7771561172376103e-31 * ((Math.abs(g) + Math.abs(d)) * Math.abs(h) + (Math.abs(y) + Math.abs(v)) * Math.abs(p) + (Math.abs(_) + Math.abs(m)) * Math.abs(f));
- return x > E || -x > E ? x : s(t, e, n, r)
- }];
- function u(t) {
- var e = a[t.length];
- return e || (e = a[t.length] = i(t.length)), e.apply(void 0, t)
- }! function () {
- for (; a.length <= 5;) a.push(i(a.length));
- for (var e = [], n = ["slow"], r = 0; r <= 5; ++r) e.push("a" + r), n.push("o" + r);
- var o = ["function getOrientation(", e.join(), "){switch(arguments.length){case 0:case 1:return 0;"];
- for (r = 2; r <= 5; ++r) o.push("case ", r, ":return o", r, "(", e.slice(0, r).join(), ");");
- o.push("}var s=new Array(arguments.length);for(var i=0;i<arguments.length;++i){s[i]=arguments[i]};return slow(s);}return getOrientation"), n.push(o.join(""));
- var s = Function.apply(void 0, n);
- for (t.exports = s.apply(void 0, [u].concat(a)), r = 0; r <= 5; ++r) t.exports[r] = a[r]
- }()
- })),
- Wt = function (t) {
- var e = t.length;
- if (e < 3) {
- for (var n = new Array(e), r = 0; r < e; ++r) n[r] = r;
- return 2 === e && t[0][0] === t[1][0] && t[0][1] === t[1][1] ? [0] : n
- }
- var i = new Array(e);
- for (r = 0; r < e; ++r) i[r] = r;
- i.sort((function (e, n) {
- var r = t[e][0] - t[n][0];
- return r || t[e][1] - t[n][1]
- }));
- var o = [i[0], i[1]],
- s = [i[0], i[1]];
- for (r = 2; r < e; ++r) {
- for (var a = i[r], u = t[a], l = o.length; l > 1 && Jt(t[o[l - 2]], t[o[l - 1]], u) <= 0;) l -= 1, o.pop();
- for (o.push(a), l = s.length; l > 1 && Jt(t[s[l - 2]], t[s[l - 1]], u) >= 0;) l -= 1, s.pop();
- s.push(a)
- }
- n = new Array(s.length + o.length - 2);
- for (var c = 0, h = (r = 0, o.length); r < h; ++r) n[c++] = o[r];
- for (var p = s.length - 2; p > 0; --p) n[c++] = s[p];
- return n
- },
- Jt = Ht[3];
- var Zt = Qt,
- Kt = Qt;
- function Qt(t, e) {
- if (!(this instanceof Qt)) return new Qt(t, e);
- if (this.data = t || [], this.length = this.data.length, this.compare = e || $t, this.length > 0)
- for (var n = (this.length >> 1) - 1; n >= 0; n--) this._down(n)
- }
- function $t(t, e) {
- return t < e ? -1 : t > e ? 1 : 0
- }
- Qt.prototype = {
- push: function (t) {
- this.data.push(t), this.length++, this._up(this.length - 1)
- },
- pop: function () {
- if (0 !== this.length) {
- var t = this.data[0];
- return this.length--, this.length > 0 && (this.data[0] = this.data[this.length], this._down(0)), this.data.pop(), t
- }
- },
- peek: function () {
- return this.data[0]
- },
- _up: function (t) {
- for (var e = this.data, n = this.compare, r = e[t]; t > 0;) {
- var i = t - 1 >> 1,
- o = e[i];
- if (n(r, o) >= 0) break;
- e[t] = o, t = i
- }
- e[t] = r
- },
- _down: function (t) {
- for (var e = this.data, n = this.compare, r = this.length >> 1, i = e[t]; t < r;) {
- var o = 1 + (t << 1),
- s = o + 1,
- a = e[o];
- if (s < this.length && n(e[s], a) < 0 && (o = s, a = e[s]), n(a, i) >= 0) break;
- e[t] = a, t = o
- }
- e[t] = i
- }
- }, Zt.default = Kt;
- var te = function (t, e) {
- for (var n = t[0], r = t[1], i = !1, o = 0, s = e.length - 1; o < e.length; s = o++) {
- var a = e[o][0],
- u = e[o][1],
- l = e[s][0],
- c = e[s][1];
- u > r != c > r && n < (l - a) * (r - u) / (c - u) + a && (i = !i)
- }
- return i
- },
- ee = Ht[3],
- ne = ie,
- re = ie;
- function ie(t, e, n) {
- e = Math.max(0, void 0 === e ? 2 : e), n = n || 0;
- for (var r, i = function (t) {
- for (var e = t[0], n = t[0], r = t[0], i = t[0], o = 0; o < t.length; o++) {
- var s = t[o];
- s[0] < e[0] && (e = s), s[0] > r[0] && (r = s), s[1] < n[1] && (n = s), s[1] > i[1] && (i = s)
- }
- var a = [e, n, r, i],
- u = a.slice();
- for (o = 0; o < t.length; o++) te(t[o], a) || u.push(t[o]);
- var l = Wt(u),
- c = [];
- for (o = 0; o < l.length; o++) c.push(u[l[o]]);
- return c
- }(t), o = Nt(16, ["[0]", "[1]", "[0]", "[1]"]).load(t), s = [], a = 0; a < i.length; a++) {
- var u = i[a];
- o.remove(u), r = he(u, r), s.push(r)
- }
- var l = Nt(16);
- for (a = 0; a < s.length; a++) l.insert(ce(s[a]));
- for (var c = e * e, h = n * n; s.length;) {
- var p = s.shift(),
- f = p.p,
- g = p.next.p,
- d = pe(f, g);
- if (!(d < h)) {
- var y = d / c;
- (u = oe(o, p.prev.p, f, g, p.next.next.p, y, l)) && Math.min(pe(u, f), pe(u, g)) <= y && (s.push(p), s.push(he(u, p)), o.remove(u), l.remove(p), l.insert(ce(p)), l.insert(ce(p.next)))
- }
- }
- p = r;
- var v = [];
- do {
- v.push(p.p), p = p.next
- } while (p !== r);
- return v.push(p.p), v
- }
- function oe(t, e, n, r, i, o, s) {
- for (var a = new Zt(null, se), u = t.data; u;) {
- for (var l = 0; l < u.children.length; l++) {
- var c = u.children[l],
- h = u.leaf ? fe(c, n, r) : ae(n, r, c);
- h > o || a.push({
- node: c,
- dist: h
- })
- }
- for (; a.length && !a.peek().node.children;) {
- var p = a.pop(),
- f = p.node,
- g = fe(f, e, n),
- d = fe(f, r, i);
- if (p.dist < g && p.dist < d && le(n, f, s) && le(r, f, s)) return f
- }(u = a.pop()) && (u = u.node)
- }
- return null
- }
- function se(t, e) {
- return t.dist - e.dist
- }
- function ae(t, e, n) {
- if (ue(t, n) || ue(e, n)) return 0;
- var r = ge(t[0], t[1], e[0], e[1], n.minX, n.minY, n.maxX, n.minY);
- if (0 === r) return 0;
- var i = ge(t[0], t[1], e[0], e[1], n.minX, n.minY, n.minX, n.maxY);
- if (0 === i) return 0;
- var o = ge(t[0], t[1], e[0], e[1], n.maxX, n.minY, n.maxX, n.maxY);
- if (0 === o) return 0;
- var s = ge(t[0], t[1], e[0], e[1], n.minX, n.maxY, n.maxX, n.maxY);
- return 0 === s ? 0 : Math.min(r, i, o, s)
- }
- function ue(t, e) {
- return t[0] >= e.minX && t[0] <= e.maxX && t[1] >= e.minY && t[1] <= e.maxY
- }
- function le(t, e, n) {
- for (var r, i, o, s, a = Math.min(t[0], e[0]), u = Math.min(t[1], e[1]), l = Math.max(t[0], e[0]), c = Math.max(t[1], e[1]), h = n.search({
- minX: a,
- minY: u,
- maxX: l,
- maxY: c
- }), p = 0; p < h.length; p++)
- if (r = h[p].p, i = h[p].next.p, o = t, r !== (s = e) && i !== o && ee(r, i, o) > 0 != ee(r, i, s) > 0 && ee(o, s, r) > 0 != ee(o, s, i) > 0) return !1;
- return !0
- }
- function ce(t) {
- var e = t.p,
- n = t.next.p;
- return t.minX = Math.min(e[0], n[0]), t.minY = Math.min(e[1], n[1]), t.maxX = Math.max(e[0], n[0]), t.maxY = Math.max(e[1], n[1]), t
- }
- function he(t, e) {
- var n = {
- p: t,
- prev: null,
- next: null,
- minX: 0,
- minY: 0,
- maxX: 0,
- maxY: 0
- };
- return e ? (n.next = e.next, n.prev = e, e.next.prev = n, e.next = n) : (n.prev = n, n.next = n), n
- }
- function pe(t, e) {
- var n = t[0] - e[0],
- r = t[1] - e[1];
- return n * n + r * r
- }
- function fe(t, e, n) {
- var r = e[0],
- i = e[1],
- o = n[0] - r,
- s = n[1] - i;
- if (0 !== o || 0 !== s) {
- var a = ((t[0] - r) * o + (t[1] - i) * s) / (o * o + s * s);
- a > 1 ? (r = n[0], i = n[1]) : a > 0 && (r += o * a, i += s * a)
- }
- return (o = t[0] - r) * o + (s = t[1] - i) * s
- }
- function ge(t, e, n, r, i, o, s, a) {
- var u, l, c, h, p = n - t,
- f = r - e,
- g = s - i,
- d = a - o,
- y = t - i,
- v = e - o,
- _ = p * p + f * f,
- m = p * g + f * d,
- x = g * g + d * d,
- E = p * y + f * v,
- b = g * y + d * v,
- w = _ * x - m * m,
- I = w,
- N = w;
- 0 === w ? (l = 0, I = 1, h = b, N = x) : (h = _ * b - m * E, (l = m * b - x * E) < 0 ? (l = 0, h = b, N = x) : l > I && (l = I, h = b + m, N = x)), h < 0 ? (h = 0, -E < 0 ? l = 0 : -E > _ ? l = I : (l = -E, I = _)) : h > N && (h = N, -E + m < 0 ? l = 0 : -E + m > _ ? l = I : (l = -E + m, I = _));
- var S = (1 - (c = 0 === h ? 0 : h / N)) * i + c * s - ((1 - (u = 0 === l ? 0 : l / I)) * t + u * n),
- C = (1 - c) * o + c * a - ((1 - u) * e + u * r);
- return S * S + C * C
- }
- function de(t, e) {
- void 0 === e && (e = {}), e.concavity = e.concavity || 1 / 0;
- var n = [];
- if (R(t, (function (t) {
- n.push([t[0], t[1]])
- })), !n.length) return null;
- var r = ne(n, e.concavity);
- return r.length > 3 ? l([r]) : null
- }
- function ye(t, e, n) {
- if (void 0 === n && (n = {}), !t) throw new Error("point is required");
- if (!e) throw new Error("polygon is required");
- var r = K(t),
- i = rt(e),
- o = i.type,
- s = e.bbox,
- a = i.coordinates;
- if (s && !1 === function (t, e) {
- return e[0] <= t[0] && e[1] <= t[1] && e[2] >= t[0] && e[3] >= t[1]
- }(r, s)) return !1;
- "Polygon" === o && (a = [a]);
- for (var u = !1, l = 0; l < a.length && !u; l++)
- if (ve(r, a[l][0], n.ignoreBoundary)) {
- for (var c = !1, h = 1; h < a[l].length && !c;) ve(r, a[l][h], !n.ignoreBoundary) && (c = !0), h++;
- c || (u = !0)
- } return u
- }
- function ve(t, e, n) {
- var r = !1;
- e[0][0] === e[e.length - 1][0] && e[0][1] === e[e.length - 1][1] && (e = e.slice(0, e.length - 1));
- for (var i = 0, o = e.length - 1; i < e.length; o = i++) {
- var s = e[i][0],
- a = e[i][1],
- u = e[o][0],
- l = e[o][1];
- if (t[1] * (s - u) + a * (u - t[0]) + l * (t[0] - s) == 0 && (s - t[0]) * (u - t[0]) <= 0 && (a - t[1]) * (l - t[1]) <= 0) return !n;
- a > t[1] != l > t[1] && t[0] < (u - s) * (t[1] - a) / (l - a) + s && (r = !r)
- }
- return r
- }
- function _e(t, e) {
- var n = [];
- return F(t, (function (t) {
- var r = !1;
- if ("Point" === t.geometry.type) q(e, (function (e) {
- ye(t, e) && (r = !0)
- })), r && n.push(t);
- else {
- if ("MultiPoint" !== t.geometry.type) throw new Error("Input geometry must be a Point or MultiPoint");
- var i = [];
- q(e, (function (e) {
- R(t, (function (t) {
- ye(t, e) && (r = !0, i.push(t))
- }))
- })), r && n.push(d(i))
- }
- })), f(n)
- }
- function me(t, e, n) {
- void 0 === n && (n = {});
- var r = K(t),
- i = K(e),
- o = I(i[1] - r[1]),
- s = I(i[0] - r[0]),
- a = I(r[1]),
- u = I(i[1]),
- l = Math.pow(Math.sin(o / 2), 2) + Math.pow(Math.sin(s / 2), 2) * Math.cos(a) * Math.cos(u);
- return m(2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l)), n.units)
- }
- function xe(t, e) {
- var n = !1;
- return f(function (t) {
- if (t.length < 3) return [];
- t.sort(be);
- var e, n, r, i, o, s, a = t.length - 1,
- u = t[a].x,
- l = t[0].x,
- c = t[a].y,
- h = c,
- p = 1e-12;
- for (; a--;) t[a].y < c && (c = t[a].y), t[a].y > h && (h = t[a].y);
- var f, g = l - u,
- d = h - c,
- y = g > d ? g : d,
- v = .5 * (l + u),
- _ = .5 * (h + c),
- m = [new Ee({
- __sentinel: !0,
- x: v - 20 * y,
- y: _ - y
- }, {
- __sentinel: !0,
- x: v,
- y: _ + 20 * y
- }, {
- __sentinel: !0,
- x: v + 20 * y,
- y: _ - y
- })],
- x = [],
- E = [];
- a = t.length;
- for (; a--;) {
- for (E.length = 0, f = m.length; f--;)(g = t[a].x - m[f].x) > 0 && g * g > m[f].r ? (x.push(m[f]), m.splice(f, 1)) : g * g + (d = t[a].y - m[f].y) * d > m[f].r || (E.push(m[f].a, m[f].b, m[f].b, m[f].c, m[f].c, m[f].a), m.splice(f, 1));
- for (we(E), f = E.length; f;) n = E[--f], e = E[--f], r = t[a], i = n.x - e.x, o = n.y - e.y, s = 2 * (i * (r.y - n.y) - o * (r.x - n.x)), Math.abs(s) > p && m.push(new Ee(e, n, r))
- }
- Array.prototype.push.apply(x, m), a = x.length;
- for (; a--;)(x[a].a.__sentinel || x[a].b.__sentinel || x[a].c.__sentinel) && x.splice(a, 1);
- return x
- }(t.features.map((function (t) {
- var r = {
- x: t.geometry.coordinates[0],
- y: t.geometry.coordinates[1]
- };
- return e ? r.z = t.properties[e] : 3 === t.geometry.coordinates.length && (n = !0, r.z = t.geometry.coordinates[2]), r
- }))).map((function (t) {
- var e = [t.a.x, t.a.y],
- r = [t.b.x, t.b.y],
- i = [t.c.x, t.c.y],
- o = {};
- return n ? (e.push(t.a.z), r.push(t.b.z), i.push(t.c.z)) : o = {
- a: t.a.z,
- b: t.b.z,
- c: t.c.z
- }, l([
- [e, r, i, e]
- ], o)
- })))
- }
- ne.default = re;
- var Ee = function (t, e, n) {
- this.a = t, this.b = e, this.c = n;
- var r, i, o = e.x - t.x,
- s = e.y - t.y,
- a = n.x - t.x,
- u = n.y - t.y,
- l = o * (t.x + e.x) + s * (t.y + e.y),
- c = a * (t.x + n.x) + u * (t.y + n.y),
- h = 2 * (o * (n.y - e.y) - s * (n.x - e.x));
- this.x = (u * l - s * c) / h, this.y = (o * c - a * l) / h, r = this.x - t.x, i = this.y - t.y, this.r = r * r + i * i
- };
- function be(t, e) {
- return e.x - t.x
- }
- function we(t) {
- var e, n, r, i, o, s = t.length;
- t: for (; s;)
- for (n = t[--s], e = t[--s], r = s; r;)
- if (o = t[--r], e === (i = t[--r]) && n === o || e === o && n === i) {
- t.splice(s, 2), t.splice(r, 2), s -= 2;
- continue t
- }
- }
- function Ie(t) {
- if (!t) throw new Error("geojson is required");
- switch (t.type) {
- case "Feature":
- return Ne(t);
- case "FeatureCollection":
- return function (t) {
- var e = {
- type: "FeatureCollection"
- };
- return Object.keys(t).forEach((function (n) {
- switch (n) {
- case "type":
- case "features":
- return;
- default:
- e[n] = t[n]
- }
- })), e.features = t.features.map((function (t) {
- return Ne(t)
- })), e
- }(t);
- case "Point":
- case "LineString":
- case "Polygon":
- case "MultiPoint":
- case "MultiLineString":
- case "MultiPolygon":
- case "GeometryCollection":
- return Ce(t);
- default:
- throw new Error("unknown GeoJSON type")
- }
- }
- function Ne(t) {
- var e = {
- type: "Feature"
- };
- return Object.keys(t).forEach((function (n) {
- switch (n) {
- case "type":
- case "properties":
- case "geometry":
- return;
- default:
- e[n] = t[n]
- }
- })), e.properties = Se(t.properties), e.geometry = Ce(t.geometry), e
- }
- function Se(t) {
- var e = {};
- return t ? (Object.keys(t).forEach((function (n) {
- var r = t[n];
- "object" == typeof r ? null === r ? e[n] = null : Array.isArray(r) ? e[n] = r.map((function (t) {
- return t
- })) : e[n] = Se(r) : e[n] = r
- })), e) : e
- }
- function Ce(t) {
- var e = {
- type: t.type
- };
- return t.bbox && (e.bbox = t.bbox), "GeometryCollection" === t.type ? (e.geometries = t.geometries.map((function (t) {
- return Ce(t)
- })), e) : (e.coordinates = Pe(t.coordinates), e)
- }
- function Pe(t) {
- var e = t;
- return "object" != typeof e[0] ? e.slice() : e.map((function (t) {
- return Pe(t)
- }))
- }
- function Me(t, e) {
- if (void 0 === e && (e = {}), !P(e = e || {})) throw new Error("options is invalid");
- var n = e.mutate;
- if ("FeatureCollection" !== it(t)) throw new Error("geojson must be a FeatureCollection");
- if (!t.features.length) throw new Error("geojson is empty");
- !1 !== n && void 0 !== n || (t = Ie(t));
- var r = [],
- i = Y(t, (function (t, e) {
- var n = function (t, e) {
- var n, r = t.geometry.coordinates,
- i = e.geometry.coordinates,
- o = Le(r[0]),
- s = Le(r[r.length - 1]),
- a = Le(i[0]),
- u = Le(i[i.length - 1]);
- if (o === u) n = i.concat(r.slice(1));
- else if (a === s) n = r.concat(i.slice(1));
- else if (o === a) n = r.slice(1).reverse().concat(i);
- else {
- if (s !== u) return null;
- n = r.concat(i.reverse().slice(1))
- }
- return h(n)
- }(t, e);
- return n || (r.push(t), e)
- }));
- return i && r.push(i), r.length ? 1 === r.length ? r[0] : g(r.map((function (t) {
- return t.coordinates
- }))) : null
- }
- function Le(t) {
- return t[0].toString() + "," + t[1].toString()
- }
- function Oe(t) {
- return t
- }
- function Re(t, e) {
- var n = function (t) {
- if (null == t) return Oe;
- var e, n, r = t.scale[0],
- i = t.scale[1],
- o = t.translate[0],
- s = t.translate[1];
- return function (t, a) {
- a || (e = n = 0);
- var u = 2,
- l = t.length,
- c = new Array(l);
- for (c[0] = (e += t[0]) * r + o, c[1] = (n += t[1]) * i + s; u < l;) c[u] = t[u], ++u;
- return c
- }
- }(t.transform),
- r = t.arcs;
- function i(t, e) {
- e.length && e.pop();
- for (var i = r[t < 0 ? ~t : t], o = 0, s = i.length; o < s; ++o) e.push(n(i[o], o));
- t < 0 && function (t, e) {
- for (var n, r = t.length, i = r - e; i < --r;) n = t[i], t[i++] = t[r], t[r] = n
- }(e, s)
- }
- function o(t) {
- return n(t)
- }
- function s(t) {
- for (var e = [], n = 0, r = t.length; n < r; ++n) i(t[n], e);
- return e.length < 2 && e.push(e[0]), e
- }
- function a(t) {
- for (var e = s(t); e.length < 4;) e.push(e[0]);
- return e
- }
- function u(t) {
- return t.map(a)
- }
- return function t(e) {
- var n, r = e.type;
- switch (r) {
- case "GeometryCollection":
- return {
- type: r, geometries: e.geometries.map(t)
- };
- case "Point":
- n = o(e.coordinates);
- break;
- case "MultiPoint":
- n = e.coordinates.map(o);
- break;
- case "LineString":
- n = s(e.arcs);
- break;
- case "MultiLineString":
- n = e.arcs.map(s);
- break;
- case "Polygon":
- n = u(e.arcs);
- break;
- case "MultiPolygon":
- n = e.arcs.map(u);
- break;
- default:
- return null
- }
- return {
- type: r,
- coordinates: n
- }
- }(e)
- }
- function Te(t, e) {
- var n = {},
- r = {},
- i = {},
- o = [],
- s = -1;
- function a(t, e) {
- for (var r in t) {
- var i = t[r];
- delete e[i.start], delete i.start, delete i.end, i.forEach((function (t) {
- n[t < 0 ? ~t : t] = 1
- })), o.push(i)
- }
- }
- return e.forEach((function (n, r) {
- var i, o = t.arcs[n < 0 ? ~n : n];
- o.length < 3 && !o[1][0] && !o[1][1] && (i = e[++s], e[s] = n, e[r] = i)
- })), e.forEach((function (e) {
- var n, o, s = function (e) {
- var n, r = t.arcs[e < 0 ? ~e : e],
- i = r[0];
- t.transform ? (n = [0, 0], r.forEach((function (t) {
- n[0] += t[0], n[1] += t[1]
- }))) : n = r[r.length - 1];
- return e < 0 ? [n, i] : [i, n]
- }(e),
- a = s[0],
- u = s[1];
- if (n = i[a])
- if (delete i[n.end], n.push(e), n.end = u, o = r[u]) {
- delete r[o.start];
- var l = o === n ? n : n.concat(o);
- r[l.start = n.start] = i[l.end = o.end] = l
- } else r[n.start] = i[n.end] = n;
- else if (n = r[u])
- if (delete r[n.start], n.unshift(e), n.start = a, o = i[a]) {
- delete i[o.end];
- var c = o === n ? n : o.concat(n);
- r[c.start = o.start] = i[c.end = n.end] = c
- } else r[n.start] = i[n.end] = n;
- else r[(n = [e]).start = a] = i[n.end = u] = n
- })), a(i, r), a(r, i), e.forEach((function (t) {
- n[t < 0 ? ~t : t] || o.push([t])
- })), o
- }
- function Ae(t, e) {
- var n = {},
- r = [],
- i = [];
- function o(t) {
- t.forEach((function (e) {
- e.forEach((function (e) {
- (n[e = e < 0 ? ~e : e] || (n[e] = [])).push(t)
- }))
- })), r.push(t)
- }
- function s(e) {
- return function (t) {
- for (var e, n = -1, r = t.length, i = t[r - 1], o = 0; ++n < r;) e = i, i = t[n], o += e[0] * i[1] - e[1] * i[0];
- return Math.abs(o)
- }(Re(t, {
- type: "Polygon",
- arcs: [e]
- }).coordinates[0])
- }
- return e.forEach((function t(e) {
- switch (e.type) {
- case "GeometryCollection":
- e.geometries.forEach(t);
- break;
- case "Polygon":
- o(e.arcs);
- break;
- case "MultiPolygon":
- e.arcs.forEach(o)
- }
- })), r.forEach((function (t) {
- if (!t._) {
- var e = [],
- r = [t];
- for (t._ = 1, i.push(e); t = r.pop();) e.push(t), t.forEach((function (t) {
- t.forEach((function (t) {
- n[t < 0 ? ~t : t].forEach((function (t) {
- t._ || (t._ = 1, r.push(t))
- }))
- }))
- }))
- }
- })), r.forEach((function (t) {
- delete t._
- })), {
- type: "MultiPolygon",
- arcs: i.map((function (e) {
- var r, i = [];
- if (e.forEach((function (t) {
- t.forEach((function (t) {
- t.forEach((function (t) {
- n[t < 0 ? ~t : t].length < 2 && i.push(t)
- }))
- }))
- })), (r = (i = Te(t, i)).length) > 1)
- for (var o, a, u = 1, l = s(i[0]); u < r; ++u)(o = s(i[u])) > l && (a = i[0], i[0] = i[u], i[u] = a, l = o);
- return i
- })).filter((function (t) {
- return t.length > 0
- }))
- }
- }
- var De = Object.prototype.hasOwnProperty;
- function Fe(t, e, n, r, i, o) {
- 3 === arguments.length && (r = o = Array, i = null);
- for (var s = new r(t = 1 << Math.max(4, Math.ceil(Math.log(t) / Math.LN2))), a = new o(t), u = t - 1, l = 0; l < t; ++l) s[l] = i;
- function c(r, o) {
- for (var l = e(r) & u, c = s[l], h = 0; c != i;) {
- if (n(c, r)) return a[l] = o;
- if (++h >= t) throw new Error("full hashmap");
- c = s[l = l + 1 & u]
- }
- return s[l] = r, a[l] = o, o
- }
- function h(r, o) {
- for (var l = e(r) & u, c = s[l], h = 0; c != i;) {
- if (n(c, r)) return a[l];
- if (++h >= t) throw new Error("full hashmap");
- c = s[l = l + 1 & u]
- }
- return s[l] = r, a[l] = o, o
- }
- function p(r, o) {
- for (var l = e(r) & u, c = s[l], h = 0; c != i;) {
- if (n(c, r)) return a[l];
- if (++h >= t) break;
- c = s[l = l + 1 & u]
- }
- return o
- }
- function f() {
- for (var t = [], e = 0, n = s.length; e < n; ++e) {
- var r = s[e];
- r != i && t.push(r)
- }
- return t
- }
- return {
- set: c,
- maybeSet: h,
- get: p,
- keys: f
- }
- }
- function ke(t, e) {
- return t[0] === e[0] && t[1] === e[1]
- }
- var Ge = new ArrayBuffer(16),
- qe = new Float64Array(Ge),
- Be = new Uint32Array(Ge);
- function ze(t) {
- qe[0] = t[0], qe[1] = t[1];
- var e = Be[0] ^ Be[1];
- return 2147483647 & (e = e << 5 ^ e >> 7 ^ Be[2] ^ Be[3])
- }
- function je(t) {
- var e, n, r, i, o = t.coordinates,
- s = t.lines,
- a = t.rings,
- u = function () {
- for (var t = Fe(1.4 * o.length, E, b, Int32Array, -1, Int32Array), e = new Int32Array(o.length), n = 0, r = o.length; n < r; ++n) e[n] = t.maybeSet(n, n);
- return e
- }(),
- l = new Int32Array(o.length),
- c = new Int32Array(o.length),
- h = new Int32Array(o.length),
- p = new Int8Array(o.length),
- f = 0;
- for (e = 0, n = o.length; e < n; ++e) l[e] = c[e] = h[e] = -1;
- for (e = 0, n = s.length; e < n; ++e) {
- var g = s[e],
- d = g[0],
- y = g[1];
- for (r = u[d], i = u[++d], ++f, p[r] = 1; ++d <= y;) x(e, r, r = i, i = u[d]);
- ++f, p[i] = 1
- }
- for (e = 0, n = o.length; e < n; ++e) l[e] = -1;
- for (e = 0, n = a.length; e < n; ++e) {
- var v = a[e],
- _ = v[0] + 1,
- m = v[1];
- for (x(e, u[m - 1], r = u[_ - 1], i = u[_]); ++_ <= m;) x(e, r, r = i, i = u[_])
- }
- function x(t, e, n, r) {
- if (l[n] !== t) {
- l[n] = t;
- var i = c[n];
- if (i >= 0) {
- var o = h[n];
- i === e && o === r || i === r && o === e || (++f, p[n] = 1)
- } else c[n] = e, h[n] = r
- }
- }
- function E(t) {
- return ze(o[t])
- }
- function b(t, e) {
- return ke(o[t], o[e])
- }
- l = c = h = null;
- var w, I = function (t, e, n, r, i) {
- 3 === arguments.length && (r = Array, i = null);
- for (var o = new r(t = 1 << Math.max(4, Math.ceil(Math.log(t) / Math.LN2))), s = t - 1, a = 0; a < t; ++a) o[a] = i;
- function u(r) {
- for (var a = e(r) & s, u = o[a], l = 0; u != i;) {
- if (n(u, r)) return !0;
- if (++l >= t) throw new Error("full hashset");
- u = o[a = a + 1 & s]
- }
- return o[a] = r, !0
- }
- function l(r) {
- for (var a = e(r) & s, u = o[a], l = 0; u != i;) {
- if (n(u, r)) return !0;
- if (++l >= t) break;
- u = o[a = a + 1 & s]
- }
- return !1
- }
- function c() {
- for (var t = [], e = 0, n = o.length; e < n; ++e) {
- var r = o[e];
- r != i && t.push(r)
- }
- return t
- }
- return {
- add: u,
- has: l,
- values: c
- }
- }(1.4 * f, ze, ke);
- for (e = 0, n = o.length; e < n; ++e) p[w = u[e]] && I.add(o[w]);
- return I
- }
- function Ue(t, e, n, r) {
- Ve(t, e, n), Ve(t, e, e + r), Ve(t, e + r, n)
- }
- function Ve(t, e, n) {
- for (var r, i = e + (n-- - e >> 1); e < i; ++e, --n) r = t[e], t[e] = t[n], t[n] = r
- }
- function Xe(t) {
- var e, n, r = {};
- for (e in t) r[e] = null == (n = t[e]) ? {
- type: null
- } : ("FeatureCollection" === n.type ? Ye : "Feature" === n.type ? He : We)(n);
- return r
- }
- function Ye(t) {
- var e = {
- type: "GeometryCollection",
- geometries: t.features.map(He)
- };
- return null != t.bbox && (e.bbox = t.bbox), e
- }
- function He(t) {
- var e, n = We(t.geometry);
- for (e in null != t.id && (n.id = t.id), null != t.bbox && (n.bbox = t.bbox), t.properties) {
- n.properties = t.properties;
- break
- }
- return n
- }
- function We(t) {
- if (null == t) return {
- type: null
- };
- var e = "GeometryCollection" === t.type ? {
- type: "GeometryCollection",
- geometries: t.geometries.map(We)
- } : "Point" === t.type || "MultiPoint" === t.type ? {
- type: t.type,
- coordinates: t.coordinates
- } : {
- type: t.type,
- arcs: t.coordinates
- };
- return null != t.bbox && (e.bbox = t.bbox), e
- }
- function Je(t, e) {
- var n = function (t) {
- var e = 1 / 0,
- n = 1 / 0,
- r = -1 / 0,
- i = -1 / 0;
- function o(t) {
- null != t && De.call(s, t.type) && s[t.type](t)
- }
- var s = {
- GeometryCollection: function (t) {
- t.geometries.forEach(o)
- },
- Point: function (t) {
- a(t.coordinates)
- },
- MultiPoint: function (t) {
- t.coordinates.forEach(a)
- },
- LineString: function (t) {
- u(t.arcs)
- },
- MultiLineString: function (t) {
- t.arcs.forEach(u)
- },
- Polygon: function (t) {
- t.arcs.forEach(u)
- },
- MultiPolygon: function (t) {
- t.arcs.forEach(l)
- }
- };
- function a(t) {
- var o = t[0],
- s = t[1];
- o < e && (e = o), o > r && (r = o), s < n && (n = s), s > i && (i = s)
- }
- function u(t) {
- t.forEach(a)
- }
- function l(t) {
- t.forEach(u)
- }
- for (var c in t) o(t[c]);
- return r >= e && i >= n ? [e, n, r, i] : void 0
- }(t = Xe(t)),
- r = e > 0 && n && function (t, e, n) {
- var r = e[0],
- i = e[1],
- o = e[2],
- s = e[3],
- a = o - r ? (n - 1) / (o - r) : 1,
- u = s - i ? (n - 1) / (s - i) : 1;
- function l(t) {
- return [Math.round((t[0] - r) * a), Math.round((t[1] - i) * u)]
- }
- function c(t, e) {
- for (var n, o, s, l, c, h = -1, p = 0, f = t.length, g = new Array(f); ++h < f;) n = t[h], l = Math.round((n[0] - r) * a), c = Math.round((n[1] - i) * u), l === o && c === s || (g[p++] = [o = l, s = c]);
- for (g.length = p; p < e;) p = g.push([g[0][0], g[0][1]]);
- return g
- }
- function h(t) {
- return c(t, 2)
- }
- function p(t) {
- return c(t, 4)
- }
- function f(t) {
- return t.map(p)
- }
- function g(t) {
- null != t && De.call(d, t.type) && d[t.type](t)
- }
- var d = {
- GeometryCollection: function (t) {
- t.geometries.forEach(g)
- },
- Point: function (t) {
- t.coordinates = l(t.coordinates)
- },
- MultiPoint: function (t) {
- t.coordinates = t.coordinates.map(l)
- },
- LineString: function (t) {
- t.arcs = h(t.arcs)
- },
- MultiLineString: function (t) {
- t.arcs = t.arcs.map(h)
- },
- Polygon: function (t) {
- t.arcs = f(t.arcs)
- },
- MultiPolygon: function (t) {
- t.arcs = t.arcs.map(f)
- }
- };
- for (var y in t) g(t[y]);
- return {
- scale: [1 / a, 1 / u],
- translate: [r, i]
- }
- }(t, n, e),
- i = function (t) {
- var e, n, r, i, o = t.coordinates,
- s = t.lines,
- a = t.rings,
- u = s.length + a.length;
- for (delete t.lines, delete t.rings, r = 0, i = s.length; r < i; ++r)
- for (e = s[r]; e = e.next;) ++u;
- for (r = 0, i = a.length; r < i; ++r)
- for (n = a[r]; n = n.next;) ++u;
- var l = Fe(2 * u * 1.4, ze, ke),
- c = t.arcs = [];
- for (r = 0, i = s.length; r < i; ++r) {
- e = s[r];
- do {
- h(e)
- } while (e = e.next)
- }
- for (r = 0, i = a.length; r < i; ++r)
- if ((n = a[r]).next)
- do {
- h(n)
- } while (n = n.next);
- else p(n);
- function h(t) {
- var e, n, r, i, s, a, u, h;
- if (r = l.get(e = o[t[0]]))
- for (u = 0, h = r.length; u < h; ++u)
- if (f(i = r[u], t)) return t[0] = i[0], void(t[1] = i[1]);
- if (s = l.get(n = o[t[1]]))
- for (u = 0, h = s.length; u < h; ++u)
- if (g(a = s[u], t)) return t[1] = a[0], void(t[0] = a[1]);
- r ? r.push(t) : l.set(e, [t]), s ? s.push(t) : l.set(n, [t]), c.push(t)
- }
- function p(t) {
- var e, n, r, i, s;
- if (n = l.get(o[t[0]]))
- for (i = 0, s = n.length; i < s; ++i) {
- if (d(r = n[i], t)) return t[0] = r[0], void(t[1] = r[1]);
- if (y(r, t)) return t[0] = r[1], void(t[1] = r[0])
- }
- if (n = l.get(e = o[t[0] + v(t)]))
- for (i = 0, s = n.length; i < s; ++i) {
- if (d(r = n[i], t)) return t[0] = r[0], void(t[1] = r[1]);
- if (y(r, t)) return t[0] = r[1], void(t[1] = r[0])
- }
- n ? n.push(t) : l.set(e, [t]), c.push(t)
- }
- function f(t, e) {
- var n = t[0],
- r = e[0],
- i = t[1];
- if (n - i != r - e[1]) return !1;
- for (; n <= i; ++n, ++r)
- if (!ke(o[n], o[r])) return !1;
- return !0
- }
- function g(t, e) {
- var n = t[0],
- r = e[0],
- i = t[1],
- s = e[1];
- if (n - i != r - s) return !1;
- for (; n <= i; ++n, --s)
- if (!ke(o[n], o[s])) return !1;
- return !0
- }
- function d(t, e) {
- var n = t[0],
- r = e[0],
- i = t[1] - n;
- if (i !== e[1] - r) return !1;
- for (var s = v(t), a = v(e), u = 0; u < i; ++u)
- if (!ke(o[n + (u + s) % i], o[r + (u + a) % i])) return !1;
- return !0
- }
- function y(t, e) {
- var n = t[0],
- r = e[0],
- i = t[1],
- s = e[1],
- a = i - n;
- if (a !== s - r) return !1;
- for (var u = v(t), l = a - v(e), c = 0; c < a; ++c)
- if (!ke(o[n + (c + u) % a], o[s - (c + l) % a])) return !1;
- return !0
- }
- function v(t) {
- for (var e = t[0], n = t[1], r = e, i = r, s = o[r]; ++r < n;) {
- var a = o[r];
- (a[0] < s[0] || a[0] === s[0] && a[1] < s[1]) && (i = r, s = a)
- }
- return i - e
- }
- return t
- }(function (t) {
- var e, n, r, i = je(t),
- o = t.coordinates,
- s = t.lines,
- a = t.rings;
- for (n = 0, r = s.length; n < r; ++n)
- for (var u = s[n], l = u[0], c = u[1]; ++l < c;) i.has(o[l]) && (e = {
- 0: l,
- 1: u[1]
- }, u[1] = l, u = u.next = e);
- for (n = 0, r = a.length; n < r; ++n)
- for (var h = a[n], p = h[0], f = p, g = h[1], d = i.has(o[p]); ++f < g;) i.has(o[f]) && (d ? (e = {
- 0: f,
- 1: h[1]
- }, h[1] = f, h = h.next = e) : (Ue(o, p, g, g - f), o[g] = o[p], d = !0, f = p));
- return t
- }(function (t) {
- var e = -1,
- n = [],
- r = [],
- i = [];
- function o(t) {
- t && De.call(s, t.type) && s[t.type](t)
- }
- var s = {
- GeometryCollection: function (t) {
- t.geometries.forEach(o)
- },
- LineString: function (t) {
- t.arcs = a(t.arcs)
- },
- MultiLineString: function (t) {
- t.arcs = t.arcs.map(a)
- },
- Polygon: function (t) {
- t.arcs = t.arcs.map(u)
- },
- MultiPolygon: function (t) {
- t.arcs = t.arcs.map(l)
- }
- };
- function a(t) {
- for (var r = 0, o = t.length; r < o; ++r) i[++e] = t[r];
- var s = {
- 0: e - o + 1,
- 1: e
- };
- return n.push(s), s
- }
- function u(t) {
- for (var n = 0, o = t.length; n < o; ++n) i[++e] = t[n];
- var s = {
- 0: e - o + 1,
- 1: e
- };
- return r.push(s), s
- }
- function l(t) {
- return t.map(u)
- }
- for (var c in t) o(t[c]);
- return {
- type: "Topology",
- coordinates: i,
- lines: n,
- rings: r,
- objects: t
- }
- }(t))),
- o = i.coordinates,
- s = Fe(1.4 * i.arcs.length, Ze, Ke);
- function a(t) {
- t && De.call(u, t.type) && u[t.type](t)
- }
- t = i.objects, i.bbox = n, i.arcs = i.arcs.map((function (t, e) {
- return s.set(t, e), o.slice(t[0], t[1] + 1)
- })), delete i.coordinates, o = null;
- var u = {
- GeometryCollection: function (t) {
- t.geometries.forEach(a)
- },
- LineString: function (t) {
- t.arcs = l(t.arcs)
- },
- MultiLineString: function (t) {
- t.arcs = t.arcs.map(l)
- },
- Polygon: function (t) {
- t.arcs = t.arcs.map(l)
- },
- MultiPolygon: function (t) {
- t.arcs = t.arcs.map(c)
- }
- };
- function l(t) {
- var e = [];
- do {
- var n = s.get(t);
- e.push(t[0] < t[1] ? n : ~n)
- } while (t = t.next);
- return e
- }
- function c(t) {
- return t.map(l)
- }
- for (var h in t) a(t[h]);
- return r && (i.transform = r, i.arcs = function (t) {
- for (var e = -1, n = t.length; ++e < n;) {
- for (var r, i, o = t[e], s = 0, a = 1, u = o.length, l = o[0], c = l[0], h = l[1]; ++s < u;) r = (l = o[s])[0], i = l[1], r === c && i === h || (o[a++] = [r - c, i - h], c = r, h = i);
- 1 === a && (o[a++] = [0, 0]), o.length = a
- }
- return t
- }(i.arcs)), i
- }
- function Ze(t) {
- var e, n = t[0],
- r = t[1];
- return r < n && (e = n, n = r, r = e), n + 31 * r
- }
- function Ke(t, e) {
- var n, r = t[0],
- i = t[1],
- o = e[0],
- s = e[1];
- return i < r && (n = r, r = i, i = n), s < o && (n = o, o = s, s = n), r === o && i === s
- }
- function Qe(t, e) {
- if (void 0 === e && (e = {}), "FeatureCollection" !== it(t)) throw new Error("geojson must be a FeatureCollection");
- if (!t.features.length) throw new Error("geojson is empty");
- !1 !== e.mutate && void 0 !== e.mutate || (t = Ie(t));
- var n = [];
- z(t, (function (t) {
- n.push(t.geometry)
- }));
- var r = Je({
- geoms: v(n).geometry
- });
- return function (t) {
- return Re(t, Ae.apply(this, arguments))
- }(r, r.objects.geoms.geometries)
- }
- function $e(t, e) {
- if (void 0 === e && (e = {}), !P(e = e || {})) throw new Error("options is invalid");
- var n = e.mutate;
- if ("FeatureCollection" !== it(t)) throw new Error("geojson must be a FeatureCollection");
- if (!t.features.length) throw new Error("geojson is empty");
- !1 !== n && void 0 !== n || (t = Ie(t));
- var r = function (t) {
- var e = {};
- z(t, (function (t) {
- e[t.geometry.type] = !0
- }));
- var n = Object.keys(e);
- if (1 === n.length) return n[0];
- return null
- }(t);
- if (!r) throw new Error("geojson must be homogenous");
- var i = t;
- switch (r) {
- case "LineString":
- return Me(i, e);
- case "Polygon":
- return Qe(i, e);
- default:
- throw new Error(r + " is not supported")
- }
- }
- function tn(t, e) {
- void 0 === e && (e = {});
- var n = "object" == typeof e ? e.mutate : e;
- if (!t) throw new Error("geojson is required");
- var r = it(t),
- i = [];
- switch (r) {
- case "LineString":
- i = en(t);
- break;
- case "MultiLineString":
- case "Polygon":
- Q(t).forEach((function (t) {
- i.push(en(t))
- }));
- break;
- case "MultiPolygon":
- Q(t).forEach((function (t) {
- var e = [];
- t.forEach((function (t) {
- e.push(en(t))
- })), i.push(e)
- }));
- break;
- case "Point":
- return t;
- case "MultiPoint":
- var s = {};
- Q(t).forEach((function (t) {
- var e = t.join("-");
- Object.prototype.hasOwnProperty.call(s, e) || (i.push(t), s[e] = !0)
- }));
- break;
- default:
- throw new Error(r + " geometry not supported")
- }
- return t.coordinates ? !0 === n ? (t.coordinates = i, t) : {
- type: r,
- coordinates: i
- } : !0 === n ? (t.geometry.coordinates = i, t) : o({
- type: r,
- coordinates: i
- }, t.properties, {
- bbox: t.bbox,
- id: t.id
- })
- }
- function en(t) {
- var e = Q(t);
- if (2 === e.length && !nn(e[0], e[1])) return e;
- var n = [],
- r = e.length - 1,
- i = n.length;
- n.push(e[0]);
- for (var o = 1; o < r; o++) {
- var s = n[n.length - 1];
- e[o][0] === s[0] && e[o][1] === s[1] || (n.push(e[o]), (i = n.length) > 2 && rn(n[i - 3], n[i - 1], n[i - 2]) && n.splice(n.length - 2, 1))
- }
- if (n.push(e[e.length - 1]), i = n.length, nn(e[0], e[e.length - 1]) && i < 4) throw new Error("invalid polygon");
- return rn(n[i - 3], n[i - 1], n[i - 2]) && n.splice(n.length - 2, 1), n
- }
- function nn(t, e) {
- return t[0] === e[0] && t[1] === e[1]
- }
- function rn(t, e, n) {
- var r = n[0],
- i = n[1],
- o = t[0],
- s = t[1],
- a = e[0],
- u = e[1],
- l = a - o,
- c = u - s;
- return 0 === (r - o) * c - (i - s) * l && (Math.abs(l) >= Math.abs(c) ? l > 0 ? o <= r && r <= a : a <= r && r <= o : c > 0 ? s <= i && i <= u : u <= i && i <= s)
- }
- function on(t, e, n) {
- var r = e.x,
- i = e.y,
- o = n.x - r,
- s = n.y - i;
- if (0 !== o || 0 !== s) {
- var a = ((t.x - r) * o + (t.y - i) * s) / (o * o + s * s);
- a > 1 ? (r = n.x, i = n.y) : a > 0 && (r += o * a, i += s * a)
- }
- return (o = t.x - r) * o + (s = t.y - i) * s
- }
- function sn(t, e, n, r, i) {
- for (var o, s = r, a = e + 1; a < n; a++) {
- var u = on(t[a], t[e], t[n]);
- u > s && (o = a, s = u)
- }
- s > r && (o - e > 1 && sn(t, e, o, r, i), i.push(t[o]), n - o > 1 && sn(t, o, n, r, i))
- }
- function an(t, e) {
- var n = t.length - 1,
- r = [t[0]];
- return sn(t, 0, n, e, r), r.push(t[n]), r
- }
- function un(t, e, n) {
- if (t.length <= 2) return t;
- var r = void 0 !== e ? e * e : 1;
- return t = an(t = n ? t : function (t, e) {
- for (var n, r, i, o, s, a = t[0], u = [a], l = 1, c = t.length; l < c; l++) n = t[l], i = a, o = void 0, s = void 0, o = (r = n).x - i.x, s = r.y - i.y, o * o + s * s > e && (u.push(n), a = n);
- return a !== n && u.push(n), u
- }(t, r), r)
- }
- function ln(t, e, n) {
- return un(t.map((function (t) {
- return {
- x: t[0],
- y: t[1],
- z: t[2]
- }
- })), e, n).map((function (t) {
- return t.z ? [t.x, t.y, t.z] : [t.x, t.y]
- }))
- }
- function cn(t, e, n) {
- return t.map((function (t) {
- var r = t.map((function (t) {
- return {
- x: t[0],
- y: t[1]
- }
- }));
- if (r.length < 4) throw new Error("invalid polygon");
- for (var i = un(r, e, n).map((function (t) {
- return [t.x, t.y]
- })); !hn(i);) i = un(r, e -= .01 * e, n).map((function (t) {
- return [t.x, t.y]
- }));
- return i[i.length - 1][0] === i[0][0] && i[i.length - 1][1] === i[0][1] || i.push(i[0]), i
- }))
- }
- function hn(t) {
- return !(t.length < 3) && !(3 === t.length && t[2][0] === t[0][0] && t[2][1] === t[0][1])
- }
- var pn = function () {
- function t(t) {
- this.points = t.points || [], this.duration = t.duration || 1e4, this.sharpness = t.sharpness || .85, this.centers = [], this.controls = [], this.stepLength = t.stepLength || 60, this.length = this.points.length, this.delay = 0;
- for (var e = 0; e < this.length; e++) this.points[e].z = this.points[e].z || 0;
- for (e = 0; e < this.length - 1; e++) {
- var n = this.points[e],
- r = this.points[e + 1];
- this.centers.push({
- x: (n.x + r.x) / 2,
- y: (n.y + r.y) / 2,
- z: (n.z + r.z) / 2
- })
- }
- this.controls.push([this.points[0], this.points[0]]);
- for (e = 0; e < this.centers.length - 1; e++) {
- var i = this.points[e + 1].x - (this.centers[e].x + this.centers[e + 1].x) / 2,
- o = this.points[e + 1].y - (this.centers[e].y + this.centers[e + 1].y) / 2,
- s = this.points[e + 1].z - (this.centers[e].y + this.centers[e + 1].z) / 2;
- this.controls.push([{
- x: (1 - this.sharpness) * this.points[e + 1].x + this.sharpness * (this.centers[e].x + i),
- y: (1 - this.sharpness) * this.points[e + 1].y + this.sharpness * (this.centers[e].y + o),
- z: (1 - this.sharpness) * this.points[e + 1].z + this.sharpness * (this.centers[e].z + s)
- }, {
- x: (1 - this.sharpness) * this.points[e + 1].x + this.sharpness * (this.centers[e + 1].x + i),
- y: (1 - this.sharpness) * this.points[e + 1].y + this.sharpness * (this.centers[e + 1].y + o),
- z: (1 - this.sharpness) * this.points[e + 1].z + this.sharpness * (this.centers[e + 1].z + s)
- }])
- }
- return this.controls.push([this.points[this.length - 1], this.points[this.length - 1]]), this.steps = this.cacheSteps(this.stepLength), this
- }
- return t.prototype.cacheSteps = function (t) {
- var e = [],
- n = this.pos(0);
- e.push(0);
- for (var r = 0; r < this.duration; r += 10) {
- var i = this.pos(r);
- Math.sqrt((i.x - n.x) * (i.x - n.x) + (i.y - n.y) * (i.y - n.y) + (i.z - n.z) * (i.z - n.z)) > t && (e.push(r), n = i)
- }
- return e
- }, t.prototype.vector = function (t) {
- var e = this.pos(t + 10),
- n = this.pos(t - 10);
- return {
- angle: 180 * Math.atan2(e.y - n.y, e.x - n.x) / 3.14,
- speed: Math.sqrt((n.x - e.x) * (n.x - e.x) + (n.y - e.y) * (n.y - e.y) + (n.z - e.z) * (n.z - e.z))
- }
- }, t.prototype.pos = function (t) {
- var e = t - this.delay;
- e < 0 && (e = 0), e > this.duration && (e = this.duration - 1);
- var n = e / this.duration;
- if (n >= 1) return this.points[this.length - 1];
- var r = Math.floor((this.points.length - 1) * n);
- return function (t, e, n, r, i) {
- var o = function (t) {
- var e = t * t;
- return [e * t, 3 * e * (1 - t), 3 * t * (1 - t) * (1 - t), (1 - t) * (1 - t) * (1 - t)]
- }(t);
- return {
- x: i.x * o[0] + r.x * o[1] + n.x * o[2] + e.x * o[3],
- y: i.y * o[0] + r.y * o[1] + n.y * o[2] + e.y * o[3],
- z: i.z * o[0] + r.z * o[1] + n.z * o[2] + e.z * o[3]
- }
- }((this.length - 1) * n - r, this.points[r], this.controls[r][1], this.controls[r + 1][0], this.points[r + 1])
- }, t
- }();
- function fn(t, e) {
- void 0 === e && (e = {});
- for (var n = e.resolution || 1e4, r = e.sharpness || .85, i = [], o = rt(t).coordinates.map((function (t) {
- return {
- x: t[0],
- y: t[1]
- }
- })), s = new pn({
- duration: n,
- points: o,
- sharpness: r
- }), a = function (t) {
- var e = s.pos(t);
- Math.floor(t / 100) % 2 == 0 && i.push([e.x, e.y])
- }, u = 0; u < s.duration; u += 10) a(u);
- return a(s.duration), h(i, e.properties)
- }
- function gn(t, e) {
- void 0 === e && (e = {});
- var n = Number(t[0]),
- r = Number(t[1]),
- i = Number(t[2]),
- o = Number(t[3]);
- if (6 === t.length) throw new Error("@BMturf/bbox-polygon does not support BBox with 6 positions");
- var s = [n, r];
- return l([
- [s, [i, r],
- [i, o],
- [n, o], s
- ]
- ], e.properties, {
- bbox: t,
- id: e.id
- })
- }
- function dn(t) {
- return gn(Z(t))
- }
- function yn(t) {
- var e = t[0],
- n = t[1],
- r = t[2],
- i = t[3];
- if (me(t.slice(0, 2), [r, n]) >= me(t.slice(0, 2), [e, i])) {
- var o = (n + i) / 2;
- return [e, o - (r - e) / 2, r, o + (r - e) / 2]
- }
- var s = (e + r) / 2;
- return [s - (i - n) / 2, n, s + (i - n) / 2, i]
- }
- function vn(t, e, n, r) {
- void 0 === r && (r = {});
- var i = K(t),
- o = I(i[0]),
- s = I(i[1]),
- u = I(n),
- l = x(e, r.units),
- c = Math.asin(Math.sin(s) * Math.cos(l) + Math.cos(s) * Math.sin(l) * Math.cos(u));
- return a([w(o + Math.atan2(Math.sin(u) * Math.sin(l) * Math.cos(s), Math.cos(l) - Math.sin(s) * Math.sin(c))), w(c)], r.properties)
- }
- function _n(t, e, n) {
- void 0 === n && (n = {});
- for (var r = n.steps || 64, i = n.properties ? n.properties : !Array.isArray(t) && "Feature" === t.type && t.properties ? t.properties : {}, o = [], s = 0; s < r; s++) o.push(vn(t, e, -360 * s / r, n).geometry.coordinates);
- return o.push(o[0]), l([o], i)
- }
- function mn(t, e, n) {
- if (void 0 === n && (n = {}), !0 === n.final) return function (t, e) {
- var n = mn(e, t);
- return n = (n + 180) % 360
- }(t, e);
- var r = K(t),
- i = K(e),
- o = I(r[0]),
- s = I(i[0]),
- a = I(r[1]),
- u = I(i[1]),
- l = Math.sin(s - o) * Math.cos(u),
- c = Math.cos(a) * Math.sin(u) - Math.sin(a) * Math.cos(u) * Math.cos(s - o);
- return w(Math.atan2(l, c))
- }
- function xn(t, e) {
- void 0 === e && (e = {});
- var n = Z(t);
- return a([(n[0] + n[2]) / 2, (n[1] + n[3]) / 2], e.properties, e)
- }
- function En(t, e) {
- void 0 === e && (e = {});
- var n = 0,
- r = 0,
- i = 0;
- return R(t, (function (t) {
- n += t[0], r += t[1], i++
- }), !0), a([n / i, r / i], e.properties)
- }
- function bn(t) {
- var e = [];
- return "FeatureCollection" === t.type ? F(t, (function (t) {
- R(t, (function (n) {
- e.push(a(n, t.properties))
- }))
- })) : R(t, (function (n) {
- e.push(a(n, t.properties))
- })), f(e)
- }
- var wn = Nn,
- In = Nn;
- function Nn(t, e, n) {
- n = n || 2;
- var r, i, o, s, a, u, l, c = e && e.length,
- h = c ? e[0] * n : t.length,
- p = Sn(t, 0, h, n, !0),
- f = [];
- if (!p) return f;
- if (c && (p = function (t, e, n, r) {
- var i, o, s, a = [];
- for (i = 0, o = e.length; i < o; i++)(s = Sn(t, e[i] * r, i < o - 1 ? e[i + 1] * r : t.length, r, !1)) === s.next && (s.steiner = !0), a.push(Fn(s));
- for (a.sort(Tn), i = 0; i < a.length; i++) An(a[i], n), n = Cn(n, n.next);
- return n
- }(t, e, p, n)), t.length > 80 * n) {
- r = o = t[0], i = s = t[1];
- for (var g = n; g < h; g += n)(a = t[g]) < r && (r = a), (u = t[g + 1]) < i && (i = u), a > o && (o = a), u > s && (s = u);
- l = 0 !== (l = Math.max(o - r, s - i)) ? 1 / l : 0
- }
- return Pn(p, f, n, r, i, l), f
- }
- function Sn(t, e, n, r, i) {
- var o, s;
- if (i === Hn(t, e, n, r) > 0)
- for (o = e; o < n; o += r) s = Vn(o, t[o], t[o + 1], s);
- else
- for (o = n - r; o >= e; o -= r) s = Vn(o, t[o], t[o + 1], s);
- return s && Bn(s, s.next) && (Xn(s), s = s.next), s
- }
- function Cn(t, e) {
- if (!t) return t;
- e || (e = t);
- var n, r = t;
- do {
- if (n = !1, r.steiner || !Bn(r, r.next) && 0 !== qn(r.prev, r, r.next)) r = r.next;
- else {
- if (Xn(r), (r = e = r.prev) === r.next) break;
- n = !0
- }
- } while (n || r !== e);
- return e
- }
- function Pn(t, e, n, r, i, o, s) {
- if (t) {
- !s && o && function (t, e, n, r) {
- var i = t;
- do {
- null === i.z && (i.z = Dn(i.x, i.y, e, n, r)), i.prevZ = i.prev, i.nextZ = i.next, i = i.next
- } while (i !== t);
- i.prevZ.nextZ = null, i.prevZ = null,
- function (t) {
- var e, n, r, i, o, s, a, u, l = 1;
- do {
- for (n = t, t = null, o = null, s = 0; n;) {
- for (s++, r = n, a = 0, e = 0; e < l && (a++, r = r.nextZ); e++);
- for (u = l; a > 0 || u > 0 && r;) 0 !== a && (0 === u || !r || n.z <= r.z) ? (i = n, n = n.nextZ, a--) : (i = r, r = r.nextZ, u--), o ? o.nextZ = i : t = i, i.prevZ = o, o = i;
- n = r
- }
- o.nextZ = null, l *= 2
- } while (s > 1)
- }(i)
- }(t, r, i, o);
- for (var a, u, l = t; t.prev !== t.next;)
- if (a = t.prev, u = t.next, o ? Ln(t, r, i, o) : Mn(t)) e.push(a.i / n), e.push(t.i / n), e.push(u.i / n), Xn(t), t = u.next, l = u.next;
- else if ((t = u) === l) {
- s ? 1 === s ? Pn(t = On(t, e, n), e, n, r, i, o, 2) : 2 === s && Rn(t, e, n, r, i, o) : Pn(Cn(t), e, n, r, i, o, 1);
- break
- }
- }
- }
- function Mn(t) {
- var e = t.prev,
- n = t,
- r = t.next;
- if (qn(e, n, r) >= 0) return !1;
- for (var i = t.next.next; i !== t.prev;) {
- if (kn(e.x, e.y, n.x, n.y, r.x, r.y, i.x, i.y) && qn(i.prev, i, i.next) >= 0) return !1;
- i = i.next
- }
- return !0
- }
- function Ln(t, e, n, r) {
- var i = t.prev,
- o = t,
- s = t.next;
- if (qn(i, o, s) >= 0) return !1;
- for (var a = i.x < o.x ? i.x < s.x ? i.x : s.x : o.x < s.x ? o.x : s.x, u = i.y < o.y ? i.y < s.y ? i.y : s.y : o.y < s.y ? o.y : s.y, l = i.x > o.x ? i.x > s.x ? i.x : s.x : o.x > s.x ? o.x : s.x, c = i.y > o.y ? i.y > s.y ? i.y : s.y : o.y > s.y ? o.y : s.y, h = Dn(a, u, e, n, r), p = Dn(l, c, e, n, r), f = t.prevZ, g = t.nextZ; f && f.z >= h && g && g.z <= p;) {
- if (f !== t.prev && f !== t.next && kn(i.x, i.y, o.x, o.y, s.x, s.y, f.x, f.y) && qn(f.prev, f, f.next) >= 0) return !1;
- if (f = f.prevZ, g !== t.prev && g !== t.next && kn(i.x, i.y, o.x, o.y, s.x, s.y, g.x, g.y) && qn(g.prev, g, g.next) >= 0) return !1;
- g = g.nextZ
- }
- for (; f && f.z >= h;) {
- if (f !== t.prev && f !== t.next && kn(i.x, i.y, o.x, o.y, s.x, s.y, f.x, f.y) && qn(f.prev, f, f.next) >= 0) return !1;
- f = f.prevZ
- }
- for (; g && g.z <= p;) {
- if (g !== t.prev && g !== t.next && kn(i.x, i.y, o.x, o.y, s.x, s.y, g.x, g.y) && qn(g.prev, g, g.next) >= 0) return !1;
- g = g.nextZ
- }
- return !0
- }
- function On(t, e, n) {
- var r = t;
- do {
- var i = r.prev,
- o = r.next.next;
- !Bn(i, o) && zn(i, r, r.next, o) && jn(i, o) && jn(o, i) && (e.push(i.i / n), e.push(r.i / n), e.push(o.i / n), Xn(r), Xn(r.next), r = t = o), r = r.next
- } while (r !== t);
- return r
- }
- function Rn(t, e, n, r, i, o) {
- var s = t;
- do {
- for (var a = s.next.next; a !== s.prev;) {
- if (s.i !== a.i && Gn(s, a)) {
- var u = Un(s, a);
- return s = Cn(s, s.next), u = Cn(u, u.next), Pn(s, e, n, r, i, o), void Pn(u, e, n, r, i, o)
- }
- a = a.next
- }
- s = s.next
- } while (s !== t)
- }
- function Tn(t, e) {
- return t.x - e.x
- }
- function An(t, e) {
- if (e = function (t, e) {
- var n, r = e,
- i = t.x,
- o = t.y,
- s = -1 / 0;
- do {
- if (o <= r.y && o >= r.next.y && r.next.y !== r.y) {
- var a = r.x + (o - r.y) * (r.next.x - r.x) / (r.next.y - r.y);
- if (a <= i && a > s) {
- if (s = a, a === i) {
- if (o === r.y) return r;
- if (o === r.next.y) return r.next
- }
- n = r.x < r.next.x ? r : r.next
- }
- }
- r = r.next
- } while (r !== e);
- if (!n) return null;
- if (i === s) return n.prev;
- var u, l = n,
- c = n.x,
- h = n.y,
- p = 1 / 0;
- r = n.next;
- for (; r !== l;) i >= r.x && r.x >= c && i !== r.x && kn(o < h ? i : s, o, c, h, o < h ? s : i, o, r.x, r.y) && ((u = Math.abs(o - r.y) / (i - r.x)) < p || u === p && r.x > n.x) && jn(r, t) && (n = r, p = u), r = r.next;
- return n
- }(t, e)) {
- var n = Un(e, t);
- Cn(n, n.next)
- }
- }
- function Dn(t, e, n, r, i) {
- return (t = 1431655765 & ((t = 858993459 & ((t = 252645135 & ((t = 16711935 & ((t = 32767 * (t - n) * i) | t << 8)) | t << 4)) | t << 2)) | t << 1)) | (e = 1431655765 & ((e = 858993459 & ((e = 252645135 & ((e = 16711935 & ((e = 32767 * (e - r) * i) | e << 8)) | e << 4)) | e << 2)) | e << 1)) << 1
- }
- function Fn(t) {
- var e = t,
- n = t;
- do {
- e.x < n.x && (n = e), e = e.next
- } while (e !== t);
- return n
- }
- function kn(t, e, n, r, i, o, s, a) {
- return (i - s) * (e - a) - (t - s) * (o - a) >= 0 && (t - s) * (r - a) - (n - s) * (e - a) >= 0 && (n - s) * (o - a) - (i - s) * (r - a) >= 0
- }
- function Gn(t, e) {
- return t.next.i !== e.i && t.prev.i !== e.i && ! function (t, e) {
- var n = t;
- do {
- if (n.i !== t.i && n.next.i !== t.i && n.i !== e.i && n.next.i !== e.i && zn(n, n.next, t, e)) return !0;
- n = n.next
- } while (n !== t);
- return !1
- }(t, e) && jn(t, e) && jn(e, t) && function (t, e) {
- var n = t,
- r = !1,
- i = (t.x + e.x) / 2,
- o = (t.y + e.y) / 2;
- do {
- n.y > o != n.next.y > o && n.next.y !== n.y && i < (n.next.x - n.x) * (o - n.y) / (n.next.y - n.y) + n.x && (r = !r), n = n.next
- } while (n !== t);
- return r
- }(t, e)
- }
- function qn(t, e, n) {
- return (e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)
- }
- function Bn(t, e) {
- return t.x === e.x && t.y === e.y
- }
- function zn(t, e, n, r) {
- return !!(Bn(t, e) && Bn(n, r) || Bn(t, r) && Bn(n, e)) || qn(t, e, n) > 0 != qn(t, e, r) > 0 && qn(n, r, t) > 0 != qn(n, r, e) > 0
- }
- function jn(t, e) {
- return qn(t.prev, t, t.next) < 0 ? qn(t, e, t.next) >= 0 && qn(t, t.prev, e) >= 0 : qn(t, e, t.prev) < 0 || qn(t, t.next, e) < 0
- }
- function Un(t, e) {
- var n = new Yn(t.i, t.x, t.y),
- r = new Yn(e.i, e.x, e.y),
- i = t.next,
- o = e.prev;
- return t.next = e, e.prev = t, n.next = i, i.prev = n, r.next = n, n.prev = r, o.next = r, r.prev = o, r
- }
- function Vn(t, e, n, r) {
- var i = new Yn(t, e, n);
- return r ? (i.next = r.next, i.prev = r, r.next.prev = i, r.next = i) : (i.prev = i, i.next = i), i
- }
- function Xn(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 Yn(t, e, n) {
- this.i = t, this.x = e, this.y = n, this.prev = null, this.next = null, this.z = null, this.prevZ = null, this.nextZ = null, this.steiner = !1
- }
- function Hn(t, e, n, r) {
- for (var i = 0, o = e, s = n - r; o < n; o += r) i += (t[s] - t[o]) * (t[o + 1] + t[s + 1]), s = o;
- return i
- }
- function Wn(t) {
- var e = function (t) {
- for (var e = t[0][0].length, n = {
- vertices: [],
- holes: [],
- dimensions: e
- }, r = 0, i = 0; i < t.length; i++) {
- for (var o = 0; o < t[i].length; o++)
- for (var s = 0; s < e; s++) n.vertices.push(t[i][o][s]);
- i > 0 && (r += t[i - 1].length, n.holes.push(r))
- }
- return n
- }(t),
- n = wn(e.vertices, e.holes, 2),
- r = [],
- i = [];
- n.forEach((function (t, r) {
- var o = n[r];
- i.push([e.vertices[2 * o], e.vertices[2 * o + 1]])
- }));
- for (var o = 0; o < i.length; o += 3) {
- var s = i.slice(o, o + 3);
- s.push(i[o]), r.push(l([s]))
- }
- return r
- }
- function Jn(t, e) {
- if (!t) throw new Error("targetPoint is required");
- if (!e) throw new Error("points is required");
- var n, r = 1 / 0,
- i = 0;
- return F(e, (function (e, n) {
- var o = me(t, e);
- o < r && (i = n, r = o)
- })), (n = Ie(e.features[i])).properties.featureIndex = i, n.properties.distanceToPoint = r, n
- }
- function Zn(t) {
- if (!t) throw new Error("geojson is required");
- var e = [];
- return z(t, (function (t) {
- ! function (t, e) {
- var n = [],
- r = t.geometry;
- if (null !== r) {
- switch (r.type) {
- case "Polygon":
- n = Q(r);
- break;
- case "LineString":
- n = [Q(r)]
- }
- n.forEach((function (n) {
- (function (t, e) {
- var n = [];
- return t.reduce((function (t, r) {
- var i = h([t, r], e);
- return i.bbox = function (t, e) {
- var n = t[0],
- r = t[1],
- i = e[0],
- o = e[1];
- return [n < i ? n : i, r < o ? r : o, n > i ? n : i, r > o ? r : o]
- }(t, r), n.push(i), r
- })), n
- })(n, t.properties).forEach((function (t) {
- t.id = e.length, e.push(t)
- }))
- }))
- }
- }(t, e)
- })), f(e)
- }
- Nn.deviation = function (t, e, n, r) {
- var i = e && e.length,
- o = i ? e[0] * n : t.length,
- s = Math.abs(Hn(t, 0, o, n));
- if (i)
- for (var a = 0, u = e.length; a < u; a++) {
- var l = e[a] * n,
- c = a < u - 1 ? e[a + 1] * n : t.length;
- s -= Math.abs(Hn(t, l, c, n))
- }
- var h = 0;
- for (a = 0; a < r.length; a += 3) {
- var p = r[a] * n,
- f = r[a + 1] * n,
- g = r[a + 2] * n;
- h += Math.abs((t[p] - t[g]) * (t[f + 1] - t[p + 1]) - (t[p] - t[f]) * (t[g + 1] - t[p + 1]))
- }
- return 0 === s && 0 === h ? 0 : Math.abs((h - s) / s)
- }, Nn.flatten = function (t) {
- for (var e = t[0][0].length, n = {
- vertices: [],
- holes: [],
- dimensions: e
- }, r = 0, i = 0; i < t.length; i++) {
- for (var o = 0; o < t[i].length; o++)
- for (var s = 0; s < e; s++) n.vertices.push(t[i][o][s]);
- i > 0 && (r += t[i - 1].length, n.holes.push(r))
- }
- return n
- }, wn.default = In;
- var Kn = Bt((function (t, e) {
- function n(t, e, n) {
- void 0 === n && (n = {});
- var r = {
- type: "Feature"
- };
- return (0 === n.id || n.id) && (r.id = n.id), n.bbox && (r.bbox = n.bbox), r.properties = e || {}, r.geometry = t, r
- }
- function r(t, e, r) {
- if (void 0 === r && (r = {}), !t) throw new Error("coordinates is required");
- if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
- if (t.length < 2) throw new Error("coordinates must be at least 2 numbers long");
- if (!f(t[0]) || !f(t[1])) throw new Error("coordinates must contain numbers");
- return n({
- type: "Point",
- coordinates: t
- }, e, r)
- }
- function i(t, e, r) {
- void 0 === r && (r = {});
- for (var i = 0, o = t; i < o.length; i++) {
- var s = o[i];
- if (s.length < 4) throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
- for (var a = 0; a < s[s.length - 1].length; a++)
- if (s[s.length - 1][a] !== s[0][a]) throw new Error("First and last Position are not equivalent.")
- }
- return n({
- type: "Polygon",
- coordinates: t
- }, e, r)
- }
- function o(t, e, r) {
- if (void 0 === r && (r = {}), t.length < 2) throw new Error("coordinates must be an array of two or more positions");
- return n({
- type: "LineString",
- coordinates: t
- }, e, r)
- }
- function s(t, e) {
- void 0 === e && (e = {});
- var n = {
- type: "FeatureCollection"
- };
- return e.id && (n.id = e.id), e.bbox && (n.bbox = e.bbox), n.features = t, n
- }
- function a(t, e, r) {
- return void 0 === r && (r = {}), n({
- type: "MultiLineString",
- coordinates: t
- }, e, r)
- }
- function u(t, e, r) {
- return void 0 === r && (r = {}), n({
- type: "MultiPoint",
- coordinates: t
- }, e, r)
- }
- function l(t, e, r) {
- return void 0 === r && (r = {}), n({
- type: "MultiPolygon",
- coordinates: t
- }, e, r)
- }
- function c(t, n) {
- void 0 === n && (n = "kilometers");
- var r = e.factors[n];
- if (!r) throw new Error(n + " units is invalid");
- return t * r
- }
- function h(t, n) {
- void 0 === n && (n = "kilometers");
- var r = e.factors[n];
- if (!r) throw new Error(n + " units is invalid");
- return t / r
- }
- function p(t) {
- return 180 * (t % (2 * Math.PI)) / Math.PI
- }
- function f(t) {
- return !isNaN(t) && null !== t && !Array.isArray(t)
- }
- Object.defineProperty(e, "__esModule", {
- value: !0
- }), e.earthRadius = 6371008.8, e.factors = {
- centimeters: 100 * e.earthRadius,
- centimetres: 100 * e.earthRadius,
- degrees: e.earthRadius / 111325,
- feet: 3.28084 * e.earthRadius,
- inches: 39.37 * e.earthRadius,
- kilometers: e.earthRadius / 1e3,
- kilometres: e.earthRadius / 1e3,
- meters: e.earthRadius,
- metres: e.earthRadius,
- miles: e.earthRadius / 1609.344,
- millimeters: 1e3 * e.earthRadius,
- millimetres: 1e3 * e.earthRadius,
- nauticalmiles: e.earthRadius / 1852,
- radians: 1,
- yards: 1.0936 * e.earthRadius
- }, e.unitsFactors = {
- centimeters: 100,
- centimetres: 100,
- degrees: 1 / 111325,
- feet: 3.28084,
- inches: 39.37,
- kilometers: .001,
- kilometres: .001,
- meters: 1,
- metres: 1,
- miles: 1 / 1609.344,
- millimeters: 1e3,
- millimetres: 1e3,
- nauticalmiles: 1 / 1852,
- radians: 1 / e.earthRadius,
- yards: 1.0936133
- }, e.areaFactors = {
- acres: 247105e-9,
- centimeters: 1e4,
- centimetres: 1e4,
- feet: 10.763910417,
- hectares: 1e-4,
- inches: 1550.003100006,
- kilometers: 1e-6,
- kilometres: 1e-6,
- meters: 1,
- metres: 1,
- miles: 386e-9,
- millimeters: 1e6,
- millimetres: 1e6,
- yards: 1.195990046
- }, e.feature = n, e.geometry = function (t, e, n) {
- switch (t) {
- case "Point":
- return r(e).geometry;
- case "LineString":
- return o(e).geometry;
- case "Polygon":
- return i(e).geometry;
- case "MultiPoint":
- return u(e).geometry;
- case "MultiLineString":
- return a(e).geometry;
- case "MultiPolygon":
- return l(e).geometry;
- default:
- throw new Error(t + " is invalid")
- }
- }, e.point = r, e.points = function (t, e, n) {
- return void 0 === n && (n = {}), s(t.map((function (t) {
- return r(t, e)
- })), n)
- }, e.polygon = i, e.polygons = function (t, e, n) {
- return void 0 === n && (n = {}), s(t.map((function (t) {
- return i(t, e)
- })), n)
- }, e.lineString = o, e.lineStrings = function (t, e, n) {
- return void 0 === n && (n = {}), s(t.map((function (t) {
- return o(t, e)
- })), n)
- }, e.featureCollection = s, e.multiLineString = a, e.multiPoint = u, e.multiPolygon = l, e.geometryCollection = function (t, e, r) {
- return void 0 === r && (r = {}), n({
- type: "GeometryCollection",
- geometries: t
- }, e, r)
- }, e.round = function (t, e) {
- if (void 0 === e && (e = 0), e && !(e >= 0)) throw new Error("precision must be a positive number");
- var n = Math.pow(10, e || 0);
- return Math.round(t * n) / n
- }, e.radiansToLength = c, e.lengthToRadians = h, e.lengthToDegrees = function (t, e) {
- return p(h(t, e))
- }, e.bearingToAzimuth = function (t) {
- var e = t % 360;
- return e < 0 && (e += 360), e
- }, e.radiansToDegrees = p, e.degreesToRadians = function (t) {
- return t % 360 * Math.PI / 180
- }, e.convertLength = function (t, e, n) {
- if (void 0 === e && (e = "kilometers"), void 0 === n && (n = "kilometers"), !(t >= 0)) throw new Error("length must be a positive number");
- return c(h(t, e), n)
- }, e.convertArea = function (t, n, r) {
- if (void 0 === n && (n = "meters"), void 0 === r && (r = "kilometers"), !(t >= 0)) throw new Error("area must be a positive number");
- var i = e.areaFactors[n];
- if (!i) throw new Error("invalid original units");
- var o = e.areaFactors[r];
- if (!o) throw new Error("invalid final units");
- return t / i * o
- }, e.isNumber = f, e.isObject = function (t) {
- return !!t && t.constructor === Object
- }, e.validateBBox = function (t) {
- if (!t) throw new Error("bbox is required");
- if (!Array.isArray(t)) throw new Error("bbox must be an Array");
- if (4 !== t.length && 6 !== t.length) throw new Error("bbox must be an Array of 4 or 6 numbers");
- t.forEach((function (t) {
- if (!f(t)) throw new Error("bbox must only contain numbers")
- }))
- }, e.validateId = function (t) {
- if (!t) throw new Error("id is required");
- if (-1 === ["string", "number"].indexOf(typeof t)) throw new Error("id must be a number or a string")
- }
- }));
- function Qn(t, e, n) {
- if (null !== t)
- for (var r, i, o, s, a, u, l, c, h = 0, p = 0, f = t.type, g = "FeatureCollection" === f, d = "Feature" === f, y = g ? t.features.length : 1, v = 0; v < y; v++) {
- a = (c = !!(l = g ? t.features[v].geometry : d ? t.geometry : t) && "GeometryCollection" === l.type) ? l.geometries.length : 1;
- for (var _ = 0; _ < a; _++) {
- var m = 0,
- x = 0;
- if (null !== (s = c ? l.geometries[_] : l)) {
- u = s.coordinates;
- var E = s.type;
- switch (h = !n || "Polygon" !== E && "MultiPolygon" !== E ? 0 : 1, E) {
- case null:
- break;
- case "Point":
- if (!1 === e(u, p, v, m, x)) return !1;
- p++, m++;
- break;
- case "LineString":
- case "MultiPoint":
- for (r = 0; r < u.length; r++) {
- if (!1 === e(u[r], p, v, m, x)) return !1;
- p++, "MultiPoint" === E && m++
- }
- "LineString" === E && m++;
- break;
- case "Polygon":
- case "MultiLineString":
- for (r = 0; r < u.length; r++) {
- for (i = 0; i < u[r].length - h; i++) {
- if (!1 === e(u[r][i], p, v, m, x)) return !1;
- p++
- }
- "MultiLineString" === E && m++, "Polygon" === E && x++
- }
- "Polygon" === E && m++;
- break;
- case "MultiPolygon":
- for (r = 0; r < u.length; r++) {
- for (x = 0, i = 0; i < u[r].length; i++) {
- for (o = 0; o < u[r][i].length - h; o++) {
- if (!1 === e(u[r][i][o], p, v, m, x)) return !1;
- p++
- }
- x++
- }
- m++
- }
- break;
- case "GeometryCollection":
- for (r = 0; r < s.geometries.length; r++)
- if (!1 === Qn(s.geometries[r], e, n)) return !1;
- break;
- default:
- throw new Error("Unknown Geometry Type")
- }
- }
- }
- }
- }
- function $n(t, e) {
- var n;
- switch (t.type) {
- case "FeatureCollection":
- for (n = 0; n < t.features.length && !1 !== e(t.features[n].properties, n); n++);
- break;
- case "Feature":
- e(t.properties, 0)
- }
- }
- function tr(t, e) {
- if ("Feature" === t.type) e(t, 0);
- else if ("FeatureCollection" === t.type)
- for (var n = 0; n < t.features.length && !1 !== e(t.features[n], n); n++);
- }
- function er(t, e) {
- var n, r, i, o, s, a, u, l, c, h, p = 0,
- f = "FeatureCollection" === t.type,
- g = "Feature" === t.type,
- d = f ? t.features.length : 1;
- for (n = 0; n < d; n++) {
- for (a = f ? t.features[n].geometry : g ? t.geometry : t, l = f ? t.features[n].properties : g ? t.properties : {}, c = f ? t.features[n].bbox : g ? t.bbox : void 0, h = f ? t.features[n].id : g ? t.id : void 0, s = (u = !!a && "GeometryCollection" === a.type) ? a.geometries.length : 1, i = 0; i < s; i++)
- if (null !== (o = u ? a.geometries[i] : a)) switch (o.type) {
- case "Point":
- case "LineString":
- case "MultiPoint":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon":
- if (!1 === e(o, p, l, c, h)) return !1;
- break;
- case "GeometryCollection":
- for (r = 0; r < o.geometries.length; r++)
- if (!1 === e(o.geometries[r], p, l, c, h)) return !1;
- break;
- default:
- throw new Error("Unknown Geometry Type")
- } else if (!1 === e(null, p, l, c, h)) return !1;
- p++
- }
- }
- function nr(t, e) {
- er(t, (function (t, n, r, i, o) {
- var s, a = null === t ? null : t.type;
- switch (a) {
- case null:
- case "Point":
- case "LineString":
- case "Polygon":
- return !1 !== e(Kn.feature(t, r, {
- bbox: i,
- id: o
- }), n, 0) && void 0
- }
- switch (a) {
- case "MultiPoint":
- s = "Point";
- break;
- case "MultiLineString":
- s = "LineString";
- break;
- case "MultiPolygon":
- s = "Polygon"
- }
- for (var u = 0; u < t.coordinates.length; u++) {
- var l = {
- type: s,
- coordinates: t.coordinates[u]
- };
- if (!1 === e(Kn.feature(l, r), n, u)) return !1
- }
- }))
- }
- function rr(t, e) {
- nr(t, (function (t, n, r) {
- var i = 0;
- if (t.geometry) {
- var o = t.geometry.type;
- if ("Point" !== o && "MultiPoint" !== o) {
- var s, a = 0,
- u = 0,
- l = 0;
- return !1 !== Qn(t, (function (o, c, h, p, f) {
- if (void 0 === s || n > a || p > u || f > l) return s = o, a = n, u = p, l = f, void(i = 0);
- var g = Kn.lineString([s, o], t.properties);
- if (!1 === e(g, n, r, f, i)) return !1;
- i++, s = o
- })) && void 0
- }
- }
- }))
- }
- function ir(t, e) {
- if (!t) throw new Error("geojson is required");
- nr(t, (function (t, n, r) {
- if (null !== t.geometry) {
- var i = t.geometry.type,
- o = t.geometry.coordinates;
- switch (i) {
- case "LineString":
- if (!1 === e(t, n, r, 0, 0)) return !1;
- break;
- case "Polygon":
- for (var s = 0; s < o.length; s++)
- if (!1 === e(Kn.lineString(o[s], t.properties), n, r, s)) return !1
- }
- }
- }))
- }
- var or = function (t) {
- var e = [];
- return Qn(t, (function (t) {
- e.push(t)
- })), e
- },
- sr = Qn,
- ar = function (t, e, n, r) {
- var i = n;
- return Qn(t, (function (t, r, o, s, a) {
- i = 0 === r && void 0 === n ? t : e(i, t, r, o, s, a)
- }), r), i
- },
- ur = tr,
- lr = function (t, e, n) {
- var r = n;
- return tr(t, (function (t, i) {
- r = 0 === i && void 0 === n ? t : e(r, t, i)
- })), r
- },
- cr = function (t, e) {
- if (e = e || {}, !Kn.isObject(e)) throw new Error("options is invalid");
- var n, r = e.featureIndex || 0,
- i = e.multiFeatureIndex || 0,
- o = e.geometryIndex || 0,
- s = e.coordIndex || 0,
- a = e.properties;
- switch (t.type) {
- case "FeatureCollection":
- r < 0 && (r = t.features.length + r), a = a || t.features[r].properties, n = t.features[r].geometry;
- break;
- case "Feature":
- a = a || t.properties, n = t.geometry;
- break;
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon":
- n = t;
- break;
- default:
- throw new Error("geojson is invalid")
- }
- if (null === n) return null;
- var u = n.coordinates;
- switch (n.type) {
- case "Point":
- return Kn.point(u, a, e);
- case "MultiPoint":
- return i < 0 && (i = u.length + i), Kn.point(u[i], a, e);
- case "LineString":
- return s < 0 && (s = u.length + s), Kn.point(u[s], a, e);
- case "Polygon":
- return o < 0 && (o = u.length + o), s < 0 && (s = u[o].length + s), Kn.point(u[o][s], a, e);
- case "MultiLineString":
- return i < 0 && (i = u.length + i), s < 0 && (s = u[i].length + s), Kn.point(u[i][s], a, e);
- case "MultiPolygon":
- return i < 0 && (i = u.length + i), o < 0 && (o = u[i].length + o), s < 0 && (s = u[i][o].length - s), Kn.point(u[i][o][s], a, e)
- }
- throw new Error("geojson is invalid")
- },
- hr = function (t, e) {
- if (e = e || {}, !Kn.isObject(e)) throw new Error("options is invalid");
- var n, r = e.featureIndex || 0,
- i = e.multiFeatureIndex || 0,
- o = e.geometryIndex || 0,
- s = e.segmentIndex || 0,
- a = e.properties;
- switch (t.type) {
- case "FeatureCollection":
- r < 0 && (r = t.features.length + r), a = a || t.features[r].properties, n = t.features[r].geometry;
- break;
- case "Feature":
- a = a || t.properties, n = t.geometry;
- break;
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon":
- n = t;
- break;
- default:
- throw new Error("geojson is invalid")
- }
- if (null === n) return null;
- var u = n.coordinates;
- switch (n.type) {
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- return s < 0 && (s = u.length + s - 1), Kn.lineString([u[s], u[s + 1]], a, e);
- case "Polygon":
- return o < 0 && (o = u.length + o), s < 0 && (s = u[o].length + s - 1), Kn.lineString([u[o][s], u[o][s + 1]], a, e);
- case "MultiLineString":
- return i < 0 && (i = u.length + i), s < 0 && (s = u[i].length + s - 1), Kn.lineString([u[i][s], u[i][s + 1]], a, e);
- case "MultiPolygon":
- return i < 0 && (i = u.length + i), o < 0 && (o = u[i].length + o), s < 0 && (s = u[i][o].length - s - 1), Kn.lineString([u[i][o][s], u[i][o][s + 1]], a, e)
- }
- throw new Error("geojson is invalid")
- },
- pr = nr,
- fr = function (t, e, n) {
- var r = n;
- return nr(t, (function (t, i, o) {
- r = 0 === i && 0 === o && void 0 === n ? t : e(r, t, i, o)
- })), r
- },
- gr = er,
- dr = function (t, e, n) {
- var r = n;
- return er(t, (function (t, i, o, s, a) {
- r = 0 === i && void 0 === n ? t : e(r, t, i, o, s, a)
- })), r
- },
- yr = ir,
- vr = function (t, e, n) {
- var r = n;
- return ir(t, (function (t, i, o, s) {
- r = 0 === i && void 0 === n ? t : e(r, t, i, o, s)
- })), r
- },
- _r = $n,
- mr = function (t, e, n) {
- var r = n;
- return $n(t, (function (t, i) {
- r = 0 === i && void 0 === n ? t : e(r, t, i)
- })), r
- },
- xr = rr,
- Er = function (t, e, n) {
- var r = n,
- i = !1;
- return rr(t, (function (t, o, s, a, u) {
- r = !1 === i && void 0 === n ? t : e(r, t, o, s, a, u), i = !0
- })), r
- },
- br = Object.defineProperty({
- coordAll: or,
- coordEach: sr,
- coordReduce: ar,
- featureEach: ur,
- featureReduce: lr,
- findPoint: cr,
- findSegment: hr,
- flattenEach: pr,
- flattenReduce: fr,
- geomEach: gr,
- geomReduce: dr,
- lineEach: yr,
- lineReduce: vr,
- propEach: _r,
- propReduce: mr,
- segmentEach: xr,
- segmentReduce: Er
- }, "__esModule", {
- value: !0
- });
- function wr(t) {
- var e = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
- return br.coordEach(t, (function (t) {
- e[0] > t[0] && (e[0] = t[0]), e[1] > t[1] && (e[1] = t[1]), e[2] < t[0] && (e[2] = t[0]), e[3] < t[1] && (e[3] = t[1])
- })), e
- }
- wr.default = wr;
- var Ir = wr,
- Nr = Object.defineProperty({
- default: Ir
- }, "__esModule", {
- value: !0
- }).default,
- Sr = br.featureEach,
- Cr = (br.coordEach, Kn.polygon, Kn.featureCollection);
- function Pr(t) {
- var e = Nt(t);
- return e.insert = function (t) {
- if ("Feature" !== t.type) throw new Error("invalid feature");
- return t.bbox = t.bbox ? t.bbox : Nr(t), Nt.prototype.insert.call(this, t)
- }, e.load = function (t) {
- var e = [];
- return Array.isArray(t) ? t.forEach((function (t) {
- if ("Feature" !== t.type) throw new Error("invalid features");
- t.bbox = t.bbox ? t.bbox : Nr(t), e.push(t)
- })) : Sr(t, (function (t) {
- if ("Feature" !== t.type) throw new Error("invalid features");
- t.bbox = t.bbox ? t.bbox : Nr(t), e.push(t)
- })), Nt.prototype.load.call(this, e)
- }, e.remove = function (t, e) {
- if ("Feature" !== t.type) throw new Error("invalid feature");
- return t.bbox = t.bbox ? t.bbox : Nr(t), Nt.prototype.remove.call(this, t, e)
- }, e.clear = function () {
- return Nt.prototype.clear.call(this)
- }, e.search = function (t) {
- var e = Nt.prototype.search.call(this, this.toBBox(t));
- return Cr(e)
- }, e.collides = function (t) {
- return Nt.prototype.collides.call(this, this.toBBox(t))
- }, e.all = function () {
- var t = Nt.prototype.all.call(this);
- return Cr(t)
- }, e.toJSON = function () {
- return Nt.prototype.toJSON.call(this)
- }, e.fromJSON = function (t) {
- return Nt.prototype.fromJSON.call(this, t)
- }, e.toBBox = function (t) {
- var e;
- if (t.bbox) e = t.bbox;
- else if (Array.isArray(t) && 4 === t.length) e = t;
- else if (Array.isArray(t) && 6 === t.length) e = [t[0], t[1], t[3], t[4]];
- else if ("Feature" === t.type) e = Nr(t);
- else {
- if ("FeatureCollection" !== t.type) throw new Error("invalid geojson");
- e = Nr(t)
- }
- return {
- minX: e[0],
- minY: e[1],
- maxX: e[2],
- maxY: e[3]
- }
- }, e
- }
- var Mr = Pr,
- Lr = Pr;
- function Or(t, e) {
- var n = {},
- r = [];
- if ("LineString" === t.type && (t = o(t)), "LineString" === e.type && (e = o(e)), "Feature" === t.type && "Feature" === e.type && null !== t.geometry && null !== e.geometry && "LineString" === t.geometry.type && "LineString" === e.geometry.type && 2 === t.geometry.coordinates.length && 2 === e.geometry.coordinates.length) {
- var i = Rr(t, e);
- return i && r.push(i), f(r)
- }
- var s = Mr();
- return s.load(Zn(e)), F(Zn(t), (function (t) {
- F(s.search(t), (function (e) {
- var i = Rr(t, e);
- if (i) {
- var o = Q(i).join(",");
- n[o] || (n[o] = !0, r.push(i))
- }
- }))
- })), f(r)
- }
- function Rr(t, e) {
- var n = Q(t),
- r = Q(e);
- if (2 !== n.length) throw new Error("<intersects> line1 must only contain 2 coordinates");
- if (2 !== r.length) throw new Error("<intersects> line2 must only contain 2 coordinates");
- var i = n[0][0],
- o = n[0][1],
- s = n[1][0],
- u = n[1][1],
- l = r[0][0],
- c = r[0][1],
- h = r[1][0],
- p = r[1][1],
- f = (p - c) * (s - i) - (h - l) * (u - o),
- g = (h - l) * (o - c) - (p - c) * (i - l),
- d = (s - i) * (o - c) - (u - o) * (i - l);
- if (0 === f) return null;
- var y = g / f,
- v = d / f;
- return y >= 0 && y <= 1 && v >= 0 && v <= 1 ? a([i + y * (s - i), o + y * (u - o)]) : null
- }
- function Tr(t, e, n) {
- void 0 === n && (n = {});
- var r = a([1 / 0, 1 / 0], {
- dist: 1 / 0
- }),
- i = 0;
- return z(t, (function (t) {
- for (var o = Q(t), s = 0; s < o.length - 1; s++) {
- var u = a(o[s]);
- u.properties.dist = me(e, u, n);
- var l = a(o[s + 1]);
- l.properties.dist = me(e, l, n);
- var c = me(u, l, n),
- p = Math.max(u.properties.dist, l.properties.dist),
- f = mn(u, l),
- g = vn(e, p, f + 90, n),
- d = vn(e, p, f - 90, n),
- y = Or(h([g.geometry.coordinates, d.geometry.coordinates]), h([u.geometry.coordinates, l.geometry.coordinates])),
- v = null;
- y.features.length > 0 && ((v = y.features[0]).properties.dist = me(e, v, n), v.properties.location = i + me(u, v, n)), u.properties.dist < r.properties.dist && ((r = u).properties.index = s, r.properties.location = i), l.properties.dist < r.properties.dist && ((r = l).properties.index = s + 1, r.properties.location = i + c), v && v.properties.dist < r.properties.dist && ((r = v).properties.index = s), i += c
- }
- })), r
- }
- function Ar(t, n, r) {
- void 0 === r && (r = {});
- var i = K(t),
- o = K(n);
- return o[0] += o[0] - i[0] > 180 ? -360 : i[0] - o[0] > 180 ? 360 : 0, N(function (t, n, r) {
- var i = r = void 0 === r ? e : Number(r),
- o = t[1] * Math.PI / 180,
- s = n[1] * Math.PI / 180,
- a = s - o,
- u = Math.abs(n[0] - t[0]) * Math.PI / 180;
- u > Math.PI && (u -= 2 * Math.PI);
- var l = Math.log(Math.tan(s / 2 + Math.PI / 4) / Math.tan(o / 2 + Math.PI / 4)),
- c = Math.abs(l) > 1e-11 ? a / l : Math.cos(o);
- return Math.sqrt(a * a + c * c * u * u) * i
- }(i, o), "meters", r.units)
- }
- function Dr(t, e, n) {
- if (void 0 === n && (n = {}), n.method || (n.method = "geodesic"), n.units || (n.units = "kilometers"), !t) throw new Error("pt is required");
- if (Array.isArray(t) ? t = a(t) : "Point" === t.type ? t = o(t) : et(t, "Point", "point"), !e) throw new Error("line is required");
- Array.isArray(e) ? e = h(e) : "LineString" === e.type ? e = o(e) : et(e, "LineString", "line");
- var r = 1 / 0,
- i = t.geometry.coordinates;
- return U(e, (function (t) {
- var e = t.geometry.coordinates[0],
- o = t.geometry.coordinates[1],
- s = function (t, e, n, r) {
- var i = [n[0] - e[0], n[1] - e[1]],
- o = Fr([t[0] - e[0], t[1] - e[1]], i);
- if (o <= 0) return kr(t, e, {
- method: r.method,
- units: "degrees"
- });
- var s = Fr(i, i);
- if (s <= o) return kr(t, n, {
- method: r.method,
- units: "degrees"
- });
- var a = o / s,
- u = [e[0] + a * i[0], e[1] + a * i[1]];
- return kr(t, u, {
- method: r.method,
- units: "degrees"
- })
- }(i, e, o, n);
- s < r && (r = s)
- })), N(r, "degrees", n.units)
- }
- function Fr(t, e) {
- return t[0] * e[0] + t[1] * e[1]
- }
- function kr(t, e, n) {
- return "planar" === n.method ? Ar(t, e, n) : me(t, e, n)
- }
- function Gr(t, e, n, r, i, o, s, a) {
- var u, l, c, h, p = {
- x: null,
- y: null,
- onLine1: !1,
- onLine2: !1
- };
- return 0 === (u = (a - o) * (n - t) - (s - i) * (r - e)) ? null !== p.x && null !== p.y && p : (h = (n - t) * (l = e - o) - (r - e) * (c = t - i), l = ((s - i) * l - (a - o) * c) / u, c = h / u, p.x = t + l * (n - t), p.y = e + l * (r - e), l >= 0 && l <= 1 && (p.onLine1 = !0), c >= 0 && c <= 1 && (p.onLine2 = !0), !(!p.onLine1 || !p.onLine2) && [p.x, p.y])
- }
- function qr(t) {
- for (var e = function (t) {
- if ("FeatureCollection" !== t.type) return "Feature" !== t.type ? f([o(t)]) : f([t]);
- return t
- }(t), n = xn(e), r = !1, i = 0; !r && i < e.features.length;) {
- var s, u = e.features[i].geometry,
- l = !1;
- if ("Point" === u.type) n.geometry.coordinates[0] === u.coordinates[0] && n.geometry.coordinates[1] === u.coordinates[1] && (r = !0);
- else if ("MultiPoint" === u.type) {
- var c = !1;
- for (s = 0; !c && s < u.coordinates.length;) n.geometry.coordinates[0] === u.coordinates[s][0] && n.geometry.coordinates[1] === u.coordinates[s][1] && (r = !0, c = !0), s++
- } else if ("LineString" === u.type)
- for (s = 0; !l && s < u.coordinates.length - 1;) Br(n.geometry.coordinates[0], n.geometry.coordinates[1], u.coordinates[s][0], u.coordinates[s][1], u.coordinates[s + 1][0], u.coordinates[s + 1][1]) && (l = !0, r = !0), s++;
- else if ("MultiLineString" === u.type)
- for (var h = 0; h < u.coordinates.length;) {
- l = !1, s = 0;
- for (var p = u.coordinates[h]; !l && s < p.length - 1;) Br(n.geometry.coordinates[0], n.geometry.coordinates[1], p[s][0], p[s][1], p[s + 1][0], p[s + 1][1]) && (l = !0, r = !0), s++;
- h++
- } else "Polygon" !== u.type && "MultiPolygon" !== u.type || ye(n, u) && (r = !0);
- i++
- }
- if (r) return n;
- var g = f([]);
- for (i = 0; i < e.features.length; i++) g.features = g.features.concat(bn(e.features[i]).features);
- return a(Jn(n, g).geometry.coordinates)
- }
- function Br(t, e, n, r, i, o) {
- return Math.sqrt((i - n) * (i - n) + (o - r) * (o - r)) === Math.sqrt((t - n) * (t - n) + (e - r) * (e - r)) + Math.sqrt((i - t) * (i - t) + (o - e) * (o - e))
- }
- Mr.default = Lr;
- var zr = 6378137;
- function jr(t) {
- return B(t, (function (t, e) {
- return t + function (t) {
- var e, n = 0;
- switch (t.type) {
- case "Polygon":
- return Ur(t.coordinates);
- case "MultiPolygon":
- for (e = 0; e < t.coordinates.length; e++) n += Ur(t.coordinates[e]);
- return n;
- case "Point":
- case "MultiPoint":
- case "LineString":
- case "MultiLineString":
- return 0
- }
- return 0
- }(e)
- }), 0)
- }
- function Ur(t) {
- var e = 0;
- if (t && t.length > 0) {
- e += Math.abs(Vr(t[0]));
- for (var n = 1; n < t.length; n++) e -= Math.abs(Vr(t[n]))
- }
- return e
- }
- function Vr(t) {
- var e, n, r, i, o, s, a = 0,
- u = t.length;
- if (u > 2) {
- for (s = 0; s < u; s++) s === u - 2 ? (r = u - 2, i = u - 1, o = 0) : s === u - 1 ? (r = u - 1, i = 0, o = 1) : (r = s, i = s + 1, o = s + 2), e = t[r], n = t[i], a += (Xr(t[o][0]) - Xr(e[0])) * Math.sin(Xr(n[1]));
- a = a * zr * zr / 2
- }
- return a
- }
- function Xr(t) {
- return t * Math.PI / 180
- }
- function Yr(t, e) {
- return void 0 === e && (e = {}), V(t, (function (t, n) {
- var r = n.geometry.coordinates;
- return t + me(r[0], r[1], e)
- }), 0)
- }
- function Hr(t, e, n, r) {
- if (!P(r = r || {})) throw new Error("options is invalid");
- var i, o = [];
- if ("Feature" === t.type) i = t.geometry.coordinates;
- else {
- if ("LineString" !== t.type) throw new Error("input must be a LineString Feature or Geometry");
- i = t.coordinates
- }
- for (var s, a, u, l = i.length, c = 0, p = 0; p < i.length && !(e >= c && p === i.length - 1); p++) {
- if (c > e && 0 === o.length) {
- if (!(s = e - c)) return o.push(i[p]), h(o);
- a = mn(i[p], i[p - 1]) - 180, u = vn(i[p], s, a, r), o.push(u.geometry.coordinates)
- }
- if (c >= n) return (s = n - c) ? (a = mn(i[p], i[p - 1]) - 180, u = vn(i[p], s, a, r), o.push(u.geometry.coordinates), h(o)) : (o.push(i[p]), h(o));
- if (c >= e && o.push(i[p]), p === i.length - 1) return h(o);
- c += me(i[p], i[p + 1], r)
- }
- if (c < e && i.length === l) throw new Error("Start position is beyond line");
- var f = i[i.length - 1];
- return h([f, f])
- }
- function Wr(t, e, n) {
- void 0 === n && (n = {});
- for (var r = K(t), i = Q(e), o = 0; o < i.length - 1; o++) {
- var s = !1;
- if (n.ignoreEndVertices && (0 === o && (s = "start"), o === i.length - 2 && (s = "end"), 0 === o && o + 1 === i.length - 1 && (s = "both")), Jr(i[o], i[o + 1], r, s, void 0 === n.epsilon ? null : n.epsilon)) return !0
- }
- return !1
- }
- function Jr(t, e, n, r, i) {
- var o = n[0],
- s = n[1],
- a = t[0],
- u = t[1],
- l = e[0],
- c = e[1],
- h = l - a,
- p = c - u,
- f = (n[0] - a) * p - (n[1] - u) * h;
- if (null !== i) {
- if (Math.abs(f) > i) return !1
- } else if (0 !== f) return !1;
- return r ? "start" === r ? Math.abs(h) >= Math.abs(p) ? h > 0 ? a < o && o <= l : l <= o && o < a : p > 0 ? u < s && s <= c : c <= s && s < u : "end" === r ? Math.abs(h) >= Math.abs(p) ? h > 0 ? a <= o && o < l : l < o && o <= a : p > 0 ? u <= s && s < c : c < s && s <= u : "both" === r && (Math.abs(h) >= Math.abs(p) ? h > 0 ? a < o && o < l : l < o && o < a : p > 0 ? u < s && s < c : c < s && s < u) : Math.abs(h) >= Math.abs(p) ? h > 0 ? a <= o && o <= l : l <= o && o <= a : p > 0 ? u <= s && s <= c : c <= s && s <= u
- }
- function Zr(t, e) {
- var n = rt(t),
- r = rt(e),
- i = n.type,
- o = r.type;
- switch (i) {
- case "Point":
- switch (o) {
- case "MultiPoint":
- return function (t, e) {
- var n, r = !1;
- for (n = 0; n < e.coordinates.length; n++)
- if (Qr(e.coordinates[n], t.coordinates)) {
- r = !0;
- break
- } return r
- }(n, r);
- case "LineString":
- return Wr(n, r, {
- ignoreEndVertices: !0
- });
- case "Polygon":
- case "MultiPolygon":
- return ye(n, r, {
- ignoreBoundary: !0
- });
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- case "MultiPoint":
- switch (o) {
- case "MultiPoint":
- return function (t, e) {
- for (var n = 0; n < t.coordinates.length; n++) {
- for (var r = !1, i = 0; i < e.coordinates.length; i++) Qr(t.coordinates[n], e.coordinates[i]) && (r = !0);
- if (!r) return !1
- }
- return !0
- }(n, r);
- case "LineString":
- return function (t, e) {
- for (var n = !1, r = 0; r < t.coordinates.length; r++) {
- if (!Wr(t.coordinates[r], e)) return !1;
- n || (n = Wr(t.coordinates[r], e, {
- ignoreEndVertices: !0
- }))
- }
- return n
- }(n, r);
- case "Polygon":
- case "MultiPolygon":
- return function (t, e) {
- for (var n = !0, r = !1, i = 0; i < t.coordinates.length; i++) {
- if (!(r = ye(t.coordinates[1], e))) {
- n = !1;
- break
- }
- r = ye(t.coordinates[1], e, {
- ignoreBoundary: !0
- })
- }
- return n && r
- }(n, r);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- case "LineString":
- switch (o) {
- case "LineString":
- return function (t, e) {
- for (var n = 0; n < t.coordinates.length; n++)
- if (!Wr(t.coordinates[n], e)) return !1;
- return !0
- }(n, r);
- case "Polygon":
- case "MultiPolygon":
- return function (t, e) {
- var n = Z(e),
- r = Z(t);
- if (!Kr(n, r)) return !1;
- for (var i = !1, o = 0; o < t.coordinates.length - 1; o++) {
- if (!ye(t.coordinates[o], e)) return !1;
- if (i || (i = ye(t.coordinates[o], e, {
- ignoreBoundary: !0
- })), !i) i = ye($r(t.coordinates[o], t.coordinates[o + 1]), e, {
- ignoreBoundary: !0
- })
- }
- return i
- }(n, r);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- case "Polygon":
- switch (o) {
- case "Polygon":
- case "MultiPolygon":
- return function (t, e) {
- var n = Z(t);
- if (!Kr(Z(e), n)) return !1;
- for (var r = 0; r < t.coordinates[0].length; r++)
- if (!ye(t.coordinates[0][r], e)) return !1;
- return !0
- }(n, r);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- default:
- throw new Error("feature1 " + i + " geometry not supported")
- }
- }
- function Kr(t, e) {
- return !(t[0] > e[0]) && (!(t[2] < e[2]) && (!(t[1] > e[1]) && !(t[3] < e[3])))
- }
- function Qr(t, e) {
- return t[0] === e[0] && t[1] === e[1]
- }
- function $r(t, e) {
- return [(t[0] + e[0]) / 2, (t[1] + e[1]) / 2]
- }
- function ti(t, e, n) {
- void 0 === n && (n = {}), n.mask && !n.units && (n.units = "kilometers");
- for (var r = [], i = t[0], o = t[1], s = t[2], u = t[3], l = e / me([i, o], [s, o], n) * (s - i), c = e / me([i, o], [i, u], n) * (u - o), h = s - i, p = u - o, g = Math.floor(h / l), d = (p - Math.floor(p / c) * c) / 2, y = i + (h - g * l) / 2; y <= s;) {
- for (var v = o + d; v <= u;) {
- var _ = a([y, v], n.properties);
- n.mask ? Zr(_, n.mask) && r.push(_) : r.push(_), v += c
- }
- y += l
- }
- return f(r)
- }
- function ei(t, e) {
- void 0 === e && (e = {});
- var n = e.precision,
- r = e.coordinates,
- i = e.mutate;
- if (n = null == n || isNaN(n) ? 6 : n, r = null == r || isNaN(r) ? 3 : r, !t) throw new Error("<geojson> is required");
- if ("number" != typeof n) throw new Error("<precision> must be a number");
- if ("number" != typeof r) throw new Error("<coordinates> must be a number");
- !1 !== i && void 0 !== i || (t = JSON.parse(JSON.stringify(t)));
- var o = Math.pow(10, n);
- return R(t, (function (t) {
- ! function (t, e, n) {
- t.length > n && t.splice(n, t.length);
- for (var r = 0; r < t.length; r++) t[r] = Math.round(t[r] * e) / e
- }(t, o, r)
- })), t
- }
- function ni(t) {
- if (!t) throw new Error("geojson is required");
- var e = [];
- return z(t, (function (t) {
- e.push(t)
- })), f(e)
- }
- function ri(t, e, n) {
- if ("Polygon" !== t.geometry.type) throw new Error("The input feature must be a Polygon");
- void 0 === n && (n = 1);
- var r = t.geometry.coordinates,
- i = [],
- o = {};
- if (n) {
- for (var s = [], a = 0; a < r.length; a++)
- for (var u = 0; u < r[a].length - 1; u++) s.push(d(a, u));
- var l = Nt();
- l.load(s)
- }
- for (var c = 0; c < r.length; c++)
- for (var h = 0; h < r[c].length - 1; h++) {
- if (n) l.search(d(c, h)).forEach((function (t) {
- var e = t.ring,
- n = t.edge;
- g(c, h, e, n)
- }));
- else
- for (var p = 0; p < r.length; p++)
- for (var f = 0; f < r[p].length - 1; f++) g(c, h, p, f)
- }
- return e || (i = {
- type: "Feature",
- geometry: {
- type: "MultiPoint",
- coordinates: i
- }
- }), i;
- function g(t, n, s, a) {
- var u, l, c = r[t][n],
- h = r[t][n + 1],
- p = r[s][a],
- f = r[s][a + 1],
- g = function (t, e, n, r) {
- if (ii(t, n) || ii(t, r) || ii(e, n) || ii(r, n)) return null;
- var i = t[0],
- o = t[1],
- s = e[0],
- a = e[1],
- u = n[0],
- l = n[1],
- c = r[0],
- h = r[1],
- p = (i - s) * (l - h) - (o - a) * (u - c);
- return 0 === p ? null : [((i * a - o * s) * (u - c) - (i - s) * (u * h - l * c)) / p, ((i * a - o * s) * (l - h) - (o - a) * (u * h - l * c)) / p]
- }(c, h, p, f);
- if (null !== g && (u = h[0] !== c[0] ? (g[0] - c[0]) / (h[0] - c[0]) : (g[1] - c[1]) / (h[1] - c[1]), l = f[0] !== p[0] ? (g[0] - p[0]) / (f[0] - p[0]) : (g[1] - p[1]) / (f[1] - p[1]), !(u >= 1 || u <= 0 || l >= 1 || l <= 0))) {
- var d = g,
- y = !o[d];
- y && (o[d] = !0), e ? i.push(e(g, t, n, c, h, u, s, a, p, f, l, y)) : i.push(g)
- }
- }
- function d(t, e) {
- var n, i, o, s, a = r[t][e],
- u = r[t][e + 1];
- return a[0] < u[0] ? (n = a[0], i = u[0]) : (n = u[0], i = a[0]), a[1] < u[1] ? (o = a[1], s = u[1]) : (o = u[1], s = a[1]), {
- minX: n,
- minY: o,
- maxX: i,
- maxY: s,
- ring: t,
- edge: e
- }
- }
- }
- function ii(t, e) {
- if (!t || !e) return !1;
- if (t.length !== e.length) return !1;
- for (var n = 0, r = t.length; n < r; n++)
- if (t[n] instanceof Array && e[n] instanceof Array) {
- if (!ii(t[n], e[n])) return !1
- } else if (t[n] !== e[n]) return !1;
- return !0
- }
- function oi(t) {
- if ("Feature" != t.type) throw new Error("The input must a geojson object of type Feature");
- if (void 0 === t.geometry || null == t.geometry) throw new Error("The input must a geojson object with a non-empty geometry");
- if ("Polygon" != t.geometry.type) throw new Error("The input must be a geojson Polygon");
- for (var e = t.geometry.coordinates.length, n = [], r = 0; r < e; r++) {
- var i = t.geometry.coordinates[r];
- ci(i[0], i[i.length - 1]) || i.push(i[0]), n.push.apply(n, i.slice(0, i.length - 1))
- }
- if (! function (t) {
- for (var e = {}, n = 1, r = 0, i = t.length; r < i; ++r) {
- if (Object.prototype.hasOwnProperty.call(e, t[r])) {
- n = 0;
- break
- }
- e[t[r]] = 1
- }
- return n
- }(n)) throw new Error("The input polygon may not have duplicate vertices (except for the first and last vertex of each ring)");
- var o = n.length,
- s = ri(t, (function (t, e, n, r, i, o, s, a, u, l, c, h) {
- return [t, e, n, r, i, o, s, a, u, l, c, h]
- })),
- a = s.length;
- if (0 == a) {
- var u = [];
- for (r = 0; r < e; r++) u.push(l([t.geometry.coordinates[r]], {
- parent: -1,
- winding: li(t.geometry.coordinates[r])
- }));
- var c = f(u);
- return G(), q(), c
- }
- var h = [],
- p = [];
- for (r = 0; r < e; r++) {
- h.push([]);
- for (var g = 0; g < t.geometry.coordinates[r].length - 1; g++) h[r].push([new si(t.geometry.coordinates[r][hi(g + 1, t.geometry.coordinates[r].length - 1)], 1, [r, g], [r, hi(g + 1, t.geometry.coordinates[r].length - 1)], void 0)]), p.push(new ai(t.geometry.coordinates[r][g], [r, hi(g - 1, t.geometry.coordinates[r].length - 1)], [r, g], void 0, void 0, !1, !0))
- }
- for (r = 0; r < a; r++) h[s[r][1]][s[r][2]].push(new si(s[r][0], s[r][5], [s[r][1], s[r][2]], [s[r][6], s[r][7]], void 0)), s[r][11] && p.push(new ai(s[r][0], [s[r][1], s[r][2]], [s[r][6], s[r][7]], void 0, void 0, !0, !0));
- var d = p.length;
- for (r = 0; r < h.length; r++)
- for (g = 0; g < h[r].length; g++) h[r][g].sort((function (t, e) {
- return t.param < e.param ? -1 : 1
- }));
- var y = [];
- for (r = 0; r < d; r++) y.push({
- minX: p[r].coord[0],
- minY: p[r].coord[1],
- maxX: p[r].coord[0],
- maxY: p[r].coord[1],
- index: r
- });
- var v = Nt();
- v.load(y);
- for (r = 0; r < h.length; r++)
- for (g = 0; g < h[r].length; g++)
- for (var _ = 0; _ < h[r][g].length; _++) {
- x = _ == h[r][g].length - 1 ? h[r][hi(g + 1, t.geometry.coordinates[r].length - 1)][0].coord : h[r][g][_ + 1].coord;
- var m = v.search({
- minX: x[0],
- minY: x[1],
- maxX: x[0],
- maxY: x[1]
- })[0];
- h[r][g][_].nxtIsectAlongEdgeIn = m.index
- }
- for (r = 0; r < h.length; r++)
- for (g = 0; g < h[r].length; g++)
- for (_ = 0; _ < h[r][g].length; _++) {
- var x = h[r][g][_].coord,
- E = (m = v.search({
- minX: x[0],
- minY: x[1],
- maxX: x[0],
- maxY: x[1]
- })[0]).index;
- E < o ? p[E].nxtIsectAlongRingAndEdge2 = h[r][g][_].nxtIsectAlongEdgeIn : ci(p[E].ringAndEdge1, h[r][g][_].ringAndEdgeIn) ? p[E].nxtIsectAlongRingAndEdge1 = h[r][g][_].nxtIsectAlongEdgeIn : p[E].nxtIsectAlongRingAndEdge2 = h[r][g][_].nxtIsectAlongEdgeIn
- }
- var b = [];
- for (r = 0, g = 0; g < e; g++) {
- var w = r;
- for (_ = 0; _ < t.geometry.coordinates[g].length - 1; _++) p[r].coord[0] < p[w].coord[0] && (w = r), r++;
- var I = p[w].nxtIsectAlongRingAndEdge2;
- for (_ = 0; _ < p.length; _++)
- if (p[_].nxtIsectAlongRingAndEdge1 == w || p[_].nxtIsectAlongRingAndEdge2 == w) {
- var N = _;
- break
- } var S = ui([p[N].coord, p[w].coord, p[I].coord], !0) ? 1 : -1;
- b.push({
- isect: w,
- parent: -1,
- winding: S
- })
- }
- b.sort((function (t, e) {
- return p[t.isect].coord > p[e.isect].coord ? -1 : 1
- }));
- for (u = []; b.length > 0;) {
- var C = b.pop(),
- P = C.isect,
- M = C.parent,
- L = C.winding,
- O = u.length,
- R = [p[P].coord],
- T = P;
- if (p[P].ringAndEdge1Walkable) var A = p[P].ringAndEdge1,
- D = p[P].nxtIsectAlongRingAndEdge1;
- else A = p[P].ringAndEdge2, D = p[P].nxtIsectAlongRingAndEdge2;
- for (; !ci(p[P].coord, p[D].coord);) {
- R.push(p[D].coord);
- var F = void 0;
- for (r = 0; r < b.length; r++)
- if (b[r].isect == D) {
- F = r;
- break
- } if (null != F && b.splice(F, 1), ci(A, p[D].ringAndEdge1)) {
- if (A = p[D].ringAndEdge2, p[D].ringAndEdge2Walkable = !1, p[D].ringAndEdge1Walkable) {
- var k = {
- isect: D
- };
- ui([p[T].coord, p[D].coord, p[p[D].nxtIsectAlongRingAndEdge2].coord], 1 == L) ? (k.parent = M, k.winding = -L) : (k.parent = O, k.winding = L), b.push(k)
- }
- T = D, D = p[D].nxtIsectAlongRingAndEdge2
- } else {
- if (A = p[D].ringAndEdge1, p[D].ringAndEdge1Walkable = !1, p[D].ringAndEdge2Walkable) {
- k = {
- isect: D
- };
- ui([p[T].coord, p[D].coord, p[p[D].nxtIsectAlongRingAndEdge1].coord], 1 == L) ? (k.parent = M, k.winding = -L) : (k.parent = O, k.winding = L), b.push(k)
- }
- T = D, D = p[D].nxtIsectAlongRingAndEdge1
- }
- }
- R.push(p[D].coord), u.push(l([R], {
- index: O,
- parent: M,
- winding: L,
- netWinding: void 0
- }))
- }
- c = f(u);
- function G() {
- for (var t = [], e = 0; e < c.features.length; e++) - 1 == c.features[e].properties.parent && t.push(e);
- if (t.length > 1)
- for (e = 0; e < t.length; e++) {
- for (var n = -1, r = 0; r < c.features.length; r++) t[e] != r && ye(c.features[t[e]].geometry.coordinates[0][0], c.features[r], {
- ignoreBoundary: !0
- }) && jr(c.features[r]) < Infinity && (n = r);
- c.features[t[e]].properties.parent = n
- }
- }
- function q() {
- for (var t = 0; t < c.features.length; t++)
- if (-1 == c.features[t].properties.parent) {
- var e = c.features[t].properties.winding;
- c.features[t].properties.netWinding = e, B(t, e)
- }
- }
- function B(t, e) {
- for (var n = 0; n < c.features.length; n++)
- if (c.features[n].properties.parent == t) {
- var r = e + c.features[n].properties.winding;
- c.features[n].properties.netWinding = r, B(n, r)
- }
- }
- return G(), q(), c
- }
- var si = function (t, e, n, r, i) {
- this.coord = t, this.param = e, this.ringAndEdgeIn = n, this.ringAndEdgeOut = r, this.nxtIsectAlongEdgeIn = i
- },
- ai = function (t, e, n, r, i, o, s) {
- this.coord = t, this.ringAndEdge1 = e, this.ringAndEdge2 = n, this.nxtIsectAlongRingAndEdge1 = r, this.nxtIsectAlongRingAndEdge2 = i, this.ringAndEdge1Walkable = o, this.ringAndEdge2Walkable = s
- };
- function ui(t, e) {
- if (void 0 === e && (e = !0), 3 != t.length) throw new Error("This function requires an array of three points [x,y]");
- return (t[1][0] - t[0][0]) * (t[2][1] - t[0][1]) - (t[1][1] - t[0][1]) * (t[2][0] - t[0][0]) >= 0 == e
- }
- function li(t) {
- for (var e = 0, n = 0; n < t.length - 1; n++) t[n][0] < t[e][0] && (e = n);
- if (ui([t[hi(e - 1, t.length - 1)], t[e], t[hi(e + 1, t.length - 1)]], !0)) var r = 1;
- else r = -1;
- return r
- }
- function ci(t, e) {
- if (!t || !e) return !1;
- if (t.length != e.length) return !1;
- for (var n = 0, r = t.length; n < r; n++)
- if (t[n] instanceof Array && e[n] instanceof Array) {
- if (!ci(t[n], e[n])) return !1
- } else if (t[n] != e[n]) return !1;
- return !0
- }
- function hi(t, e) {
- return (t % e + e) % e
- }
- var pi = Math.PI / 180,
- fi = 180 / Math.PI,
- gi = function (t, e) {
- this.lon = t, this.lat = e, this.x = pi * t, this.y = pi * e
- };
- gi.prototype.view = function () {
- return String(this.lon).slice(0, 4) + "," + String(this.lat).slice(0, 4)
- }, gi.prototype.antipode = function () {
- var t = -1 * this.lat,
- e = this.lon < 0 ? 180 + this.lon : -1 * (180 - this.lon);
- return new gi(e, t)
- };
- var di = function () {
- this.coords = [], this.length = 0
- };
- di.prototype.move_to = function (t) {
- this.length++, this.coords.push(t)
- };
- var yi = function (t) {
- this.properties = t || {}, this.geometries = []
- };
- yi.prototype.json = function () {
- if (this.geometries.length <= 0) return {
- geometry: {
- type: "LineString",
- coordinates: null
- },
- type: "Feature",
- properties: this.properties
- };
- if (1 === this.geometries.length) return {
- geometry: {
- type: "LineString",
- coordinates: this.geometries[0].coords
- },
- type: "Feature",
- properties: this.properties
- };
- for (var t = [], e = 0; e < this.geometries.length; e++) t.push(this.geometries[e].coords);
- return {
- geometry: {
- type: "MultiLineString",
- coordinates: t
- },
- type: "Feature",
- properties: this.properties
- }
- }, yi.prototype.wkt = function () {
- for (var t = "", e = "LINESTRING(", n = function (t) {
- e += t[0] + " " + t[1] + ","
- }, r = 0; r < this.geometries.length; r++) {
- if (0 === this.geometries[r].coords.length) return "LINESTRING(empty)";
- this.geometries[r].coords.forEach(n), t += e.substring(0, e.length - 1) + ")"
- }
- return t
- };
- var vi = function (t, e, n) {
- if (!t || void 0 === t.x || void 0 === t.y) throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");
- if (!e || void 0 === e.x || void 0 === e.y) throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");
- this.start = new gi(t.x, t.y), this.end = new gi(e.x, e.y), this.properties = n || {};
- var r = this.start.x - this.end.x,
- i = this.start.y - this.end.y,
- o = Math.pow(Math.sin(i / 2), 2) + Math.cos(this.start.y) * Math.cos(this.end.y) * Math.pow(Math.sin(r / 2), 2);
- if (this.g = 2 * Math.asin(Math.sqrt(o)), this.g === Math.PI) throw new Error("it appears " + t.view() + " and " + e.view() + " are 'antipodal', e.g diametrically opposite, thus there is no single route but rather infinite");
- if (isNaN(this.g)) throw new Error("could not calculate great circle between " + t + " and " + e)
- };
- function _i(t, e) {
- var n = [],
- r = Mr();
- return z(e, (function (e) {
- if (n.forEach((function (t, e) {
- t.id = e
- })), n.length) {
- var i = r.search(e);
- if (i.features.length) {
- var o = xi(e, i);
- n = n.filter((function (t) {
- return t.id !== o.id
- })), r.remove(o), F(mi(o, e), (function (t) {
- n.push(t), r.insert(t)
- }))
- }
- } else(n = mi(t, e).features).forEach((function (t) {
- t.bbox || (t.bbox = yn(Z(t)))
- })), r.load(f(n))
- })), f(n)
- }
- function mi(t, e) {
- var n = [],
- r = Q(t)[0],
- i = Q(t)[t.geometry.coordinates.length - 1];
- if (Ei(r, K(e)) || Ei(i, K(e))) return f([t]);
- var o = Mr(),
- s = Zn(t);
- o.load(s);
- var a = o.search(e);
- if (!a.features.length) return f([t]);
- var u = xi(e, a),
- l = k(s, (function (t, r, i) {
- var o = Q(r)[1],
- s = K(e);
- return i === u.id ? (t.push(s), n.push(h(t)), Ei(s, o) ? [s] : [s, o]) : (t.push(o), t)
- }), [r]);
- return l.length > 1 && n.push(h(l)), f(n)
- }
- function xi(t, e) {
- if (!e.features.length) throw new Error("lines must contain features");
- if (1 === e.features.length) return e.features[0];
- var n, r = 1 / 0;
- return F(e, (function (e) {
- var i = Tr(e, t).properties.dist;
- i < r && (n = e, r = i)
- })), n
- }
- function Ei(t, e) {
- return t[0] === e[0] && t[1] === e[1]
- }
- function bi(t, e, n, r, i) {
- void 0 === i && (i = {});
- var o = i.steps || 64,
- s = wi(n),
- a = wi(r),
- u = Array.isArray(t) || "Feature" !== t.type ? {} : t.properties;
- if (s === a) return h(_n(t, e, i).geometry.coordinates[0], u);
- for (var l = s, c = s < a ? a : a + 360, p = l, f = [], g = 0; p < c;) f.push(vn(t, e, p, i).geometry.coordinates), p = l + 360 * ++g / o;
- return p > c && f.push(vn(t, e, c, i).geometry.coordinates), h(f, u)
- }
- function wi(t) {
- var e = t % 360;
- return e < 0 && (e += 360), e
- }
- function Ii(t, e) {
- void 0 === e && (e = {});
- var n = rt(t);
- switch (e.properties || "Feature" !== t.type || (e.properties = t.properties), n.type) {
- case "Polygon":
- return Ni(n, e);
- case "MultiPolygon":
- return function (t, e) {
- void 0 === e && (e = {});
- var n = rt(t).coordinates,
- r = e.properties ? e.properties : "Feature" === t.type ? t.properties : {},
- i = [];
- return n.forEach((function (t) {
- i.push(Si(t, r))
- })), f(i)
- }(n, e);
- default:
- throw new Error("invalid poly")
- }
- }
- function Ni(t, e) {
- return void 0 === e && (e = {}), Si(rt(t).coordinates, e.properties ? e.properties : "Feature" === t.type ? t.properties : {})
- }
- function Si(t, e) {
- return t.length > 1 ? g(t, e) : h(t[0], e)
- }
- function Ci(t, e) {
- var n, r, i;
- void 0 === e && (e = {});
- var o = e.properties,
- s = null === (n = e.autoComplete) || void 0 === n || n,
- a = null === (r = e.orderCoords) || void 0 === r || r;
- switch (null !== (i = e.mutate) && void 0 !== i && i || (t = Ie(t)), t.type) {
- case "FeatureCollection":
- var u = [];
- return t.features.forEach((function (t) {
- u.push(Q(Pi(t, {}, s, a)))
- })), y(u, o);
- default:
- return Pi(t, o, s, a)
- }
- }
- function Pi(t, e, n, r) {
- e = e || ("Feature" === t.type ? t.properties : {});
- var i = rt(t),
- o = i.coordinates,
- s = i.type;
- if (!o.length) throw new Error("line must contain coordinates");
- switch (s) {
- case "LineString":
- return n && (o = Mi(o)), l([o], e);
- case "MultiLineString":
- var a = [],
- u = 0;
- return o.forEach((function (t) {
- if (n && (t = Mi(t)), r) {
- var e = function (t) {
- var e = t[0],
- n = t[1],
- r = t[2],
- i = t[3];
- return Math.abs(e - r) * Math.abs(n - i)
- }(Z(h(t)));
- e > u ? (a.unshift(t), u = e) : a.push(t)
- } else a.push(t)
- })), l(a, e);
- default:
- throw new Error("geometry type " + s + " is not supported")
- }
- }
- function Mi(t) {
- var e = t[0],
- n = e[0],
- r = e[1],
- i = t[t.length - 1],
- o = i[0],
- s = i[1];
- return n === o && r === s || t.push(e), t
- }
- function Li(t, e) {
- var n, r, i, o, s, a, u;
- for (r = 1; r <= 8; r *= 2) {
- for (n = [], o = !(Ri(i = t[t.length - 1], e) & r), s = 0; s < t.length; s++)(u = !(Ri(a = t[s], e) & r)) !== o && n.push(Oi(i, a, r, e)), u && n.push(a), i = a, o = u;
- if (!(t = n).length) break
- }
- return n
- }
- function Oi(t, e, n, r) {
- return 8 & n ? [t[0] + (e[0] - t[0]) * (r[3] - t[1]) / (e[1] - t[1]), r[3]] : 4 & n ? [t[0] + (e[0] - t[0]) * (r[1] - t[1]) / (e[1] - t[1]), r[1]] : 2 & n ? [r[2], t[1] + (e[1] - t[1]) * (r[2] - t[0]) / (e[0] - t[0])] : 1 & n ? [r[0], t[1] + (e[1] - t[1]) * (r[0] - t[0]) / (e[0] - t[0])] : null
- }
- function Ri(t, e) {
- var n = 0;
- return t[0] < e[0] ? n |= 1 : t[0] > e[2] && (n |= 2), t[1] < e[1] ? n |= 4 : t[1] > e[3] && (n |= 8), n
- }
- function Ti(t, e) {
- for (var n = [], r = 0, i = t; r < i.length; r++) {
- var o = Li(i[r], e);
- o.length > 0 && (o[0][0] === o[o.length - 1][0] && o[0][1] === o[o.length - 1][1] || o.push(o[0]), o.length >= 4 && n.push(o))
- }
- return n
- }
- vi.prototype.interpolate = function (t) {
- var e = Math.sin((1 - t) * this.g) / Math.sin(this.g),
- n = Math.sin(t * this.g) / Math.sin(this.g),
- r = e * Math.cos(this.start.y) * Math.cos(this.start.x) + n * Math.cos(this.end.y) * Math.cos(this.end.x),
- i = e * Math.cos(this.start.y) * Math.sin(this.start.x) + n * Math.cos(this.end.y) * Math.sin(this.end.x),
- o = e * Math.sin(this.start.y) + n * Math.sin(this.end.y),
- s = fi * Math.atan2(o, Math.sqrt(Math.pow(r, 2) + Math.pow(i, 2)));
- return [fi * Math.atan2(i, r), s]
- }, vi.prototype.Arc = function (t, e) {
- var n = [];
- if (!t || t <= 2) n.push([this.start.lon, this.start.lat]), n.push([this.end.lon, this.end.lat]);
- else
- for (var r = 1 / (t - 1), i = 0; i < t; ++i) {
- var o = r * i,
- s = this.interpolate(o);
- n.push(s)
- }
- for (var a = !1, u = 0, l = e && e.offset ? e.offset : 10, c = 180 - l, h = -180 + l, p = 360 - l, f = 1; f < n.length; ++f) {
- var g = n[f - 1][0],
- d = n[f][0],
- y = Math.abs(d - g);
- y > p && (d > c && g < h || g > c && d < h) ? a = !0 : y > u && (u = y)
- }
- var v = [];
- if (a && u < l) {
- var _ = [];
- v.push(_);
- for (var m = 0; m < n.length; ++m) {
- var x = parseFloat(n[m][0]);
- if (m > 0 && Math.abs(x - n[m - 1][0]) > p) {
- var E = parseFloat(n[m - 1][0]),
- b = parseFloat(n[m - 1][1]),
- w = parseFloat(n[m][0]),
- I = parseFloat(n[m][1]);
- if (E > -180 && E < h && 180 === w && m + 1 < n.length && n[m - 1][0] > -180 && n[m - 1][0] < h) {
- _.push([-180, n[m][1]]), m++, _.push([n[m][0], n[m][1]]);
- continue
- }
- if (E > c && E < 180 && -180 === w && m + 1 < n.length && n[m - 1][0] > c && n[m - 1][0] < 180) {
- _.push([180, n[m][1]]), m++, _.push([n[m][0], n[m][1]]);
- continue
- }
- if (E < h && w > c) {
- var N = E;
- E = w, w = N;
- var S = b;
- b = I, I = S
- }
- if (E > c && w < h && (w += 360), E <= 180 && w >= 180 && E < w) {
- var C = (180 - E) / (w - E),
- P = C * I + (1 - C) * b;
- _.push([n[m - 1][0] > c ? 180 : -180, P]), (_ = []).push([n[m - 1][0] > c ? -180 : 180, P]), v.push(_)
- } else _ = [], v.push(_);
- _.push([x, n[m][1]])
- } else _.push([n[m][0], n[m][1]])
- }
- } else {
- var M = [];
- v.push(M);
- for (var L = 0; L < n.length; ++L) M.push([n[L][0], n[L][1]])
- }
- for (var O = new yi(this.properties), R = 0; R < v.length; ++R) {
- var T = new di;
- O.geometries.push(T);
- for (var A = v[R], D = 0; D < A.length; ++D) T.move_to(A[D])
- }
- return O
- };
- var Ai = Bt((function (t, e) {
- function n(t) {
- var e = [];
- for (var n in t) e.push(n);
- return e
- }(t.exports = "function" == typeof Object.keys ? Object.keys : n).shim = n
- })),
- Di = Bt((function (t, e) {
- var n = "[object Arguments]" == function () {
- return Object.prototype.toString.call(arguments)
- }();
- function r(t) {
- return "[object Arguments]" == Object.prototype.toString.call(t)
- }
- function i(t) {
- return t && "object" == typeof t && "number" == typeof t.length && Object.prototype.hasOwnProperty.call(t, "callee") && !Object.prototype.propertyIsEnumerable.call(t, "callee") || !1
- }(e = t.exports = n ? r : i).supported = r, e.unsupported = i
- })),
- Fi = Bt((function (t) {
- var e = Array.prototype.slice,
- n = t.exports = function (t, o, s) {
- return s || (s = {}), t === o || (t instanceof Date && o instanceof Date ? t.getTime() === o.getTime() : !t || !o || "object" != typeof t && "object" != typeof o ? s.strict ? t === o : t == o : function (t, o, s) {
- var a, u;
- if (r(t) || r(o)) return !1;
- if (t.prototype !== o.prototype) return !1;
- if (Di(t)) return !!Di(o) && (t = e.call(t), o = e.call(o), n(t, o, s));
- if (i(t)) {
- if (!i(o)) return !1;
- if (t.length !== o.length) return !1;
- for (a = 0; a < t.length; a++)
- if (t[a] !== o[a]) return !1;
- return !0
- }
- try {
- var l = Ai(t),
- c = Ai(o)
- } catch (t) {
- return !1
- }
- if (l.length != c.length) return !1;
- for (l.sort(), c.sort(), a = l.length - 1; a >= 0; a--)
- if (l[a] != c[a]) return !1;
- for (a = l.length - 1; a >= 0; a--)
- if (u = l[a], !n(t[u], o[u], s)) return !1;
- return typeof t == typeof o
- }(t, o, s))
- };
- function r(t) {
- return null == t
- }
- function i(t) {
- return !(!t || "object" != typeof t || "number" != typeof t.length) && ("function" == typeof t.copy && "function" == typeof t.slice && !(t.length > 0 && "number" != typeof t[0]))
- }
- }));
- function ki(t, e, n) {
- if (void 0 === n && (n = {}), !P(n = n || {})) throw new Error("options is invalid");
- var r, i = n.tolerance || 0,
- o = [],
- s = Mr(),
- a = Zn(t);
- return s.load(a), U(e, (function (t) {
- var e = !1;
- t && (F(s.search(t), (function (n) {
- if (!1 === e) {
- var o = Q(t).sort(),
- s = Q(n).sort();
- Fi(o, s) || (0 === i ? Wr(o[0], n) && Wr(o[1], n) : Tr(n, o[0]).properties.dist <= i && Tr(n, o[1]).properties.dist <= i) ? (e = !0, r = r ? Gi(r, t) : t) : (0 === i ? Wr(s[0], t) && Wr(s[1], t) : Tr(t, s[0]).properties.dist <= i && Tr(t, s[1]).properties.dist <= i) && (r = r ? Gi(r, n) : n)
- }
- })), !1 === e && r && (o.push(r), r = void 0))
- })), r && o.push(r), f(o)
- }
- function Gi(t, e) {
- var n = Q(e),
- r = Q(t),
- i = r[0],
- o = r[r.length - 1],
- s = t.geometry.coordinates;
- return Fi(n[0], i) ? s.unshift(n[1]) : Fi(n[0], o) ? s.push(n[1]) : Fi(n[1], i) ? s.unshift(n[0]) : Fi(n[1], o) && s.push(n[0]), t
- }
- function qi(t) {
- var e = t % 360;
- return e < 0 && (e += 360), e
- }
- function Bi(t, e, n) {
- var r;
- return void 0 === n && (n = {}), (r = n.final ? zi(K(e), K(t)) : zi(K(t), K(e))) > 180 ? -(360 - r) : r
- }
- function zi(t, e) {
- var n = I(t[1]),
- r = I(e[1]),
- i = I(e[0] - t[0]);
- i > Math.PI && (i -= 2 * Math.PI), i < -Math.PI && (i += 2 * Math.PI);
- var o = Math.log(Math.tan(r / 2 + Math.PI / 4) / Math.tan(n / 2 + Math.PI / 4));
- return (w(Math.atan2(i, o)) + 360) % 360
- }
- function ji(t, n, r, i) {
- void 0 === i && (i = {});
- var o = n < 0,
- s = N(Math.abs(n), i.units, "meters");
- o && (s = -Math.abs(s));
- var u = K(t),
- l = function (t, n, r, i) {
- i = void 0 === i ? e : Number(i);
- var o = n / i,
- s = t[0] * Math.PI / 180,
- a = I(t[1]),
- u = I(r),
- l = o * Math.cos(u),
- c = a + l;
- Math.abs(c) > Math.PI / 2 && (c = c > 0 ? Math.PI - c : -Math.PI - c);
- var h = Math.log(Math.tan(c / 2 + Math.PI / 4) / Math.tan(a / 2 + Math.PI / 4)),
- p = Math.abs(h) > 1e-11 ? l / h : Math.cos(a),
- f = o * Math.sin(u) / p;
- return [(180 * (s + f) / Math.PI + 540) % 360 - 180, 180 * c / Math.PI]
- }(u, s, r);
- return l[0] += l[0] - u[0] > 180 ? -360 : u[0] - l[0] > 180 ? 360 : 0, a(l, i.properties)
- }
- function Ui(t, e, n, r, i, o) {
- for (var s = 0; s < t.length; s++) {
- var a = t[s],
- u = t[s + 1];
- s === t.length - 1 && (u = t[0]), r = Xi(a, u, e), n <= 0 && r > 0 ? Xi(e, a, i) < 0 || (i = a) : n > 0 && r <= 0 && (Vi(e, a, o) || (o = a)), n = r
- }
- return [i, o]
- }
- function Vi(t, e, n) {
- return Xi(t, e, n) > 0
- }
- function Xi(t, e, n) {
- return (e[0] - t[0]) * (n[1] - t[1]) - (n[0] - t[0]) * (e[1] - t[1])
- }
- function Yi(t) {
- for (var e, n, r = Q(t), i = 0, o = 1; o < r.length;) e = n || r[0], i += ((n = r[o])[0] - e[0]) * (n[1] + e[1]), o++;
- return i > 0
- }
- function Hi(t, e) {
- switch ("Feature" === t.type ? t.geometry.type : t.type) {
- case "GeometryCollection":
- return q(t, (function (t) {
- Hi(t, e)
- })), t;
- case "LineString":
- return Wi(Q(t), e), t;
- case "Polygon":
- return Ji(Q(t), e), t;
- case "MultiLineString":
- return Q(t).forEach((function (t) {
- Wi(t, e)
- })), t;
- case "MultiPolygon":
- return Q(t).forEach((function (t) {
- Ji(t, e)
- })), t;
- case "Point":
- case "MultiPoint":
- return t
- }
- }
- function Wi(t, e) {
- Yi(t) === e && t.reverse()
- }
- function Ji(t, e) {
- Yi(t[0]) !== e && t[0].reverse();
- for (var n = 1; n < t.length; n++) Yi(t[n]) === e && t[n].reverse()
- }
- function Zi(t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n = e.zProperty || "elevation",
- r = e.flip,
- i = e.flags;
- nt(t, "Point", "input must contain Points");
- for (var o = function (t, e) {
- var n = {};
- return F(t, (function (t) {
- var e = Q(t)[1];
- n[e] || (n[e] = []), n[e].push(t)
- })), Object.keys(n).map((function (t) {
- return n[t].sort((function (t, e) {
- return Q(t)[0] - Q(e)[0]
- }))
- })).sort((function (t, n) {
- return e ? Q(t[0])[1] - Q(n[0])[1] : Q(n[0])[1] - Q(t[0])[1]
- }))
- }
- /*!
- * @license GNU Affero General Public License.
- * Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>
- * v. 1.2.0
- * https://github.com/RaumZeit/MarchingSquares.js
- *
- * MarchingSquaresJS is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MarchingSquaresJS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * As additional permission under GNU Affero General Public License version 3
- * section 7, third-party projects (personal or commercial) may distribute,
- * include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the
- * requirement that said third-party project for that reason alone becomes
- * subject to any requirement of the GNU Affero General Public License version 3.
- * Any modifications to MarchingSquaresJS, however, must be shared with the public
- * and made available.
- *
- * In summary this:
- * - allows you to use MarchingSquaresJS at no cost
- * - allows you to use MarchingSquaresJS for both personal and commercial purposes
- * - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any
- * license as long as this license notice is included
- * - enables you to keep the source code of your program that uses MarchingSquaresJS
- * undisclosed
- * - forces you to share any modifications you have made to MarchingSquaresJS,
- * e.g. bug-fixes
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with MarchingSquaresJS. If not, see <http://www.gnu.org/licenses/>.
- */
- (t, r), s = [], a = 0; a < o.length; a++) {
- for (var u = o[a], l = [], c = 0; c < u.length; c++) {
- var h = u[c];
- h.properties[n] ? l.push(h.properties[n]) : l.push(0), !0 === i && (h.properties.matrixPosition = [a, c])
- }
- s.push(l)
- }
- return s
- }
- var Ki = {
- successCallback: null,
- verbose: !1,
- polygons: !1
- },
- Qi = {};
- function $i(t, e, n, r) {
- r = r || {};
- for (var i = Object.keys(Ki), o = 0; o < i.length; o++) {
- var s = i[o],
- a = r[s];
- a = null != a ? a : Ki[s], Qi[s] = a
- }
- Qi.verbose && console.log("MarchingSquaresJS-isoBands: computing isobands for [" + e + ":" + (e + n) + "]");
- var u, l = function (t, e, n) {
- for (var r = t.length - 1, i = t[0].length - 1, o = {
- rows: r,
- cols: i,
- cells: []
- }, s = e + Math.abs(n), a = 0; a < r; ++a) {
- o.cells[a] = [];
- for (var u = 0; u < i; ++u) {
- var l = 0,
- c = t[a + 1][u],
- h = t[a + 1][u + 1],
- p = t[a][u + 1],
- f = t[a][u];
- if (!(isNaN(c) || isNaN(h) || isNaN(p) || isNaN(f))) {
- l |= c < e ? 0 : c > s ? 128 : 64, l |= h < e ? 0 : h > s ? 32 : 16, l |= p < e ? 0 : p > s ? 8 : 4;
- var g = +(l |= f < e ? 0 : f > s ? 2 : 1),
- d = 0;
- if (17 === l || 18 === l || 33 === l || 34 === l || 38 === l || 68 === l || 72 === l || 98 === l || 102 === l || 132 === l || 136 === l || 137 === l || 152 === l || 153 === l) {
- var y = (c + h + p + f) / 4;
- d = y > s ? 2 : y < e ? 0 : 1, 34 === l ? 1 === d ? l = 35 : 0 === d && (l = 136) : 136 === l ? 1 === d ? (l = 35, d = 4) : 0 === d && (l = 34) : 17 === l ? 1 === d ? (l = 155, d = 4) : 0 === d && (l = 153) : 68 === l ? 1 === d ? (l = 103, d = 4) : 0 === d && (l = 102) : 153 === l ? 1 === d && (l = 155) : 102 === l ? 1 === d && (l = 103) : 152 === l ? d < 2 && (l = 156, d = 1) : 137 === l ? d < 2 && (l = 139, d = 1) : 98 === l ? d < 2 && (l = 99, d = 1) : 38 === l ? d < 2 && (l = 39, d = 1) : 18 === l ? d > 0 ? (l = 156, d = 4) : l = 152 : 33 === l ? d > 0 ? (l = 139, d = 4) : l = 137 : 72 === l ? d > 0 ? (l = 99, d = 4) : l = 98 : 132 === l && (d > 0 ? (l = 39, d = 4) : l = 38)
- }
- if (0 != l && 170 != l) {
- var v, _, m, x, E, b, w, I;
- v = _ = m = x = E = b = w = I = .5;
- var N = [];
- 1 === l ? (m = 1 - Vo(e, p, f), I = 1 - Vo(e, c, f), N.push(Go[l])) : 169 === l ? (m = Vo(s, f, p), I = Vo(s, f, c), N.push(Go[l])) : 4 === l ? (b = 1 - Vo(e, h, p), x = Vo(e, f, p), N.push(Fo[l])) : 166 === l ? (b = Vo(s, p, h), x = 1 - Vo(s, p, f), N.push(Fo[l])) : 16 === l ? (E = Vo(e, p, h), _ = Vo(e, c, h), N.push(Do[l])) : 154 === l ? (E = 1 - Vo(s, h, p), _ = 1 - Vo(s, h, c), N.push(Do[l])) : 64 === l ? (w = Vo(e, f, c), v = 1 - Vo(e, h, c), N.push(Bo[l])) : 106 === l ? (w = 1 - Vo(s, c, f), v = Vo(s, c, h), N.push(Bo[l])) : 168 === l ? (x = Vo(s, f, p), m = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), N.push(ko[l]), N.push(Go[l])) : 2 === l ? (x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), N.push(ko[l]), N.push(Go[l])) : 162 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), N.push(ko[l]), N.push(Go[l])) : 8 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), N.push(Do[l]), N.push(Fo[l])) : 138 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c), N.push(Do[l]), N.push(Fo[l])) : 32 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), v = Vo(e, c, h), _ = Vo(s, c, h), N.push(Do[l]), N.push(Fo[l])) : 42 === l ? (I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h), N.push(qo[l]), N.push(Bo[l])) : 128 === l && (I = Vo(e, f, c), w = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c), N.push(qo[l]), N.push(Bo[l])), 5 === l ? (b = 1 - Vo(e, h, p), I = 1 - Vo(e, c, f), N.push(Fo[l])) : 165 === l ? (b = Vo(s, p, h), I = Vo(s, f, c), N.push(Fo[l])) : 20 === l ? (x = Vo(e, f, p), _ = Vo(e, c, h), N.push(ko[l])) : 150 === l ? (x = 1 - Vo(s, p, f), _ = 1 - Vo(s, h, c), N.push(ko[l])) : 80 === l ? (E = Vo(e, p, h), w = Vo(e, f, c), N.push(Do[l])) : 90 === l ? (E = 1 - Vo(s, h, p), w = 1 - Vo(s, c, f), N.push(Do[l])) : 65 === l ? (m = 1 - Vo(e, p, f), v = 1 - Vo(e, h, c), N.push(Go[l])) : 105 === l ? (m = Vo(s, f, p), v = Vo(s, c, h), N.push(Go[l])) : 160 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), I = Vo(e, f, c), w = Vo(s, f, c), N.push(Do[l]), N.push(Fo[l])) : 10 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), N.push(Do[l]), N.push(Fo[l])) : 130 === l ? (x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c), N.push(ko[l]), N.push(Go[l])) : 40 === l ? (x = Vo(s, f, p), m = Vo(e, f, p), v = Vo(e, c, h), _ = Vo(s, c, h), N.push(ko[l]), N.push(Go[l])) : 101 === l ? (b = Vo(s, p, h), v = Vo(s, c, h), N.push(Fo[l])) : 69 === l ? (b = 1 - Vo(e, h, p), v = 1 - Vo(e, h, c), N.push(Fo[l])) : 149 === l ? (I = Vo(s, f, c), _ = 1 - Vo(s, h, c), N.push(qo[l])) : 21 === l ? (I = 1 - Vo(e, c, f), _ = Vo(e, c, h), N.push(qo[l])) : 86 === l ? (x = 1 - Vo(s, p, f), w = 1 - Vo(s, c, f), N.push(ko[l])) : 84 === l ? (x = Vo(e, f, p), w = Vo(e, f, c), N.push(ko[l])) : 89 === l ? (E = 1 - Vo(s, h, p), m = Vo(s, f, p), N.push(Go[l])) : 81 === l ? (E = Vo(e, p, h), m = 1 - Vo(e, p, f), N.push(Go[l])) : 96 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), w = Vo(e, f, c), v = Vo(s, c, h), N.push(Do[l]), N.push(Fo[l])) : 74 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), w = 1 - Vo(s, c, f), v = 1 - Vo(e, h, c), N.push(Do[l]), N.push(Fo[l])) : 24 === l ? (E = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), _ = Vo(e, c, h), N.push(Do[l]), N.push(Go[l])) : 146 === l ? (E = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), _ = 1 - Vo(s, h, c), N.push(Do[l]), N.push(Go[l])) : 6 === l ? (b = 1 - Vo(e, h, p), x = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), N.push(Fo[l]), N.push(ko[l])) : 164 === l ? (b = Vo(s, p, h), x = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), N.push(Fo[l]), N.push(ko[l])) : 129 === l ? (m = 1 - Vo(e, p, f), I = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c), N.push(Go[l]), N.push(qo[l])) : 41 === l ? (m = Vo(s, f, p), I = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h), N.push(Go[l]), N.push(qo[l])) : 66 === l ? (x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), w = 1 - Vo(s, c, f), v = 1 - Vo(e, h, c), N.push(ko[l]), N.push(Go[l])) : 104 === l ? (x = Vo(s, f, p), m = Vo(e, f, p), w = Vo(e, f, c), v = Vo(s, c, h), N.push(Go[l]), N.push(zo[l])) : 144 === l ? (E = Vo(e, p, h), I = Vo(e, f, c), w = Vo(s, f, c), _ = 1 - Vo(s, h, c), N.push(Do[l]), N.push(Bo[l])) : 26 === l ? (E = 1 - Vo(s, h, p), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), _ = Vo(e, c, h), N.push(Do[l]), N.push(Bo[l])) : 36 === l ? (b = Vo(s, p, h), x = Vo(e, f, p), v = Vo(e, c, h), _ = Vo(s, c, h), N.push(Fo[l]), N.push(ko[l])) : 134 === l ? (b = 1 - Vo(e, h, p), x = 1 - Vo(s, p, f), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c), N.push(Fo[l]), N.push(ko[l])) : 9 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), m = Vo(s, f, p), I = 1 - Vo(e, c, f), N.push(Do[l]), N.push(Fo[l])) : 161 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), m = 1 - Vo(e, p, f), I = Vo(s, f, c), N.push(Do[l]), N.push(Fo[l])) : 37 === l ? (b = Vo(s, p, h), I = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h), N.push(Fo[l]), N.push(qo[l])) : 133 === l ? (b = 1 - Vo(e, h, p), I = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c), N.push(Fo[l]), N.push(qo[l])) : 148 === l ? (x = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), _ = 1 - Vo(s, h, c), N.push(ko[l]), N.push(Bo[l])) : 22 === l ? (x = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), _ = Vo(e, c, h), N.push(ko[l]), N.push(Bo[l])) : 82 === l ? (E = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), w = 1 - Vo(s, c, f), N.push(Do[l]), N.push(Go[l])) : 88 === l ? (E = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), w = Vo(e, f, c), N.push(Do[l]), N.push(Go[l])) : 73 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), m = Vo(s, f, p), v = 1 - Vo(e, h, c), N.push(Do[l]), N.push(Fo[l])) : 97 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), m = 1 - Vo(e, p, f), v = Vo(s, c, h), N.push(Do[l]), N.push(Fo[l])) : 145 === l ? (E = Vo(e, p, h), m = 1 - Vo(e, p, f), I = Vo(s, f, c), _ = 1 - Vo(s, h, c), N.push(Do[l]), N.push(qo[l])) : 25 === l ? (E = 1 - Vo(s, h, p), m = Vo(s, f, p), I = 1 - Vo(e, c, f), _ = Vo(e, c, h), N.push(Do[l]), N.push(qo[l])) : 70 === l ? (b = 1 - Vo(e, h, p), x = 1 - Vo(s, p, f), w = 1 - Vo(s, c, f), v = 1 - Vo(e, h, c), N.push(Fo[l]), N.push(ko[l])) : 100 === l ? (b = Vo(s, p, h), x = Vo(e, f, p), w = Vo(e, f, c), v = Vo(s, c, h), N.push(Fo[l]), N.push(ko[l])) : 34 === l ? (0 === d ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c)) : (E = Vo(s, p, h), b = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h)), N.push(Do[l]), N.push(Fo[l]), N.push(qo[l]), N.push(Bo[l])) : 35 === l ? (4 === d ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c)) : (E = Vo(s, p, h), b = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h)), N.push(Do[l]), N.push(Fo[l]), N.push(Go[l]), N.push(Bo[l])) : 136 === l ? (0 === d ? (E = Vo(s, p, h), b = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h)) : (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c)), N.push(Do[l]), N.push(Fo[l]), N.push(qo[l]), N.push(Bo[l])) : 153 === l ? (0 === d ? (E = Vo(e, p, h), m = 1 - Vo(e, p, f), I = 1 - Vo(e, c, f), _ = Vo(e, c, h)) : (E = 1 - Vo(s, h, p), m = Vo(s, f, p), I = Vo(s, f, c), _ = 1 - Vo(s, h, c)), N.push(Do[l]), N.push(Go[l])) : 102 === l ? (0 === d ? (b = 1 - Vo(e, h, p), x = Vo(e, f, p), w = Vo(e, f, c), v = 1 - Vo(e, h, c)) : (b = Vo(s, p, h), x = 1 - Vo(s, p, f), w = 1 - Vo(s, c, f), v = Vo(s, c, h)), N.push(Fo[l]), N.push(Bo[l])) : 155 === l ? (4 === d ? (E = Vo(e, p, h), m = 1 - Vo(e, p, f), I = 1 - Vo(e, c, f), _ = Vo(e, c, h)) : (E = 1 - Vo(s, h, p), m = Vo(s, f, p), I = Vo(s, f, c), _ = 1 - Vo(s, h, c)), N.push(Do[l]), N.push(qo[l])) : 103 === l ? (4 === d ? (b = 1 - Vo(e, h, p), x = Vo(e, f, p), w = Vo(e, f, c), v = 1 - Vo(e, h, c)) : (b = Vo(s, p, h), x = 1 - Vo(s, p, f), w = 1 - Vo(s, c, f), v = Vo(s, c, h)), N.push(Fo[l]), N.push(ko[l])) : 152 === l ? (0 === d ? (E = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), _ = Vo(e, c, h)) : (E = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), _ = 1 - Vo(s, h, c)), N.push(Do[l]), N.push(ko[l]), N.push(Go[l])) : 156 === l ? (4 === d ? (E = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), _ = Vo(e, c, h)) : (E = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), _ = 1 - Vo(s, h, c)), N.push(Do[l]), N.push(Go[l]), N.push(Bo[l])) : 137 === l ? (0 === d ? (E = Vo(s, p, h), b = Vo(e, p, h), m = 1 - Vo(e, p, f), I = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h)) : (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), m = Vo(s, f, p), I = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c)), N.push(Do[l]), N.push(Fo[l]), N.push(Go[l])) : 139 === l ? (4 === d ? (E = Vo(s, p, h), b = Vo(e, p, h), m = 1 - Vo(e, p, f), I = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h)) : (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), m = Vo(s, f, p), I = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c)), N.push(Do[l]), N.push(Fo[l]), N.push(qo[l])) : 98 === l ? (0 === d ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), w = Vo(e, f, c), v = 1 - Vo(e, h, c)) : (E = Vo(s, p, h), b = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), w = 1 - Vo(s, c, f), v = Vo(s, c, h)), N.push(Do[l]), N.push(Fo[l]), N.push(Bo[l])) : 99 === l ? (4 === d ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), w = Vo(e, f, c), v = 1 - Vo(e, h, c)) : (E = Vo(s, p, h), b = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), w = 1 - Vo(s, c, f), v = Vo(s, c, h)), N.push(Do[l]), N.push(Fo[l]), N.push(Go[l])) : 38 === l ? (0 === d ? (b = 1 - Vo(e, h, p), x = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c)) : (b = Vo(s, p, h), x = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h)), N.push(Fo[l]), N.push(qo[l]), N.push(Bo[l])) : 39 === l ? (4 === d ? (b = 1 - Vo(e, h, p), x = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c)) : (b = Vo(s, p, h), x = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h)), N.push(Fo[l]), N.push(ko[l]), N.push(Bo[l])) : 85 === l && (E = 1, b = 0, x = 1, m = 0, I = 0, w = 1, v = 0, _ = 1), (v < 0 || v > 1 || _ < 0 || _ > 1 || E < 0 || E > 1 || x < 0 || x > 1 || I < 0 || I > 1 || w < 0 || w > 1) && console.log("MarchingSquaresJS-isoBands: " + l + " " + g + " " + c + "," + h + "," + p + "," + f + " " + d + " " + v + " " + _ + " " + E + " " + b + " " + x + " " + m + " " + I + " " + w), o.cells[a][u] = {
- cval: l,
- cval_real: g,
- flipped: d,
- topleft: v,
- topright: _,
- righttop: E,
- rightbottom: b,
- bottomright: x,
- bottomleft: m,
- leftbottom: I,
- lefttop: w,
- edges: N
- }
- }
- }
- }
- }
- return o
- }(t, e, n);
- return Qi.polygons ? (Qi.verbose && console.log("MarchingSquaresJS-isoBands: returning single polygons for each grid cell"), u = function (t) {
- var e = [],
- n = 0;
- return t.cells.forEach((function (t, r) {
- t.forEach((function (t, i) {
- if (void 0 !== t) {
- var o = Uo[t.cval](t);
- "object" == typeof o && Xo(o) ? "object" == typeof o[0] && Xo(o[0]) ? "object" == typeof o[0][0] && Xo(o[0][0]) ? o.forEach((function (t) {
- t.forEach((function (t) {
- t[0] += i, t[1] += r
- })), e[n++] = t
- })) : (o.forEach((function (t) {
- t[0] += i, t[1] += r
- })), e[n++] = o) : console.log("MarchingSquaresJS-isoBands: bandcell polygon with malformed coordinates") : console.log("MarchingSquaresJS-isoBands: bandcell polygon with null coordinates")
- }
- }))
- })), e
- }(l)) : (Qi.verbose && console.log("MarchingSquaresJS-isoBands: returning polygon paths for entire data grid"), u = function (t) {
- for (var e = [], n = t.rows, r = t.cols, i = [], o = 0; o < n; o++)
- for (var s = 0; s < r; s++)
- if (void 0 !== t.cells[o][s] && t.cells[o][s].edges.length > 0) {
- var a = Ho(t.cells[o][s]),
- u = null,
- l = s,
- c = o;
- null !== a && i.push([a.p[0] + l, a.p[1] + c]);
- do {
- if (null === (u = Wo(t.cells[c][l], a.x, a.y, a.o))) break;
- if (i.push([u.p[0] + l, u.p[1] + c]), l += u.x, a = u, (c += u.y) < 0 || c >= n || l < 0 || l >= r || void 0 === t.cells[c][l]) {
- var h = Yo(t, l -= u.x, c -= u.y, u.x, u.y, u.o);
- if (null === h) break;
- h.path.forEach((function (t) {
- i.push(t)
- })), l = h.i, c = h.j, a = h
- }
- } while (void 0 !== t.cells[c][l] && t.cells[c][l].edges.length > 0);
- e.push(i), i = [], t.cells[o][s].edges.length > 0 && s--
- } return e
- }(l)), "function" == typeof Qi.successCallback && Qi.successCallback(u), u
- }
- var to = 64,
- eo = 16,
- no = [],
- ro = [],
- io = [],
- oo = [],
- so = [],
- ao = [],
- uo = [],
- lo = [],
- co = [],
- ho = [],
- po = [],
- fo = [],
- go = [],
- yo = [],
- vo = [],
- _o = [],
- mo = [],
- xo = [],
- Eo = [],
- bo = [],
- wo = [],
- Io = [],
- No = [],
- So = [];
- uo[85] = ho[85] = -1, lo[85] = po[85] = 0, co[85] = fo[85] = 1, Eo[85] = Io[85] = 1, bo[85] = No[85] = 0, wo[85] = So[85] = 1, no[85] = oo[85] = 0, ro[85] = so[85] = -1, io[85] = vo[85] = 0, _o[85] = go[85] = 0, mo[85] = yo[85] = 1, ao[85] = xo[85] = 1, Io[1] = Io[169] = 0, No[1] = No[169] = -1, So[1] = So[169] = 0, go[1] = go[169] = -1, yo[1] = yo[169] = 0, vo[1] = vo[169] = 0, ho[4] = ho[166] = 0, po[4] = po[166] = -1, fo[4] = fo[166] = 1, _o[4] = _o[166] = 1, mo[4] = mo[166] = 0, xo[4] = xo[166] = 0, uo[16] = uo[154] = 0, lo[16] = lo[154] = 1, co[16] = co[154] = 1, oo[16] = oo[154] = 1, so[16] = so[154] = 0, ao[16] = ao[154] = 1, Eo[64] = Eo[106] = 0, bo[64] = bo[106] = 1, wo[64] = wo[106] = 0, no[64] = no[106] = -1, ro[64] = ro[106] = 0, io[64] = io[106] = 1, Eo[2] = Eo[168] = 0, bo[2] = bo[168] = -1, wo[2] = wo[168] = 1, Io[2] = Io[168] = 0, No[2] = No[168] = -1, So[2] = So[168] = 0, go[2] = go[168] = -1, yo[2] = yo[168] = 0, vo[2] = vo[168] = 0, _o[2] = _o[168] = -1, mo[2] = mo[168] = 0, xo[2] = xo[168] = 1, uo[8] = uo[162] = 0, lo[8] = lo[162] = -1, co[8] = co[162] = 0, ho[8] = ho[162] = 0, po[8] = po[162] = -1, fo[8] = fo[162] = 1, go[8] = go[162] = 1, yo[8] = yo[162] = 0, vo[8] = vo[162] = 1, _o[8] = _o[162] = 1, mo[8] = mo[162] = 0, xo[8] = xo[162] = 0, uo[32] = uo[138] = 0, lo[32] = lo[138] = 1, co[32] = co[138] = 1, ho[32] = ho[138] = 0, po[32] = po[138] = 1, fo[32] = fo[138] = 0, no[32] = no[138] = 1, ro[32] = ro[138] = 0, io[32] = io[138] = 0, oo[32] = oo[138] = 1, so[32] = so[138] = 0, ao[32] = ao[138] = 1, Io[128] = Io[42] = 0, No[128] = No[42] = 1, So[128] = So[42] = 1, Eo[128] = Eo[42] = 0, bo[128] = bo[42] = 1, wo[128] = wo[42] = 0, no[128] = no[42] = -1, ro[128] = ro[42] = 0, io[128] = io[42] = 1, oo[128] = oo[42] = -1, so[128] = so[42] = 0, ao[128] = ao[42] = 0, ho[5] = ho[165] = -1, po[5] = po[165] = 0, fo[5] = fo[165] = 0, Io[5] = Io[165] = 1, No[5] = No[165] = 0, So[5] = So[165] = 0, _o[20] = _o[150] = 0, mo[20] = mo[150] = 1, xo[20] = xo[150] = 1, oo[20] = oo[150] = 0, so[20] = so[150] = -1, ao[20] = ao[150] = 1, uo[80] = uo[90] = -1, lo[80] = lo[90] = 0, co[80] = co[90] = 1, Eo[80] = Eo[90] = 1, bo[80] = bo[90] = 0, wo[80] = wo[90] = 1, go[65] = go[105] = 0, yo[65] = yo[105] = 1, vo[65] = vo[105] = 0, no[65] = no[105] = 0, ro[65] = ro[105] = -1, io[65] = io[105] = 0, uo[160] = uo[10] = -1, lo[160] = lo[10] = 0, co[160] = co[10] = 1, ho[160] = ho[10] = -1, po[160] = po[10] = 0, fo[160] = fo[10] = 0, Io[160] = Io[10] = 1, No[160] = No[10] = 0, So[160] = So[10] = 0, Eo[160] = Eo[10] = 1, bo[160] = bo[10] = 0, wo[160] = wo[10] = 1, _o[130] = _o[40] = 0, mo[130] = mo[40] = 1, xo[130] = xo[40] = 1, go[130] = go[40] = 0, yo[130] = yo[40] = 1, vo[130] = vo[40] = 0, no[130] = no[40] = 0, ro[130] = ro[40] = -1, io[130] = io[40] = 0, oo[130] = oo[40] = 0, so[130] = so[40] = -1, ao[130] = ao[40] = 1, ho[37] = ho[133] = 0, po[37] = po[133] = 1, fo[37] = fo[133] = 1, Io[37] = Io[133] = 0, No[37] = No[133] = 1, So[37] = So[133] = 0, no[37] = no[133] = -1, ro[37] = ro[133] = 0, io[37] = io[133] = 0, oo[37] = oo[133] = 1, so[37] = so[133] = 0, ao[37] = ao[133] = 0, _o[148] = _o[22] = -1, mo[148] = mo[22] = 0, xo[148] = xo[22] = 0, Io[148] = Io[22] = 0, No[148] = No[22] = -1, So[148] = So[22] = 1, Eo[148] = Eo[22] = 0, bo[148] = bo[22] = 1, wo[148] = wo[22] = 1, oo[148] = oo[22] = -1, so[148] = so[22] = 0, ao[148] = ao[22] = 1, uo[82] = uo[88] = 0, lo[82] = lo[88] = -1, co[82] = co[88] = 1, _o[82] = _o[88] = 1, mo[82] = mo[88] = 0, xo[82] = xo[88] = 1, go[82] = go[88] = -1, yo[82] = yo[88] = 0, vo[82] = vo[88] = 1, Eo[82] = Eo[88] = 0, bo[82] = bo[88] = -1, wo[82] = wo[88] = 0, uo[73] = uo[97] = 0, lo[73] = lo[97] = 1, co[73] = co[97] = 0, ho[73] = ho[97] = 0, po[73] = po[97] = -1, fo[73] = fo[97] = 0, go[73] = go[97] = 1, yo[73] = yo[97] = 0, vo[73] = vo[97] = 0, no[73] = no[97] = 1, ro[73] = ro[97] = 0, io[73] = io[97] = 1, uo[145] = uo[25] = 0, lo[145] = lo[25] = -1, co[145] = co[25] = 0, go[145] = go[25] = 1, yo[145] = yo[25] = 0, vo[145] = vo[25] = 1, Io[145] = Io[25] = 0, No[145] = No[25] = 1, So[145] = So[25] = 1, oo[145] = oo[25] = -1, so[145] = so[25] = 0, ao[145] = ao[25] = 0, ho[70] = ho[100] = 0, po[70] = po[100] = 1, fo[70] = fo[100] = 0, _o[70] = _o[100] = -1, mo[70] = mo[100] = 0, xo[70] = xo[100] = 1, Eo[70] = Eo[100] = 0, bo[70] = bo[100] = -1, wo[70] = wo[100] = 1, no[70] = no[100] = 1, ro[70] = ro[100] = 0, io[70] = io[100] = 0, ho[101] = ho[69] = 0, po[101] = po[69] = 1, fo[101] = fo[69] = 0, no[101] = no[69] = 1, ro[101] = ro[69] = 0, io[101] = io[69] = 0, Io[149] = Io[21] = 0, No[149] = No[21] = 1, So[149] = So[21] = 1, oo[149] = oo[21] = -1, so[149] = so[21] = 0, ao[149] = ao[21] = 0, _o[86] = _o[84] = -1, mo[86] = mo[84] = 0, xo[86] = xo[84] = 1, Eo[86] = Eo[84] = 0, bo[86] = bo[84] = -1, wo[86] = wo[84] = 1, uo[89] = uo[81] = 0, lo[89] = lo[81] = -1, co[89] = co[81] = 0, go[89] = go[81] = 1, yo[89] = yo[81] = 0, vo[89] = vo[81] = 1, uo[96] = uo[74] = 0, lo[96] = lo[74] = 1, co[96] = co[74] = 0, ho[96] = ho[74] = -1, po[96] = po[74] = 0, fo[96] = fo[74] = 1, Eo[96] = Eo[74] = 1, bo[96] = bo[74] = 0, wo[96] = wo[74] = 0, no[96] = no[74] = 1, ro[96] = ro[74] = 0, io[96] = io[74] = 1, uo[24] = uo[146] = 0, lo[24] = lo[146] = -1, co[24] = co[146] = 1, _o[24] = _o[146] = 1, mo[24] = mo[146] = 0, xo[24] = xo[146] = 1, go[24] = go[146] = 0, yo[24] = yo[146] = 1, vo[24] = vo[146] = 1, oo[24] = oo[146] = 0, so[24] = so[146] = -1, ao[24] = ao[146] = 0, ho[6] = ho[164] = -1, po[6] = po[164] = 0, fo[6] = fo[164] = 1, _o[6] = _o[164] = -1, mo[6] = mo[164] = 0, xo[6] = xo[164] = 0, Io[6] = Io[164] = 0, No[6] = No[164] = -1, So[6] = So[164] = 1, Eo[6] = Eo[164] = 1, bo[6] = bo[164] = 0, wo[6] = wo[164] = 0, go[129] = go[41] = 0, yo[129] = yo[41] = 1, vo[129] = vo[41] = 1, Io[129] = Io[41] = 0, No[129] = No[41] = 1, So[129] = So[41] = 0, no[129] = no[41] = -1, ro[129] = ro[41] = 0, io[129] = io[41] = 0, oo[129] = oo[41] = 0, so[129] = so[41] = -1, ao[129] = ao[41] = 0, _o[66] = _o[104] = 0, mo[66] = mo[104] = 1, xo[66] = xo[104] = 0, go[66] = go[104] = -1, yo[66] = yo[104] = 0, vo[66] = vo[104] = 1, Eo[66] = Eo[104] = 0, bo[66] = bo[104] = -1, wo[66] = wo[104] = 0, no[66] = no[104] = 0, ro[66] = ro[104] = -1, io[66] = io[104] = 1, uo[144] = uo[26] = -1, lo[144] = lo[26] = 0, co[144] = co[26] = 0, Io[144] = Io[26] = 1, No[144] = No[26] = 0, So[144] = So[26] = 1, Eo[144] = Eo[26] = 0, bo[144] = bo[26] = 1, wo[144] = wo[26] = 1, oo[144] = oo[26] = -1, so[144] = so[26] = 0, ao[144] = ao[26] = 1, ho[36] = ho[134] = 0, po[36] = po[134] = 1, fo[36] = fo[134] = 1, _o[36] = _o[134] = 0, mo[36] = mo[134] = 1, xo[36] = xo[134] = 0, no[36] = no[134] = 0, ro[36] = ro[134] = -1, io[36] = io[134] = 1, oo[36] = oo[134] = 1, so[36] = so[134] = 0, ao[36] = ao[134] = 0, uo[9] = uo[161] = -1, lo[9] = lo[161] = 0, co[9] = co[161] = 0, ho[9] = ho[161] = 0, po[9] = po[161] = -1, fo[9] = fo[161] = 0, go[9] = go[161] = 1, yo[9] = yo[161] = 0, vo[9] = vo[161] = 0, Io[9] = Io[161] = 1, No[9] = No[161] = 0, So[9] = So[161] = 1, uo[136] = 0, lo[136] = 1, co[136] = 1, ho[136] = 0, po[136] = 1, fo[136] = 0, _o[136] = -1, mo[136] = 0, xo[136] = 1, go[136] = -1, yo[136] = 0, vo[136] = 0, Io[136] = 0, No[136] = -1, So[136] = 0, Eo[136] = 0, bo[136] = -1, wo[136] = 1, no[136] = 1, ro[136] = 0, io[136] = 0, oo[136] = 1, so[136] = 0, ao[136] = 1, uo[34] = 0, lo[34] = -1, co[34] = 0, ho[34] = 0, po[34] = -1, fo[34] = 1, _o[34] = 1, mo[34] = 0, xo[34] = 0, go[34] = 1, yo[34] = 0, vo[34] = 1, Io[34] = 0, No[34] = 1, So[34] = 1, Eo[34] = 0, bo[34] = 1, wo[34] = 0, no[34] = -1, ro[34] = 0, io[34] = 1, oo[34] = -1, so[34] = 0, ao[34] = 0, uo[35] = 0, lo[35] = 1, co[35] = 1, ho[35] = 0, po[35] = -1, fo[35] = 1, _o[35] = 1, mo[35] = 0, xo[35] = 0, go[35] = -1, yo[35] = 0, vo[35] = 0, Io[35] = 0, No[35] = -1, So[35] = 0, Eo[35] = 0, bo[35] = 1, wo[35] = 0, no[35] = -1, ro[35] = 0, io[35] = 1, oo[35] = 1, so[35] = 0, ao[35] = 1, uo[153] = 0, lo[153] = 1, co[153] = 1, go[153] = -1, yo[153] = 0, vo[153] = 0, Io[153] = 0, No[153] = -1, So[153] = 0, oo[153] = 1, so[153] = 0, ao[153] = 1, ho[102] = 0, po[102] = -1, fo[102] = 1, _o[102] = 1, mo[102] = 0, xo[102] = 0, Eo[102] = 0, bo[102] = 1, wo[102] = 0, no[102] = -1, ro[102] = 0, io[102] = 1, uo[155] = 0, lo[155] = -1, co[155] = 0, go[155] = 1, yo[155] = 0, vo[155] = 1, Io[155] = 0, No[155] = 1, So[155] = 1, oo[155] = -1, so[155] = 0, ao[155] = 0, ho[103] = 0, po[103] = 1, fo[103] = 0, _o[103] = -1, mo[103] = 0, xo[103] = 1, Eo[103] = 0, bo[103] = -1, wo[103] = 1, no[103] = 1, ro[103] = 0, io[103] = 0, uo[152] = 0, lo[152] = 1, co[152] = 1, _o[152] = -1, mo[152] = 0, xo[152] = 1, go[152] = -1, yo[152] = 0, vo[152] = 0, Io[152] = 0, No[152] = -1, So[152] = 0, Eo[152] = 0, bo[152] = -1, wo[152] = 1, oo[152] = 1, so[152] = 0, ao[152] = 1, uo[156] = 0, lo[156] = -1, co[156] = 1, _o[156] = 1, mo[156] = 0, xo[156] = 1, go[156] = -1, yo[156] = 0, vo[156] = 0, Io[156] = 0, No[156] = -1, So[156] = 0, Eo[156] = 0, bo[156] = 1, wo[156] = 1, oo[156] = -1, so[156] = 0, ao[156] = 1, uo[137] = 0, lo[137] = 1, co[137] = 1, ho[137] = 0, po[137] = 1, fo[137] = 0, go[137] = -1, yo[137] = 0, vo[137] = 0, Io[137] = 0, No[137] = -1, So[137] = 0, no[137] = 1, ro[137] = 0, io[137] = 0, oo[137] = 1, so[137] = 0, ao[137] = 1, uo[139] = 0, lo[139] = 1, co[139] = 1, ho[139] = 0, po[139] = -1, fo[139] = 0, go[139] = 1, yo[139] = 0, vo[139] = 0, Io[139] = 0, No[139] = 1, So[139] = 0, no[139] = -1, ro[139] = 0, io[139] = 0, oo[139] = 1, so[139] = 0, ao[139] = 1, uo[98] = 0, lo[98] = -1, co[98] = 0, ho[98] = 0, po[98] = -1, fo[98] = 1, _o[98] = 1, mo[98] = 0, xo[98] = 0, go[98] = 1, yo[98] = 0, vo[98] = 1, Eo[98] = 0, bo[98] = 1, wo[98] = 0, no[98] = -1, ro[98] = 0, io[98] = 1, uo[99] = 0, lo[99] = 1, co[99] = 0, ho[99] = 0, po[99] = -1, fo[99] = 1, _o[99] = 1, mo[99] = 0, xo[99] = 0, go[99] = -1, yo[99] = 0, vo[99] = 1, Eo[99] = 0, bo[99] = -1, wo[99] = 0, no[99] = 1, ro[99] = 0, io[99] = 1, ho[38] = 0, po[38] = -1, fo[38] = 1, _o[38] = 1, mo[38] = 0, xo[38] = 0, Io[38] = 0, No[38] = 1, So[38] = 1, Eo[38] = 0, bo[38] = 1, wo[38] = 0, no[38] = -1, ro[38] = 0, io[38] = 1, oo[38] = -1, so[38] = 0, ao[38] = 0, ho[39] = 0, po[39] = 1, fo[39] = 1, _o[39] = -1, mo[39] = 0, xo[39] = 0, Io[39] = 0, No[39] = -1, So[39] = 1, Eo[39] = 0, bo[39] = 1, wo[39] = 0, no[39] = -1, ro[39] = 0, io[39] = 1, oo[39] = 1, so[39] = 0, ao[39] = 0;
- var Co = function (t) {
- return [
- [t.bottomleft, 0],
- [0, 0],
- [0, t.leftbottom]
- ]
- },
- Po = function (t) {
- return [
- [1, t.rightbottom],
- [1, 0],
- [t.bottomright, 0]
- ]
- },
- Mo = function (t) {
- return [
- [t.topright, 1],
- [1, 1],
- [1, t.righttop]
- ]
- },
- Lo = function (t) {
- return [
- [0, t.lefttop],
- [0, 1],
- [t.topleft, 1]
- ]
- },
- Oo = function (t) {
- return [
- [t.bottomright, 0],
- [t.bottomleft, 0],
- [0, t.leftbottom],
- [0, t.lefttop]
- ]
- },
- Ro = function (t) {
- return [
- [t.bottomright, 0],
- [t.bottomleft, 0],
- [1, t.righttop],
- [1, t.rightbottom]
- ]
- },
- To = function (t) {
- return [
- [1, t.righttop],
- [1, t.rightbottom],
- [t.topleft, 1],
- [t.topright, 1]
- ]
- },
- Ao = function (t) {
- return [
- [0, t.leftbottom],
- [0, t.lefttop],
- [t.topleft, 1],
- [t.topright, 1]
- ]
- },
- Do = [],
- Fo = [],
- ko = [],
- Go = [],
- qo = [],
- Bo = [],
- zo = [],
- jo = [];
- Go[1] = qo[1] = 18, Go[169] = qo[169] = 18, ko[4] = Fo[4] = 12, ko[166] = Fo[166] = 12, Do[16] = jo[16] = 4, Do[154] = jo[154] = 4, Bo[64] = zo[64] = 22, Bo[106] = zo[106] = 22, ko[2] = Bo[2] = 17, Go[2] = qo[2] = 18, ko[168] = Bo[168] = 17, Go[168] = qo[168] = 18, Do[8] = Go[8] = 9, Fo[8] = ko[8] = 12, Do[162] = Go[162] = 9, Fo[162] = ko[162] = 12, Do[32] = jo[32] = 4, Fo[32] = zo[32] = 1, Do[138] = jo[138] = 4, Fo[138] = zo[138] = 1, qo[128] = jo[128] = 21, Bo[128] = zo[128] = 22, qo[42] = jo[42] = 21, Bo[42] = zo[42] = 22, Fo[5] = qo[5] = 14, Fo[165] = qo[165] = 14, ko[20] = jo[20] = 6, ko[150] = jo[150] = 6, Do[80] = Bo[80] = 11, Do[90] = Bo[90] = 11, Go[65] = zo[65] = 3, Go[105] = zo[105] = 3, Do[160] = Bo[160] = 11, Fo[160] = qo[160] = 14, Do[10] = Bo[10] = 11, Fo[10] = qo[10] = 14, ko[130] = jo[130] = 6, Go[130] = zo[130] = 3, ko[40] = jo[40] = 6, Go[40] = zo[40] = 3, Fo[101] = zo[101] = 1, Fo[69] = zo[69] = 1, qo[149] = jo[149] = 21, qo[21] = jo[21] = 21, ko[86] = Bo[86] = 17, ko[84] = Bo[84] = 17, Do[89] = Go[89] = 9, Do[81] = Go[81] = 9, Do[96] = zo[96] = 0, Fo[96] = Bo[96] = 15, Do[74] = zo[74] = 0, Fo[74] = Bo[74] = 15, Do[24] = ko[24] = 8, Go[24] = jo[24] = 7, Do[146] = ko[146] = 8, Go[146] = jo[146] = 7, Fo[6] = Bo[6] = 15, ko[6] = qo[6] = 16, Fo[164] = Bo[164] = 15, ko[164] = qo[164] = 16, Go[129] = jo[129] = 7, qo[129] = zo[129] = 20, Go[41] = jo[41] = 7, qo[41] = zo[41] = 20, ko[66] = zo[66] = 2, Go[66] = Bo[66] = 19, ko[104] = zo[104] = 2, Go[104] = Bo[104] = 19, Do[144] = qo[144] = 10, Bo[144] = jo[144] = 23, Do[26] = qo[26] = 10, Bo[26] = jo[26] = 23, Fo[36] = jo[36] = 5, ko[36] = zo[36] = 2, Fo[134] = jo[134] = 5, ko[134] = zo[134] = 2, Do[9] = qo[9] = 10, Fo[9] = Go[9] = 13, Do[161] = qo[161] = 10, Fo[161] = Go[161] = 13, Fo[37] = jo[37] = 5, qo[37] = zo[37] = 20, Fo[133] = jo[133] = 5, qo[133] = zo[133] = 20, ko[148] = qo[148] = 16, Bo[148] = jo[148] = 23, ko[22] = qo[22] = 16, Bo[22] = jo[22] = 23, Do[82] = ko[82] = 8, Go[82] = Bo[82] = 19, Do[88] = ko[88] = 8, Go[88] = Bo[88] = 19, Do[73] = zo[73] = 0, Fo[73] = Go[73] = 13, Do[97] = zo[97] = 0, Fo[97] = Go[97] = 13, Do[145] = Go[145] = 9, qo[145] = jo[145] = 21, Do[25] = Go[25] = 9, qo[25] = jo[25] = 21, Fo[70] = zo[70] = 1, ko[70] = Bo[70] = 17, Fo[100] = zo[100] = 1, ko[100] = Bo[100] = 17, Do[34] = Go[34] = 9, Fo[34] = ko[34] = 12, qo[34] = jo[34] = 21, Bo[34] = zo[34] = 22, Do[136] = jo[136] = 4, Fo[136] = zo[136] = 1, ko[136] = Bo[136] = 17, Go[136] = qo[136] = 18, Do[35] = jo[35] = 4, Fo[35] = ko[35] = 12, Go[35] = qo[35] = 18, Bo[35] = zo[35] = 22, Do[153] = jo[153] = 4, Go[153] = qo[153] = 18, Fo[102] = ko[102] = 12, Bo[102] = zo[102] = 22, Do[155] = Go[155] = 9, qo[155] = jo[155] = 23, Fo[103] = zo[103] = 1, ko[103] = Bo[103] = 17, Do[152] = jo[152] = 4, ko[152] = Bo[152] = 17, Go[152] = qo[152] = 18, Do[156] = ko[156] = 8, Go[156] = qo[156] = 18, Bo[156] = jo[156] = 23, Do[137] = jo[137] = 4, Fo[137] = zo[137] = 1, Go[137] = qo[137] = 18, Do[139] = jo[139] = 4, Fo[139] = Go[139] = 13, qo[139] = zo[139] = 20, Do[98] = Go[98] = 9, Fo[98] = ko[98] = 12, Bo[98] = zo[98] = 22, Do[99] = zo[99] = 0, Fo[99] = ko[99] = 12, Go[99] = Bo[99] = 19, Fo[38] = ko[38] = 12, qo[38] = jo[38] = 21, Bo[38] = zo[38] = 22, Fo[39] = jo[39] = 5, ko[39] = qo[39] = 16, Bo[39] = zo[39] = 22;
- var Uo = [];
- function Vo(t, e, n) {
- return (t - e) / (n - e)
- }
- function Xo(t) {
- return t.constructor.toString().indexOf("Array") > -1
- }
- function Yo(t, e, n, r, i, o) {
- for (var s = t.cells[n][e], a = s.cval_real, u = e + r, l = n + i, c = [], h = !1; !h;) {
- if (void 0 === t.cells[l] || void 0 === t.cells[l][u])
- if (l -= i, u -= r, a = (s = t.cells[l][u]).cval_real, -1 === i)
- if (0 === o)
- if (1 & a) c.push([u, l]), r = -1, i = 0, o = 0;
- else {
- if (!(4 & a)) {
- c.push([u + s.bottomright, l]), r = 0, i = 1, o = 1, h = !0;
- break
- }
- c.push([u + 1, l]), r = 1, i = 0, o = 0
- }
- else {
- if (!(1 & a)) {
- if (4 & a) {
- c.push([u + s.bottomright, l]), r = 0, i = 1, o = 1, h = !0;
- break
- }
- c.push([u + s.bottomleft, l]), r = 0, i = 1, o = 0, h = !0;
- break
- }
- c.push([u, l]), r = -1, i = 0, o = 0
- } else if (1 === i)
- if (0 === o) {
- if (!(a & eo)) {
- if (a & to) {
- c.push([u + s.topleft, l + 1]), r = 0, i = -1, o = 0, h = !0;
- break
- }
- c.push([u + s.topright, l + 1]), r = 0, i = -1, o = 1, h = !0;
- break
- }
- c.push([u + 1, l + 1]), r = 1, i = 0, o = 1
- } else c.push([u + 1, l + 1]), r = 1, i = 0, o = 1;
- else if (-1 === r)
- if (0 === o) {
- if (!(a & to)) {
- if (1 & a) {
- c.push([u, l + s.leftbottom]), r = 1, i = 0, o = 0, h = !0;
- break
- }
- c.push([u, l + s.lefttop]), r = 1, i = 0, o = 1, h = !0;
- break
- }
- c.push([u, l + 1]), r = 0, i = 1, o = 0
- } else {
- if (!(a & to)) {
- console.log("MarchingSquaresJS-isoBands: wtf");
- break
- }
- c.push([u, l + 1]), r = 0, i = 1, o = 0
- }
- else {
- if (1 !== r) {
- console.log("MarchingSquaresJS-isoBands: we came from nowhere!");
- break
- }
- if (0 === o) {
- if (!(4 & a)) {
- c.push([u + 1, l + s.rightbottom]), r = -1, i = 0, o = 0, h = !0;
- break
- }
- c.push([u + 1, l]), r = 0, i = -1, o = 1
- } else {
- if (!(4 & a)) {
- if (a & eo) {
- c.push([u + 1, l + s.righttop]), r = -1, i = 0, o = 1;
- break
- }
- c.push([u + 1, l + s.rightbottom]), r = -1, i = 0, o = 0, h = !0;
- break
- }
- c.push([u + 1, l]), r = 0, i = -1, o = 1
- }
- } else if (a = (s = t.cells[l][u]).cval_real, -1 === r)
- if (0 === o)
- if (void 0 !== t.cells[l - 1] && void 0 !== t.cells[l - 1][u]) r = 0, i = -1, o = 1;
- else {
- if (!(1 & a)) {
- c.push([u + s.bottomright, l]), r = 0, i = 1, o = 1, h = !0;
- break
- }
- c.push([u, l])
- }
- else {
- if (!(a & to)) {
- console.log("MarchingSquaresJS-isoBands: found entry from top at " + u + "," + l);
- break
- }
- console.log("MarchingSquaresJS-isoBands: proceeding in x-direction!")
- } else if (1 === r) {
- if (0 === o) {
- console.log("MarchingSquaresJS-isoBands: wtf");
- break
- }
- if (void 0 !== t.cells[l + 1] && void 0 !== t.cells[l + 1][u]) r = 0, i = 1, o = 0;
- else {
- if (!(a & eo)) {
- c.push([u + s.topleft, l + 1]), r = 0, i = -1, o = 0, h = !0;
- break
- }
- c.push([u + 1, l + 1]), r = 1, i = 0, o = 1
- }
- } else if (-1 === i) {
- if (1 !== o) {
- console.log("MarchingSquaresJS-isoBands: wtf");
- break
- }
- if (void 0 !== t.cells[l][u + 1]) r = 1, i = 0, o = 1;
- else {
- if (!(4 & a)) {
- c.push([u + 1, l + s.righttop]), r = -1, i = 0, o = 1, h = !0;
- break
- }
- c.push([u + 1, l]), r = 0, i = -1, o = 1
- }
- } else {
- if (1 !== i) {
- console.log("MarchingSquaresJS-isoBands: where did we came from???");
- break
- }
- if (0 !== o) {
- console.log("MarchingSquaresJS-isoBands: wtf");
- break
- }
- if (void 0 !== t.cells[l][u - 1]) r = -1, i = 0, o = 0;
- else {
- if (!(a & to)) {
- c.push([u, l + s.leftbottom]), r = 1, i = 0, o = 0, h = !0;
- break
- }
- c.push([u, l + 1]), r = 0, i = 1, o = 0
- }
- }
- if (l += i, (u += r) === e && l === n) break
- }
- return {
- path: c,
- i: u,
- j: l,
- x: r,
- y: i,
- o: o
- }
- }
- function Ho(t) {
- if (t.edges.length > 0) {
- var e = t.edges[t.edges.length - 1],
- n = t.cval_real;
- switch (e) {
- case 0:
- return n & eo ? {
- p: [1, t.righttop],
- x: -1,
- y: 0,
- o: 1
- } : {
- p: [t.topleft, 1],
- x: 0,
- y: -1,
- o: 0
- };
- case 1:
- return 4 & n ? {
- p: [t.topleft, 1],
- x: 0,
- y: -1,
- o: 0
- } : {
- p: [1, t.rightbottom],
- x: -1,
- y: 0,
- o: 0
- };
- case 2:
- return 4 & n ? {
- p: [t.bottomright, 0],
- x: 0,
- y: 1,
- o: 1
- } : {
- p: [t.topleft, 1],
- x: 0,
- y: -1,
- o: 0
- };
- case 3:
- return 1 & n ? {
- p: [t.topleft, 1],
- x: 0,
- y: -1,
- o: 0
- } : {
- p: [t.bottomleft, 0],
- x: 0,
- y: 1,
- o: 0
- };
- case 4:
- return n & eo ? {
- p: [1, t.righttop],
- x: -1,
- y: 0,
- o: 1
- } : {
- p: [t.topright, 1],
- x: 0,
- y: -1,
- o: 1
- };
- case 5:
- return 4 & n ? {
- p: [t.topright, 1],
- x: 0,
- y: -1,
- o: 1
- } : {
- p: [1, t.rightbottom],
- x: -1,
- y: 0,
- o: 0
- };
- case 6:
- return 4 & n ? {
- p: [t.bottomright, 0],
- x: 0,
- y: 1,
- o: 1
- } : {
- p: [t.topright, 1],
- x: 0,
- y: -1,
- o: 1
- };
- case 7:
- return 1 & n ? {
- p: [t.topright, 1],
- x: 0,
- y: -1,
- o: 1
- } : {
- p: [t.bottomleft, 0],
- x: 0,
- y: 1,
- o: 0
- };
- case 8:
- return 4 & n ? {
- p: [t.bottomright, 0],
- x: 0,
- y: 1,
- o: 1
- } : {
- p: [1, t.righttop],
- x: -1,
- y: 0,
- o: 1
- };
- case 9:
- return 1 & n ? {
- p: [1, t.righttop],
- x: -1,
- y: 0,
- o: 1
- } : {
- p: [t.bottomleft, 0],
- x: 0,
- y: 1,
- o: 0
- };
- case 10:
- return 1 & n ? {
- p: [0, t.leftbottom],
- x: 1,
- y: 0,
- o: 0
- } : {
- p: [1, t.righttop],
- x: -1,
- y: 0,
- o: 1
- };
- case 11:
- return n & to ? {
- p: [1, t.righttop],
- x: -1,
- y: 0,
- o: 1
- } : {
- p: [0, t.lefttop],
- x: 1,
- y: 0,
- o: 1
- };
- case 12:
- return 4 & n ? {
- p: [t.bottomright, 0],
- x: 0,
- y: 1,
- o: 1
- } : {
- p: [1, t.rightbottom],
- x: -1,
- y: 0,
- o: 0
- };
- case 13:
- return 1 & n ? {
- p: [1, t.rightbottom],
- x: -1,
- y: 0,
- o: 0
- } : {
- p: [t.bottomleft, 0],
- x: 0,
- y: 1,
- o: 0
- };
- case 14:
- return 1 & n ? {
- p: [0, t.leftbottom],
- x: 1,
- y: 0,
- o: 0
- } : {
- p: [1, t.rightbottom],
- x: -1,
- y: 0,
- o: 0
- };
- case 15:
- return n & to ? {
- p: [1, t.rightbottom],
- x: -1,
- y: 0,
- o: 0
- } : {
- p: [0, t.lefttop],
- x: 1,
- y: 0,
- o: 1
- };
- case 16:
- return 4 & n ? {
- p: [t.bottomright, 0],
- x: 0,
- y: 1,
- o: 1
- } : {
- p: [0, t.leftbottom],
- x: 1,
- y: 0,
- o: 0
- };
- case 17:
- return n & to ? {
- p: [t.bottomright, 0],
- x: 0,
- y: 1,
- o: 1
- } : {
- p: [0, t.lefttop],
- x: 1,
- y: 0,
- o: 1
- };
- case 18:
- return 1 & n ? {
- p: [0, t.leftbottom],
- x: 1,
- y: 0,
- o: 0
- } : {
- p: [t.bottomleft, 0],
- x: 0,
- y: 1,
- o: 0
- };
- case 19:
- return n & to ? {
- p: [t.bottomleft, 0],
- x: 0,
- y: 1,
- o: 0
- } : {
- p: [0, t.lefttop],
- x: 1,
- y: 0,
- o: 1
- };
- case 20:
- return n & to ? {
- p: [t.topleft, 1],
- x: 0,
- y: -1,
- o: 0
- } : {
- p: [0, t.leftbottom],
- x: 1,
- y: 0,
- o: 0
- };
- case 21:
- return n & eo ? {
- p: [0, t.leftbottom],
- x: 1,
- y: 0,
- o: 0
- } : {
- p: [t.topright, 1],
- x: 0,
- y: -1,
- o: 1
- };
- case 22:
- return n & to ? {
- p: [t.topleft, 1],
- x: 0,
- y: -1,
- o: 0
- } : {
- p: [0, t.lefttop],
- x: 1,
- y: 0,
- o: 1
- };
- case 23:
- return n & eo ? {
- p: [0, t.lefttop],
- x: 1,
- y: 0,
- o: 1
- } : {
- p: [t.topright, 1],
- x: 0,
- y: -1,
- o: 1
- };
- default:
- console.log("MarchingSquaresJS-isoBands: edge index out of range!"), console.log(t)
- }
- }
- return null
- }
- function Wo(t, e, n, r) {
- var i, o, s, a, u, l = t.cval;
- switch (e) {
- case -1:
- switch (r) {
- case 0:
- i = Fo[l], s = ho[l], a = po[l], u = fo[l];
- break;
- default:
- i = Do[l], s = uo[l], a = lo[l], u = co[l]
- }
- break;
- case 1:
- switch (r) {
- case 0:
- i = qo[l], s = Io[l], a = No[l], u = So[l];
- break;
- default:
- i = Bo[l], s = Eo[l], a = bo[l], u = wo[l]
- }
- break;
- default:
- switch (n) {
- case -1:
- switch (r) {
- case 0:
- i = zo[l], s = no[l], a = ro[l], u = io[l];
- break;
- default:
- i = jo[l], s = oo[l], a = so[l], u = ao[l]
- }
- break;
- case 1:
- switch (r) {
- case 0:
- i = Go[l], s = go[l], a = yo[l], u = vo[l];
- break;
- default:
- i = ko[l], s = _o[l], a = mo[l], u = xo[l]
- }
- }
- }
- if (o = t.edges.indexOf(i), void 0 === t.edges[o]) return null;
- switch (function (t, e) {
- delete t.edges[e];
- for (var n = e + 1; n < t.edges.length; n++) t.edges[n - 1] = t.edges[n];
- t.edges.pop()
- }(t, o), l = t.cval_real, i) {
- case 0:
- l & eo ? (e = t.topleft, n = 1) : (e = 1, n = t.righttop);
- break;
- case 1:
- 4 & l ? (e = 1, n = t.rightbottom) : (e = t.topleft, n = 1);
- break;
- case 2:
- 4 & l ? (e = t.topleft, n = 1) : (e = t.bottomright, n = 0);
- break;
- case 3:
- 1 & l ? (e = t.bottomleft, n = 0) : (e = t.topleft, n = 1);
- break;
- case 4:
- l & eo ? (e = t.topright, n = 1) : (e = 1, n = t.righttop);
- break;
- case 5:
- 4 & l ? (e = 1, n = t.rightbottom) : (e = t.topright, n = 1);
- break;
- case 6:
- 4 & l ? (e = t.topright, n = 1) : (e = t.bottomright, n = 0);
- break;
- case 7:
- 1 & l ? (e = t.bottomleft, n = 0) : (e = t.topright, n = 1);
- break;
- case 8:
- 4 & l ? (e = 1, n = t.righttop) : (e = t.bottomright, n = 0);
- break;
- case 9:
- 1 & l ? (e = t.bottomleft, n = 0) : (e = 1, n = t.righttop);
- break;
- case 10:
- 1 & l ? (e = 1, n = t.righttop) : (e = 0, n = t.leftbottom);
- break;
- case 11:
- l & to ? (e = 0, n = t.lefttop) : (e = 1, n = t.righttop);
- break;
- case 12:
- 4 & l ? (e = 1, n = t.rightbottom) : (e = t.bottomright, n = 0);
- break;
- case 13:
- 1 & l ? (e = t.bottomleft, n = 0) : (e = 1, n = t.rightbottom);
- break;
- case 14:
- 1 & l ? (e = 1, n = t.rightbottom) : (e = 0, n = t.leftbottom);
- break;
- case 15:
- l & to ? (e = 0, n = t.lefttop) : (e = 1, n = t.rightbottom);
- break;
- case 16:
- 4 & l ? (e = 0, n = t.leftbottom) : (e = t.bottomright, n = 0);
- break;
- case 17:
- l & to ? (e = 0, n = t.lefttop) : (e = t.bottomright, n = 0);
- break;
- case 18:
- 1 & l ? (e = t.bottomleft, n = 0) : (e = 0, n = t.leftbottom);
- break;
- case 19:
- l & to ? (e = 0, n = t.lefttop) : (e = t.bottomleft, n = 0);
- break;
- case 20:
- l & to ? (e = 0, n = t.leftbottom) : (e = t.topleft, n = 1);
- break;
- case 21:
- l & eo ? (e = t.topright, n = 1) : (e = 0, n = t.leftbottom);
- break;
- case 22:
- l & to ? (e = 0, n = t.lefttop) : (e = t.topleft, n = 1);
- break;
- case 23:
- l & eo ? (e = t.topright, n = 1) : (e = 0, n = t.lefttop);
- break;
- default:
- return console.log("MarchingSquaresJS-isoBands: edge index out of range!"), console.log(t), null
- }
- return void 0 !== e && void 0 !== n && void 0 !== s && void 0 !== a && void 0 !== u || (console.log("MarchingSquaresJS-isoBands: undefined value!"), console.log(t), console.log(e + " " + n + " " + s + " " + a + " " + u)), {
- p: [e, n],
- x: s,
- y: a,
- o: u
- }
- }
- function Jo(t) {
- var e = [],
- n = [];
- t.forEach((function (t) {
- var r = jr(l([t]));
- n.push(r), e.push({
- ring: t,
- area: r
- })
- })), n.sort((function (t, e) {
- return e - t
- }));
- var r = [];
- return n.forEach((function (t) {
- for (var n = 0; n < e.length; n++)
- if (e[n].area === t) {
- r.push(e[n].ring), e.splice(n, 1);
- break
- }
- })), r
- }
- function Zo(t) {
- for (var e = t.map((function (t) {
- return {
- lrCoordinates: t,
- grouped: !1
- }
- })), n = []; !Qo(e);)
- for (var r = 0; r < e.length; r++)
- if (!e[r].grouped) {
- var i = [];
- i.push(e[r].lrCoordinates), e[r].grouped = !0;
- for (var o = l([e[r].lrCoordinates]), s = r + 1; s < e.length; s++) {
- if (!e[s].grouped) Ko(l([e[s].lrCoordinates]), o) && (i.push(e[s].lrCoordinates), e[s].grouped = !0)
- }
- n.push(i)
- } return n
- }
- function Ko(t, e) {
- for (var n = bn(t), r = 0; r < n.features.length; r++)
- if (!ye(n.features[r], e)) return !1;
- return !0
- }
- function Qo(t) {
- for (var e = 0; e < t.length; e++)
- if (!1 === t[e].grouped) return !1;
- return !0
- }
- function $o(t, e, n) {
- if (!P(n = n || {})) throw new Error("options is invalid");
- var r = n.pivot,
- i = n.mutate;
- if (!t) throw new Error("geojson is required");
- if (null == e || isNaN(e)) throw new Error("angle is required");
- return 0 === e || (r || (r = En(t)), !1 !== i && void 0 !== i || (t = Ie(t)), R(t, (function (t) {
- var n = Bi(r, t) + e,
- i = Ar(r, t),
- o = Q(ji(r, i, n));
- t[0] = o[0], t[1] = o[1]
- }))), t
- }
- function ts(t, e, n) {
- if (!P(n = n || {})) throw new Error("options is invalid");
- var r = n.origin,
- i = n.mutate;
- if (!t) throw new Error("geojson required");
- if ("number" != typeof e || 0 === e) throw new Error("invalid factor");
- var o = Array.isArray(r) || "object" == typeof r;
- return !0 !== i && (t = Ie(t)), "FeatureCollection" !== t.type || o ? es(t, e, r) : (F(t, (function (n, i) {
- t.features[i] = es(n, e, r)
- })), t)
- }
- function es(t, e, n) {
- var r = "Point" === it(t);
- return n = function (t, e) {
- null == e && (e = "centroid");
- if (Array.isArray(e) || "object" == typeof e) return K(e);
- var n = t.bbox ? t.bbox : Z(t),
- r = n[0],
- i = n[1],
- o = n[2],
- s = n[3];
- switch (e) {
- case "sw":
- case "southwest":
- case "westsouth":
- case "bottomleft":
- return a([r, i]);
- case "se":
- case "southeast":
- case "eastsouth":
- case "bottomright":
- return a([o, i]);
- case "nw":
- case "northwest":
- case "westnorth":
- case "topleft":
- return a([r, s]);
- case "ne":
- case "northeast":
- case "eastnorth":
- case "topright":
- return a([o, s]);
- case "center":
- return xn(t);
- case void 0:
- case null:
- case "centroid":
- return En(t);
- default:
- throw new Error("invalid origin")
- }
- }(t, n), 1 === e || r || R(t, (function (t) {
- var r = Ar(n, t),
- i = Bi(n, t),
- o = Q(ji(n, r * e, i));
- t[0] = o[0], t[1] = o[1], 3 === t.length && (t[2] *= e)
- })), t
- }
- function ns(t) {
- var e = t[0],
- n = t[1];
- return [n[0] - e[0], n[1] - e[1]]
- }
- function rs(t, e) {
- return t[0] * e[1] - e[0] * t[1]
- }
- function is(t, e) {
- return ! function (t, e) {
- return 0 === rs(ns(t), ns(e))
- }(t, e) && function (t, e) {
- var n, r, i = t[0],
- o = ns(t),
- s = e[0],
- a = ns(e),
- u = rs(o, a);
- return function (t, e) {
- return [t[0] + e[0], t[1] + e[1]]
- }(i, function (t, e) {
- return [t * e[0], t * e[1]]
- }(rs((r = i, [(n = s)[0] - r[0], n[1] - r[1]]), a) / u, o))
- }(t, e)
- }
- function os(t, e, n) {
- var r = [],
- i = E(e, n),
- o = Q(t),
- s = [];
- return o.forEach((function (t, e) {
- if (e !== o.length - 1) {
- var n = (l = t, c = o[e + 1], h = i, p = Math.sqrt((l[0] - c[0]) * (l[0] - c[0]) + (l[1] - c[1]) * (l[1] - c[1])), f = l[0] + h * (c[1] - l[1]) / p, g = c[0] + h * (c[1] - l[1]) / p, d = l[1] + h * (l[0] - c[0]) / p, y = c[1] + h * (l[0] - c[0]) / p, [
- [f, d],
- [g, y]
- ]);
- if (r.push(n), e > 0) {
- var a = r[e - 1],
- u = is(n, a);
- !1 !== u && (a[1] = u, n[0] = u), s.push(a[0]), e === o.length - 2 && (s.push(n[0]), s.push(n[1]))
- }
- 2 === o.length && (s.push(n[0]), s.push(n[1]))
- }
- var l, c, h, p, f, g, d, y
- })), h(s, t.properties)
- }
- function ss(t, e, n) {
- var r = e[0] - t[0],
- i = e[1] - t[1],
- o = n[0] - e[0];
- return function (t) {
- return (t > 0) - (t < 0) || +t
- }(r * (n[1] - e[1]) - o * i)
- }
- function as(t, e) {
- return e.geometry.coordinates[0].every((function (e) {
- return ye(a(e), t)
- }))
- }
- Uo[1] = Uo[169] = Co, Uo[4] = Uo[166] = Po, Uo[16] = Uo[154] = Mo, Uo[64] = Uo[106] = Lo, Uo[168] = Uo[2] = Oo, Uo[162] = Uo[8] = Ro, Uo[138] = Uo[32] = To, Uo[42] = Uo[128] = Ao, Uo[5] = Uo[165] = function (t) {
- return [
- [0, 0],
- [0, t.leftbottom],
- [1, t.rightbottom],
- [1, 0]
- ]
- }, Uo[20] = Uo[150] = function (t) {
- return [
- [1, 0],
- [t.bottomright, 0],
- [t.topright, 1],
- [1, 1]
- ]
- }, Uo[80] = Uo[90] = function (t) {
- return [
- [1, 1],
- [1, t.righttop],
- [0, t.lefttop],
- [0, 1]
- ]
- }, Uo[65] = Uo[105] = function (t) {
- return [
- [t.bottomleft, 0],
- [0, 0],
- [0, 1],
- [t.topleft, 1]
- ]
- }, Uo[160] = Uo[10] = function (t) {
- return [
- [1, t.righttop],
- [1, t.rightbottom],
- [0, t.leftbottom],
- [0, t.lefttop]
- ]
- }, Uo[130] = Uo[40] = function (t) {
- return [
- [t.topleft, 1],
- [t.topright, 1],
- [t.bottomright, 0],
- [t.bottomleft, 0]
- ]
- }, Uo[85] = function () {
- return [
- [0, 0],
- [0, 1],
- [1, 1],
- [1, 0]
- ]
- }, Uo[101] = Uo[69] = function (t) {
- return [
- [1, t.rightbottom],
- [1, 0],
- [0, 0],
- [0, 1],
- [t.topleft, 1]
- ]
- }, Uo[149] = Uo[21] = function (t) {
- return [
- [t.topright, 1],
- [1, 1],
- [1, 0],
- [0, 0],
- [0, t.leftbottom]
- ]
- }, Uo[86] = Uo[84] = function (t) {
- return [
- [1, 0],
- [t.bottomright, 0],
- [0, t.lefttop],
- [0, 1],
- [1, 1]
- ]
- }, Uo[89] = Uo[81] = function (t) {
- return [
- [1, 1],
- [1, t.righttop],
- [t.bottomleft, 0],
- [0, 0],
- [0, 1]
- ]
- }, Uo[96] = Uo[74] = function (t) {
- return [
- [1, t.righttop],
- [1, t.rightbottom],
- [0, t.lefttop],
- [0, 1],
- [t.topleft, 1]
- ]
- }, Uo[24] = Uo[146] = function (t) {
- return [
- [1, 1],
- [1, t.righttop],
- [t.bottomright, 0],
- [t.bottomleft, 0],
- [t.topright, 1]
- ]
- }, Uo[6] = Uo[164] = function (t) {
- return [
- [1, t.rightbottom],
- [1, 0],
- [t.bottomright, 0],
- [0, t.leftbottom],
- [0, t.lefttop]
- ]
- }, Uo[129] = Uo[41] = function (t) {
- return [
- [t.topright, 1],
- [t.bottomleft, 0],
- [0, 0],
- [0, t.leftbottom],
- [t.topleft, 1]
- ]
- }, Uo[66] = Uo[104] = function (t) {
- return [
- [t.bottomright, 0],
- [t.bottomleft, 0],
- [0, t.lefttop],
- [0, 1],
- [t.topleft, 1]
- ]
- }, Uo[144] = Uo[26] = function (t) {
- return [
- [1, 1],
- [1, t.righttop],
- [0, t.leftbottom],
- [0, t.lefttop],
- [t.topright, 1]
- ]
- }, Uo[36] = Uo[134] = function (t) {
- return [
- [1, t.rightbottom],
- [1, 0],
- [t.bottomright, 0],
- [t.topleft, 1],
- [t.topright, 1]
- ]
- }, Uo[9] = Uo[161] = function (t) {
- return [
- [1, t.righttop],
- [1, t.rightbottom],
- [t.bottomleft, 0],
- [0, 0],
- [0, t.leftbottom]
- ]
- }, Uo[37] = Uo[133] = function (t) {
- return [
- [1, t.rightbottom],
- [1, 0],
- [0, 0],
- [0, t.leftbottom],
- [t.topleft, 1],
- [t.topright, 1]
- ]
- }, Uo[148] = Uo[22] = function (t) {
- return [
- [1, 1],
- [1, 0],
- [t.bottomright, 0],
- [0, t.leftbottom],
- [0, t.lefttop],
- [t.topright, 1]
- ]
- }, Uo[82] = Uo[88] = function (t) {
- return [
- [1, 1],
- [1, t.righttop],
- [t.bottomright, 0],
- [t.bottomleft, 0],
- [0, t.lefttop],
- [0, 1]
- ]
- }, Uo[73] = Uo[97] = function (t) {
- return [
- [1, t.righttop],
- [1, t.rightbottom],
- [t.bottomleft, 0],
- [0, 0],
- [0, 1],
- [t.topleft, 1]
- ]
- }, Uo[145] = Uo[25] = function (t) {
- return [
- [1, 1],
- [1, t.righttop],
- [t.bottomleft, 0],
- [0, 0],
- [0, t.leftbottom],
- [t.topright, 1]
- ]
- }, Uo[70] = Uo[100] = function (t) {
- return [
- [1, t.rightbottom],
- [1, 0],
- [t.bottomright, 0],
- [0, t.lefttop],
- [0, 1],
- [t.topleft, 1]
- ]
- }, Uo[34] = function (t) {
- return [Ao(t), Ro(t)]
- }, Uo[35] = function (t) {
- return [
- [1, t.righttop],
- [1, t.rightbottom],
- [t.bottomright, 0],
- [t.bottomleft, 0],
- [0, t.leftbottom],
- [0, t.lefttop],
- [t.topleft, 1],
- [t.topright, 1]
- ]
- }, Uo[136] = function (t) {
- return [To(t), Oo(t)]
- }, Uo[153] = function (t) {
- return [Mo(t), Co(t)]
- }, Uo[102] = function (t) {
- return [Po(t), Lo(t)]
- }, Uo[155] = function (t) {
- return [
- [1, 1],
- [1, t.righttop],
- [t.bottomleft, 0],
- [0, 0],
- [0, t.leftbottom],
- [t.topright, 1]
- ]
- }, Uo[103] = function (t) {
- return [
- [1, t.rightbottom],
- [1, 0],
- [t.bottomright, 0],
- [0, t.lefttop],
- [0, 1],
- [t.topleft, 1]
- ]
- }, Uo[152] = function (t) {
- return [Mo(t), Oo(t)]
- }, Uo[156] = function (t) {
- return [
- [1, 1],
- [1, t.righttop],
- [t.bottomright, 0],
- [t.bottomleft, 0],
- [0, t.leftbottom],
- [0, t.lefttop],
- [t.topright, 1]
- ]
- }, Uo[137] = function (t) {
- return [To(t), Co(t)]
- }, Uo[139] = function (t) {
- return [
- [1, t.righttop],
- [1, t.rightbottom],
- [t.bottomleft, 0],
- [0, 0],
- [0, t.leftbottom],
- [t.topleft, 1],
- [t.topright, 1]
- ]
- }, Uo[98] = function (t) {
- return [Ro(t), Lo(t)]
- }, Uo[99] = function (t) {
- return [
- [1, t.righttop],
- [1, t.rightbottom],
- [t.bottomright, 0],
- [t.bottomleft, 0],
- [0, t.lefttop],
- [0, 1],
- [t.topleft, 1]
- ]
- }, Uo[38] = function (t) {
- return [Po(t), Ao(t)]
- }, Uo[39] = function (t) {
- return [
- [1, t.rightbottom],
- [1, 0],
- [t.bottomright, 0],
- [0, t.leftbottom],
- [0, t.lefttop],
- [t.topleft, 1],
- [t.topright, 1]
- ]
- };
- var us = function () {
- function t(e) {
- this.id = t.buildId(e), this.coordinates = e, this.innerEdges = [], this.outerEdges = [], this.outerEdgesSorted = !1
- }
- return t.buildId = function (t) {
- return t.join(",")
- }, t.prototype.removeInnerEdge = function (t) {
- this.innerEdges = this.innerEdges.filter((function (e) {
- return e.from.id !== t.from.id
- }))
- }, t.prototype.removeOuterEdge = function (t) {
- this.outerEdges = this.outerEdges.filter((function (e) {
- return e.to.id !== t.to.id
- }))
- }, t.prototype.addOuterEdge = function (t) {
- this.outerEdges.push(t), this.outerEdgesSorted = !1
- }, t.prototype.sortOuterEdges = function () {
- var t = this;
- this.outerEdgesSorted || (this.outerEdges.sort((function (e, n) {
- var r = e.to,
- i = n.to;
- if (r.coordinates[0] - t.coordinates[0] >= 0 && i.coordinates[0] - t.coordinates[0] < 0) return 1;
- if (r.coordinates[0] - t.coordinates[0] < 0 && i.coordinates[0] - t.coordinates[0] >= 0) return -1;
- if (r.coordinates[0] - t.coordinates[0] == 0 && i.coordinates[0] - t.coordinates[0] == 0) return r.coordinates[1] - t.coordinates[1] >= 0 || i.coordinates[1] - t.coordinates[1] >= 0 ? r.coordinates[1] - i.coordinates[1] : i.coordinates[1] - r.coordinates[1];
- var o = ss(t.coordinates, r.coordinates, i.coordinates);
- return o < 0 ? 1 : o > 0 ? -1 : Math.pow(r.coordinates[0] - t.coordinates[0], 2) + Math.pow(r.coordinates[1] - t.coordinates[1], 2) - (Math.pow(i.coordinates[0] - t.coordinates[0], 2) + Math.pow(i.coordinates[1] - t.coordinates[1], 2))
- })), this.outerEdgesSorted = !0)
- }, t.prototype.getOuterEdges = function () {
- return this.sortOuterEdges(), this.outerEdges
- }, t.prototype.getOuterEdge = function (t) {
- return this.sortOuterEdges(), this.outerEdges[t]
- }, t.prototype.addInnerEdge = function (t) {
- this.innerEdges.push(t)
- }, t
- }(),
- ls = function () {
- function t(t, e) {
- this.from = t, this.to = e, this.next = void 0, this.label = void 0, this.symetric = void 0, this.ring = void 0, this.from.addOuterEdge(this), this.to.addInnerEdge(this)
- }
- return t.prototype.getSymetric = function () {
- return this.symetric || (this.symetric = new t(this.to, this.from), this.symetric.symetric = this), this.symetric
- }, t.prototype.deleteEdge = function () {
- this.from.removeOuterEdge(this), this.to.removeInnerEdge(this)
- }, t.prototype.isEqual = function (t) {
- return this.from.id === t.from.id && this.to.id === t.to.id
- }, t.prototype.toString = function () {
- return "Edge { " + this.from.id + " -> " + this.to.id + " }"
- }, t.prototype.toLineString = function () {
- return h([this.from.coordinates, this.to.coordinates])
- }, t.prototype.compareTo = function (t) {
- return ss(t.from.coordinates, t.to.coordinates, this.to.coordinates)
- }, t
- }(),
- cs = function () {
- function t() {
- this.edges = [], this.polygon = void 0, this.envelope = void 0
- }
- return t.prototype.push = function (t) {
- this.edges.push(t), this.polygon = this.envelope = void 0
- }, t.prototype.get = function (t) {
- return this.edges[t]
- }, Object.defineProperty(t.prototype, "length", {
- get: function () {
- return this.edges.length
- },
- enumerable: !0,
- configurable: !0
- }), t.prototype.forEach = function (t) {
- this.edges.forEach(t)
- }, t.prototype.map = function (t) {
- return this.edges.map(t)
- }, t.prototype.some = function (t) {
- return this.edges.some(t)
- }, t.prototype.isValid = function () {
- return !0
- }, t.prototype.isHole = function () {
- var t = this,
- e = this.edges.reduce((function (e, n, r) {
- return n.from.coordinates[1] > t.edges[e].from.coordinates[1] && (e = r), e
- }), 0),
- n = (0 === e ? this.length : e) - 1,
- r = (e + 1) % this.length,
- i = ss(this.edges[n].from.coordinates, this.edges[e].from.coordinates, this.edges[r].from.coordinates);
- return 0 === i ? this.edges[n].from.coordinates[0] > this.edges[r].from.coordinates[0] : i > 0
- }, t.prototype.toMultiPoint = function () {
- return d(this.edges.map((function (t) {
- return t.from.coordinates
- })))
- }, t.prototype.toPolygon = function () {
- if (this.polygon) return this.polygon;
- var t = this.edges.map((function (t) {
- return t.from.coordinates
- }));
- return t.push(this.edges[0].from.coordinates), this.polygon = l([t])
- }, t.prototype.getEnvelope = function () {
- return this.envelope ? this.envelope : this.envelope = dn(this.toPolygon())
- }, t.findEdgeRingContaining = function (t, e) {
- var n, r, i = t.getEnvelope();
- return e.forEach((function (e) {
- var o, s, u, l, c, h, p = e.getEnvelope();
- if ((r && (n = r.getEnvelope()), s = i, u = (o = p).geometry.coordinates[0].map((function (t) {
- return t[0]
- })), l = o.geometry.coordinates[0].map((function (t) {
- return t[1]
- })), c = s.geometry.coordinates[0].map((function (t) {
- return t[0]
- })), h = s.geometry.coordinates[0].map((function (t) {
- return t[1]
- })), Math.max.apply(null, u) !== Math.max.apply(null, c) || Math.max.apply(null, l) !== Math.max.apply(null, h) || Math.min.apply(null, u) !== Math.min.apply(null, c) || Math.min.apply(null, l) !== Math.min.apply(null, h)) && as(p, i)) {
- for (var f = t.map((function (t) {
- return t.from.coordinates
- })), g = void 0, d = function (t) {
- e.some((function (e) {
- return n = t, r = e.from.coordinates, n[0] === r[0] && n[1] === r[1];
- var n, r
- })) || (g = t)
- }, y = 0, v = f; y < v.length; y++) {
- d(v[y])
- }
- g && e.inside(a(g)) && (r && !as(n, p) || (r = e))
- }
- })), r
- }, t.prototype.inside = function (t) {
- return ye(t, this.toPolygon())
- }, t
- }();
- var hs = function () {
- function t() {
- this.edges = [], this.nodes = {}
- }
- return t.fromGeoJson = function (e) {
- ! function (t) {
- if (!t) throw new Error("No geojson passed");
- if ("FeatureCollection" !== t.type && "GeometryCollection" !== t.type && "MultiLineString" !== t.type && "LineString" !== t.type && "Feature" !== t.type) throw new Error("Invalid input type '" + t.type + "'. Geojson must be FeatureCollection, GeometryCollection, LineString, MultiLineString or Feature")
- }(e);
- var n = new t;
- return z(e, (function (t) {
- et(t, "LineString", "Graph::fromGeoJson"), T(t, (function (t, e) {
- if (t) {
- var r = n.getNode(t),
- i = n.getNode(e);
- n.addEdge(r, i)
- }
- return e
- }))
- })), n
- }, t.prototype.getNode = function (t) {
- var e = us.buildId(t),
- n = this.nodes[e];
- return n || (n = this.nodes[e] = new us(t)), n
- }, t.prototype.addEdge = function (t, e) {
- var n = new ls(t, e),
- r = n.getSymetric();
- this.edges.push(n), this.edges.push(r)
- }, t.prototype.deleteDangles = function () {
- var t = this;
- Object.keys(this.nodes).map((function (e) {
- return t.nodes[e]
- })).forEach((function (e) {
- return t._removeIfDangle(e)
- }))
- }, t.prototype._removeIfDangle = function (t) {
- var e = this;
- if (t.innerEdges.length <= 1) {
- var n = t.getOuterEdges().map((function (t) {
- return t.to
- }));
- this.removeNode(t), n.forEach((function (t) {
- return e._removeIfDangle(t)
- }))
- }
- }, t.prototype.deleteCutEdges = function () {
- var t = this;
- this._computeNextCWEdges(), this._findLabeledEdgeRings(), this.edges.forEach((function (e) {
- e.label === e.symetric.label && (t.removeEdge(e.symetric), t.removeEdge(e))
- }))
- }, t.prototype._computeNextCWEdges = function (t) {
- var e = this;
- void 0 === t ? Object.keys(this.nodes).forEach((function (t) {
- return e._computeNextCWEdges(e.nodes[t])
- })) : t.getOuterEdges().forEach((function (e, n) {
- t.getOuterEdge((0 === n ? t.getOuterEdges().length : n) - 1).symetric.next = e
- }))
- }, t.prototype._computeNextCCWEdges = function (t, e) {
- for (var n, r, i = t.getOuterEdges(), o = i.length - 1; o >= 0; --o) {
- var s = i[o],
- a = s.symetric,
- u = void 0,
- l = void 0;
- s.label === e && (u = s), a.label === e && (l = a), u && l && (l && (r = l), u && (r && (r.next = u, r = void 0), n || (n = u)))
- }
- r && (r.next = n)
- }, t.prototype._findLabeledEdgeRings = function () {
- var t = [],
- e = 0;
- return this.edges.forEach((function (n) {
- if (!(n.label >= 0)) {
- t.push(n);
- var r = n;
- do {
- r.label = e, r = r.next
- } while (!n.isEqual(r));
- e++
- }
- })), t
- }, t.prototype.getEdgeRings = function () {
- var t = this;
- this._computeNextCWEdges(), this.edges.forEach((function (t) {
- t.label = void 0
- })), this._findLabeledEdgeRings().forEach((function (e) {
- t._findIntersectionNodes(e).forEach((function (n) {
- t._computeNextCCWEdges(n, e.label)
- }))
- }));
- var e = [];
- return this.edges.forEach((function (n) {
- n.ring || e.push(t._findEdgeRing(n))
- })), e
- }, t.prototype._findIntersectionNodes = function (t) {
- var e = [],
- n = t,
- r = function () {
- var r = 0;
- n.from.getOuterEdges().forEach((function (e) {
- e.label === t.label && ++r
- })), r > 1 && e.push(n.from), n = n.next
- };
- do {
- r()
- } while (!t.isEqual(n));
- return e
- }, t.prototype._findEdgeRing = function (t) {
- var e = t,
- n = new cs;
- do {
- n.push(e), e.ring = n, e = e.next
- } while (!t.isEqual(e));
- return n
- }, t.prototype.removeNode = function (t) {
- var e = this;
- t.getOuterEdges().forEach((function (t) {
- return e.removeEdge(t)
- })), t.innerEdges.forEach((function (t) {
- return e.removeEdge(t)
- })), delete this.nodes[t.id]
- }, t.prototype.removeEdge = function (t) {
- this.edges = this.edges.filter((function (e) {
- return !e.isEqual(t)
- })), t.deleteEdge()
- }, t
- }();
- function ps(t, e) {
- var n = !0;
- return z(t, (function (t) {
- z(e, (function (e) {
- if (!1 === n) return !1;
- n = function (t, e) {
- switch (t.type) {
- case "Point":
- switch (e.type) {
- case "Point":
- return n = t.coordinates, r = e.coordinates, !(n[0] === r[0] && n[1] === r[1]);
- case "LineString":
- return !fs(e, t);
- case "Polygon":
- return !ye(t, e)
- }
- break;
- case "LineString":
- switch (e.type) {
- case "Point":
- return !fs(t, e);
- case "LineString":
- return ! function (t, e) {
- if (Or(t, e).features.length > 0) return !0;
- return !1
- }(t, e);
- case "Polygon":
- return !gs(e, t)
- }
- break;
- case "Polygon":
- switch (e.type) {
- case "Point":
- return !ye(e, t);
- case "LineString":
- return !gs(t, e);
- case "Polygon":
- return ! function (t, e) {
- for (var n = 0, r = t.coordinates[0]; n < r.length; n++) {
- if (ye(r[n], e)) return !0
- }
- for (var i = 0, o = e.coordinates[0]; i < o.length; i++) {
- if (ye(o[i], t)) return !0
- }
- if (Or(Ii(t), Ii(e)).features.length > 0) return !0;
- return !1
- }(e, t)
- }
- }
- var n, r;
- return !1
- }(t.geometry, e.geometry)
- }))
- })), n
- }
- function fs(t, e) {
- for (var n = 0; n < t.coordinates.length - 1; n++)
- if (ds(t.coordinates[n], t.coordinates[n + 1], e.coordinates)) return !0;
- return !1
- }
- function gs(t, e) {
- for (var n = 0, r = e.coordinates; n < r.length; n++) {
- if (ye(r[n], t)) return !0
- }
- return Or(e, Ii(t)).features.length > 0
- }
- function ds(t, e, n) {
- var r = n[0] - t[0],
- i = n[1] - t[1],
- o = e[0] - t[0],
- s = e[1] - t[1];
- return 0 == r * s - i * o && (Math.abs(o) >= Math.abs(s) ? o > 0 ? t[0] <= n[0] && n[0] <= e[0] : e[0] <= n[0] && n[0] <= t[0] : s > 0 ? t[1] <= n[1] && n[1] <= e[1] : e[1] <= n[1] && n[1] <= t[1])
- }
- function ys(t, e) {
- return !(t[0] > e[0]) && (!(t[2] < e[2]) && (!(t[1] > e[1]) && !(t[3] < e[3])))
- }
- function vs(t, e) {
- return t[0] === e[0] && t[1] === e[1]
- }
- function _s(t, e) {
- return [(t[0] + e[0]) / 2, (t[1] + e[1]) / 2]
- }
- function ms(t, e) {
- for (var n = !1, r = !1, i = t.coordinates.length, o = 0; o < i && !n && !r;) {
- for (var s = 0; s < e.coordinates.length - 1; s++) {
- var a = !0;
- 0 !== s && s !== e.coordinates.length - 2 || (a = !1), bs(e.coordinates[s], e.coordinates[s + 1], t.coordinates[o], a) ? n = !0 : r = !0
- }
- o++
- }
- return n && r
- }
- function xs(t, e) {
- return Or(t, Ni(e)).features.length > 0
- }
- function Es(t, e) {
- for (var n = !1, r = !1, i = t.coordinates.length, o = 0; o < i && (!n || !r); o++) ye(a(t.coordinates[o]), e) ? n = !0 : r = !0;
- return r && n
- }
- function bs(t, e, n, r) {
- var i = n[0] - t[0],
- o = n[1] - t[1],
- s = e[0] - t[0],
- a = e[1] - t[1];
- return 0 == i * a - o * s && (r ? Math.abs(s) >= Math.abs(a) ? s > 0 ? t[0] <= n[0] && n[0] <= e[0] : e[0] <= n[0] && n[0] <= t[0] : a > 0 ? t[1] <= n[1] && n[1] <= e[1] : e[1] <= n[1] && n[1] <= t[1] : Math.abs(s) >= Math.abs(a) ? s > 0 ? t[0] < n[0] && n[0] < e[0] : e[0] < n[0] && n[0] < t[0] : a > 0 ? t[1] < n[1] && n[1] < e[1] : e[1] < n[1] && n[1] < t[1])
- }
- var ws = function (t) {
- this.precision = t && t.precision ? t.precision : 17, this.direction = !(!t || !t.direction) && t.direction, this.pseudoNode = !(!t || !t.pseudoNode) && t.pseudoNode, this.objectComparator = t && t.objectComparator ? t.objectComparator : Ss
- };
- function Is(t) {
- return t.coordinates.map((function (e) {
- return {
- type: t.type.replace("Multi", ""),
- coordinates: e
- }
- }))
- }
- function Ns(t, e) {
- return t.hasOwnProperty("coordinates") ? t.coordinates.length === e.coordinates.length : t.length === e.length
- }
- function Ss(t, e) {
- return Fi(t, e, {
- strict: !0
- })
- }
- ws.prototype.compare = function (t, e) {
- if (t.type !== e.type || !Ns(t, e)) return !1;
- switch (t.type) {
- case "Point":
- return this.compareCoord(t.coordinates, e.coordinates);
- case "LineString":
- return this.compareLine(t.coordinates, e.coordinates, 0, !1);
- case "Polygon":
- return this.comparePolygon(t, e);
- case "Feature":
- return this.compareFeature(t, e);
- default:
- if (0 === t.type.indexOf("Multi")) {
- var n = this,
- r = Is(t),
- i = Is(e);
- return r.every((function (t) {
- return this.some((function (e) {
- return n.compare(t, e)
- }))
- }), i)
- }
- }
- return !1
- }, ws.prototype.compareCoord = function (t, e) {
- if (t.length !== e.length) return !1;
- for (var n = 0; n < t.length; n++)
- if (t[n].toFixed(this.precision) !== e[n].toFixed(this.precision)) return !1;
- return !0
- }, ws.prototype.compareLine = function (t, e, n, r) {
- if (!Ns(t, e)) return !1;
- var i = this.pseudoNode ? t : this.removePseudo(t),
- o = this.pseudoNode ? e : this.removePseudo(e);
- if (!r || this.compareCoord(i[0], o[0]) || (o = this.fixStartIndex(o, i))) {
- var s = this.compareCoord(i[n], o[n]);
- return this.direction || s ? this.comparePath(i, o) : !!this.compareCoord(i[n], o[o.length - (1 + n)]) && this.comparePath(i.slice().reverse(), o)
- }
- }, ws.prototype.fixStartIndex = function (t, e) {
- for (var n, r = -1, i = 0; i < t.length; i++)
- if (this.compareCoord(t[i], e[0])) {
- r = i;
- break
- } return r >= 0 && (n = [].concat(t.slice(r, t.length), t.slice(1, r + 1))), n
- }, ws.prototype.comparePath = function (t, e) {
- var n = this;
- return t.every((function (t, e) {
- return n.compareCoord(t, this[e])
- }), e)
- }, ws.prototype.comparePolygon = function (t, e) {
- if (this.compareLine(t.coordinates[0], e.coordinates[0], 1, !0)) {
- var n = t.coordinates.slice(1, t.coordinates.length),
- r = e.coordinates.slice(1, e.coordinates.length),
- i = this;
- return n.every((function (t) {
- return this.some((function (e) {
- return i.compareLine(t, e, 1, !0)
- }))
- }), r)
- }
- return !1
- }, ws.prototype.compareFeature = function (t, e) {
- return !(t.id !== e.id || !this.objectComparator(t.properties, e.properties) || !this.compareBBox(t, e)) && this.compare(t.geometry, e.geometry)
- }, ws.prototype.compareBBox = function (t, e) {
- return !!(!t.bbox && !e.bbox || t.bbox && e.bbox && this.compareCoord(t.bbox, e.bbox))
- }, ws.prototype.removePseudo = function (t) {
- return t
- };
- var Cs = ws;
- function Ps(t, e) {
- var n = !1;
- return z(t, (function (t) {
- z(e, (function (e) {
- if (!0 === n) return !0;
- n = !ps(t.geometry, e.geometry)
- }))
- })), n
- }
- var Ms = Bt((function (t) {
- function e(t, e, n, r) {
- this.dataset = [], this.epsilon = 1, this.minPts = 2, this.distance = this._euclideanDistance, this.clusters = [], this.noise = [], this._visited = [], this._assigned = [], this._datasetLength = 0, this._init(t, e, n, r)
- }
- e.prototype.run = function (t, e, n, r) {
- this._init(t, e, n, r);
- for (var i = 0; i < this._datasetLength; i++)
- if (1 !== this._visited[i]) {
- this._visited[i] = 1;
- var o = this._regionQuery(i);
- if (o.length < this.minPts) this.noise.push(i);
- else {
- var s = this.clusters.length;
- this.clusters.push([]), this._addToCluster(i, s), this._expandCluster(s, o)
- }
- } return this.clusters
- }, e.prototype._init = function (t, e, n, r) {
- if (t) {
- if (!(t instanceof Array)) throw Error("Dataset must be of type array, " + typeof t + " given");
- this.dataset = t, this.clusters = [], this.noise = [], this._datasetLength = t.length, this._visited = new Array(this._datasetLength), this._assigned = new Array(this._datasetLength)
- }
- e && (this.epsilon = e), n && (this.minPts = n), r && (this.distance = r)
- }, e.prototype._expandCluster = function (t, e) {
- for (var n = 0; n < e.length; n++) {
- var r = e[n];
- if (1 !== this._visited[r]) {
- this._visited[r] = 1;
- var i = this._regionQuery(r);
- i.length >= this.minPts && (e = this._mergeArrays(e, i))
- }
- 1 !== this._assigned[r] && this._addToCluster(r, t)
- }
- }, e.prototype._addToCluster = function (t, e) {
- this.clusters[e].push(t), this._assigned[t] = 1
- }, e.prototype._regionQuery = function (t) {
- for (var e = [], n = 0; n < this._datasetLength; n++) {
- this.distance(this.dataset[t], this.dataset[n]) < this.epsilon && e.push(n)
- }
- return e
- }, e.prototype._mergeArrays = function (t, e) {
- for (var n = e.length, r = 0; r < n; r++) {
- var i = e[r];
- t.indexOf(i) < 0 && t.push(i)
- }
- return t
- }, e.prototype._euclideanDistance = function (t, e) {
- for (var n = 0, r = Math.min(t.length, e.length); r--;) n += (t[r] - e[r]) * (t[r] - e[r]);
- return Math.sqrt(n)
- }, t.exports && (t.exports = e)
- })),
- Ls = Bt((function (t) {
- function e(t, e, n) {
- this.k = 3, this.dataset = [], this.assignments = [], this.centroids = [], this.init(t, e, n)
- }
- e.prototype.init = function (t, e, n) {
- this.assignments = [], this.centroids = [], void 0 !== t && (this.dataset = t), void 0 !== e && (this.k = e), void 0 !== n && (this.distance = n)
- }, e.prototype.run = function (t, e) {
- this.init(t, e);
- for (var n = this.dataset.length, r = 0; r < this.k; r++) this.centroids[r] = this.randomCentroid();
- for (var i = !0; i;) {
- i = this.assign();
- for (var o = 0; o < this.k; o++) {
- for (var s = new Array(c), a = 0, u = 0; u < c; u++) s[u] = 0;
- for (var l = 0; l < n; l++) {
- var c = this.dataset[l].length;
- if (o === this.assignments[l]) {
- for (u = 0; u < c; u++) s[u] += this.dataset[l][u];
- a++
- }
- }
- if (a > 0) {
- for (u = 0; u < c; u++) s[u] /= a;
- this.centroids[o] = s
- } else this.centroids[o] = this.randomCentroid(), i = !0
- }
- }
- return this.getClusters()
- }, e.prototype.randomCentroid = function () {
- var t, e, n = this.dataset.length - 1;
- do {
- e = Math.round(Math.random() * n), t = this.dataset[e]
- } while (this.centroids.indexOf(t) >= 0);
- return t
- }, e.prototype.assign = function () {
- for (var t, e = !1, n = this.dataset.length, r = 0; r < n; r++)(t = this.argmin(this.dataset[r], this.centroids, this.distance)) != this.assignments[r] && (this.assignments[r] = t, e = !0);
- return e
- }, e.prototype.getClusters = function () {
- for (var t, e = new Array(this.k), n = 0; n < this.assignments.length; n++) void 0 === e[t = this.assignments[n]] && (e[t] = []), e[t].push(n);
- return e
- }, e.prototype.argmin = function (t, e, n) {
- for (var r, i = Number.MAX_VALUE, o = 0, s = e.length, a = 0; a < s; a++)(r = n(t, e[a])) < i && (i = r, o = a);
- return o
- }, e.prototype.distance = function (t, e) {
- for (var n = 0, r = Math.min(t.length, e.length); r--;) {
- var i = t[r] - e[r];
- n += i * i
- }
- return Math.sqrt(n)
- }, t.exports && (t.exports = e)
- })),
- Os = Bt((function (t) {
- function e(t, e, n) {
- this._queue = [], this._priorities = [], this._sorting = "desc", this._init(t, e, n)
- }
- e.prototype.insert = function (t, e) {
- for (var n = this._queue.length, r = n; r--;) {
- var i = this._priorities[r];
- "desc" === this._sorting ? e > i && (n = r) : e < i && (n = r)
- }
- this._insertAt(t, e, n)
- }, e.prototype.remove = function (t) {
- for (var e = this._queue.length; e--;) {
- if (t === this._queue[e]) {
- this._queue.splice(e, 1), this._priorities.splice(e, 1);
- break
- }
- }
- }, e.prototype.forEach = function (t) {
- this._queue.forEach(t)
- }, e.prototype.getElements = function () {
- return this._queue
- }, e.prototype.getElementPriority = function (t) {
- return this._priorities[t]
- }, e.prototype.getPriorities = function () {
- return this._priorities
- }, e.prototype.getElementsWithPriorities = function () {
- for (var t = [], e = 0, n = this._queue.length; e < n; e++) t.push([this._queue[e], this._priorities[e]]);
- return t
- }, e.prototype._init = function (t, e, n) {
- if (t && e) {
- if (this._queue = [], this._priorities = [], t.length !== e.length) throw new Error("Arrays must have the same length");
- for (var r = 0; r < t.length; r++) this.insert(t[r], e[r])
- }
- n && (this._sorting = n)
- }, e.prototype._insertAt = function (t, e, n) {
- this._queue.length === n ? (this._queue.push(t), this._priorities.push(e)) : (this._queue.splice(n, 0, t), this._priorities.splice(n, 0, e))
- }, t.exports && (t.exports = e)
- })),
- Rs = Bt((function (t) {
- if (t.exports) var e = Os;
- function n(t, e, n, r) {
- this.epsilon = 1, this.minPts = 1, this.distance = this._euclideanDistance, this._reachability = [], this._processed = [], this._coreDistance = 0, this._orderedList = [], this._init(t, e, n, r)
- }
- n.prototype.run = function (t, n, r, i) {
- this._init(t, n, r, i);
- for (var o = 0, s = this.dataset.length; o < s; o++)
- if (1 !== this._processed[o]) {
- this._processed[o] = 1, this.clusters.push([o]);
- var a = this.clusters.length - 1;
- this._orderedList.push(o);
- var u = new e(null, null, "asc"),
- l = this._regionQuery(o);
- void 0 !== this._distanceToCore(o) && (this._updateQueue(o, l, u), this._expandCluster(a, u))
- } return this.clusters
- }, n.prototype.getReachabilityPlot = function () {
- for (var t = [], e = 0, n = this._orderedList.length; e < n; e++) {
- var r = this._orderedList[e],
- i = this._reachability[r];
- t.push([r, i])
- }
- return t
- }, n.prototype._init = function (t, e, n, r) {
- if (t) {
- if (!(t instanceof Array)) throw Error("Dataset must be of type array, " + typeof t + " given");
- this.dataset = t, this.clusters = [], this._reachability = new Array(this.dataset.length), this._processed = new Array(this.dataset.length), this._coreDistance = 0, this._orderedList = []
- }
- e && (this.epsilon = e), n && (this.minPts = n), r && (this.distance = r)
- }, n.prototype._updateQueue = function (t, e, n) {
- var r = this;
- this._coreDistance = this._distanceToCore(t), e.forEach((function (e) {
- if (void 0 === r._processed[e]) {
- var i = r.distance(r.dataset[t], r.dataset[e]),
- o = Math.max(r._coreDistance, i);
- void 0 === r._reachability[e] ? (r._reachability[e] = o, n.insert(e, o)) : o < r._reachability[e] && (r._reachability[e] = o, n.remove(e), n.insert(e, o))
- }
- }))
- }, n.prototype._expandCluster = function (t, e) {
- for (var n = e.getElements(), r = 0, i = n.length; r < i; r++) {
- var o = n[r];
- if (void 0 === this._processed[o]) {
- var s = this._regionQuery(o);
- this._processed[o] = 1, this.clusters[t].push(o), this._orderedList.push(o), void 0 !== this._distanceToCore(o) && (this._updateQueue(o, s, e), this._expandCluster(t, e))
- }
- }
- }, n.prototype._distanceToCore = function (t) {
- for (var e = this.epsilon, n = 0; n < e; n++) {
- if (this._regionQuery(t, n).length >= this.minPts) return n
- }
- }, n.prototype._regionQuery = function (t, e) {
- e = e || this.epsilon;
- for (var n = [], r = 0, i = this.dataset.length; r < i; r++) this.distance(this.dataset[t], this.dataset[r]) < e && n.push(r);
- return n
- }, n.prototype._euclideanDistance = function (t, e) {
- for (var n = 0, r = Math.min(t.length, e.length); r--;) n += (t[r] - e[r]) * (t[r] - e[r]);
- return Math.sqrt(n)
- }, t.exports && (t.exports = n)
- })),
- Ts = Bt((function (t) {
- t.exports && (t.exports = {
- DBSCAN: Ms,
- KMEANS: Ls,
- OPTICS: Rs,
- PriorityQueue: Os
- })
- }));
- var As = function (t, e, n) {
- for (var r = t.length, i = 0, o = 0; o < r; o++) {
- var s = (t[o] || 0) - (e[o] || 0);
- i += s * s
- }
- return n ? Math.sqrt(i) : i
- },
- Ds = As,
- Fs = function (t, e, n) {
- var r = Math.abs(t - e);
- return n ? r : r * r
- },
- ks = As,
- Gs = function (t, e) {
- for (var n = {}, r = [], i = e << 2, o = t.length, s = t[0].length > 0; r.length < e && i-- > 0;) {
- var a = t[Math.floor(Math.random() * o)],
- u = s ? a.join("_") : "" + a;
- n[u] || (n[u] = !0, r.push(a))
- }
- if (r.length < e) throw new Error("Error initializating clusters");
- return r
- },
- qs = function (t, e) {
- var n = t[0].length ? Ds : Fs,
- r = [],
- i = t.length,
- o = t[0].length > 0,
- s = t[Math.floor(Math.random() * i)];
- o && s.join("_");
- for (r.push(s); r.length < e;) {
- for (var a = [], u = r.length, l = 0, c = [], h = 0; h < i; h++) {
- for (var p = 1 / 0, f = 0; f < u; f++) {
- var g = n(t[h], r[f]);
- g <= p && (p = g)
- }
- a[h] = p
- }
- for (var d = 0; d < i; d++) l += a[d];
- for (var y = 0; y < i; y++) c[y] = {
- i: y,
- v: t[y],
- pr: a[y] / l,
- cs: 0
- };
- c.sort((function (t, e) {
- return t.pr - e.pr
- })), c[0].cs = c[0].pr;
- for (var v = 1; v < i; v++) c[v].cs = c[v - 1].cs + c[v].pr;
- for (var _ = Math.random(), m = 0; m < i - 1 && c[m++].cs < _;);
- r.push(c[m - 1].v)
- }
- return r
- };
- function Bs(t, e, n) {
- n = n || [];
- for (var r = 0; r < t; r++) n[r] = e;
- return n
- }
- var zs = function (t, e, n, r) {
- var i = [],
- o = [],
- s = [],
- a = [],
- u = !1,
- l = r || 1e4,
- c = t.length,
- h = t[0].length,
- p = h > 0,
- f = [];
- if (n) i = "kmrand" == n ? Gs(t, e) : "kmpp" == n ? qs(t, e) : n;
- else
- for (var g = {}; i.length < e;) {
- var d = Math.floor(Math.random() * c);
- g[d] || (g[d] = !0, i.push(t[d]))
- }
- do {
- Bs(e, 0, f);
- for (var y = 0; y < c; y++) {
- for (var v = 1 / 0, _ = 0, m = 0; m < e; m++) {
- (a = p ? ks(t[y], i[m]) : Math.abs(t[y] - i[m])) <= v && (v = a, _ = m)
- }
- s[y] = _, f[_]++
- }
- for (var x = [], E = (o = [], 0); E < e; E++) x[E] = p ? Bs(h, 0, x[E]) : 0, o[E] = i[E];
- if (p) {
- for (var b = 0; b < e; b++) i[b] = [];
- for (var w = 0; w < c; w++)
- for (var I = x[s[w]], N = t[w], S = 0; S < h; S++) I[S] += N[S];
- u = !0;
- for (var C = 0; C < e; C++) {
- for (var P = i[C], M = x[C], L = o[C], O = f[C], R = 0; R < h; R++) P[R] = M[R] / O || 0;
- if (u)
- for (var T = 0; T < h; T++)
- if (L[T] != P[T]) {
- u = !1;
- break
- }
- }
- } else {
- for (var A = 0; A < c; A++) {
- x[s[A]] += t[A]
- }
- for (var D = 0; D < e; D++) i[D] = x[D] / f[D] || 0;
- u = !0;
- for (var F = 0; F < e; F++)
- if (o[F] != i[F]) {
- u = !1;
- break
- }
- }
- u = u || --l <= 0
- } while (!u);
- return {
- it: 1e4 - l,
- k: e,
- idxs: s,
- centroids: i
- }
- };
- function js(t, e) {
- return b(Bi(t[0], t[1])) === b(Bi(e[0], e[1]))
- }
- function Us(t, e) {
- if (t.geometry && t.geometry.type) return t.geometry.type;
- if (t.type) return t.type;
- throw new Error("Invalid GeoJSON object for " + e)
- }
- function Vs(t) {
- for (var e = t, n = []; e.parent;) n.unshift(e), e = e.parent;
- return n
- }
- var Xs = {
- search: function (t, e, n, r) {
- t.cleanDirty();
- var i = (r = r || {}).heuristic || Xs.heuristics.manhattan,
- o = r.closest || !1,
- s = new Ws((function (t) {
- return t.f
- })),
- a = e;
- for (e.h = i(e, n), s.push(e); s.size() > 0;) {
- var u = s.pop();
- if (u === n) return Vs(u);
- u.closed = !0;
- for (var l = t.neighbors(u), c = 0, h = l.length; c < h; ++c) {
- var p = l[c];
- if (!p.closed && !p.isWall()) {
- var f = u.g + p.getCost(u),
- g = p.visited;
- (!g || f < p.g) && (p.visited = !0, p.parent = u, p.h = p.h || i(p, n), p.g = f, p.f = p.g + p.h, t.markDirty(p), o && (p.h < a.h || p.h === a.h && p.g < a.g) && (a = p), g ? s.rescoreElement(p) : s.push(p))
- }
- }
- }
- return o ? Vs(a) : []
- },
- heuristics: {
- manhattan: function (t, e) {
- return Math.abs(e.x - t.x) + Math.abs(e.y - t.y)
- },
- diagonal: function (t, e) {
- var n = Math.sqrt(2),
- r = Math.abs(e.x - t.x),
- i = Math.abs(e.y - t.y);
- return 1 * (r + i) + (n - 2) * Math.min(r, i)
- }
- },
- cleanNode: function (t) {
- t.f = 0, t.g = 0, t.h = 0, t.visited = !1, t.closed = !1, t.parent = null
- }
- };
- function Ys(t, e) {
- e = e || {}, this.nodes = [], this.diagonal = !!e.diagonal, this.grid = [];
- for (var n = 0; n < t.length; n++) {
- this.grid[n] = [];
- for (var r = 0, i = t[n]; r < i.length; r++) {
- var o = new Hs(n, r, i[r]);
- this.grid[n][r] = o, this.nodes.push(o)
- }
- }
- this.init()
- }
- function Hs(t, e, n) {
- this.x = t, this.y = e, this.weight = n
- }
- function Ws(t) {
- this.content = [], this.scoreFunction = t
- }
- function Js(t, e) {
- for (var n = 0; n < e.features.length; n++)
- if (ye(t, e.features[n])) return !0;
- return !1
- }
- function Zs(t) {
- return function () {
- return t
- }
- }
- function Ks(t) {
- return t[0]
- }
- function Qs(t) {
- return t[1]
- }
- function $s() {
- this._ = null
- }
- function ta(t) {
- t.U = t.C = t.L = t.R = t.P = t.N = null
- }
- function ea(t, e) {
- var n = e,
- r = e.R,
- i = n.U;
- i ? i.L === n ? i.L = r : i.R = r : t._ = r, r.U = i, n.U = r, n.R = r.L, n.R && (n.R.U = n), r.L = n
- }
- function na(t, e) {
- var n = e,
- r = e.L,
- i = n.U;
- i ? i.L === n ? i.L = r : i.R = r : t._ = r, r.U = i, n.U = r, n.L = r.R, n.L && (n.L.U = n), r.R = n
- }
- function ra(t) {
- for (; t.L;) t = t.L;
- return t
- }
- function ia(t, e, n, r) {
- var i = [null, null],
- o = Pa.push(i) - 1;
- return i.left = t, i.right = e, n && sa(i, t, e, n), r && sa(i, e, t, r), Sa[t.index].halfedges.push(o), Sa[e.index].halfedges.push(o), i
- }
- function oa(t, e, n) {
- var r = [e, n];
- return r.left = t, r
- }
- function sa(t, e, n, r) {
- t[0] || t[1] ? t.left === n ? t[1] = r : t[0] = r : (t[0] = r, t.left = e, t.right = n)
- }
- function aa(t, e, n, r, i) {
- var o, s = t[0],
- a = t[1],
- u = s[0],
- l = s[1],
- c = 0,
- h = 1,
- p = a[0] - u,
- f = a[1] - l;
- if (o = e - u, p || !(o > 0)) {
- if (o /= p, p < 0) {
- if (o < c) return;
- o < h && (h = o)
- } else if (p > 0) {
- if (o > h) return;
- o > c && (c = o)
- }
- if (o = r - u, p || !(o < 0)) {
- if (o /= p, p < 0) {
- if (o > h) return;
- o > c && (c = o)
- } else if (p > 0) {
- if (o < c) return;
- o < h && (h = o)
- }
- if (o = n - l, f || !(o > 0)) {
- if (o /= f, f < 0) {
- if (o < c) return;
- o < h && (h = o)
- } else if (f > 0) {
- if (o > h) return;
- o > c && (c = o)
- }
- if (o = i - l, f || !(o < 0)) {
- if (o /= f, f < 0) {
- if (o > h) return;
- o > c && (c = o)
- } else if (f > 0) {
- if (o < c) return;
- o < h && (h = o)
- }
- return !(c > 0 || h < 1) || (c > 0 && (t[0] = [u + c * p, l + c * f]), h < 1 && (t[1] = [u + h * p, l + h * f]), !0)
- }
- }
- }
- }
- }
- function ua(t, e, n, r, i) {
- var o = t[1];
- if (o) return !0;
- var s, a, u = t[0],
- l = t.left,
- c = t.right,
- h = l[0],
- p = l[1],
- f = c[0],
- g = c[1],
- d = (h + f) / 2,
- y = (p + g) / 2;
- if (g === p) {
- if (d < e || d >= r) return;
- if (h > f) {
- if (u) {
- if (u[1] >= i) return
- } else u = [d, n];
- o = [d, i]
- } else {
- if (u) {
- if (u[1] < n) return
- } else u = [d, i];
- o = [d, n]
- }
- } else if (a = y - (s = (h - f) / (g - p)) * d, s < -1 || s > 1)
- if (h > f) {
- if (u) {
- if (u[1] >= i) return
- } else u = [(n - a) / s, n];
- o = [(i - a) / s, i]
- } else {
- if (u) {
- if (u[1] < n) return
- } else u = [(i - a) / s, i];
- o = [(n - a) / s, n]
- }
- else if (p < g) {
- if (u) {
- if (u[0] >= r) return
- } else u = [e, s * e + a];
- o = [r, s * r + a]
- } else {
- if (u) {
- if (u[0] < e) return
- } else u = [r, s * r + a];
- o = [e, s * e + a]
- }
- return t[0] = u, t[1] = o, !0
- }
- function la(t, e) {
- var n = t.site,
- r = e.left,
- i = e.right;
- return n === i && (i = r, r = n), i ? Math.atan2(i[1] - r[1], i[0] - r[0]) : (n === r ? (r = e[1], i = e[0]) : (r = e[0], i = e[1]), Math.atan2(r[0] - i[0], i[1] - r[1]))
- }
- function ca(t, e) {
- return e[+(e.left !== t.site)]
- }
- function ha(t, e) {
- return e[+(e.left === t.site)]
- }
- Ys.prototype.init = function () {
- this.dirtyNodes = [];
- for (var t = 0; t < this.nodes.length; t++) Xs.cleanNode(this.nodes[t])
- }, Ys.prototype.cleanDirty = function () {
- for (var t = 0; t < this.dirtyNodes.length; t++) Xs.cleanNode(this.dirtyNodes[t]);
- this.dirtyNodes = []
- }, Ys.prototype.markDirty = function (t) {
- this.dirtyNodes.push(t)
- }, Ys.prototype.neighbors = function (t) {
- var e = [],
- n = t.x,
- r = t.y,
- i = this.grid;
- return i[n - 1] && i[n - 1][r] && e.push(i[n - 1][r]), i[n + 1] && i[n + 1][r] && e.push(i[n + 1][r]), i[n] && i[n][r - 1] && e.push(i[n][r - 1]), i[n] && i[n][r + 1] && e.push(i[n][r + 1]), this.diagonal && (i[n - 1] && i[n - 1][r - 1] && e.push(i[n - 1][r - 1]), i[n + 1] && i[n + 1][r - 1] && e.push(i[n + 1][r - 1]), i[n - 1] && i[n - 1][r + 1] && e.push(i[n - 1][r + 1]), i[n + 1] && i[n + 1][r + 1] && e.push(i[n + 1][r + 1])), e
- }, Ys.prototype.toString = function () {
- for (var t, e, n, r, i = [], o = this.grid, s = 0, a = o.length; s < a; s++) {
- for (t = [], n = 0, r = (e = o[s]).length; n < r; n++) t.push(e[n].weight);
- i.push(t.join(" "))
- }
- return i.join("\n")
- }, Hs.prototype.toString = function () {
- return "[" + this.x + " " + this.y + "]"
- }, Hs.prototype.getCost = function (t) {
- return t && t.x !== this.x && t.y !== this.y ? 1.41421 * this.weight : this.weight
- }, Hs.prototype.isWall = function () {
- return 0 === this.weight
- }, Ws.prototype = {
- push: function (t) {
- this.content.push(t), this.sinkDown(this.content.length - 1)
- },
- pop: function () {
- var t = this.content[0],
- e = this.content.pop();
- return this.content.length > 0 && (this.content[0] = e, this.bubbleUp(0)), t
- },
- remove: function (t) {
- var e = this.content.indexOf(t),
- n = this.content.pop();
- e !== this.content.length - 1 && (this.content[e] = n, this.scoreFunction(n) < this.scoreFunction(t) ? this.sinkDown(e) : this.bubbleUp(e))
- },
- size: function () {
- return this.content.length
- },
- rescoreElement: function (t) {
- this.sinkDown(this.content.indexOf(t))
- },
- sinkDown: function (t) {
- for (var e = this.content[t]; t > 0;) {
- var n = (t + 1 >> 1) - 1,
- r = this.content[n];
- if (!(this.scoreFunction(e) < this.scoreFunction(r))) break;
- this.content[n] = e, this.content[t] = r, t = n
- }
- },
- bubbleUp: function (t) {
- for (var e = this.content.length, n = this.content[t], r = this.scoreFunction(n);;) {
- var i, o = t + 1 << 1,
- s = o - 1,
- a = null;
- if (s < e) {
- var u = this.content[s];
- (i = this.scoreFunction(u)) < r && (a = s)
- }
- if (o < e) {
- var l = this.content[o];
- this.scoreFunction(l) < (null === a ? r : i) && (a = o)
- }
- if (null === a) break;
- this.content[t] = this.content[a], this.content[a] = n, t = a
- }
- }
- }, $s.prototype = {
- constructor: $s,
- insert: function (t, e) {
- var n, r, i;
- if (t) {
- if (e.P = t, e.N = t.N, t.N && (t.N.P = e), t.N = e, t.R) {
- for (t = t.R; t.L;) t = t.L;
- t.L = e
- } else t.R = e;
- n = t
- } else this._ ? (t = ra(this._), e.P = null, e.N = t, t.P = t.L = e, n = t) : (e.P = e.N = null, this._ = e, n = null);
- for (e.L = e.R = null, e.U = n, e.C = !0, t = e; n && n.C;) n === (r = n.U).L ? (i = r.R) && i.C ? (n.C = i.C = !1, r.C = !0, t = r) : (t === n.R && (ea(this, n), n = (t = n).U), n.C = !1, r.C = !0, na(this, r)) : (i = r.L) && i.C ? (n.C = i.C = !1, r.C = !0, t = r) : (t === n.L && (na(this, n), n = (t = n).U), n.C = !1, r.C = !0, ea(this, r)), n = t.U;
- this._.C = !1
- },
- remove: function (t) {
- t.N && (t.N.P = t.P), t.P && (t.P.N = t.N), t.N = t.P = null;
- var e, n, r, i = t.U,
- o = t.L,
- s = t.R;
- if (n = o ? s ? ra(s) : o : s, i ? i.L === t ? i.L = n : i.R = n : this._ = n, o && s ? (r = n.C, n.C = t.C, n.L = o, o.U = n, n !== s ? (i = n.U, n.U = t.U, t = n.R, i.L = t, n.R = s, s.U = n) : (n.U = i, i = n, t = n.R)) : (r = t.C, t = n), t && (t.U = i), !r)
- if (t && t.C) t.C = !1;
- else {
- do {
- if (t === this._) break;
- if (t === i.L) {
- if ((e = i.R).C && (e.C = !1, i.C = !0, ea(this, i), e = i.R), e.L && e.L.C || e.R && e.R.C) {
- e.R && e.R.C || (e.L.C = !1, e.C = !0, na(this, e), e = i.R), e.C = i.C, i.C = e.R.C = !1, ea(this, i), t = this._;
- break
- }
- } else if ((e = i.L).C && (e.C = !1, i.C = !0, na(this, i), e = i.L), e.L && e.L.C || e.R && e.R.C) {
- e.L && e.L.C || (e.R.C = !1, e.C = !0, ea(this, e), e = i.L), e.C = i.C, i.C = e.L.C = !1, na(this, i), t = this._;
- break
- }
- e.C = !0, t = i, i = i.U
- } while (!t.C);
- t && (t.C = !1)
- }
- }
- };
- var pa, fa = [];
- function ga() {
- ta(this), this.x = this.y = this.arc = this.site = this.cy = null
- }
- function da(t) {
- var e = t.P,
- n = t.N;
- if (e && n) {
- var r = e.site,
- i = t.site,
- o = n.site;
- if (r !== o) {
- var s = i[0],
- a = i[1],
- u = r[0] - s,
- l = r[1] - a,
- c = o[0] - s,
- h = o[1] - a,
- p = 2 * (u * h - l * c);
- if (!(p >= -La)) {
- var f = u * u + l * l,
- g = c * c + h * h,
- d = (h * f - l * g) / p,
- y = (u * g - c * f) / p,
- v = fa.pop() || new ga;
- v.arc = t, v.site = i, v.x = d + s, v.y = (v.cy = y + a) + Math.sqrt(d * d + y * y), t.circle = v;
- for (var _ = null, m = Ca._; m;)
- if (v.y < m.y || v.y === m.y && v.x <= m.x) {
- if (!m.L) {
- _ = m.P;
- break
- }
- m = m.L
- } else {
- if (!m.R) {
- _ = m;
- break
- }
- m = m.R
- } Ca.insert(_, v), _ || (pa = v)
- }
- }
- }
- }
- function ya(t) {
- var e = t.circle;
- e && (e.P || (pa = e.N), Ca.remove(e), fa.push(e), ta(e), t.circle = null)
- }
- var va = [];
- function _a() {
- ta(this), this.edge = this.site = this.circle = null
- }
- function ma(t) {
- var e = va.pop() || new _a;
- return e.site = t, e
- }
- function xa(t) {
- ya(t), Na.remove(t), va.push(t), ta(t)
- }
- function Ea(t) {
- var e = t.circle,
- n = e.x,
- r = e.cy,
- i = [n, r],
- o = t.P,
- s = t.N,
- a = [t];
- xa(t);
- for (var u = o; u.circle && Math.abs(n - u.circle.x) < Ma && Math.abs(r - u.circle.cy) < Ma;) o = u.P, a.unshift(u), xa(u), u = o;
- a.unshift(u), ya(u);
- for (var l = s; l.circle && Math.abs(n - l.circle.x) < Ma && Math.abs(r - l.circle.cy) < Ma;) s = l.N, a.push(l), xa(l), l = s;
- a.push(l), ya(l);
- var c, h = a.length;
- for (c = 1; c < h; ++c) l = a[c], u = a[c - 1], sa(l.edge, u.site, l.site, i);
- u = a[0], (l = a[h - 1]).edge = ia(u.site, l.site, null, i), da(u), da(l)
- }
- function ba(t) {
- for (var e, n, r, i, o = t[0], s = t[1], a = Na._; a;)
- if ((r = wa(a, s) - o) > Ma) a = a.L;
- else {
- if (!((i = o - Ia(a, s)) > Ma)) {
- r > -Ma ? (e = a.P, n = a) : i > -Ma ? (e = a, n = a.N) : e = n = a;
- break
- }
- if (!a.R) {
- e = a;
- break
- }
- a = a.R
- }!
- function (t) {
- Sa[t.index] = {
- site: t,
- halfedges: []
- }
- }(t);
- var u = ma(t);
- if (Na.insert(e, u), e || n) {
- if (e === n) return ya(e), n = ma(e.site), Na.insert(u, n), u.edge = n.edge = ia(e.site, u.site), da(e), void da(n);
- if (n) {
- ya(e), ya(n);
- var l = e.site,
- c = l[0],
- h = l[1],
- p = t[0] - c,
- f = t[1] - h,
- g = n.site,
- d = g[0] - c,
- y = g[1] - h,
- v = 2 * (p * y - f * d),
- _ = p * p + f * f,
- m = d * d + y * y,
- x = [(y * _ - f * m) / v + c, (p * m - d * _) / v + h];
- sa(n.edge, l, g, x), u.edge = ia(l, t, null, x), n.edge = ia(t, g, null, x), da(e), da(n)
- } else u.edge = ia(e.site, u.site)
- }
- }
- function wa(t, e) {
- var n = t.site,
- r = n[0],
- i = n[1],
- o = i - e;
- if (!o) return r;
- var s = t.P;
- if (!s) return -1 / 0;
- var a = (n = s.site)[0],
- u = n[1],
- l = u - e;
- if (!l) return a;
- var c = a - r,
- h = 1 / o - 1 / l,
- p = c / l;
- return h ? (-p + Math.sqrt(p * p - 2 * h * (c * c / (-2 * l) - u + l / 2 + i - o / 2))) / h + r : (r + a) / 2
- }
- function Ia(t, e) {
- var n = t.N;
- if (n) return wa(n, e);
- var r = t.site;
- return r[1] === e ? r[0] : 1 / 0
- }
- var Na, Sa, Ca, Pa, Ma = 1e-6,
- La = 1e-12;
- function Oa(t, e) {
- return e[1] - t[1] || e[0] - t[0]
- }
- function Ra(t, e) {
- var n, r, i, o = t.sort(Oa).pop();
- for (Pa = [], Sa = new Array(t.length), Na = new $s, Ca = new $s;;)
- if (i = pa, o && (!i || o[1] < i.y || o[1] === i.y && o[0] < i.x)) o[0] === n && o[1] === r || (ba(o), n = o[0], r = o[1]), o = t.pop();
- else {
- if (!i) break;
- Ea(i.arc)
- } if (function () {
- for (var t, e, n, r, i = 0, o = Sa.length; i < o; ++i)
- if ((t = Sa[i]) && (r = (e = t.halfedges).length)) {
- var s = new Array(r),
- a = new Array(r);
- for (n = 0; n < r; ++n) s[n] = n, a[n] = la(t, Pa[e[n]]);
- for (s.sort((function (t, e) {
- return a[e] - a[t]
- })), n = 0; n < r; ++n) a[n] = e[s[n]];
- for (n = 0; n < r; ++n) e[n] = a[n]
- }
- }(), e) {
- var s = +e[0][0],
- a = +e[0][1],
- u = +e[1][0],
- l = +e[1][1];
- ! function (t, e, n, r) {
- for (var i, o = Pa.length; o--;) ua(i = Pa[o], t, e, n, r) && aa(i, t, e, n, r) && (Math.abs(i[0][0] - i[1][0]) > Ma || Math.abs(i[0][1] - i[1][1]) > Ma) || delete Pa[o]
- }(s, a, u, l),
- function (t, e, n, r) {
- var i, o, s, a, u, l, c, h, p, f, g, d, y = Sa.length,
- v = !0;
- for (i = 0; i < y; ++i)
- if (o = Sa[i]) {
- for (s = o.site, a = (u = o.halfedges).length; a--;) Pa[u[a]] || u.splice(a, 1);
- for (a = 0, l = u.length; a < l;) g = (f = ha(o, Pa[u[a]]))[0], d = f[1], h = (c = ca(o, Pa[u[++a % l]]))[0], p = c[1], (Math.abs(g - h) > Ma || Math.abs(d - p) > Ma) && (u.splice(a, 0, Pa.push(oa(s, f, Math.abs(g - t) < Ma && r - d > Ma ? [t, Math.abs(h - t) < Ma ? p : r] : Math.abs(d - r) < Ma && n - g > Ma ? [Math.abs(p - r) < Ma ? h : n, r] : Math.abs(g - n) < Ma && d - e > Ma ? [n, Math.abs(h - n) < Ma ? p : e] : Math.abs(d - e) < Ma && g - t > Ma ? [Math.abs(p - e) < Ma ? h : t, e] : null)) - 1), ++l);
- l && (v = !1)
- } if (v) {
- var _, m, x, E = 1 / 0;
- for (i = 0, v = null; i < y; ++i)(o = Sa[i]) && (x = (_ = (s = o.site)[0] - t) * _ + (m = s[1] - e) * m) < E && (E = x, v = o);
- if (v) {
- var b = [t, e],
- w = [t, r],
- I = [n, r],
- N = [n, e];
- v.halfedges.push(Pa.push(oa(s = v.site, b, w)) - 1, Pa.push(oa(s, w, I)) - 1, Pa.push(oa(s, I, N)) - 1, Pa.push(oa(s, N, b)) - 1)
- }
- }
- for (i = 0; i < y; ++i)(o = Sa[i]) && (o.halfedges.length || delete Sa[i])
- }(s, a, u, l)
- }
- this.edges = Pa, this.cells = Sa, Na = Ca = Pa = Sa = null
- }
- function Ta(t) {
- return (t = t.slice()).push(t[0]), l([t])
- }
- function Aa(t, e, n, r) {
- var i = (r = r || {}).steps || 64,
- o = r.units || "kilometers",
- s = r.angle || 0,
- a = r.pivot || t,
- u = r.properties || t.properties || {};
- if (!t) throw new Error("center is required");
- if (!e) throw new Error("xSemiAxis is required");
- if (!n) throw new Error("ySemiAxis is required");
- if (!P(r)) throw new Error("options must be an object");
- if (!C(i)) throw new Error("steps must be a number");
- if (!C(s)) throw new Error("angle must be a number");
- var c = K(t);
- if ("degrees" === o) var h = I(s);
- else e = ji(t, e, 90, {
- units: o
- }), n = ji(t, n, 0, {
- units: o
- }), e = K(e)[0] - c[0], n = K(n)[1] - c[1];
- for (var p = [], f = 0; f < i; f += 1) {
- var g = -360 * f / i,
- d = e * n / Math.sqrt(Math.pow(n, 2) + Math.pow(e, 2) * Math.pow(Da(g), 2)),
- y = e * n / Math.sqrt(Math.pow(e, 2) + Math.pow(n, 2) / Math.pow(Da(g), 2));
- if (g < -90 && g >= -270 && (d = -d), g < -180 && g >= -360 && (y = -y), "degrees" === o) {
- var v = d * Math.cos(h) + y * Math.sin(h),
- _ = y * Math.cos(h) - d * Math.sin(h);
- d = v, y = _
- }
- p.push([d + c[0], y + c[1]])
- }
- return p.push(p[0]), "degrees" === o ? l([p], u) : $o(l([p], u), s, {
- pivot: a
- })
- }
- function Da(t) {
- var e = t * Math.PI / 180;
- return Math.tan(e)
- }
- function Fa(t, e) {
- void 0 === e && (e = {});
- var n = 0,
- r = 0,
- i = 0;
- return q(t, (function (t, o, s) {
- var a = e.weight ? null == s ? void 0 : s[e.weight] : void 0;
- if (!C(a = null == a ? 1 : a)) throw new Error("weight value must be a number for feature index " + o);
- (a = Number(a)) > 0 && R(t, (function (t) {
- n += t[0] * a, r += t[1] * a, i += a
- }))
- })), a([n / i, r / i], e.properties, e)
- }
- function ka(t, e, n, r, i) {
- var o = r.tolerance || .001,
- s = 0,
- u = 0,
- l = 0,
- c = 0;
- if (F(n, (function (e) {
- var n, r = null === (n = e.properties) || void 0 === n ? void 0 : n.weight,
- i = null == r ? 1 : r;
- if (!C(i = Number(i))) throw new Error("weight value must be a number");
- if (i > 0) {
- c += 1;
- var o = i * me(e, t);
- 0 === o && (o = 1);
- var a = i / o;
- s += e.geometry.coordinates[0] * a, u += e.geometry.coordinates[1] * a, l += a
- }
- })), c < 1) throw new Error("no features to measure");
- var h = s / l,
- p = u / l;
- return 1 === c || 0 === i || Math.abs(h - e[0]) < o && Math.abs(p - e[1]) < o ? a([h, p], {
- medianCandidates: r.medianCandidates
- }) : (r.medianCandidates.push([h, p]), ka([h, p], t, n, r, i - 1))
- }
- function Ga(t, e) {
- return {
- x: t[0] - e[0],
- y: t[1] - e[1]
- }
- }
- function qa(t, e) {
- var n = 0,
- r = 0;
- R(t, (function (i, o, s, a, u) {
- u > n && (n = u, r = o, e.push([]));
- var l = o - r,
- c = t.coordinates[u][l + 1],
- h = i[0],
- p = i[1],
- f = c[0],
- g = c[1];
- e[u].push([.75 * h + .25 * f, .75 * p + .25 * g]), e[u].push([.25 * h + .75 * f, .25 * p + .75 * g])
- }), !0), e.forEach((function (t) {
- t.push(t[0])
- }))
- }
- function Ba(t, e) {
- var n = 0,
- r = 0,
- i = 0;
- R(t, (function (o, s, a, u, l) {
- u > i && (i = u, r = s, e.push([
- []
- ])), l > n && (n = l, r = s, e[u].push([]));
- var c = s - r,
- h = t.coordinates[u][l][c + 1],
- p = o[0],
- f = o[1],
- g = h[0],
- d = h[1];
- e[u][l].push([.75 * p + .25 * g, .75 * f + .25 * d]), e[u][l].push([.25 * p + .75 * g, .25 * f + .75 * d])
- }), !0), e.forEach((function (t) {
- t.forEach((function (t) {
- t.push(t[0])
- }))
- }))
- }
- function za(t, e, n) {
- void 0 === n && (n = 2);
- var r = K(t),
- i = K(e),
- o = r[0] - i[0],
- s = r[1] - i[1];
- return 1 === n ? Math.abs(o) + Math.abs(s) : Math.pow(Math.pow(o, n) + Math.pow(s, n), 1 / n)
- }
- function ja(t, e) {
- var n = (e = e || {}).threshold || 1e4,
- r = e.p || 2,
- i = e.binary || !1,
- o = e.alpha || -1,
- s = e.standardization || !1,
- a = [];
- F(t, (function (t) {
- a.push(En(t))
- }));
- for (var u = [], l = 0; l < a.length; l++) u[l] = [];
- for (l = 0; l < a.length; l++)
- for (var c = l; c < a.length; c++) {
- l === c && (u[l][c] = 0);
- var h = za(a[l], a[c], r);
- u[l][c] = h, u[c][l] = h
- }
- for (l = 0; l < a.length; l++)
- for (c = 0; c < a.length; c++) {
- 0 !== (h = u[l][c]) && (u[l][c] = i ? h <= n ? 1 : 0 : h <= n ? Math.pow(h, o) : 0)
- }
- if (s)
- for (l = 0; l < a.length; l++) {
- var p = u[l].reduce((function (t, e) {
- return t + e
- }), 0);
- for (c = 0; c < a.length; c++) u[l][c] = u[l][c] / p
- }
- return u
- }
- function Ua(t) {
- for (var e = 0, n = 0, r = t; n < r.length; n++) {
- e += r[n]
- }
- return e / t.length
- }
- function Va(t, e) {
- return void 0 === e && (e = {}), Ya(t, "mercator", e)
- }
- function Xa(t, e) {
- return void 0 === e && (e = {}), Ya(t, "wgs84", e)
- }
- function Ya(t, e, n) {
- void 0 === n && (n = {});
- var r = (n = n || {}).mutate;
- if (!t) throw new Error("geojson is required");
- return Array.isArray(t) && C(t[0]) ? t = "mercator" === e ? Ha(t) : Wa(t) : (!0 !== r && (t = Ie(t)), R(t, (function (t) {
- var n = "mercator" === e ? Ha(t) : Wa(t);
- t[0] = n[0], t[1] = n[1]
- }))), t
- }
- function Ha(t) {
- var e = Math.PI / 180,
- n = 6378137,
- r = 20037508.342789244,
- i = [n * (Math.abs(t[0]) <= 180 ? t[0] : t[0] - 360 * function (t) {
- return t < 0 ? -1 : t > 0 ? 1 : 0
- }(t[0])) * e, n * Math.log(Math.tan(.25 * Math.PI + .5 * t[1] * e))];
- return i[0] > r && (i[0] = r), i[0] < -r && (i[0] = -r), i[1] > r && (i[1] = r), i[1] < -r && (i[1] = -r), i
- }
- function Wa(t) {
- var e = 180 / Math.PI,
- n = 6378137;
- return [t[0] * e / n, (.5 * Math.PI - 2 * Math.atan(Math.exp(-t[1] / n))) * e]
- }
- Ra.prototype = {
- constructor: Ra,
- polygons: function () {
- var t = this.edges;
- return this.cells.map((function (e) {
- var n = e.halfedges.map((function (n) {
- return ca(e, t[n])
- }));
- return n.data = e.site.data, n
- }))
- },
- triangles: function () {
- var t = [],
- e = this.edges;
- return this.cells.forEach((function (n, r) {
- if (o = (i = n.halfedges).length)
- for (var i, o, s, a, u, l, c = n.site, h = -1, p = e[i[o - 1]], f = p.left === c ? p.right : p.left; ++h < o;) s = f, f = (p = e[i[h]]).left === c ? p.right : p.left, s && f && r < s.index && r < f.index && (u = s, l = f, ((a = c)[0] - l[0]) * (u[1] - a[1]) - (a[0] - u[0]) * (l[1] - a[1]) < 0) && t.push([c.data, s.data, f.data])
- })), t
- },
- links: function () {
- return this.edges.filter((function (t) {
- return t.right
- })).map((function (t) {
- return {
- source: t.left.data,
- target: t.right.data
- }
- }))
- },
- find: function (t, e, n) {
- for (var r, i, o = this, s = o._found || 0, a = o.cells.length; !(i = o.cells[s]);)
- if (++s >= a) return null;
- var u = t - i.site[0],
- l = e - i.site[1],
- c = u * u + l * l;
- do {
- i = o.cells[r = s], s = null, i.halfedges.forEach((function (n) {
- var r = o.edges[n],
- a = r.left;
- if (a !== i.site && a || (a = r.right)) {
- var u = t - a[0],
- l = e - a[1],
- h = u * u + l * l;
- h < c && (c = h, s = a.index)
- }
- }))
- } while (null !== s);
- return o._found = r, null == n || c <= n * n ? i.site : null
- }
- };
- var Ja = Object.freeze({
- __proto__: null,
- toMercator: Va,
- toWgs84: Xa
- }),
- Za = function () {
- for (var t = 0, e = 0, n = arguments.length; e < n; e++) t += arguments[e].length;
- var r = Array(t),
- i = 0;
- for (e = 0; e < n; e++)
- for (var o = arguments[e], s = 0, a = o.length; s < a; s++, i++) r[i] = o[s];
- return r
- };
- function Ka(t) {
- return Array.isArray(t) ? nu(t) : t && t.bbox ? nu(t.bbox) : [360 * eu(), 180 * eu()]
- }
- function Qa(t, e) {
- void 0 === e && (e = {}), null == t && (t = 1);
- for (var n = [], r = 0; r < t; r++) n.push(a(Ka(e.bbox)));
- return f(n)
- }
- function $a(t, e) {
- void 0 === e && (e = {}), null == t && (t = 1), C(e.num_vertices) && void 0 !== e.num_vertices || (e.num_vertices = 10), C(e.max_radial_length) && void 0 !== e.max_radial_length || (e.max_radial_length = 10);
- for (var n = [], r = function (t) {
- var r, i = [],
- o = Za(Array(e.num_vertices + 1)).map(Math.random);
- o.forEach((function (t, e, n) {
- n[e] = e > 0 ? t + n[e - 1] : t
- })), o.forEach((function (t) {
- t = 2 * t * Math.PI / o[o.length - 1];
- var n = Math.random();
- i.push([n * (e.max_radial_length || 10) * Math.sin(t), n * (e.max_radial_length || 10) * Math.cos(t)])
- })), i[i.length - 1] = i[0], i = i.map((r = Ka(e.bbox), function (t) {
- return [t[0] + r[0], t[1] + r[1]]
- })), n.push(l([i]))
- }, i = 0; i < t; i++) r();
- return f(n)
- }
- function tu(t, e) {
- if (void 0 === e && (e = {}), !P(e = e || {})) throw new Error("options is invalid");
- var n = e.bbox,
- r = e.num_vertices,
- i = e.max_length,
- o = e.max_rotation;
- null == t && (t = 1), (!C(r) || void 0 === r || r < 2) && (r = 10), C(i) && void 0 !== i || (i = 1e-4), C(o) && void 0 !== o || (o = Math.PI / 8);
- for (var s = [], a = 0; a < t; a++) {
- for (var u = [Ka(n)], l = 0; l < r - 1; l++) {
- var c = (0 === l ? 2 * Math.random() * Math.PI : Math.tan((u[l][1] - u[l - 1][1]) / (u[l][0] - u[l - 1][0]))) + (Math.random() - .5) * o * 2,
- p = Math.random() * i;
- u.push([u[l][0] + p * Math.cos(c), u[l][1] + p * Math.sin(c)])
- }
- s.push(h(u))
- }
- return f(s)
- }
- function eu() {
- return Math.random() - .5
- }
- function nu(t) {
- return [Math.random() * (t[2] - t[0]) + t[0], Math.random() * (t[3] - t[1]) + t[1]]
- }
- var ru = Object.freeze({
- __proto__: null,
- randomPosition: Ka,
- randomPoint: Qa,
- randomPolygon: $a,
- randomLineString: tu
- });
- function iu(t, e) {
- if (!t) throw new Error("geojson is required");
- if ("FeatureCollection" !== t.type) throw new Error("geojson must be a FeatureCollection");
- if (null == e) throw new Error("filter is required");
- var n = [];
- return F(t, (function (t) {
- uu(t.properties, e) && n.push(t)
- })), f(n)
- }
- function ou(t, e, n) {
- if (!t) throw new Error("geojson is required");
- if ("FeatureCollection" !== t.type) throw new Error("geojson must be a FeatureCollection");
- if (null == e) throw new Error("property is required");
- for (var r = au(t, e), i = Object.keys(r), o = 0; o < i.length; o++) {
- for (var s = i[o], a = r[s], u = [], l = 0; l < a.length; l++) u.push(t.features[a[l]]);
- n(f(u), s, o)
- }
- }
- function su(t, e, n, r) {
- var i = r;
- return ou(t, e, (function (t, e, o) {
- i = 0 === o && void 0 === r ? t : n(i, t, e, o)
- })), i
- }
- function au(t, e) {
- var n = {};
- return F(t, (function (t, r) {
- var i = t.properties || {};
- if (Object.prototype.hasOwnProperty.call(i, String(e))) {
- var o = i[e];
- Object.prototype.hasOwnProperty.call(n, o) ? n[o].push(r) : n[o] = [r]
- }
- })), n
- }
- function uu(t, e) {
- if (void 0 === t) return !1;
- var n = typeof e;
- if ("number" === n || "string" === n) return Object.prototype.hasOwnProperty.call(t, e);
- if (Array.isArray(e)) {
- for (var r = 0; r < e.length; r++)
- if (!uu(t, e[r])) return !1;
- return !0
- }
- return lu(t, e)
- }
- function lu(t, e) {
- for (var n = Object.keys(e), r = 0; r < n.length; r++) {
- var i = n[r];
- if (t[i] !== e[i]) return !1
- }
- return !0
- }
- function cu(t, e) {
- if (!e) return {};
- if (!e.length) return {};
- for (var n = {}, r = 0; r < e.length; r++) {
- var i = e[r];
- Object.prototype.hasOwnProperty.call(t, i) && (n[i] = t[i])
- }
- return n
- }
- var hu = Object.freeze({
- __proto__: null,
- getCluster: iu,
- clusterEach: ou,
- clusterReduce: su,
- createBins: au,
- applyFilter: uu,
- propertiesContainsFilter: lu,
- filterProperties: cu
- }),
- pu = function (t, e) {
- this.next = null, this.key = t, this.data = e, this.left = null, this.right = null
- };
- /**
- * splaytree v3.1.0
- * Fast Splay tree for Node and browser
- *
- * @author Alexander Milevski <info@w8r.name>
- * @license MIT
- * @preserve
- */
- function fu(t, e) {
- return t > e ? 1 : t < e ? -1 : 0
- }
- function gu(t, e, n) {
- for (var r = new pu(null, null), i = r, o = r;;) {
- var s = n(t, e.key);
- if (s < 0) {
- if (null === e.left) break;
- if (n(t, e.left.key) < 0) {
- var a = e.left;
- if (e.left = a.right, a.right = e, null === (e = a).left) break
- }
- o.left = e, o = e, e = e.left
- } else {
- if (!(s > 0)) break;
- if (null === e.right) break;
- if (n(t, e.right.key) > 0) {
- a = e.right;
- if (e.right = a.left, a.left = e, null === (e = a).right) break
- }
- i.right = e, i = e, e = e.right
- }
- }
- return i.right = e.left, o.left = e.right, e.left = r.right, e.right = r.left, e
- }
- function du(t, e, n, r) {
- var i = new pu(t, e);
- if (null === n) return i.left = i.right = null, i;
- var o = r(t, (n = gu(t, n, r)).key);
- return o < 0 ? (i.left = n.left, i.right = n, n.left = null) : o >= 0 && (i.right = n.right, i.left = n, n.right = null), i
- }
- function yu(t, e, n) {
- var r = null,
- i = null;
- if (e) {
- var o = n((e = gu(t, e, n)).key, t);
- 0 === o ? (r = e.left, i = e.right) : o < 0 ? (i = e.right, e.right = null, r = e) : (r = e.left, e.left = null, i = e)
- }
- return {
- left: r,
- right: i
- }
- }
- function vu(t, e, n, r, i) {
- if (t) {
- r(e + (n ? "└── " : "├── ") + i(t) + "\n");
- var o = e + (n ? " " : "│ ");
- t.left && vu(t.left, o, !1, r, i), t.right && vu(t.right, o, !0, r, i)
- }
- }
- var _u = function () {
- function t(t) {
- void 0 === t && (t = fu), this._root = null, this._size = 0, this._comparator = t
- }
- return t.prototype.insert = function (t, e) {
- return this._size++, this._root = du(t, e, this._root, this._comparator)
- }, t.prototype.add = function (t, e) {
- var n = new pu(t, e);
- null === this._root && (n.left = n.right = null, this._size++, this._root = n);
- var r = this._comparator,
- i = gu(t, this._root, r),
- o = r(t, i.key);
- return 0 === o ? this._root = i : (o < 0 ? (n.left = i.left, n.right = i, i.left = null) : o > 0 && (n.right = i.right, n.left = i, i.right = null), this._size++, this._root = n), this._root
- }, t.prototype.remove = function (t) {
- this._root = this._remove(t, this._root, this._comparator)
- }, t.prototype._remove = function (t, e, n) {
- var r;
- return null === e ? null : 0 === n(t, (e = gu(t, e, n)).key) ? (null === e.left ? r = e.right : (r = gu(t, e.left, n)).right = e.right, this._size--, r) : e
- }, t.prototype.pop = function () {
- var t = this._root;
- if (t) {
- for (; t.left;) t = t.left;
- return this._root = gu(t.key, this._root, this._comparator), this._root = this._remove(t.key, this._root, this._comparator), {
- key: t.key,
- data: t.data
- }
- }
- return null
- }, t.prototype.findStatic = function (t) {
- for (var e = this._root, n = this._comparator; e;) {
- var r = n(t, e.key);
- if (0 === r) return e;
- e = r < 0 ? e.left : e.right
- }
- return null
- }, t.prototype.find = function (t) {
- return this._root && (this._root = gu(t, this._root, this._comparator), 0 !== this._comparator(t, this._root.key)) ? null : this._root
- }, t.prototype.contains = function (t) {
- for (var e = this._root, n = this._comparator; e;) {
- var r = n(t, e.key);
- if (0 === r) return !0;
- e = r < 0 ? e.left : e.right
- }
- return !1
- }, t.prototype.forEach = function (t, e) {
- for (var n = this._root, r = [], i = !1; !i;) null !== n ? (r.push(n), n = n.left) : 0 !== r.length ? (n = r.pop(), t.call(e, n), n = n.right) : i = !0;
- return this
- }, t.prototype.range = function (t, e, n, r) {
- for (var i = [], o = this._comparator, s = this._root; 0 !== i.length || s;)
- if (s) i.push(s), s = s.left;
- else {
- if (o((s = i.pop()).key, e) > 0) break;
- if (o(s.key, t) >= 0 && n.call(r, s)) return this;
- s = s.right
- } return this
- }, t.prototype.keys = function () {
- var t = [];
- return this.forEach((function (e) {
- var n = e.key;
- return t.push(n)
- })), t
- }, t.prototype.values = function () {
- var t = [];
- return this.forEach((function (e) {
- var n = e.data;
- return t.push(n)
- })), t
- }, t.prototype.min = function () {
- return this._root ? this.minNode(this._root).key : null
- }, t.prototype.max = function () {
- return this._root ? this.maxNode(this._root).key : null
- }, t.prototype.minNode = function (t) {
- if (void 0 === t && (t = this._root), t)
- for (; t.left;) t = t.left;
- return t
- }, t.prototype.maxNode = function (t) {
- if (void 0 === t && (t = this._root), t)
- for (; t.right;) t = t.right;
- return t
- }, t.prototype.at = function (t) {
- for (var e = this._root, n = !1, r = 0, i = []; !n;)
- if (e) i.push(e), e = e.left;
- else if (i.length > 0) {
- if (e = i.pop(), r === t) return e;
- r++, e = e.right
- } else n = !0;
- return null
- }, t.prototype.next = function (t) {
- var e = this._root,
- n = null;
- if (t.right) {
- for (n = t.right; n.left;) n = n.left;
- return n
- }
- for (var r = this._comparator; e;) {
- var i = r(t.key, e.key);
- if (0 === i) break;
- i < 0 ? (n = e, e = e.left) : e = e.right
- }
- return n
- }, t.prototype.prev = function (t) {
- var e = this._root,
- n = null;
- if (null !== t.left) {
- for (n = t.left; n.right;) n = n.right;
- return n
- }
- for (var r = this._comparator; e;) {
- var i = r(t.key, e.key);
- if (0 === i) break;
- i < 0 ? e = e.left : (n = e, e = e.right)
- }
- return n
- }, t.prototype.clear = function () {
- return this._root = null, this._size = 0, this
- }, t.prototype.toList = function () {
- return function (t) {
- var e = t,
- n = [],
- r = !1,
- i = new pu(null, null),
- o = i;
- for (; !r;) e ? (n.push(e), e = e.left) : n.length > 0 ? e = (e = o = o.next = n.pop()).right : r = !0;
- return o.next = null, i.next
- }(this._root)
- }, t.prototype.load = function (t, e, n) {
- void 0 === e && (e = []), void 0 === n && (n = !1);
- var r = t.length,
- i = this._comparator;
- if (n && Eu(t, e, 0, r - 1, i), null === this._root) this._root = mu(t, e, 0, r), this._size = r;
- else {
- var o = function (t, e, n) {
- var r = new pu(null, null),
- i = r,
- o = t,
- s = e;
- for (; null !== o && null !== s;) n(o.key, s.key) < 0 ? (i.next = o, o = o.next) : (i.next = s, s = s.next), i = i.next;
- null !== o ? i.next = o : null !== s && (i.next = s);
- return r.next
- }(this.toList(), function (t, e) {
- for (var n = new pu(null, null), r = n, i = 0; i < t.length; i++) r = r.next = new pu(t[i], e[i]);
- return r.next = null, n.next
- }(t, e), i);
- r = this._size + r, this._root = xu({
- head: o
- }, 0, r)
- }
- return this
- }, t.prototype.isEmpty = function () {
- return null === this._root
- }, Object.defineProperty(t.prototype, "size", {
- get: function () {
- return this._size
- },
- enumerable: !0,
- configurable: !0
- }), Object.defineProperty(t.prototype, "root", {
- get: function () {
- return this._root
- },
- enumerable: !0,
- configurable: !0
- }), t.prototype.toString = function (t) {
- void 0 === t && (t = function (t) {
- return String(t.key)
- });
- var e = [];
- return vu(this._root, "", !0, (function (t) {
- return e.push(t)
- }), t), e.join("")
- }, t.prototype.update = function (t, e, n) {
- var r = this._comparator,
- i = yu(t, this._root, r),
- o = i.left,
- s = i.right;
- r(t, e) < 0 ? s = du(e, n, s, r) : o = du(e, n, o, r), this._root = function (t, e, n) {
- return null === e ? t : (null === t || ((e = gu(t.key, e, n)).left = t), e)
- }(o, s, r)
- }, t.prototype.split = function (t) {
- return yu(t, this._root, this._comparator)
- }, t
- }();
- function mu(t, e, n, r) {
- var i = r - n;
- if (i > 0) {
- var o = n + Math.floor(i / 2),
- s = t[o],
- a = e[o],
- u = new pu(s, a);
- return u.left = mu(t, e, n, o), u.right = mu(t, e, o + 1, r), u
- }
- return null
- }
- function xu(t, e, n) {
- var r = n - e;
- if (r > 0) {
- var i = e + Math.floor(r / 2),
- o = xu(t, e, i),
- s = t.head;
- return s.left = o, t.head = t.head.next, s.right = xu(t, i + 1, n), s
- }
- return null
- }
- function Eu(t, e, n, r, i) {
- if (!(n >= r)) {
- for (var o = t[n + r >> 1], s = n - 1, a = r + 1;;) {
- do {
- s++
- } while (i(t[s], o) < 0);
- do {
- a--
- } while (i(t[a], o) > 0);
- if (s >= a) break;
- var u = t[s];
- t[s] = t[a], t[a] = u, u = e[s], e[s] = e[a], e[a] = u
- }
- Eu(t, e, n, a, i), Eu(t, e, a + 1, r, i)
- }
- }
- function bu(t, e) {
- if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
- }
- function wu(t, e) {
- for (var n = 0; n < e.length; n++) {
- var r = e[n];
- r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
- }
- }
- function Iu(t, e, n) {
- return e && wu(t.prototype, e), n && wu(t, n), t
- }
- var Nu = function (t, e) {
- return t.ll.x <= e.x && e.x <= t.ur.x && t.ll.y <= e.y && e.y <= t.ur.y
- },
- Su = function (t, e) {
- if (e.ur.x < t.ll.x || t.ur.x < e.ll.x || e.ur.y < t.ll.y || t.ur.y < e.ll.y) return null;
- var n = t.ll.x < e.ll.x ? e.ll.x : t.ll.x,
- r = t.ur.x < e.ur.x ? t.ur.x : e.ur.x;
- return {
- ll: {
- x: n,
- y: t.ll.y < e.ll.y ? e.ll.y : t.ll.y
- },
- ur: {
- x: r,
- y: t.ur.y < e.ur.y ? t.ur.y : e.ur.y
- }
- }
- },
- Cu = Number.EPSILON;
- void 0 === Cu && (Cu = Math.pow(2, -52));
- var Pu = Cu * Cu,
- Mu = function (t, e) {
- if (-Cu < t && t < Cu && -Cu < e && e < Cu) return 0;
- var n = t - e;
- return n * n < Pu * t * e ? 0 : t < e ? -1 : 1
- },
- Lu = function () {
- function t() {
- bu(this, t), this.reset()
- }
- return Iu(t, [{
- key: "reset",
- value: function () {
- this.xRounder = new Ou, this.yRounder = new Ou
- }
- }, {
- key: "round",
- value: function (t, e) {
- return {
- x: this.xRounder.round(t),
- y: this.yRounder.round(e)
- }
- }
- }]), t
- }(),
- Ou = function () {
- function t() {
- bu(this, t), this.tree = new _u, this.round(0)
- }
- return Iu(t, [{
- key: "round",
- value: function (t) {
- var e = this.tree.add(t),
- n = this.tree.prev(e);
- if (null !== n && 0 === Mu(e.key, n.key)) return this.tree.remove(t), n.key;
- var r = this.tree.next(e);
- return null !== r && 0 === Mu(e.key, r.key) ? (this.tree.remove(t), r.key) : t
- }
- }]), t
- }(),
- Ru = new Lu,
- Tu = function (t, e) {
- return t.x * e.y - t.y * e.x
- },
- Au = function (t, e) {
- return t.x * e.x + t.y * e.y
- },
- Du = function (t, e, n) {
- var r = {
- x: e.x - t.x,
- y: e.y - t.y
- },
- i = {
- x: n.x - t.x,
- y: n.y - t.y
- },
- o = Tu(r, i);
- return Mu(o, 0)
- },
- Fu = function (t) {
- return Math.sqrt(Au(t, t))
- },
- ku = function (t, e, n) {
- var r = {
- x: e.x - t.x,
- y: e.y - t.y
- },
- i = {
- x: n.x - t.x,
- y: n.y - t.y
- };
- return Au(i, r) / Fu(i) / Fu(r)
- },
- Gu = function (t, e, n) {
- return 0 === e.y ? null : {
- x: t.x + e.x / e.y * (n - t.y),
- y: n
- }
- },
- qu = function (t, e, n) {
- return 0 === e.x ? null : {
- x: n,
- y: t.y + e.y / e.x * (n - t.x)
- }
- },
- Bu = function () {
- function t(e, n) {
- bu(this, t), void 0 === e.events ? e.events = [this] : e.events.push(this), this.point = e, this.isLeft = n
- }
- return Iu(t, null, [{
- key: "compare",
- value: function (e, n) {
- var r = t.comparePoints(e.point, n.point);
- return 0 !== r ? r : (e.point !== n.point && e.link(n), e.isLeft !== n.isLeft ? e.isLeft ? 1 : -1 : ju.compare(e.segment, n.segment))
- }
- }, {
- key: "comparePoints",
- value: function (t, e) {
- return t.x < e.x ? -1 : t.x > e.x ? 1 : t.y < e.y ? -1 : t.y > e.y ? 1 : 0
- }
- }]), Iu(t, [{
- key: "link",
- value: function (t) {
- if (t.point === this.point) throw new Error("Tried to link already linked events");
- for (var e = t.point.events, n = 0, r = e.length; n < r; n++) {
- var i = e[n];
- this.point.events.push(i), i.point = this.point
- }
- this.checkForConsuming()
- }
- }, {
- key: "checkForConsuming",
- value: function () {
- for (var t = this.point.events.length, e = 0; e < t; e++) {
- var n = this.point.events[e];
- if (void 0 === n.segment.consumedBy)
- for (var r = e + 1; r < t; r++) {
- var i = this.point.events[r];
- void 0 === i.consumedBy && (n.otherSE.point.events === i.otherSE.point.events && n.segment.consume(i.segment))
- }
- }
- }
- }, {
- key: "getAvailableLinkedEvents",
- value: function () {
- for (var t = [], e = 0, n = this.point.events.length; e < n; e++) {
- var r = this.point.events[e];
- r !== this && !r.segment.ringOut && r.segment.isInResult() && t.push(r)
- }
- return t
- }
- }, {
- key: "getLeftmostComparator",
- value: function (t) {
- var e = this,
- n = new Map,
- r = function (r) {
- var i, o, s, a, u, l = r.otherSE;
- n.set(r, {
- sine: (i = e.point, o = t.point, s = l.point, a = {
- x: o.x - i.x,
- y: o.y - i.y
- }, u = {
- x: s.x - i.x,
- y: s.y - i.y
- }, Tu(u, a) / Fu(u) / Fu(a)),
- cosine: ku(e.point, t.point, l.point)
- })
- };
- return function (t, e) {
- n.has(t) || r(t), n.has(e) || r(e);
- var i = n.get(t),
- o = i.sine,
- s = i.cosine,
- a = n.get(e),
- u = a.sine,
- l = a.cosine;
- return o >= 0 && u >= 0 ? s < l ? 1 : s > l ? -1 : 0 : o < 0 && u < 0 ? s < l ? -1 : s > l ? 1 : 0 : u < o ? -1 : u > o ? 1 : 0
- }
- }
- }]), t
- }(),
- zu = 0,
- ju = function () {
- function t(e, n, r, i) {
- bu(this, t), this.id = ++zu, this.leftSE = e, e.segment = this, e.otherSE = n, this.rightSE = n, n.segment = this, n.otherSE = e, this.rings = r, this.windings = i
- }
- return Iu(t, null, [{
- key: "compare",
- value: function (t, e) {
- var n = t.leftSE.point.x,
- r = e.leftSE.point.x,
- i = t.rightSE.point.x,
- o = e.rightSE.point.x;
- if (o < n) return 1;
- if (i < r) return -1;
- var s = t.leftSE.point.y,
- a = e.leftSE.point.y,
- u = t.rightSE.point.y,
- l = e.rightSE.point.y;
- if (n < r) {
- if (a < s && a < u) return 1;
- if (a > s && a > u) return -1;
- var c = t.comparePoint(e.leftSE.point);
- if (c < 0) return 1;
- if (c > 0) return -1;
- var h = e.comparePoint(t.rightSE.point);
- return 0 !== h ? h : -1
- }
- if (n > r) {
- if (s < a && s < l) return -1;
- if (s > a && s > l) return 1;
- var p = e.comparePoint(t.leftSE.point);
- if (0 !== p) return p;
- var f = t.comparePoint(e.rightSE.point);
- return f < 0 ? 1 : f > 0 ? -1 : 1
- }
- if (s < a) return -1;
- if (s > a) return 1;
- if (i < o) {
- var g = e.comparePoint(t.rightSE.point);
- if (0 !== g) return g
- }
- if (i > o) {
- var d = t.comparePoint(e.rightSE.point);
- if (d < 0) return 1;
- if (d > 0) return -1
- }
- if (i !== o) {
- var y = u - s,
- v = i - n,
- _ = l - a,
- m = o - r;
- if (y > v && _ < m) return 1;
- if (y < v && _ > m) return -1
- }
- return i > o ? 1 : i < o || u < l ? -1 : u > l ? 1 : t.id < e.id ? -1 : t.id > e.id ? 1 : 0
- }
- }]), Iu(t, [{
- key: "replaceRightSE",
- value: function (t) {
- this.rightSE = t, this.rightSE.segment = this, this.rightSE.otherSE = this.leftSE, this.leftSE.otherSE = this.rightSE
- }
- }, {
- key: "bbox",
- value: function () {
- var t = this.leftSE.point.y,
- e = this.rightSE.point.y;
- return {
- ll: {
- x: this.leftSE.point.x,
- y: t < e ? t : e
- },
- ur: {
- x: this.rightSE.point.x,
- y: t > e ? t : e
- }
- }
- }
- }, {
- key: "vector",
- value: function () {
- return {
- x: this.rightSE.point.x - this.leftSE.point.x,
- y: this.rightSE.point.y - this.leftSE.point.y
- }
- }
- }, {
- key: "isAnEndpoint",
- value: function (t) {
- return t.x === this.leftSE.point.x && t.y === this.leftSE.point.y || t.x === this.rightSE.point.x && t.y === this.rightSE.point.y
- }
- }, {
- key: "comparePoint",
- value: function (t) {
- if (this.isAnEndpoint(t)) return 0;
- var e = this.leftSE.point,
- n = this.rightSE.point,
- r = this.vector();
- if (e.x === n.x) return t.x === e.x ? 0 : t.x < e.x ? 1 : -1;
- var i = (t.y - e.y) / r.y,
- o = e.x + i * r.x;
- if (t.x === o) return 0;
- var s = (t.x - e.x) / r.x,
- a = e.y + s * r.y;
- return t.y === a ? 0 : t.y < a ? -1 : 1
- }
- }, {
- key: "getIntersection",
- value: function (t) {
- var e = this.bbox(),
- n = t.bbox(),
- r = Su(e, n);
- if (null === r) return null;
- var i = this.leftSE.point,
- o = this.rightSE.point,
- s = t.leftSE.point,
- a = t.rightSE.point,
- u = Nu(e, s) && 0 === this.comparePoint(s),
- l = Nu(n, i) && 0 === t.comparePoint(i),
- c = Nu(e, a) && 0 === this.comparePoint(a),
- h = Nu(n, o) && 0 === t.comparePoint(o);
- if (l && u) return h && !c ? o : !h && c ? a : null;
- if (l) return c && i.x === a.x && i.y === a.y ? null : i;
- if (u) return h && o.x === s.x && o.y === s.y ? null : s;
- if (h && c) return null;
- if (h) return o;
- if (c) return a;
- var p = function (t, e, n, r) {
- if (0 === e.x) return qu(n, r, t.x);
- if (0 === r.x) return qu(t, e, n.x);
- if (0 === e.y) return Gu(n, r, t.y);
- if (0 === r.y) return Gu(t, e, n.y);
- var i = Tu(e, r);
- if (0 == i) return null;
- var o = {
- x: n.x - t.x,
- y: n.y - t.y
- },
- s = Tu(o, e) / i,
- a = Tu(o, r) / i;
- return {
- x: (t.x + a * e.x + (n.x + s * r.x)) / 2,
- y: (t.y + a * e.y + (n.y + s * r.y)) / 2
- }
- }(i, this.vector(), s, t.vector());
- return null === p ? null : Nu(r, p) ? Ru.round(p.x, p.y) : null
- }
- }, {
- key: "split",
- value: function (e) {
- var n = [],
- r = void 0 !== e.events,
- i = new Bu(e, !0),
- o = new Bu(e, !1),
- s = this.rightSE;
- this.replaceRightSE(o), n.push(o), n.push(i);
- var a = new t(i, s, this.rings.slice(), this.windings.slice());
- return Bu.comparePoints(a.leftSE.point, a.rightSE.point) > 0 && a.swapEvents(), Bu.comparePoints(this.leftSE.point, this.rightSE.point) > 0 && this.swapEvents(), r && (i.checkForConsuming(), o.checkForConsuming()), n
- }
- }, {
- key: "swapEvents",
- value: function () {
- var t = this.rightSE;
- this.rightSE = this.leftSE, this.leftSE = t, this.leftSE.isLeft = !0, this.rightSE.isLeft = !1;
- for (var e = 0, n = this.windings.length; e < n; e++) this.windings[e] *= -1
- }
- }, {
- key: "consume",
- value: function (e) {
- for (var n = this, r = e; n.consumedBy;) n = n.consumedBy;
- for (; r.consumedBy;) r = r.consumedBy;
- var i = t.compare(n, r);
- if (0 !== i) {
- if (i > 0) {
- var o = n;
- n = r, r = o
- }
- if (n.prev === r) {
- var s = n;
- n = r, r = s
- }
- for (var a = 0, u = r.rings.length; a < u; a++) {
- var l = r.rings[a],
- c = r.windings[a],
- h = n.rings.indexOf(l); - 1 === h ? (n.rings.push(l), n.windings.push(c)) : n.windings[h] += c
- }
- r.rings = null, r.windings = null, r.consumedBy = n, r.leftSE.consumedBy = n.leftSE, r.rightSE.consumedBy = n.rightSE
- }
- }
- }, {
- key: "prevInResult",
- value: function () {
- return void 0 !== this._prevInResult || (this.prev ? this.prev.isInResult() ? this._prevInResult = this.prev : this._prevInResult = this.prev.prevInResult() : this._prevInResult = null), this._prevInResult
- }
- }, {
- key: "beforeState",
- value: function () {
- if (void 0 !== this._beforeState) return this._beforeState;
- if (this.prev) {
- var t = this.prev.consumedBy || this.prev;
- this._beforeState = t.afterState()
- } else this._beforeState = {
- rings: [],
- windings: [],
- multiPolys: []
- };
- return this._beforeState
- }
- }, {
- key: "afterState",
- value: function () {
- if (void 0 !== this._afterState) return this._afterState;
- var t = this.beforeState();
- this._afterState = {
- rings: t.rings.slice(0),
- windings: t.windings.slice(0),
- multiPolys: []
- };
- for (var e = this._afterState.rings, n = this._afterState.windings, r = this._afterState.multiPolys, i = 0, o = this.rings.length; i < o; i++) {
- var s = this.rings[i],
- a = this.windings[i],
- u = e.indexOf(s); - 1 === u ? (e.push(s), n.push(a)) : n[u] += a
- }
- for (var l = [], c = [], h = 0, p = e.length; h < p; h++)
- if (0 !== n[h]) {
- var f = e[h],
- g = f.poly;
- if (-1 === c.indexOf(g))
- if (f.isExterior) l.push(g);
- else {
- -1 === c.indexOf(g) && c.push(g);
- var d = l.indexOf(f.poly); - 1 !== d && l.splice(d, 1)
- }
- } for (var y = 0, v = l.length; y < v; y++) {
- var _ = l[y].multiPoly; - 1 === r.indexOf(_) && r.push(_)
- }
- return this._afterState
- }
- }, {
- key: "isInResult",
- value: function () {
- if (this.consumedBy) return !1;
- if (void 0 !== this._isInResult) return this._isInResult;
- var t = this.beforeState().multiPolys,
- e = this.afterState().multiPolys;
- switch (Qu.type) {
- case "union":
- var n = 0 === t.length,
- r = 0 === e.length;
- this._isInResult = n !== r;
- break;
- case "intersection":
- var i, o;
- t.length < e.length ? (i = t.length, o = e.length) : (i = e.length, o = t.length), this._isInResult = o === Qu.numMultiPolys && i < o;
- break;
- case "xor":
- var s = Math.abs(t.length - e.length);
- this._isInResult = s % 2 == 1;
- break;
- case "difference":
- var a = function (t) {
- return 1 === t.length && t[0].isSubject
- };
- this._isInResult = a(t) !== a(e);
- break;
- default:
- throw new Error("Unrecognized operation type found ".concat(Qu.type))
- }
- return this._isInResult
- }
- }], [{
- key: "fromRing",
- value: function (e, n, r) {
- var i, o, s, a = Bu.comparePoints(e, n);
- if (a < 0) i = e, o = n, s = 1;
- else {
- if (!(a > 0)) throw new Error("Tried to create degenerate segment at [".concat(e.x, ", ").concat(e.y, "]"));
- i = n, o = e, s = -1
- }
- return new t(new Bu(i, !0), new Bu(o, !1), [r], [s])
- }
- }]), t
- }(),
- Uu = function () {
- function t(e, n, r) {
- if (bu(this, t), !Array.isArray(e) || 0 === e.length) throw new Error("Input geometry is not a valid Polygon or MultiPolygon");
- if (this.poly = n, this.isExterior = r, this.segments = [], "number" != typeof e[0][0] || "number" != typeof e[0][1]) throw new Error("Input geometry is not a valid Polygon or MultiPolygon");
- var i = Ru.round(e[0][0], e[0][1]);
- this.bbox = {
- ll: {
- x: i.x,
- y: i.y
- },
- ur: {
- x: i.x,
- y: i.y
- }
- };
- for (var o = i, s = 1, a = e.length; s < a; s++) {
- if ("number" != typeof e[s][0] || "number" != typeof e[s][1]) throw new Error("Input geometry is not a valid Polygon or MultiPolygon");
- var u = Ru.round(e[s][0], e[s][1]);
- u.x === o.x && u.y === o.y || (this.segments.push(ju.fromRing(o, u, this)), u.x < this.bbox.ll.x && (this.bbox.ll.x = u.x), u.y < this.bbox.ll.y && (this.bbox.ll.y = u.y), u.x > this.bbox.ur.x && (this.bbox.ur.x = u.x), u.y > this.bbox.ur.y && (this.bbox.ur.y = u.y), o = u)
- }
- i.x === o.x && i.y === o.y || this.segments.push(ju.fromRing(o, i, this))
- }
- return Iu(t, [{
- key: "getSweepEvents",
- value: function () {
- for (var t = [], e = 0, n = this.segments.length; e < n; e++) {
- var r = this.segments[e];
- t.push(r.leftSE), t.push(r.rightSE)
- }
- return t
- }
- }]), t
- }(),
- Vu = function () {
- function t(e, n) {
- if (bu(this, t), !Array.isArray(e)) throw new Error("Input geometry is not a valid Polygon or MultiPolygon");
- this.exteriorRing = new Uu(e[0], this, !0), this.bbox = {
- ll: {
- x: this.exteriorRing.bbox.ll.x,
- y: this.exteriorRing.bbox.ll.y
- },
- ur: {
- x: this.exteriorRing.bbox.ur.x,
- y: this.exteriorRing.bbox.ur.y
- }
- }, this.interiorRings = [];
- for (var r = 1, i = e.length; r < i; r++) {
- var o = new Uu(e[r], this, !1);
- o.bbox.ll.x < this.bbox.ll.x && (this.bbox.ll.x = o.bbox.ll.x), o.bbox.ll.y < this.bbox.ll.y && (this.bbox.ll.y = o.bbox.ll.y), o.bbox.ur.x > this.bbox.ur.x && (this.bbox.ur.x = o.bbox.ur.x), o.bbox.ur.y > this.bbox.ur.y && (this.bbox.ur.y = o.bbox.ur.y), this.interiorRings.push(o)
- }
- this.multiPoly = n
- }
- return Iu(t, [{
- key: "getSweepEvents",
- value: function () {
- for (var t = this.exteriorRing.getSweepEvents(), e = 0, n = this.interiorRings.length; e < n; e++)
- for (var r = this.interiorRings[e].getSweepEvents(), i = 0, o = r.length; i < o; i++) t.push(r[i]);
- return t
- }
- }]), t
- }(),
- Xu = function () {
- function t(e, n) {
- if (bu(this, t), !Array.isArray(e)) throw new Error("Input geometry is not a valid Polygon or MultiPolygon");
- try {
- "number" == typeof e[0][0][0] && (e = [e])
- } catch (t) {}
- this.polys = [], this.bbox = {
- ll: {
- x: Number.POSITIVE_INFINITY,
- y: Number.POSITIVE_INFINITY
- },
- ur: {
- x: Number.NEGATIVE_INFINITY,
- y: Number.NEGATIVE_INFINITY
- }
- };
- for (var r = 0, i = e.length; r < i; r++) {
- var o = new Vu(e[r], this);
- o.bbox.ll.x < this.bbox.ll.x && (this.bbox.ll.x = o.bbox.ll.x), o.bbox.ll.y < this.bbox.ll.y && (this.bbox.ll.y = o.bbox.ll.y), o.bbox.ur.x > this.bbox.ur.x && (this.bbox.ur.x = o.bbox.ur.x), o.bbox.ur.y > this.bbox.ur.y && (this.bbox.ur.y = o.bbox.ur.y), this.polys.push(o)
- }
- this.isSubject = n
- }
- return Iu(t, [{
- key: "getSweepEvents",
- value: function () {
- for (var t = [], e = 0, n = this.polys.length; e < n; e++)
- for (var r = this.polys[e].getSweepEvents(), i = 0, o = r.length; i < o; i++) t.push(r[i]);
- return t
- }
- }]), t
- }(),
- Yu = function () {
- function t(e) {
- bu(this, t), this.events = e;
- for (var n = 0, r = e.length; n < r; n++) e[n].segment.ringOut = this;
- this.poly = null
- }
- return Iu(t, null, [{
- key: "factory",
- value: function (e) {
- for (var n = [], r = 0, i = e.length; r < i; r++) {
- var o = e[r];
- if (o.isInResult() && !o.ringOut) {
- for (var s = null, a = o.leftSE, u = o.rightSE, l = [a], c = a.point, h = []; s = a, a = u, l.push(a), a.point !== c;)
- for (;;) {
- var p = a.getAvailableLinkedEvents();
- if (0 === p.length) {
- var f = l[0].point,
- g = l[l.length - 1].point;
- throw new Error("Unable to complete output ring starting at [".concat(f.x, ",") + " ".concat(f.y, "]. Last matching segment found ends at") + " [".concat(g.x, ", ").concat(g.y, "]."))
- }
- if (1 === p.length) {
- u = p[0].otherSE;
- break
- }
- for (var d = null, y = 0, v = h.length; y < v; y++)
- if (h[y].point === a.point) {
- d = y;
- break
- } if (null === d) {
- h.push({
- index: l.length,
- point: a.point
- });
- var _ = a.getLeftmostComparator(s);
- u = p.sort(_)[0].otherSE;
- break
- }
- var m = h.splice(d)[0],
- x = l.splice(m.index);
- x.unshift(x[0].otherSE), n.push(new t(x.reverse()))
- }
- n.push(new t(l))
- }
- }
- return n
- }
- }]), Iu(t, [{
- key: "getGeom",
- value: function () {
- for (var t = this.events[0].point, e = [t], n = 1, r = this.events.length - 1; n < r; n++) {
- var i = this.events[n].point,
- o = this.events[n + 1].point;
- 0 !== Du(i, t, o) && (e.push(i), t = i)
- }
- if (1 === e.length) return null;
- var s = e[0],
- a = e[1];
- 0 === Du(s, t, a) && e.shift(), e.push(e[0]);
- for (var u = this.isExteriorRing() ? 1 : -1, l = this.isExteriorRing() ? 0 : e.length - 1, c = this.isExteriorRing() ? e.length : -1, h = [], p = l; p != c; p += u) h.push([e[p].x, e[p].y]);
- return h
- }
- }, {
- key: "isExteriorRing",
- value: function () {
- if (void 0 === this._isExteriorRing) {
- var t = this.enclosingRing();
- this._isExteriorRing = !t || !t.isExteriorRing()
- }
- return this._isExteriorRing
- }
- }, {
- key: "enclosingRing",
- value: function () {
- return void 0 === this._enclosingRing && (this._enclosingRing = this._calcEnclosingRing()), this._enclosingRing
- }
- }, {
- key: "_calcEnclosingRing",
- value: function () {
- for (var t = this.events[0], e = 1, n = this.events.length; e < n; e++) {
- var r = this.events[e];
- Bu.compare(t, r) > 0 && (t = r)
- }
- for (var i = t.segment.prevInResult(), o = i ? i.prevInResult() : null;;) {
- if (!i) return null;
- if (!o) return i.ringOut;
- if (o.ringOut !== i.ringOut) return o.ringOut.enclosingRing() !== i.ringOut ? i.ringOut : i.ringOut.enclosingRing();
- i = o.prevInResult(), o = i ? i.prevInResult() : null
- }
- }
- }]), t
- }(),
- Hu = function () {
- function t(e) {
- bu(this, t), this.exteriorRing = e, e.poly = this, this.interiorRings = []
- }
- return Iu(t, [{
- key: "addInterior",
- value: function (t) {
- this.interiorRings.push(t), t.poly = this
- }
- }, {
- key: "getGeom",
- value: function () {
- var t = [this.exteriorRing.getGeom()];
- if (null === t[0]) return null;
- for (var e = 0, n = this.interiorRings.length; e < n; e++) {
- var r = this.interiorRings[e].getGeom();
- null !== r && t.push(r)
- }
- return t
- }
- }]), t
- }(),
- Wu = function () {
- function t(e) {
- bu(this, t), this.rings = e, this.polys = this._composePolys(e)
- }
- return Iu(t, [{
- key: "getGeom",
- value: function () {
- for (var t = [], e = 0, n = this.polys.length; e < n; e++) {
- var r = this.polys[e].getGeom();
- null !== r && t.push(r)
- }
- return t
- }
- }, {
- key: "_composePolys",
- value: function (t) {
- for (var e = [], n = 0, r = t.length; n < r; n++) {
- var i = t[n];
- if (!i.poly)
- if (i.isExteriorRing()) e.push(new Hu(i));
- else {
- var o = i.enclosingRing();
- o.poly || e.push(new Hu(o)), o.poly.addInterior(i)
- }
- }
- return e
- }
- }]), t
- }(),
- Ju = function () {
- function t(e) {
- var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ju.compare;
- bu(this, t), this.queue = e, this.tree = new _u(n), this.segments = []
- }
- return Iu(t, [{
- key: "process",
- value: function (t) {
- var e = t.segment,
- n = [];
- if (t.consumedBy) return t.isLeft ? this.queue.remove(t.otherSE) : this.tree.remove(e), n;
- var r = t.isLeft ? this.tree.insert(e) : this.tree.find(e);
- if (!r) throw new Error("Unable to find segment #".concat(e.id, " ") + "[".concat(e.leftSE.point.x, ", ").concat(e.leftSE.point.y, "] -> ") + "[".concat(e.rightSE.point.x, ", ").concat(e.rightSE.point.y, "] ") + "in SweepLine tree. Please submit a bug report.");
- for (var i = r, o = r, s = void 0, a = void 0; void 0 === s;) null === (i = this.tree.prev(i)) ? s = null : void 0 === i.key.consumedBy && (s = i.key);
- for (; void 0 === a;) null === (o = this.tree.next(o)) ? a = null : void 0 === o.key.consumedBy && (a = o.key);
- if (t.isLeft) {
- var u = null;
- if (s) {
- var l = s.getIntersection(e);
- if (null !== l && (e.isAnEndpoint(l) || (u = l), !s.isAnEndpoint(l)))
- for (var c = this._splitSafely(s, l), h = 0, p = c.length; h < p; h++) n.push(c[h])
- }
- var f = null;
- if (a) {
- var g = a.getIntersection(e);
- if (null !== g && (e.isAnEndpoint(g) || (f = g), !a.isAnEndpoint(g)))
- for (var d = this._splitSafely(a, g), y = 0, v = d.length; y < v; y++) n.push(d[y])
- }
- if (null !== u || null !== f) {
- var _ = null;
- if (null === u) _ = f;
- else if (null === f) _ = u;
- else {
- _ = Bu.comparePoints(u, f) <= 0 ? u : f
- }
- this.queue.remove(e.rightSE), n.push(e.rightSE);
- for (var m = e.split(_), x = 0, E = m.length; x < E; x++) n.push(m[x])
- }
- n.length > 0 ? (this.tree.remove(e), n.push(t)) : (this.segments.push(e), e.prev = s)
- } else {
- if (s && a) {
- var b = s.getIntersection(a);
- if (null !== b) {
- if (!s.isAnEndpoint(b))
- for (var w = this._splitSafely(s, b), I = 0, N = w.length; I < N; I++) n.push(w[I]);
- if (!a.isAnEndpoint(b))
- for (var S = this._splitSafely(a, b), C = 0, P = S.length; C < P; C++) n.push(S[C])
- }
- }
- this.tree.remove(e)
- }
- return n
- }
- }, {
- key: "_splitSafely",
- value: function (t, e) {
- this.tree.remove(t);
- var n = t.rightSE;
- this.queue.remove(n);
- var r = t.split(e);
- return r.push(n), void 0 === t.consumedBy && this.tree.insert(t), r
- }
- }]), t
- }(),
- Zu = "undefined" != typeof process && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE || 1e6,
- Ku = "undefined" != typeof process && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS || 1e6,
- Qu = new(function () {
- function t() {
- bu(this, t)
- }
- return Iu(t, [{
- key: "run",
- value: function (t, e, n) {
- Qu.type = t, Ru.reset();
- for (var r = [new Xu(e, !0)], i = 0, o = n.length; i < o; i++) r.push(new Xu(n[i], !1));
- if (Qu.numMultiPolys = r.length, "difference" === Qu.type)
- for (var s = r[0], a = 1; a < r.length;) null !== Su(r[a].bbox, s.bbox) ? a++ : r.splice(a, 1);
- if ("intersection" === Qu.type)
- for (var u = 0, l = r.length; u < l; u++)
- for (var c = r[u], h = u + 1, p = r.length; h < p; h++)
- if (null === Su(c.bbox, r[h].bbox)) return [];
- for (var f = new _u(Bu.compare), g = 0, d = r.length; g < d; g++)
- for (var y = r[g].getSweepEvents(), v = 0, _ = y.length; v < _; v++)
- if (f.insert(y[v]), f.size > Zu) throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big). Please file a bug report.");
- for (var m = new Ju(f), x = f.size, E = f.pop(); E;) {
- var b = E.key;
- if (f.size === x) {
- var w = b.segment;
- throw new Error("Unable to pop() ".concat(b.isLeft ? "left" : "right", " SweepEvent ") + "[".concat(b.point.x, ", ").concat(b.point.y, "] from segment #").concat(w.id, " ") + "[".concat(w.leftSE.point.x, ", ").concat(w.leftSE.point.y, "] -> ") + "[".concat(w.rightSE.point.x, ", ").concat(w.rightSE.point.y, "] from queue. ") + "Please file a bug report.")
- }
- if (f.size > Zu) throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big). Please file a bug report.");
- if (m.segments.length > Ku) throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments). Please file a bug report.");
- for (var I = m.process(b), N = 0, S = I.length; N < S; N++) {
- var C = I[N];
- void 0 === C.consumedBy && f.insert(C)
- }
- x = f.size, E = f.pop()
- }
- Ru.reset();
- var P = Yu.factory(m.segments);
- return new Wu(P).getGeom()
- }
- }]), t
- }()),
- $u = {
- union: function (t) {
- for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r];
- return Qu.run("union", t, n)
- },
- intersection: function (t) {
- for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r];
- return Qu.run("intersection", t, n)
- },
- xor: function (t) {
- for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r];
- return Qu.run("xor", t, n)
- },
- difference: function (t) {
- for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r];
- return Qu.run("difference", t, n)
- }
- };
- "fill" in Array.prototype || Object.defineProperty(Array.prototype, "fill", {
- configurable: !0,
- value: function (t) {
- if (null == this) throw new TypeError(this + " is not an object");
- var e = Object(this),
- n = Math.max(Math.min(e.length, 9007199254740991), 0) || 0,
- r = 1 in arguments && parseInt(Number(arguments[1]), 10) || 0;
- r = r < 0 ? Math.max(n + r, 0) : Math.min(r, n);
- var i = 2 in arguments && void 0 !== arguments[2] ? parseInt(Number(arguments[2]), 10) || 0 : n;
- for (i = i < 0 ? Math.max(n + arguments[2], 0) : Math.min(i, n); r < i;) e[r] = t, ++r;
- return e
- },
- writable: !0
- }), Number.isFinite = Number.isFinite || function (t) {
- return "number" == typeof t && isFinite(t)
- }, Number.isInteger = Number.isInteger || function (t) {
- return "number" == typeof t && isFinite(t) && Math.floor(t) === t
- }, Number.parseFloat = Number.parseFloat || parseFloat, Number.isNaN = Number.isNaN || function (t) {
- return t != t
- }, Math.trunc = Math.trunc || function (t) {
- return t < 0 ? Math.ceil(t) : Math.floor(t)
- };
- var tl = function () {};
- tl.prototype.interfaces_ = function () {
- return []
- }, tl.prototype.getClass = function () {
- return tl
- }, tl.prototype.equalsWithTolerance = function (t, e, n) {
- return Math.abs(t - e) <= n
- };
- var el = function (t) {
- function e(e) {
- t.call(this, e), this.name = "IllegalArgumentException", this.message = e, this.stack = (new t).stack
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
- }(Error),
- nl = function () {},
- rl = {
- MAX_VALUE: {
- configurable: !0
- }
- };
- nl.isNaN = function (t) {
- return Number.isNaN(t)
- }, nl.doubleToLongBits = function (t) {
- return t
- }, nl.longBitsToDouble = function (t) {
- return t
- }, nl.isInfinite = function (t) {
- return !Number.isFinite(t)
- }, rl.MAX_VALUE.get = function () {
- return Number.MAX_VALUE
- }, Object.defineProperties(nl, rl);
- var il = function () {},
- ol = function () {},
- sl = function () {};
- function al() {}
- var ul = function t() {
- if (this.x = null, this.y = null, this.z = null, 0 === arguments.length) this.x = 0, this.y = 0, this.z = t.NULL_ORDINATE;
- else if (1 === arguments.length) {
- var e = arguments[0];
- this.x = e.x, this.y = e.y, this.z = e.z
- } else 2 === arguments.length ? (this.x = arguments[0], this.y = arguments[1], this.z = t.NULL_ORDINATE) : 3 === arguments.length && (this.x = arguments[0], this.y = arguments[1], this.z = arguments[2])
- },
- ll = {
- DimensionalComparator: {
- configurable: !0
- },
- serialVersionUID: {
- configurable: !0
- },
- NULL_ORDINATE: {
- configurable: !0
- },
- X: {
- configurable: !0
- },
- Y: {
- configurable: !0
- },
- Z: {
- configurable: !0
- }
- };
- ul.prototype.setOrdinate = function (t, e) {
- switch (t) {
- case ul.X:
- this.x = e;
- break;
- case ul.Y:
- this.y = e;
- break;
- case ul.Z:
- this.z = e;
- break;
- default:
- throw new el("Invalid ordinate index: " + t)
- }
- }, ul.prototype.equals2D = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return this.x === t.x && this.y === t.y
- }
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return !!tl.equalsWithTolerance(this.x, e.x, n) && !!tl.equalsWithTolerance(this.y, e.y, n)
- }
- }, ul.prototype.getOrdinate = function (t) {
- switch (t) {
- case ul.X:
- return this.x;
- case ul.Y:
- return this.y;
- case ul.Z:
- return this.z
- }
- throw new el("Invalid ordinate index: " + t)
- }, ul.prototype.equals3D = function (t) {
- return this.x === t.x && this.y === t.y && (this.z === t.z || nl.isNaN(this.z)) && nl.isNaN(t.z)
- }, ul.prototype.equals = function (t) {
- return t instanceof ul && this.equals2D(t)
- }, ul.prototype.equalInZ = function (t, e) {
- return tl.equalsWithTolerance(this.z, t.z, e)
- }, ul.prototype.compareTo = function (t) {
- var e = t;
- return this.x < e.x ? -1 : this.x > e.x ? 1 : this.y < e.y ? -1 : this.y > e.y ? 1 : 0
- }, ul.prototype.clone = function () {}, ul.prototype.copy = function () {
- return new ul(this)
- }, ul.prototype.toString = function () {
- return "(" + this.x + ", " + this.y + ", " + this.z + ")"
- }, ul.prototype.distance3D = function (t) {
- var e = this.x - t.x,
- n = this.y - t.y,
- r = this.z - t.z;
- return Math.sqrt(e * e + n * n + r * r)
- }, ul.prototype.distance = function (t) {
- var e = this.x - t.x,
- n = this.y - t.y;
- return Math.sqrt(e * e + n * n)
- }, ul.prototype.hashCode = function () {
- var t = 17;
- return t = 37 * (t = 37 * t + ul.hashCode(this.x)) + ul.hashCode(this.y)
- }, ul.prototype.setCoordinate = function (t) {
- this.x = t.x, this.y = t.y, this.z = t.z
- }, ul.prototype.interfaces_ = function () {
- return [il, ol, al]
- }, ul.prototype.getClass = function () {
- return ul
- }, ul.hashCode = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = nl.doubleToLongBits(t);
- return Math.trunc((e ^ e) >>> 32)
- }
- }, ll.DimensionalComparator.get = function () {
- return cl
- }, ll.serialVersionUID.get = function () {
- return 0x5cbf2c235c7e5800
- }, ll.NULL_ORDINATE.get = function () {
- return nl.NaN
- }, ll.X.get = function () {
- return 0
- }, ll.Y.get = function () {
- return 1
- }, ll.Z.get = function () {
- return 2
- }, Object.defineProperties(ul, ll);
- var cl = function (t) {
- if (this._dimensionsToTest = 2, 0 === arguments.length);
- else if (1 === arguments.length) {
- var e = arguments[0];
- if (2 !== e && 3 !== e) throw new el("only 2 or 3 dimensions may be specified");
- this._dimensionsToTest = e
- }
- };
- cl.prototype.compare = function (t, e) {
- var n = t,
- r = e,
- i = cl.compare(n.x, r.x);
- if (0 !== i) return i;
- var o = cl.compare(n.y, r.y);
- return 0 !== o ? o : this._dimensionsToTest <= 2 ? 0 : cl.compare(n.z, r.z)
- }, cl.prototype.interfaces_ = function () {
- return [sl]
- }, cl.prototype.getClass = function () {
- return cl
- }, cl.compare = function (t, e) {
- return t < e ? -1 : t > e ? 1 : nl.isNaN(t) ? nl.isNaN(e) ? 0 : -1 : nl.isNaN(e) ? 1 : 0
- };
- var hl = function () {};
- hl.prototype.create = function () {}, hl.prototype.interfaces_ = function () {
- return []
- }, hl.prototype.getClass = function () {
- return hl
- };
- var pl = function () {},
- fl = {
- INTERIOR: {
- configurable: !0
- },
- BOUNDARY: {
- configurable: !0
- },
- EXTERIOR: {
- configurable: !0
- },
- NONE: {
- configurable: !0
- }
- };
- pl.prototype.interfaces_ = function () {
- return []
- }, pl.prototype.getClass = function () {
- return pl
- }, pl.toLocationSymbol = function (t) {
- switch (t) {
- case pl.EXTERIOR:
- return "e";
- case pl.BOUNDARY:
- return "b";
- case pl.INTERIOR:
- return "i";
- case pl.NONE:
- return "-"
- }
- throw new el("Unknown location value: " + t)
- }, fl.INTERIOR.get = function () {
- return 0
- }, fl.BOUNDARY.get = function () {
- return 1
- }, fl.EXTERIOR.get = function () {
- return 2
- }, fl.NONE.get = function () {
- return -1
- }, Object.defineProperties(pl, fl);
- var gl = function (t, e) {
- return t.interfaces_ && t.interfaces_().indexOf(e) > -1
- },
- dl = function () {},
- yl = {
- LOG_10: {
- configurable: !0
- }
- };
- dl.prototype.interfaces_ = function () {
- return []
- }, dl.prototype.getClass = function () {
- return dl
- }, dl.log10 = function (t) {
- var e = Math.log(t);
- return nl.isInfinite(e) || nl.isNaN(e) ? e : e / dl.LOG_10
- }, dl.min = function (t, e, n, r) {
- var i = t;
- return e < i && (i = e), n < i && (i = n), r < i && (i = r), i
- }, dl.clamp = function () {
- if ("number" == typeof arguments[2] && "number" == typeof arguments[0] && "number" == typeof arguments[1]) {
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2];
- return t < e ? e : t > n ? n : t
- }
- if (Number.isInteger(arguments[2]) && Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2];
- return r < i ? i : r > o ? o : r
- }
- }, dl.wrap = function (t, e) {
- return t < 0 ? e - -t % e : t % e
- }, dl.max = function () {
- if (3 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2],
- r = t;
- return e > r && (r = e), n > r && (r = n), r
- }
- if (4 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2],
- a = arguments[3],
- u = i;
- return o > u && (u = o), s > u && (u = s), a > u && (u = a), u
- }
- }, dl.average = function (t, e) {
- return (t + e) / 2
- }, yl.LOG_10.get = function () {
- return Math.log(10)
- }, Object.defineProperties(dl, yl);
- var vl = function (t) {
- this.str = t
- };
- vl.prototype.append = function (t) {
- this.str += t
- }, vl.prototype.setCharAt = function (t, e) {
- this.str = this.str.substr(0, t) + e + this.str.substr(t + 1)
- }, vl.prototype.toString = function (t) {
- return this.str
- };
- var _l = function (t) {
- this.value = t
- };
- _l.prototype.intValue = function () {
- return this.value
- }, _l.prototype.compareTo = function (t) {
- return this.value < t ? -1 : this.value > t ? 1 : 0
- }, _l.isNaN = function (t) {
- return Number.isNaN(t)
- };
- var ml = function () {};
- ml.isWhitespace = function (t) {
- return t <= 32 && t >= 0 || 127 === t
- }, ml.toUpperCase = function (t) {
- return t.toUpperCase()
- };
- var xl = function t() {
- if (this._hi = 0, this._lo = 0, 0 === arguments.length) this.init(0);
- else if (1 === arguments.length) {
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- this.init(e)
- } else if (arguments[0] instanceof t) {
- var n = arguments[0];
- this.init(n)
- } else if ("string" == typeof arguments[0]) {
- var r = arguments[0];
- t.call(this, t.parse(r))
- }
- } else if (2 === arguments.length) {
- var i = arguments[0],
- o = arguments[1];
- this.init(i, o)
- }
- },
- El = {
- PI: {
- configurable: !0
- },
- TWO_PI: {
- configurable: !0
- },
- PI_2: {
- configurable: !0
- },
- E: {
- configurable: !0
- },
- NaN: {
- configurable: !0
- },
- EPS: {
- configurable: !0
- },
- SPLIT: {
- configurable: !0
- },
- MAX_PRINT_DIGITS: {
- configurable: !0
- },
- TEN: {
- configurable: !0
- },
- ONE: {
- configurable: !0
- },
- SCI_NOT_EXPONENT_CHAR: {
- configurable: !0
- },
- SCI_NOT_ZERO: {
- configurable: !0
- }
- };
- xl.prototype.le = function (t) {
- return (this._hi < t._hi || this._hi === t._hi) && this._lo <= t._lo
- }, xl.prototype.extractSignificantDigits = function (t, e) {
- var n = this.abs(),
- r = xl.magnitude(n._hi),
- i = xl.TEN.pow(r);
- (n = n.divide(i)).gt(xl.TEN) ? (n = n.divide(xl.TEN), r += 1) : n.lt(xl.ONE) && (n = n.multiply(xl.TEN), r -= 1);
- for (var o = r + 1, s = new vl, a = xl.MAX_PRINT_DIGITS - 1, u = 0; u <= a; u++) {
- t && u === o && s.append(".");
- var l = Math.trunc(n._hi);
- if (l < 0) break;
- var c = !1,
- h = 0;
- l > 9 ? (c = !0, h = "9") : h = "0" + l, s.append(h), n = n.subtract(xl.valueOf(l)).multiply(xl.TEN), c && n.selfAdd(xl.TEN);
- var p = !0,
- f = xl.magnitude(n._hi);
- if (f < 0 && Math.abs(f) >= a - u && (p = !1), !p) break
- }
- return e[0] = r, s.toString()
- }, xl.prototype.sqr = function () {
- return this.multiply(this)
- }, xl.prototype.doubleValue = function () {
- return this._hi + this._lo
- }, xl.prototype.subtract = function () {
- if (arguments[0] instanceof xl) {
- var t = arguments[0];
- return this.add(t.negate())
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- return this.add(-e)
- }
- }, xl.prototype.equals = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return this._hi === t._hi && this._lo === t._lo
- }
- }, xl.prototype.isZero = function () {
- return 0 === this._hi && 0 === this._lo
- }, xl.prototype.selfSubtract = function () {
- if (arguments[0] instanceof xl) {
- var t = arguments[0];
- return this.isNaN() ? this : this.selfAdd(-t._hi, -t._lo)
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- return this.isNaN() ? this : this.selfAdd(-e, 0)
- }
- }, xl.prototype.getSpecialNumberString = function () {
- return this.isZero() ? "0.0" : this.isNaN() ? "NaN " : null
- }, xl.prototype.min = function (t) {
- return this.le(t) ? this : t
- }, xl.prototype.selfDivide = function () {
- if (1 === arguments.length) {
- if (arguments[0] instanceof xl) {
- var t = arguments[0];
- return this.selfDivide(t._hi, t._lo)
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- return this.selfDivide(e, 0)
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = null,
- o = null,
- s = null,
- a = null,
- u = null,
- l = null,
- c = null,
- h = null;
- return u = this._hi / n, h = (i = (l = xl.SPLIT * u) - (i = l - u)) * (s = (h = xl.SPLIT * n) - (s = h - n)) - (c = u * n) + i * (a = n - s) + (o = u - i) * s + o * a, h = u + (l = (this._hi - c - h + this._lo - u * r) / n), this._hi = h, this._lo = u - h + l, this
- }
- }, xl.prototype.dump = function () {
- return "DD<" + this._hi + ", " + this._lo + ">"
- }, xl.prototype.divide = function () {
- if (arguments[0] instanceof xl) {
- var t = arguments[0],
- e = null,
- n = null,
- r = null,
- i = null,
- o = null,
- s = null,
- a = null,
- u = null;
- n = (o = this._hi / t._hi) - (e = (s = xl.SPLIT * o) - (e = s - o)), u = e * (r = (u = xl.SPLIT * t._hi) - (r = u - t._hi)) - (a = o * t._hi) + e * (i = t._hi - r) + n * r + n * i;
- var l = u = o + (s = (this._hi - a - u + this._lo - o * t._lo) / t._hi),
- c = o - u + s;
- return new xl(l, c)
- }
- if ("number" == typeof arguments[0]) {
- var h = arguments[0];
- return nl.isNaN(h) ? xl.createNaN() : xl.copy(this).selfDivide(h, 0)
- }
- }, xl.prototype.ge = function (t) {
- return (this._hi > t._hi || this._hi === t._hi) && this._lo >= t._lo
- }, xl.prototype.pow = function (t) {
- if (0 === t) return xl.valueOf(1);
- var e = new xl(this),
- n = xl.valueOf(1),
- r = Math.abs(t);
- if (r > 1)
- for (; r > 0;) r % 2 == 1 && n.selfMultiply(e), (r /= 2) > 0 && (e = e.sqr());
- else n = e;
- return t < 0 ? n.reciprocal() : n
- }, xl.prototype.ceil = function () {
- if (this.isNaN()) return xl.NaN;
- var t = Math.ceil(this._hi),
- e = 0;
- return t === this._hi && (e = Math.ceil(this._lo)), new xl(t, e)
- }, xl.prototype.compareTo = function (t) {
- var e = t;
- return this._hi < e._hi ? -1 : this._hi > e._hi ? 1 : this._lo < e._lo ? -1 : this._lo > e._lo ? 1 : 0
- }, xl.prototype.rint = function () {
- return this.isNaN() ? this : this.add(.5).floor()
- }, xl.prototype.setValue = function () {
- if (arguments[0] instanceof xl) {
- var t = arguments[0];
- return this.init(t), this
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- return this.init(e), this
- }
- }, xl.prototype.max = function (t) {
- return this.ge(t) ? this : t
- }, xl.prototype.sqrt = function () {
- if (this.isZero()) return xl.valueOf(0);
- if (this.isNegative()) return xl.NaN;
- var t = 1 / Math.sqrt(this._hi),
- e = this._hi * t,
- n = xl.valueOf(e),
- r = this.subtract(n.sqr())._hi * (.5 * t);
- return n.add(r)
- }, xl.prototype.selfAdd = function () {
- if (1 === arguments.length) {
- if (arguments[0] instanceof xl) {
- var t = arguments[0];
- return this.selfAdd(t._hi, t._lo)
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0],
- n = null,
- r = null,
- i = null,
- o = null,
- s = null,
- a = null;
- return o = (i = this._hi + e) - (s = i - this._hi), r = (a = (o = e - s + (this._hi - o)) + this._lo) + (i - (n = i + a)), this._hi = n + r, this._lo = r + (n - this._hi), this
- }
- } else if (2 === arguments.length) {
- var u = arguments[0],
- l = arguments[1],
- c = null,
- h = null,
- p = null,
- f = null,
- g = null,
- d = null,
- y = null;
- f = this._hi + u, h = this._lo + l, g = f - (d = f - this._hi), p = h - (y = h - this._lo);
- var v = (c = f + (d = (g = u - d + (this._hi - g)) + h)) + (d = (p = l - y + (this._lo - p)) + (d + (f - c))),
- _ = d + (c - v);
- return this._hi = v, this._lo = _, this
- }
- }, xl.prototype.selfMultiply = function () {
- if (1 === arguments.length) {
- if (arguments[0] instanceof xl) {
- var t = arguments[0];
- return this.selfMultiply(t._hi, t._lo)
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- return this.selfMultiply(e, 0)
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = null,
- o = null,
- s = null,
- a = null,
- u = null,
- l = null;
- i = (u = xl.SPLIT * this._hi) - this._hi, l = xl.SPLIT * n, i = u - i, o = this._hi - i, s = l - n;
- var c = (u = this._hi * n) + (l = i * (s = l - s) - u + i * (a = n - s) + o * s + o * a + (this._hi * r + this._lo * n)),
- h = l + (i = u - c);
- return this._hi = c, this._lo = h, this
- }
- }, xl.prototype.selfSqr = function () {
- return this.selfMultiply(this)
- }, xl.prototype.floor = function () {
- if (this.isNaN()) return xl.NaN;
- var t = Math.floor(this._hi),
- e = 0;
- return t === this._hi && (e = Math.floor(this._lo)), new xl(t, e)
- }, xl.prototype.negate = function () {
- return this.isNaN() ? this : new xl(-this._hi, -this._lo)
- }, xl.prototype.clone = function () {}, xl.prototype.multiply = function () {
- if (arguments[0] instanceof xl) {
- var t = arguments[0];
- return t.isNaN() ? xl.createNaN() : xl.copy(this).selfMultiply(t)
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- return nl.isNaN(e) ? xl.createNaN() : xl.copy(this).selfMultiply(e, 0)
- }
- }, xl.prototype.isNaN = function () {
- return nl.isNaN(this._hi)
- }, xl.prototype.intValue = function () {
- return Math.trunc(this._hi)
- }, xl.prototype.toString = function () {
- var t = xl.magnitude(this._hi);
- return t >= -3 && t <= 20 ? this.toStandardNotation() : this.toSciNotation()
- }, xl.prototype.toStandardNotation = function () {
- var t = this.getSpecialNumberString();
- if (null !== t) return t;
- var e = new Array(1).fill(null),
- n = this.extractSignificantDigits(!0, e),
- r = e[0] + 1,
- i = n;
- if ("." === n.charAt(0)) i = "0" + n;
- else if (r < 0) i = "0." + xl.stringOfChar("0", -r) + n;
- else if (-1 === n.indexOf(".")) {
- var o = r - n.length;
- i = n + xl.stringOfChar("0", o) + ".0"
- }
- return this.isNegative() ? "-" + i : i
- }, xl.prototype.reciprocal = function () {
- var t, e, n, r, i = null,
- o = null,
- s = null,
- a = null;
- t = (n = 1 / this._hi) - (i = (s = xl.SPLIT * n) - (i = s - n)), o = (a = xl.SPLIT * this._hi) - this._hi;
- var u = n + (s = (1 - (r = n * this._hi) - (a = i * (o = a - o) - r + i * (e = this._hi - o) + t * o + t * e) - n * this._lo) / this._hi);
- return new xl(u, n - u + s)
- }, xl.prototype.toSciNotation = function () {
- if (this.isZero()) return xl.SCI_NOT_ZERO;
- var t = this.getSpecialNumberString();
- if (null !== t) return t;
- var e = new Array(1).fill(null),
- n = this.extractSignificantDigits(!1, e),
- r = xl.SCI_NOT_EXPONENT_CHAR + e[0];
- if ("0" === n.charAt(0)) throw new Error("Found leading zero: " + n);
- var i = "";
- n.length > 1 && (i = n.substring(1));
- var o = n.charAt(0) + "." + i;
- return this.isNegative() ? "-" + o + r : o + r
- }, xl.prototype.abs = function () {
- return this.isNaN() ? xl.NaN : this.isNegative() ? this.negate() : new xl(this)
- }, xl.prototype.isPositive = function () {
- return (this._hi > 0 || 0 === this._hi) && this._lo > 0
- }, xl.prototype.lt = function (t) {
- return (this._hi < t._hi || this._hi === t._hi) && this._lo < t._lo
- }, xl.prototype.add = function () {
- if (arguments[0] instanceof xl) {
- var t = arguments[0];
- return xl.copy(this).selfAdd(t)
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- return xl.copy(this).selfAdd(e)
- }
- }, xl.prototype.init = function () {
- if (1 === arguments.length) {
- if ("number" == typeof arguments[0]) {
- var t = arguments[0];
- this._hi = t, this._lo = 0
- } else if (arguments[0] instanceof xl) {
- var e = arguments[0];
- this._hi = e._hi, this._lo = e._lo
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- this._hi = n, this._lo = r
- }
- }, xl.prototype.gt = function (t) {
- return (this._hi > t._hi || this._hi === t._hi) && this._lo > t._lo
- }, xl.prototype.isNegative = function () {
- return (this._hi < 0 || 0 === this._hi) && this._lo < 0
- }, xl.prototype.trunc = function () {
- return this.isNaN() ? xl.NaN : this.isPositive() ? this.floor() : this.ceil()
- }, xl.prototype.signum = function () {
- return this._hi > 0 ? 1 : this._hi < 0 ? -1 : this._lo > 0 ? 1 : this._lo < 0 ? -1 : 0
- }, xl.prototype.interfaces_ = function () {
- return [al, il, ol]
- }, xl.prototype.getClass = function () {
- return xl
- }, xl.sqr = function (t) {
- return xl.valueOf(t).selfMultiply(t)
- }, xl.valueOf = function () {
- if ("string" == typeof arguments[0]) {
- var t = arguments[0];
- return xl.parse(t)
- }
- if ("number" == typeof arguments[0]) {
- var e = arguments[0];
- return new xl(e)
- }
- }, xl.sqrt = function (t) {
- return xl.valueOf(t).sqrt()
- }, xl.parse = function (t) {
- for (var e = 0, n = t.length; ml.isWhitespace(t.charAt(e));) e++;
- var r = !1;
- if (e < n) {
- var i = t.charAt(e);
- "-" !== i && "+" !== i || (e++, "-" === i && (r = !0))
- }
- for (var o = new xl, s = 0, a = 0, u = 0; !(e >= n);) {
- var l = t.charAt(e);
- if (e++, ml.isDigit(l)) {
- var c = l - "0";
- o.selfMultiply(xl.TEN), o.selfAdd(c), s++
- } else {
- if ("." !== l) {
- if ("e" === l || "E" === l) {
- var h = t.substring(e);
- try {
- u = _l.parseInt(h)
- } catch (e) {
- throw e instanceof Error ? new Error("Invalid exponent " + h + " in string " + t) : e
- }
- break
- }
- throw new Error("Unexpected character '" + l + "' at position " + e + " in string " + t)
- }
- a = s
- }
- }
- var p = o,
- f = s - a - u;
- if (0 === f) p = o;
- else if (f > 0) {
- var g = xl.TEN.pow(f);
- p = o.divide(g)
- } else if (f < 0) {
- var d = xl.TEN.pow(-f);
- p = o.multiply(d)
- }
- return r ? p.negate() : p
- }, xl.createNaN = function () {
- return new xl(nl.NaN, nl.NaN)
- }, xl.copy = function (t) {
- return new xl(t)
- }, xl.magnitude = function (t) {
- var e = Math.abs(t),
- n = Math.log(e) / Math.log(10),
- r = Math.trunc(Math.floor(n));
- return 10 * Math.pow(10, r) <= e && (r += 1), r
- }, xl.stringOfChar = function (t, e) {
- for (var n = new vl, r = 0; r < e; r++) n.append(t);
- return n.toString()
- }, El.PI.get = function () {
- return new xl(3.141592653589793, 12246467991473532e-32)
- }, El.TWO_PI.get = function () {
- return new xl(6.283185307179586, 24492935982947064e-32)
- }, El.PI_2.get = function () {
- return new xl(1.5707963267948966, 6123233995736766e-32)
- }, El.E.get = function () {
- return new xl(2.718281828459045, 14456468917292502e-32)
- }, El.NaN.get = function () {
- return new xl(nl.NaN, nl.NaN)
- }, El.EPS.get = function () {
- return 123259516440783e-46
- }, El.SPLIT.get = function () {
- return 134217729
- }, El.MAX_PRINT_DIGITS.get = function () {
- return 32
- }, El.TEN.get = function () {
- return xl.valueOf(10)
- }, El.ONE.get = function () {
- return xl.valueOf(1)
- }, El.SCI_NOT_EXPONENT_CHAR.get = function () {
- return "E"
- }, El.SCI_NOT_ZERO.get = function () {
- return "0.0E0"
- }, Object.defineProperties(xl, El);
- var bl = function () {},
- wl = {
- DP_SAFE_EPSILON: {
- configurable: !0
- }
- };
- bl.prototype.interfaces_ = function () {
- return []
- }, bl.prototype.getClass = function () {
- return bl
- }, bl.orientationIndex = function (t, e, n) {
- var r = bl.orientationIndexFilter(t, e, n);
- if (r <= 1) return r;
- var i = xl.valueOf(e.x).selfAdd(-t.x),
- o = xl.valueOf(e.y).selfAdd(-t.y),
- s = xl.valueOf(n.x).selfAdd(-e.x),
- a = xl.valueOf(n.y).selfAdd(-e.y);
- return i.selfMultiply(a).selfSubtract(o.selfMultiply(s)).signum()
- }, bl.signOfDet2x2 = function (t, e, n, r) {
- return t.multiply(r).selfSubtract(e.multiply(n)).signum()
- }, bl.intersection = function (t, e, n, r) {
- var i = xl.valueOf(r.y).selfSubtract(n.y).selfMultiply(xl.valueOf(e.x).selfSubtract(t.x)),
- o = xl.valueOf(r.x).selfSubtract(n.x).selfMultiply(xl.valueOf(e.y).selfSubtract(t.y)),
- s = i.subtract(o),
- a = xl.valueOf(r.x).selfSubtract(n.x).selfMultiply(xl.valueOf(t.y).selfSubtract(n.y)),
- u = xl.valueOf(r.y).selfSubtract(n.y).selfMultiply(xl.valueOf(t.x).selfSubtract(n.x)),
- l = a.subtract(u).selfDivide(s).doubleValue(),
- c = xl.valueOf(t.x).selfAdd(xl.valueOf(e.x).selfSubtract(t.x).selfMultiply(l)).doubleValue(),
- h = xl.valueOf(e.x).selfSubtract(t.x).selfMultiply(xl.valueOf(t.y).selfSubtract(n.y)),
- p = xl.valueOf(e.y).selfSubtract(t.y).selfMultiply(xl.valueOf(t.x).selfSubtract(n.x)),
- f = h.subtract(p).selfDivide(s).doubleValue(),
- g = xl.valueOf(n.y).selfAdd(xl.valueOf(r.y).selfSubtract(n.y).selfMultiply(f)).doubleValue();
- return new ul(c, g)
- }, bl.orientationIndexFilter = function (t, e, n) {
- var r = null,
- i = (t.x - n.x) * (e.y - n.y),
- o = (t.y - n.y) * (e.x - n.x),
- s = i - o;
- if (i > 0) {
- if (o <= 0) return bl.signum(s);
- r = i + o
- } else {
- if (!(i < 0)) return bl.signum(s);
- if (o >= 0) return bl.signum(s);
- r = -i - o
- }
- var a = bl.DP_SAFE_EPSILON * r;
- return s >= a || -s >= a ? bl.signum(s) : 2
- }, bl.signum = function (t) {
- return t > 0 ? 1 : t < 0 ? -1 : 0
- }, wl.DP_SAFE_EPSILON.get = function () {
- return 1e-15
- }, Object.defineProperties(bl, wl);
- var Il = function () {},
- Nl = {
- X: {
- configurable: !0
- },
- Y: {
- configurable: !0
- },
- Z: {
- configurable: !0
- },
- M: {
- configurable: !0
- }
- };
- Nl.X.get = function () {
- return 0
- }, Nl.Y.get = function () {
- return 1
- }, Nl.Z.get = function () {
- return 2
- }, Nl.M.get = function () {
- return 3
- }, Il.prototype.setOrdinate = function (t, e, n) {}, Il.prototype.size = function () {}, Il.prototype.getOrdinate = function (t, e) {}, Il.prototype.getCoordinate = function () {}, Il.prototype.getCoordinateCopy = function (t) {}, Il.prototype.getDimension = function () {}, Il.prototype.getX = function (t) {}, Il.prototype.clone = function () {}, Il.prototype.expandEnvelope = function (t) {}, Il.prototype.copy = function () {}, Il.prototype.getY = function (t) {}, Il.prototype.toCoordinateArray = function () {}, Il.prototype.interfaces_ = function () {
- return [ol]
- }, Il.prototype.getClass = function () {
- return Il
- }, Object.defineProperties(Il, Nl);
- var Sl = function () {},
- Cl = function (t) {
- function e() {
- t.call(this, "Projective point not representable on the Cartesian plane.")
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(Sl),
- Pl = function () {};
- Pl.arraycopy = function (t, e, n, r, i) {
- for (var o = 0, s = e; s < e + i; s++) n[r + o] = t[s], o++
- }, Pl.getProperty = function (t) {
- return {
- "line.separator": "\n"
- } [t]
- };
- var Ml = function t() {
- if (this.x = null, this.y = null, this.w = null, 0 === arguments.length) this.x = 0, this.y = 0, this.w = 1;
- else if (1 === arguments.length) {
- var e = arguments[0];
- this.x = e.x, this.y = e.y, this.w = 1
- } else if (2 === arguments.length) {
- if ("number" == typeof arguments[0] && "number" == typeof arguments[1]) {
- var n = arguments[0],
- r = arguments[1];
- this.x = n, this.y = r, this.w = 1
- } else if (arguments[0] instanceof t && arguments[1] instanceof t) {
- var i = arguments[0],
- o = arguments[1];
- this.x = i.y * o.w - o.y * i.w, this.y = o.x * i.w - i.x * o.w, this.w = i.x * o.y - o.x * i.y
- } else if (arguments[0] instanceof ul && arguments[1] instanceof ul) {
- var s = arguments[0],
- a = arguments[1];
- this.x = s.y - a.y, this.y = a.x - s.x, this.w = s.x * a.y - a.x * s.y
- }
- } else if (3 === arguments.length) {
- var u = arguments[0],
- l = arguments[1],
- c = arguments[2];
- this.x = u, this.y = l, this.w = c
- } else if (4 === arguments.length) {
- var h = arguments[0],
- p = arguments[1],
- f = arguments[2],
- g = arguments[3],
- d = h.y - p.y,
- y = p.x - h.x,
- v = h.x * p.y - p.x * h.y,
- _ = f.y - g.y,
- m = g.x - f.x,
- x = f.x * g.y - g.x * f.y;
- this.x = y * x - m * v, this.y = _ * v - d * x, this.w = d * m - _ * y
- }
- };
- Ml.prototype.getY = function () {
- var t = this.y / this.w;
- if (nl.isNaN(t) || nl.isInfinite(t)) throw new Cl;
- return t
- }, Ml.prototype.getX = function () {
- var t = this.x / this.w;
- if (nl.isNaN(t) || nl.isInfinite(t)) throw new Cl;
- return t
- }, Ml.prototype.getCoordinate = function () {
- var t = new ul;
- return t.x = this.getX(), t.y = this.getY(), t
- }, Ml.prototype.interfaces_ = function () {
- return []
- }, Ml.prototype.getClass = function () {
- return Ml
- }, Ml.intersection = function (t, e, n, r) {
- var i = t.y - e.y,
- o = e.x - t.x,
- s = t.x * e.y - e.x * t.y,
- a = n.y - r.y,
- u = r.x - n.x,
- l = n.x * r.y - r.x * n.y,
- c = i * u - a * o,
- h = (o * l - u * s) / c,
- p = (a * s - i * l) / c;
- if (nl.isNaN(h) || nl.isInfinite(h) || nl.isNaN(p) || nl.isInfinite(p)) throw new Cl;
- return new ul(h, p)
- };
- var Ll = function t() {
- if (this._minx = null, this._maxx = null, this._miny = null, this._maxy = null, 0 === arguments.length) this.init();
- else if (1 === arguments.length) {
- if (arguments[0] instanceof ul) {
- var e = arguments[0];
- this.init(e.x, e.x, e.y, e.y)
- } else if (arguments[0] instanceof t) {
- var n = arguments[0];
- this.init(n)
- }
- } else if (2 === arguments.length) {
- var r = arguments[0],
- i = arguments[1];
- this.init(r.x, i.x, r.y, i.y)
- } else if (4 === arguments.length) {
- var o = arguments[0],
- s = arguments[1],
- a = arguments[2],
- u = arguments[3];
- this.init(o, s, a, u)
- }
- },
- Ol = {
- serialVersionUID: {
- configurable: !0
- }
- };
- Ll.prototype.getArea = function () {
- return this.getWidth() * this.getHeight()
- }, Ll.prototype.equals = function (t) {
- if (!(t instanceof Ll)) return !1;
- var e = t;
- return this.isNull() ? e.isNull() : this._maxx === e.getMaxX() && this._maxy === e.getMaxY() && this._minx === e.getMinX() && this._miny === e.getMinY()
- }, Ll.prototype.intersection = function (t) {
- if (this.isNull() || t.isNull() || !this.intersects(t)) return new Ll;
- var e = this._minx > t._minx ? this._minx : t._minx,
- n = this._miny > t._miny ? this._miny : t._miny,
- r = this._maxx < t._maxx ? this._maxx : t._maxx,
- i = this._maxy < t._maxy ? this._maxy : t._maxy;
- return new Ll(e, r, n, i)
- }, Ll.prototype.isNull = function () {
- return this._maxx < this._minx
- }, Ll.prototype.getMaxX = function () {
- return this._maxx
- }, Ll.prototype.covers = function () {
- if (1 === arguments.length) {
- if (arguments[0] instanceof ul) {
- var t = arguments[0];
- return this.covers(t.x, t.y)
- }
- if (arguments[0] instanceof Ll) {
- var e = arguments[0];
- return !this.isNull() && !e.isNull() && (e.getMinX() >= this._minx && e.getMaxX() <= this._maxx && e.getMinY() >= this._miny && e.getMaxY() <= this._maxy)
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- return !this.isNull() && (n >= this._minx && n <= this._maxx && r >= this._miny && r <= this._maxy)
- }
- }, Ll.prototype.intersects = function () {
- if (1 === arguments.length) {
- if (arguments[0] instanceof Ll) {
- var t = arguments[0];
- return !this.isNull() && !t.isNull() && !(t._minx > this._maxx || t._maxx < this._minx || t._miny > this._maxy || t._maxy < this._miny)
- }
- if (arguments[0] instanceof ul) {
- var e = arguments[0];
- return this.intersects(e.x, e.y)
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- return !this.isNull() && !(n > this._maxx || n < this._minx || r > this._maxy || r < this._miny)
- }
- }, Ll.prototype.getMinY = function () {
- return this._miny
- }, Ll.prototype.getMinX = function () {
- return this._minx
- }, Ll.prototype.expandToInclude = function () {
- if (1 === arguments.length) {
- if (arguments[0] instanceof ul) {
- var t = arguments[0];
- this.expandToInclude(t.x, t.y)
- } else if (arguments[0] instanceof Ll) {
- var e = arguments[0];
- if (e.isNull()) return null;
- this.isNull() ? (this._minx = e.getMinX(), this._maxx = e.getMaxX(), this._miny = e.getMinY(), this._maxy = e.getMaxY()) : (e._minx < this._minx && (this._minx = e._minx), e._maxx > this._maxx && (this._maxx = e._maxx), e._miny < this._miny && (this._miny = e._miny), e._maxy > this._maxy && (this._maxy = e._maxy))
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- this.isNull() ? (this._minx = n, this._maxx = n, this._miny = r, this._maxy = r) : (n < this._minx && (this._minx = n), n > this._maxx && (this._maxx = n), r < this._miny && (this._miny = r), r > this._maxy && (this._maxy = r))
- }
- }, Ll.prototype.minExtent = function () {
- if (this.isNull()) return 0;
- var t = this.getWidth(),
- e = this.getHeight();
- return t < e ? t : e
- }, Ll.prototype.getWidth = function () {
- return this.isNull() ? 0 : this._maxx - this._minx
- }, Ll.prototype.compareTo = function (t) {
- var e = t;
- return this.isNull() ? e.isNull() ? 0 : -1 : e.isNull() ? 1 : this._minx < e._minx ? -1 : this._minx > e._minx ? 1 : this._miny < e._miny ? -1 : this._miny > e._miny ? 1 : this._maxx < e._maxx ? -1 : this._maxx > e._maxx ? 1 : this._maxy < e._maxy ? -1 : this._maxy > e._maxy ? 1 : 0
- }, Ll.prototype.translate = function (t, e) {
- if (this.isNull()) return null;
- this.init(this.getMinX() + t, this.getMaxX() + t, this.getMinY() + e, this.getMaxY() + e)
- }, Ll.prototype.toString = function () {
- return "Env[" + this._minx + " : " + this._maxx + ", " + this._miny + " : " + this._maxy + "]"
- }, Ll.prototype.setToNull = function () {
- this._minx = 0, this._maxx = -1, this._miny = 0, this._maxy = -1
- }, Ll.prototype.getHeight = function () {
- return this.isNull() ? 0 : this._maxy - this._miny
- }, Ll.prototype.maxExtent = function () {
- if (this.isNull()) return 0;
- var t = this.getWidth(),
- e = this.getHeight();
- return t > e ? t : e
- }, Ll.prototype.expandBy = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.expandBy(t, t)
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- if (this.isNull()) return null;
- this._minx -= e, this._maxx += e, this._miny -= n, this._maxy += n, (this._minx > this._maxx || this._miny > this._maxy) && this.setToNull()
- }
- }, Ll.prototype.contains = function () {
- if (1 === arguments.length) {
- if (arguments[0] instanceof Ll) {
- var t = arguments[0];
- return this.covers(t)
- }
- if (arguments[0] instanceof ul) {
- var e = arguments[0];
- return this.covers(e)
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- return this.covers(n, r)
- }
- }, Ll.prototype.centre = function () {
- return this.isNull() ? null : new ul((this.getMinX() + this.getMaxX()) / 2, (this.getMinY() + this.getMaxY()) / 2)
- }, Ll.prototype.init = function () {
- if (0 === arguments.length) this.setToNull();
- else if (1 === arguments.length) {
- if (arguments[0] instanceof ul) {
- var t = arguments[0];
- this.init(t.x, t.x, t.y, t.y)
- } else if (arguments[0] instanceof Ll) {
- var e = arguments[0];
- this._minx = e._minx, this._maxx = e._maxx, this._miny = e._miny, this._maxy = e._maxy
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- this.init(n.x, r.x, n.y, r.y)
- } else if (4 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2],
- a = arguments[3];
- i < o ? (this._minx = i, this._maxx = o) : (this._minx = o, this._maxx = i), s < a ? (this._miny = s, this._maxy = a) : (this._miny = a, this._maxy = s)
- }
- }, Ll.prototype.getMaxY = function () {
- return this._maxy
- }, Ll.prototype.distance = function (t) {
- if (this.intersects(t)) return 0;
- var e = 0;
- this._maxx < t._minx ? e = t._minx - this._maxx : this._minx > t._maxx && (e = this._minx - t._maxx);
- var n = 0;
- return this._maxy < t._miny ? n = t._miny - this._maxy : this._miny > t._maxy && (n = this._miny - t._maxy), 0 === e ? n : 0 === n ? e : Math.sqrt(e * e + n * n)
- }, Ll.prototype.hashCode = function () {
- var t = 17;
- return t = 37 * (t = 37 * (t = 37 * (t = 37 * t + ul.hashCode(this._minx)) + ul.hashCode(this._maxx)) + ul.hashCode(this._miny)) + ul.hashCode(this._maxy)
- }, Ll.prototype.interfaces_ = function () {
- return [il, al]
- }, Ll.prototype.getClass = function () {
- return Ll
- }, Ll.intersects = function () {
- if (3 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2];
- return n.x >= (t.x < e.x ? t.x : e.x) && n.x <= (t.x > e.x ? t.x : e.x) && n.y >= (t.y < e.y ? t.y : e.y) && n.y <= (t.y > e.y ? t.y : e.y)
- }
- if (4 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2],
- s = arguments[3],
- a = Math.min(o.x, s.x),
- u = Math.max(o.x, s.x),
- l = Math.min(r.x, i.x),
- c = Math.max(r.x, i.x);
- return !(l > u) && (!(c < a) && (a = Math.min(o.y, s.y), u = Math.max(o.y, s.y), l = Math.min(r.y, i.y), c = Math.max(r.y, i.y), !(l > u) && !(c < a)))
- }
- }, Ol.serialVersionUID.get = function () {
- return 0x51845cd552189800
- }, Object.defineProperties(Ll, Ol);
- var Rl = {
- typeStr: /^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,
- emptyTypeStr: /^\s*(\w+)\s*EMPTY\s*$/,
- spaces: /\s+/,
- parenComma: /\)\s*,\s*\(/,
- doubleParenComma: /\)\s*\)\s*,\s*\(\s*\(/,
- trimParens: /^\s*\(?(.*?)\)?\s*$/
- },
- Tl = function (t) {
- this.geometryFactory = t || new _h
- };
- Tl.prototype.read = function (t) {
- var e, n, r;
- t = t.replace(/[\n\r]/g, " ");
- var i = Rl.typeStr.exec(t);
- if (-1 !== t.search("EMPTY") && ((i = Rl.emptyTypeStr.exec(t))[2] = void 0), i && (n = i[1].toLowerCase(), r = i[2], Dl[n] && (e = Dl[n].apply(this, [r]))), void 0 === e) throw new Error("Could not parse WKT " + t);
- return e
- }, Tl.prototype.write = function (t) {
- return this.extractGeometry(t)
- }, Tl.prototype.extractGeometry = function (t) {
- var e = t.getGeometryType().toLowerCase();
- if (!Al[e]) return null;
- var n = e.toUpperCase();
- return t.isEmpty() ? n + " EMPTY" : n + "(" + Al[e].apply(this, [t]) + ")"
- };
- var Al = {
- coordinate: function (t) {
- return t.x + " " + t.y
- },
- point: function (t) {
- return Al.coordinate.call(this, t._coordinates._coordinates[0])
- },
- multipoint: function (t) {
- for (var e = [], n = 0, r = t._geometries.length; n < r; ++n) e.push("(" + Al.point.apply(this, [t._geometries[n]]) + ")");
- return e.join(",")
- },
- linestring: function (t) {
- for (var e = [], n = 0, r = t._points._coordinates.length; n < r; ++n) e.push(Al.coordinate.apply(this, [t._points._coordinates[n]]));
- return e.join(",")
- },
- linearring: function (t) {
- for (var e = [], n = 0, r = t._points._coordinates.length; n < r; ++n) e.push(Al.coordinate.apply(this, [t._points._coordinates[n]]));
- return e.join(",")
- },
- multilinestring: function (t) {
- for (var e = [], n = 0, r = t._geometries.length; n < r; ++n) e.push("(" + Al.linestring.apply(this, [t._geometries[n]]) + ")");
- return e.join(",")
- },
- polygon: function (t) {
- var e = [];
- e.push("(" + Al.linestring.apply(this, [t._shell]) + ")");
- for (var n = 0, r = t._holes.length; n < r; ++n) e.push("(" + Al.linestring.apply(this, [t._holes[n]]) + ")");
- return e.join(",")
- },
- multipolygon: function (t) {
- for (var e = [], n = 0, r = t._geometries.length; n < r; ++n) e.push("(" + Al.polygon.apply(this, [t._geometries[n]]) + ")");
- return e.join(",")
- },
- geometrycollection: function (t) {
- for (var e = [], n = 0, r = t._geometries.length; n < r; ++n) e.push(this.extractGeometry(t._geometries[n]));
- return e.join(",")
- }
- },
- Dl = {
- point: function (t) {
- if (void 0 === t) return this.geometryFactory.createPoint();
- var e = t.trim().split(Rl.spaces);
- return this.geometryFactory.createPoint(new ul(Number.parseFloat(e[0]), Number.parseFloat(e[1])))
- },
- multipoint: function (t) {
- var e;
- if (void 0 === t) return this.geometryFactory.createMultiPoint();
- for (var n = t.trim().split(","), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].replace(Rl.trimParens, "$1"), r.push(Dl.point.apply(this, [e]));
- return this.geometryFactory.createMultiPoint(r)
- },
- linestring: function (t) {
- if (void 0 === t) return this.geometryFactory.createLineString();
- for (var e, n = t.trim().split(","), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].trim().split(Rl.spaces), r.push(new ul(Number.parseFloat(e[0]), Number.parseFloat(e[1])));
- return this.geometryFactory.createLineString(r)
- },
- linearring: function (t) {
- if (void 0 === t) return this.geometryFactory.createLinearRing();
- for (var e, n = t.trim().split(","), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].trim().split(Rl.spaces), r.push(new ul(Number.parseFloat(e[0]), Number.parseFloat(e[1])));
- return this.geometryFactory.createLinearRing(r)
- },
- multilinestring: function (t) {
- var e;
- if (void 0 === t) return this.geometryFactory.createMultiLineString();
- for (var n = t.trim().split(Rl.parenComma), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].replace(Rl.trimParens, "$1"), r.push(Dl.linestring.apply(this, [e]));
- return this.geometryFactory.createMultiLineString(r)
- },
- polygon: function (t) {
- var e, n, r;
- if (void 0 === t) return this.geometryFactory.createPolygon();
- for (var i, o = t.trim().split(Rl.parenComma), s = [], a = 0, u = o.length; a < u; ++a) e = o[a].replace(Rl.trimParens, "$1"), n = Dl.linestring.apply(this, [e]), r = this.geometryFactory.createLinearRing(n._points), 0 === a ? i = r : s.push(r);
- return this.geometryFactory.createPolygon(i, s)
- },
- multipolygon: function (t) {
- var e;
- if (void 0 === t) return this.geometryFactory.createMultiPolygon();
- for (var n = t.trim().split(Rl.doubleParenComma), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].replace(Rl.trimParens, "$1"), r.push(Dl.polygon.apply(this, [e]));
- return this.geometryFactory.createMultiPolygon(r)
- },
- geometrycollection: function (t) {
- if (void 0 === t) return this.geometryFactory.createGeometryCollection();
- for (var e = (t = t.replace(/,\s*([A-Za-z])/g, "|$1")).trim().split("|"), n = [], r = 0, i = e.length; r < i; ++r) n.push(this.read(e[r]));
- return this.geometryFactory.createGeometryCollection(n)
- }
- },
- Fl = function (t) {
- this.parser = new Tl(t)
- };
- Fl.prototype.write = function (t) {
- return this.parser.write(t)
- }, Fl.toLineString = function (t, e) {
- if (2 !== arguments.length) throw new Error("Not implemented");
- return "LINESTRING ( " + t.x + " " + t.y + ", " + e.x + " " + e.y + " )"
- };
- var kl = function (t) {
- function e(e) {
- t.call(this, e), this.name = "RuntimeException", this.message = e, this.stack = (new t).stack
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
- }(Error),
- Gl = function (t) {
- function e() {
- if (t.call(this), 0 === arguments.length) t.call(this);
- else if (1 === arguments.length) {
- var e = arguments[0];
- t.call(this, e)
- }
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(kl),
- ql = function () {};
- ql.prototype.interfaces_ = function () {
- return []
- }, ql.prototype.getClass = function () {
- return ql
- }, ql.shouldNeverReachHere = function () {
- if (0 === arguments.length) ql.shouldNeverReachHere(null);
- else if (1 === arguments.length) {
- var t = arguments[0];
- throw new Gl("Should never reach here" + (null !== t ? ": " + t : ""))
- }
- }, ql.isTrue = function () {
- var t;
- if (1 === arguments.length) ql.isTrue(arguments[0], null);
- else if (2 === arguments.length && (t = arguments[1], !arguments[0])) throw null === t ? new Gl : new Gl(t)
- }, ql.equals = function () {
- var t, e, n;
- if (2 === arguments.length) ql.equals(t = arguments[0], e = arguments[1], null);
- else if (3 === arguments.length && (t = arguments[0], n = arguments[2], !(e = arguments[1]).equals(t))) throw new Gl("Expected " + t + " but encountered " + e + (null !== n ? ": " + n : ""))
- };
- var Bl = function () {
- this._result = null, this._inputLines = Array(2).fill().map((function () {
- return Array(2)
- })), this._intPt = new Array(2).fill(null), this._intLineIndex = null, this._isProper = null, this._pa = null, this._pb = null, this._precisionModel = null, this._intPt[0] = new ul, this._intPt[1] = new ul, this._pa = this._intPt[0], this._pb = this._intPt[1], this._result = 0
- },
- zl = {
- DONT_INTERSECT: {
- configurable: !0
- },
- DO_INTERSECT: {
- configurable: !0
- },
- COLLINEAR: {
- configurable: !0
- },
- NO_INTERSECTION: {
- configurable: !0
- },
- POINT_INTERSECTION: {
- configurable: !0
- },
- COLLINEAR_INTERSECTION: {
- configurable: !0
- }
- };
- Bl.prototype.getIndexAlongSegment = function (t, e) {
- return this.computeIntLineIndex(), this._intLineIndex[t][e]
- }, Bl.prototype.getTopologySummary = function () {
- var t = new vl;
- return this.isEndPoint() && t.append(" endpoint"), this._isProper && t.append(" proper"), this.isCollinear() && t.append(" collinear"), t.toString()
- }, Bl.prototype.computeIntersection = function (t, e, n, r) {
- this._inputLines[0][0] = t, this._inputLines[0][1] = e, this._inputLines[1][0] = n, this._inputLines[1][1] = r, this._result = this.computeIntersect(t, e, n, r)
- }, Bl.prototype.getIntersectionNum = function () {
- return this._result
- }, Bl.prototype.computeIntLineIndex = function () {
- if (0 === arguments.length) null === this._intLineIndex && (this._intLineIndex = Array(2).fill().map((function () {
- return Array(2)
- })), this.computeIntLineIndex(0), this.computeIntLineIndex(1));
- else if (1 === arguments.length) {
- var t = arguments[0],
- e = this.getEdgeDistance(t, 0),
- n = this.getEdgeDistance(t, 1);
- e > n ? (this._intLineIndex[t][0] = 0, this._intLineIndex[t][1] = 1) : (this._intLineIndex[t][0] = 1, this._intLineIndex[t][1] = 0)
- }
- }, Bl.prototype.isProper = function () {
- return this.hasIntersection() && this._isProper
- }, Bl.prototype.setPrecisionModel = function (t) {
- this._precisionModel = t
- }, Bl.prototype.isInteriorIntersection = function () {
- var t = this;
- if (0 === arguments.length) return !!this.isInteriorIntersection(0) || !!this.isInteriorIntersection(1);
- if (1 === arguments.length) {
- for (var e = arguments[0], n = 0; n < this._result; n++)
- if (!t._intPt[n].equals2D(t._inputLines[e][0]) && !t._intPt[n].equals2D(t._inputLines[e][1])) return !0;
- return !1
- }
- }, Bl.prototype.getIntersection = function (t) {
- return this._intPt[t]
- }, Bl.prototype.isEndPoint = function () {
- return this.hasIntersection() && !this._isProper
- }, Bl.prototype.hasIntersection = function () {
- return this._result !== Bl.NO_INTERSECTION
- }, Bl.prototype.getEdgeDistance = function (t, e) {
- return Bl.computeEdgeDistance(this._intPt[e], this._inputLines[t][0], this._inputLines[t][1])
- }, Bl.prototype.isCollinear = function () {
- return this._result === Bl.COLLINEAR_INTERSECTION
- }, Bl.prototype.toString = function () {
- return Fl.toLineString(this._inputLines[0][0], this._inputLines[0][1]) + " - " + Fl.toLineString(this._inputLines[1][0], this._inputLines[1][1]) + this.getTopologySummary()
- }, Bl.prototype.getEndpoint = function (t, e) {
- return this._inputLines[t][e]
- }, Bl.prototype.isIntersection = function (t) {
- for (var e = 0; e < this._result; e++)
- if (this._intPt[e].equals2D(t)) return !0;
- return !1
- }, Bl.prototype.getIntersectionAlongSegment = function (t, e) {
- return this.computeIntLineIndex(), this._intPt[this._intLineIndex[t][e]]
- }, Bl.prototype.interfaces_ = function () {
- return []
- }, Bl.prototype.getClass = function () {
- return Bl
- }, Bl.computeEdgeDistance = function (t, e, n) {
- var r = Math.abs(n.x - e.x),
- i = Math.abs(n.y - e.y),
- o = -1;
- if (t.equals(e)) o = 0;
- else if (t.equals(n)) o = r > i ? r : i;
- else {
- var s = Math.abs(t.x - e.x),
- a = Math.abs(t.y - e.y);
- 0 !== (o = r > i ? s : a) || t.equals(e) || (o = Math.max(s, a))
- }
- return ql.isTrue(!(0 === o && !t.equals(e)), "Bad distance calculation"), o
- }, Bl.nonRobustComputeEdgeDistance = function (t, e, n) {
- var r = t.x - e.x,
- i = t.y - e.y,
- o = Math.sqrt(r * r + i * i);
- return ql.isTrue(!(0 === o && !t.equals(e)), "Invalid distance calculation"), o
- }, zl.DONT_INTERSECT.get = function () {
- return 0
- }, zl.DO_INTERSECT.get = function () {
- return 1
- }, zl.COLLINEAR.get = function () {
- return 2
- }, zl.NO_INTERSECTION.get = function () {
- return 0
- }, zl.POINT_INTERSECTION.get = function () {
- return 1
- }, zl.COLLINEAR_INTERSECTION.get = function () {
- return 2
- }, Object.defineProperties(Bl, zl);
- var jl = function (t) {
- function e() {
- t.apply(this, arguments)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.isInSegmentEnvelopes = function (t) {
- var e = new Ll(this._inputLines[0][0], this._inputLines[0][1]),
- n = new Ll(this._inputLines[1][0], this._inputLines[1][1]);
- return e.contains(t) && n.contains(t)
- }, e.prototype.computeIntersection = function () {
- if (3 !== arguments.length) return t.prototype.computeIntersection.apply(this, arguments);
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2];
- if (this._isProper = !1, Ll.intersects(n, r, e) && 0 === Xl.orientationIndex(n, r, e) && 0 === Xl.orientationIndex(r, n, e)) return this._isProper = !0, (e.equals(n) || e.equals(r)) && (this._isProper = !1), this._result = t.POINT_INTERSECTION, null;
- this._result = t.NO_INTERSECTION
- }, e.prototype.normalizeToMinimum = function (t, e, n, r, i) {
- i.x = this.smallestInAbsValue(t.x, e.x, n.x, r.x), i.y = this.smallestInAbsValue(t.y, e.y, n.y, r.y), t.x -= i.x, t.y -= i.y, e.x -= i.x, e.y -= i.y, n.x -= i.x, n.y -= i.y, r.x -= i.x, r.y -= i.y
- }, e.prototype.safeHCoordinateIntersection = function (t, n, r, i) {
- var o = null;
- try {
- o = Ml.intersection(t, n, r, i)
- } catch (s) {
- if (!(s instanceof Cl)) throw s;
- o = e.nearestEndpoint(t, n, r, i)
- }
- return o
- }, e.prototype.intersection = function (t, n, r, i) {
- var o = this.intersectionWithNormalization(t, n, r, i);
- return this.isInSegmentEnvelopes(o) || (o = new ul(e.nearestEndpoint(t, n, r, i))), null !== this._precisionModel && this._precisionModel.makePrecise(o), o
- }, e.prototype.smallestInAbsValue = function (t, e, n, r) {
- var i = t,
- o = Math.abs(i);
- return Math.abs(e) < o && (i = e, o = Math.abs(e)), Math.abs(n) < o && (i = n, o = Math.abs(n)), Math.abs(r) < o && (i = r), i
- }, e.prototype.checkDD = function (t, e, n, r, i) {
- var o = bl.intersection(t, e, n, r),
- s = this.isInSegmentEnvelopes(o);
- Pl.out.println("DD in env = " + s + " --------------------- " + o), i.distance(o) > 1e-4 && Pl.out.println("Distance = " + i.distance(o))
- }, e.prototype.intersectionWithNormalization = function (t, e, n, r) {
- var i = new ul(t),
- o = new ul(e),
- s = new ul(n),
- a = new ul(r),
- u = new ul;
- this.normalizeToEnvCentre(i, o, s, a, u);
- var l = this.safeHCoordinateIntersection(i, o, s, a);
- return l.x += u.x, l.y += u.y, l
- }, e.prototype.computeCollinearIntersection = function (e, n, r, i) {
- var o = Ll.intersects(e, n, r),
- s = Ll.intersects(e, n, i),
- a = Ll.intersects(r, i, e),
- u = Ll.intersects(r, i, n);
- return o && s ? (this._intPt[0] = r, this._intPt[1] = i, t.COLLINEAR_INTERSECTION) : a && u ? (this._intPt[0] = e, this._intPt[1] = n, t.COLLINEAR_INTERSECTION) : o && a ? (this._intPt[0] = r, this._intPt[1] = e, !r.equals(e) || s || u ? t.COLLINEAR_INTERSECTION : t.POINT_INTERSECTION) : o && u ? (this._intPt[0] = r, this._intPt[1] = n, !r.equals(n) || s || a ? t.COLLINEAR_INTERSECTION : t.POINT_INTERSECTION) : s && a ? (this._intPt[0] = i, this._intPt[1] = e, !i.equals(e) || o || u ? t.COLLINEAR_INTERSECTION : t.POINT_INTERSECTION) : s && u ? (this._intPt[0] = i, this._intPt[1] = n, !i.equals(n) || o || a ? t.COLLINEAR_INTERSECTION : t.POINT_INTERSECTION) : t.NO_INTERSECTION
- }, e.prototype.normalizeToEnvCentre = function (t, e, n, r, i) {
- var o = t.x < e.x ? t.x : e.x,
- s = t.y < e.y ? t.y : e.y,
- a = t.x > e.x ? t.x : e.x,
- u = t.y > e.y ? t.y : e.y,
- l = n.x < r.x ? n.x : r.x,
- c = n.y < r.y ? n.y : r.y,
- h = n.x > r.x ? n.x : r.x,
- p = n.y > r.y ? n.y : r.y,
- f = ((o > l ? o : l) + (a < h ? a : h)) / 2,
- g = ((s > c ? s : c) + (u < p ? u : p)) / 2;
- i.x = f, i.y = g, t.x -= i.x, t.y -= i.y, e.x -= i.x, e.y -= i.y, n.x -= i.x, n.y -= i.y, r.x -= i.x, r.y -= i.y
- }, e.prototype.computeIntersect = function (e, n, r, i) {
- if (this._isProper = !1, !Ll.intersects(e, n, r, i)) return t.NO_INTERSECTION;
- var o = Xl.orientationIndex(e, n, r),
- s = Xl.orientationIndex(e, n, i);
- if (o > 0 && s > 0 || o < 0 && s < 0) return t.NO_INTERSECTION;
- var a = Xl.orientationIndex(r, i, e),
- u = Xl.orientationIndex(r, i, n);
- return a > 0 && u > 0 || a < 0 && u < 0 ? t.NO_INTERSECTION : 0 === o && 0 === s && 0 === a && 0 === u ? this.computeCollinearIntersection(e, n, r, i) : (0 === o || 0 === s || 0 === a || 0 === u ? (this._isProper = !1, e.equals2D(r) || e.equals2D(i) ? this._intPt[0] = e : n.equals2D(r) || n.equals2D(i) ? this._intPt[0] = n : 0 === o ? this._intPt[0] = new ul(r) : 0 === s ? this._intPt[0] = new ul(i) : 0 === a ? this._intPt[0] = new ul(e) : 0 === u && (this._intPt[0] = new ul(n))) : (this._isProper = !0, this._intPt[0] = this.intersection(e, n, r, i)), t.POINT_INTERSECTION)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e.nearestEndpoint = function (t, e, n, r) {
- var i = t,
- o = Xl.distancePointLine(t, n, r),
- s = Xl.distancePointLine(e, n, r);
- return s < o && (o = s, i = e), (s = Xl.distancePointLine(n, t, e)) < o && (o = s, i = n), (s = Xl.distancePointLine(r, t, e)) < o && (o = s, i = r), i
- }, e
- }(Bl),
- Ul = function () {};
- Ul.prototype.interfaces_ = function () {
- return []
- }, Ul.prototype.getClass = function () {
- return Ul
- }, Ul.orientationIndex = function (t, e, n) {
- var r = e.x - t.x,
- i = e.y - t.y,
- o = n.x - e.x,
- s = n.y - e.y;
- return Ul.signOfDet2x2(r, i, o, s)
- }, Ul.signOfDet2x2 = function (t, e, n, r) {
- var i = null,
- o = null,
- s = null;
- if (i = 1, 0 === t || 0 === r) return 0 === e || 0 === n ? 0 : e > 0 ? n > 0 ? -i : i : n > 0 ? i : -i;
- if (0 === e || 0 === n) return r > 0 ? t > 0 ? i : -i : t > 0 ? -i : i;
- if (e > 0 ? r > 0 ? e <= r || (i = -i, o = t, t = n, n = o, o = e, e = r, r = o) : e <= -r ? (i = -i, n = -n, r = -r) : (o = t, t = -n, n = o, o = e, e = -r, r = o) : r > 0 ? -e <= r ? (i = -i, t = -t, e = -e) : (o = -t, t = n, n = o, o = -e, e = r, r = o) : e >= r ? (t = -t, e = -e, n = -n, r = -r) : (i = -i, o = -t, t = -n, n = o, o = -e, e = -r, r = o), t > 0) {
- if (!(n > 0)) return i;
- if (!(t <= n)) return i
- } else {
- if (n > 0) return -i;
- if (!(t >= n)) return -i;
- i = -i, t = -t, n = -n
- }
- for (;;) {
- if ((r -= (s = Math.floor(n / t)) * e) < 0) return -i;
- if (r > e) return i;
- if (t > (n -= s * t) + n) {
- if (e < r + r) return i
- } else {
- if (e > r + r) return -i;
- n = t - n, r = e - r, i = -i
- }
- if (0 === r) return 0 === n ? 0 : -i;
- if (0 === n) return i;
- if ((e -= (s = Math.floor(t / n)) * r) < 0) return i;
- if (e > r) return -i;
- if (n > (t -= s * n) + t) {
- if (r < e + e) return -i
- } else {
- if (r > e + e) return i;
- t = n - t, e = r - e, i = -i
- }
- if (0 === e) return 0 === t ? 0 : i;
- if (0 === t) return -i
- }
- };
- var Vl = function () {
- this._p = null, this._crossingCount = 0, this._isPointOnSegment = !1;
- var t = arguments[0];
- this._p = t
- };
- Vl.prototype.countSegment = function (t, e) {
- if (t.x < this._p.x && e.x < this._p.x) return null;
- if (this._p.x === e.x && this._p.y === e.y) return this._isPointOnSegment = !0, null;
- if (t.y === this._p.y && e.y === this._p.y) {
- var n = t.x,
- r = e.x;
- return n > r && (n = e.x, r = t.x), this._p.x >= n && this._p.x <= r && (this._isPointOnSegment = !0), null
- }
- if (t.y > this._p.y && e.y <= this._p.y || e.y > this._p.y && t.y <= this._p.y) {
- var i = t.x - this._p.x,
- o = t.y - this._p.y,
- s = e.x - this._p.x,
- a = e.y - this._p.y,
- u = Ul.signOfDet2x2(i, o, s, a);
- if (0 === u) return this._isPointOnSegment = !0, null;
- a < o && (u = -u), u > 0 && this._crossingCount++
- }
- }, Vl.prototype.isPointInPolygon = function () {
- return this.getLocation() !== pl.EXTERIOR
- }, Vl.prototype.getLocation = function () {
- return this._isPointOnSegment ? pl.BOUNDARY : this._crossingCount % 2 == 1 ? pl.INTERIOR : pl.EXTERIOR
- }, Vl.prototype.isOnSegment = function () {
- return this._isPointOnSegment
- }, Vl.prototype.interfaces_ = function () {
- return []
- }, Vl.prototype.getClass = function () {
- return Vl
- }, Vl.locatePointInRing = function () {
- if (arguments[0] instanceof ul && gl(arguments[1], Il)) {
- for (var t = arguments[0], e = arguments[1], n = new Vl(t), r = new ul, i = new ul, o = 1; o < e.size(); o++)
- if (e.getCoordinate(o, r), e.getCoordinate(o - 1, i), n.countSegment(r, i), n.isOnSegment()) return n.getLocation();
- return n.getLocation()
- }
- if (arguments[0] instanceof ul && arguments[1] instanceof Array) {
- for (var s = arguments[0], a = arguments[1], u = new Vl(s), l = 1; l < a.length; l++) {
- var c = a[l],
- h = a[l - 1];
- if (u.countSegment(c, h), u.isOnSegment()) return u.getLocation()
- }
- return u.getLocation()
- }
- };
- var Xl = function () {},
- Yl = {
- CLOCKWISE: {
- configurable: !0
- },
- RIGHT: {
- configurable: !0
- },
- COUNTERCLOCKWISE: {
- configurable: !0
- },
- LEFT: {
- configurable: !0
- },
- COLLINEAR: {
- configurable: !0
- },
- STRAIGHT: {
- configurable: !0
- }
- };
- Xl.prototype.interfaces_ = function () {
- return []
- }, Xl.prototype.getClass = function () {
- return Xl
- }, Xl.orientationIndex = function (t, e, n) {
- return bl.orientationIndex(t, e, n)
- }, Xl.signedArea = function () {
- if (arguments[0] instanceof Array) {
- var t = arguments[0];
- if (t.length < 3) return 0;
- for (var e = 0, n = t[0].x, r = 1; r < t.length - 1; r++) {
- var i = t[r].x - n,
- o = t[r + 1].y,
- s = t[r - 1].y;
- e += i * (s - o)
- }
- return e / 2
- }
- if (gl(arguments[0], Il)) {
- var a = arguments[0],
- u = a.size();
- if (u < 3) return 0;
- var l = new ul,
- c = new ul,
- h = new ul;
- a.getCoordinate(0, c), a.getCoordinate(1, h);
- var p = c.x;
- h.x -= p;
- for (var f = 0, g = 1; g < u - 1; g++) l.y = c.y, c.x = h.x, c.y = h.y, a.getCoordinate(g + 1, h), h.x -= p, f += c.x * (l.y - h.y);
- return f / 2
- }
- }, Xl.distanceLineLine = function (t, e, n, r) {
- if (t.equals(e)) return Xl.distancePointLine(t, n, r);
- if (n.equals(r)) return Xl.distancePointLine(r, t, e);
- var i = !1;
- if (Ll.intersects(t, e, n, r)) {
- var o = (e.x - t.x) * (r.y - n.y) - (e.y - t.y) * (r.x - n.x);
- if (0 === o) i = !0;
- else {
- var s = (t.y - n.y) * (r.x - n.x) - (t.x - n.x) * (r.y - n.y),
- a = ((t.y - n.y) * (e.x - t.x) - (t.x - n.x) * (e.y - t.y)) / o,
- u = s / o;
- (u < 0 || u > 1 || a < 0 || a > 1) && (i = !0)
- }
- } else i = !0;
- return i ? dl.min(Xl.distancePointLine(t, n, r), Xl.distancePointLine(e, n, r), Xl.distancePointLine(n, t, e), Xl.distancePointLine(r, t, e)) : 0
- }, Xl.isPointInRing = function (t, e) {
- return Xl.locatePointInRing(t, e) !== pl.EXTERIOR
- }, Xl.computeLength = function (t) {
- var e = t.size();
- if (e <= 1) return 0;
- var n = 0,
- r = new ul;
- t.getCoordinate(0, r);
- for (var i = r.x, o = r.y, s = 1; s < e; s++) {
- t.getCoordinate(s, r);
- var a = r.x,
- u = r.y,
- l = a - i,
- c = u - o;
- n += Math.sqrt(l * l + c * c), i = a, o = u
- }
- return n
- }, Xl.isCCW = function (t) {
- var e = t.length - 1;
- if (e < 3) throw new el("Ring has fewer than 4 points, so orientation cannot be determined");
- for (var n = t[0], r = 0, i = 1; i <= e; i++) {
- var o = t[i];
- o.y > n.y && (n = o, r = i)
- }
- var s = r;
- do {
- (s -= 1) < 0 && (s = e)
- } while (t[s].equals2D(n) && s !== r);
- var a = r;
- do {
- a = (a + 1) % e
- } while (t[a].equals2D(n) && a !== r);
- var u = t[s],
- l = t[a];
- if (u.equals2D(n) || l.equals2D(n) || u.equals2D(l)) return !1;
- var c = Xl.computeOrientation(u, n, l),
- h = !1;
- return h = 0 === c ? u.x > l.x : c > 0, h
- }, Xl.locatePointInRing = function (t, e) {
- return Vl.locatePointInRing(t, e)
- }, Xl.distancePointLinePerpendicular = function (t, e, n) {
- var r = (n.x - e.x) * (n.x - e.x) + (n.y - e.y) * (n.y - e.y),
- i = ((e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)) / r;
- return Math.abs(i) * Math.sqrt(r)
- }, Xl.computeOrientation = function (t, e, n) {
- return Xl.orientationIndex(t, e, n)
- }, Xl.distancePointLine = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- if (0 === e.length) throw new el("Line array must contain at least one vertex");
- for (var n = t.distance(e[0]), r = 0; r < e.length - 1; r++) {
- var i = Xl.distancePointLine(t, e[r], e[r + 1]);
- i < n && (n = i)
- }
- return n
- }
- if (3 === arguments.length) {
- var o = arguments[0],
- s = arguments[1],
- a = arguments[2];
- if (s.x === a.x && s.y === a.y) return o.distance(s);
- var u = (a.x - s.x) * (a.x - s.x) + (a.y - s.y) * (a.y - s.y),
- l = ((o.x - s.x) * (a.x - s.x) + (o.y - s.y) * (a.y - s.y)) / u;
- if (l <= 0) return o.distance(s);
- if (l >= 1) return o.distance(a);
- var c = ((s.y - o.y) * (a.x - s.x) - (s.x - o.x) * (a.y - s.y)) / u;
- return Math.abs(c) * Math.sqrt(u)
- }
- }, Xl.isOnLine = function (t, e) {
- for (var n = new jl, r = 1; r < e.length; r++) {
- var i = e[r - 1],
- o = e[r];
- if (n.computeIntersection(t, i, o), n.hasIntersection()) return !0
- }
- return !1
- }, Yl.CLOCKWISE.get = function () {
- return -1
- }, Yl.RIGHT.get = function () {
- return Xl.CLOCKWISE
- }, Yl.COUNTERCLOCKWISE.get = function () {
- return 1
- }, Yl.LEFT.get = function () {
- return Xl.COUNTERCLOCKWISE
- }, Yl.COLLINEAR.get = function () {
- return 0
- }, Yl.STRAIGHT.get = function () {
- return Xl.COLLINEAR
- }, Object.defineProperties(Xl, Yl);
- var Hl = function () {};
- Hl.prototype.filter = function (t) {}, Hl.prototype.interfaces_ = function () {
- return []
- }, Hl.prototype.getClass = function () {
- return Hl
- };
- var Wl = function () {
- var t = arguments[0];
- this._envelope = null, this._factory = null, this._SRID = null, this._userData = null, this._factory = t, this._SRID = t.getSRID()
- },
- Jl = {
- serialVersionUID: {
- configurable: !0
- },
- SORTINDEX_POINT: {
- configurable: !0
- },
- SORTINDEX_MULTIPOINT: {
- configurable: !0
- },
- SORTINDEX_LINESTRING: {
- configurable: !0
- },
- SORTINDEX_LINEARRING: {
- configurable: !0
- },
- SORTINDEX_MULTILINESTRING: {
- configurable: !0
- },
- SORTINDEX_POLYGON: {
- configurable: !0
- },
- SORTINDEX_MULTIPOLYGON: {
- configurable: !0
- },
- SORTINDEX_GEOMETRYCOLLECTION: {
- configurable: !0
- },
- geometryChangedFilter: {
- configurable: !0
- }
- };
- Wl.prototype.isGeometryCollection = function () {
- return this.getSortIndex() === Wl.SORTINDEX_GEOMETRYCOLLECTION
- }, Wl.prototype.getFactory = function () {
- return this._factory
- }, Wl.prototype.getGeometryN = function (t) {
- return this
- }, Wl.prototype.getArea = function () {
- return 0
- }, Wl.prototype.isRectangle = function () {
- return !1
- }, Wl.prototype.equals = function () {
- if (arguments[0] instanceof Wl) {
- var t = arguments[0];
- return null !== t && this.equalsTopo(t)
- }
- if (arguments[0] instanceof Object) {
- var e = arguments[0];
- if (!(e instanceof Wl)) return !1;
- var n = e;
- return this.equalsExact(n)
- }
- }, Wl.prototype.equalsExact = function (t) {
- return this === t || this.equalsExact(t, 0)
- }, Wl.prototype.geometryChanged = function () {
- this.apply(Wl.geometryChangedFilter)
- }, Wl.prototype.geometryChangedAction = function () {
- this._envelope = null
- }, Wl.prototype.equalsNorm = function (t) {
- return null !== t && this.norm().equalsExact(t.norm())
- }, Wl.prototype.getLength = function () {
- return 0
- }, Wl.prototype.getNumGeometries = function () {
- return 1
- }, Wl.prototype.compareTo = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = t;
- return this.getSortIndex() !== e.getSortIndex() ? this.getSortIndex() - e.getSortIndex() : this.isEmpty() && e.isEmpty() ? 0 : this.isEmpty() ? -1 : e.isEmpty() ? 1 : this.compareToSameClass(t)
- }
- if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- return this.getSortIndex() !== n.getSortIndex() ? this.getSortIndex() - n.getSortIndex() : this.isEmpty() && n.isEmpty() ? 0 : this.isEmpty() ? -1 : n.isEmpty() ? 1 : this.compareToSameClass(n, r)
- }
- }, Wl.prototype.getUserData = function () {
- return this._userData
- }, Wl.prototype.getSRID = function () {
- return this._SRID
- }, Wl.prototype.getEnvelope = function () {
- return this.getFactory().toGeometry(this.getEnvelopeInternal())
- }, Wl.prototype.checkNotGeometryCollection = function (t) {
- if (t.getSortIndex() === Wl.SORTINDEX_GEOMETRYCOLLECTION) throw new el("This method does not support GeometryCollection arguments")
- }, Wl.prototype.equal = function (t, e, n) {
- return 0 === n ? t.equals(e) : t.distance(e) <= n
- }, Wl.prototype.norm = function () {
- var t = this.copy();
- return t.normalize(), t
- }, Wl.prototype.getPrecisionModel = function () {
- return this._factory.getPrecisionModel()
- }, Wl.prototype.getEnvelopeInternal = function () {
- return null === this._envelope && (this._envelope = this.computeEnvelopeInternal()), new Ll(this._envelope)
- }, Wl.prototype.setSRID = function (t) {
- this._SRID = t
- }, Wl.prototype.setUserData = function (t) {
- this._userData = t
- }, Wl.prototype.compare = function (t, e) {
- for (var n = t.iterator(), r = e.iterator(); n.hasNext() && r.hasNext();) {
- var i = n.next(),
- o = r.next(),
- s = i.compareTo(o);
- if (0 !== s) return s
- }
- return n.hasNext() ? 1 : r.hasNext() ? -1 : 0
- }, Wl.prototype.hashCode = function () {
- return this.getEnvelopeInternal().hashCode()
- }, Wl.prototype.isGeometryCollectionOrDerived = function () {
- return this.getSortIndex() === Wl.SORTINDEX_GEOMETRYCOLLECTION || this.getSortIndex() === Wl.SORTINDEX_MULTIPOINT || this.getSortIndex() === Wl.SORTINDEX_MULTILINESTRING || this.getSortIndex() === Wl.SORTINDEX_MULTIPOLYGON
- }, Wl.prototype.interfaces_ = function () {
- return [ol, il, al]
- }, Wl.prototype.getClass = function () {
- return Wl
- }, Wl.hasNonEmptyElements = function (t) {
- for (var e = 0; e < t.length; e++)
- if (!t[e].isEmpty()) return !0;
- return !1
- }, Wl.hasNullElements = function (t) {
- for (var e = 0; e < t.length; e++)
- if (null === t[e]) return !0;
- return !1
- }, Jl.serialVersionUID.get = function () {
- return 0x799ea46522854c00
- }, Jl.SORTINDEX_POINT.get = function () {
- return 0
- }, Jl.SORTINDEX_MULTIPOINT.get = function () {
- return 1
- }, Jl.SORTINDEX_LINESTRING.get = function () {
- return 2
- }, Jl.SORTINDEX_LINEARRING.get = function () {
- return 3
- }, Jl.SORTINDEX_MULTILINESTRING.get = function () {
- return 4
- }, Jl.SORTINDEX_POLYGON.get = function () {
- return 5
- }, Jl.SORTINDEX_MULTIPOLYGON.get = function () {
- return 6
- }, Jl.SORTINDEX_GEOMETRYCOLLECTION.get = function () {
- return 7
- }, Jl.geometryChangedFilter.get = function () {
- return Zl
- }, Object.defineProperties(Wl, Jl);
- var Zl = function () {};
- Zl.interfaces_ = function () {
- return [Hl]
- }, Zl.filter = function (t) {
- t.geometryChangedAction()
- };
- var Kl = function () {};
- Kl.prototype.filter = function (t) {}, Kl.prototype.interfaces_ = function () {
- return []
- }, Kl.prototype.getClass = function () {
- return Kl
- };
- var Ql = function () {},
- $l = {
- Mod2BoundaryNodeRule: {
- configurable: !0
- },
- EndPointBoundaryNodeRule: {
- configurable: !0
- },
- MultiValentEndPointBoundaryNodeRule: {
- configurable: !0
- },
- MonoValentEndPointBoundaryNodeRule: {
- configurable: !0
- },
- MOD2_BOUNDARY_RULE: {
- configurable: !0
- },
- ENDPOINT_BOUNDARY_RULE: {
- configurable: !0
- },
- MULTIVALENT_ENDPOINT_BOUNDARY_RULE: {
- configurable: !0
- },
- MONOVALENT_ENDPOINT_BOUNDARY_RULE: {
- configurable: !0
- },
- OGC_SFS_BOUNDARY_RULE: {
- configurable: !0
- }
- };
- Ql.prototype.isInBoundary = function (t) {}, Ql.prototype.interfaces_ = function () {
- return []
- }, Ql.prototype.getClass = function () {
- return Ql
- }, $l.Mod2BoundaryNodeRule.get = function () {
- return tc
- }, $l.EndPointBoundaryNodeRule.get = function () {
- return ec
- }, $l.MultiValentEndPointBoundaryNodeRule.get = function () {
- return nc
- }, $l.MonoValentEndPointBoundaryNodeRule.get = function () {
- return rc
- }, $l.MOD2_BOUNDARY_RULE.get = function () {
- return new tc
- }, $l.ENDPOINT_BOUNDARY_RULE.get = function () {
- return new ec
- }, $l.MULTIVALENT_ENDPOINT_BOUNDARY_RULE.get = function () {
- return new nc
- }, $l.MONOVALENT_ENDPOINT_BOUNDARY_RULE.get = function () {
- return new rc
- }, $l.OGC_SFS_BOUNDARY_RULE.get = function () {
- return Ql.MOD2_BOUNDARY_RULE
- }, Object.defineProperties(Ql, $l);
- var tc = function () {};
- tc.prototype.isInBoundary = function (t) {
- return t % 2 == 1
- }, tc.prototype.interfaces_ = function () {
- return [Ql]
- }, tc.prototype.getClass = function () {
- return tc
- };
- var ec = function () {};
- ec.prototype.isInBoundary = function (t) {
- return t > 0
- }, ec.prototype.interfaces_ = function () {
- return [Ql]
- }, ec.prototype.getClass = function () {
- return ec
- };
- var nc = function () {};
- nc.prototype.isInBoundary = function (t) {
- return t > 1
- }, nc.prototype.interfaces_ = function () {
- return [Ql]
- }, nc.prototype.getClass = function () {
- return nc
- };
- var rc = function () {};
- rc.prototype.isInBoundary = function (t) {
- return 1 === t
- }, rc.prototype.interfaces_ = function () {
- return [Ql]
- }, rc.prototype.getClass = function () {
- return rc
- };
- var ic = function () {};
- function oc(t) {
- this.message = t || ""
- }
- ic.prototype.add = function () {}, ic.prototype.addAll = function () {}, ic.prototype.isEmpty = function () {}, ic.prototype.iterator = function () {}, ic.prototype.size = function () {}, ic.prototype.toArray = function () {}, ic.prototype.remove = function () {}, oc.prototype = new Error, oc.prototype.name = "IndexOutOfBoundsException";
- var sc = function () {};
- sc.prototype.hasNext = function () {}, sc.prototype.next = function () {}, sc.prototype.remove = function () {};
- var ac = function (t) {
- function e() {
- t.apply(this, arguments)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.get = function () {}, e.prototype.set = function () {}, e.prototype.isEmpty = function () {}, e
- }(ic);
- function uc(t) {
- this.message = t || ""
- }
- uc.prototype = new Error, uc.prototype.name = "NoSuchElementException";
- var lc = function (t) {
- function e() {
- t.call(this), this.array_ = [], arguments[0] instanceof ic && this.addAll(arguments[0])
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.ensureCapacity = function () {}, e.prototype.interfaces_ = function () {
- return [t, ic]
- }, e.prototype.add = function (t) {
- return 1 === arguments.length ? this.array_.push(t) : this.array_.splice(arguments[0], arguments[1]), !0
- }, e.prototype.clear = function () {
- this.array_ = []
- }, e.prototype.addAll = function (t) {
- for (var e = t.iterator(); e.hasNext();) this.add(e.next());
- return !0
- }, e.prototype.set = function (t, e) {
- var n = this.array_[t];
- return this.array_[t] = e, n
- }, e.prototype.iterator = function () {
- return new cc(this)
- }, e.prototype.get = function (t) {
- if (t < 0 || t >= this.size()) throw new oc;
- return this.array_[t]
- }, e.prototype.isEmpty = function () {
- return 0 === this.array_.length
- }, e.prototype.size = function () {
- return this.array_.length
- }, e.prototype.toArray = function () {
- for (var t = [], e = 0, n = this.array_.length; e < n; e++) t.push(this.array_[e]);
- return t
- }, e.prototype.remove = function (t) {
- for (var e = !1, n = 0, r = this.array_.length; n < r; n++)
- if (this.array_[n] === t) {
- this.array_.splice(n, 1), e = !0;
- break
- } return e
- }, e
- }(ac),
- cc = function (t) {
- function e(e) {
- t.call(this), this.arrayList_ = e, this.position_ = 0
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.next = function () {
- if (this.position_ === this.arrayList_.size()) throw new uc;
- return this.arrayList_.get(this.position_++)
- }, e.prototype.hasNext = function () {
- return this.position_ < this.arrayList_.size()
- }, e.prototype.set = function (t) {
- return this.arrayList_.set(this.position_ - 1, t)
- }, e.prototype.remove = function () {
- this.arrayList_.remove(this.arrayList_.get(this.position_))
- }, e
- }(sc),
- hc = function (t) {
- function e() {
- if (t.call(this), 0 === arguments.length);
- else if (1 === arguments.length) {
- var e = arguments[0];
- this.ensureCapacity(e.length), this.add(e, !0)
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- this.ensureCapacity(n.length), this.add(n, r)
- }
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- coordArrayType: {
- configurable: !0
- }
- };
- return n.coordArrayType.get = function () {
- return new Array(0).fill(null)
- }, e.prototype.getCoordinate = function (t) {
- return this.get(t)
- }, e.prototype.addAll = function () {
- var e = this;
- if (2 === arguments.length) {
- for (var n = arguments[0], r = arguments[1], i = !1, o = n.iterator(); o.hasNext();) e.add(o.next(), r), i = !0;
- return i
- }
- return t.prototype.addAll.apply(this, arguments)
- }, e.prototype.clone = function () {
- for (var e = t.prototype.clone.call(this), n = 0; n < this.size(); n++) e.add(n, this.get(n).copy());
- return e
- }, e.prototype.toCoordinateArray = function () {
- return this.toArray(e.coordArrayType)
- }, e.prototype.add = function () {
- var e = this;
- if (1 === arguments.length) {
- var n = arguments[0];
- t.prototype.add.call(this, n)
- } else if (2 === arguments.length) {
- if (arguments[0] instanceof Array && "boolean" == typeof arguments[1]) {
- var r = arguments[0],
- i = arguments[1];
- return this.add(r, i, !0), !0
- }
- if (arguments[0] instanceof ul && "boolean" == typeof arguments[1]) {
- var o = arguments[0],
- s = arguments[1];
- if (!s && this.size() >= 1) {
- var a = this.get(this.size() - 1);
- if (a.equals2D(o)) return null
- }
- t.prototype.add.call(this, o)
- } else if (arguments[0] instanceof Object && "boolean" == typeof arguments[1]) {
- var u = arguments[0],
- l = arguments[1];
- return this.add(u, l), !0
- }
- } else if (3 === arguments.length) {
- if ("boolean" == typeof arguments[2] && arguments[0] instanceof Array && "boolean" == typeof arguments[1]) {
- var c = arguments[0],
- h = arguments[1],
- p = arguments[2];
- if (p)
- for (var f = 0; f < c.length; f++) e.add(c[f], h);
- else
- for (var g = c.length - 1; g >= 0; g--) e.add(c[g], h);
- return !0
- }
- if ("boolean" == typeof arguments[2] && Number.isInteger(arguments[0]) && arguments[1] instanceof ul) {
- var d = arguments[0],
- y = arguments[1],
- v = arguments[2];
- if (!v) {
- var _ = this.size();
- if (_ > 0) {
- if (d > 0) {
- var m = this.get(d - 1);
- if (m.equals2D(y)) return null
- }
- if (d < _) {
- var x = this.get(d);
- if (x.equals2D(y)) return null
- }
- }
- }
- t.prototype.add.call(this, d, y)
- }
- } else if (4 === arguments.length) {
- var E = arguments[0],
- b = arguments[1],
- w = arguments[2],
- I = arguments[3],
- N = 1;
- w > I && (N = -1);
- for (var S = w; S !== I; S += N) e.add(E[S], b);
- return !0
- }
- }, e.prototype.closeRing = function () {
- this.size() > 0 && this.add(new ul(this.get(0)), !1)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, Object.defineProperties(e, n), e
- }(lc),
- pc = function () {},
- fc = {
- ForwardComparator: {
- configurable: !0
- },
- BidirectionalComparator: {
- configurable: !0
- },
- coordArrayType: {
- configurable: !0
- }
- };
- fc.ForwardComparator.get = function () {
- return gc
- }, fc.BidirectionalComparator.get = function () {
- return dc
- }, fc.coordArrayType.get = function () {
- return new Array(0).fill(null)
- }, pc.prototype.interfaces_ = function () {
- return []
- }, pc.prototype.getClass = function () {
- return pc
- }, pc.isRing = function (t) {
- return !(t.length < 4) && !!t[0].equals2D(t[t.length - 1])
- }, pc.ptNotInList = function (t, e) {
- for (var n = 0; n < t.length; n++) {
- var r = t[n];
- if (pc.indexOf(r, e) < 0) return r
- }
- return null
- }, pc.scroll = function (t, e) {
- var n = pc.indexOf(e, t);
- if (n < 0) return null;
- var r = new Array(t.length).fill(null);
- Pl.arraycopy(t, n, r, 0, t.length - n), Pl.arraycopy(t, 0, r, t.length - n, n), Pl.arraycopy(r, 0, t, 0, t.length)
- }, pc.equals = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- if (t === e) return !0;
- if (null === t || null === e) return !1;
- if (t.length !== e.length) return !1;
- for (var n = 0; n < t.length; n++)
- if (!t[n].equals(e[n])) return !1;
- return !0
- }
- if (3 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2];
- if (r === i) return !0;
- if (null === r || null === i) return !1;
- if (r.length !== i.length) return !1;
- for (var s = 0; s < r.length; s++)
- if (0 !== o.compare(r[s], i[s])) return !1;
- return !0
- }
- }, pc.intersection = function (t, e) {
- for (var n = new hc, r = 0; r < t.length; r++) e.intersects(t[r]) && n.add(t[r], !0);
- return n.toCoordinateArray()
- }, pc.hasRepeatedPoints = function (t) {
- for (var e = 1; e < t.length; e++)
- if (t[e - 1].equals(t[e])) return !0;
- return !1
- }, pc.removeRepeatedPoints = function (t) {
- return pc.hasRepeatedPoints(t) ? new hc(t, !1).toCoordinateArray() : t
- }, pc.reverse = function (t) {
- for (var e = t.length - 1, n = Math.trunc(e / 2), r = 0; r <= n; r++) {
- var i = t[r];
- t[r] = t[e - r], t[e - r] = i
- }
- }, pc.removeNull = function (t) {
- for (var e = 0, n = 0; n < t.length; n++) null !== t[n] && e++;
- var r = new Array(e).fill(null);
- if (0 === e) return r;
- for (var i = 0, o = 0; o < t.length; o++) null !== t[o] && (r[i++] = t[o]);
- return r
- }, pc.copyDeep = function () {
- if (1 === arguments.length) {
- for (var t = arguments[0], e = new Array(t.length).fill(null), n = 0; n < t.length; n++) e[n] = new ul(t[n]);
- return e
- }
- if (5 === arguments.length)
- for (var r = arguments[0], i = arguments[1], o = arguments[2], s = arguments[3], a = arguments[4], u = 0; u < a; u++) o[s + u] = new ul(r[i + u])
- }, pc.isEqualReversed = function (t, e) {
- for (var n = 0; n < t.length; n++) {
- var r = t[n],
- i = e[t.length - n - 1];
- if (0 !== r.compareTo(i)) return !1
- }
- return !0
- }, pc.envelope = function (t) {
- for (var e = new Ll, n = 0; n < t.length; n++) e.expandToInclude(t[n]);
- return e
- }, pc.toCoordinateArray = function (t) {
- return t.toArray(pc.coordArrayType)
- }, pc.atLeastNCoordinatesOrNothing = function (t, e) {
- return e.length >= t ? e : []
- }, pc.indexOf = function (t, e) {
- for (var n = 0; n < e.length; n++)
- if (t.equals(e[n])) return n;
- return -1
- }, pc.increasingDirection = function (t) {
- for (var e = 0; e < Math.trunc(t.length / 2); e++) {
- var n = t.length - 1 - e,
- r = t[e].compareTo(t[n]);
- if (0 !== r) return r
- }
- return 1
- }, pc.compare = function (t, e) {
- for (var n = 0; n < t.length && n < e.length;) {
- var r = t[n].compareTo(e[n]);
- if (0 !== r) return r;
- n++
- }
- return n < e.length ? -1 : n < t.length ? 1 : 0
- }, pc.minCoordinate = function (t) {
- for (var e = null, n = 0; n < t.length; n++)(null === e || e.compareTo(t[n]) > 0) && (e = t[n]);
- return e
- }, pc.extract = function (t, e, n) {
- e = dl.clamp(e, 0, t.length);
- var r = (n = dl.clamp(n, -1, t.length)) - e + 1;
- n < 0 && (r = 0), e >= t.length && (r = 0), n < e && (r = 0);
- var i = new Array(r).fill(null);
- if (0 === r) return i;
- for (var o = 0, s = e; s <= n; s++) i[o++] = t[s];
- return i
- }, Object.defineProperties(pc, fc);
- var gc = function () {};
- gc.prototype.compare = function (t, e) {
- return pc.compare(t, e)
- }, gc.prototype.interfaces_ = function () {
- return [sl]
- }, gc.prototype.getClass = function () {
- return gc
- };
- var dc = function () {};
- dc.prototype.compare = function (t, e) {
- var n = t,
- r = e;
- if (n.length < r.length) return -1;
- if (n.length > r.length) return 1;
- if (0 === n.length) return 0;
- var i = pc.compare(n, r);
- return pc.isEqualReversed(n, r) ? 0 : i
- }, dc.prototype.OLDcompare = function (t, e) {
- var n = t,
- r = e;
- if (n.length < r.length) return -1;
- if (n.length > r.length) return 1;
- if (0 === n.length) return 0;
- for (var i = pc.increasingDirection(n), o = pc.increasingDirection(r), s = i > 0 ? 0 : n.length - 1, a = o > 0 ? 0 : n.length - 1, u = 0; u < n.length; u++) {
- var l = n[s].compareTo(r[a]);
- if (0 !== l) return l;
- s += i, a += o
- }
- return 0
- }, dc.prototype.interfaces_ = function () {
- return [sl]
- }, dc.prototype.getClass = function () {
- return dc
- };
- var yc = function () {};
- yc.prototype.get = function () {}, yc.prototype.put = function () {}, yc.prototype.size = function () {}, yc.prototype.values = function () {}, yc.prototype.entrySet = function () {};
- var vc = function (t) {
- function e() {
- t.apply(this, arguments)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
- }(yc);
- function _c(t) {
- this.message = t || ""
- }
- function mc() {}
- _c.prototype = new Error, _c.prototype.name = "OperationNotSupported", mc.prototype = new ic, mc.prototype.contains = function () {};
- var xc = function (t) {
- function e() {
- t.call(this), this.array_ = [], arguments[0] instanceof ic && this.addAll(arguments[0])
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.contains = function (t) {
- for (var e = 0, n = this.array_.length; e < n; e++) {
- if (this.array_[e] === t) return !0
- }
- return !1
- }, e.prototype.add = function (t) {
- return !this.contains(t) && (this.array_.push(t), !0)
- }, e.prototype.addAll = function (t) {
- for (var e = t.iterator(); e.hasNext();) this.add(e.next());
- return !0
- }, e.prototype.remove = function (t) {
- throw new Error
- }, e.prototype.size = function () {
- return this.array_.length
- }, e.prototype.isEmpty = function () {
- return 0 === this.array_.length
- }, e.prototype.toArray = function () {
- for (var t = [], e = 0, n = this.array_.length; e < n; e++) t.push(this.array_[e]);
- return t
- }, e.prototype.iterator = function () {
- return new Ec(this)
- }, e
- }(mc),
- Ec = function (t) {
- function e(e) {
- t.call(this), this.hashSet_ = e, this.position_ = 0
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.next = function () {
- if (this.position_ === this.hashSet_.size()) throw new uc;
- return this.hashSet_.array_[this.position_++]
- }, e.prototype.hasNext = function () {
- return this.position_ < this.hashSet_.size()
- }, e.prototype.remove = function () {
- throw new _c
- }, e
- }(sc);
- function bc(t) {
- return null === t ? 0 : t.color
- }
- function wc(t) {
- return null === t ? null : t.parent
- }
- function Ic(t, e) {
- null !== t && (t.color = e)
- }
- function Nc(t) {
- return null === t ? null : t.left
- }
- function Sc(t) {
- return null === t ? null : t.right
- }
- function Cc() {
- this.root_ = null, this.size_ = 0
- }
- Cc.prototype = new vc, Cc.prototype.get = function (t) {
- for (var e = this.root_; null !== e;) {
- var n = t.compareTo(e.key);
- if (n < 0) e = e.left;
- else {
- if (!(n > 0)) return e.value;
- e = e.right
- }
- }
- return null
- }, Cc.prototype.put = function (t, e) {
- if (null === this.root_) return this.root_ = {
- key: t,
- value: e,
- left: null,
- right: null,
- parent: null,
- color: 0,
- getValue: function () {
- return this.value
- },
- getKey: function () {
- return this.key
- }
- }, this.size_ = 1, null;
- var n, r, i = this.root_;
- do {
- if (n = i, (r = t.compareTo(i.key)) < 0) i = i.left;
- else {
- if (!(r > 0)) {
- var o = i.value;
- return i.value = e, o
- }
- i = i.right
- }
- } while (null !== i);
- var s = {
- key: t,
- left: null,
- right: null,
- value: e,
- parent: n,
- color: 0,
- getValue: function () {
- return this.value
- },
- getKey: function () {
- return this.key
- }
- };
- return r < 0 ? n.left = s : n.right = s, this.fixAfterInsertion(s), this.size_++, null
- }, Cc.prototype.fixAfterInsertion = function (t) {
- var e = this;
- for (t.color = 1; null != t && t !== this.root_ && 1 === t.parent.color;)
- if (wc(t) === Nc(wc(wc(t)))) {
- var n = Sc(wc(wc(t)));
- 1 === bc(n) ? (Ic(wc(t), 0), Ic(n, 0), Ic(wc(wc(t)), 1), t = wc(wc(t))) : (t === Sc(wc(t)) && (t = wc(t), e.rotateLeft(t)), Ic(wc(t), 0), Ic(wc(wc(t)), 1), e.rotateRight(wc(wc(t))))
- } else {
- var r = Nc(wc(wc(t)));
- 1 === bc(r) ? (Ic(wc(t), 0), Ic(r, 0), Ic(wc(wc(t)), 1), t = wc(wc(t))) : (t === Nc(wc(t)) && (t = wc(t), e.rotateRight(t)), Ic(wc(t), 0), Ic(wc(wc(t)), 1), e.rotateLeft(wc(wc(t))))
- } this.root_.color = 0
- }, Cc.prototype.values = function () {
- var t = new lc,
- e = this.getFirstEntry();
- if (null !== e)
- for (t.add(e.value); null !== (e = Cc.successor(e));) t.add(e.value);
- return t
- }, Cc.prototype.entrySet = function () {
- var t = new xc,
- e = this.getFirstEntry();
- if (null !== e)
- for (t.add(e); null !== (e = Cc.successor(e));) t.add(e);
- return t
- }, Cc.prototype.rotateLeft = function (t) {
- if (null != t) {
- var e = t.right;
- t.right = e.left, null != e.left && (e.left.parent = t), e.parent = t.parent, null === t.parent ? this.root_ = e : t.parent.left === t ? t.parent.left = e : t.parent.right = e, e.left = t, t.parent = e
- }
- }, Cc.prototype.rotateRight = function (t) {
- if (null != t) {
- var e = t.left;
- t.left = e.right, null != e.right && (e.right.parent = t), e.parent = t.parent, null === t.parent ? this.root_ = e : t.parent.right === t ? t.parent.right = e : t.parent.left = e, e.right = t, t.parent = e
- }
- }, Cc.prototype.getFirstEntry = function () {
- var t = this.root_;
- if (null != t)
- for (; null != t.left;) t = t.left;
- return t
- }, Cc.successor = function (t) {
- if (null === t) return null;
- if (null !== t.right) {
- for (var e = t.right; null !== e.left;) e = e.left;
- return e
- }
- for (var n = t.parent, r = t; null !== n && r === n.right;) r = n, n = n.parent;
- return n
- }, Cc.prototype.size = function () {
- return this.size_
- };
- var Pc = function () {};
- function Mc() {}
- function Lc() {
- this.array_ = [], arguments[0] instanceof ic && this.addAll(arguments[0])
- }
- Pc.prototype.interfaces_ = function () {
- return []
- }, Pc.prototype.getClass = function () {
- return Pc
- }, Mc.prototype = new mc, Lc.prototype = new Mc, Lc.prototype.contains = function (t) {
- for (var e = 0, n = this.array_.length; e < n; e++) {
- if (0 === this.array_[e].compareTo(t)) return !0
- }
- return !1
- }, Lc.prototype.add = function (t) {
- if (this.contains(t)) return !1;
- for (var e = 0, n = this.array_.length; e < n; e++) {
- if (1 === this.array_[e].compareTo(t)) return this.array_.splice(e, 0, t), !0
- }
- return this.array_.push(t), !0
- }, Lc.prototype.addAll = function (t) {
- for (var e = t.iterator(); e.hasNext();) this.add(e.next());
- return !0
- }, Lc.prototype.remove = function (t) {
- throw new _c
- }, Lc.prototype.size = function () {
- return this.array_.length
- }, Lc.prototype.isEmpty = function () {
- return 0 === this.array_.length
- }, Lc.prototype.toArray = function () {
- for (var t = [], e = 0, n = this.array_.length; e < n; e++) t.push(this.array_[e]);
- return t
- }, Lc.prototype.iterator = function () {
- return new Oc(this)
- };
- var Oc = function (t) {
- this.treeSet_ = t, this.position_ = 0
- };
- Oc.prototype.next = function () {
- if (this.position_ === this.treeSet_.size()) throw new uc;
- return this.treeSet_.array_[this.position_++]
- }, Oc.prototype.hasNext = function () {
- return this.position_ < this.treeSet_.size()
- }, Oc.prototype.remove = function () {
- throw new _c
- };
- var Rc = function () {};
- Rc.sort = function () {
- var t, e, n, r, i = arguments[0];
- if (1 === arguments.length) r = function (t, e) {
- return t.compareTo(e)
- }, i.sort(r);
- else if (2 === arguments.length) n = arguments[1], r = function (t, e) {
- return n.compare(t, e)
- }, i.sort(r);
- else if (3 === arguments.length) {
- (e = i.slice(arguments[1], arguments[2])).sort();
- var o = i.slice(0, arguments[1]).concat(e, i.slice(arguments[2], i.length));
- for (i.splice(0, i.length), t = 0; t < o.length; t++) i.push(o[t])
- } else if (4 === arguments.length)
- for (e = i.slice(arguments[1], arguments[2]), n = arguments[3], r = function (t, e) {
- return n.compare(t, e)
- }, e.sort(r), o = i.slice(0, arguments[1]).concat(e, i.slice(arguments[2], i.length)), i.splice(0, i.length), t = 0; t < o.length; t++) i.push(o[t])
- }, Rc.asList = function (t) {
- for (var e = new lc, n = 0, r = t.length; n < r; n++) e.add(t[n]);
- return e
- };
- var Tc = function () {},
- Ac = {
- P: {
- configurable: !0
- },
- L: {
- configurable: !0
- },
- A: {
- configurable: !0
- },
- FALSE: {
- configurable: !0
- },
- TRUE: {
- configurable: !0
- },
- DONTCARE: {
- configurable: !0
- },
- SYM_FALSE: {
- configurable: !0
- },
- SYM_TRUE: {
- configurable: !0
- },
- SYM_DONTCARE: {
- configurable: !0
- },
- SYM_P: {
- configurable: !0
- },
- SYM_L: {
- configurable: !0
- },
- SYM_A: {
- configurable: !0
- }
- };
- Ac.P.get = function () {
- return 0
- }, Ac.L.get = function () {
- return 1
- }, Ac.A.get = function () {
- return 2
- }, Ac.FALSE.get = function () {
- return -1
- }, Ac.TRUE.get = function () {
- return -2
- }, Ac.DONTCARE.get = function () {
- return -3
- }, Ac.SYM_FALSE.get = function () {
- return "F"
- }, Ac.SYM_TRUE.get = function () {
- return "T"
- }, Ac.SYM_DONTCARE.get = function () {
- return "*"
- }, Ac.SYM_P.get = function () {
- return "0"
- }, Ac.SYM_L.get = function () {
- return "1"
- }, Ac.SYM_A.get = function () {
- return "2"
- }, Tc.prototype.interfaces_ = function () {
- return []
- }, Tc.prototype.getClass = function () {
- return Tc
- }, Tc.toDimensionSymbol = function (t) {
- switch (t) {
- case Tc.FALSE:
- return Tc.SYM_FALSE;
- case Tc.TRUE:
- return Tc.SYM_TRUE;
- case Tc.DONTCARE:
- return Tc.SYM_DONTCARE;
- case Tc.P:
- return Tc.SYM_P;
- case Tc.L:
- return Tc.SYM_L;
- case Tc.A:
- return Tc.SYM_A
- }
- throw new el("Unknown dimension value: " + t)
- }, Tc.toDimensionValue = function (t) {
- switch (ml.toUpperCase(t)) {
- case Tc.SYM_FALSE:
- return Tc.FALSE;
- case Tc.SYM_TRUE:
- return Tc.TRUE;
- case Tc.SYM_DONTCARE:
- return Tc.DONTCARE;
- case Tc.SYM_P:
- return Tc.P;
- case Tc.SYM_L:
- return Tc.L;
- case Tc.SYM_A:
- return Tc.A
- }
- throw new el("Unknown dimension symbol: " + t)
- }, Object.defineProperties(Tc, Ac);
- var Dc = function () {};
- Dc.prototype.filter = function (t) {}, Dc.prototype.interfaces_ = function () {
- return []
- }, Dc.prototype.getClass = function () {
- return Dc
- };
- var Fc = function () {};
- Fc.prototype.filter = function (t, e) {}, Fc.prototype.isDone = function () {}, Fc.prototype.isGeometryChanged = function () {}, Fc.prototype.interfaces_ = function () {
- return []
- }, Fc.prototype.getClass = function () {
- return Fc
- };
- var kc = function (t) {
- function e(e, n) {
- if (t.call(this, n), this._geometries = e || [], t.hasNullElements(this._geometries)) throw new el("geometries must not contain null elements")
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- serialVersionUID: {
- configurable: !0
- }
- };
- return e.prototype.computeEnvelopeInternal = function () {
- for (var t = new Ll, e = 0; e < this._geometries.length; e++) t.expandToInclude(this._geometries[e].getEnvelopeInternal());
- return t
- }, e.prototype.getGeometryN = function (t) {
- return this._geometries[t]
- }, e.prototype.getSortIndex = function () {
- return t.SORTINDEX_GEOMETRYCOLLECTION
- }, e.prototype.getCoordinates = function () {
- for (var t = new Array(this.getNumPoints()).fill(null), e = -1, n = 0; n < this._geometries.length; n++)
- for (var r = this._geometries[n].getCoordinates(), i = 0; i < r.length; i++) t[++e] = r[i];
- return t
- }, e.prototype.getArea = function () {
- for (var t = 0, e = 0; e < this._geometries.length; e++) t += this._geometries[e].getArea();
- return t
- }, e.prototype.equalsExact = function () {
- var e = this;
- if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- if (!this.isEquivalentClass(n)) return !1;
- var i = n;
- if (this._geometries.length !== i._geometries.length) return !1;
- for (var o = 0; o < this._geometries.length; o++)
- if (!e._geometries[o].equalsExact(i._geometries[o], r)) return !1;
- return !0
- }
- return t.prototype.equalsExact.apply(this, arguments)
- }, e.prototype.normalize = function () {
- for (var t = 0; t < this._geometries.length; t++) this._geometries[t].normalize();
- Rc.sort(this._geometries)
- }, e.prototype.getCoordinate = function () {
- return this.isEmpty() ? null : this._geometries[0].getCoordinate()
- }, e.prototype.getBoundaryDimension = function () {
- for (var t = Tc.FALSE, e = 0; e < this._geometries.length; e++) t = Math.max(t, this._geometries[e].getBoundaryDimension());
- return t
- }, e.prototype.getDimension = function () {
- for (var t = Tc.FALSE, e = 0; e < this._geometries.length; e++) t = Math.max(t, this._geometries[e].getDimension());
- return t
- }, e.prototype.getLength = function () {
- for (var t = 0, e = 0; e < this._geometries.length; e++) t += this._geometries[e].getLength();
- return t
- }, e.prototype.getNumPoints = function () {
- for (var t = 0, e = 0; e < this._geometries.length; e++) t += this._geometries[e].getNumPoints();
- return t
- }, e.prototype.getNumGeometries = function () {
- return this._geometries.length
- }, e.prototype.reverse = function () {
- for (var t = this._geometries.length, e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++) e[n] = this._geometries[n].reverse();
- return this.getFactory().createGeometryCollection(e)
- }, e.prototype.compareToSameClass = function () {
- var t = this;
- if (1 === arguments.length) {
- var e = arguments[0],
- n = new Lc(Rc.asList(this._geometries)),
- r = new Lc(Rc.asList(e._geometries));
- return this.compare(n, r)
- }
- if (2 === arguments.length) {
- for (var i = arguments[0], o = arguments[1], s = i, a = this.getNumGeometries(), u = s.getNumGeometries(), l = 0; l < a && l < u;) {
- var c = t.getGeometryN(l),
- h = s.getGeometryN(l),
- p = c.compareToSameClass(h, o);
- if (0 !== p) return p;
- l++
- }
- return l < a ? 1 : l < u ? -1 : 0
- }
- }, e.prototype.apply = function () {
- var t = this;
- if (gl(arguments[0], Kl))
- for (var e = arguments[0], n = 0; n < this._geometries.length; n++) t._geometries[n].apply(e);
- else if (gl(arguments[0], Fc)) {
- var r = arguments[0];
- if (0 === this._geometries.length) return null;
- for (var i = 0; i < this._geometries.length && (t._geometries[i].apply(r), !r.isDone()); i++);
- r.isGeometryChanged() && this.geometryChanged()
- } else if (gl(arguments[0], Dc)) {
- var o = arguments[0];
- o.filter(this);
- for (var s = 0; s < this._geometries.length; s++) t._geometries[s].apply(o)
- } else if (gl(arguments[0], Hl)) {
- var a = arguments[0];
- a.filter(this);
- for (var u = 0; u < this._geometries.length; u++) t._geometries[u].apply(a)
- }
- }, e.prototype.getBoundary = function () {
- return this.checkNotGeometryCollection(this), ql.shouldNeverReachHere(), null
- }, e.prototype.clone = function () {
- var e = t.prototype.clone.call(this);
- e._geometries = new Array(this._geometries.length).fill(null);
- for (var n = 0; n < this._geometries.length; n++) e._geometries[n] = this._geometries[n].clone();
- return e
- }, e.prototype.getGeometryType = function () {
- return "GeometryCollection"
- }, e.prototype.copy = function () {
- for (var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++) t[n] = this._geometries[n].copy();
- return new e(t, this._factory)
- }, e.prototype.isEmpty = function () {
- for (var t = 0; t < this._geometries.length; t++)
- if (!this._geometries[t].isEmpty()) return !1;
- return !0
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, n.serialVersionUID.get = function () {
- return -0x4f07bcb1f857d800
- }, Object.defineProperties(e, n), e
- }(Wl),
- Gc = function (t) {
- function e() {
- t.apply(this, arguments)
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- serialVersionUID: {
- configurable: !0
- }
- };
- return e.prototype.getSortIndex = function () {
- return Wl.SORTINDEX_MULTILINESTRING
- }, e.prototype.equalsExact = function () {
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return !!this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n)
- }
- return t.prototype.equalsExact.apply(this, arguments)
- }, e.prototype.getBoundaryDimension = function () {
- return this.isClosed() ? Tc.FALSE : 0
- }, e.prototype.isClosed = function () {
- if (this.isEmpty()) return !1;
- for (var t = 0; t < this._geometries.length; t++)
- if (!this._geometries[t].isClosed()) return !1;
- return !0
- }, e.prototype.getDimension = function () {
- return 1
- }, e.prototype.reverse = function () {
- for (var t = this._geometries.length, e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++) e[t - 1 - n] = this._geometries[n].reverse();
- return this.getFactory().createMultiLineString(e)
- }, e.prototype.getBoundary = function () {
- return new qc(this).getBoundary()
- }, e.prototype.getGeometryType = function () {
- return "MultiLineString"
- }, e.prototype.copy = function () {
- for (var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++) t[n] = this._geometries[n].copy();
- return new e(t, this._factory)
- }, e.prototype.interfaces_ = function () {
- return [Pc]
- }, e.prototype.getClass = function () {
- return e
- }, n.serialVersionUID.get = function () {
- return 0x7155d2ab4afa8000
- }, Object.defineProperties(e, n), e
- }(kc),
- qc = function () {
- if (this._geom = null, this._geomFact = null, this._bnRule = null, this._endpointMap = null, 1 === arguments.length) {
- var t = arguments[0],
- e = Ql.MOD2_BOUNDARY_RULE;
- this._geom = t, this._geomFact = t.getFactory(), this._bnRule = e
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- this._geom = n, this._geomFact = n.getFactory(), this._bnRule = r
- }
- };
- qc.prototype.boundaryMultiLineString = function (t) {
- if (this._geom.isEmpty()) return this.getEmptyMultiPoint();
- var e = this.computeBoundaryCoordinates(t);
- return 1 === e.length ? this._geomFact.createPoint(e[0]) : this._geomFact.createMultiPointFromCoords(e)
- }, qc.prototype.getBoundary = function () {
- return this._geom instanceof Zc ? this.boundaryLineString(this._geom) : this._geom instanceof Gc ? this.boundaryMultiLineString(this._geom) : this._geom.getBoundary()
- }, qc.prototype.boundaryLineString = function (t) {
- return this._geom.isEmpty() ? this.getEmptyMultiPoint() : t.isClosed() ? this._bnRule.isInBoundary(2) ? t.getStartPoint() : this._geomFact.createMultiPoint() : this._geomFact.createMultiPoint([t.getStartPoint(), t.getEndPoint()])
- }, qc.prototype.getEmptyMultiPoint = function () {
- return this._geomFact.createMultiPoint()
- }, qc.prototype.computeBoundaryCoordinates = function (t) {
- var e = this,
- n = new lc;
- this._endpointMap = new Cc;
- for (var r = 0; r < t.getNumGeometries(); r++) {
- var i = t.getGeometryN(r);
- 0 !== i.getNumPoints() && (e.addEndpoint(i.getCoordinateN(0)), e.addEndpoint(i.getCoordinateN(i.getNumPoints() - 1)))
- }
- for (var o = this._endpointMap.entrySet().iterator(); o.hasNext();) {
- var s = o.next(),
- a = s.getValue().count;
- e._bnRule.isInBoundary(a) && n.add(s.getKey())
- }
- return pc.toCoordinateArray(n)
- }, qc.prototype.addEndpoint = function (t) {
- var e = this._endpointMap.get(t);
- null === e && (e = new Bc, this._endpointMap.put(t, e)), e.count++
- }, qc.prototype.interfaces_ = function () {
- return []
- }, qc.prototype.getClass = function () {
- return qc
- }, qc.getBoundary = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = new qc(t);
- return e.getBoundary()
- }
- if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = new qc(n, r);
- return i.getBoundary()
- }
- };
- var Bc = function () {
- this.count = null
- };
- function zc() {}
- function jc() {}
- Bc.prototype.interfaces_ = function () {
- return []
- }, Bc.prototype.getClass = function () {
- return Bc
- };
- var Uc = function () {};
- function Vc() {}
- function Xc() {}
- function Yc() {}
- var Hc = function () {},
- Wc = {
- NEWLINE: {
- configurable: !0
- },
- SIMPLE_ORDINATE_FORMAT: {
- configurable: !0
- }
- };
- Hc.prototype.interfaces_ = function () {
- return []
- }, Hc.prototype.getClass = function () {
- return Hc
- }, Hc.chars = function (t, e) {
- for (var n = new Array(e).fill(null), r = 0; r < e; r++) n[r] = t;
- return String(n)
- }, Hc.getStackTrace = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = new Vc,
- n = new zc(e);
- return t.printStackTrace(n), e.toString()
- }
- if (2 === arguments.length) {
- for (var r = arguments[0], i = arguments[1], o = "", s = new jc(Hc.getStackTrace(r)), a = new Yc(s), u = 0; u < i; u++) try {
- o += a.readLine() + Hc.NEWLINE
- } catch (t) {
- if (!(t instanceof Xc)) throw t;
- ql.shouldNeverReachHere()
- }
- return o
- }
- }, Hc.split = function (t, e) {
- for (var n = e.length, r = new lc, i = "" + t, o = i.indexOf(e); o >= 0;) {
- var s = i.substring(0, o);
- r.add(s), o = (i = i.substring(o + n)).indexOf(e)
- }
- i.length > 0 && r.add(i);
- for (var a = new Array(r.size()).fill(null), u = 0; u < a.length; u++) a[u] = r.get(u);
- return a
- }, Hc.toString = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return Hc.SIMPLE_ORDINATE_FORMAT.format(t)
- }
- }, Hc.spaces = function (t) {
- return Hc.chars(" ", t)
- }, Wc.NEWLINE.get = function () {
- return Pl.getProperty("line.separator")
- }, Wc.SIMPLE_ORDINATE_FORMAT.get = function () {
- return new Uc("0.#")
- }, Object.defineProperties(Hc, Wc);
- var Jc = function () {};
- Jc.prototype.interfaces_ = function () {
- return []
- }, Jc.prototype.getClass = function () {
- return Jc
- }, Jc.copyCoord = function (t, e, n, r) {
- for (var i = Math.min(t.getDimension(), n.getDimension()), o = 0; o < i; o++) n.setOrdinate(r, o, t.getOrdinate(e, o))
- }, Jc.isRing = function (t) {
- var e = t.size();
- return 0 === e || !(e <= 3) && (t.getOrdinate(0, Il.X) === t.getOrdinate(e - 1, Il.X) && t.getOrdinate(0, Il.Y) === t.getOrdinate(e - 1, Il.Y))
- }, Jc.isEqual = function (t, e) {
- var n = t.size();
- if (n !== e.size()) return !1;
- for (var r = Math.min(t.getDimension(), e.getDimension()), i = 0; i < n; i++)
- for (var o = 0; o < r; o++) {
- var s = t.getOrdinate(i, o),
- a = e.getOrdinate(i, o);
- if (t.getOrdinate(i, o) !== e.getOrdinate(i, o) && (!nl.isNaN(s) || !nl.isNaN(a))) return !1
- }
- return !0
- }, Jc.extend = function (t, e, n) {
- var r = t.create(n, e.getDimension()),
- i = e.size();
- if (Jc.copy(e, 0, r, 0, i), i > 0)
- for (var o = i; o < n; o++) Jc.copy(e, i - 1, r, o, 1);
- return r
- }, Jc.reverse = function (t) {
- for (var e = t.size() - 1, n = Math.trunc(e / 2), r = 0; r <= n; r++) Jc.swap(t, r, e - r)
- }, Jc.swap = function (t, e, n) {
- if (e === n) return null;
- for (var r = 0; r < t.getDimension(); r++) {
- var i = t.getOrdinate(e, r);
- t.setOrdinate(e, r, t.getOrdinate(n, r)), t.setOrdinate(n, r, i)
- }
- }, Jc.copy = function (t, e, n, r, i) {
- for (var o = 0; o < i; o++) Jc.copyCoord(t, e + o, n, r + o)
- }, Jc.toString = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = t.size();
- if (0 === e) return "()";
- var n = t.getDimension(),
- r = new vl;
- r.append("(");
- for (var i = 0; i < e; i++) {
- i > 0 && r.append(" ");
- for (var o = 0; o < n; o++) o > 0 && r.append(","), r.append(Hc.toString(t.getOrdinate(i, o)))
- }
- return r.append(")"), r.toString()
- }
- }, Jc.ensureValidRing = function (t, e) {
- var n = e.size();
- return 0 === n ? e : n <= 3 ? Jc.createClosedRing(t, e, 4) : e.getOrdinate(0, Il.X) === e.getOrdinate(n - 1, Il.X) && e.getOrdinate(0, Il.Y) === e.getOrdinate(n - 1, Il.Y) ? e : Jc.createClosedRing(t, e, n + 1)
- }, Jc.createClosedRing = function (t, e, n) {
- var r = t.create(n, e.getDimension()),
- i = e.size();
- Jc.copy(e, 0, r, 0, i);
- for (var o = i; o < n; o++) Jc.copy(e, 0, r, o, 1);
- return r
- };
- var Zc = function (t) {
- function e(e, n) {
- t.call(this, n), this._points = null, this.init(e)
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- serialVersionUID: {
- configurable: !0
- }
- };
- return e.prototype.computeEnvelopeInternal = function () {
- return this.isEmpty() ? new Ll : this._points.expandEnvelope(new Ll)
- }, e.prototype.isRing = function () {
- return this.isClosed() && this.isSimple()
- }, e.prototype.getSortIndex = function () {
- return t.SORTINDEX_LINESTRING
- }, e.prototype.getCoordinates = function () {
- return this._points.toCoordinateArray()
- }, e.prototype.equalsExact = function () {
- var e = this;
- if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- if (!this.isEquivalentClass(n)) return !1;
- var i = n;
- if (this._points.size() !== i._points.size()) return !1;
- for (var o = 0; o < this._points.size(); o++)
- if (!e.equal(e._points.getCoordinate(o), i._points.getCoordinate(o), r)) return !1;
- return !0
- }
- return t.prototype.equalsExact.apply(this, arguments)
- }, e.prototype.normalize = function () {
- for (var t = this, e = 0; e < Math.trunc(this._points.size() / 2); e++) {
- var n = t._points.size() - 1 - e;
- if (!t._points.getCoordinate(e).equals(t._points.getCoordinate(n))) return t._points.getCoordinate(e).compareTo(t._points.getCoordinate(n)) > 0 && Jc.reverse(t._points), null
- }
- }, e.prototype.getCoordinate = function () {
- return this.isEmpty() ? null : this._points.getCoordinate(0)
- }, e.prototype.getBoundaryDimension = function () {
- return this.isClosed() ? Tc.FALSE : 0
- }, e.prototype.isClosed = function () {
- return !this.isEmpty() && this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints() - 1))
- }, e.prototype.getEndPoint = function () {
- return this.isEmpty() ? null : this.getPointN(this.getNumPoints() - 1)
- }, e.prototype.getDimension = function () {
- return 1
- }, e.prototype.getLength = function () {
- return Xl.computeLength(this._points)
- }, e.prototype.getNumPoints = function () {
- return this._points.size()
- }, e.prototype.reverse = function () {
- var t = this._points.copy();
- return Jc.reverse(t), this.getFactory().createLineString(t)
- }, e.prototype.compareToSameClass = function () {
- var t = this;
- if (1 === arguments.length) {
- for (var e = arguments[0], n = e, r = 0, i = 0; r < this._points.size() && i < n._points.size();) {
- var o = t._points.getCoordinate(r).compareTo(n._points.getCoordinate(i));
- if (0 !== o) return o;
- r++, i++
- }
- return r < this._points.size() ? 1 : i < n._points.size() ? -1 : 0
- }
- if (2 === arguments.length) {
- var s = arguments[0],
- a = arguments[1],
- u = s;
- return a.compare(this._points, u._points)
- }
- }, e.prototype.apply = function () {
- var t = this;
- if (gl(arguments[0], Kl))
- for (var e = arguments[0], n = 0; n < this._points.size(); n++) e.filter(t._points.getCoordinate(n));
- else if (gl(arguments[0], Fc)) {
- var r = arguments[0];
- if (0 === this._points.size()) return null;
- for (var i = 0; i < this._points.size() && (r.filter(t._points, i), !r.isDone()); i++);
- r.isGeometryChanged() && this.geometryChanged()
- } else if (gl(arguments[0], Dc)) {
- var o = arguments[0];
- o.filter(this)
- } else if (gl(arguments[0], Hl)) {
- var s = arguments[0];
- s.filter(this)
- }
- }, e.prototype.getBoundary = function () {
- return new qc(this).getBoundary()
- }, e.prototype.isEquivalentClass = function (t) {
- return t instanceof e
- }, e.prototype.clone = function () {
- var e = t.prototype.clone.call(this);
- return e._points = this._points.clone(), e
- }, e.prototype.getCoordinateN = function (t) {
- return this._points.getCoordinate(t)
- }, e.prototype.getGeometryType = function () {
- return "LineString"
- }, e.prototype.copy = function () {
- return new e(this._points.copy(), this._factory)
- }, e.prototype.getCoordinateSequence = function () {
- return this._points
- }, e.prototype.isEmpty = function () {
- return 0 === this._points.size()
- }, e.prototype.init = function (t) {
- if (null === t && (t = this.getFactory().getCoordinateSequenceFactory().create([])), 1 === t.size()) throw new el("Invalid number of points in LineString (found " + t.size() + " - must be 0 or >= 2)");
- this._points = t
- }, e.prototype.isCoordinate = function (t) {
- for (var e = 0; e < this._points.size(); e++)
- if (this._points.getCoordinate(e).equals(t)) return !0;
- return !1
- }, e.prototype.getStartPoint = function () {
- return this.isEmpty() ? null : this.getPointN(0)
- }, e.prototype.getPointN = function (t) {
- return this.getFactory().createPoint(this._points.getCoordinate(t))
- }, e.prototype.interfaces_ = function () {
- return [Pc]
- }, e.prototype.getClass = function () {
- return e
- }, n.serialVersionUID.get = function () {
- return 0x2b2b51ba435c8e00
- }, Object.defineProperties(e, n), e
- }(Wl),
- Kc = function () {};
- Kc.prototype.interfaces_ = function () {
- return []
- }, Kc.prototype.getClass = function () {
- return Kc
- };
- var Qc = function (t) {
- function e(e, n) {
- t.call(this, n), this._coordinates = e || null, this.init(this._coordinates)
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- serialVersionUID: {
- configurable: !0
- }
- };
- return e.prototype.computeEnvelopeInternal = function () {
- if (this.isEmpty()) return new Ll;
- var t = new Ll;
- return t.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0)), t
- }, e.prototype.getSortIndex = function () {
- return t.SORTINDEX_POINT
- }, e.prototype.getCoordinates = function () {
- return this.isEmpty() ? [] : [this.getCoordinate()]
- }, e.prototype.equalsExact = function () {
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return !!this.isEquivalentClass(e) && (!(!this.isEmpty() || !e.isEmpty()) || this.isEmpty() === e.isEmpty() && this.equal(e.getCoordinate(), this.getCoordinate(), n))
- }
- return t.prototype.equalsExact.apply(this, arguments)
- }, e.prototype.normalize = function () {}, e.prototype.getCoordinate = function () {
- return 0 !== this._coordinates.size() ? this._coordinates.getCoordinate(0) : null
- }, e.prototype.getBoundaryDimension = function () {
- return Tc.FALSE
- }, e.prototype.getDimension = function () {
- return 0
- }, e.prototype.getNumPoints = function () {
- return this.isEmpty() ? 0 : 1
- }, e.prototype.reverse = function () {
- return this.copy()
- }, e.prototype.getX = function () {
- if (null === this.getCoordinate()) throw new Error("getX called on empty Point");
- return this.getCoordinate().x
- }, e.prototype.compareToSameClass = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = t;
- return this.getCoordinate().compareTo(e.getCoordinate())
- }
- if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = n;
- return r.compare(this._coordinates, i._coordinates)
- }
- }, e.prototype.apply = function () {
- if (gl(arguments[0], Kl)) {
- var t = arguments[0];
- if (this.isEmpty()) return null;
- t.filter(this.getCoordinate())
- } else if (gl(arguments[0], Fc)) {
- var e = arguments[0];
- if (this.isEmpty()) return null;
- e.filter(this._coordinates, 0), e.isGeometryChanged() && this.geometryChanged()
- } else if (gl(arguments[0], Dc)) {
- var n = arguments[0];
- n.filter(this)
- } else if (gl(arguments[0], Hl)) {
- var r = arguments[0];
- r.filter(this)
- }
- }, e.prototype.getBoundary = function () {
- return this.getFactory().createGeometryCollection(null)
- }, e.prototype.clone = function () {
- var e = t.prototype.clone.call(this);
- return e._coordinates = this._coordinates.clone(), e
- }, e.prototype.getGeometryType = function () {
- return "Point"
- }, e.prototype.copy = function () {
- return new e(this._coordinates.copy(), this._factory)
- }, e.prototype.getCoordinateSequence = function () {
- return this._coordinates
- }, e.prototype.getY = function () {
- if (null === this.getCoordinate()) throw new Error("getY called on empty Point");
- return this.getCoordinate().y
- }, e.prototype.isEmpty = function () {
- return 0 === this._coordinates.size()
- }, e.prototype.init = function (t) {
- null === t && (t = this.getFactory().getCoordinateSequenceFactory().create([])), ql.isTrue(t.size() <= 1), this._coordinates = t
- }, e.prototype.isSimple = function () {
- return !0
- }, e.prototype.interfaces_ = function () {
- return [Kc]
- }, e.prototype.getClass = function () {
- return e
- }, n.serialVersionUID.get = function () {
- return 0x44077bad161cbc00
- }, Object.defineProperties(e, n), e
- }(Wl),
- $c = function () {};
- $c.prototype.interfaces_ = function () {
- return []
- }, $c.prototype.getClass = function () {
- return $c
- };
- var th = function (t) {
- function e(e, n, r) {
- if (t.call(this, r), this._shell = null, this._holes = null, null === e && (e = this.getFactory().createLinearRing()), null === n && (n = []), t.hasNullElements(n)) throw new el("holes must not contain null elements");
- if (e.isEmpty() && t.hasNonEmptyElements(n)) throw new el("shell is empty but holes are not");
- this._shell = e, this._holes = n
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- serialVersionUID: {
- configurable: !0
- }
- };
- return e.prototype.computeEnvelopeInternal = function () {
- return this._shell.getEnvelopeInternal()
- }, e.prototype.getSortIndex = function () {
- return t.SORTINDEX_POLYGON
- }, e.prototype.getCoordinates = function () {
- if (this.isEmpty()) return [];
- for (var t = new Array(this.getNumPoints()).fill(null), e = -1, n = this._shell.getCoordinates(), r = 0; r < n.length; r++) t[++e] = n[r];
- for (var i = 0; i < this._holes.length; i++)
- for (var o = this._holes[i].getCoordinates(), s = 0; s < o.length; s++) t[++e] = o[s];
- return t
- }, e.prototype.getArea = function () {
- var t = 0;
- t += Math.abs(Xl.signedArea(this._shell.getCoordinateSequence()));
- for (var e = 0; e < this._holes.length; e++) t -= Math.abs(Xl.signedArea(this._holes[e].getCoordinateSequence()));
- return t
- }, e.prototype.isRectangle = function () {
- if (0 !== this.getNumInteriorRing()) return !1;
- if (null === this._shell) return !1;
- if (5 !== this._shell.getNumPoints()) return !1;
- for (var t = this._shell.getCoordinateSequence(), e = this.getEnvelopeInternal(), n = 0; n < 5; n++) {
- var r = t.getX(n);
- if (r !== e.getMinX() && r !== e.getMaxX()) return !1;
- var i = t.getY(n);
- if (i !== e.getMinY() && i !== e.getMaxY()) return !1
- }
- for (var o = t.getX(0), s = t.getY(0), a = 1; a <= 4; a++) {
- var u = t.getX(a),
- l = t.getY(a);
- if (u !== o === (l !== s)) return !1;
- o = u, s = l
- }
- return !0
- }, e.prototype.equalsExact = function () {
- var e = this;
- if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- if (!this.isEquivalentClass(n)) return !1;
- var i = n,
- o = this._shell,
- s = i._shell;
- if (!o.equalsExact(s, r)) return !1;
- if (this._holes.length !== i._holes.length) return !1;
- for (var a = 0; a < this._holes.length; a++)
- if (!e._holes[a].equalsExact(i._holes[a], r)) return !1;
- return !0
- }
- return t.prototype.equalsExact.apply(this, arguments)
- }, e.prototype.normalize = function () {
- var t = this;
- if (0 === arguments.length) {
- this.normalize(this._shell, !0);
- for (var e = 0; e < this._holes.length; e++) t.normalize(t._holes[e], !1);
- Rc.sort(this._holes)
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- if (n.isEmpty()) return null;
- var i = new Array(n.getCoordinates().length - 1).fill(null);
- Pl.arraycopy(n.getCoordinates(), 0, i, 0, i.length);
- var o = pc.minCoordinate(n.getCoordinates());
- pc.scroll(i, o), Pl.arraycopy(i, 0, n.getCoordinates(), 0, i.length), n.getCoordinates()[i.length] = i[0], Xl.isCCW(n.getCoordinates()) === r && pc.reverse(n.getCoordinates())
- }
- }, e.prototype.getCoordinate = function () {
- return this._shell.getCoordinate()
- }, e.prototype.getNumInteriorRing = function () {
- return this._holes.length
- }, e.prototype.getBoundaryDimension = function () {
- return 1
- }, e.prototype.getDimension = function () {
- return 2
- }, e.prototype.getLength = function () {
- var t = 0;
- t += this._shell.getLength();
- for (var e = 0; e < this._holes.length; e++) t += this._holes[e].getLength();
- return t
- }, e.prototype.getNumPoints = function () {
- for (var t = this._shell.getNumPoints(), e = 0; e < this._holes.length; e++) t += this._holes[e].getNumPoints();
- return t
- }, e.prototype.reverse = function () {
- var t = this.copy();
- t._shell = this._shell.copy().reverse(), t._holes = new Array(this._holes.length).fill(null);
- for (var e = 0; e < this._holes.length; e++) t._holes[e] = this._holes[e].copy().reverse();
- return t
- }, e.prototype.convexHull = function () {
- return this.getExteriorRing().convexHull()
- }, e.prototype.compareToSameClass = function () {
- var t = this;
- if (1 === arguments.length) {
- var e = arguments[0],
- n = this._shell,
- r = e._shell;
- return n.compareToSameClass(r)
- }
- if (2 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = i,
- a = this._shell,
- u = s._shell,
- l = a.compareToSameClass(u, o);
- if (0 !== l) return l;
- for (var c = this.getNumInteriorRing(), h = s.getNumInteriorRing(), p = 0; p < c && p < h;) {
- var f = t.getInteriorRingN(p),
- g = s.getInteriorRingN(p),
- d = f.compareToSameClass(g, o);
- if (0 !== d) return d;
- p++
- }
- return p < c ? 1 : p < h ? -1 : 0
- }
- }, e.prototype.apply = function (t) {
- var e = this;
- if (gl(t, Kl)) {
- this._shell.apply(t);
- for (var n = 0; n < this._holes.length; n++) e._holes[n].apply(t)
- } else if (gl(t, Fc)) {
- if (this._shell.apply(t), !t.isDone())
- for (var r = 0; r < this._holes.length && (e._holes[r].apply(t), !t.isDone()); r++);
- t.isGeometryChanged() && this.geometryChanged()
- } else if (gl(t, Dc)) t.filter(this);
- else if (gl(t, Hl)) {
- t.filter(this), this._shell.apply(t);
- for (var i = 0; i < this._holes.length; i++) e._holes[i].apply(t)
- }
- }, e.prototype.getBoundary = function () {
- if (this.isEmpty()) return this.getFactory().createMultiLineString();
- var t = new Array(this._holes.length + 1).fill(null);
- t[0] = this._shell;
- for (var e = 0; e < this._holes.length; e++) t[e + 1] = this._holes[e];
- return t.length <= 1 ? this.getFactory().createLinearRing(t[0].getCoordinateSequence()) : this.getFactory().createMultiLineString(t)
- }, e.prototype.clone = function () {
- var e = t.prototype.clone.call(this);
- e._shell = this._shell.clone(), e._holes = new Array(this._holes.length).fill(null);
- for (var n = 0; n < this._holes.length; n++) e._holes[n] = this._holes[n].clone();
- return e
- }, e.prototype.getGeometryType = function () {
- return "Polygon"
- }, e.prototype.copy = function () {
- for (var t = this._shell.copy(), n = new Array(this._holes.length).fill(null), r = 0; r < n.length; r++) n[r] = this._holes[r].copy();
- return new e(t, n, this._factory)
- }, e.prototype.getExteriorRing = function () {
- return this._shell
- }, e.prototype.isEmpty = function () {
- return this._shell.isEmpty()
- }, e.prototype.getInteriorRingN = function (t) {
- return this._holes[t]
- }, e.prototype.interfaces_ = function () {
- return [$c]
- }, e.prototype.getClass = function () {
- return e
- }, n.serialVersionUID.get = function () {
- return -0x307ffefd8dc97200
- }, Object.defineProperties(e, n), e
- }(Wl),
- eh = function (t) {
- function e() {
- t.apply(this, arguments)
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- serialVersionUID: {
- configurable: !0
- }
- };
- return e.prototype.getSortIndex = function () {
- return Wl.SORTINDEX_MULTIPOINT
- }, e.prototype.isValid = function () {
- return !0
- }, e.prototype.equalsExact = function () {
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return !!this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n)
- }
- return t.prototype.equalsExact.apply(this, arguments)
- }, e.prototype.getCoordinate = function () {
- if (1 === arguments.length) {
- var e = arguments[0];
- return this._geometries[e].getCoordinate()
- }
- return t.prototype.getCoordinate.apply(this, arguments)
- }, e.prototype.getBoundaryDimension = function () {
- return Tc.FALSE
- }, e.prototype.getDimension = function () {
- return 0
- }, e.prototype.getBoundary = function () {
- return this.getFactory().createGeometryCollection(null)
- }, e.prototype.getGeometryType = function () {
- return "MultiPoint"
- }, e.prototype.copy = function () {
- for (var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++) t[n] = this._geometries[n].copy();
- return new e(t, this._factory)
- }, e.prototype.interfaces_ = function () {
- return [Kc]
- }, e.prototype.getClass = function () {
- return e
- }, n.serialVersionUID.get = function () {
- return -0x6fb1ed4162e0fc00
- }, Object.defineProperties(e, n), e
- }(kc),
- nh = function (t) {
- function e(e, n) {
- e instanceof ul && n instanceof _h && (e = n.getCoordinateSequenceFactory().create(e)), t.call(this, e, n), this.validateConstruction()
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- MINIMUM_VALID_SIZE: {
- configurable: !0
- },
- serialVersionUID: {
- configurable: !0
- }
- };
- return e.prototype.getSortIndex = function () {
- return Wl.SORTINDEX_LINEARRING
- }, e.prototype.getBoundaryDimension = function () {
- return Tc.FALSE
- }, e.prototype.isClosed = function () {
- return !!this.isEmpty() || t.prototype.isClosed.call(this)
- }, e.prototype.reverse = function () {
- var t = this._points.copy();
- return Jc.reverse(t), this.getFactory().createLinearRing(t)
- }, e.prototype.validateConstruction = function () {
- if (!this.isEmpty() && !t.prototype.isClosed.call(this)) throw new el("Points of LinearRing do not form a closed linestring");
- if (this.getCoordinateSequence().size() >= 1 && this.getCoordinateSequence().size() < e.MINIMUM_VALID_SIZE) throw new el("Invalid number of points in LinearRing (found " + this.getCoordinateSequence().size() + " - must be 0 or >= 4)")
- }, e.prototype.getGeometryType = function () {
- return "LinearRing"
- }, e.prototype.copy = function () {
- return new e(this._points.copy(), this._factory)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, n.MINIMUM_VALID_SIZE.get = function () {
- return 4
- }, n.serialVersionUID.get = function () {
- return -0x3b229e262367a600
- }, Object.defineProperties(e, n), e
- }(Zc),
- rh = function (t) {
- function e() {
- t.apply(this, arguments)
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- serialVersionUID: {
- configurable: !0
- }
- };
- return e.prototype.getSortIndex = function () {
- return Wl.SORTINDEX_MULTIPOLYGON
- }, e.prototype.equalsExact = function () {
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return !!this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n)
- }
- return t.prototype.equalsExact.apply(this, arguments)
- }, e.prototype.getBoundaryDimension = function () {
- return 1
- }, e.prototype.getDimension = function () {
- return 2
- }, e.prototype.reverse = function () {
- for (var t = this._geometries.length, e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++) e[n] = this._geometries[n].reverse();
- return this.getFactory().createMultiPolygon(e)
- }, e.prototype.getBoundary = function () {
- if (this.isEmpty()) return this.getFactory().createMultiLineString();
- for (var t = new lc, e = 0; e < this._geometries.length; e++)
- for (var n = this._geometries[e].getBoundary(), r = 0; r < n.getNumGeometries(); r++) t.add(n.getGeometryN(r));
- var i = new Array(t.size()).fill(null);
- return this.getFactory().createMultiLineString(t.toArray(i))
- }, e.prototype.getGeometryType = function () {
- return "MultiPolygon"
- }, e.prototype.copy = function () {
- for (var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++) t[n] = this._geometries[n].copy();
- return new e(t, this._factory)
- }, e.prototype.interfaces_ = function () {
- return [$c]
- }, e.prototype.getClass = function () {
- return e
- }, n.serialVersionUID.get = function () {
- return -0x7a5aa1369171980
- }, Object.defineProperties(e, n), e
- }(kc),
- ih = function (t) {
- this._factory = t || null, this._isUserDataCopied = !1
- },
- oh = {
- NoOpGeometryOperation: {
- configurable: !0
- },
- CoordinateOperation: {
- configurable: !0
- },
- CoordinateSequenceOperation: {
- configurable: !0
- }
- };
- ih.prototype.setCopyUserData = function (t) {
- this._isUserDataCopied = t
- }, ih.prototype.edit = function (t, e) {
- if (null === t) return null;
- var n = this.editInternal(t, e);
- return this._isUserDataCopied && n.setUserData(t.getUserData()), n
- }, ih.prototype.editInternal = function (t, e) {
- return null === this._factory && (this._factory = t.getFactory()), t instanceof kc ? this.editGeometryCollection(t, e) : t instanceof th ? this.editPolygon(t, e) : t instanceof Qc || t instanceof Zc ? e.edit(t, this._factory) : (ql.shouldNeverReachHere("Unsupported Geometry class: " + t.getClass().getName()), null)
- }, ih.prototype.editGeometryCollection = function (t, e) {
- for (var n = e.edit(t, this._factory), r = new lc, i = 0; i < n.getNumGeometries(); i++) {
- var o = this.edit(n.getGeometryN(i), e);
- null === o || o.isEmpty() || r.add(o)
- }
- return n.getClass() === eh ? this._factory.createMultiPoint(r.toArray([])) : n.getClass() === Gc ? this._factory.createMultiLineString(r.toArray([])) : n.getClass() === rh ? this._factory.createMultiPolygon(r.toArray([])) : this._factory.createGeometryCollection(r.toArray([]))
- }, ih.prototype.editPolygon = function (t, e) {
- var n = e.edit(t, this._factory);
- if (null === n && (n = this._factory.createPolygon(null)), n.isEmpty()) return n;
- var r = this.edit(n.getExteriorRing(), e);
- if (null === r || r.isEmpty()) return this._factory.createPolygon();
- for (var i = new lc, o = 0; o < n.getNumInteriorRing(); o++) {
- var s = this.edit(n.getInteriorRingN(o), e);
- null === s || s.isEmpty() || i.add(s)
- }
- return this._factory.createPolygon(r, i.toArray([]))
- }, ih.prototype.interfaces_ = function () {
- return []
- }, ih.prototype.getClass = function () {
- return ih
- }, ih.GeometryEditorOperation = function () {}, oh.NoOpGeometryOperation.get = function () {
- return sh
- }, oh.CoordinateOperation.get = function () {
- return ah
- }, oh.CoordinateSequenceOperation.get = function () {
- return uh
- }, Object.defineProperties(ih, oh);
- var sh = function () {};
- sh.prototype.edit = function (t, e) {
- return t
- }, sh.prototype.interfaces_ = function () {
- return [ih.GeometryEditorOperation]
- }, sh.prototype.getClass = function () {
- return sh
- };
- var ah = function () {};
- ah.prototype.edit = function (t, e) {
- var n = this.editCoordinates(t.getCoordinates(), t);
- return null === n ? t : t instanceof nh ? e.createLinearRing(n) : t instanceof Zc ? e.createLineString(n) : t instanceof Qc ? n.length > 0 ? e.createPoint(n[0]) : e.createPoint() : t
- }, ah.prototype.interfaces_ = function () {
- return [ih.GeometryEditorOperation]
- }, ah.prototype.getClass = function () {
- return ah
- };
- var uh = function () {};
- uh.prototype.edit = function (t, e) {
- return t instanceof nh ? e.createLinearRing(this.edit(t.getCoordinateSequence(), t)) : t instanceof Zc ? e.createLineString(this.edit(t.getCoordinateSequence(), t)) : t instanceof Qc ? e.createPoint(this.edit(t.getCoordinateSequence(), t)) : t
- }, uh.prototype.interfaces_ = function () {
- return [ih.GeometryEditorOperation]
- }, uh.prototype.getClass = function () {
- return uh
- };
- var lh = function () {
- var t = this;
- if (this._dimension = 3, this._coordinates = null, 1 === arguments.length) {
- if (arguments[0] instanceof Array) this._coordinates = arguments[0], this._dimension = 3;
- else if (Number.isInteger(arguments[0])) {
- var e = arguments[0];
- this._coordinates = new Array(e).fill(null);
- for (var n = 0; n < e; n++) t._coordinates[n] = new ul
- } else if (gl(arguments[0], Il)) {
- var r = arguments[0];
- if (null === r) return this._coordinates = new Array(0).fill(null), null;
- this._dimension = r.getDimension(), this._coordinates = new Array(r.size()).fill(null);
- for (var i = 0; i < this._coordinates.length; i++) t._coordinates[i] = r.getCoordinateCopy(i)
- }
- } else if (2 === arguments.length)
- if (arguments[0] instanceof Array && Number.isInteger(arguments[1])) {
- var o = arguments[0],
- s = arguments[1];
- this._coordinates = o, this._dimension = s, null === o && (this._coordinates = new Array(0).fill(null))
- } else if (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {
- var a = arguments[0],
- u = arguments[1];
- this._coordinates = new Array(a).fill(null), this._dimension = u;
- for (var l = 0; l < a; l++) t._coordinates[l] = new ul
- }
- },
- ch = {
- serialVersionUID: {
- configurable: !0
- }
- };
- lh.prototype.setOrdinate = function (t, e, n) {
- switch (e) {
- case Il.X:
- this._coordinates[t].x = n;
- break;
- case Il.Y:
- this._coordinates[t].y = n;
- break;
- case Il.Z:
- this._coordinates[t].z = n;
- break;
- default:
- throw new el("invalid ordinateIndex")
- }
- }, lh.prototype.size = function () {
- return this._coordinates.length
- }, lh.prototype.getOrdinate = function (t, e) {
- switch (e) {
- case Il.X:
- return this._coordinates[t].x;
- case Il.Y:
- return this._coordinates[t].y;
- case Il.Z:
- return this._coordinates[t].z
- }
- return nl.NaN
- }, lh.prototype.getCoordinate = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return this._coordinates[t]
- }
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- n.x = this._coordinates[e].x, n.y = this._coordinates[e].y, n.z = this._coordinates[e].z
- }
- }, lh.prototype.getCoordinateCopy = function (t) {
- return new ul(this._coordinates[t])
- }, lh.prototype.getDimension = function () {
- return this._dimension
- }, lh.prototype.getX = function (t) {
- return this._coordinates[t].x
- }, lh.prototype.clone = function () {
- for (var t = new Array(this.size()).fill(null), e = 0; e < this._coordinates.length; e++) t[e] = this._coordinates[e].clone();
- return new lh(t, this._dimension)
- }, lh.prototype.expandEnvelope = function (t) {
- for (var e = 0; e < this._coordinates.length; e++) t.expandToInclude(this._coordinates[e]);
- return t
- }, lh.prototype.copy = function () {
- for (var t = new Array(this.size()).fill(null), e = 0; e < this._coordinates.length; e++) t[e] = this._coordinates[e].copy();
- return new lh(t, this._dimension)
- }, lh.prototype.toString = function () {
- if (this._coordinates.length > 0) {
- var t = new vl(17 * this._coordinates.length);
- t.append("("), t.append(this._coordinates[0]);
- for (var e = 1; e < this._coordinates.length; e++) t.append(", "), t.append(this._coordinates[e]);
- return t.append(")"), t.toString()
- }
- return "()"
- }, lh.prototype.getY = function (t) {
- return this._coordinates[t].y
- }, lh.prototype.toCoordinateArray = function () {
- return this._coordinates
- }, lh.prototype.interfaces_ = function () {
- return [Il, al]
- }, lh.prototype.getClass = function () {
- return lh
- }, ch.serialVersionUID.get = function () {
- return -0xcb44a778db18e00
- }, Object.defineProperties(lh, ch);
- var hh = function () {},
- ph = {
- serialVersionUID: {
- configurable: !0
- },
- instanceObject: {
- configurable: !0
- }
- };
- hh.prototype.readResolve = function () {
- return hh.instance()
- }, hh.prototype.create = function () {
- if (1 === arguments.length) {
- if (arguments[0] instanceof Array) {
- var t = arguments[0];
- return new lh(t)
- }
- if (gl(arguments[0], Il)) {
- var e = arguments[0];
- return new lh(e)
- }
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- return r > 3 && (r = 3), r < 2 ? new lh(n) : new lh(n, r)
- }
- }, hh.prototype.interfaces_ = function () {
- return [hl, al]
- }, hh.prototype.getClass = function () {
- return hh
- }, hh.instance = function () {
- return hh.instanceObject
- }, ph.serialVersionUID.get = function () {
- return -0x38e49fa6cf6f2e00
- }, ph.instanceObject.get = function () {
- return new hh
- }, Object.defineProperties(hh, ph);
- var fh = function (t) {
- function e() {
- t.call(this), this.map_ = new Map
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.get = function (t) {
- return this.map_.get(t) || null
- }, e.prototype.put = function (t, e) {
- return this.map_.set(t, e), e
- }, e.prototype.values = function () {
- for (var t = new lc, e = this.map_.values(), n = e.next(); !n.done;) t.add(n.value), n = e.next();
- return t
- }, e.prototype.entrySet = function () {
- var t = new xc;
- return this.map_.entries().forEach((function (e) {
- return t.add(e)
- })), t
- }, e.prototype.size = function () {
- return this.map_.size()
- }, e
- }(yc),
- gh = function t() {
- if (this._modelType = null, this._scale = null, 0 === arguments.length) this._modelType = t.FLOATING;
- else if (1 === arguments.length)
- if (arguments[0] instanceof yh) {
- var e = arguments[0];
- this._modelType = e, e === t.FIXED && this.setScale(1)
- } else if ("number" == typeof arguments[0]) {
- var n = arguments[0];
- this._modelType = t.FIXED, this.setScale(n)
- } else if (arguments[0] instanceof t) {
- var r = arguments[0];
- this._modelType = r._modelType, this._scale = r._scale
- }
- },
- dh = {
- serialVersionUID: {
- configurable: !0
- },
- maximumPreciseValue: {
- configurable: !0
- }
- };
- gh.prototype.equals = function (t) {
- if (!(t instanceof gh)) return !1;
- var e = t;
- return this._modelType === e._modelType && this._scale === e._scale
- }, gh.prototype.compareTo = function (t) {
- var e = t,
- n = this.getMaximumSignificantDigits(),
- r = e.getMaximumSignificantDigits();
- return new _l(n).compareTo(new _l(r))
- }, gh.prototype.getScale = function () {
- return this._scale
- }, gh.prototype.isFloating = function () {
- return this._modelType === gh.FLOATING || this._modelType === gh.FLOATING_SINGLE
- }, gh.prototype.getType = function () {
- return this._modelType
- }, gh.prototype.toString = function () {
- var t = "UNKNOWN";
- return this._modelType === gh.FLOATING ? t = "Floating" : this._modelType === gh.FLOATING_SINGLE ? t = "Floating-Single" : this._modelType === gh.FIXED && (t = "Fixed (Scale=" + this.getScale() + ")"), t
- }, gh.prototype.makePrecise = function () {
- if ("number" == typeof arguments[0]) {
- var t = arguments[0];
- if (nl.isNaN(t)) return t;
- if (this._modelType === gh.FLOATING_SINGLE) {
- return t
- }
- return this._modelType === gh.FIXED ? Math.round(t * this._scale) / this._scale : t
- }
- if (arguments[0] instanceof ul) {
- var e = arguments[0];
- if (this._modelType === gh.FLOATING) return null;
- e.x = this.makePrecise(e.x), e.y = this.makePrecise(e.y)
- }
- }, gh.prototype.getMaximumSignificantDigits = function () {
- var t = 16;
- return this._modelType === gh.FLOATING ? t = 16 : this._modelType === gh.FLOATING_SINGLE ? t = 6 : this._modelType === gh.FIXED && (t = 1 + Math.trunc(Math.ceil(Math.log(this.getScale()) / Math.log(10)))), t
- }, gh.prototype.setScale = function (t) {
- this._scale = Math.abs(t)
- }, gh.prototype.interfaces_ = function () {
- return [al, il]
- }, gh.prototype.getClass = function () {
- return gh
- }, gh.mostPrecise = function (t, e) {
- return t.compareTo(e) >= 0 ? t : e
- }, dh.serialVersionUID.get = function () {
- return 0x6bee6404e9a25c00
- }, dh.maximumPreciseValue.get = function () {
- return 9007199254740992
- }, Object.defineProperties(gh, dh);
- var yh = function t(e) {
- this._name = e || null, t.nameToTypeMap.put(e, this)
- },
- vh = {
- serialVersionUID: {
- configurable: !0
- },
- nameToTypeMap: {
- configurable: !0
- }
- };
- yh.prototype.readResolve = function () {
- return yh.nameToTypeMap.get(this._name)
- }, yh.prototype.toString = function () {
- return this._name
- }, yh.prototype.interfaces_ = function () {
- return [al]
- }, yh.prototype.getClass = function () {
- return yh
- }, vh.serialVersionUID.get = function () {
- return -552860263173159e4
- }, vh.nameToTypeMap.get = function () {
- return new fh
- }, Object.defineProperties(yh, vh), gh.Type = yh, gh.FIXED = new yh("FIXED"), gh.FLOATING = new yh("FLOATING"), gh.FLOATING_SINGLE = new yh("FLOATING SINGLE");
- var _h = function t() {
- this._precisionModel = new gh, this._SRID = 0, this._coordinateSequenceFactory = t.getDefaultCoordinateSequenceFactory(), 0 === arguments.length || (1 === arguments.length ? gl(arguments[0], hl) ? this._coordinateSequenceFactory = arguments[0] : arguments[0] instanceof gh && (this._precisionModel = arguments[0]) : 2 === arguments.length ? (this._precisionModel = arguments[0], this._SRID = arguments[1]) : 3 === arguments.length && (this._precisionModel = arguments[0], this._SRID = arguments[1], this._coordinateSequenceFactory = arguments[2]))
- },
- mh = {
- serialVersionUID: {
- configurable: !0
- }
- };
- _h.prototype.toGeometry = function (t) {
- return t.isNull() ? this.createPoint(null) : t.getMinX() === t.getMaxX() && t.getMinY() === t.getMaxY() ? this.createPoint(new ul(t.getMinX(), t.getMinY())) : t.getMinX() === t.getMaxX() || t.getMinY() === t.getMaxY() ? this.createLineString([new ul(t.getMinX(), t.getMinY()), new ul(t.getMaxX(), t.getMaxY())]) : this.createPolygon(this.createLinearRing([new ul(t.getMinX(), t.getMinY()), new ul(t.getMinX(), t.getMaxY()), new ul(t.getMaxX(), t.getMaxY()), new ul(t.getMaxX(), t.getMinY()), new ul(t.getMinX(), t.getMinY())]), null)
- }, _h.prototype.createLineString = function (t) {
- return t ? t instanceof Array ? new Zc(this.getCoordinateSequenceFactory().create(t), this) : gl(t, Il) ? new Zc(t, this) : void 0 : new Zc(this.getCoordinateSequenceFactory().create([]), this)
- }, _h.prototype.createMultiLineString = function () {
- if (0 === arguments.length) return new Gc(null, this);
- if (1 === arguments.length) {
- var t = arguments[0];
- return new Gc(t, this)
- }
- }, _h.prototype.buildGeometry = function (t) {
- for (var e = null, n = !1, r = !1, i = t.iterator(); i.hasNext();) {
- var o = i.next(),
- s = o.getClass();
- null === e && (e = s), s !== e && (n = !0), o.isGeometryCollectionOrDerived() && (r = !0)
- }
- if (null === e) return this.createGeometryCollection();
- if (n || r) return this.createGeometryCollection(_h.toGeometryArray(t));
- var a = t.iterator().next();
- if (t.size() > 1) {
- if (a instanceof th) return this.createMultiPolygon(_h.toPolygonArray(t));
- if (a instanceof Zc) return this.createMultiLineString(_h.toLineStringArray(t));
- if (a instanceof Qc) return this.createMultiPoint(_h.toPointArray(t));
- ql.shouldNeverReachHere("Unhandled class: " + a.getClass().getName())
- }
- return a
- }, _h.prototype.createMultiPointFromCoords = function (t) {
- return this.createMultiPoint(null !== t ? this.getCoordinateSequenceFactory().create(t) : null)
- }, _h.prototype.createPoint = function () {
- if (0 === arguments.length) return this.createPoint(this.getCoordinateSequenceFactory().create([]));
- if (1 === arguments.length) {
- if (arguments[0] instanceof ul) {
- var t = arguments[0];
- return this.createPoint(null !== t ? this.getCoordinateSequenceFactory().create([t]) : null)
- }
- if (gl(arguments[0], Il)) {
- var e = arguments[0];
- return new Qc(e, this)
- }
- }
- }, _h.prototype.getCoordinateSequenceFactory = function () {
- return this._coordinateSequenceFactory
- }, _h.prototype.createPolygon = function () {
- if (0 === arguments.length) return new th(null, null, this);
- if (1 === arguments.length) {
- if (gl(arguments[0], Il)) {
- var t = arguments[0];
- return this.createPolygon(this.createLinearRing(t))
- }
- if (arguments[0] instanceof Array) {
- var e = arguments[0];
- return this.createPolygon(this.createLinearRing(e))
- }
- if (arguments[0] instanceof nh) {
- var n = arguments[0];
- return this.createPolygon(n, null)
- }
- } else if (2 === arguments.length) {
- var r = arguments[0],
- i = arguments[1];
- return new th(r, i, this)
- }
- }, _h.prototype.getSRID = function () {
- return this._SRID
- }, _h.prototype.createGeometryCollection = function () {
- if (0 === arguments.length) return new kc(null, this);
- if (1 === arguments.length) {
- var t = arguments[0];
- return new kc(t, this)
- }
- }, _h.prototype.createGeometry = function (t) {
- return new ih(this).edit(t, {
- edit: function () {
- if (2 === arguments.length) {
- var t = arguments[0];
- return this._coordinateSequenceFactory.create(t)
- }
- }
- })
- }, _h.prototype.getPrecisionModel = function () {
- return this._precisionModel
- }, _h.prototype.createLinearRing = function () {
- if (0 === arguments.length) return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));
- if (1 === arguments.length) {
- if (arguments[0] instanceof Array) {
- var t = arguments[0];
- return this.createLinearRing(null !== t ? this.getCoordinateSequenceFactory().create(t) : null)
- }
- if (gl(arguments[0], Il)) {
- var e = arguments[0];
- return new nh(e, this)
- }
- }
- }, _h.prototype.createMultiPolygon = function () {
- if (0 === arguments.length) return new rh(null, this);
- if (1 === arguments.length) {
- var t = arguments[0];
- return new rh(t, this)
- }
- }, _h.prototype.createMultiPoint = function () {
- var t = this;
- if (0 === arguments.length) return new eh(null, this);
- if (1 === arguments.length) {
- if (arguments[0] instanceof Array) {
- var e = arguments[0];
- return new eh(e, this)
- }
- if (arguments[0] instanceof Array) {
- var n = arguments[0];
- return this.createMultiPoint(null !== n ? this.getCoordinateSequenceFactory().create(n) : null)
- }
- if (gl(arguments[0], Il)) {
- var r = arguments[0];
- if (null === r) return this.createMultiPoint(new Array(0).fill(null));
- for (var i = new Array(r.size()).fill(null), o = 0; o < r.size(); o++) {
- var s = t.getCoordinateSequenceFactory().create(1, r.getDimension());
- Jc.copy(r, o, s, 0, 1), i[o] = t.createPoint(s)
- }
- return this.createMultiPoint(i)
- }
- }
- }, _h.prototype.interfaces_ = function () {
- return [al]
- }, _h.prototype.getClass = function () {
- return _h
- }, _h.toMultiPolygonArray = function (t) {
- var e = new Array(t.size()).fill(null);
- return t.toArray(e)
- }, _h.toGeometryArray = function (t) {
- if (null === t) return null;
- var e = new Array(t.size()).fill(null);
- return t.toArray(e)
- }, _h.getDefaultCoordinateSequenceFactory = function () {
- return hh.instance()
- }, _h.toMultiLineStringArray = function (t) {
- var e = new Array(t.size()).fill(null);
- return t.toArray(e)
- }, _h.toLineStringArray = function (t) {
- var e = new Array(t.size()).fill(null);
- return t.toArray(e)
- }, _h.toMultiPointArray = function (t) {
- var e = new Array(t.size()).fill(null);
- return t.toArray(e)
- }, _h.toLinearRingArray = function (t) {
- var e = new Array(t.size()).fill(null);
- return t.toArray(e)
- }, _h.toPointArray = function (t) {
- var e = new Array(t.size()).fill(null);
- return t.toArray(e)
- }, _h.toPolygonArray = function (t) {
- var e = new Array(t.size()).fill(null);
- return t.toArray(e)
- }, _h.createPointFromInternalCoord = function (t, e) {
- return e.getPrecisionModel().makePrecise(t), e.getFactory().createPoint(t)
- }, mh.serialVersionUID.get = function () {
- return -0x5ea75f2051eeb400
- }, Object.defineProperties(_h, mh);
- var xh = ["Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon"],
- Eh = function (t) {
- this.geometryFactory = t || new _h
- };
- Eh.prototype.read = function (t) {
- var e, n = (e = "string" == typeof t ? JSON.parse(t) : t).type;
- if (!bh[n]) throw new Error("Unknown GeoJSON type: " + e.type);
- return -1 !== xh.indexOf(n) ? bh[n].apply(this, [e.coordinates]) : "GeometryCollection" === n ? bh[n].apply(this, [e.geometries]) : bh[n].apply(this, [e])
- }, Eh.prototype.write = function (t) {
- var e = t.getGeometryType();
- if (!wh[e]) throw new Error("Geometry is not supported");
- return wh[e].apply(this, [t])
- };
- var bh = {
- Feature: function (t) {
- var e = {};
- for (var n in t) e[n] = t[n];
- if (t.geometry) {
- var r = t.geometry.type;
- if (!bh[r]) throw new Error("Unknown GeoJSON type: " + t.type);
- e.geometry = this.read(t.geometry)
- }
- return t.bbox && (e.bbox = bh.bbox.apply(this, [t.bbox])), e
- },
- FeatureCollection: function (t) {
- var e = {};
- if (t.features) {
- e.features = [];
- for (var n = 0; n < t.features.length; ++n) e.features.push(this.read(t.features[n]))
- }
- return t.bbox && (e.bbox = this.parse.bbox.apply(this, [t.bbox])), e
- },
- coordinates: function (t) {
- for (var e = [], n = 0; n < t.length; ++n) {
- var r = t[n];
- e.push(new ul(r[0], r[1]))
- }
- return e
- },
- bbox: function (t) {
- return this.geometryFactory.createLinearRing([new ul(t[0], t[1]), new ul(t[2], t[1]), new ul(t[2], t[3]), new ul(t[0], t[3]), new ul(t[0], t[1])])
- },
- Point: function (t) {
- var e = new ul(t[0], t[1]);
- return this.geometryFactory.createPoint(e)
- },
- MultiPoint: function (t) {
- for (var e = [], n = 0; n < t.length; ++n) e.push(bh.Point.apply(this, [t[n]]));
- return this.geometryFactory.createMultiPoint(e)
- },
- LineString: function (t) {
- var e = bh.coordinates.apply(this, [t]);
- return this.geometryFactory.createLineString(e)
- },
- MultiLineString: function (t) {
- for (var e = [], n = 0; n < t.length; ++n) e.push(bh.LineString.apply(this, [t[n]]));
- return this.geometryFactory.createMultiLineString(e)
- },
- Polygon: function (t) {
- for (var e = bh.coordinates.apply(this, [t[0]]), n = this.geometryFactory.createLinearRing(e), r = [], i = 1; i < t.length; ++i) {
- var o = t[i],
- s = bh.coordinates.apply(this, [o]),
- a = this.geometryFactory.createLinearRing(s);
- r.push(a)
- }
- return this.geometryFactory.createPolygon(n, r)
- },
- MultiPolygon: function (t) {
- for (var e = [], n = 0; n < t.length; ++n) {
- var r = t[n];
- e.push(bh.Polygon.apply(this, [r]))
- }
- return this.geometryFactory.createMultiPolygon(e)
- },
- GeometryCollection: function (t) {
- for (var e = [], n = 0; n < t.length; ++n) {
- var r = t[n];
- e.push(this.read(r))
- }
- return this.geometryFactory.createGeometryCollection(e)
- }
- },
- wh = {
- coordinate: function (t) {
- return [t.x, t.y]
- },
- Point: function (t) {
- return {
- type: "Point",
- coordinates: wh.coordinate.apply(this, [t.getCoordinate()])
- }
- },
- MultiPoint: function (t) {
- for (var e = [], n = 0; n < t._geometries.length; ++n) {
- var r = t._geometries[n],
- i = wh.Point.apply(this, [r]);
- e.push(i.coordinates)
- }
- return {
- type: "MultiPoint",
- coordinates: e
- }
- },
- LineString: function (t) {
- for (var e = [], n = t.getCoordinates(), r = 0; r < n.length; ++r) {
- var i = n[r];
- e.push(wh.coordinate.apply(this, [i]))
- }
- return {
- type: "LineString",
- coordinates: e
- }
- },
- MultiLineString: function (t) {
- for (var e = [], n = 0; n < t._geometries.length; ++n) {
- var r = t._geometries[n],
- i = wh.LineString.apply(this, [r]);
- e.push(i.coordinates)
- }
- return {
- type: "MultiLineString",
- coordinates: e
- }
- },
- Polygon: function (t) {
- var e = [],
- n = wh.LineString.apply(this, [t._shell]);
- e.push(n.coordinates);
- for (var r = 0; r < t._holes.length; ++r) {
- var i = t._holes[r],
- o = wh.LineString.apply(this, [i]);
- e.push(o.coordinates)
- }
- return {
- type: "Polygon",
- coordinates: e
- }
- },
- MultiPolygon: function (t) {
- for (var e = [], n = 0; n < t._geometries.length; ++n) {
- var r = t._geometries[n],
- i = wh.Polygon.apply(this, [r]);
- e.push(i.coordinates)
- }
- return {
- type: "MultiPolygon",
- coordinates: e
- }
- },
- GeometryCollection: function (t) {
- for (var e = [], n = 0; n < t._geometries.length; ++n) {
- var r = t._geometries[n],
- i = r.getGeometryType();
- e.push(wh[i].apply(this, [r]))
- }
- return {
- type: "GeometryCollection",
- geometries: e
- }
- }
- },
- Ih = function (t) {
- this.geometryFactory = t || new _h, this.precisionModel = this.geometryFactory.getPrecisionModel(), this.parser = new Eh(this.geometryFactory)
- };
- Ih.prototype.read = function (t) {
- var e = this.parser.read(t);
- return this.precisionModel.getType() === gh.FIXED && this.reducePrecision(e), e
- }, Ih.prototype.reducePrecision = function (t) {
- var e, n;
- if (t.coordinate) this.precisionModel.makePrecise(t.coordinate);
- else if (t.points)
- for (e = 0, n = t.points.length; e < n; e++) this.precisionModel.makePrecise(t.points[e]);
- else if (t.geometries)
- for (e = 0, n = t.geometries.length; e < n; e++) this.reducePrecision(t.geometries[e])
- };
- var Nh = function () {
- this.parser = new Eh(this.geometryFactory)
- };
- Nh.prototype.write = function (t) {
- return this.parser.write(t)
- };
- var Sh = function () {},
- Ch = {
- ON: {
- configurable: !0
- },
- LEFT: {
- configurable: !0
- },
- RIGHT: {
- configurable: !0
- }
- };
- function Ph(t) {
- this.message = t || ""
- }
- function Mh() {
- this.array_ = []
- }
- Sh.prototype.interfaces_ = function () {
- return []
- }, Sh.prototype.getClass = function () {
- return Sh
- }, Sh.opposite = function (t) {
- return t === Sh.LEFT ? Sh.RIGHT : t === Sh.RIGHT ? Sh.LEFT : t
- }, Ch.ON.get = function () {
- return 0
- }, Ch.LEFT.get = function () {
- return 1
- }, Ch.RIGHT.get = function () {
- return 2
- }, Object.defineProperties(Sh, Ch), Ph.prototype = new Error, Ph.prototype.name = "EmptyStackException", Mh.prototype = new ac, Mh.prototype.add = function (t) {
- return this.array_.push(t), !0
- }, Mh.prototype.get = function (t) {
- if (t < 0 || t >= this.size()) throw new Error;
- return this.array_[t]
- }, Mh.prototype.push = function (t) {
- return this.array_.push(t), t
- }, Mh.prototype.pop = function (t) {
- if (0 === this.array_.length) throw new Ph;
- return this.array_.pop()
- }, Mh.prototype.peek = function () {
- if (0 === this.array_.length) throw new Ph;
- return this.array_[this.array_.length - 1]
- }, Mh.prototype.empty = function () {
- return 0 === this.array_.length
- }, Mh.prototype.isEmpty = function () {
- return this.empty()
- }, Mh.prototype.search = function (t) {
- return this.array_.indexOf(t)
- }, Mh.prototype.size = function () {
- return this.array_.length
- }, Mh.prototype.toArray = function () {
- for (var t = [], e = 0, n = this.array_.length; e < n; e++) t.push(this.array_[e]);
- return t
- };
- var Lh = function () {
- this._minIndex = -1, this._minCoord = null, this._minDe = null, this._orientedDe = null
- };
- Lh.prototype.getCoordinate = function () {
- return this._minCoord
- }, Lh.prototype.getRightmostSide = function (t, e) {
- var n = this.getRightmostSideOfSegment(t, e);
- return n < 0 && (n = this.getRightmostSideOfSegment(t, e - 1)), n < 0 && (this._minCoord = null, this.checkForRightmostCoordinate(t)), n
- }, Lh.prototype.findRightmostEdgeAtVertex = function () {
- var t = this._minDe.getEdge().getCoordinates();
- ql.isTrue(this._minIndex > 0 && this._minIndex < t.length, "rightmost point expected to be interior vertex of edge");
- var e = t[this._minIndex - 1],
- n = t[this._minIndex + 1],
- r = Xl.computeOrientation(this._minCoord, n, e),
- i = !1;
- (e.y < this._minCoord.y && n.y < this._minCoord.y && r === Xl.COUNTERCLOCKWISE || e.y > this._minCoord.y && n.y > this._minCoord.y && r === Xl.CLOCKWISE) && (i = !0), i && (this._minIndex = this._minIndex - 1)
- }, Lh.prototype.getRightmostSideOfSegment = function (t, e) {
- var n = t.getEdge().getCoordinates();
- if (e < 0 || e + 1 >= n.length) return -1;
- if (n[e].y === n[e + 1].y) return -1;
- var r = Sh.LEFT;
- return n[e].y < n[e + 1].y && (r = Sh.RIGHT), r
- }, Lh.prototype.getEdge = function () {
- return this._orientedDe
- }, Lh.prototype.checkForRightmostCoordinate = function (t) {
- for (var e = this, n = t.getEdge().getCoordinates(), r = 0; r < n.length - 1; r++)(null === e._minCoord || n[r].x > e._minCoord.x) && (e._minDe = t, e._minIndex = r, e._minCoord = n[r])
- }, Lh.prototype.findRightmostEdgeAtNode = function () {
- var t = this._minDe.getNode().getEdges();
- this._minDe = t.getRightmostEdge(), this._minDe.isForward() || (this._minDe = this._minDe.getSym(), this._minIndex = this._minDe.getEdge().getCoordinates().length - 1)
- }, Lh.prototype.findEdge = function (t) {
- for (var e = t.iterator(); e.hasNext();) {
- var n = e.next();
- n.isForward() && this.checkForRightmostCoordinate(n)
- }
- ql.isTrue(0 !== this._minIndex || this._minCoord.equals(this._minDe.getCoordinate()), "inconsistency in rightmost processing"), 0 === this._minIndex ? this.findRightmostEdgeAtNode() : this.findRightmostEdgeAtVertex(), this._orientedDe = this._minDe, this.getRightmostSide(this._minDe, this._minIndex) === Sh.LEFT && (this._orientedDe = this._minDe.getSym())
- }, Lh.prototype.interfaces_ = function () {
- return []
- }, Lh.prototype.getClass = function () {
- return Lh
- };
- var Oh = function (t) {
- function e(n, r) {
- t.call(this, e.msgWithCoord(n, r)), this.pt = r ? new ul(r) : null, this.name = "TopologyException"
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getCoordinate = function () {
- return this.pt
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e.msgWithCoord = function (t, e) {
- return e ? t : t + " [ " + e + " ]"
- }, e
- }(kl),
- Rh = function () {
- this.array_ = []
- };
- Rh.prototype.addLast = function (t) {
- this.array_.push(t)
- }, Rh.prototype.removeFirst = function () {
- return this.array_.shift()
- }, Rh.prototype.isEmpty = function () {
- return 0 === this.array_.length
- };
- var Th = function () {
- this._finder = null, this._dirEdgeList = new lc, this._nodes = new lc, this._rightMostCoord = null, this._env = null, this._finder = new Lh
- };
- Th.prototype.clearVisitedEdges = function () {
- for (var t = this._dirEdgeList.iterator(); t.hasNext();) {
- t.next().setVisited(!1)
- }
- }, Th.prototype.getRightmostCoordinate = function () {
- return this._rightMostCoord
- }, Th.prototype.computeNodeDepth = function (t) {
- for (var e = null, n = t.getEdges().iterator(); n.hasNext();) {
- var r = n.next();
- if (r.isVisited() || r.getSym().isVisited()) {
- e = r;
- break
- }
- }
- if (null === e) throw new Oh("unable to find edge to compute depths at " + t.getCoordinate());
- t.getEdges().computeDepths(e);
- for (var i = t.getEdges().iterator(); i.hasNext();) {
- var o = i.next();
- o.setVisited(!0), this.copySymDepths(o)
- }
- }, Th.prototype.computeDepth = function (t) {
- this.clearVisitedEdges();
- var e = this._finder.getEdge();
- e.setEdgeDepths(Sh.RIGHT, t), this.copySymDepths(e), this.computeDepths(e)
- }, Th.prototype.create = function (t) {
- this.addReachable(t), this._finder.findEdge(this._dirEdgeList), this._rightMostCoord = this._finder.getCoordinate()
- }, Th.prototype.findResultEdges = function () {
- for (var t = this._dirEdgeList.iterator(); t.hasNext();) {
- var e = t.next();
- e.getDepth(Sh.RIGHT) >= 1 && e.getDepth(Sh.LEFT) <= 0 && !e.isInteriorAreaEdge() && e.setInResult(!0)
- }
- }, Th.prototype.computeDepths = function (t) {
- var e = new xc,
- n = new Rh,
- r = t.getNode();
- for (n.addLast(r), e.add(r), t.setVisited(!0); !n.isEmpty();) {
- var i = n.removeFirst();
- e.add(i), this.computeNodeDepth(i);
- for (var o = i.getEdges().iterator(); o.hasNext();) {
- var s = o.next().getSym();
- if (!s.isVisited()) {
- var a = s.getNode();
- e.contains(a) || (n.addLast(a), e.add(a))
- }
- }
- }
- }, Th.prototype.compareTo = function (t) {
- var e = t;
- return this._rightMostCoord.x < e._rightMostCoord.x ? -1 : this._rightMostCoord.x > e._rightMostCoord.x ? 1 : 0
- }, Th.prototype.getEnvelope = function () {
- if (null === this._env) {
- for (var t = new Ll, e = this._dirEdgeList.iterator(); e.hasNext();)
- for (var n = e.next().getEdge().getCoordinates(), r = 0; r < n.length - 1; r++) t.expandToInclude(n[r]);
- this._env = t
- }
- return this._env
- }, Th.prototype.addReachable = function (t) {
- var e = new Mh;
- for (e.add(t); !e.empty();) {
- var n = e.pop();
- this.add(n, e)
- }
- }, Th.prototype.copySymDepths = function (t) {
- var e = t.getSym();
- e.setDepth(Sh.LEFT, t.getDepth(Sh.RIGHT)), e.setDepth(Sh.RIGHT, t.getDepth(Sh.LEFT))
- }, Th.prototype.add = function (t, e) {
- t.setVisited(!0), this._nodes.add(t);
- for (var n = t.getEdges().iterator(); n.hasNext();) {
- var r = n.next();
- this._dirEdgeList.add(r);
- var i = r.getSym().getNode();
- i.isVisited() || e.push(i)
- }
- }, Th.prototype.getNodes = function () {
- return this._nodes
- }, Th.prototype.getDirectedEdges = function () {
- return this._dirEdgeList
- }, Th.prototype.interfaces_ = function () {
- return [il]
- }, Th.prototype.getClass = function () {
- return Th
- };
- var Ah = function t() {
- var e = this;
- if (this.location = null, 1 === arguments.length) {
- if (arguments[0] instanceof Array) {
- var n = arguments[0];
- this.init(n.length)
- } else if (Number.isInteger(arguments[0])) {
- var r = arguments[0];
- this.init(1), this.location[Sh.ON] = r
- } else if (arguments[0] instanceof t) {
- var i = arguments[0];
- if (this.init(i.location.length), null !== i)
- for (var o = 0; o < this.location.length; o++) e.location[o] = i.location[o]
- }
- } else if (3 === arguments.length) {
- var s = arguments[0],
- a = arguments[1],
- u = arguments[2];
- this.init(3), this.location[Sh.ON] = s, this.location[Sh.LEFT] = a, this.location[Sh.RIGHT] = u
- }
- };
- Ah.prototype.setAllLocations = function (t) {
- for (var e = 0; e < this.location.length; e++) this.location[e] = t
- }, Ah.prototype.isNull = function () {
- for (var t = 0; t < this.location.length; t++)
- if (this.location[t] !== pl.NONE) return !1;
- return !0
- }, Ah.prototype.setAllLocationsIfNull = function (t) {
- for (var e = 0; e < this.location.length; e++) this.location[e] === pl.NONE && (this.location[e] = t)
- }, Ah.prototype.isLine = function () {
- return 1 === this.location.length
- }, Ah.prototype.merge = function (t) {
- if (t.location.length > this.location.length) {
- var e = new Array(3).fill(null);
- e[Sh.ON] = this.location[Sh.ON], e[Sh.LEFT] = pl.NONE, e[Sh.RIGHT] = pl.NONE, this.location = e
- }
- for (var n = 0; n < this.location.length; n++) this.location[n] === pl.NONE && n < t.location.length && (this.location[n] = t.location[n])
- }, Ah.prototype.getLocations = function () {
- return this.location
- }, Ah.prototype.flip = function () {
- if (this.location.length <= 1) return null;
- var t = this.location[Sh.LEFT];
- this.location[Sh.LEFT] = this.location[Sh.RIGHT], this.location[Sh.RIGHT] = t
- }, Ah.prototype.toString = function () {
- var t = new vl;
- return this.location.length > 1 && t.append(pl.toLocationSymbol(this.location[Sh.LEFT])), t.append(pl.toLocationSymbol(this.location[Sh.ON])), this.location.length > 1 && t.append(pl.toLocationSymbol(this.location[Sh.RIGHT])), t.toString()
- }, Ah.prototype.setLocations = function (t, e, n) {
- this.location[Sh.ON] = t, this.location[Sh.LEFT] = e, this.location[Sh.RIGHT] = n
- }, Ah.prototype.get = function (t) {
- return t < this.location.length ? this.location[t] : pl.NONE
- }, Ah.prototype.isArea = function () {
- return this.location.length > 1
- }, Ah.prototype.isAnyNull = function () {
- for (var t = 0; t < this.location.length; t++)
- if (this.location[t] === pl.NONE) return !0;
- return !1
- }, Ah.prototype.setLocation = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.setLocation(Sh.ON, t)
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- this.location[e] = n
- }
- }, Ah.prototype.init = function (t) {
- this.location = new Array(t).fill(null), this.setAllLocations(pl.NONE)
- }, Ah.prototype.isEqualOnSide = function (t, e) {
- return this.location[e] === t.location[e]
- }, Ah.prototype.allPositionsEqual = function (t) {
- for (var e = 0; e < this.location.length; e++)
- if (this.location[e] !== t) return !1;
- return !0
- }, Ah.prototype.interfaces_ = function () {
- return []
- }, Ah.prototype.getClass = function () {
- return Ah
- };
- var Dh = function t() {
- if (this.elt = new Array(2).fill(null), 1 === arguments.length) {
- if (Number.isInteger(arguments[0])) {
- var e = arguments[0];
- this.elt[0] = new Ah(e), this.elt[1] = new Ah(e)
- } else if (arguments[0] instanceof t) {
- var n = arguments[0];
- this.elt[0] = new Ah(n.elt[0]), this.elt[1] = new Ah(n.elt[1])
- }
- } else if (2 === arguments.length) {
- var r = arguments[0],
- i = arguments[1];
- this.elt[0] = new Ah(pl.NONE), this.elt[1] = new Ah(pl.NONE), this.elt[r].setLocation(i)
- } else if (3 === arguments.length) {
- var o = arguments[0],
- s = arguments[1],
- a = arguments[2];
- this.elt[0] = new Ah(o, s, a), this.elt[1] = new Ah(o, s, a)
- } else if (4 === arguments.length) {
- var u = arguments[0],
- l = arguments[1],
- c = arguments[2],
- h = arguments[3];
- this.elt[0] = new Ah(pl.NONE, pl.NONE, pl.NONE), this.elt[1] = new Ah(pl.NONE, pl.NONE, pl.NONE), this.elt[u].setLocations(l, c, h)
- }
- };
- Dh.prototype.getGeometryCount = function () {
- var t = 0;
- return this.elt[0].isNull() || t++, this.elt[1].isNull() || t++, t
- }, Dh.prototype.setAllLocations = function (t, e) {
- this.elt[t].setAllLocations(e)
- }, Dh.prototype.isNull = function (t) {
- return this.elt[t].isNull()
- }, Dh.prototype.setAllLocationsIfNull = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.setAllLocationsIfNull(0, t), this.setAllLocationsIfNull(1, t)
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- this.elt[e].setAllLocationsIfNull(n)
- }
- }, Dh.prototype.isLine = function (t) {
- return this.elt[t].isLine()
- }, Dh.prototype.merge = function (t) {
- for (var e = this, n = 0; n < 2; n++) null === e.elt[n] && null !== t.elt[n] ? e.elt[n] = new Ah(t.elt[n]) : e.elt[n].merge(t.elt[n])
- }, Dh.prototype.flip = function () {
- this.elt[0].flip(), this.elt[1].flip()
- }, Dh.prototype.getLocation = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return this.elt[t].get(Sh.ON)
- }
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return this.elt[e].get(n)
- }
- }, Dh.prototype.toString = function () {
- var t = new vl;
- return null !== this.elt[0] && (t.append("A:"), t.append(this.elt[0].toString())), null !== this.elt[1] && (t.append(" B:"), t.append(this.elt[1].toString())), t.toString()
- }, Dh.prototype.isArea = function () {
- if (0 === arguments.length) return this.elt[0].isArea() || this.elt[1].isArea();
- if (1 === arguments.length) {
- var t = arguments[0];
- return this.elt[t].isArea()
- }
- }, Dh.prototype.isAnyNull = function (t) {
- return this.elt[t].isAnyNull()
- }, Dh.prototype.setLocation = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- this.elt[t].setLocation(Sh.ON, e)
- } else if (3 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = arguments[2];
- this.elt[n].setLocation(r, i)
- }
- }, Dh.prototype.isEqualOnSide = function (t, e) {
- return this.elt[0].isEqualOnSide(t.elt[0], e) && this.elt[1].isEqualOnSide(t.elt[1], e)
- }, Dh.prototype.allPositionsEqual = function (t, e) {
- return this.elt[t].allPositionsEqual(e)
- }, Dh.prototype.toLine = function (t) {
- this.elt[t].isArea() && (this.elt[t] = new Ah(this.elt[t].location[0]))
- }, Dh.prototype.interfaces_ = function () {
- return []
- }, Dh.prototype.getClass = function () {
- return Dh
- }, Dh.toLineLabel = function (t) {
- for (var e = new Dh(pl.NONE), n = 0; n < 2; n++) e.setLocation(n, t.getLocation(n));
- return e
- };
- var Fh = function () {
- this._startDe = null, this._maxNodeDegree = -1, this._edges = new lc, this._pts = new lc, this._label = new Dh(pl.NONE), this._ring = null, this._isHole = null, this._shell = null, this._holes = new lc, this._geometryFactory = null;
- var t = arguments[0],
- e = arguments[1];
- this._geometryFactory = e, this.computePoints(t), this.computeRing()
- };
- Fh.prototype.computeRing = function () {
- if (null !== this._ring) return null;
- for (var t = new Array(this._pts.size()).fill(null), e = 0; e < this._pts.size(); e++) t[e] = this._pts.get(e);
- this._ring = this._geometryFactory.createLinearRing(t), this._isHole = Xl.isCCW(this._ring.getCoordinates())
- }, Fh.prototype.isIsolated = function () {
- return 1 === this._label.getGeometryCount()
- }, Fh.prototype.computePoints = function (t) {
- var e = this;
- this._startDe = t;
- var n = t,
- r = !0;
- do {
- if (null === n) throw new Oh("Found null DirectedEdge");
- if (n.getEdgeRing() === e) throw new Oh("Directed Edge visited twice during ring-building at " + n.getCoordinate());
- e._edges.add(n);
- var i = n.getLabel();
- ql.isTrue(i.isArea()), e.mergeLabel(i), e.addPoints(n.getEdge(), n.isForward(), r), r = !1, e.setEdgeRing(n, e), n = e.getNext(n)
- } while (n !== this._startDe)
- }, Fh.prototype.getLinearRing = function () {
- return this._ring
- }, Fh.prototype.getCoordinate = function (t) {
- return this._pts.get(t)
- }, Fh.prototype.computeMaxNodeDegree = function () {
- var t = this;
- this._maxNodeDegree = 0;
- var e = this._startDe;
- do {
- var n = e.getNode().getEdges().getOutgoingDegree(t);
- n > t._maxNodeDegree && (t._maxNodeDegree = n), e = t.getNext(e)
- } while (e !== this._startDe);
- this._maxNodeDegree *= 2
- }, Fh.prototype.addPoints = function (t, e, n) {
- var r = t.getCoordinates();
- if (e) {
- var i = 1;
- n && (i = 0);
- for (var o = i; o < r.length; o++) this._pts.add(r[o])
- } else {
- var s = r.length - 2;
- n && (s = r.length - 1);
- for (var a = s; a >= 0; a--) this._pts.add(r[a])
- }
- }, Fh.prototype.isHole = function () {
- return this._isHole
- }, Fh.prototype.setInResult = function () {
- var t = this._startDe;
- do {
- t.getEdge().setInResult(!0), t = t.getNext()
- } while (t !== this._startDe)
- }, Fh.prototype.containsPoint = function (t) {
- var e = this.getLinearRing();
- if (!e.getEnvelopeInternal().contains(t)) return !1;
- if (!Xl.isPointInRing(t, e.getCoordinates())) return !1;
- for (var n = this._holes.iterator(); n.hasNext();) {
- if (n.next().containsPoint(t)) return !1
- }
- return !0
- }, Fh.prototype.addHole = function (t) {
- this._holes.add(t)
- }, Fh.prototype.isShell = function () {
- return null === this._shell
- }, Fh.prototype.getLabel = function () {
- return this._label
- }, Fh.prototype.getEdges = function () {
- return this._edges
- }, Fh.prototype.getMaxNodeDegree = function () {
- return this._maxNodeDegree < 0 && this.computeMaxNodeDegree(), this._maxNodeDegree
- }, Fh.prototype.getShell = function () {
- return this._shell
- }, Fh.prototype.mergeLabel = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.mergeLabel(t, 0), this.mergeLabel(t, 1)
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1],
- r = e.getLocation(n, Sh.RIGHT);
- if (r === pl.NONE) return null;
- if (this._label.getLocation(n) === pl.NONE) return this._label.setLocation(n, r), null
- }
- }, Fh.prototype.setShell = function (t) {
- this._shell = t, null !== t && t.addHole(this)
- }, Fh.prototype.toPolygon = function (t) {
- for (var e = new Array(this._holes.size()).fill(null), n = 0; n < this._holes.size(); n++) e[n] = this._holes.get(n).getLinearRing();
- return t.createPolygon(this.getLinearRing(), e)
- }, Fh.prototype.interfaces_ = function () {
- return []
- }, Fh.prototype.getClass = function () {
- return Fh
- };
- var kh = function (t) {
- function e() {
- var e = arguments[0],
- n = arguments[1];
- t.call(this, e, n)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.setEdgeRing = function (t, e) {
- t.setMinEdgeRing(e)
- }, e.prototype.getNext = function (t) {
- return t.getNextMin()
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(Fh),
- Gh = function (t) {
- function e() {
- var e = arguments[0],
- n = arguments[1];
- t.call(this, e, n)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.buildMinimalRings = function () {
- var t = new lc,
- e = this._startDe;
- do {
- if (null === e.getMinEdgeRing()) {
- var n = new kh(e, this._geometryFactory);
- t.add(n)
- }
- e = e.getNext()
- } while (e !== this._startDe);
- return t
- }, e.prototype.setEdgeRing = function (t, e) {
- t.setEdgeRing(e)
- }, e.prototype.linkDirectedEdgesForMinimalEdgeRings = function () {
- var t = this._startDe;
- do {
- t.getNode().getEdges().linkMinimalDirectedEdges(this), t = t.getNext()
- } while (t !== this._startDe)
- }, e.prototype.getNext = function (t) {
- return t.getNext()
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(Fh),
- qh = function () {
- if (this._label = null, this._isInResult = !1, this._isCovered = !1, this._isCoveredSet = !1, this._isVisited = !1, 0 === arguments.length);
- else if (1 === arguments.length) {
- var t = arguments[0];
- this._label = t
- }
- };
- qh.prototype.setVisited = function (t) {
- this._isVisited = t
- }, qh.prototype.setInResult = function (t) {
- this._isInResult = t
- }, qh.prototype.isCovered = function () {
- return this._isCovered
- }, qh.prototype.isCoveredSet = function () {
- return this._isCoveredSet
- }, qh.prototype.setLabel = function (t) {
- this._label = t
- }, qh.prototype.getLabel = function () {
- return this._label
- }, qh.prototype.setCovered = function (t) {
- this._isCovered = t, this._isCoveredSet = !0
- }, qh.prototype.updateIM = function (t) {
- ql.isTrue(this._label.getGeometryCount() >= 2, "found partial label"), this.computeIM(t)
- }, qh.prototype.isInResult = function () {
- return this._isInResult
- }, qh.prototype.isVisited = function () {
- return this._isVisited
- }, qh.prototype.interfaces_ = function () {
- return []
- }, qh.prototype.getClass = function () {
- return qh
- };
- var Bh = function (t) {
- function e() {
- t.call(this), this._coord = null, this._edges = null;
- var e = arguments[0],
- n = arguments[1];
- this._coord = e, this._edges = n, this._label = new Dh(0, pl.NONE)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.isIncidentEdgeInResult = function () {
- for (var t = this.getEdges().getEdges().iterator(); t.hasNext();) {
- if (t.next().getEdge().isInResult()) return !0
- }
- return !1
- }, e.prototype.isIsolated = function () {
- return 1 === this._label.getGeometryCount()
- }, e.prototype.getCoordinate = function () {
- return this._coord
- }, e.prototype.print = function (t) {
- t.println("node " + this._coord + " lbl: " + this._label)
- }, e.prototype.computeIM = function (t) {}, e.prototype.computeMergedLocation = function (t, e) {
- var n = pl.NONE;
- if (n = this._label.getLocation(e), !t.isNull(e)) {
- var r = t.getLocation(e);
- n !== pl.BOUNDARY && (n = r)
- }
- return n
- }, e.prototype.setLabel = function () {
- if (2 !== arguments.length) return t.prototype.setLabel.apply(this, arguments);
- var e = arguments[0],
- n = arguments[1];
- null === this._label ? this._label = new Dh(e, n) : this._label.setLocation(e, n)
- }, e.prototype.getEdges = function () {
- return this._edges
- }, e.prototype.mergeLabel = function () {
- var t = this;
- if (arguments[0] instanceof e) {
- var n = arguments[0];
- this.mergeLabel(n._label)
- } else if (arguments[0] instanceof Dh)
- for (var r = arguments[0], i = 0; i < 2; i++) {
- var o = t.computeMergedLocation(r, i),
- s = t._label.getLocation(i);
- s === pl.NONE && t._label.setLocation(i, o)
- }
- }, e.prototype.add = function (t) {
- this._edges.insert(t), t.setNode(this)
- }, e.prototype.setLabelBoundary = function (t) {
- if (null === this._label) return null;
- var e = pl.NONE;
- null !== this._label && (e = this._label.getLocation(t));
- var n = null;
- switch (e) {
- case pl.BOUNDARY:
- n = pl.INTERIOR;
- break;
- case pl.INTERIOR:
- default:
- n = pl.BOUNDARY
- }
- this._label.setLocation(t, n)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(qh),
- zh = function () {
- this.nodeMap = new Cc, this.nodeFact = null;
- var t = arguments[0];
- this.nodeFact = t
- };
- zh.prototype.find = function (t) {
- return this.nodeMap.get(t)
- }, zh.prototype.addNode = function () {
- if (arguments[0] instanceof ul) {
- var t = arguments[0],
- e = this.nodeMap.get(t);
- return null === e && (e = this.nodeFact.createNode(t), this.nodeMap.put(t, e)), e
- }
- if (arguments[0] instanceof Bh) {
- var n = arguments[0],
- r = this.nodeMap.get(n.getCoordinate());
- return null === r ? (this.nodeMap.put(n.getCoordinate(), n), n) : (r.mergeLabel(n), r)
- }
- }, zh.prototype.print = function (t) {
- for (var e = this.iterator(); e.hasNext();) {
- e.next().print(t)
- }
- }, zh.prototype.iterator = function () {
- return this.nodeMap.values().iterator()
- }, zh.prototype.values = function () {
- return this.nodeMap.values()
- }, zh.prototype.getBoundaryNodes = function (t) {
- for (var e = new lc, n = this.iterator(); n.hasNext();) {
- var r = n.next();
- r.getLabel().getLocation(t) === pl.BOUNDARY && e.add(r)
- }
- return e
- }, zh.prototype.add = function (t) {
- var e = t.getCoordinate();
- this.addNode(e).add(t)
- }, zh.prototype.interfaces_ = function () {
- return []
- }, zh.prototype.getClass = function () {
- return zh
- };
- var jh = function () {},
- Uh = {
- NE: {
- configurable: !0
- },
- NW: {
- configurable: !0
- },
- SW: {
- configurable: !0
- },
- SE: {
- configurable: !0
- }
- };
- jh.prototype.interfaces_ = function () {
- return []
- }, jh.prototype.getClass = function () {
- return jh
- }, jh.isNorthern = function (t) {
- return t === jh.NE || t === jh.NW
- }, jh.isOpposite = function (t, e) {
- return t !== e && 2 === (t - e + 4) % 4
- }, jh.commonHalfPlane = function (t, e) {
- if (t === e) return t;
- if (2 === (t - e + 4) % 4) return -1;
- var n = t < e ? t : e;
- return 0 === n && 3 === (t > e ? t : e) ? 3 : n
- }, jh.isInHalfPlane = function (t, e) {
- return e === jh.SE ? t === jh.SE || t === jh.SW : t === e || t === e + 1
- }, jh.quadrant = function () {
- if ("number" == typeof arguments[0] && "number" == typeof arguments[1]) {
- var t = arguments[0],
- e = arguments[1];
- if (0 === t && 0 === e) throw new el("Cannot compute the quadrant for point ( " + t + ", " + e + " )");
- return t >= 0 ? e >= 0 ? jh.NE : jh.SE : e >= 0 ? jh.NW : jh.SW
- }
- if (arguments[0] instanceof ul && arguments[1] instanceof ul) {
- var n = arguments[0],
- r = arguments[1];
- if (r.x === n.x && r.y === n.y) throw new el("Cannot compute the quadrant for two identical points " + n);
- return r.x >= n.x ? r.y >= n.y ? jh.NE : jh.SE : r.y >= n.y ? jh.NW : jh.SW
- }
- }, Uh.NE.get = function () {
- return 0
- }, Uh.NW.get = function () {
- return 1
- }, Uh.SW.get = function () {
- return 2
- }, Uh.SE.get = function () {
- return 3
- }, Object.defineProperties(jh, Uh);
- var Vh = function () {
- if (this._edge = null, this._label = null, this._node = null, this._p0 = null, this._p1 = null, this._dx = null, this._dy = null, this._quadrant = null, 1 === arguments.length) {
- var t = arguments[0];
- this._edge = t
- } else if (3 === arguments.length) {
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2],
- i = null;
- this._edge = e, this.init(n, r), this._label = i
- } else if (4 === arguments.length) {
- var o = arguments[0],
- s = arguments[1],
- a = arguments[2],
- u = arguments[3];
- this._edge = o, this.init(s, a), this._label = u
- }
- };
- Vh.prototype.compareDirection = function (t) {
- return this._dx === t._dx && this._dy === t._dy ? 0 : this._quadrant > t._quadrant ? 1 : this._quadrant < t._quadrant ? -1 : Xl.computeOrientation(t._p0, t._p1, this._p1)
- }, Vh.prototype.getDy = function () {
- return this._dy
- }, Vh.prototype.getCoordinate = function () {
- return this._p0
- }, Vh.prototype.setNode = function (t) {
- this._node = t
- }, Vh.prototype.print = function (t) {
- var e = Math.atan2(this._dy, this._dx),
- n = this.getClass().getName(),
- r = n.lastIndexOf("."),
- i = n.substring(r + 1);
- t.print(" " + i + ": " + this._p0 + " - " + this._p1 + " " + this._quadrant + ":" + e + " " + this._label)
- }, Vh.prototype.compareTo = function (t) {
- var e = t;
- return this.compareDirection(e)
- }, Vh.prototype.getDirectedCoordinate = function () {
- return this._p1
- }, Vh.prototype.getDx = function () {
- return this._dx
- }, Vh.prototype.getLabel = function () {
- return this._label
- }, Vh.prototype.getEdge = function () {
- return this._edge
- }, Vh.prototype.getQuadrant = function () {
- return this._quadrant
- }, Vh.prototype.getNode = function () {
- return this._node
- }, Vh.prototype.toString = function () {
- var t = Math.atan2(this._dy, this._dx),
- e = this.getClass().getName(),
- n = e.lastIndexOf(".");
- return " " + e.substring(n + 1) + ": " + this._p0 + " - " + this._p1 + " " + this._quadrant + ":" + t + " " + this._label
- }, Vh.prototype.computeLabel = function (t) {}, Vh.prototype.init = function (t, e) {
- this._p0 = t, this._p1 = e, this._dx = e.x - t.x, this._dy = e.y - t.y, this._quadrant = jh.quadrant(this._dx, this._dy), ql.isTrue(!(0 === this._dx && 0 === this._dy), "EdgeEnd with identical endpoints found")
- }, Vh.prototype.interfaces_ = function () {
- return [il]
- }, Vh.prototype.getClass = function () {
- return Vh
- };
- var Xh = function (t) {
- function e() {
- var e = arguments[0],
- n = arguments[1];
- if (t.call(this, e), this._isForward = null, this._isInResult = !1, this._isVisited = !1, this._sym = null, this._next = null, this._nextMin = null, this._edgeRing = null, this._minEdgeRing = null, this._depth = [0, -999, -999], this._isForward = n, n) this.init(e.getCoordinate(0), e.getCoordinate(1));
- else {
- var r = e.getNumPoints() - 1;
- this.init(e.getCoordinate(r), e.getCoordinate(r - 1))
- }
- this.computeDirectedLabel()
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getNextMin = function () {
- return this._nextMin
- }, e.prototype.getDepth = function (t) {
- return this._depth[t]
- }, e.prototype.setVisited = function (t) {
- this._isVisited = t
- }, e.prototype.computeDirectedLabel = function () {
- this._label = new Dh(this._edge.getLabel()), this._isForward || this._label.flip()
- }, e.prototype.getNext = function () {
- return this._next
- }, e.prototype.setDepth = function (t, e) {
- if (-999 !== this._depth[t] && this._depth[t] !== e) throw new Oh("assigned depths do not match", this.getCoordinate());
- this._depth[t] = e
- }, e.prototype.isInteriorAreaEdge = function () {
- for (var t = this, e = !0, n = 0; n < 2; n++) t._label.isArea(n) && t._label.getLocation(n, Sh.LEFT) === pl.INTERIOR && t._label.getLocation(n, Sh.RIGHT) === pl.INTERIOR || (e = !1);
- return e
- }, e.prototype.setNextMin = function (t) {
- this._nextMin = t
- }, e.prototype.print = function (e) {
- t.prototype.print.call(this, e), e.print(" " + this._depth[Sh.LEFT] + "/" + this._depth[Sh.RIGHT]), e.print(" (" + this.getDepthDelta() + ")"), this._isInResult && e.print(" inResult")
- }, e.prototype.setMinEdgeRing = function (t) {
- this._minEdgeRing = t
- }, e.prototype.isLineEdge = function () {
- var t = this._label.isLine(0) || this._label.isLine(1),
- e = !this._label.isArea(0) || this._label.allPositionsEqual(0, pl.EXTERIOR),
- n = !this._label.isArea(1) || this._label.allPositionsEqual(1, pl.EXTERIOR);
- return t && e && n
- }, e.prototype.setEdgeRing = function (t) {
- this._edgeRing = t
- }, e.prototype.getMinEdgeRing = function () {
- return this._minEdgeRing
- }, e.prototype.getDepthDelta = function () {
- var t = this._edge.getDepthDelta();
- return this._isForward || (t = -t), t
- }, e.prototype.setInResult = function (t) {
- this._isInResult = t
- }, e.prototype.getSym = function () {
- return this._sym
- }, e.prototype.isForward = function () {
- return this._isForward
- }, e.prototype.getEdge = function () {
- return this._edge
- }, e.prototype.printEdge = function (t) {
- this.print(t), t.print(" "), this._isForward ? this._edge.print(t) : this._edge.printReverse(t)
- }, e.prototype.setSym = function (t) {
- this._sym = t
- }, e.prototype.setVisitedEdge = function (t) {
- this.setVisited(t), this._sym.setVisited(t)
- }, e.prototype.setEdgeDepths = function (t, e) {
- var n = this.getEdge().getDepthDelta();
- this._isForward || (n = -n);
- var r = 1;
- t === Sh.LEFT && (r = -1);
- var i = Sh.opposite(t),
- o = e + n * r;
- this.setDepth(t, e), this.setDepth(i, o)
- }, e.prototype.getEdgeRing = function () {
- return this._edgeRing
- }, e.prototype.isInResult = function () {
- return this._isInResult
- }, e.prototype.setNext = function (t) {
- this._next = t
- }, e.prototype.isVisited = function () {
- return this._isVisited
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e.depthFactor = function (t, e) {
- return t === pl.EXTERIOR && e === pl.INTERIOR ? 1 : t === pl.INTERIOR && e === pl.EXTERIOR ? -1 : 0
- }, e
- }(Vh),
- Yh = function () {};
- Yh.prototype.createNode = function (t) {
- return new Bh(t, null)
- }, Yh.prototype.interfaces_ = function () {
- return []
- }, Yh.prototype.getClass = function () {
- return Yh
- };
- var Hh = function () {
- if (this._edges = new lc, this._nodes = null, this._edgeEndList = new lc, 0 === arguments.length) this._nodes = new zh(new Yh);
- else if (1 === arguments.length) {
- var t = arguments[0];
- this._nodes = new zh(t)
- }
- };
- Hh.prototype.printEdges = function (t) {
- t.println("Edges:");
- for (var e = 0; e < this._edges.size(); e++) {
- t.println("edge " + e + ":");
- var n = this._edges.get(e);
- n.print(t), n.eiList.print(t)
- }
- }, Hh.prototype.find = function (t) {
- return this._nodes.find(t)
- }, Hh.prototype.addNode = function () {
- if (arguments[0] instanceof Bh) {
- var t = arguments[0];
- return this._nodes.addNode(t)
- }
- if (arguments[0] instanceof ul) {
- var e = arguments[0];
- return this._nodes.addNode(e)
- }
- }, Hh.prototype.getNodeIterator = function () {
- return this._nodes.iterator()
- }, Hh.prototype.linkResultDirectedEdges = function () {
- for (var t = this._nodes.iterator(); t.hasNext();) {
- t.next().getEdges().linkResultDirectedEdges()
- }
- }, Hh.prototype.debugPrintln = function (t) {
- Pl.out.println(t)
- }, Hh.prototype.isBoundaryNode = function (t, e) {
- var n = this._nodes.find(e);
- if (null === n) return !1;
- var r = n.getLabel();
- return null !== r && r.getLocation(t) === pl.BOUNDARY
- }, Hh.prototype.linkAllDirectedEdges = function () {
- for (var t = this._nodes.iterator(); t.hasNext();) {
- t.next().getEdges().linkAllDirectedEdges()
- }
- }, Hh.prototype.matchInSameDirection = function (t, e, n, r) {
- return !!t.equals(n) && (Xl.computeOrientation(t, e, r) === Xl.COLLINEAR && jh.quadrant(t, e) === jh.quadrant(n, r))
- }, Hh.prototype.getEdgeEnds = function () {
- return this._edgeEndList
- }, Hh.prototype.debugPrint = function (t) {
- Pl.out.print(t)
- }, Hh.prototype.getEdgeIterator = function () {
- return this._edges.iterator()
- }, Hh.prototype.findEdgeInSameDirection = function (t, e) {
- for (var n = this, r = 0; r < this._edges.size(); r++) {
- var i = n._edges.get(r),
- o = i.getCoordinates();
- if (n.matchInSameDirection(t, e, o[0], o[1])) return i;
- if (n.matchInSameDirection(t, e, o[o.length - 1], o[o.length - 2])) return i
- }
- return null
- }, Hh.prototype.insertEdge = function (t) {
- this._edges.add(t)
- }, Hh.prototype.findEdgeEnd = function (t) {
- for (var e = this.getEdgeEnds().iterator(); e.hasNext();) {
- var n = e.next();
- if (n.getEdge() === t) return n
- }
- return null
- }, Hh.prototype.addEdges = function (t) {
- for (var e = this, n = t.iterator(); n.hasNext();) {
- var r = n.next();
- e._edges.add(r);
- var i = new Xh(r, !0),
- o = new Xh(r, !1);
- i.setSym(o), o.setSym(i), e.add(i), e.add(o)
- }
- }, Hh.prototype.add = function (t) {
- this._nodes.add(t), this._edgeEndList.add(t)
- }, Hh.prototype.getNodes = function () {
- return this._nodes.values()
- }, Hh.prototype.findEdge = function (t, e) {
- for (var n = 0; n < this._edges.size(); n++) {
- var r = this._edges.get(n),
- i = r.getCoordinates();
- if (t.equals(i[0]) && e.equals(i[1])) return r
- }
- return null
- }, Hh.prototype.interfaces_ = function () {
- return []
- }, Hh.prototype.getClass = function () {
- return Hh
- }, Hh.linkResultDirectedEdges = function (t) {
- for (var e = t.iterator(); e.hasNext();) {
- e.next().getEdges().linkResultDirectedEdges()
- }
- };
- var Wh = function () {
- this._geometryFactory = null, this._shellList = new lc;
- var t = arguments[0];
- this._geometryFactory = t
- };
- Wh.prototype.sortShellsAndHoles = function (t, e, n) {
- for (var r = t.iterator(); r.hasNext();) {
- var i = r.next();
- i.isHole() ? n.add(i) : e.add(i)
- }
- }, Wh.prototype.computePolygons = function (t) {
- for (var e = new lc, n = t.iterator(); n.hasNext();) {
- var r = n.next().toPolygon(this._geometryFactory);
- e.add(r)
- }
- return e
- }, Wh.prototype.placeFreeHoles = function (t, e) {
- for (var n = e.iterator(); n.hasNext();) {
- var r = n.next();
- if (null === r.getShell()) {
- var i = this.findEdgeRingContaining(r, t);
- if (null === i) throw new Oh("unable to assign hole to a shell", r.getCoordinate(0));
- r.setShell(i)
- }
- }
- }, Wh.prototype.buildMinimalEdgeRings = function (t, e, n) {
- for (var r = new lc, i = t.iterator(); i.hasNext();) {
- var o = i.next();
- if (o.getMaxNodeDegree() > 2) {
- o.linkDirectedEdgesForMinimalEdgeRings();
- var s = o.buildMinimalRings(),
- a = this.findShell(s);
- null !== a ? (this.placePolygonHoles(a, s), e.add(a)) : n.addAll(s)
- } else r.add(o)
- }
- return r
- }, Wh.prototype.containsPoint = function (t) {
- for (var e = this._shellList.iterator(); e.hasNext();) {
- if (e.next().containsPoint(t)) return !0
- }
- return !1
- }, Wh.prototype.buildMaximalEdgeRings = function (t) {
- for (var e = new lc, n = t.iterator(); n.hasNext();) {
- var r = n.next();
- if (r.isInResult() && r.getLabel().isArea() && null === r.getEdgeRing()) {
- var i = new Gh(r, this._geometryFactory);
- e.add(i), i.setInResult()
- }
- }
- return e
- }, Wh.prototype.placePolygonHoles = function (t, e) {
- for (var n = e.iterator(); n.hasNext();) {
- var r = n.next();
- r.isHole() && r.setShell(t)
- }
- }, Wh.prototype.getPolygons = function () {
- return this.computePolygons(this._shellList)
- }, Wh.prototype.findEdgeRingContaining = function (t, e) {
- for (var n = t.getLinearRing(), r = n.getEnvelopeInternal(), i = n.getCoordinateN(0), o = null, s = null, a = e.iterator(); a.hasNext();) {
- var u = a.next(),
- l = u.getLinearRing(),
- c = l.getEnvelopeInternal();
- null !== o && (s = o.getLinearRing().getEnvelopeInternal());
- var h = !1;
- c.contains(r) && Xl.isPointInRing(i, l.getCoordinates()) && (h = !0), h && (null === o || s.contains(c)) && (o = u)
- }
- return o
- }, Wh.prototype.findShell = function (t) {
- for (var e = 0, n = null, r = t.iterator(); r.hasNext();) {
- var i = r.next();
- i.isHole() || (n = i, e++)
- }
- return ql.isTrue(e <= 1, "found two shells in MinimalEdgeRing list"), n
- }, Wh.prototype.add = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.add(t.getEdgeEnds(), t.getNodes())
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- Hh.linkResultDirectedEdges(n);
- var r = this.buildMaximalEdgeRings(e),
- i = new lc,
- o = this.buildMinimalEdgeRings(r, this._shellList, i);
- this.sortShellsAndHoles(o, this._shellList, i), this.placeFreeHoles(this._shellList, i)
- }
- }, Wh.prototype.interfaces_ = function () {
- return []
- }, Wh.prototype.getClass = function () {
- return Wh
- };
- var Jh = function () {};
- Jh.prototype.getBounds = function () {}, Jh.prototype.interfaces_ = function () {
- return []
- }, Jh.prototype.getClass = function () {
- return Jh
- };
- var Zh = function () {
- this._bounds = null, this._item = null;
- var t = arguments[0],
- e = arguments[1];
- this._bounds = t, this._item = e
- };
- Zh.prototype.getItem = function () {
- return this._item
- }, Zh.prototype.getBounds = function () {
- return this._bounds
- }, Zh.prototype.interfaces_ = function () {
- return [Jh, al]
- }, Zh.prototype.getClass = function () {
- return Zh
- };
- var Kh = function () {
- this._size = null, this._items = null, this._size = 0, this._items = new lc, this._items.add(null)
- };
- Kh.prototype.poll = function () {
- if (this.isEmpty()) return null;
- var t = this._items.get(1);
- return this._items.set(1, this._items.get(this._size)), this._size -= 1, this.reorder(1), t
- }, Kh.prototype.size = function () {
- return this._size
- }, Kh.prototype.reorder = function (t) {
- for (var e = this, n = null, r = this._items.get(t); 2 * t <= this._size && ((n = 2 * t) !== e._size && e._items.get(n + 1).compareTo(e._items.get(n)) < 0 && n++, e._items.get(n).compareTo(r) < 0); t = n) e._items.set(t, e._items.get(n));
- this._items.set(t, r)
- }, Kh.prototype.clear = function () {
- this._size = 0, this._items.clear()
- }, Kh.prototype.isEmpty = function () {
- return 0 === this._size
- }, Kh.prototype.add = function (t) {
- this._items.add(null), this._size += 1;
- var e = this._size;
- for (this._items.set(0, t); t.compareTo(this._items.get(Math.trunc(e / 2))) < 0; e /= 2) this._items.set(e, this._items.get(Math.trunc(e / 2)));
- this._items.set(e, t)
- }, Kh.prototype.interfaces_ = function () {
- return []
- }, Kh.prototype.getClass = function () {
- return Kh
- };
- var Qh = function () {};
- Qh.prototype.visitItem = function (t) {}, Qh.prototype.interfaces_ = function () {
- return []
- }, Qh.prototype.getClass = function () {
- return Qh
- };
- var $h = function () {};
- $h.prototype.insert = function (t, e) {}, $h.prototype.remove = function (t, e) {}, $h.prototype.query = function () {}, $h.prototype.interfaces_ = function () {
- return []
- }, $h.prototype.getClass = function () {
- return $h
- };
- var tp = function () {
- if (this._childBoundables = new lc, this._bounds = null, this._level = null, 0 === arguments.length);
- else if (1 === arguments.length) {
- var t = arguments[0];
- this._level = t
- }
- },
- ep = {
- serialVersionUID: {
- configurable: !0
- }
- };
- tp.prototype.getLevel = function () {
- return this._level
- }, tp.prototype.size = function () {
- return this._childBoundables.size()
- }, tp.prototype.getChildBoundables = function () {
- return this._childBoundables
- }, tp.prototype.addChildBoundable = function (t) {
- ql.isTrue(null === this._bounds), this._childBoundables.add(t)
- }, tp.prototype.isEmpty = function () {
- return this._childBoundables.isEmpty()
- }, tp.prototype.getBounds = function () {
- return null === this._bounds && (this._bounds = this.computeBounds()), this._bounds
- }, tp.prototype.interfaces_ = function () {
- return [Jh, al]
- }, tp.prototype.getClass = function () {
- return tp
- }, ep.serialVersionUID.get = function () {
- return 0x5a1e55ec41369800
- }, Object.defineProperties(tp, ep);
- var np = function () {};
- np.reverseOrder = function () {
- return {
- compare: function (t, e) {
- return e.compareTo(t)
- }
- }
- }, np.min = function (t) {
- return np.sort(t), t.get(0)
- }, np.sort = function (t, e) {
- var n = t.toArray();
- e ? Rc.sort(n, e) : Rc.sort(n);
- for (var r = t.iterator(), i = 0, o = n.length; i < o; i++) r.next(), r.set(n[i])
- }, np.singletonList = function (t) {
- var e = new lc;
- return e.add(t), e
- };
- var rp = function () {
- this._boundable1 = null, this._boundable2 = null, this._distance = null, this._itemDistance = null;
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2];
- this._boundable1 = t, this._boundable2 = e, this._itemDistance = n, this._distance = this.distance()
- };
- rp.prototype.expandToQueue = function (t, e) {
- var n = rp.isComposite(this._boundable1),
- r = rp.isComposite(this._boundable2);
- if (n && r) return rp.area(this._boundable1) > rp.area(this._boundable2) ? (this.expand(this._boundable1, this._boundable2, t, e), null) : (this.expand(this._boundable2, this._boundable1, t, e), null);
- if (n) return this.expand(this._boundable1, this._boundable2, t, e), null;
- if (r) return this.expand(this._boundable2, this._boundable1, t, e), null;
- throw new el("neither boundable is composite")
- }, rp.prototype.isLeaves = function () {
- return !(rp.isComposite(this._boundable1) || rp.isComposite(this._boundable2))
- }, rp.prototype.compareTo = function (t) {
- var e = t;
- return this._distance < e._distance ? -1 : this._distance > e._distance ? 1 : 0
- }, rp.prototype.expand = function (t, e, n, r) {
- for (var i = t.getChildBoundables().iterator(); i.hasNext();) {
- var o = i.next(),
- s = new rp(o, e, this._itemDistance);
- s.getDistance() < r && n.add(s)
- }
- }, rp.prototype.getBoundable = function (t) {
- return 0 === t ? this._boundable1 : this._boundable2
- }, rp.prototype.getDistance = function () {
- return this._distance
- }, rp.prototype.distance = function () {
- return this.isLeaves() ? this._itemDistance.distance(this._boundable1, this._boundable2) : this._boundable1.getBounds().distance(this._boundable2.getBounds())
- }, rp.prototype.interfaces_ = function () {
- return [il]
- }, rp.prototype.getClass = function () {
- return rp
- }, rp.area = function (t) {
- return t.getBounds().getArea()
- }, rp.isComposite = function (t) {
- return t instanceof tp
- };
- var ip = function t() {
- if (this._root = null, this._built = !1, this._itemBoundables = new lc, this._nodeCapacity = null, 0 === arguments.length) {
- var e = t.DEFAULT_NODE_CAPACITY;
- this._nodeCapacity = e
- } else if (1 === arguments.length) {
- var n = arguments[0];
- ql.isTrue(n > 1, "Node capacity must be greater than 1"), this._nodeCapacity = n
- }
- },
- op = {
- IntersectsOp: {
- configurable: !0
- },
- serialVersionUID: {
- configurable: !0
- },
- DEFAULT_NODE_CAPACITY: {
- configurable: !0
- }
- };
- ip.prototype.getNodeCapacity = function () {
- return this._nodeCapacity
- }, ip.prototype.lastNode = function (t) {
- return t.get(t.size() - 1)
- }, ip.prototype.size = function () {
- var t = this;
- if (0 === arguments.length) return this.isEmpty() ? 0 : (this.build(), this.size(this._root));
- if (1 === arguments.length) {
- for (var e = arguments[0], n = 0, r = e.getChildBoundables().iterator(); r.hasNext();) {
- var i = r.next();
- i instanceof tp ? n += t.size(i) : i instanceof Zh && (n += 1)
- }
- return n
- }
- }, ip.prototype.removeItem = function (t, e) {
- for (var n = null, r = t.getChildBoundables().iterator(); r.hasNext();) {
- var i = r.next();
- i instanceof Zh && i.getItem() === e && (n = i)
- }
- return null !== n && (t.getChildBoundables().remove(n), !0)
- }, ip.prototype.itemsTree = function () {
- var t = this;
- if (0 === arguments.length) {
- this.build();
- var e = this.itemsTree(this._root);
- return null === e ? new lc : e
- }
- if (1 === arguments.length) {
- for (var n = arguments[0], r = new lc, i = n.getChildBoundables().iterator(); i.hasNext();) {
- var o = i.next();
- if (o instanceof tp) {
- var s = t.itemsTree(o);
- null !== s && r.add(s)
- } else o instanceof Zh ? r.add(o.getItem()) : ql.shouldNeverReachHere()
- }
- return r.size() <= 0 ? null : r
- }
- }, ip.prototype.insert = function (t, e) {
- ql.isTrue(!this._built, "Cannot insert items into an STR packed R-tree after it has been built."), this._itemBoundables.add(new Zh(t, e))
- }, ip.prototype.boundablesAtLevel = function () {
- var t = this;
- if (1 === arguments.length) {
- var e = arguments[0],
- n = new lc;
- return this.boundablesAtLevel(e, this._root, n), n
- }
- if (3 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2];
- if (ql.isTrue(r > -2), i.getLevel() === r) return o.add(i), null;
- for (var s = i.getChildBoundables().iterator(); s.hasNext();) {
- var a = s.next();
- a instanceof tp ? t.boundablesAtLevel(r, a, o) : (ql.isTrue(a instanceof Zh), -1 === r && o.add(a))
- }
- return null
- }
- }, ip.prototype.query = function () {
- var t = this;
- if (1 === arguments.length) {
- var e = arguments[0];
- this.build();
- var n = new lc;
- return this.isEmpty() || this.getIntersectsOp().intersects(this._root.getBounds(), e) && this.query(e, this._root, n), n
- }
- if (2 === arguments.length) {
- var r = arguments[0],
- i = arguments[1];
- if (this.build(), this.isEmpty()) return null;
- this.getIntersectsOp().intersects(this._root.getBounds(), r) && this.query(r, this._root, i)
- } else if (3 === arguments.length)
- if (gl(arguments[2], Qh) && arguments[0] instanceof Object && arguments[1] instanceof tp)
- for (var o = arguments[0], s = arguments[1], a = arguments[2], u = s.getChildBoundables(), l = 0; l < u.size(); l++) {
- var c = u.get(l);
- t.getIntersectsOp().intersects(c.getBounds(), o) && (c instanceof tp ? t.query(o, c, a) : c instanceof Zh ? a.visitItem(c.getItem()) : ql.shouldNeverReachHere())
- } else if (gl(arguments[2], ac) && arguments[0] instanceof Object && arguments[1] instanceof tp)
- for (var h = arguments[0], p = arguments[1], f = arguments[2], g = p.getChildBoundables(), d = 0; d < g.size(); d++) {
- var y = g.get(d);
- t.getIntersectsOp().intersects(y.getBounds(), h) && (y instanceof tp ? t.query(h, y, f) : y instanceof Zh ? f.add(y.getItem()) : ql.shouldNeverReachHere())
- }
- }, ip.prototype.build = function () {
- if (this._built) return null;
- this._root = this._itemBoundables.isEmpty() ? this.createNode(0) : this.createHigherLevels(this._itemBoundables, -1), this._itemBoundables = null, this._built = !0
- }, ip.prototype.getRoot = function () {
- return this.build(), this._root
- }, ip.prototype.remove = function () {
- var t = this;
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return this.build(), !!this.getIntersectsOp().intersects(this._root.getBounds(), e) && this.remove(e, this._root, n)
- }
- if (3 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2],
- s = this.removeItem(i, o);
- if (s) return !0;
- for (var a = null, u = i.getChildBoundables().iterator(); u.hasNext();) {
- var l = u.next();
- if (t.getIntersectsOp().intersects(l.getBounds(), r) && (l instanceof tp && (s = t.remove(r, l, o)))) {
- a = l;
- break
- }
- }
- return null !== a && a.getChildBoundables().isEmpty() && i.getChildBoundables().remove(a), s
- }
- }, ip.prototype.createHigherLevels = function (t, e) {
- ql.isTrue(!t.isEmpty());
- var n = this.createParentBoundables(t, e + 1);
- return 1 === n.size() ? n.get(0) : this.createHigherLevels(n, e + 1)
- }, ip.prototype.depth = function () {
- var t = this;
- if (0 === arguments.length) return this.isEmpty() ? 0 : (this.build(), this.depth(this._root));
- if (1 === arguments.length) {
- for (var e = arguments[0], n = 0, r = e.getChildBoundables().iterator(); r.hasNext();) {
- var i = r.next();
- if (i instanceof tp) {
- var o = t.depth(i);
- o > n && (n = o)
- }
- }
- return n + 1
- }
- }, ip.prototype.createParentBoundables = function (t, e) {
- var n = this;
- ql.isTrue(!t.isEmpty());
- var r = new lc;
- r.add(this.createNode(e));
- var i = new lc(t);
- np.sort(i, this.getComparator());
- for (var o = i.iterator(); o.hasNext();) {
- var s = o.next();
- n.lastNode(r).getChildBoundables().size() === n.getNodeCapacity() && r.add(n.createNode(e)), n.lastNode(r).addChildBoundable(s)
- }
- return r
- }, ip.prototype.isEmpty = function () {
- return this._built ? this._root.isEmpty() : this._itemBoundables.isEmpty()
- }, ip.prototype.interfaces_ = function () {
- return [al]
- }, ip.prototype.getClass = function () {
- return ip
- }, ip.compareDoubles = function (t, e) {
- return t > e ? 1 : t < e ? -1 : 0
- }, op.IntersectsOp.get = function () {
- return sp
- }, op.serialVersionUID.get = function () {
- return -0x35ef64c82d4c5400
- }, op.DEFAULT_NODE_CAPACITY.get = function () {
- return 10
- }, Object.defineProperties(ip, op);
- var sp = function () {},
- ap = function () {};
- ap.prototype.distance = function (t, e) {}, ap.prototype.interfaces_ = function () {
- return []
- }, ap.prototype.getClass = function () {
- return ap
- };
- var up = function (t) {
- function e(n) {
- n = n || e.DEFAULT_NODE_CAPACITY, t.call(this, n)
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- STRtreeNode: {
- configurable: !0
- },
- serialVersionUID: {
- configurable: !0
- },
- xComparator: {
- configurable: !0
- },
- yComparator: {
- configurable: !0
- },
- intersectsOp: {
- configurable: !0
- },
- DEFAULT_NODE_CAPACITY: {
- configurable: !0
- }
- };
- return e.prototype.createParentBoundablesFromVerticalSlices = function (t, e) {
- ql.isTrue(t.length > 0);
- for (var n = new lc, r = 0; r < t.length; r++) n.addAll(this.createParentBoundablesFromVerticalSlice(t[r], e));
- return n
- }, e.prototype.createNode = function (t) {
- return new lp(t)
- }, e.prototype.size = function () {
- return 0 === arguments.length ? t.prototype.size.call(this) : t.prototype.size.apply(this, arguments)
- }, e.prototype.insert = function () {
- if (2 !== arguments.length) return t.prototype.insert.apply(this, arguments);
- var e = arguments[0],
- n = arguments[1];
- if (e.isNull()) return null;
- t.prototype.insert.call(this, e, n)
- }, e.prototype.getIntersectsOp = function () {
- return e.intersectsOp
- }, e.prototype.verticalSlices = function (t, e) {
- for (var n = Math.trunc(Math.ceil(t.size() / e)), r = new Array(e).fill(null), i = t.iterator(), o = 0; o < e; o++) {
- r[o] = new lc;
- for (var s = 0; i.hasNext() && s < n;) {
- var a = i.next();
- r[o].add(a), s++
- }
- }
- return r
- }, e.prototype.query = function () {
- if (1 === arguments.length) {
- var e = arguments[0];
- return t.prototype.query.call(this, e)
- }
- if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- t.prototype.query.call(this, n, r)
- } else if (3 === arguments.length)
- if (gl(arguments[2], Qh) && arguments[0] instanceof Object && arguments[1] instanceof tp) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2];
- t.prototype.query.call(this, i, o, s)
- } else if (gl(arguments[2], ac) && arguments[0] instanceof Object && arguments[1] instanceof tp) {
- var a = arguments[0],
- u = arguments[1],
- l = arguments[2];
- t.prototype.query.call(this, a, u, l)
- }
- }, e.prototype.getComparator = function () {
- return e.yComparator
- }, e.prototype.createParentBoundablesFromVerticalSlice = function (e, n) {
- return t.prototype.createParentBoundables.call(this, e, n)
- }, e.prototype.remove = function () {
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return t.prototype.remove.call(this, e, n)
- }
- return t.prototype.remove.apply(this, arguments)
- }, e.prototype.depth = function () {
- return 0 === arguments.length ? t.prototype.depth.call(this) : t.prototype.depth.apply(this, arguments)
- }, e.prototype.createParentBoundables = function (t, n) {
- ql.isTrue(!t.isEmpty());
- var r = Math.trunc(Math.ceil(t.size() / this.getNodeCapacity())),
- i = new lc(t);
- np.sort(i, e.xComparator);
- var o = this.verticalSlices(i, Math.trunc(Math.ceil(Math.sqrt(r))));
- return this.createParentBoundablesFromVerticalSlices(o, n)
- }, e.prototype.nearestNeighbour = function () {
- if (1 === arguments.length) {
- if (gl(arguments[0], ap)) {
- var t = arguments[0],
- n = new rp(this.getRoot(), this.getRoot(), t);
- return this.nearestNeighbour(n)
- }
- if (arguments[0] instanceof rp) {
- var r = arguments[0];
- return this.nearestNeighbour(r, nl.POSITIVE_INFINITY)
- }
- } else if (2 === arguments.length) {
- if (arguments[0] instanceof e && gl(arguments[1], ap)) {
- var i = arguments[0],
- o = arguments[1],
- s = new rp(this.getRoot(), i.getRoot(), o);
- return this.nearestNeighbour(s)
- }
- if (arguments[0] instanceof rp && "number" == typeof arguments[1]) {
- var a = arguments[0],
- u = arguments[1],
- l = u,
- c = null,
- h = new Kh;
- for (h.add(a); !h.isEmpty() && l > 0;) {
- var p = h.poll(),
- f = p.getDistance();
- if (f >= l) break;
- p.isLeaves() ? (l = f, c = p) : p.expandToQueue(h, l)
- }
- return [c.getBoundable(0).getItem(), c.getBoundable(1).getItem()]
- }
- } else if (3 === arguments.length) {
- var g = arguments[0],
- d = arguments[1],
- y = arguments[2],
- v = new Zh(g, d),
- _ = new rp(this.getRoot(), v, y);
- return this.nearestNeighbour(_)[0]
- }
- }, e.prototype.interfaces_ = function () {
- return [$h, al]
- }, e.prototype.getClass = function () {
- return e
- }, e.centreX = function (t) {
- return e.avg(t.getMinX(), t.getMaxX())
- }, e.avg = function (t, e) {
- return (t + e) / 2
- }, e.centreY = function (t) {
- return e.avg(t.getMinY(), t.getMaxY())
- }, n.STRtreeNode.get = function () {
- return lp
- }, n.serialVersionUID.get = function () {
- return 0x39920f7d5f261e0
- }, n.xComparator.get = function () {
- return {
- interfaces_: function () {
- return [sl]
- },
- compare: function (n, r) {
- return t.compareDoubles(e.centreX(n.getBounds()), e.centreX(r.getBounds()))
- }
- }
- }, n.yComparator.get = function () {
- return {
- interfaces_: function () {
- return [sl]
- },
- compare: function (n, r) {
- return t.compareDoubles(e.centreY(n.getBounds()), e.centreY(r.getBounds()))
- }
- }
- }, n.intersectsOp.get = function () {
- return {
- interfaces_: function () {
- return [t.IntersectsOp]
- },
- intersects: function (t, e) {
- return t.intersects(e)
- }
- }
- }, n.DEFAULT_NODE_CAPACITY.get = function () {
- return 10
- }, Object.defineProperties(e, n), e
- }(ip),
- lp = function (t) {
- function e() {
- var e = arguments[0];
- t.call(this, e)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.computeBounds = function () {
- for (var t = null, e = this.getChildBoundables().iterator(); e.hasNext();) {
- var n = e.next();
- null === t ? t = new Ll(n.getBounds()) : t.expandToInclude(n.getBounds())
- }
- return t
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(tp),
- cp = function () {};
- cp.prototype.interfaces_ = function () {
- return []
- }, cp.prototype.getClass = function () {
- return cp
- }, cp.relativeSign = function (t, e) {
- return t < e ? -1 : t > e ? 1 : 0
- }, cp.compare = function (t, e, n) {
- if (e.equals2D(n)) return 0;
- var r = cp.relativeSign(e.x, n.x),
- i = cp.relativeSign(e.y, n.y);
- switch (t) {
- case 0:
- return cp.compareValue(r, i);
- case 1:
- return cp.compareValue(i, r);
- case 2:
- return cp.compareValue(i, -r);
- case 3:
- return cp.compareValue(-r, i);
- case 4:
- return cp.compareValue(-r, -i);
- case 5:
- return cp.compareValue(-i, -r);
- case 6:
- return cp.compareValue(-i, r);
- case 7:
- return cp.compareValue(r, -i)
- }
- return ql.shouldNeverReachHere("invalid octant value"), 0
- }, cp.compareValue = function (t, e) {
- return t < 0 ? -1 : t > 0 ? 1 : e < 0 ? -1 : e > 0 ? 1 : 0
- };
- var hp = function () {
- this._segString = null, this.coord = null, this.segmentIndex = null, this._segmentOctant = null, this._isInterior = null;
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2],
- r = arguments[3];
- this._segString = t, this.coord = new ul(e), this.segmentIndex = n, this._segmentOctant = r, this._isInterior = !e.equals2D(t.getCoordinate(n))
- };
- hp.prototype.getCoordinate = function () {
- return this.coord
- }, hp.prototype.print = function (t) {
- t.print(this.coord), t.print(" seg # = " + this.segmentIndex)
- }, hp.prototype.compareTo = function (t) {
- var e = t;
- return this.segmentIndex < e.segmentIndex ? -1 : this.segmentIndex > e.segmentIndex ? 1 : this.coord.equals2D(e.coord) ? 0 : cp.compare(this._segmentOctant, this.coord, e.coord)
- }, hp.prototype.isEndPoint = function (t) {
- return 0 === this.segmentIndex && !this._isInterior || this.segmentIndex === t
- }, hp.prototype.isInterior = function () {
- return this._isInterior
- }, hp.prototype.interfaces_ = function () {
- return [il]
- }, hp.prototype.getClass = function () {
- return hp
- };
- var pp = function () {
- this._nodeMap = new Cc, this._edge = null;
- var t = arguments[0];
- this._edge = t
- };
- pp.prototype.getSplitCoordinates = function () {
- var t = new hc;
- this.addEndpoints();
- for (var e = this.iterator(), n = e.next(); e.hasNext();) {
- var r = e.next();
- this.addEdgeCoordinates(n, r, t), n = r
- }
- return t.toCoordinateArray()
- }, pp.prototype.addCollapsedNodes = function () {
- var t = new lc;
- this.findCollapsesFromInsertedNodes(t), this.findCollapsesFromExistingVertices(t);
- for (var e = t.iterator(); e.hasNext();) {
- var n = e.next().intValue();
- this.add(this._edge.getCoordinate(n), n)
- }
- }, pp.prototype.print = function (t) {
- t.println("Intersections:");
- for (var e = this.iterator(); e.hasNext();) {
- e.next().print(t)
- }
- }, pp.prototype.findCollapsesFromExistingVertices = function (t) {
- for (var e = 0; e < this._edge.size() - 2; e++) {
- var n = this._edge.getCoordinate(e),
- r = this._edge.getCoordinate(e + 2);
- n.equals2D(r) && t.add(new _l(e + 1))
- }
- }, pp.prototype.addEdgeCoordinates = function (t, e, n) {
- var r = this._edge.getCoordinate(e.segmentIndex),
- i = e.isInterior() || !e.coord.equals2D(r);
- n.add(new ul(t.coord), !1);
- for (var o = t.segmentIndex + 1; o <= e.segmentIndex; o++) n.add(this._edge.getCoordinate(o));
- i && n.add(new ul(e.coord))
- }, pp.prototype.iterator = function () {
- return this._nodeMap.values().iterator()
- }, pp.prototype.addSplitEdges = function (t) {
- this.addEndpoints(), this.addCollapsedNodes();
- for (var e = this.iterator(), n = e.next(); e.hasNext();) {
- var r = e.next(),
- i = this.createSplitEdge(n, r);
- t.add(i), n = r
- }
- }, pp.prototype.findCollapseIndex = function (t, e, n) {
- if (!t.coord.equals2D(e.coord)) return !1;
- var r = e.segmentIndex - t.segmentIndex;
- return e.isInterior() || r--, 1 === r && (n[0] = t.segmentIndex + 1, !0)
- }, pp.prototype.findCollapsesFromInsertedNodes = function (t) {
- for (var e = new Array(1).fill(null), n = this.iterator(), r = n.next(); n.hasNext();) {
- var i = n.next();
- this.findCollapseIndex(r, i, e) && t.add(new _l(e[0])), r = i
- }
- }, pp.prototype.getEdge = function () {
- return this._edge
- }, pp.prototype.addEndpoints = function () {
- var t = this._edge.size() - 1;
- this.add(this._edge.getCoordinate(0), 0), this.add(this._edge.getCoordinate(t), t)
- }, pp.prototype.createSplitEdge = function (t, e) {
- var n = e.segmentIndex - t.segmentIndex + 2,
- r = this._edge.getCoordinate(e.segmentIndex),
- i = e.isInterior() || !e.coord.equals2D(r);
- i || n--;
- var o = new Array(n).fill(null),
- s = 0;
- o[s++] = new ul(t.coord);
- for (var a = t.segmentIndex + 1; a <= e.segmentIndex; a++) o[s++] = this._edge.getCoordinate(a);
- return i && (o[s] = new ul(e.coord)), new yp(o, this._edge.getData())
- }, pp.prototype.add = function (t, e) {
- var n = new hp(this._edge, t, e, this._edge.getSegmentOctant(e)),
- r = this._nodeMap.get(n);
- return null !== r ? (ql.isTrue(r.coord.equals2D(t), "Found equal nodes with different coordinates"), r) : (this._nodeMap.put(n, n), n)
- }, pp.prototype.checkSplitEdgesCorrectness = function (t) {
- var e = this._edge.getCoordinates(),
- n = t.get(0).getCoordinate(0);
- if (!n.equals2D(e[0])) throw new kl("bad split edge start point at " + n);
- var r = t.get(t.size() - 1).getCoordinates(),
- i = r[r.length - 1];
- if (!i.equals2D(e[e.length - 1])) throw new kl("bad split edge end point at " + i)
- }, pp.prototype.interfaces_ = function () {
- return []
- }, pp.prototype.getClass = function () {
- return pp
- };
- var fp = function () {};
- fp.prototype.interfaces_ = function () {
- return []
- }, fp.prototype.getClass = function () {
- return fp
- }, fp.octant = function () {
- if ("number" == typeof arguments[0] && "number" == typeof arguments[1]) {
- var t = arguments[0],
- e = arguments[1];
- if (0 === t && 0 === e) throw new el("Cannot compute the octant for point ( " + t + ", " + e + " )");
- var n = Math.abs(t),
- r = Math.abs(e);
- return t >= 0 ? e >= 0 ? n >= r ? 0 : 1 : n >= r ? 7 : 6 : e >= 0 ? n >= r ? 3 : 2 : n >= r ? 4 : 5
- }
- if (arguments[0] instanceof ul && arguments[1] instanceof ul) {
- var i = arguments[0],
- o = arguments[1],
- s = o.x - i.x,
- a = o.y - i.y;
- if (0 === s && 0 === a) throw new el("Cannot compute the octant for two identical points " + i);
- return fp.octant(s, a)
- }
- };
- var gp = function () {};
- gp.prototype.getCoordinates = function () {}, gp.prototype.size = function () {}, gp.prototype.getCoordinate = function (t) {}, gp.prototype.isClosed = function () {}, gp.prototype.setData = function (t) {}, gp.prototype.getData = function () {}, gp.prototype.interfaces_ = function () {
- return []
- }, gp.prototype.getClass = function () {
- return gp
- };
- var dp = function () {};
- dp.prototype.addIntersection = function (t, e) {}, dp.prototype.interfaces_ = function () {
- return [gp]
- }, dp.prototype.getClass = function () {
- return dp
- };
- var yp = function () {
- this._nodeList = new pp(this), this._pts = null, this._data = null;
- var t = arguments[0],
- e = arguments[1];
- this._pts = t, this._data = e
- };
- yp.prototype.getCoordinates = function () {
- return this._pts
- }, yp.prototype.size = function () {
- return this._pts.length
- }, yp.prototype.getCoordinate = function (t) {
- return this._pts[t]
- }, yp.prototype.isClosed = function () {
- return this._pts[0].equals(this._pts[this._pts.length - 1])
- }, yp.prototype.getSegmentOctant = function (t) {
- return t === this._pts.length - 1 ? -1 : this.safeOctant(this.getCoordinate(t), this.getCoordinate(t + 1))
- }, yp.prototype.setData = function (t) {
- this._data = t
- }, yp.prototype.safeOctant = function (t, e) {
- return t.equals2D(e) ? 0 : fp.octant(t, e)
- }, yp.prototype.getData = function () {
- return this._data
- }, yp.prototype.addIntersection = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- this.addIntersectionNode(t, e)
- } else if (4 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = arguments[3],
- o = new ul(n.getIntersection(i));
- this.addIntersection(o, r)
- }
- }, yp.prototype.toString = function () {
- return Fl.toLineString(new lh(this._pts))
- }, yp.prototype.getNodeList = function () {
- return this._nodeList
- }, yp.prototype.addIntersectionNode = function (t, e) {
- var n = e,
- r = n + 1;
- if (r < this._pts.length) {
- var i = this._pts[r];
- t.equals2D(i) && (n = r)
- }
- return this._nodeList.add(t, n)
- }, yp.prototype.addIntersections = function (t, e, n) {
- for (var r = 0; r < t.getIntersectionNum(); r++) this.addIntersection(t, e, n, r)
- }, yp.prototype.interfaces_ = function () {
- return [dp]
- }, yp.prototype.getClass = function () {
- return yp
- }, yp.getNodedSubstrings = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = new lc;
- return yp.getNodedSubstrings(t, e), e
- }
- if (2 === arguments.length)
- for (var n = arguments[0], r = arguments[1], i = n.iterator(); i.hasNext();) {
- var o = i.next();
- o.getNodeList().addSplitEdges(r)
- }
- };
- var vp = function () {
- if (this.p0 = null, this.p1 = null, 0 === arguments.length) this.p0 = new ul, this.p1 = new ul;
- else if (1 === arguments.length) {
- var t = arguments[0];
- this.p0 = new ul(t.p0), this.p1 = new ul(t.p1)
- } else if (2 === arguments.length) this.p0 = arguments[0], this.p1 = arguments[1];
- else if (4 === arguments.length) {
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2],
- i = arguments[3];
- this.p0 = new ul(e, n), this.p1 = new ul(r, i)
- }
- },
- _p = {
- serialVersionUID: {
- configurable: !0
- }
- };
- vp.prototype.minX = function () {
- return Math.min(this.p0.x, this.p1.x)
- }, vp.prototype.orientationIndex = function () {
- if (arguments[0] instanceof vp) {
- var t = arguments[0],
- e = Xl.orientationIndex(this.p0, this.p1, t.p0),
- n = Xl.orientationIndex(this.p0, this.p1, t.p1);
- return e >= 0 && n >= 0 || e <= 0 && n <= 0 ? Math.max(e, n) : 0
- }
- if (arguments[0] instanceof ul) {
- var r = arguments[0];
- return Xl.orientationIndex(this.p0, this.p1, r)
- }
- }, vp.prototype.toGeometry = function (t) {
- return t.createLineString([this.p0, this.p1])
- }, vp.prototype.isVertical = function () {
- return this.p0.x === this.p1.x
- }, vp.prototype.equals = function (t) {
- if (!(t instanceof vp)) return !1;
- var e = t;
- return this.p0.equals(e.p0) && this.p1.equals(e.p1)
- }, vp.prototype.intersection = function (t) {
- var e = new jl;
- return e.computeIntersection(this.p0, this.p1, t.p0, t.p1), e.hasIntersection() ? e.getIntersection(0) : null
- }, vp.prototype.project = function () {
- if (arguments[0] instanceof ul) {
- var t = arguments[0];
- if (t.equals(this.p0) || t.equals(this.p1)) return new ul(t);
- var e = this.projectionFactor(t),
- n = new ul;
- return n.x = this.p0.x + e * (this.p1.x - this.p0.x), n.y = this.p0.y + e * (this.p1.y - this.p0.y), n
- }
- if (arguments[0] instanceof vp) {
- var r = arguments[0],
- i = this.projectionFactor(r.p0),
- o = this.projectionFactor(r.p1);
- if (i >= 1 && o >= 1) return null;
- if (i <= 0 && o <= 0) return null;
- var s = this.project(r.p0);
- i < 0 && (s = this.p0), i > 1 && (s = this.p1);
- var a = this.project(r.p1);
- return o < 0 && (a = this.p0), o > 1 && (a = this.p1), new vp(s, a)
- }
- }, vp.prototype.normalize = function () {
- this.p1.compareTo(this.p0) < 0 && this.reverse()
- }, vp.prototype.angle = function () {
- return Math.atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x)
- }, vp.prototype.getCoordinate = function (t) {
- return 0 === t ? this.p0 : this.p1
- }, vp.prototype.distancePerpendicular = function (t) {
- return Xl.distancePointLinePerpendicular(t, this.p0, this.p1)
- }, vp.prototype.minY = function () {
- return Math.min(this.p0.y, this.p1.y)
- }, vp.prototype.midPoint = function () {
- return vp.midPoint(this.p0, this.p1)
- }, vp.prototype.projectionFactor = function (t) {
- if (t.equals(this.p0)) return 0;
- if (t.equals(this.p1)) return 1;
- var e = this.p1.x - this.p0.x,
- n = this.p1.y - this.p0.y,
- r = e * e + n * n;
- return r <= 0 ? nl.NaN : ((t.x - this.p0.x) * e + (t.y - this.p0.y) * n) / r
- }, vp.prototype.closestPoints = function (t) {
- var e = this.intersection(t);
- if (null !== e) return [e, e];
- var n = new Array(2).fill(null),
- r = nl.MAX_VALUE,
- i = null,
- o = this.closestPoint(t.p0);
- r = o.distance(t.p0), n[0] = o, n[1] = t.p0;
- var s = this.closestPoint(t.p1);
- (i = s.distance(t.p1)) < r && (r = i, n[0] = s, n[1] = t.p1);
- var a = t.closestPoint(this.p0);
- (i = a.distance(this.p0)) < r && (r = i, n[0] = this.p0, n[1] = a);
- var u = t.closestPoint(this.p1);
- return (i = u.distance(this.p1)) < r && (r = i, n[0] = this.p1, n[1] = u), n
- }, vp.prototype.closestPoint = function (t) {
- var e = this.projectionFactor(t);
- return e > 0 && e < 1 ? this.project(t) : this.p0.distance(t) < this.p1.distance(t) ? this.p0 : this.p1
- }, vp.prototype.maxX = function () {
- return Math.max(this.p0.x, this.p1.x)
- }, vp.prototype.getLength = function () {
- return this.p0.distance(this.p1)
- }, vp.prototype.compareTo = function (t) {
- var e = t,
- n = this.p0.compareTo(e.p0);
- return 0 !== n ? n : this.p1.compareTo(e.p1)
- }, vp.prototype.reverse = function () {
- var t = this.p0;
- this.p0 = this.p1, this.p1 = t
- }, vp.prototype.equalsTopo = function (t) {
- return this.p0.equals(t.p0) && (this.p1.equals(t.p1) || this.p0.equals(t.p1)) && this.p1.equals(t.p0)
- }, vp.prototype.lineIntersection = function (t) {
- try {
- return Ml.intersection(this.p0, this.p1, t.p0, t.p1)
- } catch (t) {
- if (!(t instanceof Cl)) throw t
- }
- return null
- }, vp.prototype.maxY = function () {
- return Math.max(this.p0.y, this.p1.y)
- }, vp.prototype.pointAlongOffset = function (t, e) {
- var n = this.p0.x + t * (this.p1.x - this.p0.x),
- r = this.p0.y + t * (this.p1.y - this.p0.y),
- i = this.p1.x - this.p0.x,
- o = this.p1.y - this.p0.y,
- s = Math.sqrt(i * i + o * o),
- a = 0,
- u = 0;
- if (0 !== e) {
- if (s <= 0) throw new Error("Cannot compute offset from zero-length line segment");
- a = e * i / s, u = e * o / s
- }
- return new ul(n - u, r + a)
- }, vp.prototype.setCoordinates = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.setCoordinates(t.p0, t.p1)
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- this.p0.x = e.x, this.p0.y = e.y, this.p1.x = n.x, this.p1.y = n.y
- }
- }, vp.prototype.segmentFraction = function (t) {
- var e = this.projectionFactor(t);
- return e < 0 ? e = 0 : (e > 1 || nl.isNaN(e)) && (e = 1), e
- }, vp.prototype.toString = function () {
- return "LINESTRING( " + this.p0.x + " " + this.p0.y + ", " + this.p1.x + " " + this.p1.y + ")"
- }, vp.prototype.isHorizontal = function () {
- return this.p0.y === this.p1.y
- }, vp.prototype.distance = function () {
- if (arguments[0] instanceof vp) {
- var t = arguments[0];
- return Xl.distanceLineLine(this.p0, this.p1, t.p0, t.p1)
- }
- if (arguments[0] instanceof ul) {
- var e = arguments[0];
- return Xl.distancePointLine(e, this.p0, this.p1)
- }
- }, vp.prototype.pointAlong = function (t) {
- var e = new ul;
- return e.x = this.p0.x + t * (this.p1.x - this.p0.x), e.y = this.p0.y + t * (this.p1.y - this.p0.y), e
- }, vp.prototype.hashCode = function () {
- var t = nl.doubleToLongBits(this.p0.x);
- t ^= 31 * nl.doubleToLongBits(this.p0.y);
- var e = Math.trunc(t) ^ Math.trunc(t >> 32),
- n = nl.doubleToLongBits(this.p1.x);
- return n ^= 31 * nl.doubleToLongBits(this.p1.y), e ^ (Math.trunc(n) ^ Math.trunc(n >> 32))
- }, vp.prototype.interfaces_ = function () {
- return [il, al]
- }, vp.prototype.getClass = function () {
- return vp
- }, vp.midPoint = function (t, e) {
- return new ul((t.x + e.x) / 2, (t.y + e.y) / 2)
- }, _p.serialVersionUID.get = function () {
- return 0x2d2172135f411c00
- }, Object.defineProperties(vp, _p);
- var mp = function () {
- this.tempEnv1 = new Ll, this.tempEnv2 = new Ll, this._overlapSeg1 = new vp, this._overlapSeg2 = new vp
- };
- mp.prototype.overlap = function () {
- if (2 === arguments.length);
- else if (4 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2],
- r = arguments[3];
- t.getLineSegment(e, this._overlapSeg1), n.getLineSegment(r, this._overlapSeg2), this.overlap(this._overlapSeg1, this._overlapSeg2)
- }
- }, mp.prototype.interfaces_ = function () {
- return []
- }, mp.prototype.getClass = function () {
- return mp
- };
- var xp = function () {
- this._pts = null, this._start = null, this._end = null, this._env = null, this._context = null, this._id = null;
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2],
- r = arguments[3];
- this._pts = t, this._start = e, this._end = n, this._context = r
- };
- xp.prototype.getLineSegment = function (t, e) {
- e.p0 = this._pts[t], e.p1 = this._pts[t + 1]
- }, xp.prototype.computeSelect = function (t, e, n, r) {
- var i = this._pts[e],
- o = this._pts[n];
- if (r.tempEnv1.init(i, o), n - e == 1) return r.select(this, e), null;
- if (!t.intersects(r.tempEnv1)) return null;
- var s = Math.trunc((e + n) / 2);
- e < s && this.computeSelect(t, e, s, r), s < n && this.computeSelect(t, s, n, r)
- }, xp.prototype.getCoordinates = function () {
- for (var t = new Array(this._end - this._start + 1).fill(null), e = 0, n = this._start; n <= this._end; n++) t[e++] = this._pts[n];
- return t
- }, xp.prototype.computeOverlaps = function (t, e) {
- this.computeOverlapsInternal(this._start, this._end, t, t._start, t._end, e)
- }, xp.prototype.setId = function (t) {
- this._id = t
- }, xp.prototype.select = function (t, e) {
- this.computeSelect(t, this._start, this._end, e)
- }, xp.prototype.getEnvelope = function () {
- if (null === this._env) {
- var t = this._pts[this._start],
- e = this._pts[this._end];
- this._env = new Ll(t, e)
- }
- return this._env
- }, xp.prototype.getEndIndex = function () {
- return this._end
- }, xp.prototype.getStartIndex = function () {
- return this._start
- }, xp.prototype.getContext = function () {
- return this._context
- }, xp.prototype.getId = function () {
- return this._id
- }, xp.prototype.computeOverlapsInternal = function (t, e, n, r, i, o) {
- var s = this._pts[t],
- a = this._pts[e],
- u = n._pts[r],
- l = n._pts[i];
- if (e - t == 1 && i - r == 1) return o.overlap(this, t, n, r), null;
- if (o.tempEnv1.init(s, a), o.tempEnv2.init(u, l), !o.tempEnv1.intersects(o.tempEnv2)) return null;
- var c = Math.trunc((t + e) / 2),
- h = Math.trunc((r + i) / 2);
- t < c && (r < h && this.computeOverlapsInternal(t, c, n, r, h, o), h < i && this.computeOverlapsInternal(t, c, n, h, i, o)), c < e && (r < h && this.computeOverlapsInternal(c, e, n, r, h, o), h < i && this.computeOverlapsInternal(c, e, n, h, i, o))
- }, xp.prototype.interfaces_ = function () {
- return []
- }, xp.prototype.getClass = function () {
- return xp
- };
- var Ep = function () {};
- Ep.prototype.interfaces_ = function () {
- return []
- }, Ep.prototype.getClass = function () {
- return Ep
- }, Ep.getChainStartIndices = function (t) {
- var e = 0,
- n = new lc;
- n.add(new _l(e));
- do {
- var r = Ep.findChainEnd(t, e);
- n.add(new _l(r)), e = r
- } while (e < t.length - 1);
- return Ep.toIntArray(n)
- }, Ep.findChainEnd = function (t, e) {
- for (var n = e; n < t.length - 1 && t[n].equals2D(t[n + 1]);) n++;
- if (n >= t.length - 1) return t.length - 1;
- for (var r = jh.quadrant(t[n], t[n + 1]), i = e + 1; i < t.length;) {
- if (!t[i - 1].equals2D(t[i]))
- if (jh.quadrant(t[i - 1], t[i]) !== r) break;
- i++
- }
- return i - 1
- }, Ep.getChains = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return Ep.getChains(t, null)
- }
- if (2 === arguments.length) {
- for (var e = arguments[0], n = arguments[1], r = new lc, i = Ep.getChainStartIndices(e), o = 0; o < i.length - 1; o++) {
- var s = new xp(e, i[o], i[o + 1], n);
- r.add(s)
- }
- return r
- }
- }, Ep.toIntArray = function (t) {
- for (var e = new Array(t.size()).fill(null), n = 0; n < e.length; n++) e[n] = t.get(n).intValue();
- return e
- };
- var bp = function () {};
- bp.prototype.computeNodes = function (t) {}, bp.prototype.getNodedSubstrings = function () {}, bp.prototype.interfaces_ = function () {
- return []
- }, bp.prototype.getClass = function () {
- return bp
- };
- var wp = function () {
- if (this._segInt = null, 0 === arguments.length);
- else if (1 === arguments.length) {
- var t = arguments[0];
- this.setSegmentIntersector(t)
- }
- };
- wp.prototype.setSegmentIntersector = function (t) {
- this._segInt = t
- }, wp.prototype.interfaces_ = function () {
- return [bp]
- }, wp.prototype.getClass = function () {
- return wp
- };
- var Ip = function (t) {
- function e(e) {
- e ? t.call(this, e) : t.call(this), this._monoChains = new lc, this._index = new up, this._idCounter = 0, this._nodedSegStrings = null, this._nOverlaps = 0
- }
- t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
- var n = {
- SegmentOverlapAction: {
- configurable: !0
- }
- };
- return e.prototype.getMonotoneChains = function () {
- return this._monoChains
- }, e.prototype.getNodedSubstrings = function () {
- return yp.getNodedSubstrings(this._nodedSegStrings)
- }, e.prototype.getIndex = function () {
- return this._index
- }, e.prototype.add = function (t) {
- for (var e = this, n = Ep.getChains(t.getCoordinates(), t).iterator(); n.hasNext();) {
- var r = n.next();
- r.setId(e._idCounter++), e._index.insert(r.getEnvelope(), r), e._monoChains.add(r)
- }
- }, e.prototype.computeNodes = function (t) {
- this._nodedSegStrings = t;
- for (var e = t.iterator(); e.hasNext();) this.add(e.next());
- this.intersectChains()
- }, e.prototype.intersectChains = function () {
- for (var t = this, e = new Np(this._segInt), n = this._monoChains.iterator(); n.hasNext();)
- for (var r = n.next(), i = t._index.query(r.getEnvelope()).iterator(); i.hasNext();) {
- var o = i.next();
- if (o.getId() > r.getId() && (r.computeOverlaps(o, e), t._nOverlaps++), t._segInt.isDone()) return null
- }
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, n.SegmentOverlapAction.get = function () {
- return Np
- }, Object.defineProperties(e, n), e
- }(wp),
- Np = function (t) {
- function e() {
- t.call(this), this._si = null;
- var e = arguments[0];
- this._si = e
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.overlap = function () {
- if (4 !== arguments.length) return t.prototype.overlap.apply(this, arguments);
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2],
- i = arguments[3],
- o = e.getContext(),
- s = r.getContext();
- this._si.processIntersections(o, n, s, i)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(mp),
- Sp = function t() {
- if (this._quadrantSegments = t.DEFAULT_QUADRANT_SEGMENTS, this._endCapStyle = t.CAP_ROUND, this._joinStyle = t.JOIN_ROUND, this._mitreLimit = t.DEFAULT_MITRE_LIMIT, this._isSingleSided = !1, this._simplifyFactor = t.DEFAULT_SIMPLIFY_FACTOR, 0 === arguments.length);
- else if (1 === arguments.length) {
- var e = arguments[0];
- this.setQuadrantSegments(e)
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1];
- this.setQuadrantSegments(n), this.setEndCapStyle(r)
- } else if (4 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2],
- a = arguments[3];
- this.setQuadrantSegments(i), this.setEndCapStyle(o), this.setJoinStyle(s), this.setMitreLimit(a)
- }
- },
- Cp = {
- CAP_ROUND: {
- configurable: !0
- },
- CAP_FLAT: {
- configurable: !0
- },
- CAP_SQUARE: {
- configurable: !0
- },
- JOIN_ROUND: {
- configurable: !0
- },
- JOIN_MITRE: {
- configurable: !0
- },
- JOIN_BEVEL: {
- configurable: !0
- },
- DEFAULT_QUADRANT_SEGMENTS: {
- configurable: !0
- },
- DEFAULT_MITRE_LIMIT: {
- configurable: !0
- },
- DEFAULT_SIMPLIFY_FACTOR: {
- configurable: !0
- }
- };
- Sp.prototype.getEndCapStyle = function () {
- return this._endCapStyle
- }, Sp.prototype.isSingleSided = function () {
- return this._isSingleSided
- }, Sp.prototype.setQuadrantSegments = function (t) {
- this._quadrantSegments = t, 0 === this._quadrantSegments && (this._joinStyle = Sp.JOIN_BEVEL), this._quadrantSegments < 0 && (this._joinStyle = Sp.JOIN_MITRE, this._mitreLimit = Math.abs(this._quadrantSegments)), t <= 0 && (this._quadrantSegments = 1), this._joinStyle !== Sp.JOIN_ROUND && (this._quadrantSegments = Sp.DEFAULT_QUADRANT_SEGMENTS)
- }, Sp.prototype.getJoinStyle = function () {
- return this._joinStyle
- }, Sp.prototype.setJoinStyle = function (t) {
- this._joinStyle = t
- }, Sp.prototype.setSimplifyFactor = function (t) {
- this._simplifyFactor = t < 0 ? 0 : t
- }, Sp.prototype.getSimplifyFactor = function () {
- return this._simplifyFactor
- }, Sp.prototype.getQuadrantSegments = function () {
- return this._quadrantSegments
- }, Sp.prototype.setEndCapStyle = function (t) {
- this._endCapStyle = t
- }, Sp.prototype.getMitreLimit = function () {
- return this._mitreLimit
- }, Sp.prototype.setMitreLimit = function (t) {
- this._mitreLimit = t
- }, Sp.prototype.setSingleSided = function (t) {
- this._isSingleSided = t
- }, Sp.prototype.interfaces_ = function () {
- return []
- }, Sp.prototype.getClass = function () {
- return Sp
- }, Sp.bufferDistanceError = function (t) {
- var e = Math.PI / 2 / t;
- return 1 - Math.cos(e / 2)
- }, Cp.CAP_ROUND.get = function () {
- return 1
- }, Cp.CAP_FLAT.get = function () {
- return 2
- }, Cp.CAP_SQUARE.get = function () {
- return 3
- }, Cp.JOIN_ROUND.get = function () {
- return 1
- }, Cp.JOIN_MITRE.get = function () {
- return 2
- }, Cp.JOIN_BEVEL.get = function () {
- return 3
- }, Cp.DEFAULT_QUADRANT_SEGMENTS.get = function () {
- return 8
- }, Cp.DEFAULT_MITRE_LIMIT.get = function () {
- return 5
- }, Cp.DEFAULT_SIMPLIFY_FACTOR.get = function () {
- return .01
- }, Object.defineProperties(Sp, Cp);
- var Pp = function (t) {
- this._distanceTol = null, this._isDeleted = null, this._angleOrientation = Xl.COUNTERCLOCKWISE, this._inputLine = t || null
- },
- Mp = {
- INIT: {
- configurable: !0
- },
- DELETE: {
- configurable: !0
- },
- KEEP: {
- configurable: !0
- },
- NUM_PTS_TO_CHECK: {
- configurable: !0
- }
- };
- Pp.prototype.isDeletable = function (t, e, n, r) {
- var i = this._inputLine[t],
- o = this._inputLine[e],
- s = this._inputLine[n];
- return !!this.isConcave(i, o, s) && (!!this.isShallow(i, o, s, r) && this.isShallowSampled(i, o, t, n, r))
- }, Pp.prototype.deleteShallowConcavities = function () {
- for (var t = this, e = 1, n = this.findNextNonDeletedIndex(e), r = this.findNextNonDeletedIndex(n), i = !1; r < this._inputLine.length;) {
- var o = !1;
- t.isDeletable(e, n, r, t._distanceTol) && (t._isDeleted[n] = Pp.DELETE, o = !0, i = !0), e = o ? r : n, n = t.findNextNonDeletedIndex(e), r = t.findNextNonDeletedIndex(n)
- }
- return i
- }, Pp.prototype.isShallowConcavity = function (t, e, n, r) {
- return Xl.computeOrientation(t, e, n) === this._angleOrientation && Xl.distancePointLine(e, t, n) < r
- }, Pp.prototype.isShallowSampled = function (t, e, n, r, i) {
- var o = Math.trunc((r - n) / Pp.NUM_PTS_TO_CHECK);
- o <= 0 && (o = 1);
- for (var s = n; s < r; s += o)
- if (!this.isShallow(t, e, this._inputLine[s], i)) return !1;
- return !0
- }, Pp.prototype.isConcave = function (t, e, n) {
- var r = Xl.computeOrientation(t, e, n) === this._angleOrientation;
- return r
- }, Pp.prototype.simplify = function (t) {
- this._distanceTol = Math.abs(t), t < 0 && (this._angleOrientation = Xl.CLOCKWISE), this._isDeleted = new Array(this._inputLine.length).fill(null);
- var e = !1;
- do {
- e = this.deleteShallowConcavities()
- } while (e);
- return this.collapseLine()
- }, Pp.prototype.findNextNonDeletedIndex = function (t) {
- for (var e = t + 1; e < this._inputLine.length && this._isDeleted[e] === Pp.DELETE;) e++;
- return e
- }, Pp.prototype.isShallow = function (t, e, n, r) {
- return Xl.distancePointLine(e, t, n) < r
- }, Pp.prototype.collapseLine = function () {
- for (var t = new hc, e = 0; e < this._inputLine.length; e++) this._isDeleted[e] !== Pp.DELETE && t.add(this._inputLine[e]);
- return t.toCoordinateArray()
- }, Pp.prototype.interfaces_ = function () {
- return []
- }, Pp.prototype.getClass = function () {
- return Pp
- }, Pp.simplify = function (t, e) {
- return new Pp(t).simplify(e)
- }, Mp.INIT.get = function () {
- return 0
- }, Mp.DELETE.get = function () {
- return 1
- }, Mp.KEEP.get = function () {
- return 1
- }, Mp.NUM_PTS_TO_CHECK.get = function () {
- return 10
- }, Object.defineProperties(Pp, Mp);
- var Lp = function () {
- this._ptList = null, this._precisionModel = null, this._minimimVertexDistance = 0, this._ptList = new lc
- },
- Op = {
- COORDINATE_ARRAY_TYPE: {
- configurable: !0
- }
- };
- Lp.prototype.getCoordinates = function () {
- return this._ptList.toArray(Lp.COORDINATE_ARRAY_TYPE)
- }, Lp.prototype.setPrecisionModel = function (t) {
- this._precisionModel = t
- }, Lp.prototype.addPt = function (t) {
- var e = new ul(t);
- if (this._precisionModel.makePrecise(e), this.isRedundant(e)) return null;
- this._ptList.add(e)
- }, Lp.prototype.revere = function () {}, Lp.prototype.addPts = function (t, e) {
- if (e)
- for (var n = 0; n < t.length; n++) this.addPt(t[n]);
- else
- for (var r = t.length - 1; r >= 0; r--) this.addPt(t[r])
- }, Lp.prototype.isRedundant = function (t) {
- if (this._ptList.size() < 1) return !1;
- var e = this._ptList.get(this._ptList.size() - 1);
- return t.distance(e) < this._minimimVertexDistance
- }, Lp.prototype.toString = function () {
- return (new _h).createLineString(this.getCoordinates()).toString()
- }, Lp.prototype.closeRing = function () {
- if (this._ptList.size() < 1) return null;
- var t = new ul(this._ptList.get(0)),
- e = this._ptList.get(this._ptList.size() - 1);
- if (t.equals(e)) return null;
- this._ptList.add(t)
- }, Lp.prototype.setMinimumVertexDistance = function (t) {
- this._minimimVertexDistance = t
- }, Lp.prototype.interfaces_ = function () {
- return []
- }, Lp.prototype.getClass = function () {
- return Lp
- }, Op.COORDINATE_ARRAY_TYPE.get = function () {
- return new Array(0).fill(null)
- }, Object.defineProperties(Lp, Op);
- var Rp = function () {},
- Tp = {
- PI_TIMES_2: {
- configurable: !0
- },
- PI_OVER_2: {
- configurable: !0
- },
- PI_OVER_4: {
- configurable: !0
- },
- COUNTERCLOCKWISE: {
- configurable: !0
- },
- CLOCKWISE: {
- configurable: !0
- },
- NONE: {
- configurable: !0
- }
- };
- Rp.prototype.interfaces_ = function () {
- return []
- }, Rp.prototype.getClass = function () {
- return Rp
- }, Rp.toDegrees = function (t) {
- return 180 * t / Math.PI
- }, Rp.normalize = function (t) {
- for (; t > Math.PI;) t -= Rp.PI_TIMES_2;
- for (; t <= -Math.PI;) t += Rp.PI_TIMES_2;
- return t
- }, Rp.angle = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return Math.atan2(t.y, t.x)
- }
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1],
- r = n.x - e.x,
- i = n.y - e.y;
- return Math.atan2(i, r)
- }
- }, Rp.isAcute = function (t, e, n) {
- var r = t.x - e.x,
- i = t.y - e.y;
- return r * (n.x - e.x) + i * (n.y - e.y) > 0
- }, Rp.isObtuse = function (t, e, n) {
- var r = t.x - e.x,
- i = t.y - e.y;
- return r * (n.x - e.x) + i * (n.y - e.y) < 0
- }, Rp.interiorAngle = function (t, e, n) {
- var r = Rp.angle(e, t),
- i = Rp.angle(e, n);
- return Math.abs(i - r)
- }, Rp.normalizePositive = function (t) {
- if (t < 0) {
- for (; t < 0;) t += Rp.PI_TIMES_2;
- t >= Rp.PI_TIMES_2 && (t = 0)
- } else {
- for (; t >= Rp.PI_TIMES_2;) t -= Rp.PI_TIMES_2;
- t < 0 && (t = 0)
- }
- return t
- }, Rp.angleBetween = function (t, e, n) {
- var r = Rp.angle(e, t),
- i = Rp.angle(e, n);
- return Rp.diff(r, i)
- }, Rp.diff = function (t, e) {
- var n = null;
- return (n = t < e ? e - t : t - e) > Math.PI && (n = 2 * Math.PI - n), n
- }, Rp.toRadians = function (t) {
- return t * Math.PI / 180
- }, Rp.getTurn = function (t, e) {
- var n = Math.sin(e - t);
- return n > 0 ? Rp.COUNTERCLOCKWISE : n < 0 ? Rp.CLOCKWISE : Rp.NONE
- }, Rp.angleBetweenOriented = function (t, e, n) {
- var r = Rp.angle(e, t),
- i = Rp.angle(e, n) - r;
- return i <= -Math.PI ? i + Rp.PI_TIMES_2 : i > Math.PI ? i - Rp.PI_TIMES_2 : i
- }, Tp.PI_TIMES_2.get = function () {
- return 2 * Math.PI
- }, Tp.PI_OVER_2.get = function () {
- return Math.PI / 2
- }, Tp.PI_OVER_4.get = function () {
- return Math.PI / 4
- }, Tp.COUNTERCLOCKWISE.get = function () {
- return Xl.COUNTERCLOCKWISE
- }, Tp.CLOCKWISE.get = function () {
- return Xl.CLOCKWISE
- }, Tp.NONE.get = function () {
- return Xl.COLLINEAR
- }, Object.defineProperties(Rp, Tp);
- var Ap = function t() {
- this._maxCurveSegmentError = 0, this._filletAngleQuantum = null, this._closingSegLengthFactor = 1, this._segList = null, this._distance = 0, this._precisionModel = null, this._bufParams = null, this._li = null, this._s0 = null, this._s1 = null, this._s2 = null, this._seg0 = new vp, this._seg1 = new vp, this._offset0 = new vp, this._offset1 = new vp, this._side = 0, this._hasNarrowConcaveAngle = !1;
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2];
- this._precisionModel = e, this._bufParams = n, this._li = new jl, this._filletAngleQuantum = Math.PI / 2 / n.getQuadrantSegments(), n.getQuadrantSegments() >= 8 && n.getJoinStyle() === Sp.JOIN_ROUND && (this._closingSegLengthFactor = t.MAX_CLOSING_SEG_LEN_FACTOR), this.init(r)
- },
- Dp = {
- OFFSET_SEGMENT_SEPARATION_FACTOR: {
- configurable: !0
- },
- INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR: {
- configurable: !0
- },
- CURVE_VERTEX_SNAP_DISTANCE_FACTOR: {
- configurable: !0
- },
- MAX_CLOSING_SEG_LEN_FACTOR: {
- configurable: !0
- }
- };
- Ap.prototype.addNextSegment = function (t, e) {
- if (this._s0 = this._s1, this._s1 = this._s2, this._s2 = t, this._seg0.setCoordinates(this._s0, this._s1), this.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0), this._seg1.setCoordinates(this._s1, this._s2), this.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1), this._s1.equals(this._s2)) return null;
- var n = Xl.computeOrientation(this._s0, this._s1, this._s2),
- r = n === Xl.CLOCKWISE && this._side === Sh.LEFT || n === Xl.COUNTERCLOCKWISE && this._side === Sh.RIGHT;
- 0 === n ? this.addCollinear(e) : r ? this.addOutsideTurn(n, e) : this.addInsideTurn(n, e)
- }, Ap.prototype.addLineEndCap = function (t, e) {
- var n = new vp(t, e),
- r = new vp;
- this.computeOffsetSegment(n, Sh.LEFT, this._distance, r);
- var i = new vp;
- this.computeOffsetSegment(n, Sh.RIGHT, this._distance, i);
- var o = e.x - t.x,
- s = e.y - t.y,
- a = Math.atan2(s, o);
- switch (this._bufParams.getEndCapStyle()) {
- case Sp.CAP_ROUND:
- this._segList.addPt(r.p1), this.addFilletArc(e, a + Math.PI / 2, a - Math.PI / 2, Xl.CLOCKWISE, this._distance), this._segList.addPt(i.p1);
- break;
- case Sp.CAP_FLAT:
- this._segList.addPt(r.p1), this._segList.addPt(i.p1);
- break;
- case Sp.CAP_SQUARE:
- var u = new ul;
- u.x = Math.abs(this._distance) * Math.cos(a), u.y = Math.abs(this._distance) * Math.sin(a);
- var l = new ul(r.p1.x + u.x, r.p1.y + u.y),
- c = new ul(i.p1.x + u.x, i.p1.y + u.y);
- this._segList.addPt(l), this._segList.addPt(c)
- }
- }, Ap.prototype.getCoordinates = function () {
- return this._segList.getCoordinates()
- }, Ap.prototype.addMitreJoin = function (t, e, n, r) {
- var i = !0,
- o = null;
- try {
- o = Ml.intersection(e.p0, e.p1, n.p0, n.p1), (r <= 0 ? 1 : o.distance(t) / Math.abs(r)) > this._bufParams.getMitreLimit() && (i = !1)
- } catch (t) {
- if (!(t instanceof Cl)) throw t;
- o = new ul(0, 0), i = !1
- }
- i ? this._segList.addPt(o) : this.addLimitedMitreJoin(e, n, r, this._bufParams.getMitreLimit())
- }, Ap.prototype.addFilletCorner = function (t, e, n, r, i) {
- var o = e.x - t.x,
- s = e.y - t.y,
- a = Math.atan2(s, o),
- u = n.x - t.x,
- l = n.y - t.y,
- c = Math.atan2(l, u);
- r === Xl.CLOCKWISE ? a <= c && (a += 2 * Math.PI) : a >= c && (a -= 2 * Math.PI), this._segList.addPt(e), this.addFilletArc(t, a, c, r, i), this._segList.addPt(n)
- }, Ap.prototype.addOutsideTurn = function (t, e) {
- if (this._offset0.p1.distance(this._offset1.p0) < this._distance * Ap.OFFSET_SEGMENT_SEPARATION_FACTOR) return this._segList.addPt(this._offset0.p1), null;
- this._bufParams.getJoinStyle() === Sp.JOIN_MITRE ? this.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance) : this._bufParams.getJoinStyle() === Sp.JOIN_BEVEL ? this.addBevelJoin(this._offset0, this._offset1) : (e && this._segList.addPt(this._offset0.p1), this.addFilletCorner(this._s1, this._offset0.p1, this._offset1.p0, t, this._distance), this._segList.addPt(this._offset1.p0))
- }, Ap.prototype.createSquare = function (t) {
- this._segList.addPt(new ul(t.x + this._distance, t.y + this._distance)), this._segList.addPt(new ul(t.x + this._distance, t.y - this._distance)), this._segList.addPt(new ul(t.x - this._distance, t.y - this._distance)), this._segList.addPt(new ul(t.x - this._distance, t.y + this._distance)), this._segList.closeRing()
- }, Ap.prototype.addSegments = function (t, e) {
- this._segList.addPts(t, e)
- }, Ap.prototype.addFirstSegment = function () {
- this._segList.addPt(this._offset1.p0)
- }, Ap.prototype.addLastSegment = function () {
- this._segList.addPt(this._offset1.p1)
- }, Ap.prototype.initSideSegments = function (t, e, n) {
- this._s1 = t, this._s2 = e, this._side = n, this._seg1.setCoordinates(t, e), this.computeOffsetSegment(this._seg1, n, this._distance, this._offset1)
- }, Ap.prototype.addLimitedMitreJoin = function (t, e, n, r) {
- var i = this._seg0.p1,
- o = Rp.angle(i, this._seg0.p0),
- s = Rp.angleBetweenOriented(this._seg0.p0, i, this._seg1.p1) / 2,
- a = Rp.normalize(o + s),
- u = Rp.normalize(a + Math.PI),
- l = r * n,
- c = n - l * Math.abs(Math.sin(s)),
- h = i.x + l * Math.cos(u),
- p = i.y + l * Math.sin(u),
- f = new ul(h, p),
- g = new vp(i, f),
- d = g.pointAlongOffset(1, c),
- y = g.pointAlongOffset(1, -c);
- this._side === Sh.LEFT ? (this._segList.addPt(d), this._segList.addPt(y)) : (this._segList.addPt(y), this._segList.addPt(d))
- }, Ap.prototype.computeOffsetSegment = function (t, e, n, r) {
- var i = e === Sh.LEFT ? 1 : -1,
- o = t.p1.x - t.p0.x,
- s = t.p1.y - t.p0.y,
- a = Math.sqrt(o * o + s * s),
- u = i * n * o / a,
- l = i * n * s / a;
- r.p0.x = t.p0.x - l, r.p0.y = t.p0.y + u, r.p1.x = t.p1.x - l, r.p1.y = t.p1.y + u
- }, Ap.prototype.addFilletArc = function (t, e, n, r, i) {
- var o = r === Xl.CLOCKWISE ? -1 : 1,
- s = Math.abs(e - n),
- a = Math.trunc(s / this._filletAngleQuantum + .5);
- if (a < 1) return null;
- for (var u = s / a, l = 0, c = new ul; l < s;) {
- var h = e + o * l;
- c.x = t.x + i * Math.cos(h), c.y = t.y + i * Math.sin(h), this._segList.addPt(c), l += u
- }
- }, Ap.prototype.addInsideTurn = function (t, e) {
- if (this._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1), this._li.hasIntersection()) this._segList.addPt(this._li.getIntersection(0));
- else if (this._hasNarrowConcaveAngle = !0, this._offset0.p1.distance(this._offset1.p0) < this._distance * Ap.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) this._segList.addPt(this._offset0.p1);
- else {
- if (this._segList.addPt(this._offset0.p1), this._closingSegLengthFactor > 0) {
- var n = new ul((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1));
- this._segList.addPt(n);
- var r = new ul((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1));
- this._segList.addPt(r)
- } else this._segList.addPt(this._s1);
- this._segList.addPt(this._offset1.p0)
- }
- }, Ap.prototype.createCircle = function (t) {
- var e = new ul(t.x + this._distance, t.y);
- this._segList.addPt(e), this.addFilletArc(t, 0, 2 * Math.PI, -1, this._distance), this._segList.closeRing()
- }, Ap.prototype.addBevelJoin = function (t, e) {
- this._segList.addPt(t.p1), this._segList.addPt(e.p0)
- }, Ap.prototype.init = function (t) {
- this._distance = t, this._maxCurveSegmentError = t * (1 - Math.cos(this._filletAngleQuantum / 2)), this._segList = new Lp, this._segList.setPrecisionModel(this._precisionModel), this._segList.setMinimumVertexDistance(t * Ap.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)
- }, Ap.prototype.addCollinear = function (t) {
- this._li.computeIntersection(this._s0, this._s1, this._s1, this._s2), this._li.getIntersectionNum() >= 2 && (this._bufParams.getJoinStyle() === Sp.JOIN_BEVEL || this._bufParams.getJoinStyle() === Sp.JOIN_MITRE ? (t && this._segList.addPt(this._offset0.p1), this._segList.addPt(this._offset1.p0)) : this.addFilletCorner(this._s1, this._offset0.p1, this._offset1.p0, Xl.CLOCKWISE, this._distance))
- }, Ap.prototype.closeRing = function () {
- this._segList.closeRing()
- }, Ap.prototype.hasNarrowConcaveAngle = function () {
- return this._hasNarrowConcaveAngle
- }, Ap.prototype.interfaces_ = function () {
- return []
- }, Ap.prototype.getClass = function () {
- return Ap
- }, Dp.OFFSET_SEGMENT_SEPARATION_FACTOR.get = function () {
- return .001
- }, Dp.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get = function () {
- return .001
- }, Dp.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get = function () {
- return 1e-6
- }, Dp.MAX_CLOSING_SEG_LEN_FACTOR.get = function () {
- return 80
- }, Object.defineProperties(Ap, Dp);
- var Fp = function () {
- this._distance = 0, this._precisionModel = null, this._bufParams = null;
- var t = arguments[0],
- e = arguments[1];
- this._precisionModel = t, this._bufParams = e
- };
- Fp.prototype.getOffsetCurve = function (t, e) {
- if (this._distance = e, 0 === e) return null;
- var n = e < 0,
- r = Math.abs(e),
- i = this.getSegGen(r);
- t.length <= 1 ? this.computePointCurve(t[0], i) : this.computeOffsetCurve(t, n, i);
- var o = i.getCoordinates();
- return n && pc.reverse(o), o
- }, Fp.prototype.computeSingleSidedBufferCurve = function (t, e, n) {
- var r = this.simplifyTolerance(this._distance);
- if (e) {
- n.addSegments(t, !0);
- var i = Pp.simplify(t, -r),
- o = i.length - 1;
- n.initSideSegments(i[o], i[o - 1], Sh.LEFT), n.addFirstSegment();
- for (var s = o - 2; s >= 0; s--) n.addNextSegment(i[s], !0)
- } else {
- n.addSegments(t, !1);
- var a = Pp.simplify(t, r),
- u = a.length - 1;
- n.initSideSegments(a[0], a[1], Sh.LEFT), n.addFirstSegment();
- for (var l = 2; l <= u; l++) n.addNextSegment(a[l], !0)
- }
- n.addLastSegment(), n.closeRing()
- }, Fp.prototype.computeRingBufferCurve = function (t, e, n) {
- var r = this.simplifyTolerance(this._distance);
- e === Sh.RIGHT && (r = -r);
- var i = Pp.simplify(t, r),
- o = i.length - 1;
- n.initSideSegments(i[o - 1], i[0], e);
- for (var s = 1; s <= o; s++) {
- var a = 1 !== s;
- n.addNextSegment(i[s], a)
- }
- n.closeRing()
- }, Fp.prototype.computeLineBufferCurve = function (t, e) {
- var n = this.simplifyTolerance(this._distance),
- r = Pp.simplify(t, n),
- i = r.length - 1;
- e.initSideSegments(r[0], r[1], Sh.LEFT);
- for (var o = 2; o <= i; o++) e.addNextSegment(r[o], !0);
- e.addLastSegment(), e.addLineEndCap(r[i - 1], r[i]);
- var s = Pp.simplify(t, -n),
- a = s.length - 1;
- e.initSideSegments(s[a], s[a - 1], Sh.LEFT);
- for (var u = a - 2; u >= 0; u--) e.addNextSegment(s[u], !0);
- e.addLastSegment(), e.addLineEndCap(s[1], s[0]), e.closeRing()
- }, Fp.prototype.computePointCurve = function (t, e) {
- switch (this._bufParams.getEndCapStyle()) {
- case Sp.CAP_ROUND:
- e.createCircle(t);
- break;
- case Sp.CAP_SQUARE:
- e.createSquare(t)
- }
- }, Fp.prototype.getLineCurve = function (t, e) {
- if (this._distance = e, e < 0 && !this._bufParams.isSingleSided()) return null;
- if (0 === e) return null;
- var n = Math.abs(e),
- r = this.getSegGen(n);
- if (t.length <= 1) this.computePointCurve(t[0], r);
- else if (this._bufParams.isSingleSided()) {
- var i = e < 0;
- this.computeSingleSidedBufferCurve(t, i, r)
- } else this.computeLineBufferCurve(t, r);
- return r.getCoordinates()
- }, Fp.prototype.getBufferParameters = function () {
- return this._bufParams
- }, Fp.prototype.simplifyTolerance = function (t) {
- return t * this._bufParams.getSimplifyFactor()
- }, Fp.prototype.getRingCurve = function (t, e, n) {
- if (this._distance = n, t.length <= 2) return this.getLineCurve(t, n);
- if (0 === n) return Fp.copyCoordinates(t);
- var r = this.getSegGen(n);
- return this.computeRingBufferCurve(t, e, r), r.getCoordinates()
- }, Fp.prototype.computeOffsetCurve = function (t, e, n) {
- var r = this.simplifyTolerance(this._distance);
- if (e) {
- var i = Pp.simplify(t, -r),
- o = i.length - 1;
- n.initSideSegments(i[o], i[o - 1], Sh.LEFT), n.addFirstSegment();
- for (var s = o - 2; s >= 0; s--) n.addNextSegment(i[s], !0)
- } else {
- var a = Pp.simplify(t, r),
- u = a.length - 1;
- n.initSideSegments(a[0], a[1], Sh.LEFT), n.addFirstSegment();
- for (var l = 2; l <= u; l++) n.addNextSegment(a[l], !0)
- }
- n.addLastSegment()
- }, Fp.prototype.getSegGen = function (t) {
- return new Ap(this._precisionModel, this._bufParams, t)
- }, Fp.prototype.interfaces_ = function () {
- return []
- }, Fp.prototype.getClass = function () {
- return Fp
- }, Fp.copyCoordinates = function (t) {
- for (var e = new Array(t.length).fill(null), n = 0; n < e.length; n++) e[n] = new ul(t[n]);
- return e
- };
- var kp = function () {
- this._subgraphs = null, this._seg = new vp, this._cga = new Xl;
- var t = arguments[0];
- this._subgraphs = t
- },
- Gp = {
- DepthSegment: {
- configurable: !0
- }
- };
- kp.prototype.findStabbedSegments = function () {
- var t = this;
- if (1 === arguments.length) {
- for (var e = arguments[0], n = new lc, r = this._subgraphs.iterator(); r.hasNext();) {
- var i = r.next(),
- o = i.getEnvelope();
- e.y < o.getMinY() || e.y > o.getMaxY() || t.findStabbedSegments(e, i.getDirectedEdges(), n)
- }
- return n
- }
- if (3 === arguments.length)
- if (gl(arguments[2], ac) && arguments[0] instanceof ul && arguments[1] instanceof Xh)
- for (var s = arguments[0], a = arguments[1], u = arguments[2], l = a.getEdge().getCoordinates(), c = 0; c < l.length - 1; c++) {
- t._seg.p0 = l[c], t._seg.p1 = l[c + 1], t._seg.p0.y > t._seg.p1.y && t._seg.reverse();
- var h = Math.max(t._seg.p0.x, t._seg.p1.x);
- if (!(h < s.x) && !(t._seg.isHorizontal() || s.y < t._seg.p0.y || s.y > t._seg.p1.y || Xl.computeOrientation(t._seg.p0, t._seg.p1, s) === Xl.RIGHT)) {
- var p = a.getDepth(Sh.LEFT);
- t._seg.p0.equals(l[c]) || (p = a.getDepth(Sh.RIGHT));
- var f = new qp(t._seg, p);
- u.add(f)
- }
- } else if (gl(arguments[2], ac) && arguments[0] instanceof ul && gl(arguments[1], ac))
- for (var g = arguments[0], d = arguments[1], y = arguments[2], v = d.iterator(); v.hasNext();) {
- var _ = v.next();
- _.isForward() && t.findStabbedSegments(g, _, y)
- }
- }, kp.prototype.getDepth = function (t) {
- var e = this.findStabbedSegments(t);
- return 0 === e.size() ? 0 : np.min(e)._leftDepth
- }, kp.prototype.interfaces_ = function () {
- return []
- }, kp.prototype.getClass = function () {
- return kp
- }, Gp.DepthSegment.get = function () {
- return qp
- }, Object.defineProperties(kp, Gp);
- var qp = function () {
- this._upwardSeg = null, this._leftDepth = null;
- var t = arguments[0],
- e = arguments[1];
- this._upwardSeg = new vp(t), this._leftDepth = e
- };
- qp.prototype.compareTo = function (t) {
- var e = t;
- if (this._upwardSeg.minX() >= e._upwardSeg.maxX()) return 1;
- if (this._upwardSeg.maxX() <= e._upwardSeg.minX()) return -1;
- var n = this._upwardSeg.orientationIndex(e._upwardSeg);
- return 0 !== n || 0 !== (n = -1 * e._upwardSeg.orientationIndex(this._upwardSeg)) ? n : this._upwardSeg.compareTo(e._upwardSeg)
- }, qp.prototype.compareX = function (t, e) {
- var n = t.p0.compareTo(e.p0);
- return 0 !== n ? n : t.p1.compareTo(e.p1)
- }, qp.prototype.toString = function () {
- return this._upwardSeg.toString()
- }, qp.prototype.interfaces_ = function () {
- return [il]
- }, qp.prototype.getClass = function () {
- return qp
- };
- var Bp = function (t, e, n) {
- this.p0 = t || null, this.p1 = e || null, this.p2 = n || null
- };
- Bp.prototype.area = function () {
- return Bp.area(this.p0, this.p1, this.p2)
- }, Bp.prototype.signedArea = function () {
- return Bp.signedArea(this.p0, this.p1, this.p2)
- }, Bp.prototype.interpolateZ = function (t) {
- if (null === t) throw new el("Supplied point is null.");
- return Bp.interpolateZ(t, this.p0, this.p1, this.p2)
- }, Bp.prototype.longestSideLength = function () {
- return Bp.longestSideLength(this.p0, this.p1, this.p2)
- }, Bp.prototype.isAcute = function () {
- return Bp.isAcute(this.p0, this.p1, this.p2)
- }, Bp.prototype.circumcentre = function () {
- return Bp.circumcentre(this.p0, this.p1, this.p2)
- }, Bp.prototype.area3D = function () {
- return Bp.area3D(this.p0, this.p1, this.p2)
- }, Bp.prototype.centroid = function () {
- return Bp.centroid(this.p0, this.p1, this.p2)
- }, Bp.prototype.inCentre = function () {
- return Bp.inCentre(this.p0, this.p1, this.p2)
- }, Bp.prototype.interfaces_ = function () {
- return []
- }, Bp.prototype.getClass = function () {
- return Bp
- }, Bp.area = function (t, e, n) {
- return Math.abs(((n.x - t.x) * (e.y - t.y) - (e.x - t.x) * (n.y - t.y)) / 2)
- }, Bp.signedArea = function (t, e, n) {
- return ((n.x - t.x) * (e.y - t.y) - (e.x - t.x) * (n.y - t.y)) / 2
- }, Bp.det = function (t, e, n, r) {
- return t * r - e * n
- }, Bp.interpolateZ = function (t, e, n, r) {
- var i = e.x,
- o = e.y,
- s = n.x - i,
- a = r.x - i,
- u = n.y - o,
- l = r.y - o,
- c = s * l - a * u,
- h = t.x - i,
- p = t.y - o,
- f = (l * h - a * p) / c,
- g = (-u * h + s * p) / c;
- return e.z + f * (n.z - e.z) + g * (r.z - e.z)
- }, Bp.longestSideLength = function (t, e, n) {
- var r = t.distance(e),
- i = e.distance(n),
- o = n.distance(t),
- s = r;
- return i > s && (s = i), o > s && (s = o), s
- }, Bp.isAcute = function (t, e, n) {
- return !!Rp.isAcute(t, e, n) && (!!Rp.isAcute(e, n, t) && !!Rp.isAcute(n, t, e))
- }, Bp.circumcentre = function (t, e, n) {
- var r = n.x,
- i = n.y,
- o = t.x - r,
- s = t.y - i,
- a = e.x - r,
- u = e.y - i,
- l = 2 * Bp.det(o, s, a, u),
- c = Bp.det(s, o * o + s * s, u, a * a + u * u),
- h = Bp.det(o, o * o + s * s, a, a * a + u * u);
- return new ul(r - c / l, i + h / l)
- }, Bp.perpendicularBisector = function (t, e) {
- var n = e.x - t.x,
- r = e.y - t.y,
- i = new Ml(t.x + n / 2, t.y + r / 2, 1),
- o = new Ml(t.x - r + n / 2, t.y + n + r / 2, 1);
- return new Ml(i, o)
- }, Bp.angleBisector = function (t, e, n) {
- var r = e.distance(t),
- i = r / (r + e.distance(n)),
- o = n.x - t.x,
- s = n.y - t.y;
- return new ul(t.x + i * o, t.y + i * s)
- }, Bp.area3D = function (t, e, n) {
- var r = e.x - t.x,
- i = e.y - t.y,
- o = e.z - t.z,
- s = n.x - t.x,
- a = n.y - t.y,
- u = n.z - t.z,
- l = i * u - o * a,
- c = o * s - r * u,
- h = r * a - i * s,
- p = l * l + c * c + h * h,
- f = Math.sqrt(p) / 2;
- return f
- }, Bp.centroid = function (t, e, n) {
- var r = (t.x + e.x + n.x) / 3,
- i = (t.y + e.y + n.y) / 3;
- return new ul(r, i)
- }, Bp.inCentre = function (t, e, n) {
- var r = e.distance(n),
- i = t.distance(n),
- o = t.distance(e),
- s = r + i + o,
- a = (r * t.x + i * e.x + o * n.x) / s,
- u = (r * t.y + i * e.y + o * n.y) / s;
- return new ul(a, u)
- };
- var zp = function () {
- this._inputGeom = null, this._distance = null, this._curveBuilder = null, this._curveList = new lc;
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2];
- this._inputGeom = t, this._distance = e, this._curveBuilder = n
- };
- zp.prototype.addPoint = function (t) {
- if (this._distance <= 0) return null;
- var e = t.getCoordinates(),
- n = this._curveBuilder.getLineCurve(e, this._distance);
- this.addCurve(n, pl.EXTERIOR, pl.INTERIOR)
- }, zp.prototype.addPolygon = function (t) {
- var e = this,
- n = this._distance,
- r = Sh.LEFT;
- this._distance < 0 && (n = -this._distance, r = Sh.RIGHT);
- var i = t.getExteriorRing(),
- o = pc.removeRepeatedPoints(i.getCoordinates());
- if (this._distance < 0 && this.isErodedCompletely(i, this._distance)) return null;
- if (this._distance <= 0 && o.length < 3) return null;
- this.addPolygonRing(o, n, r, pl.EXTERIOR, pl.INTERIOR);
- for (var s = 0; s < t.getNumInteriorRing(); s++) {
- var a = t.getInteriorRingN(s),
- u = pc.removeRepeatedPoints(a.getCoordinates());
- e._distance > 0 && e.isErodedCompletely(a, -e._distance) || e.addPolygonRing(u, n, Sh.opposite(r), pl.INTERIOR, pl.EXTERIOR)
- }
- }, zp.prototype.isTriangleErodedCompletely = function (t, e) {
- var n = new Bp(t[0], t[1], t[2]),
- r = n.inCentre();
- return Xl.distancePointLine(r, n.p0, n.p1) < Math.abs(e)
- }, zp.prototype.addLineString = function (t) {
- if (this._distance <= 0 && !this._curveBuilder.getBufferParameters().isSingleSided()) return null;
- var e = pc.removeRepeatedPoints(t.getCoordinates()),
- n = this._curveBuilder.getLineCurve(e, this._distance);
- this.addCurve(n, pl.EXTERIOR, pl.INTERIOR)
- }, zp.prototype.addCurve = function (t, e, n) {
- if (null === t || t.length < 2) return null;
- var r = new yp(t, new Dh(0, pl.BOUNDARY, e, n));
- this._curveList.add(r)
- }, zp.prototype.getCurves = function () {
- return this.add(this._inputGeom), this._curveList
- }, zp.prototype.addPolygonRing = function (t, e, n, r, i) {
- if (0 === e && t.length < nh.MINIMUM_VALID_SIZE) return null;
- var o = r,
- s = i;
- t.length >= nh.MINIMUM_VALID_SIZE && Xl.isCCW(t) && (o = i, s = r, n = Sh.opposite(n));
- var a = this._curveBuilder.getRingCurve(t, n, e);
- this.addCurve(a, o, s)
- }, zp.prototype.add = function (t) {
- if (t.isEmpty()) return null;
- t instanceof th ? this.addPolygon(t) : t instanceof Zc ? this.addLineString(t) : t instanceof Qc ? this.addPoint(t) : (t instanceof eh || t instanceof Gc || t instanceof rh || t instanceof kc) && this.addCollection(t)
- }, zp.prototype.isErodedCompletely = function (t, e) {
- var n = t.getCoordinates();
- if (n.length < 4) return e < 0;
- if (4 === n.length) return this.isTriangleErodedCompletely(n, e);
- var r = t.getEnvelopeInternal(),
- i = Math.min(r.getHeight(), r.getWidth());
- return e < 0 && 2 * Math.abs(e) > i
- }, zp.prototype.addCollection = function (t) {
- for (var e = 0; e < t.getNumGeometries(); e++) {
- var n = t.getGeometryN(e);
- this.add(n)
- }
- }, zp.prototype.interfaces_ = function () {
- return []
- }, zp.prototype.getClass = function () {
- return zp
- };
- var jp = function () {};
- jp.prototype.locate = function (t) {}, jp.prototype.interfaces_ = function () {
- return []
- }, jp.prototype.getClass = function () {
- return jp
- };
- var Up = function () {
- this._parent = null, this._atStart = null, this._max = null, this._index = null, this._subcollectionIterator = null;
- var t = arguments[0];
- this._parent = t, this._atStart = !0, this._index = 0, this._max = t.getNumGeometries()
- };
- Up.prototype.next = function () {
- if (this._atStart) return this._atStart = !1, Up.isAtomic(this._parent) && this._index++, this._parent;
- if (null !== this._subcollectionIterator) {
- if (this._subcollectionIterator.hasNext()) return this._subcollectionIterator.next();
- this._subcollectionIterator = null
- }
- if (this._index >= this._max) throw new uc;
- var t = this._parent.getGeometryN(this._index++);
- return t instanceof kc ? (this._subcollectionIterator = new Up(t), this._subcollectionIterator.next()) : t
- }, Up.prototype.remove = function () {
- throw new Error(this.getClass().getName())
- }, Up.prototype.hasNext = function () {
- if (this._atStart) return !0;
- if (null !== this._subcollectionIterator) {
- if (this._subcollectionIterator.hasNext()) return !0;
- this._subcollectionIterator = null
- }
- return !(this._index >= this._max)
- }, Up.prototype.interfaces_ = function () {
- return [sc]
- }, Up.prototype.getClass = function () {
- return Up
- }, Up.isAtomic = function (t) {
- return !(t instanceof kc)
- };
- var Vp = function () {
- this._geom = null;
- var t = arguments[0];
- this._geom = t
- };
- Vp.prototype.locate = function (t) {
- return Vp.locate(t, this._geom)
- }, Vp.prototype.interfaces_ = function () {
- return [jp]
- }, Vp.prototype.getClass = function () {
- return Vp
- }, Vp.isPointInRing = function (t, e) {
- return !!e.getEnvelopeInternal().intersects(t) && Xl.isPointInRing(t, e.getCoordinates())
- }, Vp.containsPointInPolygon = function (t, e) {
- if (e.isEmpty()) return !1;
- var n = e.getExteriorRing();
- if (!Vp.isPointInRing(t, n)) return !1;
- for (var r = 0; r < e.getNumInteriorRing(); r++) {
- var i = e.getInteriorRingN(r);
- if (Vp.isPointInRing(t, i)) return !1
- }
- return !0
- }, Vp.containsPoint = function (t, e) {
- if (e instanceof th) return Vp.containsPointInPolygon(t, e);
- if (e instanceof kc)
- for (var n = new Up(e); n.hasNext();) {
- var r = n.next();
- if (r !== e && Vp.containsPoint(t, r)) return !0
- }
- return !1
- }, Vp.locate = function (t, e) {
- return e.isEmpty() ? pl.EXTERIOR : Vp.containsPoint(t, e) ? pl.INTERIOR : pl.EXTERIOR
- };
- var Xp = function () {
- this._edgeMap = new Cc, this._edgeList = null, this._ptInAreaLocation = [pl.NONE, pl.NONE]
- };
- Xp.prototype.getNextCW = function (t) {
- this.getEdges();
- var e = this._edgeList.indexOf(t),
- n = e - 1;
- return 0 === e && (n = this._edgeList.size() - 1), this._edgeList.get(n)
- }, Xp.prototype.propagateSideLabels = function (t) {
- for (var e = pl.NONE, n = this.iterator(); n.hasNext();) {
- var r = n.next().getLabel();
- r.isArea(t) && r.getLocation(t, Sh.LEFT) !== pl.NONE && (e = r.getLocation(t, Sh.LEFT))
- }
- if (e === pl.NONE) return null;
- for (var i = e, o = this.iterator(); o.hasNext();) {
- var s = o.next(),
- a = s.getLabel();
- if (a.getLocation(t, Sh.ON) === pl.NONE && a.setLocation(t, Sh.ON, i), a.isArea(t)) {
- var u = a.getLocation(t, Sh.LEFT),
- l = a.getLocation(t, Sh.RIGHT);
- if (l !== pl.NONE) {
- if (l !== i) throw new Oh("side location conflict", s.getCoordinate());
- u === pl.NONE && ql.shouldNeverReachHere("found single null side (at " + s.getCoordinate() + ")"), i = u
- } else ql.isTrue(a.getLocation(t, Sh.LEFT) === pl.NONE, "found single null side"), a.setLocation(t, Sh.RIGHT, i), a.setLocation(t, Sh.LEFT, i)
- }
- }
- }, Xp.prototype.getCoordinate = function () {
- var t = this.iterator();
- return t.hasNext() ? t.next().getCoordinate() : null
- }, Xp.prototype.print = function (t) {
- Pl.out.println("EdgeEndStar: " + this.getCoordinate());
- for (var e = this.iterator(); e.hasNext();) {
- e.next().print(t)
- }
- }, Xp.prototype.isAreaLabelsConsistent = function (t) {
- return this.computeEdgeEndLabels(t.getBoundaryNodeRule()), this.checkAreaLabelsConsistent(0)
- }, Xp.prototype.checkAreaLabelsConsistent = function (t) {
- var e = this.getEdges();
- if (e.size() <= 0) return !0;
- var n = e.size() - 1,
- r = e.get(n).getLabel().getLocation(t, Sh.LEFT);
- ql.isTrue(r !== pl.NONE, "Found unlabelled area edge");
- for (var i = r, o = this.iterator(); o.hasNext();) {
- var s = o.next().getLabel();
- ql.isTrue(s.isArea(t), "Found non-area edge");
- var a = s.getLocation(t, Sh.LEFT),
- u = s.getLocation(t, Sh.RIGHT);
- if (a === u) return !1;
- if (u !== i) return !1;
- i = a
- }
- return !0
- }, Xp.prototype.findIndex = function (t) {
- this.iterator();
- for (var e = 0; e < this._edgeList.size(); e++) {
- if (this._edgeList.get(e) === t) return e
- }
- return -1
- }, Xp.prototype.iterator = function () {
- return this.getEdges().iterator()
- }, Xp.prototype.getEdges = function () {
- return null === this._edgeList && (this._edgeList = new lc(this._edgeMap.values())), this._edgeList
- }, Xp.prototype.getLocation = function (t, e, n) {
- return this._ptInAreaLocation[t] === pl.NONE && (this._ptInAreaLocation[t] = Vp.locate(e, n[t].getGeometry())), this._ptInAreaLocation[t]
- }, Xp.prototype.toString = function () {
- var t = new vl;
- t.append("EdgeEndStar: " + this.getCoordinate()), t.append("\n");
- for (var e = this.iterator(); e.hasNext();) {
- var n = e.next();
- t.append(n), t.append("\n")
- }
- return t.toString()
- }, Xp.prototype.computeEdgeEndLabels = function (t) {
- for (var e = this.iterator(); e.hasNext();) {
- e.next().computeLabel(t)
- }
- }, Xp.prototype.computeLabelling = function (t) {
- this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()), this.propagateSideLabels(0), this.propagateSideLabels(1);
- for (var e = [!1, !1], n = this.iterator(); n.hasNext();)
- for (var r = n.next().getLabel(), i = 0; i < 2; i++) r.isLine(i) && r.getLocation(i) === pl.BOUNDARY && (e[i] = !0);
- for (var o = this.iterator(); o.hasNext();)
- for (var s = o.next(), a = s.getLabel(), u = 0; u < 2; u++)
- if (a.isAnyNull(u)) {
- var l = pl.NONE;
- if (e[u]) l = pl.EXTERIOR;
- else {
- var c = s.getCoordinate();
- l = this.getLocation(u, c, t)
- }
- a.setAllLocationsIfNull(u, l)
- }
- }, Xp.prototype.getDegree = function () {
- return this._edgeMap.size()
- }, Xp.prototype.insertEdgeEnd = function (t, e) {
- this._edgeMap.put(t, e), this._edgeList = null
- }, Xp.prototype.interfaces_ = function () {
- return []
- }, Xp.prototype.getClass = function () {
- return Xp
- };
- var Yp = function (t) {
- function e() {
- t.call(this), this._resultAreaEdgeList = null, this._label = null, this._SCANNING_FOR_INCOMING = 1, this._LINKING_TO_OUTGOING = 2
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.linkResultDirectedEdges = function () {
- var t = this;
- this.getResultAreaEdges();
- for (var e = null, n = null, r = this._SCANNING_FOR_INCOMING, i = 0; i < this._resultAreaEdgeList.size(); i++) {
- var o = t._resultAreaEdgeList.get(i),
- s = o.getSym();
- if (o.getLabel().isArea()) switch (null === e && o.isInResult() && (e = o), r) {
- case t._SCANNING_FOR_INCOMING:
- if (!s.isInResult()) continue;
- n = s, r = t._LINKING_TO_OUTGOING;
- break;
- case t._LINKING_TO_OUTGOING:
- if (!o.isInResult()) continue;
- n.setNext(o), r = t._SCANNING_FOR_INCOMING
- }
- }
- if (r === this._LINKING_TO_OUTGOING) {
- if (null === e) throw new Oh("no outgoing dirEdge found", this.getCoordinate());
- ql.isTrue(e.isInResult(), "unable to link last incoming dirEdge"), n.setNext(e)
- }
- }, e.prototype.insert = function (t) {
- var e = t;
- this.insertEdgeEnd(e, e)
- }, e.prototype.getRightmostEdge = function () {
- var t = this.getEdges(),
- e = t.size();
- if (e < 1) return null;
- var n = t.get(0);
- if (1 === e) return n;
- var r = t.get(e - 1),
- i = n.getQuadrant(),
- o = r.getQuadrant();
- return jh.isNorthern(i) && jh.isNorthern(o) ? n : jh.isNorthern(i) || jh.isNorthern(o) ? 0 !== n.getDy() ? n : 0 !== r.getDy() ? r : (ql.shouldNeverReachHere("found two horizontal edges incident on node"), null) : r
- }, e.prototype.print = function (t) {
- Pl.out.println("DirectedEdgeStar: " + this.getCoordinate());
- for (var e = this.iterator(); e.hasNext();) {
- var n = e.next();
- t.print("out "), n.print(t), t.println(), t.print("in "), n.getSym().print(t), t.println()
- }
- }, e.prototype.getResultAreaEdges = function () {
- if (null !== this._resultAreaEdgeList) return this._resultAreaEdgeList;
- this._resultAreaEdgeList = new lc;
- for (var t = this.iterator(); t.hasNext();) {
- var e = t.next();
- (e.isInResult() || e.getSym().isInResult()) && this._resultAreaEdgeList.add(e)
- }
- return this._resultAreaEdgeList
- }, e.prototype.updateLabelling = function (t) {
- for (var e = this.iterator(); e.hasNext();) {
- var n = e.next().getLabel();
- n.setAllLocationsIfNull(0, t.getLocation(0)), n.setAllLocationsIfNull(1, t.getLocation(1))
- }
- }, e.prototype.linkAllDirectedEdges = function () {
- this.getEdges();
- for (var t = null, e = null, n = this._edgeList.size() - 1; n >= 0; n--) {
- var r = this._edgeList.get(n),
- i = r.getSym();
- null === e && (e = i), null !== t && i.setNext(t), t = r
- }
- e.setNext(t)
- }, e.prototype.computeDepths = function () {
- var t = this;
- if (1 === arguments.length) {
- var e = arguments[0],
- n = this.findIndex(e),
- r = e.getDepth(Sh.LEFT),
- i = e.getDepth(Sh.RIGHT),
- o = this.computeDepths(n + 1, this._edgeList.size(), r),
- s = this.computeDepths(0, n, o);
- if (s !== i) throw new Oh("depth mismatch at " + e.getCoordinate())
- } else if (3 === arguments.length) {
- for (var a = arguments[0], u = arguments[1], l = arguments[2], c = l, h = a; h < u; h++) {
- var p = t._edgeList.get(h);
- p.setEdgeDepths(Sh.RIGHT, c), c = p.getDepth(Sh.LEFT)
- }
- return c
- }
- }, e.prototype.mergeSymLabels = function () {
- for (var t = this.iterator(); t.hasNext();) {
- var e = t.next();
- e.getLabel().merge(e.getSym().getLabel())
- }
- }, e.prototype.linkMinimalDirectedEdges = function (t) {
- for (var e = this, n = null, r = null, i = this._SCANNING_FOR_INCOMING, o = this._resultAreaEdgeList.size() - 1; o >= 0; o--) {
- var s = e._resultAreaEdgeList.get(o),
- a = s.getSym();
- switch (null === n && s.getEdgeRing() === t && (n = s), i) {
- case e._SCANNING_FOR_INCOMING:
- if (a.getEdgeRing() !== t) continue;
- r = a, i = e._LINKING_TO_OUTGOING;
- break;
- case e._LINKING_TO_OUTGOING:
- if (s.getEdgeRing() !== t) continue;
- r.setNextMin(s), i = e._SCANNING_FOR_INCOMING
- }
- }
- i === this._LINKING_TO_OUTGOING && (ql.isTrue(null !== n, "found null for first outgoing dirEdge"), ql.isTrue(n.getEdgeRing() === t, "unable to link last incoming dirEdge"), r.setNextMin(n))
- }, e.prototype.getOutgoingDegree = function () {
- if (0 === arguments.length) {
- for (var t = 0, e = this.iterator(); e.hasNext();) {
- var n = e.next();
- n.isInResult() && t++
- }
- return t
- }
- if (1 === arguments.length) {
- for (var r = arguments[0], i = 0, o = this.iterator(); o.hasNext();) {
- var s = o.next();
- s.getEdgeRing() === r && i++
- }
- return i
- }
- }, e.prototype.getLabel = function () {
- return this._label
- }, e.prototype.findCoveredLineEdges = function () {
- for (var t = pl.NONE, e = this.iterator(); e.hasNext();) {
- var n = e.next(),
- r = n.getSym();
- if (!n.isLineEdge()) {
- if (n.isInResult()) {
- t = pl.INTERIOR;
- break
- }
- if (r.isInResult()) {
- t = pl.EXTERIOR;
- break
- }
- }
- }
- if (t === pl.NONE) return null;
- for (var i = t, o = this.iterator(); o.hasNext();) {
- var s = o.next(),
- a = s.getSym();
- s.isLineEdge() ? s.getEdge().setCovered(i === pl.INTERIOR) : (s.isInResult() && (i = pl.EXTERIOR), a.isInResult() && (i = pl.INTERIOR))
- }
- }, e.prototype.computeLabelling = function (e) {
- t.prototype.computeLabelling.call(this, e), this._label = new Dh(pl.NONE);
- for (var n = this.iterator(); n.hasNext();)
- for (var r = n.next().getEdge().getLabel(), i = 0; i < 2; i++) {
- var o = r.getLocation(i);
- o !== pl.INTERIOR && o !== pl.BOUNDARY || this._label.setLocation(i, pl.INTERIOR)
- }
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(Xp),
- Hp = function (t) {
- function e() {
- t.apply(this, arguments)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.createNode = function (t) {
- return new Bh(t, new Yp)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(Yh),
- Wp = function t() {
- this._pts = null, this._orientation = null;
- var e = arguments[0];
- this._pts = e, this._orientation = t.orientation(e)
- };
- Wp.prototype.compareTo = function (t) {
- var e = t;
- return Wp.compareOriented(this._pts, this._orientation, e._pts, e._orientation)
- }, Wp.prototype.interfaces_ = function () {
- return [il]
- }, Wp.prototype.getClass = function () {
- return Wp
- }, Wp.orientation = function (t) {
- return 1 === pc.increasingDirection(t)
- }, Wp.compareOriented = function (t, e, n, r) {
- for (var i = e ? 1 : -1, o = r ? 1 : -1, s = e ? t.length : -1, a = r ? n.length : -1, u = e ? 0 : t.length - 1, l = r ? 0 : n.length - 1;;) {
- var c = t[u].compareTo(n[l]);
- if (0 !== c) return c;
- var h = (u += i) === s,
- p = (l += o) === a;
- if (h && !p) return -1;
- if (!h && p) return 1;
- if (h && p) return 0
- }
- };
- var Jp = function () {
- this._edges = new lc, this._ocaMap = new Cc
- };
- Jp.prototype.print = function (t) {
- t.print("MULTILINESTRING ( ");
- for (var e = 0; e < this._edges.size(); e++) {
- var n = this._edges.get(e);
- e > 0 && t.print(","), t.print("(");
- for (var r = n.getCoordinates(), i = 0; i < r.length; i++) i > 0 && t.print(","), t.print(r[i].x + " " + r[i].y);
- t.println(")")
- }
- t.print(") ")
- }, Jp.prototype.addAll = function (t) {
- for (var e = t.iterator(); e.hasNext();) this.add(e.next())
- }, Jp.prototype.findEdgeIndex = function (t) {
- for (var e = 0; e < this._edges.size(); e++)
- if (this._edges.get(e).equals(t)) return e;
- return -1
- }, Jp.prototype.iterator = function () {
- return this._edges.iterator()
- }, Jp.prototype.getEdges = function () {
- return this._edges
- }, Jp.prototype.get = function (t) {
- return this._edges.get(t)
- }, Jp.prototype.findEqualEdge = function (t) {
- var e = new Wp(t.getCoordinates());
- return this._ocaMap.get(e)
- }, Jp.prototype.add = function (t) {
- this._edges.add(t);
- var e = new Wp(t.getCoordinates());
- this._ocaMap.put(e, t)
- }, Jp.prototype.interfaces_ = function () {
- return []
- }, Jp.prototype.getClass = function () {
- return Jp
- };
- var Zp = function () {};
- Zp.prototype.processIntersections = function (t, e, n, r) {}, Zp.prototype.isDone = function () {}, Zp.prototype.interfaces_ = function () {
- return []
- }, Zp.prototype.getClass = function () {
- return Zp
- };
- var Kp = function () {
- this._hasIntersection = !1, this._hasProper = !1, this._hasProperInterior = !1, this._hasInterior = !1, this._properIntersectionPoint = null, this._li = null, this._isSelfIntersection = null, this.numIntersections = 0, this.numInteriorIntersections = 0, this.numProperIntersections = 0, this.numTests = 0;
- var t = arguments[0];
- this._li = t
- };
- Kp.prototype.isTrivialIntersection = function (t, e, n, r) {
- if (t === n && 1 === this._li.getIntersectionNum()) {
- if (Kp.isAdjacentSegments(e, r)) return !0;
- if (t.isClosed()) {
- var i = t.size() - 1;
- if (0 === e && r === i || 0 === r && e === i) return !0
- }
- }
- return !1
- }, Kp.prototype.getProperIntersectionPoint = function () {
- return this._properIntersectionPoint
- }, Kp.prototype.hasProperInteriorIntersection = function () {
- return this._hasProperInterior
- }, Kp.prototype.getLineIntersector = function () {
- return this._li
- }, Kp.prototype.hasProperIntersection = function () {
- return this._hasProper
- }, Kp.prototype.processIntersections = function (t, e, n, r) {
- if (t === n && e === r) return null;
- this.numTests++;
- var i = t.getCoordinates()[e],
- o = t.getCoordinates()[e + 1],
- s = n.getCoordinates()[r],
- a = n.getCoordinates()[r + 1];
- this._li.computeIntersection(i, o, s, a), this._li.hasIntersection() && (this.numIntersections++, this._li.isInteriorIntersection() && (this.numInteriorIntersections++, this._hasInterior = !0), this.isTrivialIntersection(t, e, n, r) || (this._hasIntersection = !0, t.addIntersections(this._li, e, 0), n.addIntersections(this._li, r, 1), this._li.isProper() && (this.numProperIntersections++, this._hasProper = !0, this._hasProperInterior = !0)))
- }, Kp.prototype.hasIntersection = function () {
- return this._hasIntersection
- }, Kp.prototype.isDone = function () {
- return !1
- }, Kp.prototype.hasInteriorIntersection = function () {
- return this._hasInterior
- }, Kp.prototype.interfaces_ = function () {
- return [Zp]
- }, Kp.prototype.getClass = function () {
- return Kp
- }, Kp.isAdjacentSegments = function (t, e) {
- return 1 === Math.abs(t - e)
- };
- var Qp = function () {
- this.coord = null, this.segmentIndex = null, this.dist = null;
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2];
- this.coord = new ul(t), this.segmentIndex = e, this.dist = n
- };
- Qp.prototype.getSegmentIndex = function () {
- return this.segmentIndex
- }, Qp.prototype.getCoordinate = function () {
- return this.coord
- }, Qp.prototype.print = function (t) {
- t.print(this.coord), t.print(" seg # = " + this.segmentIndex), t.println(" dist = " + this.dist)
- }, Qp.prototype.compareTo = function (t) {
- var e = t;
- return this.compare(e.segmentIndex, e.dist)
- }, Qp.prototype.isEndPoint = function (t) {
- return 0 === this.segmentIndex && 0 === this.dist || this.segmentIndex === t
- }, Qp.prototype.toString = function () {
- return this.coord + " seg # = " + this.segmentIndex + " dist = " + this.dist
- }, Qp.prototype.getDistance = function () {
- return this.dist
- }, Qp.prototype.compare = function (t, e) {
- return this.segmentIndex < t ? -1 : this.segmentIndex > t ? 1 : this.dist < e ? -1 : this.dist > e ? 1 : 0
- }, Qp.prototype.interfaces_ = function () {
- return [il]
- }, Qp.prototype.getClass = function () {
- return Qp
- };
- var $p = function () {
- this._nodeMap = new Cc, this.edge = null;
- var t = arguments[0];
- this.edge = t
- };
- $p.prototype.print = function (t) {
- t.println("Intersections:");
- for (var e = this.iterator(); e.hasNext();) {
- e.next().print(t)
- }
- }, $p.prototype.iterator = function () {
- return this._nodeMap.values().iterator()
- }, $p.prototype.addSplitEdges = function (t) {
- this.addEndpoints();
- for (var e = this.iterator(), n = e.next(); e.hasNext();) {
- var r = e.next(),
- i = this.createSplitEdge(n, r);
- t.add(i), n = r
- }
- }, $p.prototype.addEndpoints = function () {
- var t = this.edge.pts.length - 1;
- this.add(this.edge.pts[0], 0, 0), this.add(this.edge.pts[t], t, 0)
- }, $p.prototype.createSplitEdge = function (t, e) {
- var n = e.segmentIndex - t.segmentIndex + 2,
- r = this.edge.pts[e.segmentIndex],
- i = e.dist > 0 || !e.coord.equals2D(r);
- i || n--;
- var o = new Array(n).fill(null),
- s = 0;
- o[s++] = new ul(t.coord);
- for (var a = t.segmentIndex + 1; a <= e.segmentIndex; a++) o[s++] = this.edge.pts[a];
- return i && (o[s] = e.coord), new of (o, new Dh(this.edge._label))
- }, $p.prototype.add = function (t, e, n) {
- var r = new Qp(t, e, n),
- i = this._nodeMap.get(r);
- return null !== i ? i : (this._nodeMap.put(r, r), r)
- }, $p.prototype.isIntersection = function (t) {
- for (var e = this.iterator(); e.hasNext();) {
- if (e.next().coord.equals(t)) return !0
- }
- return !1
- }, $p.prototype.interfaces_ = function () {
- return []
- }, $p.prototype.getClass = function () {
- return $p
- };
- var tf = function () {};
- tf.prototype.getChainStartIndices = function (t) {
- var e = 0,
- n = new lc;
- n.add(new _l(e));
- do {
- var r = this.findChainEnd(t, e);
- n.add(new _l(r)), e = r
- } while (e < t.length - 1);
- return tf.toIntArray(n)
- }, tf.prototype.findChainEnd = function (t, e) {
- for (var n = jh.quadrant(t[e], t[e + 1]), r = e + 1; r < t.length;) {
- if (jh.quadrant(t[r - 1], t[r]) !== n) break;
- r++
- }
- return r - 1
- }, tf.prototype.interfaces_ = function () {
- return []
- }, tf.prototype.getClass = function () {
- return tf
- }, tf.toIntArray = function (t) {
- for (var e = new Array(t.size()).fill(null), n = 0; n < e.length; n++) e[n] = t.get(n).intValue();
- return e
- };
- var ef = function () {
- this.e = null, this.pts = null, this.startIndex = null, this.env1 = new Ll, this.env2 = new Ll;
- var t = arguments[0];
- this.e = t, this.pts = t.getCoordinates();
- var e = new tf;
- this.startIndex = e.getChainStartIndices(this.pts)
- };
- ef.prototype.getCoordinates = function () {
- return this.pts
- }, ef.prototype.getMaxX = function (t) {
- var e = this.pts[this.startIndex[t]].x,
- n = this.pts[this.startIndex[t + 1]].x;
- return e > n ? e : n
- }, ef.prototype.getMinX = function (t) {
- var e = this.pts[this.startIndex[t]].x,
- n = this.pts[this.startIndex[t + 1]].x;
- return e < n ? e : n
- }, ef.prototype.computeIntersectsForChain = function () {
- if (4 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2],
- r = arguments[3];
- this.computeIntersectsForChain(this.startIndex[t], this.startIndex[t + 1], e, e.startIndex[n], e.startIndex[n + 1], r)
- } else if (6 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2],
- a = arguments[3],
- u = arguments[4],
- l = arguments[5],
- c = this.pts[i],
- h = this.pts[o],
- p = s.pts[a],
- f = s.pts[u];
- if (o - i == 1 && u - a == 1) return l.addIntersections(this.e, i, s.e, a), null;
- if (this.env1.init(c, h), this.env2.init(p, f), !this.env1.intersects(this.env2)) return null;
- var g = Math.trunc((i + o) / 2),
- d = Math.trunc((a + u) / 2);
- i < g && (a < d && this.computeIntersectsForChain(i, g, s, a, d, l), d < u && this.computeIntersectsForChain(i, g, s, d, u, l)), g < o && (a < d && this.computeIntersectsForChain(g, o, s, a, d, l), d < u && this.computeIntersectsForChain(g, o, s, d, u, l))
- }
- }, ef.prototype.getStartIndexes = function () {
- return this.startIndex
- }, ef.prototype.computeIntersects = function (t, e) {
- for (var n = 0; n < this.startIndex.length - 1; n++)
- for (var r = 0; r < t.startIndex.length - 1; r++) this.computeIntersectsForChain(n, t, r, e)
- }, ef.prototype.interfaces_ = function () {
- return []
- }, ef.prototype.getClass = function () {
- return ef
- };
- var nf = function t() {
- this._depth = Array(2).fill().map((function () {
- return Array(3)
- }));
- for (var e = 0; e < 2; e++)
- for (var n = 0; n < 3; n++) this._depth[e][n] = t.NULL_VALUE
- },
- rf = {
- NULL_VALUE: {
- configurable: !0
- }
- };
- nf.prototype.getDepth = function (t, e) {
- return this._depth[t][e]
- }, nf.prototype.setDepth = function (t, e, n) {
- this._depth[t][e] = n
- }, nf.prototype.isNull = function () {
- var t = this;
- if (0 === arguments.length) {
- for (var e = 0; e < 2; e++)
- for (var n = 0; n < 3; n++)
- if (t._depth[e][n] !== nf.NULL_VALUE) return !1;
- return !0
- }
- if (1 === arguments.length) {
- var r = arguments[0];
- return this._depth[r][1] === nf.NULL_VALUE
- }
- if (2 === arguments.length) {
- var i = arguments[0],
- o = arguments[1];
- return this._depth[i][o] === nf.NULL_VALUE
- }
- }, nf.prototype.normalize = function () {
- for (var t = this, e = 0; e < 2; e++)
- if (!t.isNull(e)) {
- var n = t._depth[e][1];
- t._depth[e][2] < n && (n = t._depth[e][2]), n < 0 && (n = 0);
- for (var r = 1; r < 3; r++) {
- var i = 0;
- t._depth[e][r] > n && (i = 1), t._depth[e][r] = i
- }
- }
- }, nf.prototype.getDelta = function (t) {
- return this._depth[t][Sh.RIGHT] - this._depth[t][Sh.LEFT]
- }, nf.prototype.getLocation = function (t, e) {
- return this._depth[t][e] <= 0 ? pl.EXTERIOR : pl.INTERIOR
- }, nf.prototype.toString = function () {
- return "A: " + this._depth[0][1] + "," + this._depth[0][2] + " B: " + this._depth[1][1] + "," + this._depth[1][2]
- }, nf.prototype.add = function () {
- var t = this;
- if (1 === arguments.length)
- for (var e = arguments[0], n = 0; n < 2; n++)
- for (var r = 1; r < 3; r++) {
- var i = e.getLocation(n, r);
- i !== pl.EXTERIOR && i !== pl.INTERIOR || (t.isNull(n, r) ? t._depth[n][r] = nf.depthAtLocation(i) : t._depth[n][r] += nf.depthAtLocation(i))
- } else if (3 === arguments.length) {
- var o = arguments[0],
- s = arguments[1],
- a = arguments[2];
- a === pl.INTERIOR && this._depth[o][s]++
- }
- }, nf.prototype.interfaces_ = function () {
- return []
- }, nf.prototype.getClass = function () {
- return nf
- }, nf.depthAtLocation = function (t) {
- return t === pl.EXTERIOR ? 0 : t === pl.INTERIOR ? 1 : nf.NULL_VALUE
- }, rf.NULL_VALUE.get = function () {
- return -1
- }, Object.defineProperties(nf, rf);
- var of = function (t) {
- function e() {
- if (t.call(this), this.pts = null, this._env = null, this.eiList = new $p(this), this._name = null, this._mce = null, this._isIsolated = !0, this._depth = new nf, this._depthDelta = 0, 1 === arguments.length) {
- var n = arguments[0];
- e.call(this, n, null)
- } else if (2 === arguments.length) {
- var r = arguments[0],
- i = arguments[1];
- this.pts = r, this._label = i
- }
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getDepth = function () {
- return this._depth
- }, e.prototype.getCollapsedEdge = function () {
- var t = new Array(2).fill(null);
- return t[0] = this.pts[0], t[1] = this.pts[1], new e(t, Dh.toLineLabel(this._label))
- }, e.prototype.isIsolated = function () {
- return this._isIsolated
- }, e.prototype.getCoordinates = function () {
- return this.pts
- }, e.prototype.setIsolated = function (t) {
- this._isIsolated = t
- }, e.prototype.setName = function (t) {
- this._name = t
- }, e.prototype.equals = function (t) {
- if (!(t instanceof e)) return !1;
- var n = t;
- if (this.pts.length !== n.pts.length) return !1;
- for (var r = !0, i = !0, o = this.pts.length, s = 0; s < this.pts.length; s++)
- if (this.pts[s].equals2D(n.pts[s]) || (r = !1), this.pts[s].equals2D(n.pts[--o]) || (i = !1), !r && !i) return !1;
- return !0
- }, e.prototype.getCoordinate = function () {
- if (0 === arguments.length) return this.pts.length > 0 ? this.pts[0] : null;
- if (1 === arguments.length) {
- var t = arguments[0];
- return this.pts[t]
- }
- }, e.prototype.print = function (t) {
- t.print("edge " + this._name + ": "), t.print("LINESTRING (");
- for (var e = 0; e < this.pts.length; e++) e > 0 && t.print(","), t.print(this.pts[e].x + " " + this.pts[e].y);
- t.print(") " + this._label + " " + this._depthDelta)
- }, e.prototype.computeIM = function (t) {
- e.updateIM(this._label, t)
- }, e.prototype.isCollapsed = function () {
- return !!this._label.isArea() && (3 === this.pts.length && !!this.pts[0].equals(this.pts[2]))
- }, e.prototype.isClosed = function () {
- return this.pts[0].equals(this.pts[this.pts.length - 1])
- }, e.prototype.getMaximumSegmentIndex = function () {
- return this.pts.length - 1
- }, e.prototype.getDepthDelta = function () {
- return this._depthDelta
- }, e.prototype.getNumPoints = function () {
- return this.pts.length
- }, e.prototype.printReverse = function (t) {
- t.print("edge " + this._name + ": ");
- for (var e = this.pts.length - 1; e >= 0; e--) t.print(this.pts[e] + " ");
- t.println("")
- }, e.prototype.getMonotoneChainEdge = function () {
- return null === this._mce && (this._mce = new ef(this)), this._mce
- }, e.prototype.getEnvelope = function () {
- if (null === this._env) {
- this._env = new Ll;
- for (var t = 0; t < this.pts.length; t++) this._env.expandToInclude(this.pts[t])
- }
- return this._env
- }, e.prototype.addIntersection = function (t, e, n, r) {
- var i = new ul(t.getIntersection(r)),
- o = e,
- s = t.getEdgeDistance(n, r),
- a = o + 1;
- if (a < this.pts.length) {
- var u = this.pts[a];
- i.equals2D(u) && (o = a, s = 0)
- }
- this.eiList.add(i, o, s)
- }, e.prototype.toString = function () {
- var t = new vl;
- t.append("edge " + this._name + ": "), t.append("LINESTRING (");
- for (var e = 0; e < this.pts.length; e++) e > 0 && t.append(","), t.append(this.pts[e].x + " " + this.pts[e].y);
- return t.append(") " + this._label + " " + this._depthDelta), t.toString()
- }, e.prototype.isPointwiseEqual = function (t) {
- if (this.pts.length !== t.pts.length) return !1;
- for (var e = 0; e < this.pts.length; e++)
- if (!this.pts[e].equals2D(t.pts[e])) return !1;
- return !0
- }, e.prototype.setDepthDelta = function (t) {
- this._depthDelta = t
- }, e.prototype.getEdgeIntersectionList = function () {
- return this.eiList
- }, e.prototype.addIntersections = function (t, e, n) {
- for (var r = 0; r < t.getIntersectionNum(); r++) this.addIntersection(t, e, n, r)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e.updateIM = function () {
- if (2 !== arguments.length) return t.prototype.updateIM.apply(this, arguments);
- var e = arguments[0],
- n = arguments[1];
- n.setAtLeastIfValid(e.getLocation(0, Sh.ON), e.getLocation(1, Sh.ON), 1), e.isArea() && (n.setAtLeastIfValid(e.getLocation(0, Sh.LEFT), e.getLocation(1, Sh.LEFT), 2), n.setAtLeastIfValid(e.getLocation(0, Sh.RIGHT), e.getLocation(1, Sh.RIGHT), 2))
- }, e
- }(qh), sf = function (t) {
- this._workingPrecisionModel = null, this._workingNoder = null, this._geomFact = null, this._graph = null, this._edgeList = new Jp, this._bufParams = t || null
- };
- sf.prototype.setWorkingPrecisionModel = function (t) {
- this._workingPrecisionModel = t
- }, sf.prototype.insertUniqueEdge = function (t) {
- var e = this._edgeList.findEqualEdge(t);
- if (null !== e) {
- var n = e.getLabel(),
- r = t.getLabel();
- e.isPointwiseEqual(t) || (r = new Dh(t.getLabel())).flip(), n.merge(r);
- var i = sf.depthDelta(r),
- o = e.getDepthDelta() + i;
- e.setDepthDelta(o)
- } else this._edgeList.add(t), t.setDepthDelta(sf.depthDelta(t.getLabel()))
- }, sf.prototype.buildSubgraphs = function (t, e) {
- for (var n = new lc, r = t.iterator(); r.hasNext();) {
- var i = r.next(),
- o = i.getRightmostCoordinate(),
- s = new kp(n).getDepth(o);
- i.computeDepth(s), i.findResultEdges(), n.add(i), e.add(i.getDirectedEdges(), i.getNodes())
- }
- }, sf.prototype.createSubgraphs = function (t) {
- for (var e = new lc, n = t.getNodes().iterator(); n.hasNext();) {
- var r = n.next();
- if (!r.isVisited()) {
- var i = new Th;
- i.create(r), e.add(i)
- }
- }
- return np.sort(e, np.reverseOrder()), e
- }, sf.prototype.createEmptyResultGeometry = function () {
- return this._geomFact.createPolygon()
- }, sf.prototype.getNoder = function (t) {
- if (null !== this._workingNoder) return this._workingNoder;
- var e = new Ip,
- n = new jl;
- return n.setPrecisionModel(t), e.setSegmentIntersector(new Kp(n)), e
- }, sf.prototype.buffer = function (t, e) {
- var n = this._workingPrecisionModel;
- null === n && (n = t.getPrecisionModel()), this._geomFact = t.getFactory();
- var r = new Fp(n, this._bufParams),
- i = new zp(t, e, r).getCurves();
- if (i.size() <= 0) return this.createEmptyResultGeometry();
- this.computeNodedEdges(i, n), this._graph = new Hh(new Hp), this._graph.addEdges(this._edgeList.getEdges());
- var o = this.createSubgraphs(this._graph),
- s = new Wh(this._geomFact);
- this.buildSubgraphs(o, s);
- var a = s.getPolygons();
- return a.size() <= 0 ? this.createEmptyResultGeometry() : this._geomFact.buildGeometry(a)
- }, sf.prototype.computeNodedEdges = function (t, e) {
- var n = this.getNoder(e);
- n.computeNodes(t);
- for (var r = n.getNodedSubstrings().iterator(); r.hasNext();) {
- var i = r.next(),
- o = i.getCoordinates();
- if (2 !== o.length || !o[0].equals2D(o[1])) {
- var s = i.getData(),
- a = new of (i.getCoordinates(), new Dh(s));
- this.insertUniqueEdge(a)
- }
- }
- }, sf.prototype.setNoder = function (t) {
- this._workingNoder = t
- }, sf.prototype.interfaces_ = function () {
- return []
- }, sf.prototype.getClass = function () {
- return sf
- }, sf.depthDelta = function (t) {
- var e = t.getLocation(0, Sh.LEFT),
- n = t.getLocation(0, Sh.RIGHT);
- return e === pl.INTERIOR && n === pl.EXTERIOR ? 1 : e === pl.EXTERIOR && n === pl.INTERIOR ? -1 : 0
- }, sf.convertSegStrings = function (t) {
- for (var e = new _h, n = new lc; t.hasNext();) {
- var r = t.next(),
- i = e.createLineString(r.getCoordinates());
- n.add(i)
- }
- return e.buildGeometry(n)
- };
- var af = function () {
- if (this._noder = null, this._scaleFactor = null, this._offsetX = null, this._offsetY = null, this._isScaled = !1, 2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- this._noder = t, this._scaleFactor = e, this._offsetX = 0, this._offsetY = 0, this._isScaled = !this.isIntegerPrecision()
- } else if (4 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = arguments[2],
- o = arguments[3];
- this._noder = n, this._scaleFactor = r, this._offsetX = i, this._offsetY = o, this._isScaled = !this.isIntegerPrecision()
- }
- };
- af.prototype.rescale = function () {
- var t = this;
- if (gl(arguments[0], ic))
- for (var e = arguments[0], n = e.iterator(); n.hasNext();) {
- var r = n.next();
- t.rescale(r.getCoordinates())
- } else if (arguments[0] instanceof Array) {
- for (var i = arguments[0], o = 0; o < i.length; o++) i[o].x = i[o].x / t._scaleFactor + t._offsetX, i[o].y = i[o].y / t._scaleFactor + t._offsetY;
- 2 === i.length && i[0].equals2D(i[1]) && Pl.out.println(i)
- }
- }, af.prototype.scale = function () {
- var t = this;
- if (gl(arguments[0], ic)) {
- for (var e = arguments[0], n = new lc, r = e.iterator(); r.hasNext();) {
- var i = r.next();
- n.add(new yp(t.scale(i.getCoordinates()), i.getData()))
- }
- return n
- }
- if (arguments[0] instanceof Array) {
- for (var o = arguments[0], s = new Array(o.length).fill(null), a = 0; a < o.length; a++) s[a] = new ul(Math.round((o[a].x - t._offsetX) * t._scaleFactor), Math.round((o[a].y - t._offsetY) * t._scaleFactor), o[a].z);
- var u = pc.removeRepeatedPoints(s);
- return u
- }
- }, af.prototype.isIntegerPrecision = function () {
- return 1 === this._scaleFactor
- }, af.prototype.getNodedSubstrings = function () {
- var t = this._noder.getNodedSubstrings();
- return this._isScaled && this.rescale(t), t
- }, af.prototype.computeNodes = function (t) {
- var e = t;
- this._isScaled && (e = this.scale(t)), this._noder.computeNodes(e)
- }, af.prototype.interfaces_ = function () {
- return [bp]
- }, af.prototype.getClass = function () {
- return af
- };
- var uf = function () {
- this._li = new jl, this._segStrings = null;
- var t = arguments[0];
- this._segStrings = t
- },
- lf = {
- fact: {
- configurable: !0
- }
- };
- uf.prototype.checkEndPtVertexIntersections = function () {
- var t = this;
- if (0 === arguments.length)
- for (var e = this._segStrings.iterator(); e.hasNext();) {
- var n = e.next(),
- r = n.getCoordinates();
- t.checkEndPtVertexIntersections(r[0], t._segStrings), t.checkEndPtVertexIntersections(r[r.length - 1], t._segStrings)
- } else if (2 === arguments.length)
- for (var i = arguments[0], o = arguments[1], s = o.iterator(); s.hasNext();)
- for (var a = s.next(), u = a.getCoordinates(), l = 1; l < u.length - 1; l++)
- if (u[l].equals(i)) throw new kl("found endpt/interior pt intersection at index " + l + " :pt " + i)
- }, uf.prototype.checkInteriorIntersections = function () {
- var t = this;
- if (0 === arguments.length)
- for (var e = this._segStrings.iterator(); e.hasNext();)
- for (var n = e.next(), r = this._segStrings.iterator(); r.hasNext();) {
- var i = r.next();
- t.checkInteriorIntersections(n, i)
- } else if (2 === arguments.length)
- for (var o = arguments[0], s = arguments[1], a = o.getCoordinates(), u = s.getCoordinates(), l = 0; l < a.length - 1; l++)
- for (var c = 0; c < u.length - 1; c++) t.checkInteriorIntersections(o, l, s, c);
- else if (4 === arguments.length) {
- var h = arguments[0],
- p = arguments[1],
- f = arguments[2],
- g = arguments[3];
- if (h === f && p === g) return null;
- var d = h.getCoordinates()[p],
- y = h.getCoordinates()[p + 1],
- v = f.getCoordinates()[g],
- _ = f.getCoordinates()[g + 1];
- if (this._li.computeIntersection(d, y, v, _), this._li.hasIntersection() && (this._li.isProper() || this.hasInteriorIntersection(this._li, d, y) || this.hasInteriorIntersection(this._li, v, _))) throw new kl("found non-noded intersection at " + d + "-" + y + " and " + v + "-" + _)
- }
- }, uf.prototype.checkValid = function () {
- this.checkEndPtVertexIntersections(), this.checkInteriorIntersections(), this.checkCollapses()
- }, uf.prototype.checkCollapses = function () {
- var t = this;
- if (0 === arguments.length)
- for (var e = this._segStrings.iterator(); e.hasNext();) {
- var n = e.next();
- t.checkCollapses(n)
- } else if (1 === arguments.length)
- for (var r = arguments[0], i = r.getCoordinates(), o = 0; o < i.length - 2; o++) t.checkCollapse(i[o], i[o + 1], i[o + 2])
- }, uf.prototype.hasInteriorIntersection = function (t, e, n) {
- for (var r = 0; r < t.getIntersectionNum(); r++) {
- var i = t.getIntersection(r);
- if (!i.equals(e) && !i.equals(n)) return !0
- }
- return !1
- }, uf.prototype.checkCollapse = function (t, e, n) {
- if (t.equals(n)) throw new kl("found non-noded collapse at " + uf.fact.createLineString([t, e, n]))
- }, uf.prototype.interfaces_ = function () {
- return []
- }, uf.prototype.getClass = function () {
- return uf
- }, lf.fact.get = function () {
- return new _h
- }, Object.defineProperties(uf, lf);
- var cf = function () {
- this._li = null, this._pt = null, this._originalPt = null, this._ptScaled = null, this._p0Scaled = null, this._p1Scaled = null, this._scaleFactor = null, this._minx = null, this._maxx = null, this._miny = null, this._maxy = null, this._corner = new Array(4).fill(null), this._safeEnv = null;
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2];
- if (this._originalPt = t, this._pt = t, this._scaleFactor = e, this._li = n, e <= 0) throw new el("Scale factor must be non-zero");
- 1 !== e && (this._pt = new ul(this.scale(t.x), this.scale(t.y)), this._p0Scaled = new ul, this._p1Scaled = new ul), this.initCorners(this._pt)
- },
- hf = {
- SAFE_ENV_EXPANSION_FACTOR: {
- configurable: !0
- }
- };
- cf.prototype.intersectsScaled = function (t, e) {
- var n = Math.min(t.x, e.x),
- r = Math.max(t.x, e.x),
- i = Math.min(t.y, e.y),
- o = Math.max(t.y, e.y),
- s = this._maxx < n || this._minx > r || this._maxy < i || this._miny > o;
- if (s) return !1;
- var a = this.intersectsToleranceSquare(t, e);
- return ql.isTrue(!(s && a), "Found bad envelope test"), a
- }, cf.prototype.initCorners = function (t) {
- var e = .5;
- this._minx = t.x - e, this._maxx = t.x + e, this._miny = t.y - e, this._maxy = t.y + e, this._corner[0] = new ul(this._maxx, this._maxy), this._corner[1] = new ul(this._minx, this._maxy), this._corner[2] = new ul(this._minx, this._miny), this._corner[3] = new ul(this._maxx, this._miny)
- }, cf.prototype.intersects = function (t, e) {
- return 1 === this._scaleFactor ? this.intersectsScaled(t, e) : (this.copyScaled(t, this._p0Scaled), this.copyScaled(e, this._p1Scaled), this.intersectsScaled(this._p0Scaled, this._p1Scaled))
- }, cf.prototype.scale = function (t) {
- return Math.round(t * this._scaleFactor)
- }, cf.prototype.getCoordinate = function () {
- return this._originalPt
- }, cf.prototype.copyScaled = function (t, e) {
- e.x = this.scale(t.x), e.y = this.scale(t.y)
- }, cf.prototype.getSafeEnvelope = function () {
- if (null === this._safeEnv) {
- var t = cf.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor;
- this._safeEnv = new Ll(this._originalPt.x - t, this._originalPt.x + t, this._originalPt.y - t, this._originalPt.y + t)
- }
- return this._safeEnv
- }, cf.prototype.intersectsPixelClosure = function (t, e) {
- return this._li.computeIntersection(t, e, this._corner[0], this._corner[1]), !!this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[1], this._corner[2]), !!this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[2], this._corner[3]), !!this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[3], this._corner[0]), !!this._li.hasIntersection())))
- }, cf.prototype.intersectsToleranceSquare = function (t, e) {
- var n = !1,
- r = !1;
- return this._li.computeIntersection(t, e, this._corner[0], this._corner[1]), !!this._li.isProper() || (this._li.computeIntersection(t, e, this._corner[1], this._corner[2]), !!this._li.isProper() || (this._li.hasIntersection() && (n = !0), this._li.computeIntersection(t, e, this._corner[2], this._corner[3]), !!this._li.isProper() || (this._li.hasIntersection() && (r = !0), this._li.computeIntersection(t, e, this._corner[3], this._corner[0]), !!this._li.isProper() || (!(!n || !r) || (!!t.equals(this._pt) || !!e.equals(this._pt))))))
- }, cf.prototype.addSnappedNode = function (t, e) {
- var n = t.getCoordinate(e),
- r = t.getCoordinate(e + 1);
- return !!this.intersects(n, r) && (t.addIntersection(this.getCoordinate(), e), !0)
- }, cf.prototype.interfaces_ = function () {
- return []
- }, cf.prototype.getClass = function () {
- return cf
- }, hf.SAFE_ENV_EXPANSION_FACTOR.get = function () {
- return .75
- }, Object.defineProperties(cf, hf);
- var pf = function () {
- this.tempEnv1 = new Ll, this.selectedSegment = new vp
- };
- pf.prototype.select = function () {
- if (1 === arguments.length);
- else if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- t.getLineSegment(e, this.selectedSegment), this.select(this.selectedSegment)
- }
- }, pf.prototype.interfaces_ = function () {
- return []
- }, pf.prototype.getClass = function () {
- return pf
- };
- var ff = function () {
- this._index = null;
- var t = arguments[0];
- this._index = t
- },
- gf = {
- HotPixelSnapAction: {
- configurable: !0
- }
- };
- ff.prototype.snap = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return this.snap(t, null, -1)
- }
- if (3 === arguments.length) {
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2],
- i = e.getSafeEnvelope(),
- o = new df(e, n, r);
- return this._index.query(i, {
- interfaces_: function () {
- return [Qh]
- },
- visitItem: function (t) {
- t.select(i, o)
- }
- }), o.isNodeAdded()
- }
- }, ff.prototype.interfaces_ = function () {
- return []
- }, ff.prototype.getClass = function () {
- return ff
- }, gf.HotPixelSnapAction.get = function () {
- return df
- }, Object.defineProperties(ff, gf);
- var df = function (t) {
- function e() {
- t.call(this), this._hotPixel = null, this._parentEdge = null, this._hotPixelVertexIndex = null, this._isNodeAdded = !1;
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2];
- this._hotPixel = e, this._parentEdge = n, this._hotPixelVertexIndex = r
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.isNodeAdded = function () {
- return this._isNodeAdded
- }, e.prototype.select = function () {
- if (2 !== arguments.length) return t.prototype.select.apply(this, arguments);
- var e = arguments[0],
- n = arguments[1],
- r = e.getContext();
- if (null !== this._parentEdge && r === this._parentEdge && n === this._hotPixelVertexIndex) return null;
- this._isNodeAdded = this._hotPixel.addSnappedNode(r, n)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(pf),
- yf = function () {
- this._li = null, this._interiorIntersections = null;
- var t = arguments[0];
- this._li = t, this._interiorIntersections = new lc
- };
- yf.prototype.processIntersections = function (t, e, n, r) {
- if (t === n && e === r) return null;
- var i = t.getCoordinates()[e],
- o = t.getCoordinates()[e + 1],
- s = n.getCoordinates()[r],
- a = n.getCoordinates()[r + 1];
- if (this._li.computeIntersection(i, o, s, a), this._li.hasIntersection() && this._li.isInteriorIntersection()) {
- for (var u = 0; u < this._li.getIntersectionNum(); u++) this._interiorIntersections.add(this._li.getIntersection(u));
- t.addIntersections(this._li, e, 0), n.addIntersections(this._li, r, 1)
- }
- }, yf.prototype.isDone = function () {
- return !1
- }, yf.prototype.getInteriorIntersections = function () {
- return this._interiorIntersections
- }, yf.prototype.interfaces_ = function () {
- return [Zp]
- }, yf.prototype.getClass = function () {
- return yf
- };
- var vf = function () {
- this._pm = null, this._li = null, this._scaleFactor = null, this._noder = null, this._pointSnapper = null, this._nodedSegStrings = null;
- var t = arguments[0];
- this._pm = t, this._li = new jl, this._li.setPrecisionModel(t), this._scaleFactor = t.getScale()
- };
- vf.prototype.checkCorrectness = function (t) {
- var e = yp.getNodedSubstrings(t),
- n = new uf(e);
- try {
- n.checkValid()
- } catch (t) {
- if (!(t instanceof Sl)) throw t;
- t.printStackTrace()
- }
- }, vf.prototype.getNodedSubstrings = function () {
- return yp.getNodedSubstrings(this._nodedSegStrings)
- }, vf.prototype.snapRound = function (t, e) {
- var n = this.findInteriorIntersections(t, e);
- this.computeIntersectionSnaps(n), this.computeVertexSnaps(t)
- }, vf.prototype.findInteriorIntersections = function (t, e) {
- var n = new yf(e);
- return this._noder.setSegmentIntersector(n), this._noder.computeNodes(t), n.getInteriorIntersections()
- }, vf.prototype.computeVertexSnaps = function () {
- var t = this;
- if (gl(arguments[0], ic))
- for (var e = arguments[0], n = e.iterator(); n.hasNext();) {
- var r = n.next();
- t.computeVertexSnaps(r)
- } else if (arguments[0] instanceof yp)
- for (var i = arguments[0], o = i.getCoordinates(), s = 0; s < o.length; s++) {
- var a = new cf(o[s], t._scaleFactor, t._li),
- u = t._pointSnapper.snap(a, i, s);
- u && i.addIntersection(o[s], s)
- }
- }, vf.prototype.computeNodes = function (t) {
- this._nodedSegStrings = t, this._noder = new Ip, this._pointSnapper = new ff(this._noder.getIndex()), this.snapRound(t, this._li)
- }, vf.prototype.computeIntersectionSnaps = function (t) {
- for (var e = this, n = t.iterator(); n.hasNext();) {
- var r = n.next(),
- i = new cf(r, e._scaleFactor, e._li);
- e._pointSnapper.snap(i)
- }
- }, vf.prototype.interfaces_ = function () {
- return [bp]
- }, vf.prototype.getClass = function () {
- return vf
- };
- var _f = function () {
- if (this._argGeom = null, this._distance = null, this._bufParams = new Sp, this._resultGeometry = null, this._saveException = null, 1 === arguments.length) {
- var t = arguments[0];
- this._argGeom = t
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- this._argGeom = e, this._bufParams = n
- }
- },
- mf = {
- CAP_ROUND: {
- configurable: !0
- },
- CAP_BUTT: {
- configurable: !0
- },
- CAP_FLAT: {
- configurable: !0
- },
- CAP_SQUARE: {
- configurable: !0
- },
- MAX_PRECISION_DIGITS: {
- configurable: !0
- }
- };
- _f.prototype.bufferFixedPrecision = function (t) {
- var e = new af(new vf(new gh(1)), t.getScale()),
- n = new sf(this._bufParams);
- n.setWorkingPrecisionModel(t), n.setNoder(e), this._resultGeometry = n.buffer(this._argGeom, this._distance)
- }, _f.prototype.bufferReducedPrecision = function () {
- var t = this;
- if (0 === arguments.length) {
- for (var e = _f.MAX_PRECISION_DIGITS; e >= 0; e--) {
- try {
- t.bufferReducedPrecision(e)
- } catch (e) {
- if (!(e instanceof Oh)) throw e;
- t._saveException = e
- }
- if (null !== t._resultGeometry) return null
- }
- throw this._saveException
- }
- if (1 === arguments.length) {
- var n = arguments[0],
- r = _f.precisionScaleFactor(this._argGeom, this._distance, n),
- i = new gh(r);
- this.bufferFixedPrecision(i)
- }
- }, _f.prototype.computeGeometry = function () {
- if (this.bufferOriginalPrecision(), null !== this._resultGeometry) return null;
- var t = this._argGeom.getFactory().getPrecisionModel();
- t.getType() === gh.FIXED ? this.bufferFixedPrecision(t) : this.bufferReducedPrecision()
- }, _f.prototype.setQuadrantSegments = function (t) {
- this._bufParams.setQuadrantSegments(t)
- }, _f.prototype.bufferOriginalPrecision = function () {
- try {
- var t = new sf(this._bufParams);
- this._resultGeometry = t.buffer(this._argGeom, this._distance)
- } catch (t) {
- if (!(t instanceof kl)) throw t;
- this._saveException = t
- }
- }, _f.prototype.getResultGeometry = function (t) {
- return this._distance = t, this.computeGeometry(), this._resultGeometry
- }, _f.prototype.setEndCapStyle = function (t) {
- this._bufParams.setEndCapStyle(t)
- }, _f.prototype.interfaces_ = function () {
- return []
- }, _f.prototype.getClass = function () {
- return _f
- }, _f.bufferOp = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = new _f(t),
- r = n.getResultGeometry(e);
- return r
- }
- if (3 === arguments.length) {
- if (Number.isInteger(arguments[2]) && arguments[0] instanceof Wl && "number" == typeof arguments[1]) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2],
- a = new _f(i);
- a.setQuadrantSegments(s);
- var u = a.getResultGeometry(o);
- return u
- }
- if (arguments[2] instanceof Sp && arguments[0] instanceof Wl && "number" == typeof arguments[1]) {
- var l = arguments[0],
- c = arguments[1],
- h = arguments[2],
- p = new _f(l, h),
- f = p.getResultGeometry(c);
- return f
- }
- } else if (4 === arguments.length) {
- var g = arguments[0],
- d = arguments[1],
- y = arguments[2],
- v = arguments[3],
- _ = new _f(g);
- _.setQuadrantSegments(y), _.setEndCapStyle(v);
- var m = _.getResultGeometry(d);
- return m
- }
- }, _f.precisionScaleFactor = function (t, e, n) {
- var r = t.getEnvelopeInternal(),
- i = dl.max(Math.abs(r.getMaxX()), Math.abs(r.getMaxY()), Math.abs(r.getMinX()), Math.abs(r.getMinY())) + 2 * (e > 0 ? e : 0),
- o = n - Math.trunc(Math.log(i) / Math.log(10) + 1);
- return Math.pow(10, o)
- }, mf.CAP_ROUND.get = function () {
- return Sp.CAP_ROUND
- }, mf.CAP_BUTT.get = function () {
- return Sp.CAP_FLAT
- }, mf.CAP_FLAT.get = function () {
- return Sp.CAP_FLAT
- }, mf.CAP_SQUARE.get = function () {
- return Sp.CAP_SQUARE
- }, mf.MAX_PRECISION_DIGITS.get = function () {
- return 12
- }, Object.defineProperties(_f, mf);
- var xf = function () {
- this._pt = [new ul, new ul], this._distance = nl.NaN, this._isNull = !0
- };
- xf.prototype.getCoordinates = function () {
- return this._pt
- }, xf.prototype.getCoordinate = function (t) {
- return this._pt[t]
- }, xf.prototype.setMinimum = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.setMinimum(t._pt[0], t._pt[1])
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- if (this._isNull) return this.initialize(e, n), null;
- var r = e.distance(n);
- r < this._distance && this.initialize(e, n, r)
- }
- }, xf.prototype.initialize = function () {
- if (0 === arguments.length) this._isNull = !0;
- else if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- this._pt[0].setCoordinate(t), this._pt[1].setCoordinate(e), this._distance = t.distance(e), this._isNull = !1
- } else if (3 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = arguments[2];
- this._pt[0].setCoordinate(n), this._pt[1].setCoordinate(r), this._distance = i, this._isNull = !1
- }
- }, xf.prototype.getDistance = function () {
- return this._distance
- }, xf.prototype.setMaximum = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.setMaximum(t._pt[0], t._pt[1])
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- if (this._isNull) return this.initialize(e, n), null;
- var r = e.distance(n);
- r > this._distance && this.initialize(e, n, r)
- }
- }, xf.prototype.interfaces_ = function () {
- return []
- }, xf.prototype.getClass = function () {
- return xf
- };
- var Ef = function () {};
- Ef.prototype.interfaces_ = function () {
- return []
- }, Ef.prototype.getClass = function () {
- return Ef
- }, Ef.computeDistance = function () {
- if (arguments[2] instanceof xf && arguments[0] instanceof Zc && arguments[1] instanceof ul)
- for (var t = arguments[0], e = arguments[1], n = arguments[2], r = t.getCoordinates(), i = new vp, o = 0; o < r.length - 1; o++) {
- i.setCoordinates(r[o], r[o + 1]);
- var s = i.closestPoint(e);
- n.setMinimum(s, e)
- } else if (arguments[2] instanceof xf && arguments[0] instanceof th && arguments[1] instanceof ul) {
- var a = arguments[0],
- u = arguments[1],
- l = arguments[2];
- Ef.computeDistance(a.getExteriorRing(), u, l);
- for (var c = 0; c < a.getNumInteriorRing(); c++) Ef.computeDistance(a.getInteriorRingN(c), u, l)
- } else if (arguments[2] instanceof xf && arguments[0] instanceof Wl && arguments[1] instanceof ul) {
- var h = arguments[0],
- p = arguments[1],
- f = arguments[2];
- if (h instanceof Zc) Ef.computeDistance(h, p, f);
- else if (h instanceof th) Ef.computeDistance(h, p, f);
- else if (h instanceof kc)
- for (var g = h, d = 0; d < g.getNumGeometries(); d++) {
- var y = g.getGeometryN(d);
- Ef.computeDistance(y, p, f)
- } else f.setMinimum(h.getCoordinate(), p)
- } else if (arguments[2] instanceof xf && arguments[0] instanceof vp && arguments[1] instanceof ul) {
- var v = arguments[0],
- _ = arguments[1],
- m = arguments[2],
- x = v.closestPoint(_);
- m.setMinimum(x, _)
- }
- };
- var bf = function (t) {
- this._maxPtDist = new xf, this._inputGeom = t || null
- },
- wf = {
- MaxPointDistanceFilter: {
- configurable: !0
- },
- MaxMidpointDistanceFilter: {
- configurable: !0
- }
- };
- bf.prototype.computeMaxMidpointDistance = function (t) {
- var e = new Nf(this._inputGeom);
- t.apply(e), this._maxPtDist.setMaximum(e.getMaxPointDistance())
- }, bf.prototype.computeMaxVertexDistance = function (t) {
- var e = new If(this._inputGeom);
- t.apply(e), this._maxPtDist.setMaximum(e.getMaxPointDistance())
- }, bf.prototype.findDistance = function (t) {
- return this.computeMaxVertexDistance(t), this.computeMaxMidpointDistance(t), this._maxPtDist.getDistance()
- }, bf.prototype.getDistancePoints = function () {
- return this._maxPtDist
- }, bf.prototype.interfaces_ = function () {
- return []
- }, bf.prototype.getClass = function () {
- return bf
- }, wf.MaxPointDistanceFilter.get = function () {
- return If
- }, wf.MaxMidpointDistanceFilter.get = function () {
- return Nf
- }, Object.defineProperties(bf, wf);
- var If = function (t) {
- this._maxPtDist = new xf, this._minPtDist = new xf, this._geom = t || null
- };
- If.prototype.filter = function (t) {
- this._minPtDist.initialize(), Ef.computeDistance(this._geom, t, this._minPtDist), this._maxPtDist.setMaximum(this._minPtDist)
- }, If.prototype.getMaxPointDistance = function () {
- return this._maxPtDist
- }, If.prototype.interfaces_ = function () {
- return [Kl]
- }, If.prototype.getClass = function () {
- return If
- };
- var Nf = function (t) {
- this._maxPtDist = new xf, this._minPtDist = new xf, this._geom = t || null
- };
- Nf.prototype.filter = function (t, e) {
- if (0 === e) return null;
- var n = t.getCoordinate(e - 1),
- r = t.getCoordinate(e),
- i = new ul((n.x + r.x) / 2, (n.y + r.y) / 2);
- this._minPtDist.initialize(), Ef.computeDistance(this._geom, i, this._minPtDist), this._maxPtDist.setMaximum(this._minPtDist)
- }, Nf.prototype.isDone = function () {
- return !1
- }, Nf.prototype.isGeometryChanged = function () {
- return !1
- }, Nf.prototype.getMaxPointDistance = function () {
- return this._maxPtDist
- }, Nf.prototype.interfaces_ = function () {
- return [Fc]
- }, Nf.prototype.getClass = function () {
- return Nf
- };
- var Sf = function (t) {
- this._comps = t || null
- };
- Sf.prototype.filter = function (t) {
- t instanceof th && this._comps.add(t)
- }, Sf.prototype.interfaces_ = function () {
- return [Dc]
- }, Sf.prototype.getClass = function () {
- return Sf
- }, Sf.getPolygons = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return Sf.getPolygons(t, new lc)
- }
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return e instanceof th ? n.add(e) : e instanceof kc && e.apply(new Sf(n)), n
- }
- };
- var Cf = function () {
- if (this._lines = null, this._isForcedToLineString = !1, 1 === arguments.length) {
- var t = arguments[0];
- this._lines = t
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- this._lines = e, this._isForcedToLineString = n
- }
- };
- Cf.prototype.filter = function (t) {
- if (this._isForcedToLineString && t instanceof nh) {
- var e = t.getFactory().createLineString(t.getCoordinateSequence());
- return this._lines.add(e), null
- }
- t instanceof Zc && this._lines.add(t)
- }, Cf.prototype.setForceToLineString = function (t) {
- this._isForcedToLineString = t
- }, Cf.prototype.interfaces_ = function () {
- return [Hl]
- }, Cf.prototype.getClass = function () {
- return Cf
- }, Cf.getGeometry = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return t.getFactory().buildGeometry(Cf.getLines(t))
- }
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return e.getFactory().buildGeometry(Cf.getLines(e, n))
- }
- }, Cf.getLines = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return Cf.getLines(t, !1)
- }
- if (2 === arguments.length) {
- if (gl(arguments[0], ic) && gl(arguments[1], ic)) {
- for (var e = arguments[0], n = arguments[1], r = e.iterator(); r.hasNext();) {
- var i = r.next();
- Cf.getLines(i, n)
- }
- return n
- }
- if (arguments[0] instanceof Wl && "boolean" == typeof arguments[1]) {
- var o = arguments[0],
- s = arguments[1],
- a = new lc;
- return o.apply(new Cf(a, s)), a
- }
- if (arguments[0] instanceof Wl && gl(arguments[1], ic)) {
- var u = arguments[0],
- l = arguments[1];
- return u instanceof Zc ? l.add(u) : u.apply(new Cf(l)), l
- }
- } else if (3 === arguments.length) {
- if ("boolean" == typeof arguments[2] && gl(arguments[0], ic) && gl(arguments[1], ic)) {
- for (var c = arguments[0], h = arguments[1], p = arguments[2], f = c.iterator(); f.hasNext();) {
- var g = f.next();
- Cf.getLines(g, h, p)
- }
- return h
- }
- if ("boolean" == typeof arguments[2] && arguments[0] instanceof Wl && gl(arguments[1], ic)) {
- var d = arguments[0],
- y = arguments[1],
- v = arguments[2];
- return d.apply(new Cf(y, v)), y
- }
- }
- };
- var Pf = function () {
- if (this._boundaryRule = Ql.OGC_SFS_BOUNDARY_RULE, this._isIn = null, this._numBoundaries = null, 0 === arguments.length);
- else if (1 === arguments.length) {
- var t = arguments[0];
- if (null === t) throw new el("Rule must be non-null");
- this._boundaryRule = t
- }
- };
- Pf.prototype.locateInternal = function () {
- var t = this;
- if (arguments[0] instanceof ul && arguments[1] instanceof th) {
- var e = arguments[0],
- n = arguments[1];
- if (n.isEmpty()) return pl.EXTERIOR;
- var r = n.getExteriorRing(),
- i = this.locateInPolygonRing(e, r);
- if (i === pl.EXTERIOR) return pl.EXTERIOR;
- if (i === pl.BOUNDARY) return pl.BOUNDARY;
- for (var o = 0; o < n.getNumInteriorRing(); o++) {
- var s = n.getInteriorRingN(o),
- a = t.locateInPolygonRing(e, s);
- if (a === pl.INTERIOR) return pl.EXTERIOR;
- if (a === pl.BOUNDARY) return pl.BOUNDARY
- }
- return pl.INTERIOR
- }
- if (arguments[0] instanceof ul && arguments[1] instanceof Zc) {
- var u = arguments[0],
- l = arguments[1];
- if (!l.getEnvelopeInternal().intersects(u)) return pl.EXTERIOR;
- var c = l.getCoordinates();
- return l.isClosed() || !u.equals(c[0]) && !u.equals(c[c.length - 1]) ? Xl.isOnLine(u, c) ? pl.INTERIOR : pl.EXTERIOR : pl.BOUNDARY
- }
- if (arguments[0] instanceof ul && arguments[1] instanceof Qc) {
- var h = arguments[0],
- p = arguments[1],
- f = p.getCoordinate();
- return f.equals2D(h) ? pl.INTERIOR : pl.EXTERIOR
- }
- }, Pf.prototype.locateInPolygonRing = function (t, e) {
- return e.getEnvelopeInternal().intersects(t) ? Xl.locatePointInRing(t, e.getCoordinates()) : pl.EXTERIOR
- }, Pf.prototype.intersects = function (t, e) {
- return this.locate(t, e) !== pl.EXTERIOR
- }, Pf.prototype.updateLocationInfo = function (t) {
- t === pl.INTERIOR && (this._isIn = !0), t === pl.BOUNDARY && this._numBoundaries++
- }, Pf.prototype.computeLocation = function (t, e) {
- var n = this;
- if (e instanceof Qc && this.updateLocationInfo(this.locateInternal(t, e)), e instanceof Zc) this.updateLocationInfo(this.locateInternal(t, e));
- else if (e instanceof th) this.updateLocationInfo(this.locateInternal(t, e));
- else if (e instanceof Gc)
- for (var r = e, i = 0; i < r.getNumGeometries(); i++) {
- var o = r.getGeometryN(i);
- n.updateLocationInfo(n.locateInternal(t, o))
- } else if (e instanceof rh)
- for (var s = e, a = 0; a < s.getNumGeometries(); a++) {
- var u = s.getGeometryN(a);
- n.updateLocationInfo(n.locateInternal(t, u))
- } else if (e instanceof kc)
- for (var l = new Up(e); l.hasNext();) {
- var c = l.next();
- c !== e && n.computeLocation(t, c)
- }
- }, Pf.prototype.locate = function (t, e) {
- return e.isEmpty() ? pl.EXTERIOR : e instanceof Zc || e instanceof th ? this.locateInternal(t, e) : (this._isIn = !1, this._numBoundaries = 0, this.computeLocation(t, e), this._boundaryRule.isInBoundary(this._numBoundaries) ? pl.BOUNDARY : this._numBoundaries > 0 || this._isIn ? pl.INTERIOR : pl.EXTERIOR)
- }, Pf.prototype.interfaces_ = function () {
- return []
- }, Pf.prototype.getClass = function () {
- return Pf
- };
- var Mf = function t() {
- if (this._component = null, this._segIndex = null, this._pt = null, 2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- t.call(this, e, t.INSIDE_AREA, n)
- } else if (3 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2];
- this._component = r, this._segIndex = i, this._pt = o
- }
- },
- Lf = {
- INSIDE_AREA: {
- configurable: !0
- }
- };
- Mf.prototype.isInsideArea = function () {
- return this._segIndex === Mf.INSIDE_AREA
- }, Mf.prototype.getCoordinate = function () {
- return this._pt
- }, Mf.prototype.getGeometryComponent = function () {
- return this._component
- }, Mf.prototype.getSegmentIndex = function () {
- return this._segIndex
- }, Mf.prototype.interfaces_ = function () {
- return []
- }, Mf.prototype.getClass = function () {
- return Mf
- }, Lf.INSIDE_AREA.get = function () {
- return -1
- }, Object.defineProperties(Mf, Lf);
- var Of = function (t) {
- this._pts = t || null
- };
- Of.prototype.filter = function (t) {
- t instanceof Qc && this._pts.add(t)
- }, Of.prototype.interfaces_ = function () {
- return [Dc]
- }, Of.prototype.getClass = function () {
- return Of
- }, Of.getPoints = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return t instanceof Qc ? np.singletonList(t) : Of.getPoints(t, new lc)
- }
- if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- return e instanceof Qc ? n.add(e) : e instanceof kc && e.apply(new Of(n)), n
- }
- };
- var Rf = function () {
- this._locations = null;
- var t = arguments[0];
- this._locations = t
- };
- Rf.prototype.filter = function (t) {
- (t instanceof Qc || t instanceof Zc || t instanceof th) && this._locations.add(new Mf(t, 0, t.getCoordinate()))
- }, Rf.prototype.interfaces_ = function () {
- return [Dc]
- }, Rf.prototype.getClass = function () {
- return Rf
- }, Rf.getLocations = function (t) {
- var e = new lc;
- return t.apply(new Rf(e)), e
- };
- var Tf = function () {
- if (this._geom = null, this._terminateDistance = 0, this._ptLocator = new Pf, this._minDistanceLocation = null, this._minDistance = nl.MAX_VALUE, 2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- this._geom = [t, e], this._terminateDistance = 0
- } else if (3 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = arguments[2];
- this._geom = new Array(2).fill(null), this._geom[0] = n, this._geom[1] = r, this._terminateDistance = i
- }
- };
- Tf.prototype.computeContainmentDistance = function () {
- var t = this;
- if (0 === arguments.length) {
- var e = new Array(2).fill(null);
- if (this.computeContainmentDistance(0, e), this._minDistance <= this._terminateDistance) return null;
- this.computeContainmentDistance(1, e)
- } else if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = 1 - n,
- o = Sf.getPolygons(this._geom[n]);
- if (o.size() > 0) {
- var s = Rf.getLocations(this._geom[i]);
- if (this.computeContainmentDistance(s, o, r), this._minDistance <= this._terminateDistance) return this._minDistanceLocation[i] = r[0], this._minDistanceLocation[n] = r[1], null
- }
- } else if (3 === arguments.length)
- if (arguments[2] instanceof Array && gl(arguments[0], ac) && gl(arguments[1], ac)) {
- for (var a = arguments[0], u = arguments[1], l = arguments[2], c = 0; c < a.size(); c++)
- for (var h = a.get(c), p = 0; p < u.size(); p++)
- if (t.computeContainmentDistance(h, u.get(p), l), t._minDistance <= t._terminateDistance) return null
- } else if (arguments[2] instanceof Array && arguments[0] instanceof Mf && arguments[1] instanceof th) {
- var f = arguments[0],
- g = arguments[1],
- d = arguments[2],
- y = f.getCoordinate();
- if (pl.EXTERIOR !== this._ptLocator.locate(y, g)) return this._minDistance = 0, d[0] = f, d[1] = new Mf(g, y), null
- }
- }, Tf.prototype.computeMinDistanceLinesPoints = function (t, e, n) {
- for (var r = this, i = 0; i < t.size(); i++)
- for (var o = t.get(i), s = 0; s < e.size(); s++) {
- var a = e.get(s);
- if (r.computeMinDistance(o, a, n), r._minDistance <= r._terminateDistance) return null
- }
- }, Tf.prototype.computeFacetDistance = function () {
- var t = new Array(2).fill(null),
- e = Cf.getLines(this._geom[0]),
- n = Cf.getLines(this._geom[1]),
- r = Of.getPoints(this._geom[0]),
- i = Of.getPoints(this._geom[1]);
- return this.computeMinDistanceLines(e, n, t), this.updateMinDistance(t, !1), this._minDistance <= this._terminateDistance ? null : (t[0] = null, t[1] = null, this.computeMinDistanceLinesPoints(e, i, t), this.updateMinDistance(t, !1), this._minDistance <= this._terminateDistance ? null : (t[0] = null, t[1] = null, this.computeMinDistanceLinesPoints(n, r, t), this.updateMinDistance(t, !0), this._minDistance <= this._terminateDistance ? null : (t[0] = null, t[1] = null, this.computeMinDistancePoints(r, i, t), void this.updateMinDistance(t, !1))))
- }, Tf.prototype.nearestLocations = function () {
- return this.computeMinDistance(), this._minDistanceLocation
- }, Tf.prototype.updateMinDistance = function (t, e) {
- if (null === t[0]) return null;
- e ? (this._minDistanceLocation[0] = t[1], this._minDistanceLocation[1] = t[0]) : (this._minDistanceLocation[0] = t[0], this._minDistanceLocation[1] = t[1])
- }, Tf.prototype.nearestPoints = function () {
- return this.computeMinDistance(), [this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()]
- }, Tf.prototype.computeMinDistance = function () {
- var t = this;
- if (0 === arguments.length) {
- if (null !== this._minDistanceLocation) return null;
- if (this._minDistanceLocation = new Array(2).fill(null), this.computeContainmentDistance(), this._minDistance <= this._terminateDistance) return null;
- this.computeFacetDistance()
- } else if (3 === arguments.length)
- if (arguments[2] instanceof Array && arguments[0] instanceof Zc && arguments[1] instanceof Qc) {
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2];
- if (e.getEnvelopeInternal().distance(n.getEnvelopeInternal()) > this._minDistance) return null;
- for (var i = e.getCoordinates(), o = n.getCoordinate(), s = 0; s < i.length - 1; s++) {
- var a = Xl.distancePointLine(o, i[s], i[s + 1]);
- if (a < t._minDistance) {
- t._minDistance = a;
- var u = new vp(i[s], i[s + 1]),
- l = u.closestPoint(o);
- r[0] = new Mf(e, s, l), r[1] = new Mf(n, 0, o)
- }
- if (t._minDistance <= t._terminateDistance) return null
- }
- } else if (arguments[2] instanceof Array && arguments[0] instanceof Zc && arguments[1] instanceof Zc) {
- var c = arguments[0],
- h = arguments[1],
- p = arguments[2];
- if (c.getEnvelopeInternal().distance(h.getEnvelopeInternal()) > this._minDistance) return null;
- for (var f = c.getCoordinates(), g = h.getCoordinates(), d = 0; d < f.length - 1; d++)
- for (var y = 0; y < g.length - 1; y++) {
- var v = Xl.distanceLineLine(f[d], f[d + 1], g[y], g[y + 1]);
- if (v < t._minDistance) {
- t._minDistance = v;
- var _ = new vp(f[d], f[d + 1]),
- m = new vp(g[y], g[y + 1]),
- x = _.closestPoints(m);
- p[0] = new Mf(c, d, x[0]), p[1] = new Mf(h, y, x[1])
- }
- if (t._minDistance <= t._terminateDistance) return null
- }
- }
- }, Tf.prototype.computeMinDistancePoints = function (t, e, n) {
- for (var r = this, i = 0; i < t.size(); i++)
- for (var o = t.get(i), s = 0; s < e.size(); s++) {
- var a = e.get(s),
- u = o.getCoordinate().distance(a.getCoordinate());
- if (u < r._minDistance && (r._minDistance = u, n[0] = new Mf(o, 0, o.getCoordinate()), n[1] = new Mf(a, 0, a.getCoordinate())), r._minDistance <= r._terminateDistance) return null
- }
- }, Tf.prototype.distance = function () {
- if (null === this._geom[0] || null === this._geom[1]) throw new el("null geometries are not supported");
- return this._geom[0].isEmpty() || this._geom[1].isEmpty() ? 0 : (this.computeMinDistance(), this._minDistance)
- }, Tf.prototype.computeMinDistanceLines = function (t, e, n) {
- for (var r = this, i = 0; i < t.size(); i++)
- for (var o = t.get(i), s = 0; s < e.size(); s++) {
- var a = e.get(s);
- if (r.computeMinDistance(o, a, n), r._minDistance <= r._terminateDistance) return null
- }
- }, Tf.prototype.interfaces_ = function () {
- return []
- }, Tf.prototype.getClass = function () {
- return Tf
- }, Tf.distance = function (t, e) {
- return new Tf(t, e).distance()
- }, Tf.isWithinDistance = function (t, e, n) {
- return new Tf(t, e, n).distance() <= n
- }, Tf.nearestPoints = function (t, e) {
- return new Tf(t, e).nearestPoints()
- };
- var Af = function () {
- this._pt = [new ul, new ul], this._distance = nl.NaN, this._isNull = !0
- };
- Af.prototype.getCoordinates = function () {
- return this._pt
- }, Af.prototype.getCoordinate = function (t) {
- return this._pt[t]
- }, Af.prototype.setMinimum = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.setMinimum(t._pt[0], t._pt[1])
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- if (this._isNull) return this.initialize(e, n), null;
- var r = e.distance(n);
- r < this._distance && this.initialize(e, n, r)
- }
- }, Af.prototype.initialize = function () {
- if (0 === arguments.length) this._isNull = !0;
- else if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- this._pt[0].setCoordinate(t), this._pt[1].setCoordinate(e), this._distance = t.distance(e), this._isNull = !1
- } else if (3 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = arguments[2];
- this._pt[0].setCoordinate(n), this._pt[1].setCoordinate(r), this._distance = i, this._isNull = !1
- }
- }, Af.prototype.toString = function () {
- return Fl.toLineString(this._pt[0], this._pt[1])
- }, Af.prototype.getDistance = function () {
- return this._distance
- }, Af.prototype.setMaximum = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- this.setMaximum(t._pt[0], t._pt[1])
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- if (this._isNull) return this.initialize(e, n), null;
- var r = e.distance(n);
- r > this._distance && this.initialize(e, n, r)
- }
- }, Af.prototype.interfaces_ = function () {
- return []
- }, Af.prototype.getClass = function () {
- return Af
- };
- var Df = function () {};
- Df.prototype.interfaces_ = function () {
- return []
- }, Df.prototype.getClass = function () {
- return Df
- }, Df.computeDistance = function () {
- if (arguments[2] instanceof Af && arguments[0] instanceof Zc && arguments[1] instanceof ul)
- for (var t = arguments[0], e = arguments[1], n = arguments[2], r = new vp, i = t.getCoordinates(), o = 0; o < i.length - 1; o++) {
- r.setCoordinates(i[o], i[o + 1]);
- var s = r.closestPoint(e);
- n.setMinimum(s, e)
- } else if (arguments[2] instanceof Af && arguments[0] instanceof th && arguments[1] instanceof ul) {
- var a = arguments[0],
- u = arguments[1],
- l = arguments[2];
- Df.computeDistance(a.getExteriorRing(), u, l);
- for (var c = 0; c < a.getNumInteriorRing(); c++) Df.computeDistance(a.getInteriorRingN(c), u, l)
- } else if (arguments[2] instanceof Af && arguments[0] instanceof Wl && arguments[1] instanceof ul) {
- var h = arguments[0],
- p = arguments[1],
- f = arguments[2];
- if (h instanceof Zc) Df.computeDistance(h, p, f);
- else if (h instanceof th) Df.computeDistance(h, p, f);
- else if (h instanceof kc)
- for (var g = h, d = 0; d < g.getNumGeometries(); d++) {
- var y = g.getGeometryN(d);
- Df.computeDistance(y, p, f)
- } else f.setMinimum(h.getCoordinate(), p)
- } else if (arguments[2] instanceof Af && arguments[0] instanceof vp && arguments[1] instanceof ul) {
- var v = arguments[0],
- _ = arguments[1],
- m = arguments[2],
- x = v.closestPoint(_);
- m.setMinimum(x, _)
- }
- };
- var Ff = function () {
- this._g0 = null, this._g1 = null, this._ptDist = new Af, this._densifyFrac = 0;
- var t = arguments[0],
- e = arguments[1];
- this._g0 = t, this._g1 = e
- },
- kf = {
- MaxPointDistanceFilter: {
- configurable: !0
- },
- MaxDensifiedByFractionDistanceFilter: {
- configurable: !0
- }
- };
- Ff.prototype.getCoordinates = function () {
- return this._ptDist.getCoordinates()
- }, Ff.prototype.setDensifyFraction = function (t) {
- if (t > 1 || t <= 0) throw new el("Fraction is not in range (0.0 - 1.0]");
- this._densifyFrac = t
- }, Ff.prototype.compute = function (t, e) {
- this.computeOrientedDistance(t, e, this._ptDist), this.computeOrientedDistance(e, t, this._ptDist)
- }, Ff.prototype.distance = function () {
- return this.compute(this._g0, this._g1), this._ptDist.getDistance()
- }, Ff.prototype.computeOrientedDistance = function (t, e, n) {
- var r = new Gf(e);
- if (t.apply(r), n.setMaximum(r.getMaxPointDistance()), this._densifyFrac > 0) {
- var i = new qf(e, this._densifyFrac);
- t.apply(i), n.setMaximum(i.getMaxPointDistance())
- }
- }, Ff.prototype.orientedDistance = function () {
- return this.computeOrientedDistance(this._g0, this._g1, this._ptDist), this._ptDist.getDistance()
- }, Ff.prototype.interfaces_ = function () {
- return []
- }, Ff.prototype.getClass = function () {
- return Ff
- }, Ff.distance = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = new Ff(t, e);
- return n.distance()
- }
- if (3 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2],
- s = new Ff(r, i);
- return s.setDensifyFraction(o), s.distance()
- }
- }, kf.MaxPointDistanceFilter.get = function () {
- return Gf
- }, kf.MaxDensifiedByFractionDistanceFilter.get = function () {
- return qf
- }, Object.defineProperties(Ff, kf);
- var Gf = function () {
- this._maxPtDist = new Af, this._minPtDist = new Af, this._euclideanDist = new Df, this._geom = null;
- var t = arguments[0];
- this._geom = t
- };
- Gf.prototype.filter = function (t) {
- this._minPtDist.initialize(), Df.computeDistance(this._geom, t, this._minPtDist), this._maxPtDist.setMaximum(this._minPtDist)
- }, Gf.prototype.getMaxPointDistance = function () {
- return this._maxPtDist
- }, Gf.prototype.interfaces_ = function () {
- return [Kl]
- }, Gf.prototype.getClass = function () {
- return Gf
- };
- var qf = function () {
- this._maxPtDist = new Af, this._minPtDist = new Af, this._geom = null, this._numSubSegs = 0;
- var t = arguments[0],
- e = arguments[1];
- this._geom = t, this._numSubSegs = Math.trunc(Math.round(1 / e))
- };
- qf.prototype.filter = function (t, e) {
- var n = this;
- if (0 === e) return null;
- for (var r = t.getCoordinate(e - 1), i = t.getCoordinate(e), o = (i.x - r.x) / this._numSubSegs, s = (i.y - r.y) / this._numSubSegs, a = 0; a < this._numSubSegs; a++) {
- var u = r.x + a * o,
- l = r.y + a * s,
- c = new ul(u, l);
- n._minPtDist.initialize(), Df.computeDistance(n._geom, c, n._minPtDist), n._maxPtDist.setMaximum(n._minPtDist)
- }
- }, qf.prototype.isDone = function () {
- return !1
- }, qf.prototype.isGeometryChanged = function () {
- return !1
- }, qf.prototype.getMaxPointDistance = function () {
- return this._maxPtDist
- }, qf.prototype.interfaces_ = function () {
- return [Fc]
- }, qf.prototype.getClass = function () {
- return qf
- };
- var Bf = function (t, e, n) {
- this._minValidDistance = null, this._maxValidDistance = null, this._minDistanceFound = null, this._maxDistanceFound = null, this._isValid = !0, this._errMsg = null, this._errorLocation = null, this._errorIndicator = null, this._input = t || null, this._bufDistance = e || null, this._result = n || null
- },
- zf = {
- VERBOSE: {
- configurable: !0
- },
- MAX_DISTANCE_DIFF_FRAC: {
- configurable: !0
- }
- };
- Bf.prototype.checkMaximumDistance = function (t, e, n) {
- var r = new Ff(e, t);
- if (r.setDensifyFraction(.25), this._maxDistanceFound = r.orientedDistance(), this._maxDistanceFound > n) {
- this._isValid = !1;
- var i = r.getCoordinates();
- this._errorLocation = i[1], this._errorIndicator = t.getFactory().createLineString(i), this._errMsg = "Distance between buffer curve and input is too large (" + this._maxDistanceFound + " at " + Fl.toLineString(i[0], i[1]) + ")"
- }
- }, Bf.prototype.isValid = function () {
- var t = Math.abs(this._bufDistance),
- e = Bf.MAX_DISTANCE_DIFF_FRAC * t;
- return this._minValidDistance = t - e, this._maxValidDistance = t + e, !(!this._input.isEmpty() && !this._result.isEmpty()) || (this._bufDistance > 0 ? this.checkPositiveValid() : this.checkNegativeValid(), Bf.VERBOSE && Pl.out.println("Min Dist= " + this._minDistanceFound + " err= " + (1 - this._minDistanceFound / this._bufDistance) + " Max Dist= " + this._maxDistanceFound + " err= " + (this._maxDistanceFound / this._bufDistance - 1)), this._isValid)
- }, Bf.prototype.checkNegativeValid = function () {
- if (!(this._input instanceof th || this._input instanceof rh || this._input instanceof kc)) return null;
- var t = this.getPolygonLines(this._input);
- if (this.checkMinimumDistance(t, this._result, this._minValidDistance), !this._isValid) return null;
- this.checkMaximumDistance(t, this._result, this._maxValidDistance)
- }, Bf.prototype.getErrorIndicator = function () {
- return this._errorIndicator
- }, Bf.prototype.checkMinimumDistance = function (t, e, n) {
- var r = new Tf(t, e, n);
- if (this._minDistanceFound = r.distance(), this._minDistanceFound < n) {
- this._isValid = !1;
- var i = r.nearestPoints();
- this._errorLocation = r.nearestPoints()[1], this._errorIndicator = t.getFactory().createLineString(i), this._errMsg = "Distance between buffer curve and input is too small (" + this._minDistanceFound + " at " + Fl.toLineString(i[0], i[1]) + " )"
- }
- }, Bf.prototype.checkPositiveValid = function () {
- var t = this._result.getBoundary();
- if (this.checkMinimumDistance(this._input, t, this._minValidDistance), !this._isValid) return null;
- this.checkMaximumDistance(this._input, t, this._maxValidDistance)
- }, Bf.prototype.getErrorLocation = function () {
- return this._errorLocation
- }, Bf.prototype.getPolygonLines = function (t) {
- for (var e = new lc, n = new Cf(e), r = Sf.getPolygons(t).iterator(); r.hasNext();) {
- r.next().apply(n)
- }
- return t.getFactory().buildGeometry(e)
- }, Bf.prototype.getErrorMessage = function () {
- return this._errMsg
- }, Bf.prototype.interfaces_ = function () {
- return []
- }, Bf.prototype.getClass = function () {
- return Bf
- }, zf.VERBOSE.get = function () {
- return !1
- }, zf.MAX_DISTANCE_DIFF_FRAC.get = function () {
- return .012
- }, Object.defineProperties(Bf, zf);
- var jf = function (t, e, n) {
- this._isValid = !0, this._errorMsg = null, this._errorLocation = null, this._errorIndicator = null, this._input = t || null, this._distance = e || null, this._result = n || null
- },
- Uf = {
- VERBOSE: {
- configurable: !0
- },
- MAX_ENV_DIFF_FRAC: {
- configurable: !0
- }
- };
- jf.prototype.isValid = function () {
- return this.checkPolygonal(), this._isValid ? (this.checkExpectedEmpty(), this._isValid ? (this.checkEnvelope(), this._isValid ? (this.checkArea(), this._isValid ? (this.checkDistance(), this._isValid) : this._isValid) : this._isValid) : this._isValid) : this._isValid
- }, jf.prototype.checkEnvelope = function () {
- if (this._distance < 0) return null;
- var t = this._distance * jf.MAX_ENV_DIFF_FRAC;
- 0 === t && (t = .001);
- var e = new Ll(this._input.getEnvelopeInternal());
- e.expandBy(this._distance);
- var n = new Ll(this._result.getEnvelopeInternal());
- n.expandBy(t), n.contains(e) || (this._isValid = !1, this._errorMsg = "Buffer envelope is incorrect", this._errorIndicator = this._input.getFactory().toGeometry(n)), this.report("Envelope")
- }, jf.prototype.checkDistance = function () {
- var t = new Bf(this._input, this._distance, this._result);
- t.isValid() || (this._isValid = !1, this._errorMsg = t.getErrorMessage(), this._errorLocation = t.getErrorLocation(), this._errorIndicator = t.getErrorIndicator()), this.report("Distance")
- }, jf.prototype.checkArea = function () {
- var t = this._input.getArea(),
- e = this._result.getArea();
- this._distance > 0 && t > e && (this._isValid = !1, this._errorMsg = "Area of positive buffer is smaller than input", this._errorIndicator = this._result), this._distance < 0 && t < e && (this._isValid = !1, this._errorMsg = "Area of negative buffer is larger than input", this._errorIndicator = this._result), this.report("Area")
- }, jf.prototype.checkPolygonal = function () {
- this._result instanceof th || this._result instanceof rh || (this._isValid = !1), this._errorMsg = "Result is not polygonal", this._errorIndicator = this._result, this.report("Polygonal")
- }, jf.prototype.getErrorIndicator = function () {
- return this._errorIndicator
- }, jf.prototype.getErrorLocation = function () {
- return this._errorLocation
- }, jf.prototype.checkExpectedEmpty = function () {
- return this._input.getDimension() >= 2 || this._distance > 0 ? null : (this._result.isEmpty() || (this._isValid = !1, this._errorMsg = "Result is non-empty", this._errorIndicator = this._result), void this.report("ExpectedEmpty"))
- }, jf.prototype.report = function (t) {
- if (!jf.VERBOSE) return null;
- Pl.out.println("Check " + t + ": " + (this._isValid ? "passed" : "FAILED"))
- }, jf.prototype.getErrorMessage = function () {
- return this._errorMsg
- }, jf.prototype.interfaces_ = function () {
- return []
- }, jf.prototype.getClass = function () {
- return jf
- }, jf.isValidMsg = function (t, e, n) {
- var r = new jf(t, e, n);
- return r.isValid() ? null : r.getErrorMessage()
- }, jf.isValid = function (t, e, n) {
- return !!new jf(t, e, n).isValid()
- }, Uf.VERBOSE.get = function () {
- return !1
- }, Uf.MAX_ENV_DIFF_FRAC.get = function () {
- return .012
- }, Object.defineProperties(jf, Uf);
- var Vf = function () {
- this._pts = null, this._data = null;
- var t = arguments[0],
- e = arguments[1];
- this._pts = t, this._data = e
- };
- Vf.prototype.getCoordinates = function () {
- return this._pts
- }, Vf.prototype.size = function () {
- return this._pts.length
- }, Vf.prototype.getCoordinate = function (t) {
- return this._pts[t]
- }, Vf.prototype.isClosed = function () {
- return this._pts[0].equals(this._pts[this._pts.length - 1])
- }, Vf.prototype.getSegmentOctant = function (t) {
- return t === this._pts.length - 1 ? -1 : fp.octant(this.getCoordinate(t), this.getCoordinate(t + 1))
- }, Vf.prototype.setData = function (t) {
- this._data = t
- }, Vf.prototype.getData = function () {
- return this._data
- }, Vf.prototype.toString = function () {
- return Fl.toLineString(new lh(this._pts))
- }, Vf.prototype.interfaces_ = function () {
- return [gp]
- }, Vf.prototype.getClass = function () {
- return Vf
- };
- var Xf = function () {
- this._findAllIntersections = !1, this._isCheckEndSegmentsOnly = !1, this._li = null, this._interiorIntersection = null, this._intSegments = null, this._intersections = new lc, this._intersectionCount = 0, this._keepIntersections = !0;
- var t = arguments[0];
- this._li = t, this._interiorIntersection = null
- };
- Xf.prototype.getInteriorIntersection = function () {
- return this._interiorIntersection
- }, Xf.prototype.setCheckEndSegmentsOnly = function (t) {
- this._isCheckEndSegmentsOnly = t
- }, Xf.prototype.getIntersectionSegments = function () {
- return this._intSegments
- }, Xf.prototype.count = function () {
- return this._intersectionCount
- }, Xf.prototype.getIntersections = function () {
- return this._intersections
- }, Xf.prototype.setFindAllIntersections = function (t) {
- this._findAllIntersections = t
- }, Xf.prototype.setKeepIntersections = function (t) {
- this._keepIntersections = t
- }, Xf.prototype.processIntersections = function (t, e, n, r) {
- if (!this._findAllIntersections && this.hasIntersection()) return null;
- if (t === n && e === r) return null;
- if (this._isCheckEndSegmentsOnly && !(this.isEndSegment(t, e) || this.isEndSegment(n, r))) return null;
- var i = t.getCoordinates()[e],
- o = t.getCoordinates()[e + 1],
- s = n.getCoordinates()[r],
- a = n.getCoordinates()[r + 1];
- this._li.computeIntersection(i, o, s, a), this._li.hasIntersection() && this._li.isInteriorIntersection() && (this._intSegments = new Array(4).fill(null), this._intSegments[0] = i, this._intSegments[1] = o, this._intSegments[2] = s, this._intSegments[3] = a, this._interiorIntersection = this._li.getIntersection(0), this._keepIntersections && this._intersections.add(this._interiorIntersection), this._intersectionCount++)
- }, Xf.prototype.isEndSegment = function (t, e) {
- return 0 === e || e >= t.size() - 2
- }, Xf.prototype.hasIntersection = function () {
- return null !== this._interiorIntersection
- }, Xf.prototype.isDone = function () {
- return !this._findAllIntersections && null !== this._interiorIntersection
- }, Xf.prototype.interfaces_ = function () {
- return [Zp]
- }, Xf.prototype.getClass = function () {
- return Xf
- }, Xf.createAllIntersectionsFinder = function (t) {
- var e = new Xf(t);
- return e.setFindAllIntersections(!0), e
- }, Xf.createAnyIntersectionFinder = function (t) {
- return new Xf(t)
- }, Xf.createIntersectionCounter = function (t) {
- var e = new Xf(t);
- return e.setFindAllIntersections(!0), e.setKeepIntersections(!1), e
- };
- var Yf = function () {
- this._li = new jl, this._segStrings = null, this._findAllIntersections = !1, this._segInt = null, this._isValid = !0;
- var t = arguments[0];
- this._segStrings = t
- };
- Yf.prototype.execute = function () {
- if (null !== this._segInt) return null;
- this.checkInteriorIntersections()
- }, Yf.prototype.getIntersections = function () {
- return this._segInt.getIntersections()
- }, Yf.prototype.isValid = function () {
- return this.execute(), this._isValid
- }, Yf.prototype.setFindAllIntersections = function (t) {
- this._findAllIntersections = t
- }, Yf.prototype.checkInteriorIntersections = function () {
- this._isValid = !0, this._segInt = new Xf(this._li), this._segInt.setFindAllIntersections(this._findAllIntersections);
- var t = new Ip;
- if (t.setSegmentIntersector(this._segInt), t.computeNodes(this._segStrings), this._segInt.hasIntersection()) return this._isValid = !1, null
- }, Yf.prototype.checkValid = function () {
- if (this.execute(), !this._isValid) throw new Oh(this.getErrorMessage(), this._segInt.getInteriorIntersection())
- }, Yf.prototype.getErrorMessage = function () {
- if (this._isValid) return "no intersections found";
- var t = this._segInt.getIntersectionSegments();
- return "found non-noded intersection between " + Fl.toLineString(t[0], t[1]) + " and " + Fl.toLineString(t[2], t[3])
- }, Yf.prototype.interfaces_ = function () {
- return []
- }, Yf.prototype.getClass = function () {
- return Yf
- }, Yf.computeIntersections = function (t) {
- var e = new Yf(t);
- return e.setFindAllIntersections(!0), e.isValid(), e.getIntersections()
- };
- var Hf = function t() {
- this._nv = null;
- var e = arguments[0];
- this._nv = new Yf(t.toSegmentStrings(e))
- };
- Hf.prototype.checkValid = function () {
- this._nv.checkValid()
- }, Hf.prototype.interfaces_ = function () {
- return []
- }, Hf.prototype.getClass = function () {
- return Hf
- }, Hf.toSegmentStrings = function (t) {
- for (var e = new lc, n = t.iterator(); n.hasNext();) {
- var r = n.next();
- e.add(new Vf(r.getCoordinates(), r))
- }
- return e
- }, Hf.checkValid = function (t) {
- new Hf(t).checkValid()
- };
- var Wf = function (t) {
- this._mapOp = t
- };
- Wf.prototype.map = function (t) {
- for (var e = new lc, n = 0; n < t.getNumGeometries(); n++) {
- var r = this._mapOp.map(t.getGeometryN(n));
- r.isEmpty() || e.add(r)
- }
- return t.getFactory().createGeometryCollection(_h.toGeometryArray(e))
- }, Wf.prototype.interfaces_ = function () {
- return []
- }, Wf.prototype.getClass = function () {
- return Wf
- }, Wf.map = function (t, e) {
- return new Wf(e).map(t)
- };
- var Jf = function () {
- this._op = null, this._geometryFactory = null, this._ptLocator = null, this._lineEdgesList = new lc, this._resultLineList = new lc;
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2];
- this._op = t, this._geometryFactory = e, this._ptLocator = n
- };
- Jf.prototype.collectLines = function (t) {
- for (var e = this, n = this._op.getGraph().getEdgeEnds().iterator(); n.hasNext();) {
- var r = n.next();
- e.collectLineEdge(r, t, e._lineEdgesList), e.collectBoundaryTouchEdge(r, t, e._lineEdgesList)
- }
- }, Jf.prototype.labelIsolatedLine = function (t, e) {
- var n = this._ptLocator.locate(t.getCoordinate(), this._op.getArgGeometry(e));
- t.getLabel().setLocation(e, n)
- }, Jf.prototype.build = function (t) {
- return this.findCoveredLineEdges(), this.collectLines(t), this.buildLines(t), this._resultLineList
- }, Jf.prototype.collectLineEdge = function (t, e, n) {
- var r = t.getLabel(),
- i = t.getEdge();
- t.isLineEdge() && (t.isVisited() || !Mg.isResultOfOp(r, e) || i.isCovered() || (n.add(i), t.setVisitedEdge(!0)))
- }, Jf.prototype.findCoveredLineEdges = function () {
- for (var t = this._op.getGraph().getNodes().iterator(); t.hasNext();) {
- t.next().getEdges().findCoveredLineEdges()
- }
- for (var e = this._op.getGraph().getEdgeEnds().iterator(); e.hasNext();) {
- var n = e.next(),
- r = n.getEdge();
- if (n.isLineEdge() && !r.isCoveredSet()) {
- var i = this._op.isCoveredByA(n.getCoordinate());
- r.setCovered(i)
- }
- }
- }, Jf.prototype.labelIsolatedLines = function (t) {
- for (var e = t.iterator(); e.hasNext();) {
- var n = e.next(),
- r = n.getLabel();
- n.isIsolated() && (r.isNull(0) ? this.labelIsolatedLine(n, 0) : this.labelIsolatedLine(n, 1))
- }
- }, Jf.prototype.buildLines = function (t) {
- for (var e = this._lineEdgesList.iterator(); e.hasNext();) {
- var n = e.next(),
- r = this._geometryFactory.createLineString(n.getCoordinates());
- this._resultLineList.add(r), n.setInResult(!0)
- }
- }, Jf.prototype.collectBoundaryTouchEdge = function (t, e, n) {
- var r = t.getLabel();
- return t.isLineEdge() || t.isVisited() || t.isInteriorAreaEdge() || t.getEdge().isInResult() ? null : (ql.isTrue(!(t.isInResult() || t.getSym().isInResult()) || !t.getEdge().isInResult()), void(Mg.isResultOfOp(r, e) && e === Mg.INTERSECTION && (n.add(t.getEdge()), t.setVisitedEdge(!0))))
- }, Jf.prototype.interfaces_ = function () {
- return []
- }, Jf.prototype.getClass = function () {
- return Jf
- };
- var Zf = function () {
- this._op = null, this._geometryFactory = null, this._resultPointList = new lc;
- var t = arguments[0],
- e = arguments[1];
- this._op = t, this._geometryFactory = e
- };
- Zf.prototype.filterCoveredNodeToPoint = function (t) {
- var e = t.getCoordinate();
- if (!this._op.isCoveredByLA(e)) {
- var n = this._geometryFactory.createPoint(e);
- this._resultPointList.add(n)
- }
- }, Zf.prototype.extractNonCoveredResultNodes = function (t) {
- for (var e = this._op.getGraph().getNodes().iterator(); e.hasNext();) {
- var n = e.next();
- if (!n.isInResult() && (!n.isIncidentEdgeInResult() && (0 === n.getEdges().getDegree() || t === Mg.INTERSECTION))) {
- var r = n.getLabel();
- Mg.isResultOfOp(r, t) && this.filterCoveredNodeToPoint(n)
- }
- }
- }, Zf.prototype.build = function (t) {
- return this.extractNonCoveredResultNodes(t), this._resultPointList
- }, Zf.prototype.interfaces_ = function () {
- return []
- }, Zf.prototype.getClass = function () {
- return Zf
- };
- var Kf = function () {
- this._inputGeom = null, this._factory = null, this._pruneEmptyGeometry = !0, this._preserveGeometryCollectionType = !0, this._preserveCollections = !1, this._preserveType = !1
- };
- Kf.prototype.transformPoint = function (t, e) {
- return this._factory.createPoint(this.transformCoordinates(t.getCoordinateSequence(), t))
- }, Kf.prototype.transformPolygon = function (t, e) {
- var n = !0,
- r = this.transformLinearRing(t.getExteriorRing(), t);
- null !== r && r instanceof nh && !r.isEmpty() || (n = !1);
- for (var i = new lc, o = 0; o < t.getNumInteriorRing(); o++) {
- var s = this.transformLinearRing(t.getInteriorRingN(o), t);
- null === s || s.isEmpty() || (s instanceof nh || (n = !1), i.add(s))
- }
- if (n) return this._factory.createPolygon(r, i.toArray([]));
- var a = new lc;
- return null !== r && a.add(r), a.addAll(i), this._factory.buildGeometry(a)
- }, Kf.prototype.createCoordinateSequence = function (t) {
- return this._factory.getCoordinateSequenceFactory().create(t)
- }, Kf.prototype.getInputGeometry = function () {
- return this._inputGeom
- }, Kf.prototype.transformMultiLineString = function (t, e) {
- for (var n = new lc, r = 0; r < t.getNumGeometries(); r++) {
- var i = this.transformLineString(t.getGeometryN(r), t);
- null !== i && (i.isEmpty() || n.add(i))
- }
- return this._factory.buildGeometry(n)
- }, Kf.prototype.transformCoordinates = function (t, e) {
- return this.copy(t)
- }, Kf.prototype.transformLineString = function (t, e) {
- return this._factory.createLineString(this.transformCoordinates(t.getCoordinateSequence(), t))
- }, Kf.prototype.transformMultiPoint = function (t, e) {
- for (var n = new lc, r = 0; r < t.getNumGeometries(); r++) {
- var i = this.transformPoint(t.getGeometryN(r), t);
- null !== i && (i.isEmpty() || n.add(i))
- }
- return this._factory.buildGeometry(n)
- }, Kf.prototype.transformMultiPolygon = function (t, e) {
- for (var n = new lc, r = 0; r < t.getNumGeometries(); r++) {
- var i = this.transformPolygon(t.getGeometryN(r), t);
- null !== i && (i.isEmpty() || n.add(i))
- }
- return this._factory.buildGeometry(n)
- }, Kf.prototype.copy = function (t) {
- return t.copy()
- }, Kf.prototype.transformGeometryCollection = function (t, e) {
- for (var n = new lc, r = 0; r < t.getNumGeometries(); r++) {
- var i = this.transform(t.getGeometryN(r));
- null !== i && (this._pruneEmptyGeometry && i.isEmpty() || n.add(i))
- }
- return this._preserveGeometryCollectionType ? this._factory.createGeometryCollection(_h.toGeometryArray(n)) : this._factory.buildGeometry(n)
- }, Kf.prototype.transform = function (t) {
- if (this._inputGeom = t, this._factory = t.getFactory(), t instanceof Qc) return this.transformPoint(t, null);
- if (t instanceof eh) return this.transformMultiPoint(t, null);
- if (t instanceof nh) return this.transformLinearRing(t, null);
- if (t instanceof Zc) return this.transformLineString(t, null);
- if (t instanceof Gc) return this.transformMultiLineString(t, null);
- if (t instanceof th) return this.transformPolygon(t, null);
- if (t instanceof rh) return this.transformMultiPolygon(t, null);
- if (t instanceof kc) return this.transformGeometryCollection(t, null);
- throw new el("Unknown Geometry subtype: " + t.getClass().getName())
- }, Kf.prototype.transformLinearRing = function (t, e) {
- var n = this.transformCoordinates(t.getCoordinateSequence(), t);
- if (null === n) return this._factory.createLinearRing(null);
- var r = n.size();
- return r > 0 && r < 4 && !this._preserveType ? this._factory.createLineString(n) : this._factory.createLinearRing(n)
- }, Kf.prototype.interfaces_ = function () {
- return []
- }, Kf.prototype.getClass = function () {
- return Kf
- };
- var Qf = function t() {
- if (this._snapTolerance = 0, this._srcPts = null, this._seg = new vp, this._allowSnappingToSourceVertices = !1, this._isClosed = !1, arguments[0] instanceof Zc && "number" == typeof arguments[1]) {
- var e = arguments[0],
- n = arguments[1];
- t.call(this, e.getCoordinates(), n)
- } else if (arguments[0] instanceof Array && "number" == typeof arguments[1]) {
- var r = arguments[0],
- i = arguments[1];
- this._srcPts = r, this._isClosed = t.isClosed(r), this._snapTolerance = i
- }
- };
- Qf.prototype.snapVertices = function (t, e) {
- for (var n = this._isClosed ? t.size() - 1 : t.size(), r = 0; r < n; r++) {
- var i = t.get(r),
- o = this.findSnapForVertex(i, e);
- null !== o && (t.set(r, new ul(o)), 0 === r && this._isClosed && t.set(t.size() - 1, new ul(o)))
- }
- }, Qf.prototype.findSnapForVertex = function (t, e) {
- for (var n = 0; n < e.length; n++) {
- if (t.equals2D(e[n])) return null;
- if (t.distance(e[n]) < this._snapTolerance) return e[n]
- }
- return null
- }, Qf.prototype.snapTo = function (t) {
- var e = new hc(this._srcPts);
- return this.snapVertices(e, t), this.snapSegments(e, t), e.toCoordinateArray()
- }, Qf.prototype.snapSegments = function (t, e) {
- if (0 === e.length) return null;
- var n = e.length;
- e[0].equals2D(e[e.length - 1]) && (n = e.length - 1);
- for (var r = 0; r < n; r++) {
- var i = e[r],
- o = this.findSegmentIndexToSnap(i, t);
- o >= 0 && t.add(o + 1, new ul(i), !1)
- }
- }, Qf.prototype.findSegmentIndexToSnap = function (t, e) {
- for (var n = this, r = nl.MAX_VALUE, i = -1, o = 0; o < e.size() - 1; o++) {
- if (n._seg.p0 = e.get(o), n._seg.p1 = e.get(o + 1), n._seg.p0.equals2D(t) || n._seg.p1.equals2D(t)) {
- if (n._allowSnappingToSourceVertices) continue;
- return -1
- }
- var s = n._seg.distance(t);
- s < n._snapTolerance && s < r && (r = s, i = o)
- }
- return i
- }, Qf.prototype.setAllowSnappingToSourceVertices = function (t) {
- this._allowSnappingToSourceVertices = t
- }, Qf.prototype.interfaces_ = function () {
- return []
- }, Qf.prototype.getClass = function () {
- return Qf
- }, Qf.isClosed = function (t) {
- return !(t.length <= 1) && t[0].equals2D(t[t.length - 1])
- };
- var $f = function (t) {
- this._srcGeom = t || null
- },
- tg = {
- SNAP_PRECISION_FACTOR: {
- configurable: !0
- }
- };
- $f.prototype.snapTo = function (t, e) {
- var n = this.extractTargetCoordinates(t);
- return new eg(e, n).transform(this._srcGeom)
- }, $f.prototype.snapToSelf = function (t, e) {
- var n = this.extractTargetCoordinates(this._srcGeom),
- r = new eg(t, n, !0).transform(this._srcGeom),
- i = r;
- return e && gl(i, $c) && (i = r.buffer(0)), i
- }, $f.prototype.computeSnapTolerance = function (t) {
- return this.computeMinimumSegmentLength(t) / 10
- }, $f.prototype.extractTargetCoordinates = function (t) {
- for (var e = new Lc, n = t.getCoordinates(), r = 0; r < n.length; r++) e.add(n[r]);
- return e.toArray(new Array(0).fill(null))
- }, $f.prototype.computeMinimumSegmentLength = function (t) {
- for (var e = nl.MAX_VALUE, n = 0; n < t.length - 1; n++) {
- var r = t[n].distance(t[n + 1]);
- r < e && (e = r)
- }
- return e
- }, $f.prototype.interfaces_ = function () {
- return []
- }, $f.prototype.getClass = function () {
- return $f
- }, $f.snap = function (t, e, n) {
- var r = new Array(2).fill(null),
- i = new $f(t);
- r[0] = i.snapTo(e, n);
- var o = new $f(e);
- return r[1] = o.snapTo(r[0], n), r
- }, $f.computeOverlaySnapTolerance = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = $f.computeSizeBasedSnapTolerance(t),
- n = t.getPrecisionModel();
- if (n.getType() === gh.FIXED) {
- var r = 1 / n.getScale() * 2 / 1.415;
- r > e && (e = r)
- }
- return e
- }
- if (2 === arguments.length) {
- var i = arguments[0],
- o = arguments[1];
- return Math.min($f.computeOverlaySnapTolerance(i), $f.computeOverlaySnapTolerance(o))
- }
- }, $f.computeSizeBasedSnapTolerance = function (t) {
- var e = t.getEnvelopeInternal();
- return Math.min(e.getHeight(), e.getWidth()) * $f.SNAP_PRECISION_FACTOR
- }, $f.snapToSelf = function (t, e, n) {
- return new $f(t).snapToSelf(e, n)
- }, tg.SNAP_PRECISION_FACTOR.get = function () {
- return 1e-9
- }, Object.defineProperties($f, tg);
- var eg = function (t) {
- function e(e, n, r) {
- t.call(this), this._snapTolerance = e || null, this._snapPts = n || null, this._isSelfSnap = void 0 !== r && r
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.snapLine = function (t, e) {
- var n = new Qf(t, this._snapTolerance);
- return n.setAllowSnappingToSourceVertices(this._isSelfSnap), n.snapTo(e)
- }, e.prototype.transformCoordinates = function (t, e) {
- var n = t.toCoordinateArray(),
- r = this.snapLine(n, this._snapPts);
- return this._factory.getCoordinateSequenceFactory().create(r)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(Kf),
- ng = function () {
- this._isFirst = !0, this._commonMantissaBitsCount = 53, this._commonBits = 0, this._commonSignExp = null
- };
- ng.prototype.getCommon = function () {
- return nl.longBitsToDouble(this._commonBits)
- }, ng.prototype.add = function (t) {
- var e = nl.doubleToLongBits(t);
- return this._isFirst ? (this._commonBits = e, this._commonSignExp = ng.signExpBits(this._commonBits), this._isFirst = !1, null) : ng.signExpBits(e) !== this._commonSignExp ? (this._commonBits = 0, null) : (this._commonMantissaBitsCount = ng.numCommonMostSigMantissaBits(this._commonBits, e), void(this._commonBits = ng.zeroLowerBits(this._commonBits, 64 - (12 + this._commonMantissaBitsCount))))
- }, ng.prototype.toString = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = nl.longBitsToDouble(t),
- n = nl.toBinaryString(t),
- r = "0000000000000000000000000000000000000000000000000000000000000000" + n,
- i = r.substring(r.length - 64),
- o = i.substring(0, 1) + " " + i.substring(1, 12) + "(exp) " + i.substring(12) + " [ " + e + " ]";
- return o
- }
- }, ng.prototype.interfaces_ = function () {
- return []
- }, ng.prototype.getClass = function () {
- return ng
- }, ng.getBit = function (t, e) {
- return 0 != (t & 1 << e) ? 1 : 0
- }, ng.signExpBits = function (t) {
- return t >> 52
- }, ng.zeroLowerBits = function (t, e) {
- return t & ~((1 << e) - 1)
- }, ng.numCommonMostSigMantissaBits = function (t, e) {
- for (var n = 0, r = 52; r >= 0; r--) {
- if (ng.getBit(t, r) !== ng.getBit(e, r)) return n;
- n++
- }
- return 52
- };
- var rg = function () {
- this._commonCoord = null, this._ccFilter = new og
- },
- ig = {
- CommonCoordinateFilter: {
- configurable: !0
- },
- Translater: {
- configurable: !0
- }
- };
- rg.prototype.addCommonBits = function (t) {
- var e = new sg(this._commonCoord);
- t.apply(e), t.geometryChanged()
- }, rg.prototype.removeCommonBits = function (t) {
- if (0 === this._commonCoord.x && 0 === this._commonCoord.y) return t;
- var e = new ul(this._commonCoord);
- e.x = -e.x, e.y = -e.y;
- var n = new sg(e);
- return t.apply(n), t.geometryChanged(), t
- }, rg.prototype.getCommonCoordinate = function () {
- return this._commonCoord
- }, rg.prototype.add = function (t) {
- t.apply(this._ccFilter), this._commonCoord = this._ccFilter.getCommonCoordinate()
- }, rg.prototype.interfaces_ = function () {
- return []
- }, rg.prototype.getClass = function () {
- return rg
- }, ig.CommonCoordinateFilter.get = function () {
- return og
- }, ig.Translater.get = function () {
- return sg
- }, Object.defineProperties(rg, ig);
- var og = function () {
- this._commonBitsX = new ng, this._commonBitsY = new ng
- };
- og.prototype.filter = function (t) {
- this._commonBitsX.add(t.x), this._commonBitsY.add(t.y)
- }, og.prototype.getCommonCoordinate = function () {
- return new ul(this._commonBitsX.getCommon(), this._commonBitsY.getCommon())
- }, og.prototype.interfaces_ = function () {
- return [Kl]
- }, og.prototype.getClass = function () {
- return og
- };
- var sg = function () {
- this.trans = null;
- var t = arguments[0];
- this.trans = t
- };
- sg.prototype.filter = function (t, e) {
- var n = t.getOrdinate(e, 0) + this.trans.x,
- r = t.getOrdinate(e, 1) + this.trans.y;
- t.setOrdinate(e, 0, n), t.setOrdinate(e, 1, r)
- }, sg.prototype.isDone = function () {
- return !1
- }, sg.prototype.isGeometryChanged = function () {
- return !0
- }, sg.prototype.interfaces_ = function () {
- return [Fc]
- }, sg.prototype.getClass = function () {
- return sg
- };
- var ag = function (t, e) {
- this._geom = new Array(2).fill(null), this._snapTolerance = null, this._cbr = null, this._geom[0] = t, this._geom[1] = e, this.computeSnapTolerance()
- };
- ag.prototype.selfSnap = function (t) {
- return new $f(t).snapTo(t, this._snapTolerance)
- }, ag.prototype.removeCommonBits = function (t) {
- this._cbr = new rg, this._cbr.add(t[0]), this._cbr.add(t[1]);
- var e = new Array(2).fill(null);
- return e[0] = this._cbr.removeCommonBits(t[0].copy()), e[1] = this._cbr.removeCommonBits(t[1].copy()), e
- }, ag.prototype.prepareResult = function (t) {
- return this._cbr.addCommonBits(t), t
- }, ag.prototype.getResultGeometry = function (t) {
- var e = this.snap(this._geom),
- n = Mg.overlayOp(e[0], e[1], t);
- return this.prepareResult(n)
- }, ag.prototype.checkValid = function (t) {
- t.isValid() || Pl.out.println("Snapped geometry is invalid")
- }, ag.prototype.computeSnapTolerance = function () {
- this._snapTolerance = $f.computeOverlaySnapTolerance(this._geom[0], this._geom[1])
- }, ag.prototype.snap = function (t) {
- var e = this.removeCommonBits(t);
- return $f.snap(e[0], e[1], this._snapTolerance)
- }, ag.prototype.interfaces_ = function () {
- return []
- }, ag.prototype.getClass = function () {
- return ag
- }, ag.overlayOp = function (t, e, n) {
- return new ag(t, e).getResultGeometry(n)
- }, ag.union = function (t, e) {
- return ag.overlayOp(t, e, Mg.UNION)
- }, ag.intersection = function (t, e) {
- return ag.overlayOp(t, e, Mg.INTERSECTION)
- }, ag.symDifference = function (t, e) {
- return ag.overlayOp(t, e, Mg.SYMDIFFERENCE)
- }, ag.difference = function (t, e) {
- return ag.overlayOp(t, e, Mg.DIFFERENCE)
- };
- var ug = function (t, e) {
- this._geom = new Array(2).fill(null), this._geom[0] = t, this._geom[1] = e
- };
- ug.prototype.getResultGeometry = function (t) {
- var e = null,
- n = !1,
- r = null;
- try {
- e = Mg.overlayOp(this._geom[0], this._geom[1], t);
- n = !0
- } catch (t) {
- if (!(t instanceof kl)) throw t;
- r = t
- }
- if (!n) try {
- e = ag.overlayOp(this._geom[0], this._geom[1], t)
- } catch (t) {
- throw t instanceof kl ? r : t
- }
- return e
- }, ug.prototype.interfaces_ = function () {
- return []
- }, ug.prototype.getClass = function () {
- return ug
- }, ug.overlayOp = function (t, e, n) {
- return new ug(t, e).getResultGeometry(n)
- }, ug.union = function (t, e) {
- return ug.overlayOp(t, e, Mg.UNION)
- }, ug.intersection = function (t, e) {
- return ug.overlayOp(t, e, Mg.INTERSECTION)
- }, ug.symDifference = function (t, e) {
- return ug.overlayOp(t, e, Mg.SYMDIFFERENCE)
- }, ug.difference = function (t, e) {
- return ug.overlayOp(t, e, Mg.DIFFERENCE)
- };
- var lg = function () {
- this.mce = null, this.chainIndex = null;
- var t = arguments[0],
- e = arguments[1];
- this.mce = t, this.chainIndex = e
- };
- lg.prototype.computeIntersections = function (t, e) {
- this.mce.computeIntersectsForChain(this.chainIndex, t.mce, t.chainIndex, e)
- }, lg.prototype.interfaces_ = function () {
- return []
- }, lg.prototype.getClass = function () {
- return lg
- };
- var cg = function t() {
- if (this._label = null, this._xValue = null, this._eventType = null, this._insertEvent = null, this._deleteEventIndex = null, this._obj = null, 2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1];
- this._eventType = t.DELETE, this._xValue = e, this._insertEvent = n
- } else if (3 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2];
- this._eventType = t.INSERT, this._label = r, this._xValue = i, this._obj = o
- }
- },
- hg = {
- INSERT: {
- configurable: !0
- },
- DELETE: {
- configurable: !0
- }
- };
- cg.prototype.isDelete = function () {
- return this._eventType === cg.DELETE
- }, cg.prototype.setDeleteEventIndex = function (t) {
- this._deleteEventIndex = t
- }, cg.prototype.getObject = function () {
- return this._obj
- }, cg.prototype.compareTo = function (t) {
- var e = t;
- return this._xValue < e._xValue ? -1 : this._xValue > e._xValue ? 1 : this._eventType < e._eventType ? -1 : this._eventType > e._eventType ? 1 : 0
- }, cg.prototype.getInsertEvent = function () {
- return this._insertEvent
- }, cg.prototype.isInsert = function () {
- return this._eventType === cg.INSERT
- }, cg.prototype.isSameLabel = function (t) {
- return null !== this._label && this._label === t._label
- }, cg.prototype.getDeleteEventIndex = function () {
- return this._deleteEventIndex
- }, cg.prototype.interfaces_ = function () {
- return [il]
- }, cg.prototype.getClass = function () {
- return cg
- }, hg.INSERT.get = function () {
- return 1
- }, hg.DELETE.get = function () {
- return 2
- }, Object.defineProperties(cg, hg);
- var pg = function () {};
- pg.prototype.interfaces_ = function () {
- return []
- }, pg.prototype.getClass = function () {
- return pg
- };
- var fg = function () {
- this._hasIntersection = !1, this._hasProper = !1, this._hasProperInterior = !1, this._properIntersectionPoint = null, this._li = null, this._includeProper = null, this._recordIsolated = null, this._isSelfIntersection = null, this._numIntersections = 0, this.numTests = 0, this._bdyNodes = null, this._isDone = !1, this._isDoneWhenProperInt = !1;
- var t = arguments[0],
- e = arguments[1],
- n = arguments[2];
- this._li = t, this._includeProper = e, this._recordIsolated = n
- };
- fg.prototype.isTrivialIntersection = function (t, e, n, r) {
- if (t === n && 1 === this._li.getIntersectionNum()) {
- if (fg.isAdjacentSegments(e, r)) return !0;
- if (t.isClosed()) {
- var i = t.getNumPoints() - 1;
- if (0 === e && r === i || 0 === r && e === i) return !0
- }
- }
- return !1
- }, fg.prototype.getProperIntersectionPoint = function () {
- return this._properIntersectionPoint
- }, fg.prototype.setIsDoneIfProperInt = function (t) {
- this._isDoneWhenProperInt = t
- }, fg.prototype.hasProperInteriorIntersection = function () {
- return this._hasProperInterior
- }, fg.prototype.isBoundaryPointInternal = function (t, e) {
- for (var n = e.iterator(); n.hasNext();) {
- var r = n.next().getCoordinate();
- if (t.isIntersection(r)) return !0
- }
- return !1
- }, fg.prototype.hasProperIntersection = function () {
- return this._hasProper
- }, fg.prototype.hasIntersection = function () {
- return this._hasIntersection
- }, fg.prototype.isDone = function () {
- return this._isDone
- }, fg.prototype.isBoundaryPoint = function (t, e) {
- return null !== e && (!!this.isBoundaryPointInternal(t, e[0]) || !!this.isBoundaryPointInternal(t, e[1]))
- }, fg.prototype.setBoundaryNodes = function (t, e) {
- this._bdyNodes = new Array(2).fill(null), this._bdyNodes[0] = t, this._bdyNodes[1] = e
- }, fg.prototype.addIntersections = function (t, e, n, r) {
- if (t === n && e === r) return null;
- this.numTests++;
- var i = t.getCoordinates()[e],
- o = t.getCoordinates()[e + 1],
- s = n.getCoordinates()[r],
- a = n.getCoordinates()[r + 1];
- this._li.computeIntersection(i, o, s, a), this._li.hasIntersection() && (this._recordIsolated && (t.setIsolated(!1), n.setIsolated(!1)), this._numIntersections++, this.isTrivialIntersection(t, e, n, r) || (this._hasIntersection = !0, !this._includeProper && this._li.isProper() || (t.addIntersections(this._li, e, 0), n.addIntersections(this._li, r, 1)), this._li.isProper() && (this._properIntersectionPoint = this._li.getIntersection(0).copy(), this._hasProper = !0, this._isDoneWhenProperInt && (this._isDone = !0), this.isBoundaryPoint(this._li, this._bdyNodes) || (this._hasProperInterior = !0))))
- }, fg.prototype.interfaces_ = function () {
- return []
- }, fg.prototype.getClass = function () {
- return fg
- }, fg.isAdjacentSegments = function (t, e) {
- return 1 === Math.abs(t - e)
- };
- var gg = function (t) {
- function e() {
- t.call(this), this.events = new lc, this.nOverlaps = null
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.prepareEvents = function () {
- np.sort(this.events);
- for (var t = 0; t < this.events.size(); t++) {
- var e = this.events.get(t);
- e.isDelete() && e.getInsertEvent().setDeleteEventIndex(t)
- }
- }, e.prototype.computeIntersections = function () {
- var t = this;
- if (1 === arguments.length) {
- var e = arguments[0];
- this.nOverlaps = 0, this.prepareEvents();
- for (var n = 0; n < this.events.size(); n++) {
- var r = t.events.get(n);
- if (r.isInsert() && t.processOverlaps(n, r.getDeleteEventIndex(), r, e), e.isDone()) break
- }
- } else if (3 === arguments.length)
- if (arguments[2] instanceof fg && gl(arguments[0], ac) && gl(arguments[1], ac)) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2];
- this.addEdges(i, i), this.addEdges(o, o), this.computeIntersections(s)
- } else if ("boolean" == typeof arguments[2] && gl(arguments[0], ac) && arguments[1] instanceof fg) {
- var a = arguments[0],
- u = arguments[1],
- l = arguments[2];
- l ? this.addEdges(a, null) : this.addEdges(a), this.computeIntersections(u)
- }
- }, e.prototype.addEdge = function (t, e) {
- for (var n = t.getMonotoneChainEdge(), r = n.getStartIndexes(), i = 0; i < r.length - 1; i++) {
- var o = new lg(n, i),
- s = new cg(e, n.getMinX(i), o);
- this.events.add(s), this.events.add(new cg(n.getMaxX(i), s))
- }
- }, e.prototype.processOverlaps = function (t, e, n, r) {
- for (var i = n.getObject(), o = t; o < e; o++) {
- var s = this.events.get(o);
- if (s.isInsert()) {
- var a = s.getObject();
- n.isSameLabel(s) || (i.computeIntersections(a, r), this.nOverlaps++)
- }
- }
- }, e.prototype.addEdges = function () {
- var t = this;
- if (1 === arguments.length)
- for (var e = arguments[0], n = e.iterator(); n.hasNext();) {
- var r = n.next();
- t.addEdge(r, r)
- } else if (2 === arguments.length)
- for (var i = arguments[0], o = arguments[1], s = i.iterator(); s.hasNext();) {
- var a = s.next();
- t.addEdge(a, o)
- }
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(pg),
- dg = function () {
- this._min = nl.POSITIVE_INFINITY, this._max = nl.NEGATIVE_INFINITY
- },
- yg = {
- NodeComparator: {
- configurable: !0
- }
- };
- dg.prototype.getMin = function () {
- return this._min
- }, dg.prototype.intersects = function (t, e) {
- return !(this._min > e || this._max < t)
- }, dg.prototype.getMax = function () {
- return this._max
- }, dg.prototype.toString = function () {
- return Fl.toLineString(new ul(this._min, 0), new ul(this._max, 0))
- }, dg.prototype.interfaces_ = function () {
- return []
- }, dg.prototype.getClass = function () {
- return dg
- }, yg.NodeComparator.get = function () {
- return vg
- }, Object.defineProperties(dg, yg);
- var vg = function () {};
- vg.prototype.compare = function (t, e) {
- var n = t,
- r = e,
- i = (n._min + n._max) / 2,
- o = (r._min + r._max) / 2;
- return i < o ? -1 : i > o ? 1 : 0
- }, vg.prototype.interfaces_ = function () {
- return [sl]
- }, vg.prototype.getClass = function () {
- return vg
- };
- var _g = function (t) {
- function e() {
- t.call(this), this._item = null;
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2];
- this._min = e, this._max = n, this._item = r
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.query = function (t, e, n) {
- if (!this.intersects(t, e)) return null;
- n.visitItem(this._item)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(dg),
- mg = function (t) {
- function e() {
- t.call(this), this._node1 = null, this._node2 = null;
- var e = arguments[0],
- n = arguments[1];
- this._node1 = e, this._node2 = n, this.buildExtent(this._node1, this._node2)
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.buildExtent = function (t, e) {
- this._min = Math.min(t._min, e._min), this._max = Math.max(t._max, e._max)
- }, e.prototype.query = function (t, e, n) {
- if (!this.intersects(t, e)) return null;
- null !== this._node1 && this._node1.query(t, e, n), null !== this._node2 && this._node2.query(t, e, n)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(dg),
- xg = function () {
- this._leaves = new lc, this._root = null, this._level = 0
- };
- xg.prototype.buildTree = function () {
- np.sort(this._leaves, new dg.NodeComparator);
- for (var t = this._leaves, e = null, n = new lc;;) {
- if (this.buildLevel(t, n), 1 === n.size()) return n.get(0);
- e = t, t = n, n = e
- }
- }, xg.prototype.insert = function (t, e, n) {
- if (null !== this._root) throw new Error("Index cannot be added to once it has been queried");
- this._leaves.add(new _g(t, e, n))
- }, xg.prototype.query = function (t, e, n) {
- this.init(), this._root.query(t, e, n)
- }, xg.prototype.buildRoot = function () {
- if (null !== this._root) return null;
- this._root = this.buildTree()
- }, xg.prototype.printNode = function (t) {
- Pl.out.println(Fl.toLineString(new ul(t._min, this._level), new ul(t._max, this._level)))
- }, xg.prototype.init = function () {
- if (null !== this._root) return null;
- this.buildRoot()
- }, xg.prototype.buildLevel = function (t, e) {
- this._level++, e.clear();
- for (var n = 0; n < t.size(); n += 2) {
- var r = t.get(n);
- if (null === (n + 1 < t.size() ? t.get(n) : null)) e.add(r);
- else {
- var i = new mg(t.get(n), t.get(n + 1));
- e.add(i)
- }
- }
- }, xg.prototype.interfaces_ = function () {
- return []
- }, xg.prototype.getClass = function () {
- return xg
- };
- var Eg = function () {
- this._items = new lc
- };
- Eg.prototype.visitItem = function (t) {
- this._items.add(t)
- }, Eg.prototype.getItems = function () {
- return this._items
- }, Eg.prototype.interfaces_ = function () {
- return [Qh]
- }, Eg.prototype.getClass = function () {
- return Eg
- };
- var bg = function () {
- this._index = null;
- var t = arguments[0];
- if (!gl(t, $c)) throw new el("Argument must be Polygonal");
- this._index = new Ng(t)
- },
- wg = {
- SegmentVisitor: {
- configurable: !0
- },
- IntervalIndexedGeometry: {
- configurable: !0
- }
- };
- bg.prototype.locate = function (t) {
- var e = new Vl(t),
- n = new Ig(e);
- return this._index.query(t.y, t.y, n), e.getLocation()
- }, bg.prototype.interfaces_ = function () {
- return [jp]
- }, bg.prototype.getClass = function () {
- return bg
- }, wg.SegmentVisitor.get = function () {
- return Ig
- }, wg.IntervalIndexedGeometry.get = function () {
- return Ng
- }, Object.defineProperties(bg, wg);
- var Ig = function () {
- this._counter = null;
- var t = arguments[0];
- this._counter = t
- };
- Ig.prototype.visitItem = function (t) {
- var e = t;
- this._counter.countSegment(e.getCoordinate(0), e.getCoordinate(1))
- }, Ig.prototype.interfaces_ = function () {
- return [Qh]
- }, Ig.prototype.getClass = function () {
- return Ig
- };
- var Ng = function () {
- this._index = new xg;
- var t = arguments[0];
- this.init(t)
- };
- Ng.prototype.init = function (t) {
- for (var e = Cf.getLines(t).iterator(); e.hasNext();) {
- var n = e.next().getCoordinates();
- this.addLine(n)
- }
- }, Ng.prototype.addLine = function (t) {
- for (var e = 1; e < t.length; e++) {
- var n = new vp(t[e - 1], t[e]),
- r = Math.min(n.p0.y, n.p1.y),
- i = Math.max(n.p0.y, n.p1.y);
- this._index.insert(r, i, n)
- }
- }, Ng.prototype.query = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = new Eg;
- return this._index.query(t, e, n), n.getItems()
- }
- if (3 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2];
- this._index.query(r, i, o)
- }
- }, Ng.prototype.interfaces_ = function () {
- return []
- }, Ng.prototype.getClass = function () {
- return Ng
- };
- var Sg = function (t) {
- function e() {
- if (t.call(this), this._parentGeom = null, this._lineEdgeMap = new fh, this._boundaryNodeRule = null, this._useBoundaryDeterminationRule = !0, this._argIndex = null, this._boundaryNodes = null, this._hasTooFewPoints = !1, this._invalidPoint = null, this._areaPtLocator = null, this._ptLocator = new Pf, 2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1],
- r = Ql.OGC_SFS_BOUNDARY_RULE;
- this._argIndex = e, this._parentGeom = n, this._boundaryNodeRule = r, null !== n && this.add(n)
- } else if (3 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2];
- this._argIndex = i, this._parentGeom = o, this._boundaryNodeRule = s, null !== o && this.add(o)
- }
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.insertBoundaryPoint = function (t, n) {
- var r = this._nodes.addNode(n).getLabel(),
- i = 1;
- r.getLocation(t, Sh.ON) === pl.BOUNDARY && i++;
- var o = e.determineBoundary(this._boundaryNodeRule, i);
- r.setLocation(t, o)
- }, e.prototype.computeSelfNodes = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1];
- return this.computeSelfNodes(t, e, !1)
- }
- if (3 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = arguments[2],
- o = new fg(n, !0, !1);
- o.setIsDoneIfProperInt(i);
- var s = this.createEdgeSetIntersector(),
- a = this._parentGeom instanceof nh || this._parentGeom instanceof th || this._parentGeom instanceof rh,
- u = r || !a;
- return s.computeIntersections(this._edges, o, u), this.addSelfIntersectionNodes(this._argIndex), o
- }
- }, e.prototype.computeSplitEdges = function (t) {
- for (var e = this._edges.iterator(); e.hasNext();) {
- e.next().eiList.addSplitEdges(t)
- }
- }, e.prototype.computeEdgeIntersections = function (t, e, n) {
- var r = new fg(e, n, !0);
- return r.setBoundaryNodes(this.getBoundaryNodes(), t.getBoundaryNodes()), this.createEdgeSetIntersector().computeIntersections(this._edges, t._edges, r), r
- }, e.prototype.getGeometry = function () {
- return this._parentGeom
- }, e.prototype.getBoundaryNodeRule = function () {
- return this._boundaryNodeRule
- }, e.prototype.hasTooFewPoints = function () {
- return this._hasTooFewPoints
- }, e.prototype.addPoint = function () {
- if (arguments[0] instanceof Qc) {
- var t = arguments[0],
- e = t.getCoordinate();
- this.insertPoint(this._argIndex, e, pl.INTERIOR)
- } else if (arguments[0] instanceof ul) {
- var n = arguments[0];
- this.insertPoint(this._argIndex, n, pl.INTERIOR)
- }
- }, e.prototype.addPolygon = function (t) {
- this.addPolygonRing(t.getExteriorRing(), pl.EXTERIOR, pl.INTERIOR);
- for (var e = 0; e < t.getNumInteriorRing(); e++) {
- var n = t.getInteriorRingN(e);
- this.addPolygonRing(n, pl.INTERIOR, pl.EXTERIOR)
- }
- }, e.prototype.addEdge = function (t) {
- this.insertEdge(t);
- var e = t.getCoordinates();
- this.insertPoint(this._argIndex, e[0], pl.BOUNDARY), this.insertPoint(this._argIndex, e[e.length - 1], pl.BOUNDARY)
- }, e.prototype.addLineString = function (t) {
- var e = pc.removeRepeatedPoints(t.getCoordinates());
- if (e.length < 2) return this._hasTooFewPoints = !0, this._invalidPoint = e[0], null;
- var n = new of (e, new Dh(this._argIndex, pl.INTERIOR));
- this._lineEdgeMap.put(t, n), this.insertEdge(n), ql.isTrue(e.length >= 2, "found LineString with single point"), this.insertBoundaryPoint(this._argIndex, e[0]), this.insertBoundaryPoint(this._argIndex, e[e.length - 1])
- }, e.prototype.getInvalidPoint = function () {
- return this._invalidPoint
- }, e.prototype.getBoundaryPoints = function () {
- for (var t = this.getBoundaryNodes(), e = new Array(t.size()).fill(null), n = 0, r = t.iterator(); r.hasNext();) {
- var i = r.next();
- e[n++] = i.getCoordinate().copy()
- }
- return e
- }, e.prototype.getBoundaryNodes = function () {
- return null === this._boundaryNodes && (this._boundaryNodes = this._nodes.getBoundaryNodes(this._argIndex)), this._boundaryNodes
- }, e.prototype.addSelfIntersectionNode = function (t, e, n) {
- if (this.isBoundaryNode(t, e)) return null;
- n === pl.BOUNDARY && this._useBoundaryDeterminationRule ? this.insertBoundaryPoint(t, e) : this.insertPoint(t, e, n)
- }, e.prototype.addPolygonRing = function (t, e, n) {
- if (t.isEmpty()) return null;
- var r = pc.removeRepeatedPoints(t.getCoordinates());
- if (r.length < 4) return this._hasTooFewPoints = !0, this._invalidPoint = r[0], null;
- var i = e,
- o = n;
- Xl.isCCW(r) && (i = n, o = e);
- var s = new of (r, new Dh(this._argIndex, pl.BOUNDARY, i, o));
- this._lineEdgeMap.put(t, s), this.insertEdge(s), this.insertPoint(this._argIndex, r[0], pl.BOUNDARY)
- }, e.prototype.insertPoint = function (t, e, n) {
- var r = this._nodes.addNode(e),
- i = r.getLabel();
- null === i ? r._label = new Dh(t, n) : i.setLocation(t, n)
- }, e.prototype.createEdgeSetIntersector = function () {
- return new gg
- }, e.prototype.addSelfIntersectionNodes = function (t) {
- for (var e = this._edges.iterator(); e.hasNext();)
- for (var n = e.next(), r = n.getLabel().getLocation(t), i = n.eiList.iterator(); i.hasNext();) {
- var o = i.next();
- this.addSelfIntersectionNode(t, o.coord, r)
- }
- }, e.prototype.add = function () {
- if (1 !== arguments.length) return t.prototype.add.apply(this, arguments);
- var e = arguments[0];
- if (e.isEmpty()) return null;
- if (e instanceof rh && (this._useBoundaryDeterminationRule = !1), e instanceof th) this.addPolygon(e);
- else if (e instanceof Zc) this.addLineString(e);
- else if (e instanceof Qc) this.addPoint(e);
- else if (e instanceof eh) this.addCollection(e);
- else if (e instanceof Gc) this.addCollection(e);
- else if (e instanceof rh) this.addCollection(e);
- else {
- if (!(e instanceof kc)) throw new Error(e.getClass().getName());
- this.addCollection(e)
- }
- }, e.prototype.addCollection = function (t) {
- for (var e = 0; e < t.getNumGeometries(); e++) {
- var n = t.getGeometryN(e);
- this.add(n)
- }
- }, e.prototype.locate = function (t) {
- return gl(this._parentGeom, $c) && this._parentGeom.getNumGeometries() > 50 ? (null === this._areaPtLocator && (this._areaPtLocator = new bg(this._parentGeom)), this._areaPtLocator.locate(t)) : this._ptLocator.locate(t, this._parentGeom)
- }, e.prototype.findEdge = function () {
- if (1 === arguments.length) {
- var e = arguments[0];
- return this._lineEdgeMap.get(e)
- }
- return t.prototype.findEdge.apply(this, arguments)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e.determineBoundary = function (t, e) {
- return t.isInBoundary(e) ? pl.BOUNDARY : pl.INTERIOR
- }, e
- }(Hh),
- Cg = function () {
- if (this._li = new jl, this._resultPrecisionModel = null, this._arg = null, 1 === arguments.length) {
- var t = arguments[0];
- this.setComputationPrecision(t.getPrecisionModel()), this._arg = new Array(1).fill(null), this._arg[0] = new Sg(0, t)
- } else if (2 === arguments.length) {
- var e = arguments[0],
- n = arguments[1],
- r = Ql.OGC_SFS_BOUNDARY_RULE;
- e.getPrecisionModel().compareTo(n.getPrecisionModel()) >= 0 ? this.setComputationPrecision(e.getPrecisionModel()) : this.setComputationPrecision(n.getPrecisionModel()), this._arg = new Array(2).fill(null), this._arg[0] = new Sg(0, e, r), this._arg[1] = new Sg(1, n, r)
- } else if (3 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2];
- i.getPrecisionModel().compareTo(o.getPrecisionModel()) >= 0 ? this.setComputationPrecision(i.getPrecisionModel()) : this.setComputationPrecision(o.getPrecisionModel()), this._arg = new Array(2).fill(null), this._arg[0] = new Sg(0, i, s), this._arg[1] = new Sg(1, o, s)
- }
- };
- Cg.prototype.getArgGeometry = function (t) {
- return this._arg[t].getGeometry()
- }, Cg.prototype.setComputationPrecision = function (t) {
- this._resultPrecisionModel = t, this._li.setPrecisionModel(this._resultPrecisionModel)
- }, Cg.prototype.interfaces_ = function () {
- return []
- }, Cg.prototype.getClass = function () {
- return Cg
- };
- var Pg = function () {};
- Pg.prototype.interfaces_ = function () {
- return []
- }, Pg.prototype.getClass = function () {
- return Pg
- }, Pg.map = function () {
- if (arguments[0] instanceof Wl && gl(arguments[1], Pg.MapOp)) {
- for (var t = arguments[0], e = arguments[1], n = new lc, r = 0; r < t.getNumGeometries(); r++) {
- var i = e.map(t.getGeometryN(r));
- null !== i && n.add(i)
- }
- return t.getFactory().buildGeometry(n)
- }
- if (gl(arguments[0], ic) && gl(arguments[1], Pg.MapOp)) {
- for (var o = arguments[0], s = arguments[1], a = new lc, u = o.iterator(); u.hasNext();) {
- var l = u.next(),
- c = s.map(l);
- null !== c && a.add(c)
- }
- return a
- }
- }, Pg.MapOp = function () {};
- var Mg = function (t) {
- function e() {
- var e = arguments[0],
- n = arguments[1];
- t.call(this, e, n), this._ptLocator = new Pf, this._geomFact = null, this._resultGeom = null, this._graph = null, this._edgeList = new Jp, this._resultPolyList = new lc, this._resultLineList = new lc, this._resultPointList = new lc, this._graph = new Hh(new Hp), this._geomFact = e.getFactory()
- }
- return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.insertUniqueEdge = function (t) {
- var e = this._edgeList.findEqualEdge(t);
- if (null !== e) {
- var n = e.getLabel(),
- r = t.getLabel();
- e.isPointwiseEqual(t) || (r = new Dh(t.getLabel())).flip();
- var i = e.getDepth();
- i.isNull() && i.add(n), i.add(r), n.merge(r)
- } else this._edgeList.add(t)
- }, e.prototype.getGraph = function () {
- return this._graph
- }, e.prototype.cancelDuplicateResultEdges = function () {
- for (var t = this._graph.getEdgeEnds().iterator(); t.hasNext();) {
- var e = t.next(),
- n = e.getSym();
- e.isInResult() && n.isInResult() && (e.setInResult(!1), n.setInResult(!1))
- }
- }, e.prototype.isCoveredByLA = function (t) {
- return !!this.isCovered(t, this._resultLineList) || !!this.isCovered(t, this._resultPolyList)
- }, e.prototype.computeGeometry = function (t, n, r, i) {
- var o = new lc;
- return o.addAll(t), o.addAll(n), o.addAll(r), o.isEmpty() ? e.createEmptyResult(i, this._arg[0].getGeometry(), this._arg[1].getGeometry(), this._geomFact) : this._geomFact.buildGeometry(o)
- }, e.prototype.mergeSymLabels = function () {
- for (var t = this._graph.getNodes().iterator(); t.hasNext();) {
- t.next().getEdges().mergeSymLabels()
- }
- }, e.prototype.isCovered = function (t, e) {
- for (var n = e.iterator(); n.hasNext();) {
- var r = n.next();
- if (this._ptLocator.locate(t, r) !== pl.EXTERIOR) return !0
- }
- return !1
- }, e.prototype.replaceCollapsedEdges = function () {
- for (var t = new lc, e = this._edgeList.iterator(); e.hasNext();) {
- var n = e.next();
- n.isCollapsed() && (e.remove(), t.add(n.getCollapsedEdge()))
- }
- this._edgeList.addAll(t)
- }, e.prototype.updateNodeLabelling = function () {
- for (var t = this._graph.getNodes().iterator(); t.hasNext();) {
- var e = t.next(),
- n = e.getEdges().getLabel();
- e.getLabel().merge(n)
- }
- }, e.prototype.getResultGeometry = function (t) {
- return this.computeOverlay(t), this._resultGeom
- }, e.prototype.insertUniqueEdges = function (t) {
- for (var e = t.iterator(); e.hasNext();) {
- var n = e.next();
- this.insertUniqueEdge(n)
- }
- }, e.prototype.computeOverlay = function (t) {
- this.copyPoints(0), this.copyPoints(1), this._arg[0].computeSelfNodes(this._li, !1), this._arg[1].computeSelfNodes(this._li, !1), this._arg[0].computeEdgeIntersections(this._arg[1], this._li, !0);
- var e = new lc;
- this._arg[0].computeSplitEdges(e), this._arg[1].computeSplitEdges(e), this.insertUniqueEdges(e), this.computeLabelsFromDepths(), this.replaceCollapsedEdges(), Hf.checkValid(this._edgeList.getEdges()), this._graph.addEdges(this._edgeList.getEdges()), this.computeLabelling(), this.labelIncompleteNodes(), this.findResultAreaEdges(t), this.cancelDuplicateResultEdges();
- var n = new Wh(this._geomFact);
- n.add(this._graph), this._resultPolyList = n.getPolygons();
- var r = new Jf(this, this._geomFact, this._ptLocator);
- this._resultLineList = r.build(t);
- var i = new Zf(this, this._geomFact, this._ptLocator);
- this._resultPointList = i.build(t), this._resultGeom = this.computeGeometry(this._resultPointList, this._resultLineList, this._resultPolyList, t)
- }, e.prototype.labelIncompleteNode = function (t, e) {
- var n = this._ptLocator.locate(t.getCoordinate(), this._arg[e].getGeometry());
- t.getLabel().setLocation(e, n)
- }, e.prototype.copyPoints = function (t) {
- for (var e = this._arg[t].getNodeIterator(); e.hasNext();) {
- var n = e.next();
- this._graph.addNode(n.getCoordinate()).setLabel(t, n.getLabel().getLocation(t))
- }
- }, e.prototype.findResultAreaEdges = function (t) {
- for (var n = this._graph.getEdgeEnds().iterator(); n.hasNext();) {
- var r = n.next(),
- i = r.getLabel();
- i.isArea() && !r.isInteriorAreaEdge() && e.isResultOfOp(i.getLocation(0, Sh.RIGHT), i.getLocation(1, Sh.RIGHT), t) && r.setInResult(!0)
- }
- }, e.prototype.computeLabelsFromDepths = function () {
- for (var t = this._edgeList.iterator(); t.hasNext();) {
- var e = t.next(),
- n = e.getLabel(),
- r = e.getDepth();
- if (!r.isNull()) {
- r.normalize();
- for (var i = 0; i < 2; i++) n.isNull(i) || !n.isArea() || r.isNull(i) || (0 === r.getDelta(i) ? n.toLine(i) : (ql.isTrue(!r.isNull(i, Sh.LEFT), "depth of LEFT side has not been initialized"), n.setLocation(i, Sh.LEFT, r.getLocation(i, Sh.LEFT)), ql.isTrue(!r.isNull(i, Sh.RIGHT), "depth of RIGHT side has not been initialized"), n.setLocation(i, Sh.RIGHT, r.getLocation(i, Sh.RIGHT))))
- }
- }
- }, e.prototype.computeLabelling = function () {
- for (var t = this._graph.getNodes().iterator(); t.hasNext();) {
- t.next().getEdges().computeLabelling(this._arg)
- }
- this.mergeSymLabels(), this.updateNodeLabelling()
- }, e.prototype.labelIncompleteNodes = function () {
- for (var t = this._graph.getNodes().iterator(); t.hasNext();) {
- var e = t.next(),
- n = e.getLabel();
- e.isIsolated() && (n.isNull(0) ? this.labelIncompleteNode(e, 0) : this.labelIncompleteNode(e, 1)), e.getEdges().updateLabelling(n)
- }
- }, e.prototype.isCoveredByA = function (t) {
- return !!this.isCovered(t, this._resultPolyList)
- }, e.prototype.interfaces_ = function () {
- return []
- }, e.prototype.getClass = function () {
- return e
- }, e
- }(Cg);
- Mg.overlayOp = function (t, e, n) {
- return new Mg(t, e).getResultGeometry(n)
- }, Mg.intersection = function (t, e) {
- if (t.isEmpty() || e.isEmpty()) return Mg.createEmptyResult(Mg.INTERSECTION, t, e, t.getFactory());
- if (t.isGeometryCollection()) {
- var n = e;
- return Wf.map(t, {
- interfaces_: function () {
- return [Pg.MapOp]
- },
- map: function (t) {
- return t.intersection(n)
- }
- })
- }
- return t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), ug.overlayOp(t, e, Mg.INTERSECTION)
- }, Mg.symDifference = function (t, e) {
- if (t.isEmpty() || e.isEmpty()) {
- if (t.isEmpty() && e.isEmpty()) return Mg.createEmptyResult(Mg.SYMDIFFERENCE, t, e, t.getFactory());
- if (t.isEmpty()) return e.copy();
- if (e.isEmpty()) return t.copy()
- }
- return t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), ug.overlayOp(t, e, Mg.SYMDIFFERENCE)
- }, Mg.resultDimension = function (t, e, n) {
- var r = e.getDimension(),
- i = n.getDimension(),
- o = -1;
- switch (t) {
- case Mg.INTERSECTION:
- o = Math.min(r, i);
- break;
- case Mg.UNION:
- o = Math.max(r, i);
- break;
- case Mg.DIFFERENCE:
- o = r;
- break;
- case Mg.SYMDIFFERENCE:
- o = Math.max(r, i)
- }
- return o
- }, Mg.createEmptyResult = function (t, e, n, r) {
- var i = null;
- switch (Mg.resultDimension(t, e, n)) {
- case -1:
- i = r.createGeometryCollection(new Array(0).fill(null));
- break;
- case 0:
- i = r.createPoint();
- break;
- case 1:
- i = r.createLineString();
- break;
- case 2:
- i = r.createPolygon()
- }
- return i
- }, Mg.difference = function (t, e) {
- return t.isEmpty() ? Mg.createEmptyResult(Mg.DIFFERENCE, t, e, t.getFactory()) : e.isEmpty() ? t.copy() : (t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), ug.overlayOp(t, e, Mg.DIFFERENCE))
- }, Mg.isResultOfOp = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = t.getLocation(0),
- r = t.getLocation(1);
- return Mg.isResultOfOp(n, r, e)
- }
- if (3 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = arguments[2];
- switch (i === pl.BOUNDARY && (i = pl.INTERIOR), o === pl.BOUNDARY && (o = pl.INTERIOR), s) {
- case Mg.INTERSECTION:
- return i === pl.INTERIOR && o === pl.INTERIOR;
- case Mg.UNION:
- return i === pl.INTERIOR || o === pl.INTERIOR;
- case Mg.DIFFERENCE:
- return i === pl.INTERIOR && o !== pl.INTERIOR;
- case Mg.SYMDIFFERENCE:
- return i === pl.INTERIOR && o !== pl.INTERIOR || i !== pl.INTERIOR && o === pl.INTERIOR
- }
- return !1
- }
- }, Mg.INTERSECTION = 1, Mg.UNION = 2, Mg.DIFFERENCE = 3, Mg.SYMDIFFERENCE = 4;
- var Lg = function () {
- this._g = null, this._boundaryDistanceTolerance = null, this._linework = null, this._ptLocator = new Pf, this._seg = new vp;
- var t = arguments[0],
- e = arguments[1];
- this._g = t, this._boundaryDistanceTolerance = e, this._linework = this.extractLinework(t)
- };
- Lg.prototype.isWithinToleranceOfBoundary = function (t) {
- for (var e = this, n = 0; n < this._linework.getNumGeometries(); n++)
- for (var r = e._linework.getGeometryN(n).getCoordinateSequence(), i = 0; i < r.size() - 1; i++) {
- if (r.getCoordinate(i, e._seg.p0), r.getCoordinate(i + 1, e._seg.p1), e._seg.distance(t) <= e._boundaryDistanceTolerance) return !0
- }
- return !1
- }, Lg.prototype.getLocation = function (t) {
- return this.isWithinToleranceOfBoundary(t) ? pl.BOUNDARY : this._ptLocator.locate(t, this._g)
- }, Lg.prototype.extractLinework = function (t) {
- var e = new Og;
- t.apply(e);
- var n = e.getLinework(),
- r = _h.toLineStringArray(n);
- return t.getFactory().createMultiLineString(r)
- }, Lg.prototype.interfaces_ = function () {
- return []
- }, Lg.prototype.getClass = function () {
- return Lg
- };
- var Og = function () {
- this._linework = null, this._linework = new lc
- };
- Og.prototype.getLinework = function () {
- return this._linework
- }, Og.prototype.filter = function (t) {
- if (t instanceof th) {
- var e = t;
- this._linework.add(e.getExteriorRing());
- for (var n = 0; n < e.getNumInteriorRing(); n++) this._linework.add(e.getInteriorRingN(n))
- }
- }, Og.prototype.interfaces_ = function () {
- return [Dc]
- }, Og.prototype.getClass = function () {
- return Og
- };
- var Rg = function () {
- this._g = null, this._doLeft = !0, this._doRight = !0;
- var t = arguments[0];
- this._g = t
- };
- Rg.prototype.extractPoints = function (t, e, n) {
- for (var r = t.getCoordinates(), i = 0; i < r.length - 1; i++) this.computeOffsetPoints(r[i], r[i + 1], e, n)
- }, Rg.prototype.setSidesToGenerate = function (t, e) {
- this._doLeft = t, this._doRight = e
- }, Rg.prototype.getPoints = function (t) {
- for (var e = new lc, n = Cf.getLines(this._g).iterator(); n.hasNext();) {
- var r = n.next();
- this.extractPoints(r, t, e)
- }
- return e
- }, Rg.prototype.computeOffsetPoints = function (t, e, n, r) {
- var i = e.x - t.x,
- o = e.y - t.y,
- s = Math.sqrt(i * i + o * o),
- a = n * i / s,
- u = n * o / s,
- l = (e.x + t.x) / 2,
- c = (e.y + t.y) / 2;
- if (this._doLeft) {
- var h = new ul(l - u, c + a);
- r.add(h)
- }
- if (this._doRight) {
- var p = new ul(l + u, c - a);
- r.add(p)
- }
- }, Rg.prototype.interfaces_ = function () {
- return []
- }, Rg.prototype.getClass = function () {
- return Rg
- };
- var Tg = function t() {
- this._geom = null, this._locFinder = null, this._location = new Array(3).fill(null), this._invalidLocation = null, this._boundaryDistanceTolerance = t.TOLERANCE, this._testCoords = new lc;
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2];
- this._boundaryDistanceTolerance = t.computeBoundaryDistanceTolerance(e, n), this._geom = [e, n, r], this._locFinder = [new Lg(this._geom[0], this._boundaryDistanceTolerance), new Lg(this._geom[1], this._boundaryDistanceTolerance), new Lg(this._geom[2], this._boundaryDistanceTolerance)]
- },
- Ag = {
- TOLERANCE: {
- configurable: !0
- }
- };
- Tg.prototype.reportResult = function (t, e, n) {
- Pl.out.println("Overlay result invalid - A:" + pl.toLocationSymbol(e[0]) + " B:" + pl.toLocationSymbol(e[1]) + " expected:" + (n ? "i" : "e") + " actual:" + pl.toLocationSymbol(e[2]))
- }, Tg.prototype.isValid = function (t) {
- this.addTestPts(this._geom[0]), this.addTestPts(this._geom[1]);
- var e = this.checkValid(t);
- return e
- }, Tg.prototype.checkValid = function () {
- var t = this;
- if (1 === arguments.length) {
- for (var e = arguments[0], n = 0; n < this._testCoords.size(); n++) {
- var r = t._testCoords.get(n);
- if (!t.checkValid(e, r)) return t._invalidLocation = r, !1
- }
- return !0
- }
- if (2 === arguments.length) {
- var i = arguments[0],
- o = arguments[1];
- return this._location[0] = this._locFinder[0].getLocation(o), this._location[1] = this._locFinder[1].getLocation(o), this._location[2] = this._locFinder[2].getLocation(o), !!Tg.hasLocation(this._location, pl.BOUNDARY) || this.isValidResult(i, this._location)
- }
- }, Tg.prototype.addTestPts = function (t) {
- var e = new Rg(t);
- this._testCoords.addAll(e.getPoints(5 * this._boundaryDistanceTolerance))
- }, Tg.prototype.isValidResult = function (t, e) {
- var n = Mg.isResultOfOp(e[0], e[1], t),
- r = !(n ^ e[2] === pl.INTERIOR);
- return r || this.reportResult(t, e, n), r
- }, Tg.prototype.getInvalidLocation = function () {
- return this._invalidLocation
- }, Tg.prototype.interfaces_ = function () {
- return []
- }, Tg.prototype.getClass = function () {
- return Tg
- }, Tg.hasLocation = function (t, e) {
- for (var n = 0; n < 3; n++)
- if (t[n] === e) return !0;
- return !1
- }, Tg.computeBoundaryDistanceTolerance = function (t, e) {
- return Math.min($f.computeSizeBasedSnapTolerance(t), $f.computeSizeBasedSnapTolerance(e))
- }, Tg.isValid = function (t, e, n, r) {
- return new Tg(t, e, r).isValid(n)
- }, Ag.TOLERANCE.get = function () {
- return 1e-6
- }, Object.defineProperties(Tg, Ag);
- var Dg = function t(e) {
- this._geomFactory = null, this._skipEmpty = !1, this._inputGeoms = null, this._geomFactory = t.extractFactory(e), this._inputGeoms = e
- };
- Dg.prototype.extractElements = function (t, e) {
- if (null === t) return null;
- for (var n = 0; n < t.getNumGeometries(); n++) {
- var r = t.getGeometryN(n);
- this._skipEmpty && r.isEmpty() || e.add(r)
- }
- }, Dg.prototype.combine = function () {
- for (var t = new lc, e = this._inputGeoms.iterator(); e.hasNext();) {
- var n = e.next();
- this.extractElements(n, t)
- }
- return 0 === t.size() ? null !== this._geomFactory ? this._geomFactory.createGeometryCollection(null) : null : this._geomFactory.buildGeometry(t)
- }, Dg.prototype.interfaces_ = function () {
- return []
- }, Dg.prototype.getClass = function () {
- return Dg
- }, Dg.combine = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = new Dg(t);
- return e.combine()
- }
- if (2 === arguments.length) {
- var n = arguments[0],
- r = arguments[1],
- i = new Dg(Dg.createList(n, r));
- return i.combine()
- }
- if (3 === arguments.length) {
- var o = arguments[0],
- s = arguments[1],
- a = arguments[2],
- u = new Dg(Dg.createList(o, s, a));
- return u.combine()
- }
- }, Dg.extractFactory = function (t) {
- return t.isEmpty() ? null : t.iterator().next().getFactory()
- }, Dg.createList = function () {
- if (2 === arguments.length) {
- var t = arguments[0],
- e = arguments[1],
- n = new lc;
- return n.add(t), n.add(e), n
- }
- if (3 === arguments.length) {
- var r = arguments[0],
- i = arguments[1],
- o = arguments[2],
- s = new lc;
- return s.add(r), s.add(i), s.add(o), s
- }
- };
- var Fg = function () {
- this._inputPolys = null, this._geomFactory = null;
- var t = arguments[0];
- this._inputPolys = t, null === this._inputPolys && (this._inputPolys = new lc)
- },
- kg = {
- STRTREE_NODE_CAPACITY: {
- configurable: !0
- }
- };
- Fg.prototype.reduceToGeometries = function (t) {
- for (var e = new lc, n = t.iterator(); n.hasNext();) {
- var r = n.next(),
- i = null;
- gl(r, ac) ? i = this.unionTree(r) : r instanceof Wl && (i = r), e.add(i)
- }
- return e
- }, Fg.prototype.extractByEnvelope = function (t, e, n) {
- for (var r = new lc, i = 0; i < e.getNumGeometries(); i++) {
- var o = e.getGeometryN(i);
- o.getEnvelopeInternal().intersects(t) ? r.add(o) : n.add(o)
- }
- return this._geomFactory.buildGeometry(r)
- }, Fg.prototype.unionOptimized = function (t, e) {
- var n = t.getEnvelopeInternal(),
- r = e.getEnvelopeInternal();
- if (!n.intersects(r)) return Dg.combine(t, e);
- if (t.getNumGeometries() <= 1 && e.getNumGeometries() <= 1) return this.unionActual(t, e);
- var i = n.intersection(r);
- return this.unionUsingEnvelopeIntersection(t, e, i)
- }, Fg.prototype.union = function () {
- if (null === this._inputPolys) throw new Error("union() method cannot be called twice");
- if (this._inputPolys.isEmpty()) return null;
- this._geomFactory = this._inputPolys.iterator().next().getFactory();
- for (var t = new up(Fg.STRTREE_NODE_CAPACITY), e = this._inputPolys.iterator(); e.hasNext();) {
- var n = e.next();
- t.insert(n.getEnvelopeInternal(), n)
- }
- this._inputPolys = null;
- var r = t.itemsTree();
- return this.unionTree(r)
- }, Fg.prototype.binaryUnion = function () {
- if (1 === arguments.length) {
- var t = arguments[0];
- return this.binaryUnion(t, 0, t.size())
- }
- if (3 === arguments.length) {
- var e = arguments[0],
- n = arguments[1],
- r = arguments[2];
- if (r - n <= 1) {
- var i = Fg.getGeometry(e, n);
- return this.unionSafe(i, null)
- }
- if (r - n == 2) return this.unionSafe(Fg.getGeometry(e, n), Fg.getGeometry(e, n + 1));
- var o = Math.trunc((r + n) / 2),
- s = this.binaryUnion(e, n, o),
- a = this.binaryUnion(e, o, r);
- return this.unionSafe(s, a)
- }
- }, Fg.prototype.repeatedUnion = function (t) {
- for (var e = null, n = t.iterator(); n.hasNext();) {
- var r = n.next();
- e = null === e ? r.copy() : e.union(r)
- }
- return e
- }, Fg.prototype.unionSafe = function (t, e) {
- return null === t && null === e ? null : null === t ? e.copy() : null === e ? t.copy() : this.unionOptimized(t, e)
- }, Fg.prototype.unionActual = function (t, e) {
- return Fg.restrictToPolygons(t.union(e))
- }, Fg.prototype.unionTree = function (t) {
- var e = this.reduceToGeometries(t);
- return this.binaryUnion(e)
- }, Fg.prototype.unionUsingEnvelopeIntersection = function (t, e, n) {
- var r = new lc,
- i = this.extractByEnvelope(n, t, r),
- o = this.extractByEnvelope(n, e, r),
- s = this.unionActual(i, o);
- return r.add(s), Dg.combine(r)
- }, Fg.prototype.bufferUnion = function () {
- if (1 === arguments.length) {
- var t = arguments[0],
- e = t.get(0).getFactory(),
- n = e.buildGeometry(t),
- r = n.buffer(0);
- return r
- }
- if (2 === arguments.length) {
- var i = arguments[0],
- o = arguments[1],
- s = i.getFactory(),
- a = s.createGeometryCollection([i, o]),
- u = a.buffer(0);
- return u
- }
- }, Fg.prototype.interfaces_ = function () {
- return []
- }, Fg.prototype.getClass = function () {
- return Fg
- }, Fg.restrictToPolygons = function (t) {
- if (gl(t, $c)) return t;
- var e = Sf.getPolygons(t);
- return 1 === e.size() ? e.get(0) : t.getFactory().createMultiPolygon(_h.toPolygonArray(e))
- }, Fg.getGeometry = function (t, e) {
- return e >= t.size() ? null : t.get(e)
- }, Fg.union = function (t) {
- return new Fg(t).union()
- }, kg.STRTREE_NODE_CAPACITY.get = function () {
- return 4
- }, Object.defineProperties(Fg, kg);
- var Gg = function () {};
- function qg() {
- return new Bg
- }
- function Bg() {
- this.reset()
- }
- Gg.prototype.interfaces_ = function () {
- return []
- }, Gg.prototype.getClass = function () {
- return Gg
- }, Gg.union = function (t, e) {
- if (t.isEmpty() || e.isEmpty()) {
- if (t.isEmpty() && e.isEmpty()) return Mg.createEmptyResult(Mg.UNION, t, e, t.getFactory());
- if (t.isEmpty()) return e.copy();
- if (e.isEmpty()) return t.copy()
- }
- return t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), ug.overlayOp(t, e, Mg.UNION)
- }, Bg.prototype = {
- constructor: Bg,
- reset: function () {
- this.s = this.t = 0
- },
- add: function (t) {
- jg(zg, t, this.t), jg(this, zg.s, this.s), this.s ? this.t += zg.t : this.s = zg.t
- },
- valueOf: function () {
- return this.s
- }
- };
- var zg = new Bg;
- function jg(t, e, n) {
- var r = t.s = e + n,
- i = r - e,
- o = r - i;
- t.t = e - o + (n - i)
- }
- var Ug = 1e-6,
- Vg = Math.PI,
- Xg = Vg / 2,
- Yg = Vg / 4,
- Hg = 2 * Vg,
- Wg = 180 / Vg,
- Jg = Vg / 180,
- Zg = Math.abs,
- Kg = Math.atan,
- Qg = Math.atan2,
- $g = Math.cos,
- td = Math.sin,
- ed = Math.sqrt;
- function nd(t) {
- return t > 1 ? 0 : t < -1 ? Vg : Math.acos(t)
- }
- function rd(t) {
- return t > 1 ? Xg : t < -1 ? -Xg : Math.asin(t)
- }
- function id() {}
- function od(t, e) {
- t && ad.hasOwnProperty(t.type) && ad[t.type](t, e)
- }
- var sd = {
- Feature: function (t, e) {
- od(t.geometry, e)
- },
- FeatureCollection: function (t, e) {
- for (var n = t.features, r = -1, i = n.length; ++r < i;) od(n[r].geometry, e)
- }
- },
- ad = {
- Sphere: function (t, e) {
- e.sphere()
- },
- Point: function (t, e) {
- t = t.coordinates, e.point(t[0], t[1], t[2])
- },
- MultiPoint: function (t, e) {
- for (var n = t.coordinates, r = -1, i = n.length; ++r < i;) t = n[r], e.point(t[0], t[1], t[2])
- },
- LineString: function (t, e) {
- ud(t.coordinates, e, 0)
- },
- MultiLineString: function (t, e) {
- for (var n = t.coordinates, r = -1, i = n.length; ++r < i;) ud(n[r], e, 0)
- },
- Polygon: function (t, e) {
- ld(t.coordinates, e)
- },
- MultiPolygon: function (t, e) {
- for (var n = t.coordinates, r = -1, i = n.length; ++r < i;) ld(n[r], e)
- },
- GeometryCollection: function (t, e) {
- for (var n = t.geometries, r = -1, i = n.length; ++r < i;) od(n[r], e)
- }
- };
- function ud(t, e, n) {
- var r, i = -1,
- o = t.length - n;
- for (e.lineStart(); ++i < o;) r = t[i], e.point(r[0], r[1], r[2]);
- e.lineEnd()
- }
- function ld(t, e) {
- var n = -1,
- r = t.length;
- for (e.polygonStart(); ++n < r;) ud(t[n], e, 1);
- e.polygonEnd()
- }
- qg(), qg();
- function cd(t) {
- return [Qg(t[1], t[0]), rd(t[2])]
- }
- function hd(t) {
- var e = t[0],
- n = t[1],
- r = $g(n);
- return [r * $g(e), r * td(e), td(n)]
- }
- function pd(t, e) {
- return t[0] * e[0] + t[1] * e[1] + t[2] * e[2]
- }
- function fd(t, e) {
- return [t[1] * e[2] - t[2] * e[1], t[2] * e[0] - t[0] * e[2], t[0] * e[1] - t[1] * e[0]]
- }
- function gd(t, e) {
- t[0] += e[0], t[1] += e[1], t[2] += e[2]
- }
- function dd(t, e) {
- return [t[0] * e, t[1] * e, t[2] * e]
- }
- function yd(t) {
- var e = ed(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
- t[0] /= e, t[1] /= e, t[2] /= e
- }
- qg();
- function vd(t, e) {
- function n(n, r) {
- return n = t(n, r), e(n[0], n[1])
- }
- return t.invert && e.invert && (n.invert = function (n, r) {
- return (n = e.invert(n, r)) && t.invert(n[0], n[1])
- }), n
- }
- function _d(t, e) {
- return [t > Vg ? t - Hg : t < -Vg ? t + Hg : t, e]
- }
- function md(t) {
- return function (e, n) {
- return [(e += t) > Vg ? e - Hg : e < -Vg ? e + Hg : e, n]
- }
- }
- function xd(t) {
- var e = md(t);
- return e.invert = md(-t), e
- }
- function Ed(t, e) {
- var n = $g(t),
- r = td(t),
- i = $g(e),
- o = td(e);
- function s(t, e) {
- var s = $g(e),
- a = $g(t) * s,
- u = td(t) * s,
- l = td(e),
- c = l * n + a * r;
- return [Qg(u * i - c * o, a * n - l * r), rd(c * i + u * o)]
- }
- return s.invert = function (t, e) {
- var s = $g(e),
- a = $g(t) * s,
- u = td(t) * s,
- l = td(e),
- c = l * i - u * o;
- return [Qg(u * i + l * o, a * n + c * r), rd(c * n - a * r)]
- }, s
- }
- function bd(t, e) {
- (e = hd(e))[0] -= t, yd(e);
- var n = nd(-e[1]);
- return ((-e[2] < 0 ? -n : n) + Hg - Ug) % Hg
- }
- function wd() {
- var t, e = [];
- return {
- point: function (e, n) {
- t.push([e, n])
- },
- lineStart: function () {
- e.push(t = [])
- },
- lineEnd: id,
- rejoin: function () {
- e.length > 1 && e.push(e.pop().concat(e.shift()))
- },
- result: function () {
- var n = e;
- return e = [], t = null, n
- }
- }
- }
- function Id(t, e) {
- return Zg(t[0] - e[0]) < Ug && Zg(t[1] - e[1]) < Ug
- }
- function Nd(t, e, n, r) {
- this.x = t, this.z = e, this.o = n, this.e = r, this.v = !1, this.n = this.p = null
- }
- function Sd(t, e, n, r, i) {
- var o, s, a = [],
- u = [];
- if (t.forEach((function (t) {
- if (!((e = t.length - 1) <= 0)) {
- var e, n, r = t[0],
- s = t[e];
- if (Id(r, s)) {
- for (i.lineStart(), o = 0; o < e; ++o) i.point((r = t[o])[0], r[1]);
- i.lineEnd()
- } else a.push(n = new Nd(r, t, null, !0)), u.push(n.o = new Nd(r, null, n, !1)), a.push(n = new Nd(s, t, null, !1)), u.push(n.o = new Nd(s, null, n, !0))
- }
- })), a.length) {
- for (u.sort(e), Cd(a), Cd(u), o = 0, s = u.length; o < s; ++o) u[o].e = n = !n;
- for (var l, c, h = a[0];;) {
- for (var p = h, f = !0; p.v;)
- if ((p = p.n) === h) return;
- l = p.z, i.lineStart();
- do {
- if (p.v = p.o.v = !0, p.e) {
- if (f)
- for (o = 0, s = l.length; o < s; ++o) i.point((c = l[o])[0], c[1]);
- else r(p.x, p.n.x, 1, i);
- p = p.n
- } else {
- if (f)
- for (l = p.p.z, o = l.length - 1; o >= 0; --o) i.point((c = l[o])[0], c[1]);
- else r(p.x, p.p.x, -1, i);
- p = p.p
- }
- l = (p = p.o).z, f = !f
- } while (!p.v);
- i.lineEnd()
- }
- }
- }
- function Cd(t) {
- if (e = t.length) {
- for (var e, n, r = 0, i = t[0]; ++r < e;) i.n = n = t[r], n.p = i, i = n;
- i.n = n = t[0], n.p = i
- }
- }
- function Pd(t, e) {
- return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
- }
- _d.invert = _d;
- var Md, Ld;
- 1 === (Md = Pd).length && (Ld = Md, Md = function (t, e) {
- return Pd(Ld(t), e)
- });
- function Od(t) {
- for (var e, n, r, i = t.length, o = -1, s = 0; ++o < i;) s += t[o].length;
- for (n = new Array(s); --i >= 0;)
- for (e = (r = t[i]).length; --e >= 0;) n[--s] = r[e];
- return n
- }
- var Rd = 1e9,
- Td = -Rd;
- function Ad(t, e, n, r) {
- function i(i, o) {
- return t <= i && i <= n && e <= o && o <= r
- }
- function o(i, o, a, l) {
- var c = 0,
- h = 0;
- if (null == i || (c = s(i, a)) !== (h = s(o, a)) || u(i, o) < 0 ^ a > 0)
- do {
- l.point(0 === c || 3 === c ? t : n, c > 1 ? r : e)
- } while ((c = (c + a + 4) % 4) !== h);
- else l.point(o[0], o[1])
- }
- function s(r, i) {
- return Zg(r[0] - t) < Ug ? i > 0 ? 0 : 3 : Zg(r[0] - n) < Ug ? i > 0 ? 2 : 1 : Zg(r[1] - e) < Ug ? i > 0 ? 1 : 0 : i > 0 ? 3 : 2
- }
- function a(t, e) {
- return u(t.x, e.x)
- }
- function u(t, e) {
- var n = s(t, 1),
- r = s(e, 1);
- return n !== r ? n - r : 0 === n ? e[1] - t[1] : 1 === n ? t[0] - e[0] : 2 === n ? t[1] - e[1] : e[0] - t[0]
- }
- return function (s) {
- var u, l, c, h, p, f, g, d, y, v, _, m = s,
- x = wd(),
- E = {
- point: b,
- lineStart: function () {
- E.point = w, l && l.push(c = []);
- v = !0, y = !1, g = d = NaN
- },
- lineEnd: function () {
- u && (w(h, p), f && y && x.rejoin(), u.push(x.result()));
- E.point = b, y && m.lineEnd()
- },
- polygonStart: function () {
- m = x, u = [], l = [], _ = !0
- },
- polygonEnd: function () {
- var e = function () {
- for (var e = 0, n = 0, i = l.length; n < i; ++n)
- for (var o, s, a = l[n], u = 1, c = a.length, h = a[0], p = h[0], f = h[1]; u < c; ++u) o = p, s = f, p = (h = a[u])[0], f = h[1], s <= r ? f > r && (p - o) * (r - s) > (f - s) * (t - o) && ++e : f <= r && (p - o) * (r - s) < (f - s) * (t - o) && --e;
- return e
- }(),
- n = _ && e,
- i = (u = Od(u)).length;
- (n || i) && (s.polygonStart(), n && (s.lineStart(), o(null, null, 1, s), s.lineEnd()), i && Sd(u, a, e, o, s), s.polygonEnd());
- m = s, u = l = c = null
- }
- };
- function b(t, e) {
- i(t, e) && m.point(t, e)
- }
- function w(o, s) {
- var a = i(o, s);
- if (l && c.push([o, s]), v) h = o, p = s, f = a, v = !1, a && (m.lineStart(), m.point(o, s));
- else if (a && y) m.point(o, s);
- else {
- var u = [g = Math.max(Td, Math.min(Rd, g)), d = Math.max(Td, Math.min(Rd, d))],
- x = [o = Math.max(Td, Math.min(Rd, o)), s = Math.max(Td, Math.min(Rd, s))];
- ! function (t, e, n, r, i, o) {
- var s, a = t[0],
- u = t[1],
- l = 0,
- c = 1,
- h = e[0] - a,
- p = e[1] - u;
- if (s = n - a, h || !(s > 0)) {
- if (s /= h, h < 0) {
- if (s < l) return;
- s < c && (c = s)
- } else if (h > 0) {
- if (s > c) return;
- s > l && (l = s)
- }
- if (s = i - a, h || !(s < 0)) {
- if (s /= h, h < 0) {
- if (s > c) return;
- s > l && (l = s)
- } else if (h > 0) {
- if (s < l) return;
- s < c && (c = s)
- }
- if (s = r - u, p || !(s > 0)) {
- if (s /= p, p < 0) {
- if (s < l) return;
- s < c && (c = s)
- } else if (p > 0) {
- if (s > c) return;
- s > l && (l = s)
- }
- if (s = o - u, p || !(s < 0)) {
- if (s /= p, p < 0) {
- if (s > c) return;
- s > l && (l = s)
- } else if (p > 0) {
- if (s < l) return;
- s < c && (c = s)
- }
- return l > 0 && (t[0] = a + l * h, t[1] = u + l * p), c < 1 && (e[0] = a + c * h, e[1] = u + c * p), !0
- }
- }
- }
- }
- }(u, x, t, e, n, r) ? a && (m.lineStart(), m.point(o, s), _ = !1): (y || (m.lineStart(), m.point(u[0], u[1])), m.point(x[0], x[1]), a || m.lineEnd(), _ = !1)
- }
- g = o, d = s, y = a
- }
- return E
- }
- }
- var Dd = qg();
- qg();
- function Fd(t) {
- return t
- }
- qg(), qg();
- var kd = 1 / 0,
- Gd = kd,
- qd = -kd,
- Bd = qd,
- zd = {
- point: function (t, e) {
- t < kd && (kd = t);
- t > qd && (qd = t);
- e < Gd && (Gd = e);
- e > Bd && (Bd = e)
- },
- lineStart: id,
- lineEnd: id,
- polygonStart: id,
- polygonEnd: id,
- result: function () {
- var t = [
- [kd, Gd],
- [qd, Bd]
- ];
- return qd = Bd = -(Gd = kd = 1 / 0), t
- }
- };
- qg();
- function jd(t, e, n, r) {
- return function (i, o) {
- var s, a, u, l = e(o),
- c = i.invert(r[0], r[1]),
- h = wd(),
- p = e(h),
- f = !1,
- g = {
- point: d,
- lineStart: v,
- lineEnd: _,
- polygonStart: function () {
- g.point = m, g.lineStart = x, g.lineEnd = E, a = [], s = []
- },
- polygonEnd: function () {
- g.point = d, g.lineStart = v, g.lineEnd = _, a = Od(a);
- var t = function (t, e) {
- var n = e[0],
- r = e[1],
- i = [td(n), -$g(n), 0],
- o = 0,
- s = 0;
- Dd.reset();
- for (var a = 0, u = t.length; a < u; ++a)
- if (c = (l = t[a]).length)
- for (var l, c, h = l[c - 1], p = h[0], f = h[1] / 2 + Yg, g = td(f), d = $g(f), y = 0; y < c; ++y, p = _, g = x, d = E, h = v) {
- var v = l[y],
- _ = v[0],
- m = v[1] / 2 + Yg,
- x = td(m),
- E = $g(m),
- b = _ - p,
- w = b >= 0 ? 1 : -1,
- I = w * b,
- N = I > Vg,
- S = g * x;
- if (Dd.add(Qg(S * w * td(I), d * E + S * $g(I))), o += N ? b + w * Hg : b, N ^ p >= n ^ _ >= n) {
- var C = fd(hd(h), hd(v));
- yd(C);
- var P = fd(i, C);
- yd(P);
- var M = (N ^ b >= 0 ? -1 : 1) * rd(P[2]);
- (r > M || r === M && (C[0] || C[1])) && (s += N ^ b >= 0 ? 1 : -1)
- }
- }
- return (o < -1e-6 || o < Ug && Dd < -1e-6) ^ 1 & s
- }(s, c);
- a.length ? (f || (o.polygonStart(), f = !0), Sd(a, Vd, t, n, o)) : t && (f || (o.polygonStart(), f = !0), o.lineStart(), n(null, null, 1, o), o.lineEnd()), f && (o.polygonEnd(), f = !1), a = s = null
- },
- sphere: function () {
- o.polygonStart(), o.lineStart(), n(null, null, 1, o), o.lineEnd(), o.polygonEnd()
- }
- };
- function d(e, n) {
- var r = i(e, n);
- t(e = r[0], n = r[1]) && o.point(e, n)
- }
- function y(t, e) {
- var n = i(t, e);
- l.point(n[0], n[1])
- }
- function v() {
- g.point = y, l.lineStart()
- }
- function _() {
- g.point = d, l.lineEnd()
- }
- function m(t, e) {
- u.push([t, e]);
- var n = i(t, e);
- p.point(n[0], n[1])
- }
- function x() {
- p.lineStart(), u = []
- }
- function E() {
- m(u[0][0], u[0][1]), p.lineEnd();
- var t, e, n, r, i = p.clean(),
- l = h.result(),
- c = l.length;
- if (u.pop(), s.push(u), u = null, c)
- if (1 & i) {
- if ((e = (n = l[0]).length - 1) > 0) {
- for (f || (o.polygonStart(), f = !0), o.lineStart(), t = 0; t < e; ++t) o.point((r = n[t])[0], r[1]);
- o.lineEnd()
- }
- } else c > 1 && 2 & i && l.push(l.pop().concat(l.shift())), a.push(l.filter(Ud))
- }
- return g
- }
- }
- function Ud(t) {
- return t.length > 1
- }
- function Vd(t, e) {
- return ((t = t.x)[0] < 0 ? t[1] - Xg - Ug : Xg - t[1]) - ((e = e.x)[0] < 0 ? e[1] - Xg - Ug : Xg - e[1])
- }
- var Xd = jd((function () {
- return !0
- }), (function (t) {
- var e, n = NaN,
- r = NaN,
- i = NaN;
- return {
- lineStart: function () {
- t.lineStart(), e = 1
- },
- point: function (o, s) {
- var a = o > 0 ? Vg : -Vg,
- u = Zg(o - n);
- Zg(u - Vg) < Ug ? (t.point(n, r = (r + s) / 2 > 0 ? Xg : -Xg), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), t.point(o, r), e = 0) : i !== a && u >= Vg && (Zg(n - i) < Ug && (n -= i * Ug), Zg(o - a) < Ug && (o -= a * Ug), r = function (t, e, n, r) {
- var i, o, s = td(t - n);
- return Zg(s) > Ug ? Kg((td(e) * (o = $g(r)) * td(n) - td(r) * (i = $g(e)) * td(t)) / (i * o * s)) : (e + r) / 2
- }(n, r, o, s), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), e = 0), t.point(n = o, r = s), i = a
- },
- lineEnd: function () {
- t.lineEnd(), n = r = NaN
- },
- clean: function () {
- return 2 - e
- }
- }
- }), (function (t, e, n, r) {
- var i;
- if (null == t) i = n * Xg, r.point(-Vg, i), r.point(0, i), r.point(Vg, i), r.point(Vg, 0), r.point(Vg, -i), r.point(0, -i), r.point(-Vg, -i), r.point(-Vg, 0), r.point(-Vg, i);
- else if (Zg(t[0] - e[0]) > Ug) {
- var o = t[0] < e[0] ? Vg : -Vg;
- i = n * o / 2, r.point(-o, i), r.point(0, i), r.point(o, i)
- } else r.point(e[0], e[1])
- }), [-Vg, -Xg]);
- function Yd(t, e) {
- var n = $g(t),
- r = n > 0,
- i = Zg(n) > Ug;
- function o(t, e) {
- return $g(t) * $g(e) > n
- }
- function s(t, e, r) {
- var i = [1, 0, 0],
- o = fd(hd(t), hd(e)),
- s = pd(o, o),
- a = o[0],
- u = s - a * a;
- if (!u) return !r && t;
- var l = n * s / u,
- c = -n * a / u,
- h = fd(i, o),
- p = dd(i, l);
- gd(p, dd(o, c));
- var f = h,
- g = pd(p, f),
- d = pd(f, f),
- y = g * g - d * (pd(p, p) - 1);
- if (!(y < 0)) {
- var v = ed(y),
- _ = dd(f, (-g - v) / d);
- if (gd(_, p), _ = cd(_), !r) return _;
- var m, x = t[0],
- E = e[0],
- b = t[1],
- w = e[1];
- E < x && (m = x, x = E, E = m);
- var I = E - x,
- N = Zg(I - Vg) < Ug;
- if (!N && w < b && (m = b, b = w, w = m), N || I < Ug ? N ? b + w > 0 ^ _[1] < (Zg(_[0] - x) < Ug ? b : w) : b <= _[1] && _[1] <= w : I > Vg ^ (x <= _[0] && _[0] <= E)) {
- var S = dd(f, (-g + v) / d);
- return gd(S, p), [_, cd(S)]
- }
- }
- }
- function a(e, n) {
- var i = r ? t : Vg - t,
- o = 0;
- return e < -i ? o |= 1 : e > i && (o |= 2), n < -i ? o |= 4 : n > i && (o |= 8), o
- }
- return jd(o, (function (t) {
- var e, n, u, l, c;
- return {
- lineStart: function () {
- l = u = !1, c = 1
- },
- point: function (h, p) {
- var f, g = [h, p],
- d = o(h, p),
- y = r ? d ? 0 : a(h, p) : d ? a(h + (h < 0 ? Vg : -Vg), p) : 0;
- if (!e && (l = u = d) && t.lineStart(), d !== u && (!(f = s(e, g)) || Id(e, f) || Id(g, f)) && (g[0] += Ug, g[1] += Ug, d = o(g[0], g[1])), d !== u) c = 0, d ? (t.lineStart(), f = s(g, e), t.point(f[0], f[1])) : (f = s(e, g), t.point(f[0], f[1]), t.lineEnd()), e = f;
- else if (i && e && r ^ d) {
- var v;
- y & n || !(v = s(g, e, !0)) || (c = 0, r ? (t.lineStart(), t.point(v[0][0], v[0][1]), t.point(v[1][0], v[1][1]), t.lineEnd()) : (t.point(v[1][0], v[1][1]), t.lineEnd(), t.lineStart(), t.point(v[0][0], v[0][1])))
- }!d || e && Id(e, g) || t.point(g[0], g[1]), e = g, u = d, n = y
- },
- lineEnd: function () {
- u && t.lineEnd(), e = null
- },
- clean: function () {
- return c | (l && u) << 1
- }
- }
- }), (function (n, r, i, o) {
- ! function (t, e, n, r, i, o) {
- if (n) {
- var s = $g(e),
- a = td(e),
- u = r * n;
- null == i ? (i = e + r * Hg, o = e - u / 2) : (i = bd(s, i), o = bd(s, o), (r > 0 ? i < o : i > o) && (i += r * Hg));
- for (var l, c = i; r > 0 ? c > o : c < o; c -= u) l = cd([s, -a * $g(c), -a * td(c)]), t.point(l[0], l[1])
- }
- }(o, t, e, i, n, r)
- }), r ? [0, -t] : [-Vg, t - Vg])
- }
- function Hd(t) {
- return function (e) {
- var n = new Wd;
- for (var r in t) n[r] = t[r];
- return n.stream = e, n
- }
- }
- function Wd() {}
- function Jd(t, e, n) {
- var r = e[1][0] - e[0][0],
- i = e[1][1] - e[0][1],
- o = t.clipExtent && t.clipExtent();
- t.scale(150).translate([0, 0]), null != o && t.clipExtent(null),
- function (t, e) {
- t && sd.hasOwnProperty(t.type) ? sd[t.type](t, e) : od(t, e)
- }(n, t.stream(zd));
- var s = zd.result(),
- a = Math.min(r / (s[1][0] - s[0][0]), i / (s[1][1] - s[0][1])),
- u = +e[0][0] + (r - a * (s[1][0] + s[0][0])) / 2,
- l = +e[0][1] + (i - a * (s[1][1] + s[0][1])) / 2;
- return null != o && t.clipExtent(o), t.scale(150 * a).translate([u, l])
- }
- Wd.prototype = {
- constructor: Wd,
- point: function (t, e) {
- this.stream.point(t, e)
- },
- sphere: function () {
- this.stream.sphere()
- },
- lineStart: function () {
- this.stream.lineStart()
- },
- lineEnd: function () {
- this.stream.lineEnd()
- },
- polygonStart: function () {
- this.stream.polygonStart()
- },
- polygonEnd: function () {
- this.stream.polygonEnd()
- }
- };
- var Zd = $g(30 * Jg);
- function Kd(t, e) {
- return +e ? function (t, e) {
- function n(r, i, o, s, a, u, l, c, h, p, f, g, d, y) {
- var v = l - r,
- _ = c - i,
- m = v * v + _ * _;
- if (m > 4 * e && d--) {
- var x = s + p,
- E = a + f,
- b = u + g,
- w = ed(x * x + E * E + b * b),
- I = rd(b /= w),
- N = Zg(Zg(b) - 1) < Ug || Zg(o - h) < Ug ? (o + h) / 2 : Qg(E, x),
- S = t(N, I),
- C = S[0],
- P = S[1],
- M = C - r,
- L = P - i,
- O = _ * M - v * L;
- (O * O / m > e || Zg((v * M + _ * L) / m - .5) > .3 || s * p + a * f + u * g < Zd) && (n(r, i, o, s, a, u, C, P, N, x /= w, E /= w, b, d, y), y.point(C, P), n(C, P, N, x, E, b, l, c, h, p, f, g, d, y))
- }
- }
- return function (e) {
- var r, i, o, s, a, u, l, c, h, p, f, g, d = {
- point: y,
- lineStart: v,
- lineEnd: m,
- polygonStart: function () {
- e.polygonStart(), d.lineStart = x
- },
- polygonEnd: function () {
- e.polygonEnd(), d.lineStart = v
- }
- };
- function y(n, r) {
- n = t(n, r), e.point(n[0], n[1])
- }
- function v() {
- c = NaN, d.point = _, e.lineStart()
- }
- function _(r, i) {
- var o = hd([r, i]),
- s = t(r, i);
- n(c, h, l, p, f, g, c = s[0], h = s[1], l = r, p = o[0], f = o[1], g = o[2], 16, e), e.point(c, h)
- }
- function m() {
- d.point = y, e.lineEnd()
- }
- function x() {
- v(), d.point = E, d.lineEnd = b
- }
- function E(t, e) {
- _(r = t, e), i = c, o = h, s = p, a = f, u = g, d.point = _
- }
- function b() {
- n(c, h, l, p, f, g, i, o, r, s, a, u, 16, e), d.lineEnd = m, m()
- }
- return d
- }
- }(t, e) : function (t) {
- return Hd({
- point: function (e, n) {
- e = t(e, n), this.stream.point(e[0], e[1])
- }
- })
- }(t)
- }
- var Qd = Hd({
- point: function (t, e) {
- this.stream.point(t * Jg, e * Jg)
- }
- });
- function $d(t) {
- return function (t) {
- var e, n, r, i, o, s, a, u, l, c, h = 150,
- p = 480,
- f = 250,
- g = 0,
- d = 0,
- y = 0,
- v = 0,
- _ = 0,
- m = null,
- x = Xd,
- E = null,
- b = Fd,
- w = .5,
- I = Kd(C, w);
- function N(t) {
- return [(t = o(t[0] * Jg, t[1] * Jg))[0] * h + n, r - t[1] * h]
- }
- function S(t) {
- return (t = o.invert((t[0] - n) / h, (r - t[1]) / h)) && [t[0] * Wg, t[1] * Wg]
- }
- function C(t, i) {
- return [(t = e(t, i))[0] * h + n, r - t[1] * h]
- }
- function P() {
- o = vd(i = function (t, e, n) {
- return (t %= Hg) ? e || n ? vd(xd(t), Ed(e, n)) : xd(t) : e || n ? Ed(e, n) : _d
- }(y, v, _), e);
- var t = e(g, d);
- return n = p - t[0] * h, r = f + t[1] * h, M()
- }
- function M() {
- return l = c = null, N
- }
- return N.stream = function (t) {
- return l && c === t ? l : l = Qd(x(i, I(b(c = t))))
- }, N.clipAngle = function (t) {
- return arguments.length ? (x = +t ? Yd(m = t * Jg, 6 * Jg) : (m = null, Xd), M()) : m * Wg
- }, N.clipExtent = function (t) {
- return arguments.length ? (b = null == t ? (E = s = a = u = null, Fd) : Ad(E = +t[0][0], s = +t[0][1], a = +t[1][0], u = +t[1][1]), M()) : null == E ? null : [
- [E, s],
- [a, u]
- ]
- }, N.scale = function (t) {
- return arguments.length ? (h = +t, P()) : h
- }, N.translate = function (t) {
- return arguments.length ? (p = +t[0], f = +t[1], P()) : [p, f]
- }, N.center = function (t) {
- return arguments.length ? (g = t[0] % 360 * Jg, d = t[1] % 360 * Jg, P()) : [g * Wg, d * Wg]
- }, N.rotate = function (t) {
- return arguments.length ? (y = t[0] % 360 * Jg, v = t[1] % 360 * Jg, _ = t.length > 2 ? t[2] % 360 * Jg : 0, P()) : [y * Wg, v * Wg, _ * Wg]
- }, N.precision = function (t) {
- return arguments.length ? (I = Kd(C, w = t * t), M()) : ed(w)
- }, N.fitExtent = function (t, e) {
- return Jd(N, t, e)
- }, N.fitSize = function (t, e) {
- return function (t, e, n) {
- return Jd(t, [
- [0, 0], e
- ], n)
- }(N, t, e)
- },
- function () {
- return e = t.apply(this, arguments), N.invert = e.invert && S, P()
- }
- }((function () {
- return t
- }))()
- }
- var ty = function (t) {
- return function (e, n) {
- var r = $g(e),
- i = $g(n),
- o = t(r * i);
- return [o * i * td(e), o * td(n)]
- }
- }((function (t) {
- return (t = nd(t)) && t / td(t)
- }));
- function ey() {
- return $d(ty).scale(79.4188).clipAngle(179.999)
- }
- function ny(t, n, r, i) {
- var s = t.properties || {},
- a = "Feature" === t.type ? t.geometry : t;
- if ("GeometryCollection" === a.type) {
- var u = [];
- return q(t, (function (t) {
- var e = ny(t, n, r, i);
- e && u.push(e)
- })), f(u)
- }
- var l = function (t) {
- var n = xn(t).geometry.coordinates,
- r = [-n[0], -n[1]];
- return ey().rotate(r).scale(e)
- }(a),
- c = {
- type: a.type,
- coordinates: iy(a.coordinates, l)
- },
- h = (new Ih).read(c),
- p = m(x(n, r), "meters"),
- g = _f.bufferOp(h, p, i);
- if (!ry((g = (new Nh).write(g)).coordinates)) return o({
- type: g.type,
- coordinates: oy(g.coordinates, l)
- }, s)
- }
- function ry(t) {
- return Array.isArray(t[0]) ? ry(t[0]) : isNaN(t[0])
- }
- function iy(t, e) {
- return "object" != typeof t[0] ? e(t) : t.map((function (t) {
- return iy(t, e)
- }))
- }
- function oy(t, e) {
- return "object" != typeof t[0] ? e.invert(t) : t.map((function (t) {
- return oy(t, e)
- }))
- }
- function sy(t, e, n) {
- void 0 === n && (n = {});
- var r = rt(t),
- i = rt(e),
- o = $u.intersection(r.coordinates, i.coordinates);
- return 0 === o.length ? null : 1 === o.length ? l(o[0], n.properties) : y(o, n.properties)
- }
- function ay(t, e, n) {
- void 0 === n && (n = {});
- var r = JSON.stringify(n.properties || {}),
- i = t[0],
- o = t[1],
- s = t[2],
- a = t[3],
- u = (o + a) / 2,
- l = (i + s) / 2,
- c = 2 * e / me([i, u], [s, u], n) * (s - i),
- h = 2 * e / me([l, o], [l, a], n) * (a - o),
- p = c / 2,
- g = 2 * p,
- d = Math.sqrt(3) / 2 * h,
- y = s - i,
- v = a - o,
- _ = 3 / 4 * g,
- m = d,
- x = (y - g) / (g - p / 2),
- E = Math.floor(x),
- b = (E * _ - p / 2 - y) / 2 - p / 2 + _ / 2,
- w = Math.floor((v - d) / d),
- I = (v - w * d) / 2,
- N = w * d - v > d / 2;
- N && (I -= d / 4);
- for (var S = [], C = [], P = 0; P < 6; P++) {
- var M = 2 * Math.PI / 6 * P;
- S.push(Math.cos(M)), C.push(Math.sin(M))
- }
- for (var L = [], O = 0; O <= E; O++)
- for (var R = 0; R <= w; R++) {
- var T = O % 2 == 1;
- if ((0 !== R || !T) && (0 !== R || !N)) {
- var A = O * _ + i - b,
- D = R * m + o + I;
- if (T && (D -= d / 2), !0 === n.triangles) ly([A, D], c / 2, h / 2, JSON.parse(r), S, C).forEach((function (t) {
- n.mask ? sy(n.mask, t) && L.push(t) : L.push(t)
- }));
- else {
- var F = uy([A, D], c / 2, h / 2, JSON.parse(r), S, C);
- n.mask ? sy(n.mask, F) && L.push(F) : L.push(F)
- }
- }
- }
- return f(L)
- }
- function uy(t, e, n, r, i, o) {
- for (var s = [], a = 0; a < 6; a++) {
- var u = t[0] + e * i[a],
- c = t[1] + n * o[a];
- s.push([u, c])
- }
- return s.push(s[0].slice()), l([s], r)
- }
- function ly(t, e, n, r, i, o) {
- for (var s = [], a = 0; a < 6; a++) {
- var u = [];
- u.push(t), u.push([t[0] + e * i[a], t[1] + n * o[a]]), u.push([t[0] + e * i[(a + 1) % 6], t[1] + n * o[(a + 1) % 6]]), u.push(t), s.push(l([u], r))
- }
- return s
- }
- function cy(t) {
- return y(t)
- }
- function hy(t) {
- return l(t && t.geometry.coordinates || [
- [
- [180, 90],
- [-180, 90],
- [-180, -90],
- [180, -90],
- [180, 90]
- ]
- ])
- }
- function py(t, e, n) {
- return void 0 === n && (n = {}),
- function (t, e, n, r) {
- void 0 === r && (r = {});
- for (var i = [], o = t[0], s = t[1], a = t[2], u = t[3], c = e / me([o, s], [a, s], r) * (a - o), h = n / me([o, s], [o, u], r) * (u - s), p = a - o, g = u - s, d = Math.floor(p / c), y = Math.floor(g / h), v = (g - y * h) / 2, _ = o + (p - d * c) / 2, m = 0; m < d; m++) {
- for (var x = s + v, E = 0; E < y; E++) {
- var b = l([
- [
- [_, x],
- [_, x + h],
- [_ + c, x + h],
- [_ + c, x],
- [_, x]
- ]
- ], r.properties);
- r.mask ? Ps(r.mask, b) && i.push(b) : i.push(b), x += h
- }
- _ += c
- }
- return f(i)
- }(t, e, e, n)
- }
- function fy(t, e, n) {
- void 0 === n && (n = {});
- for (var r = [], i = e / me([t[0], t[1]], [t[2], t[1]], n) * (t[2] - t[0]), o = e / me([t[0], t[1]], [t[0], t[3]], n) * (t[3] - t[1]), s = 0, a = t[0]; a <= t[2];) {
- for (var u = 0, c = t[1]; c <= t[3];) {
- var h = null,
- p = null;
- s % 2 == 0 && u % 2 == 0 ? (h = l([
- [
- [a, c],
- [a, c + o],
- [a + i, c],
- [a, c]
- ]
- ], n.properties), p = l([
- [
- [a, c + o],
- [a + i, c + o],
- [a + i, c],
- [a, c + o]
- ]
- ], n.properties)) : s % 2 == 0 && u % 2 == 1 ? (h = l([
- [
- [a, c],
- [a + i, c + o],
- [a + i, c],
- [a, c]
- ]
- ], n.properties), p = l([
- [
- [a, c],
- [a, c + o],
- [a + i, c + o],
- [a, c]
- ]
- ], n.properties)) : u % 2 == 0 && s % 2 == 1 ? (h = l([
- [
- [a, c],
- [a, c + o],
- [a + i, c + o],
- [a, c]
- ]
- ], n.properties), p = l([
- [
- [a, c],
- [a + i, c + o],
- [a + i, c],
- [a, c]
- ]
- ], n.properties)) : u % 2 == 1 && s % 2 == 1 && (h = l([
- [
- [a, c],
- [a, c + o],
- [a + i, c],
- [a, c]
- ]
- ], n.properties), p = l([
- [
- [a, c + o],
- [a + i, c + o],
- [a + i, c],
- [a, c + o]
- ]
- ], n.properties)), n.mask ? (sy(n.mask, h) && r.push(h), sy(n.mask, p) && r.push(p)) : (r.push(h), r.push(p)), c += o, u++
- }
- s++, a += i
- }
- return f(r)
- }
- ty.invert = function (t) {
- return function (e, n) {
- var r = ed(e * e + n * n),
- i = t(r),
- o = td(i),
- s = $g(i);
- return [Qg(e * o, r * s), rd(r && n * o / r)]
- }
- }((function (t) {
- return t
- })), t.along = function (t, e, n) {
- void 0 === n && (n = {});
- for (var r = rt(t).coordinates, i = 0, o = 0; o < r.length && !(e >= i && o === r.length - 1); o++) {
- if (i >= e) {
- var s = e - i;
- if (s) {
- var u = mn(r[o], r[o - 1]) - 180;
- return vn(r[o], s, u, n)
- }
- return a(r[o])
- }
- i += me(r[o], r[o + 1], n)
- }
- return a(r[r.length - 1])
- }, t.angle = function (t, e, n, r) {
- if (void 0 === r && (r = {}), !P(r)) throw new Error("options is invalid");
- if (!t) throw new Error("startPoint is required");
- if (!e) throw new Error("midPoint is required");
- if (!n) throw new Error("endPoint is required");
- var i = t,
- o = e,
- s = n,
- a = b(!0 !== r.mercator ? mn(i, o) : Bi(i, o)),
- u = b(!0 !== r.mercator ? mn(s, o) : Bi(s, o)),
- l = Math.abs(a - u);
- return !0 === r.explementary ? 360 - l : l
- }, t.applyFilter = uu, t.area = jr, t.areaFactors = i, t.bbox = Z, t.bboxClip = function (t, e) {
- var n = rt(t),
- r = n.type,
- i = "Feature" === t.type ? t.properties : {},
- o = n.coordinates;
- switch (r) {
- case "LineString":
- case "MultiLineString":
- var s = [];
- return "LineString" === r && (o = [o]), o.forEach((function (t) {
- ! function (t, e, n) {
- var r, i, o, s, a, u = t.length,
- l = Ri(t[0], e),
- c = [];
- for (n || (n = []), r = 1; r < u; r++) {
- for (s = t[r - 1], i = o = Ri(a = t[r], e);;) {
- if (!(l | i)) {
- c.push(s), i !== o ? (c.push(a), r < u - 1 && (n.push(c), c = [])) : r === u - 1 && c.push(a);
- break
- }
- if (l & i) break;
- l ? l = Ri(s = Oi(s, a, l, e), e) : i = Ri(a = Oi(s, a, i, e), e)
- }
- l = o
- }
- c.length && n.push(c)
- }(t, e, s)
- })), 1 === s.length ? h(s[0], i) : g(s, i);
- case "Polygon":
- return l(Ti(o, e), i);
- case "MultiPolygon":
- return y(o.map((function (t) {
- return Ti(t, e)
- })), i);
- default:
- throw new Error("geometry " + r + " not supported")
- }
- }, t.bboxPolygon = gn, t.bearing = mn, t.bearingToAngle = b, t.bearingToAzimuth = b, t.bezier = fn, t.bezierSpline = fn, t.booleanClockwise = Yi, t.booleanContains = function (t, e) {
- var n = rt(t),
- r = rt(e),
- i = n.type,
- o = r.type,
- s = n.coordinates,
- a = r.coordinates;
- switch (i) {
- case "Point":
- switch (o) {
- case "Point":
- return vs(s, a);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- case "MultiPoint":
- switch (o) {
- case "Point":
- return function (t, e) {
- var n, r = !1;
- for (n = 0; n < t.coordinates.length; n++)
- if (vs(t.coordinates[n], e.coordinates)) {
- r = !0;
- break
- } return r
- }(n, r);
- case "MultiPoint":
- return function (t, e) {
- for (var n = 0, r = e.coordinates; n < r.length; n++) {
- for (var i = r[n], o = !1, s = 0, a = t.coordinates; s < a.length; s++) {
- if (vs(i, a[s])) {
- o = !0;
- break
- }
- }
- if (!o) return !1
- }
- return !0
- }(n, r);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- case "LineString":
- switch (o) {
- case "Point":
- return Wr(r, n, {
- ignoreEndVertices: !0
- });
- case "LineString":
- return function (t, e) {
- for (var n = !1, r = 0, i = e.coordinates; r < i.length; r++) {
- var o = i[r];
- if (Wr({
- type: "Point",
- coordinates: o
- }, t, {
- ignoreEndVertices: !0
- }) && (n = !0), !Wr({
- type: "Point",
- coordinates: o
- }, t, {
- ignoreEndVertices: !1
- })) return !1
- }
- return n
- }(n, r);
- case "MultiPoint":
- return function (t, e) {
- for (var n = !1, r = 0, i = e.coordinates; r < i.length; r++) {
- var o = i[r];
- if (Wr(o, t, {
- ignoreEndVertices: !0
- }) && (n = !0), !Wr(o, t)) return !1
- }
- if (n) return !0;
- return !1
- }(n, r);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- case "Polygon":
- switch (o) {
- case "Point":
- return ye(r, n, {
- ignoreBoundary: !0
- });
- case "LineString":
- return function (t, e) {
- var n = !1,
- r = 0,
- i = Z(t),
- o = Z(e);
- if (!ys(i, o)) return !1;
- for (; r < e.coordinates.length - 1; r++) {
- if (ye({
- type: "Point",
- coordinates: _s(e.coordinates[r], e.coordinates[r + 1])
- }, t, {
- ignoreBoundary: !0
- })) {
- n = !0;
- break
- }
- }
- return n
- }(n, r);
- case "Polygon":
- return function (t, e) {
- if ("Feature" === t.type && null === t.geometry) return !1;
- if ("Feature" === e.type && null === e.geometry) return !1;
- var n = Z(t),
- r = Z(e);
- if (!ys(n, r)) return !1;
- for (var i = rt(e).coordinates, o = 0, s = i; o < s.length; o++)
- for (var a = 0, u = s[o]; a < u.length; a++) {
- if (!ye(u[a], t)) return !1
- }
- return !0
- }(n, r);
- case "MultiPoint":
- return function (t, e) {
- for (var n = 0, r = e.coordinates; n < r.length; n++) {
- if (!ye(r[n], t, {
- ignoreBoundary: !0
- })) return !1
- }
- return !0
- }(n, r);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- default:
- throw new Error("feature1 " + i + " geometry not supported")
- }
- }, t.booleanCrosses = function (t, e) {
- var n = rt(t),
- r = rt(e),
- i = n.type,
- o = r.type;
- switch (i) {
- case "MultiPoint":
- switch (o) {
- case "LineString":
- return ms(n, r);
- case "Polygon":
- return Es(n, r);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- case "LineString":
- switch (o) {
- case "MultiPoint":
- return ms(r, n);
- case "LineString":
- return function (t, e) {
- if (Or(t, e).features.length > 0)
- for (var n = 0; n < t.coordinates.length - 1; n++)
- for (var r = 0; r < e.coordinates.length - 1; r++) {
- var i = !0;
- if (0 !== r && r !== e.coordinates.length - 2 || (i = !1), bs(t.coordinates[n], t.coordinates[n + 1], e.coordinates[r], i)) return !0
- }
- return !1
- }(n, r);
- case "Polygon":
- return xs(n, r);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- case "Polygon":
- switch (o) {
- case "MultiPoint":
- return Es(r, n);
- case "LineString":
- return xs(r, n);
- default:
- throw new Error("feature2 " + o + " geometry not supported")
- }
- default:
- throw new Error("feature1 " + i + " geometry not supported")
- }
- }, t.booleanDisjoint = ps, t.booleanEqual = function (t, e) {
- return rt(t).type === rt(e).type && new Cs({
- precision: 6
- }).compare(tn(t), tn(e))
- }, t.booleanIntersects = Ps, t.booleanOverlap = function (t, e) {
- var n = rt(t),
- r = rt(e),
- i = n.type,
- o = r.type;
- if ("MultiPoint" === i && "MultiPoint" !== o || ("LineString" === i || "MultiLineString" === i) && "LineString" !== o && "MultiLineString" !== o || ("Polygon" === i || "MultiPolygon" === i) && "Polygon" !== o && "MultiPolygon" !== o) throw new Error("features must be of the same type");
- if ("Point" === i) throw new Error("Point geometry not supported");
- if (new Cs({
- precision: 6
- }).compare(t, e)) return !1;
- var s = 0;
- switch (i) {
- case "MultiPoint":
- for (var a = 0; a < n.coordinates.length; a++)
- for (var u = 0; u < r.coordinates.length; u++) {
- var l = n.coordinates[a],
- c = r.coordinates[u];
- if (l[0] === c[0] && l[1] === c[1]) return !0
- }
- return !1;
- case "LineString":
- case "MultiLineString":
- U(t, (function (t) {
- U(e, (function (e) {
- ki(t, e).features.length && s++
- }))
- }));
- break;
- case "Polygon":
- case "MultiPolygon":
- U(t, (function (t) {
- U(e, (function (e) {
- Or(t, e).features.length && s++
- }))
- }))
- }
- return s > 0
- }, t.booleanParallel = function (t, e) {
- if (!t) throw new Error("line1 is required");
- if (!e) throw new Error("line2 is required");
- if ("LineString" !== Us(t, "line1")) throw new Error("line1 must be a LineString");
- if ("LineString" !== Us(e, "line2")) throw new Error("line2 must be a LineString");
- for (var n = Zn(tn(t)).features, r = Zn(tn(e)).features, i = 0; i < n.length; i++) {
- var o = n[i].geometry.coordinates;
- if (!r[i]) break;
- if (!js(o, r[i].geometry.coordinates)) return !1
- }
- return !0
- }, t.booleanPointInPolygon = ye, t.booleanPointOnLine = Wr, t.booleanWithin = Zr, t.buffer = function (t, e, n) {
- var r = (n = n || {}).units || "kilometers",
- i = n.steps || 8;
- if (!t) throw new Error("geojson is required");
- if ("object" != typeof n) throw new Error("options must be an object");
- if ("number" != typeof i) throw new Error("steps must be an number");
- if (void 0 === e) throw new Error("radius is required");
- if (i <= 0) throw new Error("steps must be greater than 0");
- var o = [];
- switch (t.type) {
- case "GeometryCollection":
- return q(t, (function (t) {
- var n = ny(t, e, r, i);
- n && o.push(n)
- })), f(o);
- case "FeatureCollection":
- return F(t, (function (t) {
- var n = ny(t, e, r, i);
- n && F(n, (function (t) {
- t && o.push(t)
- }))
- })), f(o)
- }
- return ny(t, e, r, i)
- }, t.center = xn, t.centerMean = Fa, t.centerMedian = function (t, e) {
- if (void 0 === e && (e = {}), !P(e = e || {})) throw new Error("options is invalid");
- var n = e.counter || 10;
- if (!C(n)) throw new Error("counter must be a number");
- var r = e.weight,
- i = Fa(t, {
- weight: e.weight
- }),
- o = f([]);
- F(t, (function (t) {
- var e;
- o.features.push(En(t, {
- properties: {
- weight: null === (e = t.properties) || void 0 === e ? void 0 : e[r]
- }
- }))
- }));
- var s = {
- tolerance: e.tolerance,
- medianCandidates: []
- };
- return ka(i.geometry.coordinates, [0, 0], o, s, n)
- }, t.centerOfMass = function t(e, n) {
- switch (void 0 === n && (n = {}), it(e)) {
- case "Point":
- return a(K(e), n.properties);
- case "Polygon":
- var r = [];
- R(e, (function (t) {
- r.push(t)
- }));
- var i, o, s, u, l, c, h, p, f = En(e, {
- properties: n.properties
- }),
- g = f.geometry.coordinates,
- d = 0,
- y = 0,
- v = 0,
- _ = r.map((function (t) {
- return [t[0] - g[0], t[1] - g[1]]
- }));
- for (i = 0; i < r.length - 1; i++) u = (o = _[i])[0], c = o[1], l = (s = _[i + 1])[0], v += p = u * (h = s[1]) - l * c, d += (u + l) * p, y += (c + h) * p;
- if (0 === v) return f;
- var m = 1 / (6 * (.5 * v));
- return a([g[0] + m * d, g[1] + m * y], n.properties);
- default:
- var x = de(e);
- return x ? t(x, {
- properties: n.properties
- }) : En(e, {
- properties: n.properties
- })
- }
- }, t.centroid = En, t.circle = _n, t.cleanCoords = tn, t.clone = Ie, t.clusterEach = ou, t.clusterReduce = su, t.clusters = hu, t.clustersDbscan = function (t, e, n) {
- void 0 === n && (n = {}), !0 !== n.mutate && (t = Ie(t)), n.minPoints = n.minPoints || 3;
- var r = new Ts.DBSCAN,
- i = r.run(G(t), N(e, n.units), n.minPoints, me),
- o = -1;
- return i.forEach((function (e) {
- o++, e.forEach((function (e) {
- var n = t.features[e];
- n.properties || (n.properties = {}), n.properties.cluster = o, n.properties.dbscan = "core"
- }))
- })), r.noise.forEach((function (e) {
- var n = t.features[e];
- n.properties || (n.properties = {}), n.properties.cluster ? n.properties.dbscan = "edge" : n.properties.dbscan = "noise"
- })), t
- }, t.clustersKmeans = function (t, e) {
- void 0 === e && (e = {});
- var n = t.features.length;
- e.numberOfClusters = e.numberOfClusters || Math.round(Math.sqrt(n / 2)), e.numberOfClusters > n && (e.numberOfClusters = n), !0 !== e.mutate && (t = Ie(t));
- var r = G(t),
- i = r.slice(0, e.numberOfClusters),
- o = zs(r, e.numberOfClusters, i),
- s = {};
- return o.centroids.forEach((function (t, e) {
- s[e] = t
- })), F(t, (function (t, e) {
- var n = o.idxs[e];
- t.properties.cluster = n, t.properties.centroid = s[n]
- })), t
- }, t.collect = function (t, e, n, r) {
- var i = Nt(6),
- o = e.features.map((function (t) {
- var e;
- return {
- minX: t.geometry.coordinates[0],
- minY: t.geometry.coordinates[1],
- maxX: t.geometry.coordinates[0],
- maxY: t.geometry.coordinates[1],
- property: null === (e = t.properties) || void 0 === e ? void 0 : e[n]
- }
- }));
- return i.load(o), t.features.forEach((function (t) {
- t.properties || (t.properties = {});
- var e = Z(t),
- n = i.search({
- minX: e[0],
- minY: e[1],
- maxX: e[2],
- maxY: e[3]
- }),
- o = [];
- n.forEach((function (e) {
- ye([e.minX, e.minY], t) && o.push(e.property)
- })), t.properties[r] = o
- })), t
- }, t.collectionOf = nt, t.combine = function (t) {
- var e = {
- MultiPoint: {
- coordinates: [],
- properties: []
- },
- MultiLineString: {
- coordinates: [],
- properties: []
- },
- MultiPolygon: {
- coordinates: [],
- properties: []
- }
- };
- return F(t, (function (t) {
- var n, r, i, o;
- switch (null === (o = t.geometry) || void 0 === o ? void 0 : o.type) {
- case "Point":
- e.MultiPoint.coordinates.push(t.geometry.coordinates), e.MultiPoint.properties.push(t.properties);
- break;
- case "MultiPoint":
- (n = e.MultiPoint.coordinates).push.apply(n, t.geometry.coordinates), e.MultiPoint.properties.push(t.properties);
- break;
- case "LineString":
- e.MultiLineString.coordinates.push(t.geometry.coordinates), e.MultiLineString.properties.push(t.properties);
- break;
- case "MultiLineString":
- (r = e.MultiLineString.coordinates).push.apply(r, t.geometry.coordinates), e.MultiLineString.properties.push(t.properties);
- break;
- case "Polygon":
- e.MultiPolygon.coordinates.push(t.geometry.coordinates), e.MultiPolygon.properties.push(t.properties);
- break;
- case "MultiPolygon":
- (i = e.MultiPolygon.coordinates).push.apply(i, t.geometry.coordinates), e.MultiPolygon.properties.push(t.properties)
- }
- })), f(Object.keys(e).filter((function (t) {
- return e[t].coordinates.length
- })).sort().map((function (t) {
- return o({
- type: t,
- coordinates: e[t].coordinates
- }, {
- collectedProperties: e[t].properties
- })
- })))
- }, t.concave = function (t, e) {
- void 0 === e && (e = {});
- var n = e.maxEdge || 1 / 0,
- r = xe(function (t) {
- var e = [],
- n = {};
- return F(t, (function (t) {
- if (t.geometry) {
- var r = t.geometry.coordinates.join("-");
- Object.prototype.hasOwnProperty.call(n, r) || (e.push(t), n[r] = !0)
- }
- })), f(e)
- }(t));
- if (r.features = r.features.filter((function (t) {
- var r = t.geometry.coordinates[0][0],
- i = t.geometry.coordinates[0][1],
- o = t.geometry.coordinates[0][2],
- s = me(r, i, e),
- a = me(i, o, e),
- u = me(r, o, e);
- return s <= n && a <= n && u <= n
- })), r.features.length < 1) return null;
- var i = $e(r);
- return 1 === i.coordinates.length && (i.coordinates = i.coordinates[0], i.type = "Polygon"), o(i)
- }, t.containsNumber = $, t.convertArea = S, t.convertDistance = N, t.convertLength = N, t.convex = de, t.coordAll = G, t.coordEach = R, t.coordReduce = T, t.createBins = au, t.degrees2radians = I, t.degreesToRadians = I, t.destination = vn, t.difference = function (t, e) {
- var n = rt(t),
- r = rt(e),
- i = t.properties || {},
- o = $u.difference(n.coordinates, r.coordinates);
- return 0 === o.length ? null : 1 === o.length ? l(o[0], i) : y(o, i)
- }, t.dissolve = function (t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n = e.propertyName;
- nt(t, "Polygon", "dissolve");
- var r = [];
- if (!e.propertyName) return ni(y($u.union.apply(null, t.features.map((function (t) {
- return t.geometry.coordinates
- })))));
- var i = {};
- F(t, (function (t) {
- Object.prototype.hasOwnProperty.call(i, t.properties[n]) || (i[t.properties[n]] = []), i[t.properties[n]].push(t)
- }));
- for (var o = Object.keys(i), s = 0; s < o.length; s++) {
- var a = y($u.union.apply(null, i[o[s]].map((function (t) {
- return t.geometry.coordinates
- }))));
- a.properties[n] = o[s], r.push(a)
- }
- return ni(f(r))
- }, t.distance = me, t.distanceToDegrees = E, t.distanceToRadians = x, t.distanceWeight = ja, t.earthRadius = e, t.ellipse = Aa, t.envelope = dn, t.explode = bn, t.factors = n, t.feature = o, t.featureCollection = f, t.featureEach = F, t.featureOf = et, t.featureReduce = k, t.filterProperties = cu, t.findPoint = W, t.findSegment = H, t.flatten = ni, t.flattenEach = z, t.flattenReduce = j, t.flip = function (t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n = e.mutate;
- if (!t) throw new Error("geojson is required");
- return !1 !== n && void 0 !== n || (t = Ie(t)), R(t, (function (t) {
- var e = t[0],
- n = t[1];
- t[0] = n, t[1] = e
- })), t
- }, t.geojsonType = tt, t.geomEach = q, t.geomReduce = B, t.geometry = s, t.geometryCollection = v, t.getCluster = iu, t.getCoord = K, t.getCoords = Q, t.getGeom = rt, t.getType = it, t.greatCircle = function (t, e, n) {
- if ("object" != typeof (n = n || {})) throw new Error("options is invalid");
- var r = n.properties,
- i = n.npoints,
- o = n.offset;
- return t = K(t), e = K(e), r = r || {}, i = i || 100, o = o || 10, new vi({
- x: t[0],
- y: t[1]
- }, {
- x: e[0],
- y: e[1]
- }, r).Arc(i, {
- offset: o
- }).json()
- }, t.helpers = O, t.hexGrid = ay, t.inside = ye, t.interpolate = function (t, e, n) {
- if ("object" != typeof (n = n || {})) throw new Error("options is invalid");
- var r = n.gridType,
- i = n.property,
- o = n.weight;
- if (!t) throw new Error("points is required");
- if (nt(t, "Point", "input must contain Points"), !e) throw new Error("cellSize is required");
- if (void 0 !== o && "number" != typeof o) throw new Error("weight must be a number");
- i = i || "elevation", r = r || "square", o = o || 1;
- var s, a = Z(t);
- switch (r) {
- case "point":
- case "points":
- s = ti(a, e, n);
- break;
- case "square":
- case "squares":
- s = py(a, e, n);
- break;
- case "hex":
- case "hexes":
- s = ay(a, e, n);
- break;
- case "triangle":
- case "triangles":
- s = fy(a, e, n);
- break;
- default:
- throw new Error("invalid gridType")
- }
- var u = [];
- return F(s, (function (e) {
- var s = 0,
- a = 0;
- F(t, (function (t) {
- var u, l = me("point" === r ? e : En(e), t, n);
- if (void 0 !== i && (u = t.properties[i]), void 0 === u && (u = t.geometry.coordinates[2]), void 0 === u) throw new Error("zValue is missing");
- 0 === l && (s = u);
- var c = 1 / Math.pow(l, o);
- a += c, s += c * u
- }));
- var l = Ie(e);
- l.properties[i] = s / a, u.push(l)
- })), f(u)
- }, t.intersect = sy, t.invariant = ot, t.isNumber = C, t.isObject = P, t.isobands = function (t, e, n) {
- if (!P(n = n || {})) throw new Error("options is invalid");
- var r = n.zProperty || "elevation",
- i = n.commonProperties || {},
- o = n.breaksProperties || [];
- if (nt(t, "Point", "Input must contain Points"), !e) throw new Error("breaks is required");
- if (!Array.isArray(e)) throw new Error("breaks is not an Array");
- if (!P(i)) throw new Error("commonProperties is not an Object");
- if (!Array.isArray(o)) throw new Error("breaksProperties is not an Array");
- var s = Zi(t, {
- zProperty: r,
- flip: !0
- }),
- a = function (t, e, n) {
- for (var r = [], i = 1; i < e.length; i++) {
- var o = +e[i - 1],
- s = +e[i],
- a = Zo(Jo($i(t, o, s - o))),
- u = {};
- u.groupedRings = a, u[n] = o + "-" + s, r.push(u)
- }
- return r
- }(s, e, r);
- return f((a = function (t, e, n) {
- var r = Z(n),
- i = r[2] - r[0],
- o = r[3] - r[1],
- s = r[0],
- a = r[1],
- u = e[0].length - 1,
- l = e.length - 1,
- c = i / u,
- h = o / l,
- p = function (t) {
- t[0] = t[0] * c + s, t[1] = t[1] * h + a
- };
- return t.forEach((function (t) {
- t.groupedRings.forEach((function (t) {
- t.forEach((function (t) {
- t.forEach(p)
- }))
- }))
- })), t
- }(a, s, t)).map((function (t, e) {
- if (o[e] && !P(o[e])) throw new Error("Each mappedProperty is required to be an Object");
- var n = ct({}, i, o[e]);
- return n[r] = t[r], y(t.groupedRings, n)
- })))
- }, t.isolines = function (t, e, n) {
- if (!P(n = n || {})) throw new Error("options is invalid");
- var r = n.zProperty || "elevation",
- i = n.commonProperties || {},
- o = n.breaksProperties || [];
- if (nt(t, "Point", "Input must contain Points"), !e) throw new Error("breaks is required");
- if (!Array.isArray(e)) throw new Error("breaks must be an Array");
- if (!P(i)) throw new Error("commonProperties must be an Object");
- if (!Array.isArray(o)) throw new Error("breaksProperties must be an Array");
- var s = _t(t, {
- zProperty: r,
- flip: !0
- });
- return f(function (t, e, n) {
- var r = Z(n),
- i = r[2] - r[0],
- o = r[3] - r[1],
- s = r[0],
- a = r[1],
- u = e[0].length - 1,
- l = e.length - 1,
- c = i / u,
- h = o / l,
- p = function (t) {
- t[0] = t[0] * c + s, t[1] = t[1] * h + a
- };
- return t.forEach((function (t) {
- R(t, p)
- })), t
- }(function (t, e, n, r, i) {
- for (var o = [], s = 1; s < e.length; s++) {
- var a = +e[s],
- u = ct({}, r, i[s]);
- u[n] = a;
- var l = g(ft(t, a), u);
- o.push(l)
- }
- return o
- }(s, e, r, i, o), s, t))
- }, t.kinks = function (t) {
- var e, n, r = {
- type: "FeatureCollection",
- features: []
- };
- if ("LineString" === (n = "Feature" === t.type ? t.geometry : t).type) e = [n.coordinates];
- else if ("MultiLineString" === n.type) e = n.coordinates;
- else if ("MultiPolygon" === n.type) e = [].concat.apply([], n.coordinates);
- else {
- if ("Polygon" !== n.type) throw new Error("Input must be a LineString, MultiLineString, Polygon, or MultiPolygon Feature or Geometry");
- e = n.coordinates
- }
- return e.forEach((function (t) {
- e.forEach((function (e) {
- for (var n = 0; n < t.length - 1; n++)
- for (var i = n; i < e.length - 1; i++) {
- if (t === e) {
- if (1 === Math.abs(n - i)) continue;
- if (0 === n && i === t.length - 2 && t[n][0] === t[t.length - 1][0] && t[n][1] === t[t.length - 1][1]) continue
- }
- var o = Gr(t[n][0], t[n][1], t[n + 1][0], t[n + 1][1], e[i][0], e[i][1], e[i + 1][0], e[i + 1][1]);
- o && r.features.push(a([o[0], o[1]]))
- }
- }))
- })), r
- }, t.length = Yr, t.lengthToDegrees = E, t.lengthToRadians = x, t.lineArc = bi, t.lineChunk = function (t, e, n) {
- if (!P(n = n || {})) throw new Error("options is invalid");
- var r = n.units,
- i = n.reverse;
- if (!t) throw new Error("geojson is required");
- if (e <= 0) throw new Error("segmentLength must be greater than 0");
- var o = [];
- return z(t, (function (t) {
- i && (t.geometry.coordinates = t.geometry.coordinates.reverse()),
- function (t, e, n, r) {
- var i = Yr(t, {
- units: n
- });
- if (i <= e) return r(t);
- var o = i / e;
- Number.isInteger(o) || (o = Math.floor(o) + 1);
- for (var s = 0; s < o; s++) {
- r(Hr(t, e * s, e * (s + 1), {
- units: n
- }), s)
- }
- }(t, e, r, (function (t) {
- o.push(t)
- }))
- })), f(o)
- }, t.lineDistance = Yr, t.lineEach = X, t.lineIntersect = Or, t.lineOffset = function (t, e, n) {
- if (!P(n = n || {})) throw new Error("options is invalid");
- var r = n.units;
- if (!t) throw new Error("geojson is required");
- if (null == e || isNaN(e)) throw new Error("distance is required");
- var i = it(t),
- o = t.properties;
- switch (i) {
- case "LineString":
- return os(t, e, r);
- case "MultiLineString":
- var s = [];
- return z(t, (function (t) {
- s.push(os(t, e, r).geometry.coordinates)
- })), g(s, o);
- default:
- throw new Error("geometry " + i + " is not supported")
- }
- }, t.lineOverlap = ki, t.lineReduce = Y, t.lineSegment = Zn, t.lineSlice = function (t, e, n) {
- var r = Q(n);
- if ("LineString" !== it(n)) throw new Error("line must be a LineString");
- for (var i, o = Tr(n, t), s = Tr(n, e), a = [(i = o.properties.index <= s.properties.index ? [o, s] : [s, o])[0].geometry.coordinates], u = i[0].properties.index + 1; u < i[1].properties.index + 1; u++) a.push(r[u]);
- return a.push(i[1].geometry.coordinates), h(a, n.properties)
- }, t.lineSliceAlong = Hr, t.lineSplit = function (t, e) {
- if (!t) throw new Error("line is required");
- if (!e) throw new Error("splitter is required");
- var n = it(t),
- r = it(e);
- if ("LineString" !== n) throw new Error("line must be LineString");
- if ("FeatureCollection" === r) throw new Error("splitter cannot be a FeatureCollection");
- if ("GeometryCollection" === r) throw new Error("splitter cannot be a GeometryCollection");
- var i = ei(e, {
- precision: 7
- });
- switch (r) {
- case "Point":
- return mi(t, i);
- case "MultiPoint":
- return _i(t, i);
- case "LineString":
- case "MultiLineString":
- case "Polygon":
- case "MultiPolygon":
- return _i(t, Or(t, i))
- }
- }, t.lineString = h, t.lineStringToPolygon = Ci, t.lineStrings = p, t.lineToPolygon = Ci, t.mask = function (t, e) {
- var n, r = hy(e),
- i = null;
- return "FeatureCollection" === t.type ? i = cy(2 === (n = t).features.length ? $u.union(n.features[0].geometry.coordinates, n.features[1].geometry.coordinates) : $u.union.apply($u, n.features.map((function (t) {
- return t.geometry.coordinates
- })))) : i = cy($u.union(t.geometry.coordinates)), i.geometry.coordinates.forEach((function (t) {
- r.geometry.coordinates.push(t[0])
- })), r
- }, t.meta = J, t.midpoint = function (t, e) {
- return vn(t, me(t, e) / 2, mn(t, e))
- }, t.moranIndex = function (t, e) {
- var n = e.inputField,
- r = e.threshold || 1e5,
- i = e.p || 2,
- o = e.binary || !1,
- s = ja(t, {
- alpha: e.alpha || -1,
- binary: o,
- p: i,
- standardization: e.standardization || !0,
- threshold: r
- }),
- a = [];
- F(t, (function (t) {
- var e = t.properties || {};
- a.push(e[n])
- }));
- for (var u = Ua(a), l = function (t) {
- for (var e = Ua(t), n = 0, r = 0, i = t; r < i.length; r++) {
- var o = i[r];
- n += Math.pow(o - e, 2)
- }
- return n / t.length
- }(a), c = 0, h = 0, p = 0, f = 0, g = s.length, d = 0; d < g; d++) {
- for (var y = 0, v = 0; v < g; v++) c += s[d][v] * (a[d] - u) * (a[v] - u), h += s[d][v], p += Math.pow(s[d][v] + s[v][d], 2), y += s[d][v] + s[v][d];
- f += Math.pow(y, 2)
- }
- var _ = c / h / l,
- m = -1 / (g - 1),
- x = (g * g * (p *= .5) - g * f + h * h * 3) / ((g - 1) * (g + 1) * (h * h)) - m * m,
- E = Math.sqrt(x);
- return {
- expectedMoranIndex: m,
- moranIndex: _,
- stdNorm: E,
- zNorm: (_ - m) / E
- }
- }, t.multiLineString = g, t.multiPoint = d, t.multiPolygon = y, t.nearest = Jn, t.nearestPoint = Jn, t.nearestPointOnLine = Tr, t.nearestPointToLine = function (t, e, n) {
- void 0 === n && (n = {});
- var r = n.units,
- i = n.properties || {},
- o = function (t) {
- var e = [];
- switch (t.geometry ? t.geometry.type : t.type) {
- case "GeometryCollection":
- return q(t, (function (t) {
- "Point" === t.type && e.push({
- type: "Feature",
- properties: {},
- geometry: t
- })
- })), {
- type: "FeatureCollection",
- features: e
- };
- case "FeatureCollection":
- return t.features = t.features.filter((function (t) {
- return "Point" === t.geometry.type
- })), t;
- default:
- throw new Error("points must be a Point Collection")
- }
- }(t);
- if (!o.features.length) throw new Error("points must contain features");
- if (!e) throw new Error("line is required");
- if ("LineString" !== it(e)) throw new Error("line must be a LineString");
- var s = 1 / 0,
- a = null;
- return F(o, (function (t) {
- var n = Dr(t, e, {
- units: r
- });
- n < s && (s = n, a = t)
- })), a && (a.properties = ct({
- dist: s
- }, a.properties, i)), a
- }, t.planepoint = function (t, e) {
- var n = K(t),
- r = rt(e).coordinates[0];
- if (r.length < 4) throw new Error("OuterRing of a Polygon must have 4 or more Positions.");
- var i = e.properties || {},
- o = i.a,
- s = i.b,
- a = i.c,
- u = n[0],
- l = n[1],
- c = r[0][0],
- h = r[0][1],
- p = void 0 !== o ? o : r[0][2],
- f = r[1][0],
- g = r[1][1],
- d = void 0 !== s ? s : r[1][2],
- y = r[2][0],
- v = r[2][1],
- _ = void 0 !== a ? a : r[2][2];
- return (_ * (u - c) * (l - g) + p * (u - f) * (l - v) + d * (u - y) * (l - h) - d * (u - c) * (l - v) - _ * (u - f) * (l - h) - p * (u - y) * (l - g)) / ((u - c) * (l - g) + (u - f) * (l - v) + (u - y) * (l - h) - (u - c) * (l - v) - (u - f) * (l - h) - (u - y) * (l - g))
- }, t.point = a, t.pointGrid = ti, t.pointOnFeature = qr, t.pointOnLine = Tr, t.pointOnSurface = qr, t.pointToLineDistance = Dr, t.points = u, t.pointsWithinPolygon = _e, t.polygon = l, t.polygonSmooth = function (t, e) {
- var n = [],
- r = e.iterations || 1;
- if (!t) throw new Error("inputPolys is required");
- return q(t, (function (t, e, i) {
- var o, s, a;
- switch (t.type) {
- case "Polygon":
- o = [
- []
- ];
- for (var u = 0; u < r; u++) a = [
- []
- ], s = t, u > 0 && (s = l(o).geometry), qa(s, a), o = a.slice(0);
- n.push(l(o, i));
- break;
- case "MultiPolygon":
- o = [
- [
- []
- ]
- ];
- for (var c = 0; c < r; c++) a = [
- [
- []
- ]
- ], s = t, c > 0 && (s = y(o).geometry), Ba(s, a), o = a.slice(0);
- n.push(y(o, i));
- break;
- default:
- throw new Error("geometry is invalid, must be Polygon or MultiPolygon")
- }
- })), f(n)
- }, t.polygonTangents = function (t, e) {
- var n, r, i, o, s = Q(t),
- u = Q(e),
- l = Z(e),
- c = 0,
- h = null;
- switch (s[0] > l[0] && s[0] < l[2] && s[1] > l[1] && s[1] < l[3] && (c = (h = Jn(t, bn(e))).properties.featureIndex), it(e)) {
- case "Polygon":
- n = u[0][c], r = u[0][0], null !== h && h.geometry.coordinates[1] < s[1] && (r = u[0][c]), o = Xi(u[0][0], u[0][u[0].length - 1], s);
- var p = Ui(u[0], s, o, i, n, r);
- n = p[0], r = p[1];
- break;
- case "MultiPolygon":
- for (var g = 0, d = 0, y = 0, v = 0; v < u[0].length; v++) {
- g = v;
- for (var _ = !1, m = 0; m < u[0][v].length; m++) {
- if (d = m, y === c) {
- _ = !0;
- break
- }
- y++
- }
- if (_) break
- }
- n = u[0][g][d], r = u[0][g][d], o = Xi(u[0][0][0], u[0][0][u[0][0].length - 1], s), u.forEach((function (t) {
- var e = Ui(t[0], s, o, i, n, r);
- n = e[0], r = e[1]
- }))
- }
- return f([a(n), a(r)])
- }, t.polygonToLine = Ii, t.polygonToLineString = Ii, t.polygonize = function (t) {
- var e = hs.fromGeoJson(t);
- e.deleteDangles(), e.deleteCutEdges();
- var n = [],
- r = [];
- return e.getEdgeRings().filter((function (t) {
- return t.isValid()
- })).forEach((function (t) {
- t.isHole() ? n.push(t) : r.push(t)
- })), n.forEach((function (t) {
- cs.findEdgeRingContaining(t, r) && r.push(t)
- })), f(r.map((function (t) {
- return t.toPolygon()
- })))
- }, t.polygons = c, t.projection = Ja, t.propEach = A, t.propReduce = D, t.propertiesContainsFilter = lu, t.radians2degrees = w, t.radiansToDegrees = w, t.radiansToDistance = m, t.radiansToLength = m, t.random = ru, t.randomLineString = tu, t.randomPoint = Qa, t.randomPolygon = $a, t.randomPosition = Ka, t.rewind = function (t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n = e.reverse || !1,
- r = e.mutate || !1;
- if (!t) throw new Error("<geojson> is required");
- if ("boolean" != typeof n) throw new Error("<reverse> must be a boolean");
- if ("boolean" != typeof r) throw new Error("<mutate> must be a boolean");
- !1 === r && (t = Ie(t));
- var i = [];
- switch (t.type) {
- case "GeometryCollection":
- return q(t, (function (t) {
- Hi(t, n)
- })), t;
- case "FeatureCollection":
- return F(t, (function (t) {
- F(Hi(t, n), (function (t) {
- i.push(t)
- }))
- })), f(i)
- }
- return Hi(t, n)
- }, t.rhumbBearing = Bi, t.rhumbDestination = ji, t.rhumbDistance = Ar, t.round = _, t.sample = function (t, e) {
- if (!t) throw new Error("featurecollection is required");
- if (null == e) throw new Error("num is required");
- if ("number" != typeof e) throw new Error("num must be a number");
- return f(function (t, e) {
- var n, r, i = t.slice(0),
- o = t.length,
- s = o - e;
- for (; o-- > s;) n = i[r = Math.floor((o + 1) * Math.random())], i[r] = i[o], i[o] = n;
- return i.slice(s)
- }(t.features, e))
- }, t.sector = function (t, e, n, r, i) {
- if (!P(i = i || {})) throw new Error("options is invalid");
- var o = i.properties;
- if (!t) throw new Error("center is required");
- if (null == n) throw new Error("bearing1 is required");
- if (null == r) throw new Error("bearing2 is required");
- if (!e) throw new Error("radius is required");
- if ("object" != typeof i) throw new Error("options must be an object");
- if (qi(n) === qi(r)) return _n(t, e, i);
- var s = Q(t),
- a = bi(t, e, n, r, i),
- u = [
- [s]
- ];
- return R(a, (function (t) {
- u[0].push(t)
- })), u[0].push(s), l(u, o)
- }, t.segmentEach = U, t.segmentReduce = V, t.shortestPath = function (t, e, n) {
- if (!P(n = n || {})) throw new Error("options is invalid");
- var r = n.resolution,
- i = n.minDistance,
- s = n.obstacles || f([]);
- if (!t) throw new Error("start is required");
- if (!e) throw new Error("end is required");
- if (r && !C(r) || r <= 0) throw new Error("options.resolution must be a number, greater than 0");
- if (i) throw new Error("options.minDistance is not yet implemented");
- var u = K(t),
- l = K(e);
- switch (t = a(u), e = a(l), it(s)) {
- case "FeatureCollection":
- if (0 === s.features.length) return h([u, l]);
- break;
- case "Polygon":
- s = f([o(rt(s))]);
- break;
- default:
- throw new Error("invalid obstacles")
- }
- var c = s;
- c.features.push(t), c.features.push(e);
- var p = Z(ts(gn(Z(c)), 1.15));
- r || (r = me([p[0], p[1]], [p[2], p[1]], n) / 100), c.features.pop(), c.features.pop();
- for (var g = p[0], d = p[1], y = p[2], v = p[3], _ = r / me([g, d], [y, d], n) * (y - g), m = r / me([g, d], [g, v], n) * (v - d), x = y - g, E = v - d, b = Math.floor(x / _), w = Math.floor(E / m), I = (x - b * _) / 2, N = [], S = [], M = [], L = [], O = 1 / 0, R = 1 / 0, T = v - (E - w * m) / 2, A = 0; T >= d;) {
- for (var D = [], F = [], k = g + I, G = 0; k <= y;) {
- var q = a([k, T]),
- B = Js(q, s);
- D.push(B ? 0 : 1), F.push(k + "|" + T);
- var z = me(q, t);
- !B && z < O && (O = z, M = {
- x: G,
- y: A
- });
- var j = me(q, e);
- !B && j < R && (R = j, L = {
- x: G,
- y: A
- }), k += _, G++
- }
- S.push(D), N.push(F), T -= m, A++
- }
- var U = new Ys(S, {
- diagonal: !0
- }),
- V = U.grid[M.y][M.x],
- X = U.grid[L.y][L.x],
- Y = Xs.search(U, V, X),
- H = [u];
- return Y.forEach((function (t) {
- var e = N[t.x][t.y].split("|");
- H.push([+e[0], +e[1]])
- })), H.push(l), tn(h(H))
- }, t.simplify = function (t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n = void 0 !== e.tolerance ? e.tolerance : 1,
- r = e.highQuality || !1,
- i = e.mutate || !1;
- if (!t) throw new Error("geojson is required");
- if (n && n < 0) throw new Error("invalid tolerance");
- return !0 !== i && (t = Ie(t)), q(t, (function (t) {
- ! function (t, e, n) {
- var r = t.type;
- if ("Point" === r || "MultiPoint" === r) return t;
- tn(t, !0);
- var i = t.coordinates;
- switch (r) {
- case "LineString":
- t.coordinates = ln(i, e, n);
- break;
- case "MultiLineString":
- t.coordinates = i.map((function (t) {
- return ln(t, e, n)
- }));
- break;
- case "Polygon":
- t.coordinates = cn(i, e, n);
- break;
- case "MultiPolygon":
- t.coordinates = i.map((function (t) {
- return cn(t, e, n)
- }))
- }
- }(t, n, r)
- })), t
- }, t.square = yn, t.squareGrid = py, t.standardDeviationalEllipse = function (t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n = e.steps || 64,
- r = e.weight,
- i = e.properties || {};
- if (!C(n)) throw new Error("steps must be a number");
- if (!P(i)) throw new Error("properties must be a number");
- var o = G(t).length,
- s = Fa(t, {
- weight: r
- }),
- a = 0,
- u = 0,
- l = 0;
- F(t, (function (t) {
- var e = t.properties[r] || 1,
- n = Ga(Q(t), Q(s));
- a += Math.pow(n.x, 2) * e, u += Math.pow(n.y, 2) * e, l += n.x * n.y * e
- }));
- var c = a - u,
- h = Math.sqrt(Math.pow(c, 2) + 4 * Math.pow(l, 2)),
- p = 2 * l,
- g = Math.atan((c + h) / p),
- d = 180 * g / Math.PI,
- y = 0,
- v = 0,
- _ = 0;
- F(t, (function (t) {
- var e = t.properties[r] || 1,
- n = Ga(Q(t), Q(s));
- y += Math.pow(n.x * Math.cos(g) - n.y * Math.sin(g), 2) * e, v += Math.pow(n.x * Math.sin(g) + n.y * Math.cos(g), 2) * e, _ += e
- }));
- var m = Math.sqrt(2 * y / _),
- x = Math.sqrt(2 * v / _),
- E = Aa(s, m, x, {
- units: "degrees",
- angle: d,
- steps: n,
- properties: i
- }),
- b = _e(t, f([E])),
- w = {
- meanCenterCoordinates: Q(s),
- semiMajorAxis: m,
- semiMinorAxis: x,
- numberOfFeatures: o,
- angle: d,
- percentageWithinEllipse: 100 * G(b).length / o
- };
- return E.properties.standardDeviationalEllipse = w, E
- }, t.tag = function (t, e, n, r) {
- return t = Ie(t), e = Ie(e), F(t, (function (t) {
- t.properties || (t.properties = {}), F(e, (function (e) {
- void 0 === t.properties[r] && ye(t, e) && (t.properties[r] = e.properties[n])
- }))
- })), t
- }, t.tesselate = function (t) {
- if (!t.geometry || "Polygon" !== t.geometry.type && "MultiPolygon" !== t.geometry.type) throw new Error("input must be a Polygon or MultiPolygon");
- var e = {
- type: "FeatureCollection",
- features: []
- };
- return "Polygon" === t.geometry.type ? e.features = Wn(t.geometry.coordinates) : t.geometry.coordinates.forEach((function (t) {
- e.features = e.features.concat(Wn(t))
- })), e
- }, t.tin = xe, t.toMercator = Va, t.toWgs84 = Xa, t.transformRotate = $o, t.transformScale = ts, t.transformTranslate = function (t, e, n, r) {
- if (!P(r = r || {})) throw new Error("options is invalid");
- var i = r.units,
- o = r.zTranslation,
- s = r.mutate;
- if (!t) throw new Error("geojson is required");
- if (null == e || isNaN(e)) throw new Error("distance is required");
- if (o && "number" != typeof o && isNaN(o)) throw new Error("zTranslation is not a number");
- if (o = void 0 !== o ? o : 0, 0 === e && 0 === o) return t;
- if (null == n || isNaN(n)) throw new Error("direction is required");
- return e < 0 && (e = -e, n += 180), !1 !== s && void 0 !== s || (t = Ie(t)), R(t, (function (t) {
- var r = Q(ji(t, e, n, {
- units: i
- }));
- t[0] = r[0], t[1] = r[1], o && 3 === t.length && (t[2] += o)
- })), t
- }, t.triangleGrid = fy, t.truncate = ei, t.union = function (t, e, n) {
- void 0 === n && (n = {});
- var r = rt(t),
- i = rt(e),
- o = $u.union(r.coordinates, i.coordinates);
- return 0 === o.length ? null : 1 === o.length ? l(o[0], n.properties) : y(o, n.properties)
- }, t.unitsFactors = r, t.unkinkPolygon = function (t) {
- var e = [];
- return z(t, (function (t) {
- "Polygon" === t.geometry.type && F(oi(t), (function (n) {
- e.push(l(n.geometry.coordinates, t.properties))
- }))
- })), f(e)
- }, t.validateBBox = M, t.validateId = L, t.voronoi = function (t, e) {
- if (!P(e = e || {})) throw new Error("options is invalid");
- var n = e.bbox || [-180, -85, 180, 85];
- if (!t) throw new Error("points is required");
- if (!Array.isArray(n)) throw new Error("bbox is invalid");
- return nt(t, "Point", "points"), f(function () {
- var t = Ks,
- e = Qs,
- n = null;
- function r(r) {
- return new Ra(r.map((function (n, i) {
- var o = [Math.round(t(n, i, r) / Ma) * Ma, Math.round(e(n, i, r) / Ma) * Ma];
- return o.index = i, o.data = n, o
- })), n)
- }
- return r.polygons = function (t) {
- return r(t).polygons()
- }, r.links = function (t) {
- return r(t).links()
- }, r.triangles = function (t) {
- return r(t).triangles()
- }, r.x = function (e) {
- return arguments.length ? (t = "function" == typeof e ? e : Zs(+e), r) : t
- }, r.y = function (t) {
- return arguments.length ? (e = "function" == typeof t ? t : Zs(+t), r) : e
- }, r.extent = function (t) {
- return arguments.length ? (n = null == t ? null : [
- [+t[0][0], +t[0][1]],
- [+t[1][0], +t[1][1]]
- ], r) : n && [
- [n[0][0], n[0][1]],
- [n[1][0], n[1][1]]
- ]
- }, r.size = function (t) {
- return arguments.length ? (n = null == t ? null : [
- [0, 0],
- [+t[0], +t[1]]
- ], r) : n && [n[1][0] - n[0][0], n[1][1] - n[0][1]]
- }, r
- }().x((function (t) {
- return t.geometry.coordinates[0]
- })).y((function (t) {
- return t.geometry.coordinates[1]
- })).extent([
- [n[0], n[1]],
- [n[2], n[3]]
- ]).polygons(t.features).map(Ta))
- }, t.within = _e, Object.defineProperty(t, "__esModule", {
- value: !0
- })
- }));
|