1!function(){try{var e="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="1631d9c2-d309-4f62-bbe2-c6f271b11b08",e._sentryDebugIdIdentifier="sentry-dbid-1631d9c2-d309-4f62-bbe2-c6f271b11b08")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9213],{67294:(e,t,s)=>{let i,r,n,a,o,l,h,m,g,u,_,p,d,c,f;s.d(t,{$:()=>nl,A:()=>rr,B:()=>ra,C:()=>ri,D:()=>sN,E:()=>id,F:()=>iS,G:()=>sH,H:()=>t$,I:()=>iu,J:()=>tt,K:()=>ic,L:()=>iP,M:()=>function e(t,s,i,r,n){if(r&&(r.m_reason=0,r.m_vertexIndex1=-1,r.m_vertexIndex2=-1),t.isEmpty())return 5;let a=t.getGeometryType();if(a===I.G.enumPoint)return sv(t,r);let o=(0,w.b)(s,t,!1).total();if(a===I.G.enumEnvelope){let e=new v.Envelope2D;return t.queryEnvelope(e),e.isDegenerate(o)?(r&&(r.m_reason=4,r.m_vertexIndex1=-1,r.m_vertexIndex2=-1),0):5}if((0,I.f)(a)){let a=new G.P({vd:t.getDescription()});return a.addSegment(t,!0),e(a,s,i,r,n)}(0,I.x)(a),(0,I.i)(a)||(0,I.t)("OGC simplify is not implemented for this geometry type");let l=t.getImpl().getIsSimple(o,[0]),h=i?-1:l;if(5===h||0===h)return h;let m=new sT(t,s,h,n,!0);return a===I.G.enumMultiPoint||a===I.G.enumPolyline||a===I.G.enumPolygon?(h=m.isSimplePlanarImpl(),(0,w.i)(h)&&(h=5)):(0,I.d)(""),t.getImpl().setIsSimple(h,o),r&&r.assign(m.m_nonSimpleResult),h},N:()=>function e(t,s,i,r){if(t.isEmpty())return t;let n=t.getGeometryType();if(n===I.G.enumPoint){let e=new H.NonSimpleResult;if(sv(t,e),3===e.m_reason){let e=t.clone();return e.replaceNaNs(1,0),e}return 2===e.m_reason?t.createInstance():t}if(n===I.G.enumEnvelope){let e=new v.Envelope2D;t.queryEnvelope(e);let i=(0,w.b)(s,t,!0).total();return e.isDegenerate(i)?t.createInstance():t}if((0,I.f)(n)){let n=new G.P({vd:t.getDescription()});return n.addSegment(t,!0),e(n,s,i,r)}(0,I.x)(n),(0,I.i)(n)||(0,I.t)("OGC simplify is not implemented for this geometry type");let a=(0,w.b)(s,t,!1).total(),o=t.getImpl().getIsSimple(a,[0]),l=i?-1:o;if(5===l){if(n===I.G.enumPolygon&&0!==t.getFillRule()){let e=t.clone();return e.setFillRule(0),e}return t}return s_(t,(0,w.b)(s,t,!0),!1,l,r,0,!0)},O:()=>sO,P:()=>rl,Q:()=>se,R:()=>t5,S:()=>rW,T:()=>t6,U:()=>sf,V:()=>sg,W:()=>ss,X:()=>sp,a:()=>rj,a0:()=>nt,a1:()=>ns,a2:()=>na,a3:()=>iA,a4:()=>iD,a5:()=>iX,a6:()=>o,a7:()=>d,a8:()=>m,a9:()=>L,aC:()=>h,aF:()=>ej,aG:()=>eZ,aH:()=>i_,aI:()=>ip,aJ:()=>t8,aK:()=>sd,aU:()=>l,aV:()=>iO,aW:()=>$,aX:()=>ia,aY:()=>k,aa:()=>iY,ab:()=>iK,ac:()=>Y,ad:()=>iR,ae:()=>iU,af:()=>t0,ag:()=>j,ah:()=>c,ai:()=>sX,aj:()=>sL,ak:()=>q,al:()=>i6,am:()=>s5,an:()=>ik,ao:()=>r7,ap:()=>s9,aq:()=>sj,ar:()=>sZ,as:()=>sz,at:()=>sW,au:()=>ie,b:()=>rD,c:()=>rN,d:()=>rV,e:()=>rk,f:()=>rF,g:()=>rH,h:()=>rM,i:()=>rL,j:()=>rb,k:()=>rw,l:()=>rG,m:()=>rv,n:()=>rT,o:()=>rz,p:()=>rU,q:()=>rq,r:()=>rI,s:()=>rA,t:()=>rK,u:()=>rQ,v:()=>i5,w:()=>rZ,x:()=>rt,y:()=>re,z:()=>rs});var x,P,E,y,S,C,I=s(42110),v=s(37100),G=s(89306),w=s(20114),b=s(95078),T=s(49303),N=s(84301),D=s(10803),V=s(71688),F=s(75010),H=s(30640);class k{constructor(e){if(this.m_geom=this.m_sr=null,e){if(e.move)return this.m_geom=e.move.m_geom,e.move.m_geom=null,this.m_sr=e.move.m_sr,void(e.move.m_sr=null);if(e.copy)return this.m_geom=e.copy.m_geom?e.copy.m_geom.clone():null,void(this.m_sr=e.copy.m_sr);e.geom&&(this.m_geom=e.geom),e.sr&&(this.m_sr=e.sr)}}getGeometry(){return this.m_geom}getSpatialReference(){return this.m_sr}setGeometry(e){this.m_geom=e}setSpatialReference(e){this.m_sr=e}equals(e,t){return!(!this.m_sr&&e.m_sr)&&!(this.m_sr&&!e.m_sr)&&!(!this.m_geom&&e.m_geom)&&!(this.m_geom&&!e.m_geom)&&!(this.m_sr&&e.m_sr&&!this.m_sr.equals(e.m_sr))&&!(this.m_geom&&e.m_geom&&!this.m_geom.equals(e.m_geom,t))}clone(){let e=null;return this.m_geom&&(e=this.m_geom.clone()),new k({geom:e,sr:this.m_sr})}hasGeom(){return!!this.m_geom}}class A{constructor(e){this.m_factor=1,this.m_wkid=0,this.m_peUnit=null,e&&(this.m_peUnit=e,this.m_factor=e.getUnitFactor(),this.m_wkid=e.getCode(),this.m_wkid<0&&(this.m_wkid=0))}getName(){return this.m_peUnit?this.m_peUnit.getName():""}getID(){return this.m_wkid}getConversionFactor(e){return this.getUnitType()!==e.getUnitType()&&(0,I.a)("unit type mismatch"),this.getUnitToBaseFactor()/e.getUnitToBaseFactor()}getUnitToBaseFactor(){return this.m_factor}getHashCode(){return(0,b.A)((0,b.B)(this.getUnitType()),(0,b.B)(this.getUnitToBaseFactor()))}equals(e){return!!e&&this.getUnitType()===e.getUnitType()&&this.getUnitToBaseFactor()===e.getUnitToBaseFactor()&&this.getID()===e.getID()&&this.getName()===e.getName()}static isValidWkid(e){return!1}}let M
vendor: 10,100 bytes, line 1
1={330:104878,500:104879,1300:104899,1450:104986,2230:104988,3800:104978,5e3:104919,6200:104906,8200:104909,9500:104927,9600:104977,1e4:[104911,104936],11e3:104941,11080:104872,11100:104907,12e3:104920,12400:104995,13e3:104948,14e3:[104923,104989],15e3:[104913,104954],15100:104976,16e3:[104926,104931],18e3:[104922,104982],21e3:104947,21500:104877,27e3:[104950,104957],29e3:104964,3e4:104921,31e3:104949,33e3:104946,4e4:[104914,104967],40600:104897,41900:104937,42e3:104951,43100:104993,49300:104924,50100:104939,54e3:104955,58200:104981,59500:104930,74e3:104961,77e3:104956,79e3:104962,83500:104910,85e3:104917,88800:104934,89200:104985,96e3:104997,104e3:104963,106500:104898,11e4:104938,133e3:104932,135e3:104983,17e4:104965,198200:104987,198630:104935,208e3:104966,235800:104952,249400:104929,252100:104980,255e3:104973,47e4:104972,529800:104942,531e3:104996,56e4:104928,561400:104979,578900:104945,584700:104959,593e3:104970,606e3:104999,718e3:104933,745700:104984,761400:104953,763500:104994,764e3:104940,788900:104958,1188300:104998,1195e3:104969,1352600:104968,1560800:104874,1562090:104915,1737400:104903,1821460:104918,1821490:104876,2409300:104912,2410300:104873,2439400:104974,2439700:104900,2575e3:104943,2631200:104875,2632345:104916,3393400:104904,3396190:[104905,104971],6051e3:104901,6051800:104902,637e4:104128,6370997:[4052,37008],6371e3:4035,6371007:4047,6371228:[4053,10346],6376045:[8042,8043],6376523:[4027,4901,4902],6376896:37007,6378135:[4122,4322,4324,4720,4985,4987],6378136:[4740,4923,7678,7680,9474,9475,104017,104018],6378137:[3823,3824,3888,3889,4017,4019,4023,4031,4040,4046,4055,4074,4075,4080,4081,4121,4126,4130,4133,4140,4141,4148,4151,4152,4163,4166,4167,4170,4171,4172,4173,4176,4180,4189,4190,4258,4269,4283,4318,4319,4326,4463,4466,4469,4470,4480,4482,4483,4490,4557,4558,4612,4617,4619,4624,4627,4659,4661,4667,4669,4670,4674,4686,4687,4693,4694,4702,4737,4742,4747,4749,4750,4755,4756,4757,4758,4759,4761,4762,4763,4764,4765,4883,4885,4887,4889,4893,4895,4898,4907,4909,4921,4925,4927,4929,4931,4933,4935,4937,4939,4941,4943,4945,4947,4949,4951,4953,4955,4957,4959,4961,4963,4965,4967,4971,4975,4977,4979,4981,4983,4989,4997,4999,5012,5013,5245,5246,5251,5252,5263,5264,5323,5324,5340,5342,5353,5354,5359,5360,5364,5365,5370,5371,5372,5373,5380,5381,5392,5393,5488,5489,5545,5546,5592,5593,5885,5886,6134,6135,6310,6311,6318,6319,6321,6322,6324,6325,6364,6365,6667,6668,6705,6706,6782,6783,6980,6982,6983,6987,6989,6990,7034,7035,7036,7037,7038,7039,7040,7041,7042,7072,7073,7084,7085,7086,7087,7133,7135,7136,7138,7139,7372,7373,7657,7659,7661,7663,7665,7685,7686,7797,7798,7816,7843,7844,7880,7881,7885,7886,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7915,7917,7919,7921,7923,7925,7927,7929,7931,8085,8086,8231,8232,8235,8237,8239,8240,8244,8246,8248,8249,8251,8252,8254,8255,8399,8403,8426,8427,8449,8542,8544,8545,8684,8685,8698,8699,8817,8818,8860,8888,8899,8900,8901,8902,8906,8907,8916,8918,8920,8922,8924,8926,8928,8930,8932,8934,8936,8938,8940,8942,8944,8946,8948,8949,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,8993,8994,8995,8996,8997,8998,8999,9e3,9002,9003,9005,9006,9008,9009,9011,9012,9013,9014,9016,9017,9018,9019,9053,9054,9055,9056,9057,9059,9060,9061,9062,9063,9064,9065,9066,9067,9068,9069,9071,9072,9074,9075,9139,9140,9147,9148,9152,9153,9183,9184,9293,9294,9299,9308,9309,9332,9333,9364,9372,9379,9380,9384,9453,9469,9470,9546,9547,9695,9696,9701,9702,9739,9754,9755,9758,9763,9776,9777,9778,9779,9781,9782,9783,9784,9866,9871,9939,9964,9969,9974,9989,9990,10175,10177,10178,10185,10191,10196,10204,10209,10214,10219,10224,10229,10237,10272,10277,10283,10284,10298,10299,10300,10304,10305,10307,10309,10310,10311,10312,10327,10328,10413,10414,10468,10474,10475,10570,10571,10605,10606,10623,10628,10638,10639,10670,10671,10672,10673,10689,10690,10724,10725,10738,10739,10761,10762,10780,10781,10784,10785,10799,10800,20033,20040,20041,20045,20046,104009,104010,104011,104012,104013,104014,104015,104016,104019,104020,104021,104022,104024,104027,104028,104050,104100,104107,104108,104110,104111,104114,104115,104116,104117,104118,104119,104120,104121,104122,104123,104124,104129,104133,104134,104137,104141,104142,104143,104144,104145,104179,104180,104181,104182,104183,104184,104185,104186,104199,104223,104257,104258,104259,104260,104286,104287,104602,104613,104644,104645,104646,104647,104653,104804,104896,104991],6378140:4610,6378145:[4025,4276,4760,4891,37001],6378150:37003,6378155:[37004,37207],6378160:[3821,4003,4021,4036,4202,4203,4237,4238,4291,4618,4708,5527,37231,104023,104136],6378166:37002,6378200:[4020,4229,4286,4303,4706],6378245:[4024,4147,4164,4178,4179,4191,4200,4205,4214,4284,4317,4555,4676,4677,4678,4991,4993,5560,5561,37257,104135],6378270:[4732,37005,37229],6378273:[4054,10345],6378300:[4029,4168,4174],6378388:[4022,4123,4153,4154,4158,4159,4160,4161,4165,4181,4182,4183,4184,4185,4192,4194,4195,4196,4199,4204,4207,4208,4215,4218,4221,4224,4225,4230,4231,4233,4235,4236,4247,4248,4249,4254,4255,4259,4264,4265,4271,4272,4274,4285,4287,4288,4292,4297,4309,4311,4313,4316,4472,4475,4611,4614,4615,4616,4621,4622,4623,4625,4626,4628,4629,4630,4631,4632,4633,4636,4637,4639,4641,4642,4643,4644,4645,4646,4658,4660,4662,4663,4664,4665,4668,4672,4673,4684,4688,4689,4690,4691,4692,4698,4704,4705,4707,4709,4710,4711,4712,4714,4715,4716,4718,4719,4721,4722,4724,4725,4727,4728,4729,4730,4733,4734,4735,4739,4741,4753,4754,4802,4803,4806,4809,4810,4823,4824,4900,5524,6883,8428,8430,8431,9248,9251,9253,9403,9893,10158,10249,10252,10635,10636,10735,10736,10758,37201,37204,37205,37212,37213,37214,37215,37216,37217,37218,37219,37221,37222,37224,37226,37227,37230,37232,37233,37234,37235,37237,37238,37241,37242,37245,37246,37247,37249,37250,37251,37253,37259,104104,104106,104125,104126,104127,104130,104138,104248],6378523:104786,24764e3:104960,25559e3:104944,60268e3:104925,71492e3:104908,6957e5:104975,6377397.155:[3819,3906,4004,4120,4124,4125,4149,4150,4156,4162,4211,4219,4257,4262,4280,4289,4294,4295,4301,4306,4308,4312,4314,4613,4666,4745,4746,4801,4804,4805,4808,4813,4814,4815,4818,4820,4904,5132,5228,5229,5681,5830,8351,9267,10268,37255,104101,104102,104105,104131,104648,104696,104697,104990,104992],6377563.396:[4001,4188,4277,4278,4279],6377340.189:[4002,4299,4300],6377492.018:[4005,4273,4817],6377483.865280418:[4006,4293],6378293.645208759:[4007,4157,4302,4738,5464],6378206.4:[4008,4127,4128,4129,4135,4136,4137,4138,4139,4169,4216,4242,4253,4267,4608,4609,4638,4675,4683,4695,4717,4723,4726,4995,5451,5467,37220,37239,37243,37252,37260,104e3,104109,104112,104113,104132],6378450.047:[4009,4268],6378300.789:[4010,4281],6378249.2:[4011,4014,4155,4193,4206,4213,4223,4226,4227,4228,4252,4261,4266,4275,4282,4296,4304,4310,4315,4671,4807,4811,4816,4821,37223,37225,104139,104140,104261,104304],6378249.145:[4012,4013,4132,4134,4142,4143,4175,4197,4198,4201,4209,4210,4212,4220,4222,4232,4234,4246,4250,4251,4256,4260,4263,4270,4305,4307,4600,4601,4602,4603,4604,4605,4606,4607,4620,4679,4680,4696,4697,4699,4700,4701,4703,4713,4731,4736,4743,4744,4812,4819,6881,6882,6892,6894,8694,37206,37208,37211,37228,37240,37254,104025,104026,104103,104305],6377276.345:[4015,4131,4144,4239,4240,4244,4682,5233,6207,37202,104256,104664,104693],6377298.556:[4016,4298],6377304.063:[4018,4245],6378298.3:[4028,4903],6378136.2:4032,6378136.3:4033,6378249.144808011:[4034,4241],20922931.8:[4042,4243],6377301.243:[4044,4145,37203],6377299.151:[4045,4146],6377019.27:[4657,10256,10260,10265],6378306.3696:[4748,4752],6377295.664:[4751,37006],6378136.5:[7682,7683],6371008.7714:104047,6378418.941:[104700,104726,104760],6378586.581:[104701,104743],6378505.809:104702,6378544.823:104703,6378490.569:104704,6378470.757:[104705,104776],6378403.701:[104706,104750],6378434.181:[104707,104724,104739,104764],6378454.907:104708,6378400.653:104709,6378567.378:104710,6378546.957:[104711,104717,104780],6378476.853:[104712,104736],6378411.321:[104713,104728],6378647.541:[104714,104715],6378514.953:[104716,104782],6378421.989:[104718,104770],6378481.425:[104719,104753,104774,104781],6378518.001:[104720,104725],6378521.049:[104721,104723,104731,104745,104748],6378464.661:104722,6378436.619:104727,6378574.389:[104729,104730],6378472.281:[104732,104756],6378498.189:[104733,104746],6378449.421:[104734,104766],6378525.621:[104735,104754],6378466.185:104737,6378496.665:104738,6378643.579:104740,6378559.758:104741,6378414.369:[104742,104763,104772],6378441.801:104744,6378502.761:[104747,104759,104773,104775],6378617.061:104749,6378624.681:[104751,104765],6378468.623:104752,6378445.763:[104755,104758,104761],6378670.401:104757,6378438.753:104762,6378543.909:104767,6378605.783:104768,6378540.861:104769,6378443.325:[104771,104784],6378548.481:104777,6378463.746:104778,6378426.561:104779,6378453.688:104783,6378530.193:104785,6378376.271:[104800,104828],6378471.92:104801,6378472.931:104802,6378411.351:104803,6378380.991:104805,6378414.96:104806,6378345.09:[104807,104819,104844,104870],6378412.542:104808,6378470.401:104809,6378376.331:104810,6378379.031:104811,6378407.621:104812,6378376.811:[104813,104827],6378313.92:104814,6378414.93:104815,6378413.021:104816,6378380.381:104817,6378530.851:104818,6378591.521:104820,6378378.881:104821,6378408.481:[104822,104832],6378375.601:[104823,104838],6378408.041:104824,6378655.071:104825,6378409.151:104826,6378315.7:[104829,104840,104845,104851],6378285.86:[104830,104835,104859],6378379.301:104831,6378560.121:104833,6378531.821:104834,6378500.6:104836,6378376.041:104837,6378406.601:104839,6378438.991:104841,6378345.42:104842,6378593.86:104843,6378381.271:[104846,104847],6378413.671:104848,6378344.377:104849,6378563.891:104850,6378408.091:104852,6378377.671:104853,6378472.751:104854,6378412.511:104855,6378407.281:104856,6378534.451:104857,6378406.051:104858,6378532.921:104860,6378380.091:104861,6378408.941:104862,6378624.171:104863,6378377.411:104864,6378474.591:104865,6378407.141:104866,6378376.871:104867,6378375.251:104868,6378405.971:104869,6378437.651:104871};class
1U extends A{constructor(e){if("number"==typeof e)return super(),this.m_factor=e,void(this.m_wkid=0);super(e)}getUnitType(){return 1}convertFromRadians(e){return e/this.getUnitToBaseFactor()}convertToRadians(e){return e*this.getUnitToBaseFactor()}}function q(e){return new rP}class B{constructor(e,t,s){void 0===e?(this.x=new b.X,this.y=new b.X,this.z=new b.X):e instanceof w.d?(this.x=new b.X(e.x),this.y=new b.X(e.y),this.z=new b.X(e.z)):e instanceof b.X?(this.x=e.clone(),this.y=t.clone(),this.z=s.clone()):(0,I.a)("EPoint3D constructor")}dotProduct(e){return this.x.mulE(e.x).addE(this.y.mulE(e.y)).addE(this.z.mulE(e.z))}crossProduct(e){return new B(this.y.mulE(e.z).subE(this.z.mulE(e.y)),this.z.mulE(e.x).subE(this.x.mulE(e.z)),this.x.mulE(e.y).subE(this.y.mulE(e.x)))}crossProductVector(e){return new B(this.y.mulE(e.z).subE(e.y.mulE(this.z)),e.x.mulE(this.z).subE(this.x.mulE(e.z)),this.x.mulE(e.y).subE(e.x.mulE(this.y)))}sqrLength(){return this.x.mulE(this.x).addE(this.y.mulE(this.y)).addE(this.z.mulE(this.z))}length(){return this.sqrLength().sqrt()}static distance(e,t){return e.sub(t).length()}negate(){return new B(this.x.negate(),this.y.negate(),this.z.negate())}add(e){return new B(this.x.addE(e.x),this.y.addE(e.y),this.z.addE(e.z))}sub(e){return new B(this.x.subE(e.x),this.y.subE(e.y),this.z.subE(e.z))}subThis(e){return this.x.subThisE(e.x),this.y.subThisE(e.y),this.z.subThisE(e.z),this}addThis(e){return this.x.addThisE(e.x),this.y.addThisE(e.y),this.z.addThisE(e.z),this}mul(e){return new B(this.x.mulE(e),this.y.mulE(e),this.z.mulE(e))}div(e){return new B(this.x.divE(e),this.y.divE(e),this.z.divE(e))}eq(e){return this.x.eq(e.x)&&this.y.eq(e.y)&&this.z.eq(e.z)}isZero(){return this.x.isZero()&&this.y.isZero()&&this.z.isZero()}
1value(){return w.d.construct(this.x.value(),this.y.value(),this.z.value())}}class R{constructor(e){if(this.m_origin=new w.d,this.m_normal=new w.d,this.m_axisX=new w.d,this.m_axisY=new w.d,!e)return this.m_origin=new w.d,this.m_normal=new w.d(0,0,1),this.m_axisX=new w.d(1,0,0),void(this.m_axisY=new w.d(0,1,0));e.pt0&&e.pt1&&e.pt2?this.setFromPoints(e.pt0,e.pt1,e.pt2):(0,I.g)(0,`unimplemented constructor options ${JSON.stringify(e)}`)}assign(e){return(0,I.g)(0),this}set(e,t,s,i){(0,I.g)(0)}setFromPoints(e,t,s){let i=t.sub(e),r=s.sub(e);this.m_normal=i.crossProductVector(r);let n=!0;if(this.m_normal.isZero()){if(n=!1,i.isZero()&&(i=r),i.isZero())return this.m_normal.setCoords(0,0,1),this.m_axisX.setCoords(1,0,0),this.m_axisY.setCoords(0,1,0),this.m_origin=e,!1;this.m_axisX=i.getUnitVector(),this.m_normal=this.m_axisX.createAPerpendicular()}else this.m_normal.normalizeThis(),this.m_axisX=i.getUnitVector();return this.m_axisY=this.m_normal.crossProductVector(this.m_axisX),this.m_origin=e,n}getCoord(e,t){return(0,I.g)(0),{}}getCoord2D(e){return(0,I.g)(0),{}}getCoordX(e,t){return(0,I.g)(0),0}getCoordY(e,t){return(0,I.g)(0),0}getCoordZ(e,t){return(0,I.g)(0),0}setPreferredAxisX(e){(0,I.g)(0)}getOrigin(){return(0,I.g)(0),{}}getNormal(){return(0,I.g)(0),{}}getAxisX(){return this.m_axisX.clone()}getAxisY(){return this.m_axisY.clone()}setAxisX(e,t=!1){(0,I.g)(0)}setAxisY(e,t=!1){(0,I.g)(0)}recalculateAxisY(){(0,I.g)(0)}setOrigin(e){(0,I.g)(0)}setNormal(e,t){(0,I.g)(0)}intersect(e,t){return(0,I.g)(0),!1}intersectLine(e){return(0,I.g)(0),0}intersectLineEx(e,t){return(0,I.g)(0),0}closestCoordinate(e){let t=e.sub(this.m_origin),s=new b.P;return s.x=t.dotProduct(this.m_axisX),s.y=t.dotProduct(this.m_axisY),s}projectVector(e){return(0,I.g)(0),{}}signedDistance(e){return(0,I.g)(0),0}distance(e){return(0,I.g)(0),0}}function O(e,t){return!1}function Y(e,t,s,i,r=100,n=O){let a,o,l,h,m,g,u,_,p;(0,I.g)(i>0);let d,c,f,x=0,P=0,E=(0,b.a1)();t>s&&(s=(0,b.c)(t,t=s));let y=e(t),S=e(s);y<S?(a=o=l=t,h=m=g=y):(a=o=l=s,h=m=g=S);let C=0;for(;C<r&&(f=.5*(s-t),p=t+f,c=2*(d=i*(Math.abs(a)+.25)),!(n(a,h)||Math.abs(a-p)<=c-f));++C){if(Math.abs(P)>d){let e=(a-o)*(h-g),i=(a-l)*(h-m),r=(a-l)*i-(a-o)*e;(i=2*(i-e))>0&&(r=-r),i=Math.abs(i);let n=P;P=x,Math.abs(r)>=Math.abs(i*n*.5)||r<=i*(t-a)||r>=i*(s-a)?(P=a>=p?t-a:s-a,x=(0,b.a1)()*P):((_=a+(x=r/i))-t<c||s-_<c)&&(x=p-a<0?-Math.abs(d):Math.abs(d))}else x=(P=a>=p?t-a:s-a)*E;(u=e(_=a+x))<h?(_>=a?t=a:s=a,l=o,o=a,a=_,g=m,m=h,h=u):(_<a?t=_:s=_,u<=m||o===a?(l=o,o=_,g=m,m=u):(u<=g||l===a||l===o)&&(l=_,g=u))}return(0,b.l)(a,h)}function X(e,t,s){return e>s?e-=Math.ceil((e-s)/b.p)*b.p:e<t&&(e+=Math.ceil((t-e)/b.p)*b.p),e}function L(e,t,s){var i,r,n;let a,o;return i=e,r=t,a=(n=s).x,z(i,r,Math.cos(a),Math.sin(a),Math.cos(o=n.y),Math.sin(o),0)}function z(e,t,s,i,r,n,a){let o=e/Math.sqrt(1-t*n*n),l=o+a;return w.d.construct(l*r*s,l*r*i,(o*(1-t)+a)*n)}function W(e,t,s){let i=new b.X,r=new b.X,n=new b.X,a=new b.X;i.setCos(s.x),r.setSin(s.x),n.setCos(s.y),a.setSin(s.y);let o=a.negate().mulE(a.mul(t)).add(1).sqrt(),l=new b.X(e).divE(o);return new B(l.mulE(n).mulE(i),l.mulE(n).mulE(r),l.mul(1-t).mulE(a))}function j(e,t,s){let i=s.x,r=s.y,n=s.z,a=Math.atan2(r,i),o=Math.atan2(n,(1-t)*Math.sqrt(i*i+r*r));return b.P.construct(a,o)}function Z(e,t,s){let i=e/Math.sqrt((0,b.a)(s.x)+(0,b.a)(s.y)+(0,b.a)(s.z)/(1-t));return s.mul(i)}function K(e,t,s,i,r,n=0,a){if(2===n||3===n)return function(e,t,s,i,r,n=!1,a){let o=Z(e,t,s);if(n){let n=new R({pt0:new w.d(0,0,0),pt1:i,pt2:r}),l=n.closestCoordinate(s),h=n.closestCoordinate(i),m=n.closestCoordinate(r),g=b.P.getClosestCoordinate(h,m,l),u=Z(e,t,w.d.lerp(i,r,g)),_=w.d.distance(u,o);return a&&a.assign(u),(0,b.l)(g,_)}let l=w.d.distance(i,r);if(l>0){let{first:s,second:n}=Y(s=>{let n=Z(e,t,w.d.lerp(i,r,s));return w.d.distance(n,o)},0,1,et(e,l));return a&&a.assign(Z(e,t,w.d.lerp(i,r,s))),(0,b.l)(s,n)}{let e=w.d.distance(s,i);return a&&a.assign(s),(0,b.l)(.5,e)}}(e,t,s,i,r,3===n,a);let l=j(e,t,s),m=s=>{let a=j(e,t,w.d.lerp(i,r,s));return function(e,t,s,i,r){switch((0,I.g)(s.isFinite()&&i.isFinite()),r){case 0:let n={stack:[],error:void 0,hasError:!1};try{let r=(0,T.mS)(n,new o,!1);return d.geodeticDistance(e,t,s.x,s.y,i.x,i.y,r,null,null,h.PE_LINETYPE_GEODESIC),r.val}catch(e){n.error=e,n.hasError=!0}finally{(0,T.hk)(n)}return;case 1:var a=e,l=t,m=s;let g={stack:[],error:void 0,hasError:!1};try{let e=(0,T.mS)(g,new o,!1);return d.greatEllipticDistance(a,l,m.x,m.y,m.x,m.y,e,null,null),e.val}catch(e){g.error=e,g.hasError=!0}finally{(0,T.hk)(g)}return;case 2:case 3:{let r=L(e,t,s),n=L(e,t,i);return w.d.distance(r,n)}default:(0,I.t)("")}}(e,t,l,a,n)},g=w.d.distance(i,r);if(g>0){let{first:s,second:n}=Y(m,0,1,et(e,g));return a&&a.assign(Z(e,t,w.d.lerp(i,r,s))),(0,b.l)(s,n)}{let e=m(0);return a&&a.assign(i),(0,b.l)(.5,e)}}function Q(e,t,s,i,r,n){if(n[0]=NaN,n[1]=NaN,Math.abs(s.x-i.x)>Math.PI||Math.abs(s.y)>b.o||Math.abs(i.y)>b.o||(Math.abs(s.y)===b.o||Math.abs(i.y)===b.o)&&s.x!==i.x||Math.abs(r)>=b.o||s.y>0&&i.y>0&&s.y>r&&i.y>r||s.y<0&&i.y<0&&s.y<r&&i.y<r)return 0;let a=G.X.constructPoint2D(s),o=G.X.constructPoint2D(i),l=W(1,t,a),h=W(1,t,o),m=l.crossProductVector(h);if(m.z.isZero())return b.E.construct(s.y,i.y).containsCoordinate(r)?(n[0]=s.x,1):0;let g=m.x.divE(m.z.negate()),u=m.y.divE(m.z.negate()),_=g.mulE(g).addE(u.mulE(u)).sqrt();if(_.isZero()||g.isZero()&&u.isZero())return 0===r?(n[0]=s.x,n[1]=i.x,2):0;let p=(1-t)*Math.tan(r)/_.value();if(Math.abs(p)>1)return 0;let d=Math.acos(p),c=Math.atan2(u.value(),g.value()),f=c-d,x=c+d,P=Math.min(s.x,i.x),E=Math.max(s.x,i.x);X(f,P,E),0!==r?X(x,P,E):x=f;let y=0;return P<=f&&f<=E&&(n[y]=f,y++),x!==f&&P<=x&&x<=E&&(n[y]=x,y++),y}function J(e,t){t[0]>.5*Math.PI?(e[0]+=Math.PI,t[0]=Math.PI-t[0]):t[0]<-(.5*Math.PI)&&(e[0]-=Math.PI,t[0]=-Math.PI-t[0]),(0,I.g)(t[0]>=-(.5*Math.PI)&&t[0]<=.5*Math.PI)}function $(e,t,s,i,r){i=(0,b.s)(i,-b.o,b.o),r=(0,b.s)(r,-b.o,b.o);let n=b.o-.03;return .5*(s-t)*(i>n&&r>n||i<-n&&r<-n?function(e,t,s){let i=1;if(t<0&&(i=-1,t=-t,s=-s),0!==e){let r=e*e,n=r*e,a=[1,(1+11*e)/12,(1+118*e+241*r)/360,(1+1089*e+10419*r+8651*n)/20160,(1+9836*e+318246*r+1027436*n+n*e*458881)/1814400],o=t=>{let s=0,i=(0,b.a)(t)/(e-1);for(let e=a.length-1;e>=0;--e)s=a[e]+s*i;return-(s*(0,b.a)(t/(1-e)))},l=o(b.o-t);return(o(b.o-s)-l)*i}{let e=b.o-t,r=b.o-s,n=-4*(0,b.a)(Math.sin(e/2));return(-4*(0,b.a)(Math.sin(r/2))-n)*i}}(e,i,r):ee(e,r)-ee(e,i))*(1-e)}function ee(e,t){if(0===t)return 0;let s=Math.sin(t),i=s,r=s;if(0!==e){i/=1-e*s*s;let t=Math.sqrt(e);r=s*(0,b.y)(t*s)}return i+r}function et(e,t){return 0!==t?Math.min(e*(0,b.Z)()/t,1e-10):0}class es{constructor(e){this.m_currentShift=63n,this.m_currentElt=0n,this.m_iCurrentElt=-1,this.m_parent=e,this.m_aiSetElts=e.m_bits.flatMap((e,t)=>t)}
1next(){if(this.m_currentShift++,64n===this.m_currentShift){if(this.m_iCurrentElt++,this.m_iCurrentElt===this.m_aiSetElts.length)return es.npos();this.m_currentShift=0n,this.m_currentElt=this.m_parent.m_bits[this.m_aiSetElts[this.m_iCurrentElt]]}for(;this.m_currentShift<63n&&!(this.m_currentElt&1n<<this.m_currentShift);)this.m_currentShift++;return this.m_currentElt&1n<<this.m_currentShift?64*this.m_aiSetElts[this.m_iCurrentElt]+Number(this.m_currentShift):this.next()}static npos(){return Number.MAX_SAFE_INTEGER}}function ei(e){return 1n<<(63n&BigInt(e))}class er{constructor(e){this.m_bits=[],void 0!==e&&e.copy&&(this.m_bits=e.copy.m_bits.slice())}assignMove(){return this}assignCopy(){return this}hasBit(e){let t=ei(e),s=e>>6;return void 0!==this.m_bits[s]&&!!(this.m_bits[s]&t)}setBit(e){let t=ei(e),s=e>>6;void 0===this.m_bits[s]&&(this.m_bits[s]=0n),this.m_bits[s]|=t}clearBit(e){}flipBit(e){let t=ei(e),s=e>>6;return void 0===this.m_bits[s]&&(this.m_bits[s]=0n),this.m_bits[s]^=t,0n!==(this.m_bits[s]&t)}clear(){this.m_bits.length=0}isZero(){let e=0;return this.m_bits.forEach(t=>{e|=t?2:1}),!(2&e)}equals(e){if(this===e)return!0;if(this.m_bits.length!==e.m_bits.length)return!1;let t=0;return this.m_bits.forEach((s,i)=>{t|=s===e.m_bits[i]?2:1}),!(1&t)&&(e.m_bits.forEach((e,s)=>{t|=e===this.m_bits[s]?2:1}),!(1&t))}notEquals(e){return!this.equals(e)}assignOr(e){return e.m_bits.forEach((e,t)=>{void 0===this.m_bits[t]?this.m_bits[t]=e:this.m_bits[t]|=e}),this}assignSubtract(e){return e.m_bits.forEach((e,t)=>{void 0!==this.m_bits[t]&&(this.m_bits[t]&=~e)}),this}assignAnd(e){return e.m_bits.forEach((e,t)=>{void 0!==this.m_bits[t]&&(this.m_bits[t]&=e)}),this}assignXor(e){return e.m_bits.forEach((e,t)=>{void 0===this.m_bits[t]?this.m_bits[t]=e:this.m_bits[t]^=e}),this}getHashCode(){return this.m_bits.reduce((e,t)=>(0,b.O)(e,t),(0,b.B)(0))}getUnorderedBitIterator(){return new es(this)}}class en{constructor(e,t){this.m_map=new Map,this.m_hf=e,this.m_ef=t}add(e){let t=this.m_hf(e);if(!this.m_map.has(t))return this.m_map.set(t,e),this;let s=this.m_map.get(t);return s instanceof Array?s.find(t=>this.m_ef(t,e))||s.push(e):this.m_ef(s,e)||this.m_map.set(t,[s,e]),this}clear(){this.m_map.clear()}delete(e){return!1}has(e){let t=this.m_hf(e);if(!this.m_map.has(t))return!1;let s=this.m_map.get(t);return s instanceof Array?void 0!==s.find(t=>this.m_ef(t,e)):this.m_ef(s,e)}get(e){let t=this.m_hf(e),s=this.m_map.get(t);if(void 0!==s)return s instanceof Array?s.find(t=>this.m_ef(t,e)):s}get size(){let e=0;for(let t of this.m_map.values())e+=t instanceof Array?t.length:1;return e}forEach(e,t){}[Symbol.iterator](){return(new Set)[Symbol.iterator]()}entries(){return(new Set).entries()}keys(){return(new Set).keys()}values(){return(new Set).values()}get[Symbol.toStringTag](){return"ValueSet"}}class ea extends w.F{constructor(e){super(),this.m_bufferLeft=new G.S,this.m_bufferRight=new G.S,this.m_intervalLeft=b.E.constructEmpty(),this.m_intervalRight=b.E.constructEmpty(),this.m_yScanline=NaN,this.m_helper=e}
1compare(e,t,s){let i=e.getElement(s);this.m_helper.querySegmentXY(t,this.m_bufferLeft),this.m_helper.querySegmentXY(i,this.m_bufferRight);let r=this.m_bufferLeft.get(),n=this.m_bufferRight.get();if(this.m_intervalLeft.setCoords(r.getStartX(),r.getEndX()),this.m_intervalRight.setCoords(n.getStartX(),n.getEndX()),this.m_intervalLeft.vmax<this.m_intervalRight.vmin)return -1;if(this.m_intervalLeft.vmin>this.m_intervalRight.vmax)return 1;let a=r.getStartY()===r.getEndY(),o=n.getStartY()===n.getEndY();if(a||o){if(a&&o)return 0;if(r.getStartY()===n.getStartY()&&r.getStartX()===n.getStartX())return a?1:-1;if(r.getEndY()===n.getEndY()&&r.getEndX()===n.getEndX())return a?-1:1}let l=r.intersectionOfYMonotonicWithAxisX(this.m_yScanline,this.m_intervalLeft.vmin),h=n.intersectionOfYMonotonicWithAxisX(this.m_yScanline,this.m_intervalRight.vmin);if(l===h){let e=Math.min(r.getEndY(),n.getEndY()),t=.5*(e+this.m_yScanline);t===this.m_yScanline&&(t=e),l=r.intersectionOfYMonotonicWithAxisX(t,this.m_intervalLeft.vmin),h=n.intersectionOfYMonotonicWithAxisX(t,this.m_intervalRight.vmin)}return l<h?-1:+(l>h)}setY(e){this.m_yScanline=e}}class eo{constructor(e){this.m_segmentBuffer=new G.S,this.m_point=b.P.getNAN(),this.m_parent=e}setPointXY(e){this.m_point.assign(e)}compare(e,t){let s=e.getElement(t);this.m_parent.querySegmentXY(s,this.m_segmentBuffer);let i=this.m_segmentBuffer.get(),r=new b.E;if(r.setCoords(i.getStartX(),i.getEndX()),this.m_point.x<r.vmin)return -1;if(this.m_point.x>r.vmax)return 1;let n=i.intersectionOfYMonotonicWithAxisX(this.m_point.y,this.m_point.x);return this.m_point.x<n?-1:+(this.m_point.x>n)}}function el(e,t){return{parentage:e,rank:t}}function eh(e,t,s){s.length=0;let i=!1;{let r=e.getHalfEdgeVertexIterator(t);for(;r!==G.n;){let t=e.getVertexFromVertexIterator(r),n=e.getShape().getSegmentRank(t),a=e.getShape().getSegmentParentage(t);i||=a>=0,s.push(el(a,n)),r=e.incrementVertexIterator(r)}}{let r=e.getHalfEdgeVertexIterator(e.getHalfEdgeTwin(t));for(;r!==G.n;){let t=e.getVertexFromVertexIterator(r),n=e.getShape().getSegmentRank(t),a=e.getShape().getSegmentParentage(t);i||=a>=0,s.push(el(a,n)),r=e.incrementVertexIterator(r)}}i&&s.sort((e,t)=>e.rank>t.rank?-1:e.rank<t.rank?1:e.parentage<t.parentage?-1:+(e.parentage>t.parentage)),-1===s[0].parentage&&(s.length=1)}(x=y||(y={}))[x.enumInputModeBuildGraph=0]="enumInputModeBuildGraph",x[x.enumInputModeSimplifyAlternate=1]="enumInputModeSimplifyAlternate",x[x.enumInputModeSimplifyWinding=2]="enumInputModeSimplifyWinding",(P=S||(S={}))[P.enumSegmentParentageBreakNode=1]="enumSegmentParentageBreakNode",P[P.enumPathBreakNode=2]="enumPathBreakNode";class em{constructor(){this.m_shape=null,this.m_clusterData=new w.S(8),this.m_clusterVertices=new w.S(2),this.m_firstCluster=G.n,this.m_lastCluster=G.n,this.m_halfEdgeData=new w.S(8),this.m_chainData=new w.S(8),this.m_chainAreas=null,this.m_chainPerimeters=null,this.m_universeChain=-1,this.m_simplifiedGeometry=-1,this.m_edgeIndices=[],this.m_clusterIndices=[],this.m_chainIndices=[],this.m_bBuildGeometryParentageSets=!1,this.m_chainBitSetIndex=-1,this.m_edgeBitSetIndex=-1,this.m_edgeBitSetIndexLeft=-1,this.m_emptyBitSet=null,this.m_geometryMapID=null,this.m_uniqueBitSets=null,this.m_chainBitSets=[],this.m_edgeBitSets=[],this.m_checkDirtyPlanesweepTolerance=NaN,this.m_geometryIDIndex=-1,this.m_clusterIndex=-1,this.m_halfEdgeIndex=-1,this.m_tmpHalfEdgeParentageIndex=-1,this.m_tmpHalfEdgeParentageIndexLeft=-1,this.m_tmpHalfEdgeWindingNumberIndex=-1,this.m_tmpHalfEdgeOddEvenNumberIndex=-1,this.m_segmentParentageIndex=-1,this.m_segmentIndexHe=-1,this.m_clusterBreakNodeIndex=-1,this.m_universeGeomID=-1,this.m_pointCount=0,this.m_progressCounter=0,this.m_bBuildChains=!0,this.m_bDirtyCheckFailed=!1}setCheckDirtyPlanesweepTolerance(e){this.m_checkDirtyPlanesweepTolerance=e}dirtyCheckFailed(){return this.m_bDirtyCheckFailed}getShape(){return this.m_shape}setEditShape(e,t,s=!0,i=!1){i?this.setEditShapeImpl3D_(e,y.enumInputModeBuildGraph,null,t,!1):this.setEditShapeImpl_(e,y.enumInputModeBuildGraph,null,t,s)}setAndSimplifyEditShapeAlternate(e,t,s=null,i=!1){let r=[];r.push(t),this.m_simplifiedGeometry=t,i?this.setEditShapeImpl3D_(e,y.enumInputModeSimplifyAlternate,r,s,!1):this.setEditShapeImpl_(e,y.enumInputModeSimplifyAlternate,r,s,e.getGeometryType(t)===I.G.enumPolygon)}setAndSimplifyEditShapeWinding(e,t,s=null){let i=[];i.push(t),this.m_simplifiedGeometry=t,this.setEditShapeImpl_(e,y.enumInputModeSimplifyWinding,i,s,!0)}removeShape(){null!==this.m_shape&&(-1!==this.m_geometryIDIndex&&(this.m_shape.removeGeometryUserIndex(this.m_geometryIDIndex),this.m_geometryIDIndex=-1),-1!==this.m_clusterIndex&&(this.m_shape.removeUserIndex(this.m_clusterIndex),this.m_clusterIndex=-1),-1!==this.m_halfEdgeIndex&&(this.m_shape.removeUserIndex(this.m_halfEdgeIndex),this.m_halfEdgeIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),-1!==this.m_tmpHalfEdgeWindingNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeWindingNumberIndex),this.m_tmpHalfEdgeWindingNumberIndex=-1),-1!==this.m_tmpHalfEdgeOddEvenNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeOddEvenNumberIndex),this.m_tmpHalfEdgeOddEvenNumberIndex=-1),-1!==this.m_segmentParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_segmentParentageIndex),this.m_segmentParentageIndex=-1),-1!==this.m_segmentIndexHe&&(this.deleteUserIndexForHalfEdges(this.m_segmentIndexHe),this.m_segmentIndexHe=-1),-1!==this.m_clusterBreakNodeIndex&&(this.deleteUserIndexForCluster
1s(this.m_clusterBreakNodeIndex),this.m_clusterBreakNodeIndex=-1),this.deleteEdgeBitSets_(),this.deleteChainBitSets_(),this.m_emptyBitSet=null,this.m_geometryMapID=null,this.m_shape=null,this.m_clusterData.deleteAll(!0),this.m_clusterVertices.deleteAll(!0),this.m_firstCluster=G.n,this.m_lastCluster=G.n,this.m_halfEdgeData.deleteAll(!0),this.m_edgeIndices.length=0,this.m_clusterIndices.length=0,this.m_chainIndices.length=0,this.m_chainData.deleteAll(!0),this.m_universeChain=G.n,this.m_chainAreas=null)}getClusterHalfEdge(e){return this.m_clusterData.getField(e,2)}queryXY(e,t){let s=this.getClusterVertexIndex_(e);t.assign(this.m_shape.getXYWithIndex(s))}queryXYZ(e,t){(0,I.g)(0)}getClusterParentage(e){return this.m_clusterData.getField(e,1)}getFirstCluster(){return this.m_firstCluster}getPrevCluster(e){return this.m_clusterData.getField(e,3)}getNextCluster(e){return this.m_clusterData.getField(e,4)}getClusterChain(e){return this.m_clusterData.getField(e,6)}getClusterVertexIterator(e){return this.m_clusterData.getField(e,7)}incrementVertexIterator(e){return this.m_clusterVertices.getField(e,1)}getVertexFromVertexIterator(e){return this.m_clusterVertices.getField(e,0)}getClusterUserIndex(e,t){let s=this.getClusterIndex_(e),i=this.m_clusterIndices[t];return i.size()<=s?-1:i.read(s)}setClusterUserIndex(e,t,s){let i=this.getClusterIndex_(e),r=this.m_clusterIndices[t];r.size()<=i&&r.resize(this.m_clusterData.size(),-1),r.write(i,s)}hasClusterUserIndexFlags(e,t,s){if(-1===t)return!1;let i=this.getClusterUserIndex(e,t);return -1!==i&&0!=(s&i)}setClusterUserIndexFlags(e,t,s){let i=this.getClusterIndex_(e),r=this.m_clusterIndices[t];r.size()<=i&&r.resize(this.m_clusterData.size(),-1);let n=r.read(i);-1===n&&(n=0),r.write(i,s|n)}clearClusterUserIndexFlags(e,t,s){let i=this.getClusterIndex_(e),r=this.m_clusterIndices[t];r.size()<=i&&r.resize(this.m_clusterData.size(),-1);let n=r.read(i);-1===n&&(n=0),r.write(i,~s&n)}createUserIndexForClusters(e=-1){let t=new w.A(this.m_clusterData.capacity(),e);for(let e=0,s=this.m_clusterIndices.length;e<s;e++)if(null===this.m_clusterIndices[e])return this.m_clusterIndices[e]=t,e;return this.m_clusterIndices.push(t),this.m_clusterIndices.length-1}deleteUserIndexForClusters(e){this.m_clusterIndices[e]=null}getHalfEdgeOrigin(e){return this.m_halfEdgeData.getField(e,1)}getHalfEdgeTo(e){return this.getHalfEdgeOrigin(this.getHalfEdgeTwin(e))}getHalfEdgeTwin(e){return this.m_halfEdgeData.getField(e,4)}getHalfEdgePrev(e){return this.m_halfEdgeData.getField(e,5)}getHalfEdgeNext(e){return this.m_halfEdgeData.getField(e,6)}getHalfEdgeChain(e){return this.m_halfEdgeData.getField(e,2)}getHalfEdgeFaceParentage(e){return this.getChainParentage(this.getHalfEdgeChain(e))}getHalfEdgeVertexIterator(e){return this.m_halfEdgeData.getField(e,7)}getHalfEdgeFromXY(e,t){this.queryXY(this.getHalfEdgeOrigin(e),t)}getHalfEdgeToXY(e,t){this.queryXY(this.getHalfEdgeTo(e),t)}isHalfEdgeCurve(e){return -1!==this.m_segmentIndexHe&&-1!==this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe)}getHalfEdgeFromXYZ(e,t){(0,I.g)(0)}getHalfEdgeToXYZ(e,t){(0,I.g)(0)}getHalfEdgeParentage(e){return this.m_halfEdgeData.getField(e,3)&em.c_EdgeParentageMask}getHalfEdgeUserIndex(e,t){let s=this.getHalfEdgeIndex_(e),i=this.m_edgeIndices[t];return i.size()<=s?-1:i.read(s)}setHalfEdgeUserIndex(e,t,s){let i=this.getHalfEdgeIndex_(e),r=this.m_edgeIndices[t];r.size()<=i&&r.resize(this.m_halfEdgeData.size(),-1),r.write(i,s)}createUserIndexForHalfEdges(e){void 0===e&&(e=-1);let t=new w.A(this.m_halfEdgeData.capacity(),e);for(let e=0,s=this.m_edgeIndices.length;e<s;e++)if(null===this.m_edgeIndices[e])return this.m_edgeIndices[e]=t,e;this.m_edgeIndices.push(t);let s=this.m_edgeIndices.length-1;return(0,I.g)(s>=0&&s<=Number.MAX_SAFE_INTEGER),s}deleteUserIndexForHalfEdges(e){this.m_edgeIndices[e]=null}deleteEdgesBreakFaces_(e){for(let t=0,s=e.length;t<s;t++){let s=e[t],i=this.getHalfEdgeChain(s),r=this.getHalfEdgeTwin(s),n=this.getHalfEdgeChain(r);this.setChainHalfEdge_(i,G.n),this.setChainHalfEdge_(n,G.n),this.updateVertexToHalfEdgeConnection_(s,!0),this.deleteEdgeImpl_(s)}}doesHalfEdgeBelongToAPolygonInterior(e,t){return(0,I.g)(0),!1}doesHalfEdgeBelongToAPolygonExterior(e,t){return(0,I.g)(0),!1}doesHalfEdgeBelongToAPolygonBoundary(e,t){return(0,I.g)(0),!1}doesHalfEdgeBelongToAPolylineInterior(e,t){return(0,I.g)(0),!1}doesHalfEdgeBelongToAPolylineExterior(e,t){return(0,I.g)(0),!1}doesClusterBelongToAPolygonInterior(e,t){return(0,I.g)(0),!1}doesClusterBelongToAPolygonExterior(e,t){return(0,I.g)(0),!1}doesClusterBelongToAPolygonBoundary(e,t){return(0,I.g)(0),!1}getFirstChain(){return this.m_universeChain}getChainHalfEdge(e){return this.m_chainData.getField(e,1)}getChainParentage(e){return this.m_chainData.getField(e,2)}getChainParent(e){return this.m_chainData.getField(e,3)}getChainFirstIsland(e){return this.m_chainData.getField(e,4)}getChainNextInParent(e){return this.m_chainData.getField(e,5)}getChainNext(e){return this.m_chainData.getField(e,7)}getChainArea(e){let t=this.getChainIndex_(e),s=this.m_chainAreas.read(t);return Number.isNaN(s)&&(this.updateChainAreaAndPerimeter_(e),s=this.m_chainAreas.read(t)),s}getChainPerimeter(e){return(0,I.g)(0),0}getChainUserIndex(e,t){let s=this.getChainIndex_(e),i=this.m_chainIndices[t];return i.size()<=s?-1:i.read(s)}setChainUserIndex(e,t,s){let i=this.getChainIndex_(e),r=this.m_chainIndices[t];r.size()<=i&&r.resize(this.m_chainData.size(),-1),r.write(i,s)}createUserIndexForChains(){let e=new w.A(this.m_chainData.capacity(),-1);for(let t=0,s=this.m_chainIndices.length;t<s;t++)if(null===this.m_chainIndices[t])return this.m_chainIndices[t]=e,t;return this.m_chainIndices.push(e),this.m_chainIndices.length-1}deleteUserIndexForChains(e){this.m_chainIndices[e]=null}extractPolygonFromChainAndIslands(e,t,s,i){let r=t===G.n?e.createGeometry(I.G.enumPolygon):t,n=new G.S;this.extractPolygonPathFromChain_(e,r,s,i,n);for(let t=this.getChainFirstIsland(s);t!==G.n;t=this.getChainNextInParent(t))this.extractPolygonPathFromChain_(e,r,t,i,n);return r}getGeometryID(e){let t=this.m_shape.getGeometryUserIndex(e,this.m_geometryIDIndex);return(0,I.g)(t>=0),1<<Math.min(t,31)}getClusterFromVertex(e){return this.m_shape.getUserIndex(e,this.m_clusterIndex)}getHalfEdgeFromVertex(e){return this.m_shape.getUserIndex(e,this.m_halfEdgeIndex)}buildGeometryParentageSets(){this.m_bBuildGeometryParentageSets=!0}getChainBitSet(e){if((0,I.g)(this.m_bBuildGeometryParentageSets),-1===this.m_chainBitSetIndex)return this.getEmptySet();let t=this.getChainUserIndex(e,this.m_chainBitSetIndex);(0,I.g)(t>=0);let s=this.m_chainBitSets.at(t);return s||(s=this.getEmptySet()),s}getChainBoundaryBitSet(e){(0,I.g)(this.m_bBuildGeometryParentageSets);let t=new er,s=e=>{let s=this.getChainHalfEdge(e),i=s;do{let e=this.getEdgeBitSet_(i);null!==e&&t.assignOr(e);let s=this.getEdgeBitSet_(this.getHalfEdgeTwin(i));null!==s&&t.assignOr(s),i=this.getHalfEdgeNext(i)}while(i!==s)};s(e);for(let t=this.getChainFirstIsland(e);t!==G.n;t=this.getChainNextInParent(t))s(e);return t}getChainPolygons(e){return(0,I.g)(0),[]}getGeometriesFromBits(e){if(!this.m_bBuildGeometryParentageSets||null===e)return[];if(null===this.m_geometryMapID){this.m_geometryMapID=new Map;for(let e=this.m_shape.getFirstGeometry();e!==G.n;e=this.m_shape.getNextGeometry(e))this.m_geometryMapID.set(this.m_shape.getGeometryUserIndex(e,this.m_geometryIDIndex),e)}let t=[],s=e.getUnorderedBitIterator();for(let e=s.next();e!==es.npos();e=s.next())(0,I.g)(this.m_geometryMapID.has(e)),t.push(this.m_geometryMapID.get(e));return t}getVertexDominant(e,t){if(t===G.n)return e;let s=this.getClusterFromVertex(e);return this.getVertexDominantFromCluster(s,t)}getVertexDominantFromCluster(e,t){if(t!==G.n){let s=G.n;for(let i=this.getClusterVertexIterator(e);i!==G.n;i=this.incrementVertexIterator(i)){let e=this.getVertexFromVertexIterator(i);s===G.n&&(s=e);let r=this.m_shape.getPathFromVertex(e);if(this.m_shape.getGeometryFromPath(r)===t){s=e;break}}return s}{let t=this.getClusterVertexIterator(e);return t!==G.n?this.getVertexFromVertexIterator(t):G.n}}isBreakNode(e){return this.hasClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,S.enumSegmentParentageBreakNode)}setBreakNode(e,t){(0,I.g)(-1!==this.m_clusterBreakNodeIndex),t?this.setClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,S.enumSegmentParentageBreakNode):this.clearClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,S.enumSegmentParentageBreakNode)}isStrongPathNode(e){return this.hasClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,S.enumPathBreakNode)}
1setStrongPathNode(e,t){if(-1===this.m_clusterBreakNodeIndex){if(!t)return;this.m_clusterBreakNodeIndex=this.createUserIndexForClusters()}t?this.setClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,S.enumPathBreakNode):this.clearClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,S.enumPathBreakNode)}getSegmentParentage(e){if(-1===this.m_segmentParentageIndex)return -1;let t=this.getHalfEdgeUserIndex(e,this.m_segmentParentageIndex);return t>=0?t:-1}isCrossroadAhead(e){let t=this.getHalfEdgeNext(e);if(this.isStrongPathNode(this.getHalfEdgeOrigin(t)))return!0;let s=this.getHalfEdgeTwin(t),i=this.getHalfEdgeNext(s);return e!==this.getHalfEdgeTwin(i)}isCrossroadBehind(e){return(0,I.g)(0),!1}getHalfEdgeConnector(e,t){let s=this.getClusterHalfEdge(e);if(s===G.n)return G.n;let i=s,r=G.n,n=G.n;do{if(this.getHalfEdgeTo(i)===t)return i;if(r===G.n){if((r=this.getClusterHalfEdge(t))===G.n)return G.n;n=r}if(this.getHalfEdgeTo(n)===e)return this.getHalfEdgeTwin(n);i=this.getHalfEdgeNext(this.getHalfEdgeTwin(i)),n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(i!==s&&n!==r);return G.n}querySegmentXY(e,t){if(-1!==this.m_segmentIndexHe){let s=this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe);if(-1!==s){if(-2!==s){let e=this.m_shape.getSegmentFromIndex(s);t.copyFrom(e,!0)}else{s=this.getHalfEdgeUserIndex(this.getHalfEdgeTwin(e),this.m_segmentIndexHe);let i=this.m_shape.getSegmentFromIndex(s);t.copyFrom(i,!0),t.get().reverse()}return}}t.createLine();let s=t.get(),i=b.P.getNAN();this.getHalfEdgeFromXY(e,i),s.setStartXY(i),this.getHalfEdgeToXY(e,i),s.setEndXY(i)}isCurveEdge(e){return -1!==this.m_segmentIndexHe&&-1!==this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe)}compareEdgeAnglesCurveHelper_(e,t,s){let i=new G.S,r=new G.S;this.querySegmentXY(e,i),this.querySegmentXY(t,r);let n=i.get(),a=r.get();if(n.equals(a))return 0;let o=new b.P;this.getHalfEdgeFromXY(e,o);let l=new b.P;this.getHalfEdgeToXY(e,l);let h=new b.P;return this.getHalfEdgeToXY(t,h),(0,I.g)(!l.isEqualPoint2D(h)),(0,G.I)(n,a)}compareEdgeAnglesHelper_(e,t,s){if(e===t)return 0;if(this.isHalfEdgeCurve(e)||this.isHalfEdgeCurve(t))return this.compareEdgeAnglesCurveHelper_(e,t,s);let i=b.P.getNAN();this.getHalfEdgeToXY(e,i);let r=b.P.getNAN();if(this.getHalfEdgeToXY(t,r),i.isEqualPoint2D(r))return 0;let n=b.P.getNAN();this.getHalfEdgeFromXY(e,n);let a=b.P.getNAN();a.setSub(i,n);let o=b.P.getNAN();return(o.setSub(r,n),!s||o.y>=0&&a.y>0)?b.P.compareVectors(a,o):0}compareEdgeAngles_(e,t){return this.compareEdgeAnglesHelper_(e,t,!1)}compareEdgeAnglesForPair_(e,t){return this.compareEdgeAnglesHelper_(e,t,!0)}compareEdgeAngles3D_(e,t){return(0,I.g)(0),0}compareEdgeAnglesForPair3D_(e,t){return(0,I.g)(0),0}dbgDumpChains_(){}dbgDumpChainToPolygon_(e,t){}deleteEdgeInternal_(e){let t=this.getHalfEdgeChain(e),s=this.getHalfEdgeTwin(e),i=this.getHalfEdgeChain(s);(0,I.g)(i===t),(0,I.g)(e===this.getHalfEdgeNext(s)||s===this.getHalfEdgeNext(e));let r=this.getHalfEdgeNext(e);r===s&&(r=this.getHalfEdgeNext(r))===e&&(r=G.n);let n=this.getChainIndex_(t);Number.isNaN(this.m_chainAreas.read(n))||(this.setChainArea_(t,NaN),this.setChainPerimeter_(t,NaN));let a=this.getChainHalfEdge(t);a!==e&&a!==s||this.setChainHalfEdge_(t,r),this.updateVertexToHalfEdgeConnection_(e,!0),this.deleteEdgeImpl_(e)}getFirstUnvisitedHalfEdgeOnCluster_(e,t,s){let i=t!==G.n?t:this.getClusterHalfEdge(e);if(i===G.n)return G.n;let r=i;for(;;){if(1!==this.getHalfEdgeUserIndex(i,s))return i;let e=this.getHalfEdgeNext(this.getHalfEdgeTwin(i));if(e===r)return G.n;i=e}}removeSpikes_(){let e=!1,t=this.createUserIndexForHalfEdges();for(let s=this.getFirstCluster();s!==G.n;s=this.getNextCluster(s)){let i=G.n;for(;;){let r=this.getFirstUnvisitedHalfEdgeOnCluster_(s,i,t);if(r===G.n)break;i=this.getHalfEdgeNext(this.getHalfEdgeTwin(r));let n=r;for(;;){let s=this.getHalfEdgeNext(n),a=this.getHalfEdgePrev(n),o=this.getHalfEdgeTwin(n);if(a===o){if(this.deleteEdgeInternal_(n),e=!0,i!==n&&i!==o||(i=G.n),n===r||a===r){if(n===(r=s)||a===r)break;n=s;continue}}else this.setHalfEdgeUserIndex(n,t,1);if((n=s)===r)break}}}return this.deleteUserIndexForHalfEdges(t),e}progress_(e,t=!1){}newCluster_(){let e=this.m_clusterData.newElement();return this.m_clusterData.setField(e,1,0),e}newHalfEdgePair_(){let e=this.m_halfEdgeData.newElement();this.m_halfEdgeData.setField(e,2,0),this.m_halfEdgeData.setField(e,3,0);let t=this.m_halfEdgeData.newElement();return this.m_halfEdgeData.setField(t,2,0),this.m_halfEdgeData.setField(t,3,0),this.setHalfEdgeTwin_(e,t),this.setHalfEdgeTwin_(t,e),e}newChain_(){let e=this.m_chainData.newElement();return this.m_chainData.setField(e,2,0),e}deleteChain_(e){return(0,I.g)(0),0}getClusterIndex_(e){return this.m_clusterData.elementToIndex(e)}setClusterVertexIterator_(e,t){this.m_clusterData.setField(e,7,t)}setClusterHalfEdge_(e,t){this.m_clusterData.setField(e,2,t)}setClusterParentage_(e,t){this.m_clusterData.setField(e,1,t)}setPrevCluster_(e,t){this.m_clusterData.setField(e,3,t)}setNextCluster_(e,t){this.m_clusterData.setField(e,4,t)}setClusterVertexIndex_(e,t){this.m_clusterData.setField(e,5,t)}getClusterVertexIndex_(e){return this.m_clusterData.getField(e,5)}setClusterChain_(e,t){this.m_clusterData.setField(e,6,t)}addClusterToExteriorChain_(e,t){this.setClusterChain_(t,e)}getHalfEdgeIndex_(e){return this.m_halfEdgeData.elementToIndex(e)}setHalfEdgeOrigin_(e,t){this.m_halfEdgeData.setField(e,1,t)}setHalfEdgeTwin_(e,t){this.m_halfEdgeData.setField(e,4,t)}setHalfEdgePrev_(e,t){this.m_halfEdgeData.setField(e,5,t)}setHalfEdgeNext_(e,t){this.m_halfEdgeData.setField(e,6,t)}setHalfEdgeChain_(e,t){this.m_halfEdgeData.setField(e,2,t)}setHalfEdgeParentage_(e,t){this.m_halfEdgeData.setField(e,3,t)}getHalfEdgeParentageMask_(e){return this.m_halfEdgeData.getField(e,3)}setHalfEdgeVertexIterator_(e,t){this.m_halfEdgeData.setField(e,7,t)}updateVertexToHalfEdgeConnectionHelper_(e,t){let s=t?G.n:e;for(let t=this.getHalfEdgeVertexIterator(e);t!==G.n;t=this.incrementVertexIterator(t)){let e=this.getVertexFromVertexIterator(t);this.m_shape.setUserIndex(e,this.m_halfEdgeIndex,s)}}updateVertexToHalfEdgeConnection_(e,t){e!==G.n&&(this.updateVertexToHalfEdgeConnectionHelper_(e,t),this.updateVertexToHalfEdgeConnectionHelper_(this.getHalfEdgeTwin(e),t))}getChainIndex_(e){return this.m_chainData.elementToIndex(e)}setChainHalfEdge_(e,t){this.m_chainData.setField(e,1,t)}setChainParentage_(e,t){this.m_chainData.setField(e,2,t)}setChainParent_(e,t){this.m_chainData.setField(e,3,t);let s=this.getChainFirstIsland(t);this.setChainNextInParent_(e,s),this.setChainFirstIsland_(t,e)}setChainFirstIsland_(e,t){this.m_chainData.setField(e,4,t)}setChainNextInParent_(e,t){this.m_chainData.setField(e,5,t)}setChainPrev_(e,t){this.m_chainData.setField(e,6,t)}setChainNext_(e,t){this.m_chainData.setField(e,7,t)}setChainArea_(e,t){let s=this.getChainIndex_(e);this.m_chainAreas.write(s,t)}setChainPerimeter_(e,t){let s=this.getChainIndex_(e);this.m_chainPerimeters.write(s,t)}updateChainAreaAndPerimeter_(e){let t=this.m_shape.hasCurves(),s=new b.K(0),i=new b.K(0),r=this.getChainHalfEdge(e),n=b.P.getNAN(),a=b.P.getNAN(),o=b.P.getNAN();this.getHalfEdgeFromXY(r,n),a.setCoordsPoint2D(n);let l=r;do this.getHalfEdgeToXY(l,o),t&&this.isCurveEdge(l)||i.pe(b.P.distance(a,o)),this.getHalfEdgeChain(this.getHalfEdgeTwin(l))!==e&&s.pe((o.x-n.x-(a.x-n.x))*(o.y-n.y+(a.y-n.y)
1)*.5),a.setCoordsPoint2D(o),l=this.getHalfEdgeNext(l);while(l!==r);if(t){let t=new G.S;l=r;do{this.getHalfEdgeToXY(l,o);let r=this.isCurveEdge(l);if(r&&(this.querySegmentXY(l,t),i.pe(t.get().calculateLength2D())),this.getHalfEdgeChain(this.getHalfEdgeTwin(l))!==e&&r){let e=t.get().calculateArea2DHelper();s.pe(e)}l=this.getHalfEdgeNext(l)}while(l!==r)}let h=this.getChainIndex_(e);this.m_chainAreas.write(h,s.getResult()),this.m_chainPerimeters.write(h,i.getResult())}getChainTopmostEdge_(e){return(0,I.g)(0),0}planeSweepParentage_(e,t){let s=new ea(this),i=new w.T;i.setCapacity(Math.trunc(this.m_pointCount/2)),i.setComparator(s);let r=[],n=this.createUserIndexForHalfEdges(),a=null,o=b.P.getNAN();for(let l=this.getFirstCluster();l!==G.n;l=this.getNextCluster(l)){this.progress_(t);let h=this.getClusterHalfEdge(l);if(h!==G.n){if(r.length=0,!this.tryOptimizedInsertion_(i,n,r,l,h)){this.queryXY(l,o),s.setY(o.y);let e=h;do{let t=this.getHalfEdgeUserIndex(e,n);-1!==t&&(i.deleteNode(t),this.setHalfEdgeUserIndex(e,n,w.S.impossibleIndex2())),e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(h!==e);e=h;do{if(-1===this.getHalfEdgeUserIndex(e,n)){let t=i.addElement(e);r.push(t)}e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(h!==e)}for(let t=r.length-1;t>=0;t--){let s=r[t],a=i.getElement(s),o=this.getHalfEdgeTwin(a);this.setHalfEdgeUserIndex(o,n,s),this.planeSweepParentagePropagateParentage_(i,s,e)}}else if(this.getClusterChain(l)===G.n){null===a&&(a=new eo(this)),this.queryXY(l,o),a.setPointXY(o);let e=i.searchLowerBound(a),t=this.m_universeChain;if(-1!==e){let s=i.getElement(e);this.getHalfEdgeChain(s)===this.getHalfEdgeChain(this.getHalfEdgeTwin(s))&&(s=this.getLeftSkipPolylines_(i,e)),s!==G.n&&(t=this.getHalfEdgeChain(s))}this.addClusterToExteriorChain_(t,l)}}this.deleteUserIndexForHalfEdges(n)}planeSweepParentagePropagateParentage_(e,t,s){let i=e.getElement(t),r=this.getHalfEdgeChain(i);if(this.getChainParent(r)!==G.n)return;let n=this.getLeftSkipPolylines_(e,t),a=this.getHalfEdgeTwin(i),o=this.getHalfEdgeChain(a),l=this.getChainParent(r),h=this.getChainParent(o);if(n===G.n)l===G.n&&(o===r?(this.setChainParent_(o,this.m_universeChain),l=h=this.m_universeChain):(h===G.n&&(this.setChainParent_(o,this.m_universeChain),h=this.m_universeChain),this.setChainParent_(r,o),l=o));else{let e=this.getHalfEdgeChain(n);if(h===G.n){if(0>=this.getChainArea(e)){let t=this.getChainParent(e);this.setChainParent_(o,t),h=t}else this.setChainParent_(o,e),h=e;o===r&&(l=h)}}l===G.n&&(this.trySetChainParentFromTwin_(r,o),l=this.getChainParent(r)),(0,I.g)(l!==G.n),s===y.enumInputModeBuildGraph?this.propagateParentageBuildGraph_(e,t,i,n):s===y.enumInputModeSimplifyWinding?this.propagateParentageWinding_(e,t,i,n,a,r,o):s===y.enumInputModeSimplifyAlternate&&this.prop
1agateParentageAlternate_(e,t,i,n,a,r,o)}propagateParentageBuildGraph_(e,t,s,i){let r,n=t;i===G.n?(n=e.getNext(n),r=this.getHalfEdgeChain(s)):r=this.getHalfEdgeChain(i);let a=null,o=this.getChainParentage(r);for(this.m_bBuildGeometryParentageSets&&(a=this.getChainBitSet(r));-1!==n;n=e.getNext(n)){let t=e.getElement(n),s=this.getHalfEdgeTwin(t);r=this.getHalfEdgeChain(t);let i=this.getHalfEdgeChain(s);if(this.m_bBuildGeometryParentageSets){let e=this.getChainBitSet(i);(e=new er({copy:e})).assignOr(a),this.setChainBitSet_(i,e);let s=this.getChainBitSet(r),n=this.getLeftEdgeBitSet_(t),o=new er({copy:a});if(o.assignSubtract(n),o.isZero())break;(s=new er({copy:s})).assignOr(o),this.setChainBitSet_(r,s),a=s}let l=this.getChainParentage(i),h=l|o;h!==l&&this.setChainParentage_(i,h);let m=this.getChainParentage(r),g=o&~this.getHalfEdgeUserIndex(t,this.m_tmpHalfEdgeParentageIndexLeft);if(g&&(m|=g,this.setChainParentage_(r,m)),0===g)break;o=m}}propagateParentageWinding_(e,t,s,i,r,n,a){if(n===a)return;let o=this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeWindingNumberIndex);o+=this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeWindingNumberIndex);let l=0,h=[],m=[];m.push(0);for(let s=e.getFirst();s!==t;s=e.getNext(s)){let t=e.getElement(s),i=this.getHalfEdgeTwin(t),r=this.getHalfEdgeChain(t),n=this.getHalfEdgeChain(i);if(r!==n){let e=this.getHalfEdgeUserIndex(t,this.m_tmpHalfEdgeWindingNumberIndex);e+=this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeWindingNumberIndex),l+=e;let s=!1;0!==h.length&&h.at(-1)===n&&(m.pop(),h.pop(),s=!0),(0,I.g)(this.getChainParent(n)!==G.n),s&&this.getChainParent(n)===r||(m.push(l),h.push(r))}}if(l+=o,0!==h.length&&h.at(-1)===a&&(m.pop(),h.pop()),0!==l){if(0===m.at(-1)){let e=this.m_simplifiedGeometry,t=this.getGeometryID(e);this.setChainParentage_(n,t)}}else if(0!==m.at(-1)){let e=this.m_simplifiedGeometry,t=this.getGeometryID(e);this.setChainParentage_(n,t)}}propagateParentageAlternate_(e,t,s,i,r,n,a){let o=this.m_simplifiedGeometry,l=this.getGeometryID(o);if(i===G.n)this.setChainParentage_(a,this.m_universeGeomID),1&this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,l):this.setChainParentage_(n,this.m_universeGeomID);else{let e=this.getChainParentage(a);if(0===e){let e=this.getHalfEdgeChain(i),t=this.getChainParentage(e);this.setChainParentage_(a,t),1&this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,t===l?this.m_universeGeomID:l):this.setChainParentage_(n,t)}else 1&this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,e===l?this.m_universeGeomID:l):this.setChainParentage_(n,e)}}tryOptimizedInsertion_(e,t,s,i,r){let n=r,a=-1,o=G.n,l=0;do{if(2===l)return!1;let e=this.getHalfEdgeUserIndex(n,t);if(-1!==e){if(-1!==a)return!1;a=e}else{if(o!==G.n)return!1;o=n}l++,n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(r!==n);return o!==G.n&&-1!==a&&(this.setHalfEdgeUserIndex(e.getElement(a),t,w.S.impossibleIndex2()),e.setElement(a,o),s.push(a),!0)}trySetChainParentFromTwin_(e,t){let s=this.getChainArea(e);if(0===s)return!1;let i=this.getChainArea(t);if(s>0&&i<0||s<0&&i>0)return this.setChainParent_(e,t),!0;{let s=this.getChainParent(t);if(s!==G.n)return this.setChainParent_(e,s),!0}return!1}createHalfEdges_(e,t){this.m_halfEdgeIndex=this.m_shape.createUserIndex();for(let s=0,i=t.size();s<i;s++){let i=t.read(s),r=this.m_shape.getUserIndex(i,this.m_clusterIndex),n=this.m_shape.getPathFromVertex(i),a=this.m_shape.getGeometryFromPath(n),o=this.m_shape.getGeometryType(a);if((0,I.h)(o)){let t=this.m_shape.getNextVertex(i);if(t===G.n)continue;let s=this.m_shape.getUserIndex(t,this.m_clusterIndex);if(r===s)continue;let n=this.newHalfEdgePair_(),l=this.getHalfEdgeTwin(n),h=this.m_clusterVertices.newElement();this.m_clusterVertices.setField(h,0,i),this.m_clusterVertices.setField(h,1,-1),this.setHalfEdgeVertexIterator_(n,h),this.m_shape.setUserIndex(i,this.m_halfEdgeIndex,n),this.setHalfEdgeOrigin_(n,r);let m=this.getClusterHalfEdge(r);if(m===G.n)this.setClusterHalfEdge_(r,n),this.setHalfEdgePrev_(n,l),this.setHalfEdgeNext_(l,n);else{let e=this.getHalfEdgePrev(m);this.setHalfEdgePrev_(m,l),this.setHalfEdgeNext_(l,m),this.setHalfEdgeNext_(e,n),this.setHalfEdgePrev_(n,e)}this.setHalfEdgeOrigin_(l,s);let g=this.getClusterHalfEdge(s);if(g===G.n)this.setClusterHalfEdge_(s,l),this.setHalfEdgeNext_(n,l),this.setHalfEdgePrev_(l,n);else{let e=this.getHalfEdgePrev(g);this.setHalfEdgePrev_(g,n),this.setHalfEdgeNext_(n,g),this.setHalfEdgeNext_(e,l),this.setHalfEdgePrev_(l,e)}
1let u=this.getGeometryID(a);if(e===y.enumInputModeBuildGraph){let e=o===I.G.enumPolygon?u:0;if(this.setHalfEdgeUserIndex(l,this.m_tmpHalfEdgeParentageIndex,0),this.setHalfEdgeUserIndex(n,this.m_tmpHalfEdgeParentageIndex,e),this.setHalfEdgeUserIndex(l,this.m_tmpHalfEdgeParentageIndexLeft,e),this.setHalfEdgeUserIndex(n,this.m_tmpHalfEdgeParentageIndexLeft,0),this.m_bBuildGeometryParentageSets){let e=new er,t=this.m_shape.getGeometryUserIndex(a,this.m_geometryIDIndex);e.setBit(t),this.setEdgeBitSet_(n,e),this.setEdgeBitSet_(l,null),this.setLeftEdgeBitSet_(l,e),this.setLeftEdgeBitSet_(n,null)}}else if(e===y.enumInputModeSimplifyWinding){let e=this.m_shape.getXY(i),s=this.m_shape.getXY(t),r=0,a=0;0>e.compare(s)?r=1:a=-1,this.setHalfEdgeUserIndex(n,this.m_tmpHalfEdgeWindingNumberIndex,r),this.setHalfEdgeUserIndex(l,this.m_tmpHalfEdgeWindingNumberIndex,a)}else e===y.enumInputModeSimplifyAlternate&&(this.setHalfEdgeUserIndex(n,this.m_tmpHalfEdgeOddEvenNumberIndex,1),this.setHalfEdgeUserIndex(l,this.m_tmpHalfEdgeOddEvenNumberIndex,1));let _=o===I.G.enumPolygon?em.c_EdgeBitMask:0;this.setHalfEdgeParentage_(n,u|_),this.setHalfEdgeParentage_(l,u|_)}}if(this.m_shape.hasCurves()){this.m_segmentIndexHe=this.createUserIndexForHalfEdges();for(let e=0,s=t.size();e<s;e++){let s=t.read(e);if(this.m_shape.getSegment(s)){let e=this.m_shape.getUserIndex(s,this.m_halfEdgeIndex);e!==G.n&&(this.setHalfEdgeUserIndex(e,this.m_segmentIndexHe,this.m_shape.getVertexIndex(s)),this.setHalfEdgeUserIndex(this.getHalfEdgeTwin(e),this.m_segmentIndexHe,-2))}}}}mergeVertexListsOfEdges_(e,t){{let s=this.getHalfEdgeVertexIterator(t);if(s!==G.n){let i=this.getHalfEdgeVertexIterator(e);this.m_clusterVertices.setField(s,1,i),this.setHalfEdgeVertexIterator_(e,s),this.setHalfEdgeVertexIterator_(t,G.n)}}let s=this.getHalfEdgeTwin(e),i=this.getHalfEdgeTwin(t);{let e=this.getHalfEdgeVertexIterator(i);if(e!==G.n){let t=this.getHalfEdgeVertexIterator(s);this.m_clusterVertices.setField(e,1,t),this.setHalfEdgeVertexIterator_(s,e),this.setHalfEdgeVertexIterator_(i,G.n)}}if(-1!==this.m_segmentIndexHe){let r=this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe);if(-1!==r){if(-2===r){let s=this.getHalfEdgeUserIndex(t,this.m_segmentIndexHe);this.setHalfEdgeUserIndex(e,this.m_segmentIndexHe,s)}if(-2===(r=this.getHalfEdgeUserIndex(s,this.m_segmentIndexHe))){let e=this.getHalfEdgeUserIndex(i,this.m_segmentIndexHe);this.setHalfEdgeUserIndex(s,this.m_segmentIndexHe,e)}}}}sortHalfEdgesByAngle_(e){let t=[];for(let s=this.getFirstCluster();s!==G.n;s=this.getNextCluster(s)){t.length=0;let i=this.getClusterHalfEdge(s);if(i!==G.n){let r=i;do t.push(r),r=this.getHalfEdgeNext(this.getHalfEdgeTwin(r));while(r!==i);if(t.length>1){let r=!0;t.length>2?(t.sort((e,t)=>this.compareEdgeAngles_(e,t)),t.push(t[0])):this.compareEdgeAnglesForPair_(t[0],t[1])>0?t[1]=(0,b.c)(t[0],t[0]=t[1]):r=!1;let n=t[0],a=n,o=this.getHalfEdgeTo(a),l=this.getHalfEdgeTwin(a),h=G.n;for(let s=1,i=t.length;s<i;s++){let i=t[s],r=this.getHalfEdgeTwin(i),m=this.getHalfEdgeOrigin(r);if(m!==o||i===a)this.updateVertexToHalfEdgeConnection_(h,!1),h=G.n,a=i,o=m,l=r;else{if(e===y.enumInputModeBuildGraph){let e=this.getHalfEdgeParentageMask_(a)|this.getHalfEdgeParentageMask_(i);if(this.setHalfEdgeParentage_(a,e),this.setHalfEdgeParentage_(l,e),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex,this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex)|this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeParentageIndex)),this.setHalfEdgeUserIndex(l,this.m_tmpHalfEdgeParentageIndex,this.getHalfEdgeUserIndex(l,this.m_tmpHalfEdgeParentageIndex)|this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeParentageIndex)),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndexLeft,this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndexLeft)|this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeParentageIndexLeft)),this.setHalfEdgeUserIndex(l,this.m_tmpHalfEdgeParentageIndexLeft,this.getHalfEdgeUserIndex(l,this.m_tmpHalfEdgeParentageIndexLeft)|this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeParentageIndexLeft)),this.m_bBuildGeometryParentageSets){let e,t,s;e=this.getEdgeBitSet_(a),t=this.getEdgeBitSet_(i),(s=new er({copy:e})).assignOr(t),this.setEdgeBitSet_(a,s),e=this.getEdgeBitSet_(l),t=this.getEdgeBitSet_(r),(s=new er({copy:e})).assignOr(t),this.setEdgeBitSet_(l,s),e=this.getLeftEdgeBitSet_(a),t=this.getLeftEdgeBitSet_(i),(s=new er({copy:e})).assignOr(t),this.setLeftEdgeBitSet_(a,s),e=this.getLeftEdgeBitSet_(l),t=this.getLeftEdgeBitSet_(r),(s=new er({copy:e})).assignOr(t),this.setLeftEdgeBitSet_(l,s)}}else if(-1!==this.m_tmpHalfEdgeWindingNumberIndex){let e=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeWindingNumberIndex)+this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeWindingNumberIndex),t=this.getHalfEdgeUserIndex(l,this.m_tmpHalfEdgeWindingNumberIndex)+this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeWindingNumberIndex);this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeWindingNumberIndex,e),this.setHalfEdgeUserIndex(l,this.m_tmpHalfEdgeWindingNumberIndex,t)}else if(-1!==this.m_tmpHalfEdgeOddEvenNumberIndex){let e=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeOddEvenNumberIndex)+this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeOddEvenNumberIndex),t=this.getHalfEdgeUserIndex(l,this.m_tmpHalfEdgeOddEvenNumberIndex)+this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeOddEvenNumberIndex);this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeOddEvenNumberIndex,e),this.setHalfEdgeUserIndex(l,this.m_tmpHalfEdgeOddEvenNumberIndex,t)}this.mergeVertexListsOfEdges_(a,i),this.deleteEdgeImpl_(i),h=a,t[s]=G.n,i===n&&(t[0]=G.n,n=G.n)}}if(this.updateVertexToHalfEdgeConnection_(h,!1),h=G.n,!r){n=G.n;for(let e=0,s=t.length;e<s;e++){let s=t[e];if(s!==G.n){n=s;break}}i!==n&&this.setClusterHalfEdge_(s,n);continue}n=G.n;for(let e=0,s=t.length;e<s;e++){let s=t[e];if(s===G.n)continue;if(n===G.n){a=n=s,o=this.getHalfEdgeTo(a),l=this.getHalfEdgeTwin(a);continue}if(s===a)continue;let i=this.getHalfEdgeTwin(s),r=this.getHalfEdgeOrigin(i);this.setHalfEdgeNext_(l,s),this.setHalfEdgePrev_(s,l),a=s,o=r,l=i}this.setClusterHalfEdge_(s,n)}}}}sortHalfEdgesByAngle3D_(e){(0,I.g)(0)}buildChains_(e){this.m_universeChain=this.newChain_(),this.setChainHalfEdge_(this.m_universeChain,G.n);let t=this.m_universeChain,s=this.createUserIndexForHalfEdges();for(let e=this.getFirstCluster();e!==G.n;e=this.getNextCluster(e)){let i=this.getClusterHalfEdge(e);if(i!==G.n){let e=i;
1do{if(1!==this.getHalfEdgeUserIndex(e,s)){let i=this.newChain_();this.setChainHalfEdge_(i,e),this.setChainPrev_(i,t),this.setChainNext_(t,i);let r=null;this.m_bBuildGeometryParentageSets&&(r=new er),t=i;let n=0,a=e;do -1!==this.m_tmpHalfEdgeParentageIndex&&(n|=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex)),this.m_bBuildGeometryParentageSets&&r.assignOr(this.getEdgeBitSet_(a)),this.setHalfEdgeChain_(a,i),this.setHalfEdgeUserIndex(a,s,1),a=this.getHalfEdgeNext(a);while(a!==e);this.m_bBuildGeometryParentageSets&&this.setChainBitSet_(i,r),this.setChainParentage_(i,n)}e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(e!==i)}}this.m_chainAreas=new w.D(this.m_chainData.size(),NaN),this.m_chainPerimeters=new w.D(this.m_chainData.size(),NaN),this.setChainArea_(this.m_universeChain,1/0),this.setChainPerimeter_(this.m_universeChain,1/0),this.deleteUserIndexForHalfEdges(s)}simplify_(e){(0,I.g)(0)}simplifyAlternate_(){(0,I.g)(0)}simplifyWinding_(){(0,I.g)(0)}setEditShapeImpl_(e,t,s,i,r){this.removeShape(),this.m_bBuildChains=r,this.m_shape=e,this.m_geometryIDIndex=this.m_shape.createGeometryUserIndex();this.m_shape.getTotalPointCount();if(s)for(let e=0,t=s.length;e<t;e++)this.m_shape.getPointCount(s[e]);let n=new w.A(0),a=0,o=0;{let e=null!=s?s[0]:this.m_shape.getFirstGeometry(),t=1;for(;e!==G.n;){this.m_shape.setGeometryUserIndex(e,this.m_geometryIDIndex,o++);for(let t=this.m_shape.getFirstPath(e);t!==G.n;t=this.m_shape.getNextPath(t)){let e=this.m_shape.getFirstVertex(t);for(let s=0,i=this.m_shape.getPathSize(t);s<i;s++)n.add(e),e=this.m_shape.getNextVertex(e)}(0,I.e)(this.m_shape.getGeometryType(e))||(a+=this.m_shape.getPathCount(e)),null!=s?(e=t<s.length?s[t]:G.n,t++):e=this.m_shape.getNextGeometry(e)}}this.m_universeGeomID=1<<Math.min(o,31),this.m_pointCount=n.size(),this.m_shape.sortVerticesSimpleByY(n,0,this.m_pointCount),this.m_clusterVertices.setCapacity(this.m_pointCount),this.progress_(i,!0),this.m_clusterData.setCapacity(this.m_pointCount+10),this.m_halfEdgeData.setCapacity(2*this.m_pointCount+32),this.m_chainData.setCapacity(Math.max(32,a)),this.m_clusterIndex=this.m_shape.createUserIndex();let l=b.P.getNAN(),h=0,m=b.P.getNAN();for(let e=0;e<=this.m_pointCount;e++){if(e<this.m_pointCount){let t=n.read(e);this.m_shape.queryXY(t,m)}else m.setNAN();if(!l.isEqualPoint2D(m)){if(h<e){let t=this.newCluster_(),s=G.n,i=-1;for(let r=h;r<e;r++){i=n.read(r),this.m_shape.setUserIndex(i,this.m_clusterIndex,t);let e=this.m_clusterVertices.newElement();this.m_clusterVertices.setField(e,0,i),this.m_clusterVertices.setField(e,1,s),s=e;let a=this.m_shape.getPathFromVertex(i),o=this.m_shape.getGeometryFromPath(a),l=this.getGeometryID(o);this.setClusterParentage_(t,this.getClusterParentage(t)|l)}this.setClusterVertexIterator_(t,s),this.setClusterVertexIndex_(t,this.m_shape.getVertexIndex(i)),this.m_lastCluster!==G.n&&this.setNextCluster_(this.m_lastCluster,t),this.setPrevCluster_(t,this.m_lastCluster),this.m_lastCluster=t,this.m_firstCluster===G.n&&(this.m_firstCluster=t)}h=e,l.setCoordsPoint2D(m)}}if(this.m_shape.hasSegmentParentage()){-1===this.m_clusterBreakNodeIndex&&(this.m_clusterBreakNodeIndex=this.createUserIndexForClusters());for(let e=0;e<this.m_pointCount;e++){let t=n.read(e);if(this.m_shape.getSegmentParentageBreakVertex(t)){let e=this.getClusterFromVertex(t);this.setBreakNode(e,!0)}}}this.progress_(i,!0);{let e=null!=s?s[0]:this.m_shape.getFirstGeometry(),t=1;for(;e!==G.n;){for(let t=this.m_shape.getFirstPath(e);t!==G.n;t=this.m_shape.getNextPath(t)){if(this.m_shape.isStrongPathStart(t)){let e=this.m_shape.getFirstVertex(t),s=this.getClusterFromVertex(e);this.setStrongPathNode(s,!0)}if(this.m_shape.isStrongPathEnd(t)){let e=this.m_shape.isClosedPath(t)?this.m_shape.getFirstVertex(t):this.m_shape.getLastVertex(t),s=this.getClusterFromVertex(e);this.setStrongPathNode(s,!0)}}null!=s?(e=t<s.length?s[t]:G.n,t++):e=this.m_shape.getNextGeometry(e)}}(t===y.enumInputModeBuildGraph&&(this.m_tmpHalfEdgeParentageIndex=this.createUserIndexForHalfEdges(),this.m_tmpHalfEdgeParentageIndexLeft=this.createUserIndexForHalfEdges()),t===y.enumInputModeSimplifyWinding&&(this.m_tmpHalfEdgeWindingNumberIndex=this.createUserIndexForHalfEdges()),t===y.enumInputModeSimplifyAlternate&&(this.m_tmpHalfEdgeOddEvenNumberIndex=this.createUserIndexForHalfEdges()),this.createHalfEdges_(t,n),this.dbgNavigate_(),this.sortHalfEdgesByAngle_(t),Number.isNaN(this.m_checkDirtyPlanesweepTolerance)||this.checkStructureAfterDirtySweep_())?(this.buildChains_(t),-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),this.m_bBuildChains&&this.planeSweepParentage_(t,i),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),this.dbgChkChainParents_(),this.dbgDumpChains_(),this.mergeSegmentParentage_(),this.dbgNavigate_(),this.dbgDumpChains_()):this.m_bDirtyCheckFailed=!0,this.cleanSetEditShapeImpl_()}setEditShapeImpl3D_(e,t,s,i,r){(0,I.g)(0)}cleanSetEditShapeImpl_(){-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),-1!==this.m_tmpHalfEdgeWindingNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeWindingNumberIndex),this.m_tmpHalfEdgeWindingNumberIndex=-1),-1!==this.m_tmpHalfEdgeOddEvenNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeOddEvenNumberIndex),this.m_tmpHalfEdgeOddEvenNumberIndex=-1)}cleanSetEditShapeImpl3D_(){(0,I.g)(0)}dbgNavigate_(){}dbgChkChainParents_(){}deleteEdgeImpl_(e){let t=this.getHalfEdgeNext(e),s=this.getHalfEdgePrev(e),i=this.getHalfEdgeTwin(e),r=this.getHalfEdgeNext(i),n=this.getHalfEdgePrev(i);t!==i&&(this.setHalfEdgeNext_(n,t),this.setHalfEdgePrev_(t,n)),s!==i&&(this.setHalfEdgeNext_(s,r),this.setHalfEdgePrev_(r,s));let a=this.getHalfEdgeOrigin(e);this.getClusterHalfEdge(a)===e&&(r!==e?this.setClusterHalfEdge_(a,r):this.setClusterHalfEdge_(a,G.n));let o=this.getHalfEdgeOrigin(i);this.getClusterHalfEdge(o)===i&&(t!==i?this.setClusterHalfEdge_(o,t):this.setClusterHalfEdge_(o,G.n)),this.m_halfEdgeData.deleteElement(e),this.m_halfEdgeData.deleteElement(i)}getLeftSkipPolylines_(e,t){let s=t;for(;;){if(-1===(s=e.getPrev(s)))return G.n;{let t=e.getElement(s);if(this.getHalfEdgeChain(t)!==this.getHalfEdgeChain(this.getHalfEdgeTwin(t)))return t}}}checkStructureAfterDirtySweep_(){let e=(0,b.a)(this.m_checkDirtyPlanesweepTolerance),t=new b.P,s=new b.P,i=new b.P,r=new b.P,n=new b.P;for(let a=this.getFirstCluster();a!==G.n;a=this.getNextCluster(a)){let o=this.getClusterHalfEdge(a);if(o!==G.n){let a=o;this.getHalfEdgeFromXY(a,t),this.getHalfEdgeToXY(a,s),i.setSub(s,t);let l=i.sqrLength();do{let o=a;if((a=this.getHalfEdgeNext(this.getHalfEdgeTwin(a)))!==o){this.getHalfEdgeToXY(a,r),n.setSub(r,t);let o=n.sqrLength(),h=n.crossProduct(i),m=h*h/(o*l);
1if(Math.min(o,l)*m<=e&&n.dotProduct(i)>=0)return!1;i.assign(n),l=o,s.assign(r)}}while(a!==o)}}return!0}extractPolygonPathFromChain_(e,t,s,i,r){let n=this.m_shape.hasSegmentParentage(),a=this.getChainHalfEdge(s),o=a,l=G.n,h=new w.P;do{let a=this.getHalfEdgeTwin(o);if(this.getHalfEdgeChain(a)!==s){let s,a=G.n,m=this.getHalfEdgeOrigin(o);if(i===G.n){let e=this.getClusterVertexIterator(m);a=this.getVertexFromVertexIterator(e)}else for(let e=this.getClusterVertexIterator(m);e!==G.n;e=this.incrementVertexIterator(e)){let t=this.getVertexFromVertexIterator(e);a===G.n&&(a=t);let s=this.m_shape.getPathFromVertex(t);if(this.m_shape.getGeometryFromPath(s)===i){a=t;break}}if(l===G.n&&(l=e.insertPath(t,G.n),e.setClosedPath(l,!0)),this.m_shape===e?s=e.addVertex(l,a):(this.m_shape.queryPoint(a,h),s=e.addPoint(l,h)),this.isHalfEdgeCurve(o)&&(this.querySegmentXY(o,r),e.setSegmentToIndex(e.getVertexIndex(s),r.get().clone())),n){let t=this.getSegmentParentage(o);e.setSegmentParentageAndBreak(s,t,this.isBreakNode(m))}}o=this.getHalfEdgeNext(o)}while(o!==a)}mergeSegmentParentage_(){if(!this.m_shape.hasSegmentParentage())return;(0,I.g)(-1!==this.m_clusterBreakNodeIndex),(0,I.g)(-1===this.m_segmentParentageIndex);for(let e=this.getFirstCluster();e!==G.n;e=this.getNextCluster(e)){let t=0,s=this.getClusterHalfEdge(e);if(s!==G.n){let e=s;do t++,e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e));while(e!==s&&t<3)}2!==t&&this.setBreakNode(e,!0)}let e=[],t=[];this.m_segmentParentageIndex=this.createUserIndexForHalfEdges();let s=this.createUserIndexForHalfEdges();for(let i=this.getFirstCluster();i!==G.n;i=this.getNextCluster(i)){let r=this.getClusterHalfEdge(i);if(r!==G.n){let i=!1,n=r;do{let r=n;for(;-1===this.getHalfEdgeUserIndex(r,s);){let n=this.getHalfEdgeNext(r),a=this.getHalfEdgeTwin(r);eh(this,r,t);let o=t.at(-1).parentage;if(!i){let t=this.getHalfEdgeOrigin(r);if(!this.isBreakNode(t)){let t=this.getHalfEdgePrev(r);r!==t&&(eh(this,t,e),i=!0)}}if(i&&!function(e,t){let s=e.length;if(s!==t.length)return!1;let i=e[0].parentage;if(i!==t[0].parentage)return!1;if(-1===i)return!0;for(let i=1;i<s;++i)if(e[i].parentage!==t[i].parentage)return!1;return!0}(t,e)){let e=this.getHalfEdgeOrigin(r);this.setBreakNode(e,!0)}e=(0,b.c)(t,t=e),i=!0;let l=this.getHalfEdgeOrigin(n);this.isBreakNode(l)&&(i=!1),this.setHalfEdgeUserIndex(r,this.m_segmentParentageIndex,o),this.setHalfEdgeUserIndex(a,this.m_segmentParentageIndex,o),this.setHalfEdgeUserIndex(r,s,1),this.setHalfEdgeUserIndex(a,s,1),r=n}n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(n!==r)}}this.deleteUserIndexForHalfEdges(s)}registerNewBitSet(e){return(null===this.m_uniqueBitSets&&(this.m_uniqueBitSets=new en(e=>e.getHashCode(),(e,t)=>e.equals(t)),this.m_uniqueBitSets.add(this.getEmptySet())),null===e)?this.getEmptySet():this.m_uniqueBitSets.has(e)?this.m_uniqueBitSets.get(e):(this.m_uniqueBitSets.add(e),e)}getLeftEdgeBitSet_(e){let t=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft);return(0,I.g)(t>=0),(0,I.g)(this.m_edgeBitSets.at(t)),this.m_edgeBitSets.at(t)}getEdgeBitSet_(e){let t=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndex);return(0,I.g)(t>=0),this.m_edgeBitSets.at(t)}setEdgeBitSet_(e,t){(0,I.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_edgeBitSetIndex&&(this.m_edgeBitSetIndex=this.createUserIndexForHalfEdges());let s=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndex);-1!==s?this.m_edgeBitSets[s]=t:(this.setHalfEdgeUserIndex(e,this.m_edgeBitSetIndex,this.m_edgeBitSets.length),this.m_edgeBitSets.push(t))}setLeftEdgeBitSet_(e,t){(0,I.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_edgeBitSetIndexLeft&&(this.m_edgeBitSetIndexLeft=this.createUserIndexForHalfEdges());let s=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft);-1!==s?this.m_edgeBitSets[s]=t:(this.setHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft,this.m_edgeBitSets.length),this.m_edgeBitSets.push(t))}setChainBitSet_(e,t){(0,I.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_chainBitSetIndex&&(this.m_chainBitSetIndex=this.createUserIndexForChains());let s=this.getChainUserIndex(e,this.m_chainBitSetIndex);-1!==s?this.m_chainBitSets[s]=t:(this.setChainUserIndex(e,this.m_chainBitSetIndex,this.m_chainBitSets.length),this.m_chainBitSets.push(t))}getEmptySet(){return this.m_emptyBitSet||(this.m_emptyBitSet=new er),this.m_emptyBitSet}deleteEdgeBitSets_(){-1!==this.m_edgeBitSetIndex&&(this.deleteUserIndexForHalfEdges(this.m_edgeBitSetIndex),this.m_edgeBitSetIndex=-1),-1!==this.m_edgeBitSetIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_edgeBitSetIndexLeft),this.m_edgeBitSetIndexLeft=-1),this.m_edgeBitSets.length=0,this.m_uniqueBitSets=null}deleteChainBitSets_(){-1!==this.m_chainBitSetIndex&&(this.deleteUserIndexForChains(this.m_chainBitSetIndex),this.m_chainBitSetIndex=-1,this.m_chainBitSets.length=0)}dbgPrintEdge_(e){}dbgVerifyEdgeSegment(e){}}em.c_EdgeParentageMask=0x7fffffff,em.c_EdgeBitMask=-0x80000000;class eg{freeNode_(e){this.m_listNodes.deleteElement(e)}newNode_(){return this.m_listNodes.newElement()}freeList_(e){this.m_lists.deleteElement(e)}newList_(){return this.m_lists.newElement()}Init_(e){(0,I.g)(0)}constructor(e){this.m_listNodes=new w.S(2),this.m_listOfLists=eg.st_nullNode(),this.m_bAllowNavigationBetweenLists=!0,void 0===e&&(e=!0),this.m_bAllowNavigationBetweenLists=e,this.m_lists=new w.S(this.m_bAllowNavigationBetweenLists?4:2)}
1createList(){let e=this.newList_();return this.m_bAllowNavigationBetweenLists&&(this.m_lists.setField(e,3,this.m_listOfLists),this.m_listOfLists!==eg.st_nullNode()&&this.m_lists.setField(this.m_listOfLists,2,e),this.m_listOfLists=e),e}deleteList(e){let t=this.getFirst(e);for(;t!==eg.st_nullNode();){let e=t;t=this.getNext(t),this.freeNode_(e)}if(this.m_bAllowNavigationBetweenLists){let t=this.m_lists.getField(e,2),s=this.m_lists.getField(e,3);t!==eg.st_nullNode()?this.m_lists.setField(t,3,s):this.m_listOfLists=s,s!==eg.st_nullNode()&&this.m_lists.setField(s,2,t)}this.freeList_(e)}reserveLists(e){this.m_lists.setCapacity(e)}addElement(e,t){this.m_lists.getField(e,0);let s=this.m_lists.getField(e,1),i=this.newNode_();return s!==eg.st_nullNode()?this.m_listNodes.setField(s,1,i):this.m_lists.setField(e,0,i),this.m_lists.setField(e,1,i),this.m_listNodes.setField(i,0,t),i}reserveNodes(e){this.m_listNodes.setCapacity(e)}deleteElementDirect(e,t,s){t!==eg.st_nullNode()?(this.m_listNodes.setField(t,1,this.m_listNodes.getField(s,1)),this.m_lists.getField(e,1)===s&&this.m_lists.setField(e,1,t)):(this.m_lists.setField(e,0,this.m_listNodes.getField(s,1)),this.m_lists.getField(e,1)===s&&this.m_lists.setField(e,1,eg.st_nullNode())),this.freeNode_(s)}deleteElementSearch(e,t){let s=-1,i=this.getFirst(e);for(;i!==t;)s=i,i=this.getNext(i);this.deleteElementDirect(e,s,t)}concatenateLists(e,t){let s=this.m_lists.getField(e,1),i=this.m_lists.getField(t,0);if(i!==eg.st_nullNode()&&(s!==eg.st_nullNode()?this.m_listNodes.setField(s,1,i):this.m_lists.setField(e,0,i),this.m_lists.setField(e,1,this.m_lists.getField(t,1))),this.m_bAllowNavigationBetweenLists){let e=this.m_lists.getField(t,2),s=this.m_lists.getField(t,3);e!==eg.st_nullNode()?this.m_lists.setField(e,3,s):this.m_listOfLists=s,s!==eg.st_nullNode()&&this.m_lists.setField(s,2,e)}return this.freeList_(t),e}getElement(e){return this.m_listNodes.getField(e,0)}getData(e){return this.getElement(e)}setElement(e,t){(0,I.g)(0)}getNext(e){return this.m_listNodes.getField(e,1)}getFirst(e){return this.m_lists.getField(e,0)}getFirstElement(e){let t=this.getFirst(e);return this.getElement(t)}static st_nullNode(){return -1}clear(){this.m_listNodes.deleteAll(!0),this.m_lists.deleteAll(!0),this.m_listOfLists=eg.st_nullNode()}isEmpty(e){return(0,I.g)(0),!1}getNodeCount(){return this.m_listNodes.size()}getListCount(){return this.m_lists.size()}getFirstList(){return this.m_listOfLists}getNextList(e){return this.m_lists.getField(e,3)}}function eu(e=-1){return{m_value:e,m_line:new G.L,m_segment:null,m_segmentInfo:new G.a1(-1),m_env:new b.E(0,0),m_dxdy:0x34fb5e3,m_bHorizontal:!1,m_bCurve:!1}}class e_ extends w.F{constructor(e,t,s){super(!0),this.m_bIntersectionDetected=!1,this.m_nonSimpleResult=new H.NonSimpleResult,this.m_tempSimpleEdge1=eu(),this.m_tempSimpleEdge2=eu(),this.m_prev1=G.n,this.m_prev2=G.n,this.m_vertex1=G.n,this.m_vertex2=G.n,this.m_currentNode=-1,this.m_prevX1=NaN,this.m_prevX2=NaN,this.m_prevY=NaN,this.m_prevX=0,this.m_sweepY=NaN,this.m_sweepX=0,this.m_ptSweep=new b.P,this.m_simpleEdgesCache=[],this.m_simpleEdgesRecycle=[],this.m_cOutstandingConstructedEdges=0,this.m_shape=e,this.m_bShapeHasSegments=this.m_shape.hasCurves(),this.m_tolerance=t,this.m_tolerance10=10*t,this.m_bIsSimple=s;const i=Math.min(7,Math.trunc(Math.min(3*e.getTotalPointCount()/2,67)));this.m_simpleEdgesCache.length=i}tryGetCachedEdge_(e){let t=this.m_simpleEdgesCache[(e&(0,b.j)())%this.m_simpleEdgesCache.length];return t&&t.m_value===e?t:null}tryDeleteCachedEdge_(e){let t=(e&(0,b.j)())%this.m_simpleEdgesCache.length,s=this.m_simpleEdgesCache[t];s&&s.m_value===e&&(this.m_simpleEdgesRecycle.push(s),this.m_simpleEdgesCache[t]=null)}tryCreateCachedEdge_(e){let t=(e&(0,b.j)())%this.m_simpleEdgesCache.length,s=this.m_simpleEdgesCache[t];return s?null:(0===this.m_simpleEdgesRecycle.length?(s=eu(),this.m_cOutstandingConstructedEdges++):s=this.m_simpleEdgesRecycle.pop(),s.m_value=e,this.m_simpleEdgesCache[t]=s,s)}initSimpleEdge_(e,t){this.m_bShapeHasSegments&&this.initSimpleEdgeHelper_(e,t)||e.m_bCurve||(this.m_shape.queryLineConnector(t,e.m_line,!0),e.m_segment=e.m_line,e.m_env.setCoordsNoNAN(e.m_line.getStartX(),e.m_line.getEndX()),e.m_env.vmax+=this.m_tolerance,e.m_line.orientBottomUp(),e.m_bHorizontal=e.m_line.getEndY()===e.m_line.getStartY(),e.m_bHorizontal||(e.m_dxdy=(e.m_line.getEndX()-e.m_line.getStartX())/(e.m_line.getEndY()-e.m_line.getStartY())))}initSimpleEdgeHelper_(e,t){if(e.m_segment=this.m_shape.getSegment(t),e.m_segmentInfo=this.m_shape.getOriginalSegmentInfo(t),e.m_bCurve=null!==e.m_segment,e.m_bCurve){let t=e.m_segment.clone();return t.orientBottomUp(),e.m_segment=t,e.m_env=e.m_segment.queryInterval(0,0),e.m_env.vmax+=this.m_tolerance,!0}return!1}compareTwoSegments_(e,t){let s=e.getStartXY(),i=e.getEndXY(),r=t.getStartXY(),n=t.getEndXY();if(this.m_ptSweep.setCoords(this.m_sweepX,this.m_sweepY),s.isEqualPoint2D(r)&&this.m_sweepY===s.y){this.m_ptSweep.assign(0>i.compare(n)?i:n);let s=e.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),r=t.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x);if(Math.abs(s-r)>this.m_tolerance)return s<r?-1:1}let a=0>s.compare(r)?r:s,o=0>i.compare(n)?i:n,l=0,h=0;for(let s=1;s<5;s++){(0,b.Q)(a,o,s/5,this.m_ptSweep);let i=e.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),r=t.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),n=Math.abs(i-r);n>l&&(l=n,h=i<r?-1:1)}return 0===h?this.errorCracking():h}compareNonHorizontal_(e,t){if(e.m_line.getStartY()===t.m_line.getStartY()&&e.m_line.getStartX()===t.m_line.getStartX())return e.m_line.getEndY()===t.m_line.getEndY()&&e.m_line.getEndX()===t.m_line.getEndX()?this.m_bIsSimple?this.errorCoincident():0:this.compareNonHorizontalUpperEnd_(e,t);if(e.m_line.getEndY()===t.m_line.getEndY()&&e.m_line.getEndX()===t.m_line.getEndX())return this.compareNonHorizontalLowerEnd_(e,t);let s=this.compareNonHorizontalLowerEnd_(e,t),i=this.compareNonHorizontalUpperEnd_(e,t);return s<0&&i<0?-1:s>0&&i>0?1:this.errorCracking()}compareHorizontal1Case1_(e,t){if(e.getEndX()>t.getEndX()){if(t.getEndX()>t.getStartX()&&t.getEndY()-t.getStartY()<2*this.m_tolerance&&e.isIntersectingPoint(t.getEndXY(),this.m_tolerance,!0))return this.errorCracking()}else if((t.getEndY()-t.getStartY())/(t.getEndX()-t.getStartX())*(e.getEndX()-e.getStartX())<this.m_tolerance10&&t.isIntersectingPoint(e.getEndXY(),this.m_tolerance,!0))return this.errorCracking();return 1}compareHorizontal1Case2_(e,t){if(e.getStartX()<t.getStartX()){if(t.getEndX()>t.getStartX()&&t.getEndY()-t.getStartY()<2*this.m_tolerance&&e.isIntersectingPoint(t.getEndXY(),this.m_tolerance,!0))return this.errorCracking()}else if((t.getEndY()-t.getStartY())/(t.getEndX()-t.getStartX())*(e.getStartX()-e.getEndX())<this.m_tolerance10&&t.isIntersectingPoint(e.getStartXY(),this.m_tolerance,!0))return this.errorCracking();return -1}compareHorizontal1Case3_(e,t){let s=b.P.getNAN();s.setSub(t.getEndXY(),t.getStartXY()),s.rightPerpendicularThis(),s.normalize();let i=b.P.getNAN();i.setSub(e.getStartXY(),t.getStartXY());let r=b.P.getNAN();r.setSub(e.getEndXY(),t.getStartXY());let n=i.dotProduct(s),a=r.dotProduct(s),o=Math.abs(n),l=Math.abs(a);if(o<l){if(o<this.m_tolerance10&&t.isIntersectingPoint(e.getStartXY(),this.m_tolerance,!0))return this.errorCracking()}else if(l<this.m_tolerance10&&t.isIntersectingPoint(e.getEndXY(),this.m_tolerance,!0))return this.errorCracking();return n<0&&a<0?-1:n>0&&a>0?1:this.errorCracking()}compareHorizontal1_(e,t){return e.getStartY()===t.getStartY()&&e.getStartX()===t.getStartX()?this.compareHorizontal1Case1_(e,t):e.getEndY()===t.getEndY()&&e.getEndX()===t.getEndX()?this.compareHorizontal1Case2_(e,t):this.compareHorizontal1Case3_(e,t)}compareHorizontal2_(e,t){return e.getEndY()===t.getEndY()&&e.getEndX()===t.getEndX()&&e.getStartY()===t.getStartY()&&e.getStartX()===t.getStartX()?this.m_bIsSimple?this.errorCoincident():0:this.errorCracking()}compareNonHorizontalLowerEnd_(e,t){let s=1;if(e.m_line.getStartY()<t.m_line.getStartY()){s=-1;let i=e;e=t,t=i}let i=e.m_line,r=t.m_line,n=i.getStartX()-r.getStartX(),a=t.m_dxdy*(i.getStartY()-r.getStartY()),o=this.m_tolerance10;return n<a-o?-s:n>a+o?s:r.isIntersectingPoint(i.getStartXY(),this.m_tolerance,!0)?this.errorCracking():n<a?-s:s}compareNonHorizontalUpperEnd_(e,t){let s=1;if(t.m_line.getEndY()<e.m_line.getEndY()){s=-1;let i=e;e=t,t=i}let i=e.m_line,r=t.m_line,n=i.getEndX()-r.getStartX(),a=t.m_dxdy*(i.getEndY()-r.getStartY()),o=this.m_tolerance10;return n<a-o?-s:n>a+o?s:r.isIntersectingPoint(i.getEndXY(),this.m_tolerance,!0)?this.errorCracking():n<a?-s:s}errorCoincident(){return this.m_bIntersectionDetected=!0,this.m_nonSimpleResult=new H.NonSimpleResult(7,this.m_vertex1,this.m_vertex2),-1}errorCracking(){return(this.m_bIntersectionDetected=!0,this.m_bIsSimple)?this.m_nonSimpleResult=new H.NonSimpleResult(6,this.m_vertex1,this.m_vertex2):(this.m_prev1=G.n,this.m_prev2=G.n,this.m_vertex1=G.n,this.m_vertex2=G.n),-1}compareSegments_(e,t,s,i){let r,n;if(s.m_env.vmax<i.m_env.vmin)return -1;if(i.m_env.vmax<s.m_env.vmin)return 1;if(!s.m_bCurve&&!i.m_bCurve){let e=+!!s.m_bHorizontal;return 0==(e|=2*!!i.m_bHorizontal)?this.compareNonHorizontal_(s,i):1===e?this.compareHorizontal1_(s.m_line,i.m_line):2===e?-1*this.compareHorizontal1_(i.m_line,s.m_line):this.compareHorizontal2_(s.m_line,i.m_line)}if(this.m_bIntersectionDetected)return -1;let a=this.m_prevY===this.m_sweepY&&this.m_prevX===this.m_sweepX;if(a&&e===this.m_prev1?r=this.m_prevX1:(r=NaN,this.m_prev1=G.n),a&&t===this.m_prev2?n=this.m_prevX2:(n=NaN,this.m_prev2=G.n),this.m_prevY=this.m_sweepY,this.m_prevX=this.m_sweepX,Number.isNaN(r)){this.m_prev1=e;let t=s.m_segment.intersectionOfYMonotonicWithAxisX(this.m_sweepY,this.m_sweepX);r=t,this.m_prevX1=t}if(Number.isNaN(n)){this.m_prev2=t;let e=i.m_segment.intersectionOfYMonotonicWithAxisX(this.m_sweepY,this.m_sweepX);n=e,this.m_prevX2=e}let o=(0,G.R)(!0,!0,s.m_segment,i.m_segment,this.m_tolerance,!0);return 0!==o?2===o?this.m_bIsSimple?this.errorCoincident():s.m_segmentInfo.equals(i.m_segmentInfo)?0:this.errorCracking():this.errorCracking():Math.abs(r-n)<=this.m_tolerance?this.compareTwoSegments_(s.m_segment,i.m_segment):r<n?-1:+(r>n)}clearIntersectionDetectedFlag(){this.m_bIntersectionDetected=!1}intersectionDetected(){return this.m_bIntersectionDetected}
1getLastComparedNode(){return this.m_currentNode}getResult(){return this.m_nonSimpleResult}setSweepY(e,t){this.m_sweepY=e,this.m_sweepX=t,this.m_prev1=G.n,this.m_prev2=G.n,this.m_vertex1=G.n,this.m_vertex2=G.n}compare(e,t,s){if(this.m_bIntersectionDetected)return -1;let i=e.getElement(s);return this.m_currentNode=s,this.compareSegments(t,t,i,i)}compareSegments(e,t,s,i){let r=this.tryGetCachedEdge_(e);null===r?this.m_vertex1===t?r=this.m_tempSimpleEdge1:(this.m_vertex1=t,null===(r=this.tryCreateCachedEdge_(e))&&(r=this.m_tempSimpleEdge1,this.m_tempSimpleEdge1.m_value=e),this.initSimpleEdge_(r,t)):this.m_vertex1=t;let n=this.tryGetCachedEdge_(s);return null===n?this.m_vertex2===i?n=this.m_tempSimpleEdge2:(this.m_vertex2=i,null===(n=this.tryCreateCachedEdge_(s))&&(n=this.m_tempSimpleEdge2,this.m_tempSimpleEdge2.m_value=s),this.initSimpleEdge_(n,i)):this.m_vertex2=i,this.compareSegments_(t,i,r,n)}onDelete(e){this.tryDeleteCachedEdge_(e)}onSet(e){this.tryDeleteCachedEdge_(e)}onEndSearch(e){this.tryDeleteCachedEdge_(e)}onAddUniqueElementFailed(e){this.tryDeleteCachedEdge_(e)}}class ep{constructor(e,t){this.m_bIntersectionDetected=!1,this.m_pointOfInterest=b.P.getNAN(),this.m_line1=new G.L,this.m_seg1=null,this.m_env=b.E.constructEmpty(),this.m_vertex1=-1,this.m_currentNode=-1,this.m_minDist=Number.MAX_VALUE,this.m_shape=e,this.m_tolerance=t}getCurrentNode(){return this.m_currentNode}clearIntersectionDetectedFlag(){this.m_bIntersectionDetected=!1,this.m_minDist=Number.MAX_VALUE}intersectionDetected(){return this.m_bIntersectionDetected}setPoint(e){this.m_pointOfInterest.assign(e)}compare(e,t){let s=e.getElement(t);return this.compareVertex(e,t,s)}compareVertex(e,t,s){let i,r=this.m_shape.getSegment(s),n=!0;if(null==r)this.m_shape.queryLineConnector(s,this.m_line1,!0),this.m_env.setCoordsNoNAN(this.m_line1.getStartX(),this.m_line1.getEndX()),r=this.m_line1,i=this.m_line1.getStartY()===this.m_line1.getEndY();else{let e=v.Envelope2D.constructEmpty();r.queryLooseEnvelope(e),e.queryIntervalX(this.m_env),i=0===e.height(),n=!1}if(this.m_pointOfInterest.x+this.m_tolerance<this.m_env.vmin)return -1;if(this.m_pointOfInterest.x-this.m_tolerance>this.m_env.vmax)return 1;if(i)return this.m_currentNode=t,this.m_bIntersectionDetected=!0,0;let a=0;if(n){(0,G.W)(this.m_line1);let e=this.m_line1.getStartXY(),t=new b.P;t.setSub(this.m_line1.getEndXY(),e),t.rightPerpendicularThis();let s=new b.P;s.setSub(this.m_pointOfInterest,e),a=t.dotProduct(s)/t.length()}else a=r.intersectionOfYMonotonicWithAxisX(this.m_pointOfInterest.y,this.m_pointOfInterest.x)-this.m_pointOfInterest.x;return a<-(10*this.m_tolerance)?-1:a>10*this.m_tolerance?1:(r.isIntersectingPoint(this.m_pointOfInterest,this.m_tolerance)&&(Math.abs(a)<this.m_minDist&&(this.m_currentNode=t,this.m_minDist=a),this.m_bIntersectionDetected=!0),a<0?-1:+(a>0))}}class ed{constructor(e,t){this.m_lists=new eg(!1),this.m_hash=t,this.m_hashBuckets=new Int32Array(e),this.m_hashBuckets.fill(ed.st_nullNode()),this.m_bitFilter=new Int32Array(10*e+31>>5)}reserveElements(e){this.m_lists.reserveLists(Math.min(this.m_hashBuckets.length,e)),this.m_lists.reserveNodes(e)}addElement(e,t){void 0===t&&(t=this.m_hash.getHash(e));let s=t%(this.m_bitFilter.length<<5);this.m_bitFilter[s>>5]|=1<<(31&s);let i=t%this.m_hashBuckets.length,r=this.m_hashBuckets[i];
1return r===eg.st_nullNode()&&(r=this.m_lists.createList(),this.m_hashBuckets[i]=r),this.m_lists.addElement(r,e)}deleteElement(e,t){void 0===t&&(t=this.m_hash.getHash(e));let s=t%this.m_hashBuckets.length,i=this.m_hashBuckets[s];i===eg.st_nullNode()&&(0,I.a)("");let r=this.m_lists.getFirst(i),n=eg.st_nullNode();for(;r!==eg.st_nullNode();){let t=this.m_lists.getData(r),a=this.m_lists.getNext(r);t===e?(this.m_lists.deleteElementDirect(i,n,r),this.m_lists.getFirst(i)===eg.st_nullNode()&&(this.m_lists.deleteList(i),this.m_hashBuckets[s]=eg.st_nullNode())):n=r,r=a}}getFirstInBucket(e){let t=e%(this.m_bitFilter.length<<5);if(!(this.m_bitFilter[t>>5]&1<<(31&t)))return eg.st_nullNode();let s=e%this.m_hashBuckets.length,i=this.m_hashBuckets[s];return i===eg.st_nullNode()?eg.st_nullNode():this.m_lists.getFirst(i)}getNextInBucket(e){return this.m_lists.getNext(e)}findNode(e){let t=this.m_hash.getHash(e),s=this.getFirstInBucket(t);for(;s!==eg.st_nullNode();){let t=this.m_lists.getData(s);if(this.m_hash.equal(t,e))return s;s=this.m_lists.getNext(s)}return eg.st_nullNode()}deleteNode(e){let t=this.getElement(e),s=this.m_hash.getHash(t)%this.m_hashBuckets.length,i=this.m_hashBuckets[s];i===eg.st_nullNode()&&(0,I.a)(""),this.m_lists.deleteElementSearch(i,e),this.m_lists.getFirst(i)===eg.st_nullNode()&&(this.m_lists.deleteList(i),this.m_hashBuckets[s]=eg.st_nullNode())}getElement(e){return this.m_lists.getData(e)}static st_nullNode(){return eg.st_nullNode()}clear(){(0,I.g)(0)}size(){return this.m_lists.getNodeCount()}dbgPrintBucketHistogram(){}}function ec(e,t,s,i,r){let n=new ey(r);return n.m_shape=e,n.m_sqrTolerance=t*t,n.m_cellSize=2*t,n.m_invCellSize=1/n.m_cellSize,n.m_geometry=s,n.m_bTrackChanges=i,n.m_bHasSegmentParentage=e.hasSegmentParentage(),n.clusterNonReciprocal()}function ef(e,t,s,i,r){let n=e-s,a=t-i;return n*n+a*a<=r}function ex(e,t,s,i,r,n){let a={pt:new b.P,weight:0,rank:0,bMerged:!1},o=s+r,l=!1,h=e.x;e.x!==t.x&&(i===n&&(h=(e.x*s+t.x*r)/o),l=!0);let m=e.y;return e.y!==t.y&&(i===n&&(m=(e.y*s+t.y*r)/o),l=!0),i!==n?i>n?(a.rank=i,a.weight=s,a.pt=e):(a.rank=n,a.weight=r,a.pt=t):(a.pt.setCoords(h,m),a.weight=o,a.rank=i),a.bMerged=l,a}function eP(e,t){let s=(0,b.a2)(e);return(0,b.Y)(s,t)}class eE{constructor(e,t,s,i,r){this.m_workPt=new b.P,this.m_shape=e,this.m_sqrTolerance=s,this.m_invCellSize=i,this.m_origin=t.clone(),this.m_hashValues=r}getHash(e){return this.m_shape.getUserIndex(e,this.m_hashValues)}calculateHashFromVertex(e){return this.m_shape.queryXY(e,this.m_workPt),eP(Math.trunc((this.m_workPt.x-this.m_origin.x)*this.m_invCellSize+.5),Math.trunc((this.m_workPt.y-this.m_origin.y)*this.m_invCellSize+.5))}equal(e,t){return(0,I.g)(0),!1}}class ey{constructor(e){this.m_origin=b.P.getNAN(),this.m_sqrTolerance=0,this.m_cellSize=0,this.m_invCellSize=0,this.m_geometry=G.n,this.m_bucketArray=(0,b.d)(4,NaN),this.m_bucketHash=(0,b.d)(4,NaN),this.m_dbgCandidateCheckCount=0,this.m_nsr=new H.NonSimpleResult,this.m_hashValues=-1,this.m_newClusters=-1,this.m_bTrackChanges=!1,this.m_bHasSegmentParentage=!1,this.m_shape=null,this.m_clusters=new eg,this.m_hashFunction=null,this.m_hashTable=null,this.m_progressCounter=0,this.m_progressTracker=e}progress_(){}collectClusterCandidates(e,t){let s=b.P.getNAN();this.m_shape.queryXY(e,s);let i=(s.x-this.m_origin.x)*this.m_invCellSize,r=(s.y-this.m_origin.y)*this.m_invCellSize,n=Math.trunc(i),a=Math.trunc(r),o=0;for(let e=0;e<=1;e+=1)for(let t=0;t<=1;t+=1){let s=eP(n+e,a+t),i=this.m_hashTable.getFirstInBucket(s);i!==ed.st_nullNode()&&(this.m_bucketArray[o]=i,this.m_bucketHash[o]=s,o++)}for(let e=o-1;e>=1;e--){let t=this.m_bucketArray[e];for(let s=e-1;s>=0;s--)if(t===this.m_bucketArray[s]){this.m_bucketHash[s]=-1,e!==--o&&(this.m_bucketHash[e]=this.m_bucketHash[o],this.m_bucketArray[e]=this.m_bucketArray[o]);break}}for(let i=0;i<o;i++)this.collectNearestNeighbourCandidates(e,this.m_bucketHash[i],s,this.m_bucketArray[i],t)}collectNearestNeighbourCandidates(e,t,s,i,r){let n=b.P.getNAN();for(let a=i;a!==ed.st_nullNode();a=this.m_hashTable.getNextInBucket(a)){let i=this.m_hashTable.getElement(a);e===i||-1!==t&&this.m_shape.getUserIndex(i,this.m_hashValues)!==t||(this.m_shape.queryXY(i,n),ef(s.x,s.y,n.x,n.y,this.m_sqrTolerance)&&r.push(a))}}
1mergeClusters(e,t,s){let i=this.m_shape.getUserIndex(e,this.m_newClusters),r=this.m_shape.getUserIndex(t,this.m_newClusters);-1===i&&(i=this.m_clusters.createList(),this.m_clusters.addElement(i,e),this.m_shape.setUserIndex(e,this.m_newClusters,i)),-1===r?this.m_clusters.addElement(i,t):this.m_clusters.concatenateLists(i,r),this.m_shape.setUserIndex(t,this.m_newClusters,w.S.impossibleIndex2());let n=this.mergeVertices(e,t);if(s){let t=this.m_hashFunction.calculateHashFromVertex(e);this.m_shape.setUserIndex(e,this.m_hashValues,t)}return n}mergeVertices(e,t){let s=b.P.getNAN();this.m_shape.queryXY(e,s);let i=b.P.getNAN();this.m_shape.queryXY(t,i);let r=this.m_shape.getRank(e),n=this.m_shape.getRank(t),a=this.m_shape.getWeight(e),o=this.m_shape.getWeight(t),l,h,m,g,u=!1;if(r===n?(l=r,h=a+o,m=s.x,s.x!==i.x&&(m=(s.x*a+i.x*o)/h,u=!0),g=s.y,s.y!==i.y&&(g=(s.y*a+i.y*o)/h,u=!0)):(r>n?(m=s.x,g=s.y,h=a,l=r):(m=i.x,g=i.y,h=o,l=n),u=!s.equals(i)),u&&(this.m_shape.setXYMonotonic(e,m,g),this.m_bTrackChanges&&this.m_shape.setGeometryModifiedWithVertex(e,!0),this.m_bHasSegmentParentage)){let s=this.m_shape.getSegmentParentageBreakVertex(e)||this.m_shape.getSegmentParentageBreakVertex(t);this.m_shape.setSegmentParentageBreakVertex(e,s),this.m_shape.setSegmentParentageBreakVertex(t,s)}return this.m_shape.setWeight(e,h),this.m_shape.setRank(e,l),u}needsClustering(){let e={stack:[],error:void 0,hasError:!1};try{(0,T.mS)(e,(0,b.h)(()=>{this.m_hashTable=null,this.m_hashFunction=null,this.m_shape.removeUserIndex(this.m_hashValues),this.m_shape.removeUserIndex(this.m_newClusters)}),!1);let t=this.m_shape.getSelectedCount(),s=this.m_shape.getEnvelope2D(this.m_progressTracker);this.m_origin.assign(s.getLowerLeft());let i=Math.max(s.height(),s.width())/((0,b.i)()-1);this.m_cellSize<i&&(this.m_cellSize=i,this.m_invCellSize=1/this.m_cellSize),this.m_clusters.clear(),this.m_clusters.reserveLists(this.m_shape.getSelectedCount()/3+1),this.m_clusters.reserveNodes(this.m_shape.getSelectedCount()/3+1),this.m_hashValues=this.m_shape.createUserIndex(),this.m_newClusters=this.m_shape.createUserIndex(),this.m_hashFunction=new eE(this.m_shape,this.m_origin,this.m_sqrTolerance,this.m_invCellSize,this.m_hashValues),this.m_hashTable=new ed(4*t/3,this.m_hashFunction),this.m_hashTable.reserveElements(this.m_shape.getSelectedCount());let r=!1;for(let e=0;e<2;e++){let t=[],s=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let i=s.next();i!==G.n;i=s.next()){let s;if(this.progress_(),!(e>0)||this.m_shape.getUserIndex(i,this.m_newClusters)!==w.S.impossibleIndex2()){if(0===e?(s=this.m_hashFunction.calculateHashFromVertex(i),this.m_shape.setUserIndex(i,this.m_hashValues,s)):s=this.m_shape.getUserIndex(i,this.m_hashValues),this.collectClusterCandidates(i,t),0!==t.length){for(let e=0,s=t.length;e<s;e++){this.progress_();let s=t[e],n=this.m_hashTable.getElement(s);if(this.m_hashTable.deleteNode(s),!this.m_shape.isEqualXY(i,n))return this.m_nsr=new H.NonSimpleResult(5,this.m_shape.getVertexIndex(i),this.m_shape.getVertexIndex(n)),r=!0;this.mergeClusters(i,n,!1)}t.length=0}0===e&&this.m_hashTable.addElement(i,s)}}}return r}catch(t){e.error=t,e.hasError=!0}finally{(0,T.hk)(e)}}clusterNonReciprocal(){let e=this.m_shape.getSelectedCount(),t=this.m_shape.getEnvelope2D(this.m_progressTracker);this.m_origin=t.getLowerLeft();let s=Math.max(t.height(),t.width())/((0,b.i)()-1);this.m_cellSize<s&&(this.m_cellSize=s,this.m_invCellSize=1/this.m_cellSize),this.m_clusters.clear(),this.m_clusters.reserveLists(Math.trunc(this.m_shape.getSelectedCount()/3+1)),this.m_clusters.reserveNodes(Math.trunc(this.m_shape.getSelectedCount()/3+1)),this.m_hashValues=this.m_shape.createUserIndex(),this.m_newClusters=this.m_shape.createUserIndex(),this.m_hashFunction=new eE(this.m_shape,this.m_origin,this.m_sqrTolerance,this.m_invCellSize,this.m_hashValues),this.m_hashTable=new ed(Math.trunc(4*e/3),this.m_hashFunction),this.m_hashTable.reserveElements(this.m_shape.getSelectedCount());let i=!1;{let e=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let t=e.next();t!==G.n;t=e.next()){this.progress_();let e=this.m_hashFunction.calculateHashFromVertex(t);this.m_shape.setUserIndex(t,this.m_hashValues,e),this.m_hashTable.addElement(t,e)}}{let e=[],t=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let s=t.next();s!==G.n;s=t.next()){if(this.m_shape.getUserIndex(s,this.m_newClusters)===w.S.impossibleIndex2())continue;let t=this.m_shape.getUserIndex(s,this.m_hashValues);this.m_hashTable.deleteElement(s,t);let r=!1;for(;this.collectClusterCandidates(s,e),0!==e.length;){let t=0;for(let i=0,r=e.length;i<r;i++){this.progress_();let n=e[i],a=this.m_hashTable.getElement(n);this.m_hashTable.deleteNode(n);let o=i+1===r;
1t|=!!this.mergeClusters(s,a,o)}if(r||=0!==t,i||=0!==t,e.length=0,!t)break}r&&(t=this.m_shape.getUserIndex(s,this.m_hashValues)),this.m_hashTable.addElement(s,t)}e.length=0}return i&&this.applyClusterPositions_(),this.m_hashTable=null,this.m_hashFunction=null,this.m_shape.removeUserIndex(this.m_hashValues),this.m_shape.removeUserIndex(this.m_newClusters),i}applyClusterPositions_(){let e=b.P.getNAN();for(let t=this.m_clusters.getFirstList();t!==eg.st_nullNode();t=this.m_clusters.getNextList(t)){let s=this.m_clusters.getFirst(t),i=this.m_clusters.getElement(s);this.m_shape.queryXY(i,e);let r=this.m_shape.getRank(i),n=this.m_shape.getWeight(i);for(s=this.m_clusters.getNext(s);s!==eg.st_nullNode();s=this.m_clusters.getNext(s)){let t=this.m_clusters.getElement(s);if(this.m_bTrackChanges?this.m_shape.isEqualXYPoint2D(t,e)||(this.m_shape.setXYMonotonicPoint2D(t,e),this.m_shape.setGeometryModifiedWithVertex(t,!0)):this.m_shape.setXYMonotonicPoint2D(t,e),this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentageBreakVertex(i)||this.m_shape.getSegmentParentageBreakVertex(t);this.m_shape.setSegmentParentageBreakVertex(i,e),this.m_shape.setSegmentParentageBreakVertex(t,e)}this.m_shape.setWeight(t,n),this.m_shape.setRank(t,r)}}}}class eS{constructor(){this.m_inputParts=[],this.m_resultParts1=[],this.m_resultParts2=[],this.m_resultSegments=[],this.m_freeSegments=[],this.m_inputSegments=[],this.m_param1=[],this.m_param2=[],this.m_tolerance=0,this.m_toleranceZ=0,this.m_point=new w.P,this.m_pointWeight=1,this.m_maxDensifyLimit=0,this.m_pointRank=0,this.m_changed1=!1,this.m_changed2=!1,this.m_adaptiveDensify=!1}clear(){this.freeAllResultSegments(),this.m_inputSegments.length=0,this.m_inputParts.length=0,this.m_resultParts1.length=0,this.m_resultParts2.length=0,this.m_param1.length=0,this.m_param2.length=0,this.m_adaptiveDensify=!1,this.m_changed1=!1,this.m_changed2=!1}newIntersectionPart_(e,t,s,i,r,n,a,o,l,h){return{segmentIndex:e,weightStart:t,rankStart:s,weightEnd:i,rankEnd:r,weightInterior:n,rankInterior:a,segmentParentage:h,u:{bBigMoveStart:!1,bBigMoveEnd:!1,bBreakStart:o,bBreakEnd:l}}}pushSegment(e,t,s,i,r,n,a,o,l,h){return this.m_inputParts.push(this.newIntersectionPart_(this.m_inputSegments.length,t,s,i,r,n,a,o,l,h)),this.m_inputSegments.push(e),this.m_inputParts.length-1}getResultSegmentCount(e){return this.m_adaptiveDensify?0===e?this.m_param1.length-1:this.m_param2.length-1:0===e?this.m_resultParts1.length:this.m_resultParts2.length}getResultPart_(e,t){return 0===e?this.m_resultParts1[t]:this.m_resultParts2[t]}getResultSegment(e,t){return this.m_resultSegments[this.getResultPart_(e,t).segmentIndex].get()}getSegmentChanged(e){return 0===e?this.m_changed1:this.m_changed2}getResultSegmentStartPointWeight(e,t){return this.getResultPart_(e,t).weightStart}getResultSegmentStartPointRank(e,t){return this.getResultPart_(e,t).rankStart}getResultSegmentSegmentParentage(e,t){return this.getResultPart_(e,t).segmentParentage}getResultSegmentStartPointIsBreak(e,t){return this.getResultPart_(e,t).u.bBreakStart}getResultSegmentEndPointWeight(e,t){return this.getResultPart_(e,t).weightEnd}getResultSegmentEndPointRank(e,t){return this.getResultPart_(e,t).rankEnd}getResultSegmentEndPointIsBreak(e,t){return this.getResultPart_(e,t).u.bBreakEnd}getResultSegmentInteriorRank(e,t){return this.getResultPart_(e,t).rankInterior}getResultSegmentInteriorWeight(e,t){return this.getResultPart_(e,t).weightInterior}getResultPoint(){return this.m_point}getResultPointWeight(){return this.m_pointWeight}getResultPointRank(){return this.m_pointRank}getResultPointChanged(){return this.m_changed2}intersectLines(e,t){2!==this.m_inputSegments.length&&(0,I.d)(""),this.m_changed1=!1,this.m_changed2=!1,this.m_tolerance=e;let s=(0,b.a)(e*eS.c_smallToleranceFactor),i=!1,r=this.m_inputParts[0],n=this.m_inputParts[1],a=this.m_inputSegments[r.segmentIndex],o=this.m_inputSegments[n.segmentIndex];if(t||5&(0,G.H)(!0,a,o,e,!0)){let t=(0,G.T)(!0,a,o,null,this.m_param1,this.m_param2,e);0===t&&(0,I.d)("");let l=Array(t);for(let e=0;e<t;++e)l[e]=b.P.getNAN();let h=new Float64Array(t),m=new Int32Array(t),g=Array(t),u=Array(t);for(let e=0;e<t;++e)g[e]=eC(),u[e]=eC();for(let e=0;e<t;e++){let t=this.m_param1[e],_=this.m_param2[e],p,d=r.rankInterior,c=r.weightInterior;0===t?(d=r.rankStart,c=r.weightStart,p=r.u.bBreakStart):1===t?(d=r.rankEnd,c=r.weightEnd,p=r.u.bBreakEnd):(this.m_changed1=!0,p=!1);let f,x=n.rankInterior,P=n.weightInterior;
10===_?(x=n.rankStart,P=n.weightStart,f=n.u.bBreakStart):1===_?(x=n.rankEnd,P=n.weightEnd,f=n.u.bBreakEnd):(this.m_changed2=!0,f=!1);let E=d,y=x,S=1,C=0,I=b.P.getNAN();if(E===y){let i=a.getCoord2D(t),r=o.getCoord2D(_);S=c+P,C=d,(0,b.Q)(i,r,P/S,I);let n=b.P.sqrDistance(I,i),l=b.P.sqrDistance(I,r);g[e].bBigMove=n>s,u[e].bBigMove=l>s,this.m_changed1||i.equals(I)||(this.m_changed1=!0),this.m_changed2||r.equals(I)||(this.m_changed2=!0)}else if(E>y){I=a.getCoord2D(t);let i=o.getCoord2D(_);S=c,C=d;let r=b.P.sqrDistance(I,i);g[e].bBigMove=!1,u[e].bBigMove=r>s,this.m_changed2||i.equals(I)||(this.m_changed2=!0)}else{I=o.getCoord2D(_),S=P,C=x;let i=a.getCoord2D(t),r=b.P.sqrDistance(I,i);g[e].bBigMove=r>s,u[e].bBigMove=!1,this.m_changed1||i.equals(I)||(this.m_changed1=!0)}l[e].assign(I),h[e]=S,m[e]=C,g[e].bIsBreak=p||f,u[e].bIsBreak=p||f,i||=g[e].bBigMove||u[e].bBigMove}let _=r.rankInterior,p=r.weightInterior,d=0,c=-1;for(let s=0;s<=t;s++){let i=s<t?this.m_param1[s]:1;if(i!==d){let n,o,u,f,x=this.allocResultSegment(),P=this.m_resultSegments[x];a.queryCut(d,i,P,!1),P.get().snapControlPoints(e*e);let E=!1,y=!1,S=!1,C=!1,I=!1,v=b.P.getNAN(),G=b.P.getNAN();-1!==c?(o=m[c],n=h[c],E=g[c].bBigMove,v.assign(l[c]),S=g[c].bIsBreak,I=!0):(n=r.weightStart,o=r.rankStart,v=P.get().getStartXY(),S=r.u.bBreakStart),s<t?(f=m[s],u=h[s],y=g[s].bBigMove,G.assign(l[s]),C=g[s].bIsBreak,I=!0):(u=r.weightEnd,f=r.rankEnd,G=P.get().getEndXY(),C=r.u.bBreakEnd),I&&P.get().setCoordsForIntersector(v,G,!0),this.m_resultParts1.push(this.newIntersectionPart_(x,n,o,u,f,p,_,S,C,r.segmentParentage));let w=this.m_resultParts1.at(-1);w.u.bBigMoveStart=E,w.u.bBigMoveEnd=y,d=i,c=s}else -1===c&&(c=s)}let f=(0,b.d)(t,0);for(let e=0;e<t;e++)f[e]=e;t>2?(f.sort((e,t)=>this.m_param2[e]<this.m_param2[t]?-1:+(this.m_param2[e]>this.m_param2[t])),(0,b.v)(this.m_param2)):2===t&&this.m_param2[0]>this.m_param2[1]&&(this.m_param2[1]=(0,b.c)(this.m_param2[0],this.m_param2[0]=this.m_param2[1]),f[1]=(0,b.c)(f[0],f[0]=f[1]));let x=n.rankInterior,P=n.weightInterior;d=0,c=-1;for(let s=0;s<=t;s++){let i=s<t?this.m_param2[s]:1;if(i!==d){let r,a,g,_,p=this.allocResultSegment(),E=this.m_resultSegments[p];o.queryCut(d,i,E,!1),E.get().snapControlPoints(e*e);let y=b.P.getNAN(),S=b.P.getNAN(),C=!1,I=!1,v=!1,G=!1,w=!1;if(-1!==c){let e=f[c];r=h[e],a=m[e],y.assign(l[e]),v=u[e].bBigMove,C=u[e].bIsBreak,w=!0}else r=n.weightStart,a=n.rankStart,y=E.get().getStartXY(),C=n.u.bBreakStart;if(s!==t){let e=f[s];g=h[e],_=m[e],S.assign(l[e]),G=u[e].bBigMove,I=u[e].bIsBreak,w=!0}else g=n.weightEnd,_=n.rankEnd,S=E.get().getEndXY(),I=n.u.bBreakEnd;
1w&&E.get().setCoordsForIntersector(y,S,!0),this.m_resultParts2.push(this.newIntersectionPart_(p,r,a,g,_,P,x,C,I,n.segmentParentage));let T=this.m_resultParts2.at(-1);T.u.bBigMoveStart=v,T.u.bBigMoveEnd=G,d=i,c=s}else -1===c&&(c=s)}return i?3:2}return 0}intersectLines3D(e,t,s,i){return(0,I.g)(0),1}intersect2D(e,t){let s=this.m_inputParts[0],i=this.m_inputParts[1],r=this.m_inputSegments[s.segmentIndex].getGeometryType(),n=this.m_inputSegments[i.segmentIndex].getGeometryType();return r!==I.G.enumLine||n!==I.G.enumLine?new ew(this).intersectCurves(e,t):this.intersectLines(e,t)}intersect2DEx(e,t,s,i,r){this.m_point.assignCopy(t),1!==this.m_inputSegments.length&&(0,I.d)(""),this.m_tolerance=e,this.m_changed1=!1,this.m_changed2=!1;let n=(0,b.a)(e*eS.c_smallToleranceFactor),a=!1,o=this.m_inputParts[0],l=this.m_inputSegments[o.segmentIndex];if(r||l.isIntersectingPoint(t.getXY(),e,!0)){this.m_param1=(0,b.d)(16,NaN);let r=l.getClosestCoordinate(t.getXY(),!1);this.m_param1[0]=r;let h=o.rankInterior,m=o.weightInterior;0===r?(h=o.rankStart,m=o.weightStart):1===r?(h=o.rankEnd,m=o.weightEnd):this.m_changed1=!0;let g=h;g===s&&l.isCurve()&&(g=s+1);let u=1,_=0,p=new b.P;if(g===s){let e=l.getCoord2D(r),s=t.getXY();u=m+i,_=h,(0,b.Q)(e,s,i/u,p),this.m_changed1||e.equals(p)||(this.m_changed1=!0),this.m_changed2||s.equals(p)||(this.m_changed2=!0),a=b.P.sqrDistance(p,e)>n}else g>s?(p.assign(l.getCoord2D(r)),u=m,_=h,this.m_changed2||p.equals(t.getXY())||(this.m_changed2=!0)):(p.assign(l.getCoord2D(r)),u=i,_=s,this.m_changed1||p.equals(t.getXY())||(this.m_changed1=!0),a=b.P.sqrDistance(p,t.getXY())>n);let d=0,c=-1;for(let t=0;t<=1;t++){let s=t<1?this.m_param1[0]:1;if(s!==d){let i=this.allocResultSegment(),r=this.m_resultSegments[i];l.queryCut(d,s,r),r.get().snapControlPoints(e*e);let n=o.weightStart,a=o.weightEnd,h=o.rankStart,m=o.rankEnd,g=o.rankInterior,f=o.weightInterior,x=o.u.bBreakStart,P=o.u.bBreakEnd;-1!==c&&(n=u,h=_,x=!0,r.get().setCoordsForIntersector(p,r.get().getEndXY(),!0)),1!==t&&(a=u,m=_,P=!0,r.get().setCoordsForIntersector(r.get().getStartXY(),p,!0)),d=s,this.m_resultParts1.push(this.newIntersectionPart_(i,n,h,a,m,f,g,x,P,o.segmentParentage))}c=t}return this.m_point.setXY(p),this.m_pointWeight=u,this.m_pointRank=_,a?3:2}return 0}intersect3D(e,t,s,i){return(0,I.g)(0),1}intersect3DEx(e,t,s,i,r,n,a){return(0,I.g)(0),1}getTolerance(){return this.m_tolerance}freeAllResultSegments(){this.m_resultSegments.length=0,this.m_freeSegments.length=0}freeResultSegment(e){this.m_freeSegments.push(e)}allocResultSegment(){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let e=new G.S,t=this.m_resultSegments.length;return this.m_resultSegments.push(e),t}allocResultSegmentFromBuffer(e){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let t=new G.S({copy:e}),s=this.m_resultSegments.length;return this.m_resultSegments.push(t),s}allocResultSegmentFromSegment(e){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let t=new G.S({segment:e}),s=this.m_resultSegments.length;return this.m_resultSegments.push(t),s}}function eC(){return{bBigMove:!1,bIsBreak:!1}}eS.maxWeight=.1*Number.MAX_VALUE,eS.c_smallToleranceFactor=.01,eS.c_maxGeometryTypeToRankDelta=8;let eI=class{constructor(){this.start=null,this.end=null,this.equalEdge=null,this.segmentIndex=-1,this.segmentParentage=-1,this.weight=0,this.rank=0}hasSegment(){return this.segmentIndex>=0}transferAttributes(e,t,s){if(1===t.getDescription().getAttributeCount())return;let i=e.parent.m_resultSegments[this.segmentIndex].get().getStartXY(),r=e.parent.m_resultSegments[this.segmentIndex].get().getEndXY(),n=new w.P;t.queryStart(n),s?(n.setXY(i),e.parent.m_resultSegments[this.segmentIndex].get().setStart(n)):(n.setXY(r),e.parent.m_resultSegments[this.segmentIndex].get().setEnd(n)),t.queryEnd(n),s?(n.setXY(r),e.parent.m_resultSegments[this.segmentIndex].get().setEnd(n)):(n.setXY(i),e.parent.m_resultSegments[this.segmentIndex].get().setStart(n))}copyFromWhenOverlap(e,t,s){this.equalEdge=t,t.equalEdge=this,this.segmentIndex=e.parent.allocResultSegmentFromBuffer(e.parent.m_resultSegments[t.segmentIndex]),this.segmentParentage=t.segmentParentage,this.weight=t.weight,this.rank=t.rank,s?(this.start.copyFrom(t.start),this.end.copyFrom(t.end
1)):(this.start.copyFrom(t.end),this.end.copyFrom(t.start),e.parent.m_resultSegments[this.segmentIndex].get().reverse())}getEnd(){return this.end}getNextInChain(){return this.end.nextInChain}getPrevInChain(){return this.start.prevInChain}};class ev{constructor(){this.hash=0,this.pt=new b.P,this.prevInChain=null,this.nextInChain=null,this.prevInHash=null,this.nextInHash=null,this.prevEqual=null,this.nextEqual=null,this.weight=0,this.rank=0,this.bBigMove=!1,this.bIsBreak=!1}copyFrom(e){this.pt.assign(e.pt),this.weight=e.weight,this.rank=e.rank,this.bBigMove=e.bBigMove,this.bIsBreak=e.bIsBreak}nextNode(){return this.nextInChain?this.nextInChain.end:null}prevNode(){return this.prevInChain?this.prevInChain.start:null}equalListHead(){let e=this;for(;null!==e.prevEqual;e=e.prevEqual);return e}}function eG(e,t,s,i){return{edge1:e,edge2:t,recursion:s,bIsIntersecting:i}}class ew{constructor(e){this.m_pairs=[],this.m_chainOrigin1=null,this.m_chainOrigin2=null,this.m_newNodes=[],this.m_hashTableOfEquals=[],this.m_hashTableOfEqualsSize=0,this.m_origin=new b.P,this.m_cell=new b.P,this.parent=e}addSegment(e,t,s,i,r,n,a,o,l,h,m){let g=this.newNode(this.parent.m_resultSegments[e].get().getStartXY(),s,i,l),u=this.newNode(this.parent.m_resultSegments[e].get().getEndXY(),r,n,h);this.newEdge(g,u,e,a,o,m),null===this.m_chainOrigin1?this.m_chainOrigin1=g:null===this.m_chainOrigin2?this.m_chainOrigin2=g:(0,I.g)(0)}intersectCurvesHelper(e,t,s,i,r){let n=this.getSegment(e).get(),a=this.getSegment(t).get();if(n.isDegenerate(0)||a.isDegenerate(0))return 0;let o=this.tryOverlapIntersectCurves(e,t,s,i);if(0!==o)return o;let l=(0,b.a)(.01*s),h=!1,m=this.processSharpCorners(n,a,s,r>4),g=m>0;if(!g){if(!(i||5&(0,G.R)(!0,!1,n,a,s,!0)))return 0;m=(0,G.T)(!0,n,a,null,this.parent.m_param1,this.parent.m_param2,s)}0===m&&(0,I.d)("");let u=n.getGeometryType(),_=a.getGeometryType(),p=(0,b.m)(b.P,m),d=(0,b.m)(b.P,m),c=(0,b.d)(m,NaN),f=(0,b.d)(m,NaN),x=(0,b.d)(m,NaN),P=(0,b.d)(m,NaN),E=(0,b.k)(eC,m),y=(0,b.k)(eC,m),S=!1,C=!1;for(let i=0;i<m;i++){let r=this.parent.m_param1[i],o=this.parent.m_param2[i],m=e.rank,I=e.weight,v=!0,G=!1;0===r?(m=e.start.rank,I=e.start.weight,G=e.start.bIsBreak):1===r?(m=e.end.rank,I=e.end.weight,G=e.end.bIsBreak):(S=!0,v=!1);let w=t.rank,T=t.weight,N=!1,D=!0;0===o?(w=t.start.rank,T=t.start.weight,N=t.start.bIsBreak):1===o?(w=t.end.rank,T=t.end.weight,N=t.end.bIsBreak):(C=!0,D=!1);let V=m,F=w;if(V===F&&(V*=eS.c_maxGeometryTypeToRankDelta,F*=eS.c_maxGeometryTypeToRankDelta,V+=eb(u,n,!1),F+=eb(_,a,!1)),v&&D&&F===V){let e=n.getCoord2D(r),t=a.getCoord2D(o);e.equals(t)&&(F=V-1)}let H=1,k=0,A=1,M=0,U=new b.P,q=new b.P,B=n.getCoord2D(r),R=a.getCoord2D(o);if(g&&b.P.distance(B,R)>s)U.setCoordsPoint2D(B),q.setCoordsPoint2D(R),H=I,A=T,k=m,M=w,E[i].bBigMove=!1,y[i].bBigMove=!1,G=!0,N=!0;else if(V===F){A=H=I+T,M=k=m,(0,b.Q)(B,R,T/H,U),q.setCoordsPoint2D(U);let e=b.P.sqrDistance(U,B),t=b.P.sqrDistance(U,R);E[i].bBigMove=e>l,y[i].bBigMove=t>l,S||B.equals(U)||(S=!0),C||R.equals(q)||(C=!0)}else if(V>
1F){U.setCoordsPoint2D(B),q.setCoordsPoint2D(U),A=H=I,M=k=m;let e=b.P.sqrDistance(U,R);E[i].bBigMove=!1,y[i].bBigMove=e>l,C||R.equals(q)||(C=!0)}else{q.setCoordsPoint2D(R),U.setCoordsPoint2D(q),A=H=T,M=k=w;let e=b.P.sqrDistance(U,B);E[i].bBigMove=e>l,y[i].bBigMove=!1,S||B.equals(U)||(S=!0)}p[i].assign(U),d[i].assign(q),c[i]=H,f[i]=A,x[i]=k,P[i]=M,E[i].bIsBreak=G||N,y[i].bIsBreak=G||N,h||=E[i].bBigMove||y[i].bBigMove,i>0&&(r!==this.parent.m_param1[i-1]&&o!==this.parent.m_param2[i-1]||(x[i]<=x[i-1]?(p[i].assign(d[i-1]),c[i]=f[i-1],x[i]=P[i-1],d[i].assign(d[i-1]),f[i]=f[i-1],P[i]=P[i-1],E[i].bBigMove||=E[i-1].bBigMove,y[i].bBigMove||=y[i-1].bBigMove,E[i].bIsBreak||=E[i-1].bIsBreak,y[i].bIsBreak||=y[i-1].bIsBreak):(p[i-1].assign(p[i]),c[i-1]=c[i],x[i-1]=x[i],d[i-1].assign(d[i]),f[i-1]=f[i],P[i-1]=P[i],E[i-1].bBigMove||=E[i].bBigMove,y[i-1].bBigMove||=y[i].bBigMove,E[i-1].bIsBreak||=E[i].bIsBreak,y[i-1].bIsBreak||=y[i].bIsBreak)))}if(!(S||C||2!==m||u===I.G.enumLine&&_===I.G.enumLine)){if(this.processDoublyConnectedEdges(e,t,r+1,s))return this.parent.m_changed1=!0,this.parent.m_changed2=!0,2;(0,I.g)(0)}this.parent.m_changed1||=S,this.parent.m_changed2||=C;let v=e,w=e.end.weight,T=e.end.rank,N=e.end.bBigMove,D=e.end.bIsBreak,V=0,F=-1;for(let t=0;t<=m;t++){let i=t<m?this.parent.m_param1[t]:1;if(i!==V){let r,a,o,l,h=this.parent.allocResultSegment(),g=this.parent.m_resultSegments[h];n.queryCut(V,i,g,!1),g.get().snapControlPoints(s*s);let u=!1,_=!1,d=!1,f=!1,P=new b.P,y=new b.P;-1!==F?(a=x[F],r=c[F],d=E[F].bBigMove,u=E[F].bIsBreak,P.assign(p[F])):(r=e.start.weight,a=e.start.rank,d=e.start.bBigMove,u=e.start.bIsBreak,P.assign(g.get().getStartXY())),t<m?(l=x[t],o=c[t],f=E[t].bBigMove,_=E[t].bIsBreak,y.assign(p[t])):(o=w,l=T,f=N,_=D,y.assign(g.get().getEndXY()));let S=v;i<1&&(this.splitEdgeInPlace(v),S=v.getNextInChain()),this.updateSegmentOnly(v,h),0===v.start.hash||v.start.pt.equals(P)||(this.m_newNodes.push(v.start),this.removeNodeFromHash(v.start),v.start.hash=0),0===v.end.hash||v.end.pt.equals(y)||(this.m_newNodes.push(v.end),this.removeNodeFromHash(v.end),v.end.hash=0),v.start.pt.assign(P),v.end.pt.assign(y),v.start.bBigMove||=d,v.end.bBigMove||=f,v.start.bIsBreak||=u,v.end.bIsBreak||=_,v.start.weight=r,v.start.rank=a,v.end.weight=o,v.end.rank=l,v=S,V=i,F=t}else -1===F&&(F=t)}let H=v.getNextInChain(),k=[];k.length=m;for(let e=0;e<m;e++)k[e]=e;m>2?(k.sort((e,t)=>(0,b.R)(this.parent.m_param2[e],this.parent.m_param2[t])),this.parent.m_param2.sort(b.R)):2===m&&this.parent.m_param2[0]>this.parent.m_param2[1]&&(this.parent.m_param2[1]=(0,b.c)(this.parent.m_param2[0],this.parent.m_param2[0]=this.parent.m_param2[1]),k[1]=(0,b.c)(k[0],k[0]=k[1])),v=t,w=t.end.weight,T=t.end.rank,N=t.end.bBigMove,D=t.end.bIsBreak,V=0,F=-1;for(let e=0;e<=m;e++){let i=e<m?this.parent.m_param2[e]:1;if(i!==V){let r,n,o,l,h=this.parent.allocResultSegment(),g=this.parent.m_resultSegments[h];a.queryCut(V,i,g,!1),g.get().snapControlPoints(s*s);let u=new b.P,_=new b.P,p=!1,c=!1,x=!1,E=!1;if(-1!==F){let e=k[F];r=f[e],n=P[e],u.assign(d[e]),x=y[e].bBigMove,p=y[e].bIsBreak}else r=t.start.weight,n=t.start.rank,x=t.start.bBigMove,p=t.start.bIsBreak,u.assign(g.get().getStartXY());if(e!==m){let t=k[e];o=f[t],l=P[t],_.assign(d[t]),E=y[t].bBigMove,c=y[t].bIsBreak}else o=w,l=T,E=N,c=D,_.assign(g.get().getEndXY());let S=v;i<1&&(this.splitEdgeInPlace(v),S=v.getNextInChain()),this.updateSegmentOnly(v,h),0===v.start.hash||v.start.pt.equals(u)||(this.m_newNodes.push(v.start),this.removeNodeFromHash(v.start),v.start.hash=0),0===v.end.hash||v.end.pt.equals(_)||(this.m_newNodes.push(v.end),this.removeNodeFromHash(v.end),v.end.hash=0),v.start.pt.assign(u),v.end.pt.assign(_),v.start.bBigMove||=x,v.end.bBigMove||=E,v.start.bIsBreak||=p,v.end.bIsBreak||=c,v.start.weight=r,v.start.rank=n,v.end.weight=o,v.end.rank=l,v=S,V=i,F=e}else -1===F&&(F=e)}let A=v.getNextInChain();return this.postProcessResultPartsForCurves(e,H,t,A,r+1),h?3:2}intersectCurves(e,t){2!==this.parent.m_inputSegments.length&&(0,I.d)(""),this.parent.m_changed1=!1,this.parent.m_changed2=!1,this.parent.m_tolerance=e,this.m_hashTableOfEqualsSize=0,this.m_hashTableOfEquals=(0,b.C)(16);let s=v.Envelope2D.constructEmpty();for(let e=0;e<2;e++){let t=this.parent.allocResultSegmentFromSegment(this.parent.m_inputSegments[this.parent.m_inputParts[e].segmentIndex]),i=v.Envelope2D.constructEmpty();this.parent.m_inputSegments[this.parent.m_inputParts[e].segmentIndex].queryLooseEnvelope(i),s.mergeEnvelope2D(i);let r=this.parent.m_inputParts[e];this.addSegment(t,0,r.weightStart,r.rankStart,r.weightEnd,r.rankEnd,r.weightInterior,r.rankInterior,r.u.bBreakStart,r.u.bBreakEnd,r.segmentParentage)}s.inflateCoords(100*e,100*e),this.m_origin.assign(s.getLowerLeft()),this.m_cell.setCoords(2*e,2*e),this.m_pairs.push(eG(this.m_chainOrigin1.nextInChain,this.m_chainOrigin2.nextInChain,0,t));let i=0,r=!0;for(;this.m_pairs.length;){let t=this.m_pairs.at(-1);this.m_pairs.pop(),(0,I.g)(t.recursion>=0),(0,I.g)(t.recursion<=256),this.clusterNodes(e);let s=this.intersectCurvesHelper(t.edge1,t.edge2,e,t.bIsIntersecting,t.recursion);r&&(r=!1,i=s)}for(let e=0;e<2;e++){let t=0===e?this.parent.m_resultParts1:this.parent.m_resultParts2;for(let s=(0===e?this.m_chainOrigin1:this.m_chainOrigin2).nextInChain;null!=s;s=s.getNextInChain())t.push(this.parent.newIntersectionPart_(s.segmentIndex,s.start.weight,s.start.rank,s.end.weight,s.end.rank,s.weight,s.rank,s.start.bIsBreak,s.end.bIsBreak,s.segmentParentage)),t.at(-1).u.bBigMoveStart=s.start.bBigMove,t.at(-1).u.bBigMoveEnd=s.end.bBigMove}return i}tryOverlapIntersectCurves(e,t,s,i){let r=this.parent.m_resultSegments[e.segmentIndex].get(),n=this.parent.m_resultSegments[t.segmentIndex].get(),a=r.getStartXY().equals(n.getStartXY())&&r.getEndXY().equals(n.getEndXY()),o=r.getStartXY().equals(n.getEndXY())&&r.getEndXY().equals(n.getStartXY());if(!a&&!o)return 0;let l=(0,G.Y)(r,n,!0);if(0!==l&&(0,G.Z)(r,n)&&e.segmentParentage===t.segmentParentage){let e=!1;if(l>0)e=r.equals(n);else{(0,I.g)(-1===l);let t=new G.S({segment:n});t.get().reverse(),e=r.equals(t.get())}if(e)return 1}let h=s*eS.c_smallToleranceFactor,m=!1;if(0===l){let e=[.5,.25,.75,.125,.375,.625,.875,.5625,.3125];for(let t=0,i=e.length;t<i;++t){let i=e[t],a=new b.P;r.queryCoord2D(i,a);let o=n.getClosestCoordinate(a,!1),l=new b.P;n.queryCoord2D(o,l);let g=b.P.distance(a,l);if(g>s)return 0;m||=g>h}for(let t=0,i=e.length;t<i;++t){let i=e[t],a=new b.P;n.queryCoord2D(i,a);let o=r.getClosestCoordinate(a,!1),l=new b.P;r.queryCoord2D(o,l);let g=b.P.distance(a,l);if(g>s)return 0;m||=g>h}}let g=e.rank,u=t.rank;return g===u&&(g*=eS.c_maxGeometryTypeToRankDelta,u*=eS.c_maxGeometryTypeToRankDelta,g+=eb(r.getGeometryType(),r,!0),u+=eb(n.getGeometryType(),n,!0)),g>u?(t.copyFromWhenOverlap(this,e,a),t.transferAttributes(this,r,a)):u>g?(e.copyFromWhenOverlap(this,t,a),e.transferAttributes(this,n,a)):e.segmentParentage<=t.segmentParentage?(e.weight=e.weight+t.weight,t.copyFromWhenOverlap(this,e,a),t.transferAttributes(this,r,a)):(t.weight=e.weight+t.weight,e.copyFromWhenOverlap(this,t,a),e.transferAttributes(this,n,a)),m?3:2}postProcessResultPartsForCurves(e,t,s,i,r){r===(0,b.T)()&&(0,I.d)("curve_helper");for(let s=e;s!==t;s=s.getNextInChain())this.updateSegmentToNodes(s);for(let e=s;e!==i;e=e.getNextInChain())this.updateSegmentToNodes(e);for(let n=e;n!==t;n=n.getNextInChain()){let e=n.end.pt.sub(n.start.pt);for(let t=s;t!==i;t=t.getNextInChain()){let s=0;if(n.start.pt.equals(t.start.pt)&&n.end.pt.equals(t.end.pt)?s=1:n.start.pt.equals(t.end.pt)&&n.end.pt.equals(t.start.pt)&&(s=-1),!s){let s=+!!n.start.pt.equals(t.start.pt);if(s||(s=2*!!n.end.pt.equals(t.end.pt))||(s=3*!!n.end.pt.equals(t.start.pt))||(s=4*!!n.start.pt.equals(t.end.pt)),s){let i,a=t.end.pt.sub(t.start.pt),o=e.dotProduct(a);switch(s){case 1:case 2:i=o>0;break;case 3:case 4:i=o<0;break;default:(0,I.d)("post_process_result_parts_for_curves_")}i&&this.m_pairs.push(eG(n,t,r,!1))}continue}let i=this.parent.m_resultSegments[n.segmentIndex],a=this.parent.m_resultSegments[t.segmentIndex],o=[.5,.25,.75];for(let e=0,t=o.length;e<t;++e){let t=o[e],r=new b.P;i.get().queryCoord2D(t,r);let n=a.get().getClosestCoordinate(r,!1),l=new b.P;if(a.get().queryCoord2D(n,l),b.P.distance(r,l)>this.parent.m_tolerance){s=0;break}}if(!s){this.m_pairs.push(eG(n,t,r,!1));continue}for(let e=0,t=o.length;e<t;++e){let t=o[e],r=new b.P;a.get().queryCoord2D(t,r);let n=i.get().getClosestCoordinate(r,!1),l=new b.P;if(i.get().queryCoord2D(n,l),b.P.distance(r,l)>this.parent.m_tolerance){s=0;break}}if(!s){this.m_pairs.push(eG(n,t,r,!1));continue}n.equalEdge=t,t.equalEdge=n;let l=n.rank,h=t.rank;l===h&&(l*=eS.c_maxGeometryTypeToRankDelta,h*=eS.c_maxGeometryTypeToRankDelta,l+=eb(i.get().getGeometryType(),i.get(),!0),h+=eb(a.get().getGeometryType(),a.get(),!0)),l>h||l===h&&n.segmentParentage<=t.segmentParentage?(i.copyTo(a,!1),t.segmentParentage=n.segmentParentage,-1===s&&a.get().reverse()):(a.copyTo(i,!1),n.segmentParentage=t.segmentParentage,-1===s&&i.get().reverse());break}}this.updateAttachedEdgesAfterNodeChange(e.start),t&&this.updateAttachedEdgesAfterNodeChange(t.start),this.updateAttachedEdgesAfterNodeChange(s.start),i&&this.updateAttachedEdgesAfterNodeChange(i.start)}processDoublyConnectedEdges(e,t,s,i){s===(0,b.T)()&&(0,I.d)("curve_helper");let r=this.getSegment(e).get(),n=this.getSegment(t).get(),a=r.getStartXY().equals(n.getStartXY())&&r.getEndXY().equals(n.getEndXY())?1:r.getEndXY().equals(n.getStartXY())&&r.getStartXY().equals(n.getEndXY())?-1:0;if(0!==a){let o=new G.S;r.queryCut(0,.5,o),o.get().snapControlPoints(i*i);let l=new G.S;r.queryCut(.5,1,l),l.get().snapControlPoints(i*i),this.splitEdgeInPlace(e),e.end.pt=o.get().getEndXY(),e.segmentIndex=this.parent.allocResultSegmentFromBuffer(o),e.getNextInChain().segmentIndex=this.parent.allocResultSegmentFromBuffer(l);let h=n.getClosestCoordinate(e.end.pt,!1);return Math.abs(h-.5)>.2&&(h=.5),n.queryCut(0,h,o),o.get().snapControlPoints(i*i),n.queryCut(h,1,l),l.get().snapControlPoints(i*i),this.splitEdgeInPlace(t),t.end.pt=o.get().getEndXY(),t.segmentIndex=this.parent.allocResultSegmentFromBuffer(o),t.getNextInChain().segmentIndex=this.parent.allocResultSegmentFromBuffer(l),a>0?(this.m_pairs.push(eG(e,t,s,!1)),this.m_pairs.push(eG(e.getNextInChain(),t.getNextInChain(),s,!1))):(this.m_pairs.push(eG(e,t.getNextInChain(),s,!1)),this.m_pairs.push(eG(e.getNextInChain(),t,s,!1))),!0}return!1}newNode(e,t,s,i){let r=new ev;return this.m_newNodes.push(r),r.pt=e,r.rank=s,r.weight=t,r.bIsBreak=i,r}newEdge(e,t,s,i,r,n){let a=new eI;return a.start=e,a.end=t,e.nextInChain=a,t.prevInChain=a,a.segmentIndex=s,a.segmentParentage=n,a.rank=r,a.weight=i,a}splitEdgeInPlace(e){e.segmentIndex=-1;let t=new eI,s=new ev;this.m_newNodes.push(s),s.pt.setNAN(),s.nextInChain=t,s.prevInChain=e,s.prevInHash=null,
1s.nextInHash=null,s.prevEqual=null,s.nextEqual=null,s.weight=e.weight,s.rank=e.rank,s.bIsBreak=!1,s.bBigMove=!1,t.start=s,t.segmentIndex=-1,t.end=e.end,t.end.prevInChain=t,t.rank=e.rank,t.weight=e.weight,t.segmentParentage=e.segmentParentage,e.end=s,e.equalEdge&&(e.equalEdge.equalEdge=null),e.equalEdge=null}updateSegmentOnly(e,t){e.segmentIndex=t}updateAttachedEdgesAfterNodeChange(e){for(let t=e.equalListHead();null!==t;t=t.nextEqual)this.updateAttachedEdgesAfterNodeChangeImpl(t)}updateAttachedEdgesAfterNodeChangeImpl(e){let t=e.prevInChain;if(t&&t.hasSegment()){let s=this.getSegment(t).get();e.pt.equals(s.getEndXY())||(s.setCoordsForIntersector(t.start.pt,t.end.pt,!1),s.ensureXYMonotone())}let s=e.nextInChain;if(s&&s.hasSegment()){let t=this.getSegment(s).get();e.pt.equals(t.getStartXY())||(t.setCoordsForIntersector(s.start.pt,s.end.pt,!1),t.ensureXYMonotone())}}updateSegmentToNodes(e){let t=this.getSegment(e).get();e.start.pt.equals(t.getStartXY())&&e.end.pt.equals(t.getEndXY())||(t.setCoordsForIntersector(e.start.pt,e.end.pt,!1),t.ensureXYMonotone()),this.updateAttachedEdgesAfterNodeChange(e.start),this.updateAttachedEdgesAfterNodeChange(e.end)}getSegment(e){return this.parent.m_resultSegments[e.segmentIndex]}clusterNodes(e){let t=!1,s=[],i=[],r=[];for(let e=0,t=this.m_newNodes.length;e<t;e++){let s=this.m_newNodes[e];if(null===s)continue;let i=s;for(let r=e+1;r<t;r++){let e=this.m_newNodes[r];null!==e&&s.pt.equals(e.pt)&&(i.nextInHash=e,e.prevInHash=i,i=e,this.m_newNodes[r]=null)}}for(let n=0,a=this.m_newNodes.length;n<a;n++){let a=this.m_newNodes[n];if(null==a)continue;for(a.hash=this.calculateHash(a.pt);;){let n=(0,b.C)(4),o=this.hashTableBinsToCheck(a,n);for(let t=0;t<o;t++)if(null!==n[t])for(let o=n[t];null!==o;){let t=o.nextInHash;b.P.distance(a.pt,o.pt)<=e&&(s.push(o),this.removeNodeFromHash(o),o.hash=0,r.push(o),i.push(o)),o=t}let l=!1;for(let e of s)if(!a.pt.equals(e.pt)){let s=ex(a.pt,e.pt,a.weight,a.rank,e.weight,e.rank);a.pt.assign(s.pt),a.weight=s.weight,a.rank=s.rank,l=!0,t=!0}if(s.length=0,!l)break;a.hash=this.calculateHash(a.pt)}r.push(a),i.push(a);for(let e=a.nextInHash;null!==e;){e.prevInHash=null;let t=e.nextInHash;e.nextInHash=null,r.push(e),i.push(e),e=t}let o=a.hash,l=null,h=null;for(let e of i)a!==e&&(e.hash=o,e.pt.assign(a.pt),e.rank=a.rank,e.weight=a.weight),e.prevInHash=l,l&&(l.nextInHash=e),e.prevEqual=h,e.nextEqual=null,h&&(h.nextEqual=e),h=e,l=e;let m=o%this.m_hashTableOfEquals.length;l.nextInHash=this.m_hashTableOfEquals[m],null!==this.m_hashTableOfEquals[m]&&(this.m_hashTableOfEquals[m].prevInHash=l),this.m_hashTableOfEquals[m]=i[0],this.m_hashTableOfEqualsSize+=i.length,i.length=0,this.rehashIfNeeded()}if(this.m_newNodes.length=0,t)for(let e of r)this.updateAttachedEdgesAfterNodeChange(e)}rehashIfNeeded(){if(2*this.m_hashTableOfEqualsSize>this.m_hashTableOfEquals.length){let e=this.m_hashTableOfEquals;for(let t of(this.m_hashTableOfEquals=(0,b.C)(2*e.length),this.m_hashTableOfEqualsSize=0,e)){let e=t;for(;e;){let t=e.nextInHash;e.nextInHash=null,e.prevInHash=null,this.addNodeToHashImpl(e),e=t}}}}addNodeToHashImpl(e){let t=e.hash%this.m_hashTableOfEquals.length,s=this.m_hashTableOfEquals[t];e.nextInHash=s,null!==s&&(s.prevInHash=e),this.m_hashTableOfEquals[t]=e,this.m_hashTableOfEqualsSize++}removeNodeFromHash(e){let t=e.hash%this.m_hashTableOfEquals.length,s=e.prevInHash,i=e.nextInHash;s?s.nextInHash=i:this.m_hashTableOfEquals[t]=i,i&&(i.prevInHash=s),this.m_hashTableOfEqualsSize--,e.prevInHash=null,e.nextInHash=null}hashTableBinsToCheck(e,t){let s=(e.pt.x-this.m_origin.x)/this.m_cell.x,i=(e.pt.y-this.m_origin.y)/this.m_cell.y,r=(0,b.i)()-1,n=Math.round((0,b.s)(s,-0x7ffffffe,r)),a=Math.round((0,b.s)(i,-0x7ffffffe,r)),o=n|a<<32;o=(0,b.B)(o),t[0]=this.m_hashTableOfEquals[o%this.m_hashTableOfEquals.length];let l=n+1|a<<32;l=(0,b.B)(l);let h=1;t[1]=this.m_hashTableOfEquals[l%this.m_hashTableOfEquals.length],t[1]!==t[0]&&(h=2);let m=n+1|a+1<<32;m=(0,b.B)(m),t[h]=this.m_hashTableOfEquals[m%this.m_hashTableOfEquals.length];for(let e=0;e<h;e++)if(t[h]===t[e]){h--;break}h++;let g=n|a+1<<32;g=(0,b.B)(g),t[h]=this.m_hashTableOfEquals[g%this.m_hashTableOfEquals.length];for(let e=0;e<h;e++)if(t[h]===t[e]){h--;break}return++h}calculateHash(e){let t=(e.x-this.m_origin.x)/this.m_cell.x,s=(e.y-this.m_origin.y)/this.m_cell.y,i=(0,b.i)()-1,r=Math.round((0,b.s)(t,-0x7ffffffe,i))|Math.round((0,b.s)(s,-0x7ffffffe,i))<<32;return 0===(r=(0,b.B)(r))&&(r=1),r}processSharpCorners(e,t,s,i){if(this.parent.m_param1.length=0,this.parent.m_param2.length=0,e.getStartXY().equals(t.getStartXY())){let r=[
10,0],n=[0,0],a=(0,G._)(e,t,0,0,s,2,r,n,i);if(a){this.parent.m_param1.push(0),this.parent.m_param2.push(0);for(let e=0;e<a;e++)this.parent.m_param1.push(r[e]),this.parent.m_param2.push(n[e]);return a+1}}if(e.getEndXY().equals(t.getEndXY())){let r=[0,0],n=[0,0],a=(0,G._)(e,t,1,1,s,2,r,n,i);if(a){for(let e=0;e<a;e++)this.parent.m_param1.push(r[e]),this.parent.m_param2.push(n[e]);return this.parent.m_param1.push(1),this.parent.m_param2.push(1),a+1}}if(e.getStartXY().equals(t.getEndXY())){let r=[0,0],n=[0,0],a=(0,G._)(e,t,0,1,s,2,r,n,i);if(a){this.parent.m_param1.push(0),this.parent.m_param2.push(1);for(let e=0;e<a;e++)this.parent.m_param1.push(r[e]),this.parent.m_param2.push(n[e]);return a+1}}if(e.getEndXY().equals(t.getStartXY())){let r=[0,0],n=[0,0],a=(0,G._)(e,t,1,0,s,2,r,n,i);if(a){for(let e=0;e<a;e++)this.parent.m_param1.push(r[e]),this.parent.m_param2.push(n[e]);return this.parent.m_param1.push(1),this.parent.m_param2.push(0),a+1}}return 0}}function eb(e,t,s){let i=0;switch(e){case I.G.enumLine:i=0;break;case I.G.enumBezier:i=2;break;case I.G.enumRationalBezier2:i=3;break;case I.G.enumBezier2:i=1;break;case I.G.enumEllipticArc:i=0===t.projectionBehavior()?5:4;break;default:(0,I.d)("")}return s?5-i:i}class eT extends e_{constructor(e){super(e.m_shape,e.m_tolerance,!1),this.m_parent=e}
1compare(e,t,s){if(this.m_bIntersectionDetected)return -1;let i=e.getElement(s),r=this.m_parent.getEdgeOriginVertices(t),n=this.m_parent.m_edgeVertices.getFirstElement(r),a=this.m_parent.getEdgeOriginVertices(i),o=this.m_parent.m_edgeVertices.getFirstElement(a);return this.m_currentNode=s,this.compareSegments(t,n,i,o)}}class eN extends ep{constructor(e){super(e.m_shape,e.m_tolerance),this.m_parent=e}compare(e,t){if(this.m_bIntersectionDetected)return -1;let s=e.getElement(t),i=this.m_parent.getEdgeOriginVertices(s),r=this.m_parent.m_edgeVertices.getFirstElement(i);return this.m_currentNode=t,this.compareVertex(e,t,r)}}class eD extends w.F{constructor(e){super(),this.pt1=b.P.getNAN(),this.pt2=b.P.getNAN(),this.m_shape=e}compare(e,t,s){this.m_shape.queryXY(t,this.pt1);let i=e.getElement(s);return this.m_shape.queryXY(i,this.pt2),this.pt1.compare(this.pt2)}}class eV{constructor(e){this.m_point=b.P.getNAN(),this.m_pt=b.P.getNAN(),this.m_shape=e}setPoint(e){this.m_point.setCoordsPoint2D(e)}compare(e,t){let s=e.getElement(t);return this.m_shape.queryXY(s,this.m_pt),this.m_point.compare(this.m_pt)}}class eF{constructor(e,t){this.m_shape=null,this.m_progressTracker=null,this.m_edges=new w.S(8),this.m_clusters=new w.S(5),this.m_clusterVertices=new eg(!1),this.m_edgeVertices=new eg(!1),this.m_helperPoint=new w.P,this.m_eventQ=new w.T,this.m_sweepStructure=new w.T,this.m_bComplications=!1,this.m_sweepComparator=null,this.m_tempEdgeBuffer=[],this.m_modifiedClusters=[],this.m_edgesToInsertInSweepStructure=[],this.m_prevNeighbour=-1,this.m_nextNeighbour=-1,this.m_bContinuingSegmentChainOptimization=!1,this.m_progressCounter=0,this.m_segmentIntersector=new eS,this.m_segBuf1=new G.S,this.m_segBuf2=new G.S,this.m_sweepPoint=new b.P(0,0),this.m_tolerance=0,this.m_toleranceSqr=0,this.m_sweepPointCluster=-1,this.m_vertexClusterIndex=-1,this.m_bCracked=!1,this.m_bSweepPointClusterWasModified=!1,this.m_progressTracker=e,this.m_bTrackChanges=t}hadComplications(){return this.m_bComplications}sweep(e,t){let s=new N.T;s.setSwapCoordinates(),e.applyTransformation(s),this.setEditShape_(e),this.m_bCracked=!1,this.m_tolerance=t,this.m_toleranceSqr=t*t;let i=this.sweepImpl_();return e.applyTransformation(s),i||(this.fillEventQueuePass2(),i=this.sweepImpl_()||i),this.m_shape.removeUserIndex(this.m_vertexClusterIndex),this.m_shape=null,this.m_bCracked}sweepVertical(e,t){this.setEditShape_(e),this.m_bCracked=!1,this.m_tolerance=t,this.m_toleranceSqr=t*t,this.m_bComplications=!1;let s=this.sweepImpl_();if(!this.m_bComplications){let i=e.filterClosePoints(t,!0,!1,this.m_bTrackChanges,G.n);this.m_bComplications=1===i,s||=1===i}return -1!==this.m_vertexClusterIndex&&(this.m_shape.removeUserIndex(this.m_vertexClusterIndex),this.m_vertexClusterIndex=-1),this.m_shape=null,s}getEdgeCluster(e,t){return this.m_edges.getField(e,0+t)}setEdgeCluster_(e,t,s){this.m_edges.setField(e,0+t,s)}getEdgeOriginVertices(e){return this.m_edges.getField(e,2)}setEdgeOriginVertices_(e,t){this.m_edges.setField(e,2,t)}getNextEdgeEx(e,t){return this.m_edges.getField(e,3+t)}setNextEdgeEx_(e,t,s){this.m_edges.setField(e,3+t,s)}getEdgeSweepNode(e){return this.m_edges.getField(e,7)}setEdgeSweepNode_(e,t){this.m_edges.setField(e,7,t)}getNextEdge(e,t){let s=this.getEdgeEnd(e,t);return this.m_edges.getField(e,3+s)}setNextEdge_(e,t,s){let i=this.getEdgeEnd(e,t);this.m_edges.setField(e,3+i,s)}getPrevEdge(e,t){let s=this.getEdgeEnd(e,t);return this.m_edges.getField(e,5+s)}setPrevEdge_(e,t,s){let i=this.getEdgeEnd(e,t);this.m_edges.setField(e,5+i,s)}getClusterVertices(e){return this.m_clusters.getField(e,0)}setClusterVertices_(e,t){this.m_clusters.setField(e,0,t)}getClusterSweepEdgeList(e){return this.m_clusters.getField(e,2)}setClusterSweepEdgeList_(e,t){this.m_clusters.setField(e,2,t)}getClusterFirstEdge(e){return this.m_clusters.getField(e,1)}setClusterFirstEdge_(e,t){this.m_clusters.setField(e,1,t)}getClusterEventQNode(e){return this.m_clusters.getField(e,3)}setClusterEventQNode_(e,t){this.m_clusters.setField(e,3,t)}newCluster_(e){let t=this.m_clusters.newElement(),s=this.m_clusterVertices.createList(
1);return this.setClusterVertices_(t,s),e!==G.n&&(this.m_clusterVertices.addElement(s,e),this.m_shape.setUserIndex(e,this.m_vertexClusterIndex,t)),t}deleteCluster_(e){this.m_clusters.deleteElement(e)}addVertexToCluster_(e,t){let s=this.getClusterVertices(e);this.m_clusterVertices.addElement(s,t),this.m_shape.setUserIndex(t,this.m_vertexClusterIndex,e)}newEdge_(e){let t=this.m_edges.newElement(),s=this.m_edgeVertices.createList();return this.setEdgeOriginVertices_(t,s),-1!==e&&this.m_edgeVertices.addElement(s,e),t}addVertexToEdge_(e,t){let s=this.getEdgeOriginVertices(e);this.m_edgeVertices.addElement(s,t)}deleteEdge_(e){this.m_edges.deleteElement(e);let t=this.m_edgesToInsertInSweepStructure.findIndex(t=>t===e);t>=0&&(0,b.N)(this.m_edgesToInsertInSweepStructure,t)}addEdgeToCluster(e,t){-1===this.getEdgeCluster(e,0)?this.setEdgeCluster_(e,0,t):-1===this.getEdgeCluster(e,1)?this.setEdgeCluster_(e,1,t):(0,I.d)(""),this.addEdgeToClusterImpl_(e,t)}addEdgeToClusterImpl_(e,t){let s=this.getClusterFirstEdge(t);if(-1!==s){let i=this.getNextEdge(s,t);this.setPrevEdge_(i,t,e),this.setNextEdge_(e,t,i),this.setNextEdge_(s,t,e),this.setPrevEdge_(e,t,s)}else this.setPrevEdge_(e,t,e),this.setNextEdge_(e,t,e),this.setClusterFirstEdge_(t,e)}getEdgeEnd(e,t){return+(this.getEdgeCluster(e,0)!==t)}mergeClusters_(e,t){this.dbgCheckCluster_(e),this.dbgCheckCluster_(t);let s=this.getClusterEventQNode(t);-1!==s&&(this.m_eventQ.deleteNode(s),this.setClusterEventQNode_(t,-1));let i=this.getClusterFirstEdge(e),r=this.getClusterFirstEdge(t);if(-1!==r){let s=r,n=r,a=!1;do{this.dbgCheckEdge_(s),a=!1;let i=this.getEdgeEnd(s,t),o=this.getNextEdgeEx(s,i);if(this.getEdgeCluster(s,i+1&1)===e){this.disconnectEdge_(s);let e=this.getEdgeOriginVertices(s);if(this.m_edgeVertices.deleteList(e),this.deleteEdge_(s),s===o){r=-1;break}r===s&&(r=this.getClusterFirstEdge(t),n=o,a=!0)}s=o}while(s!==n||a);if(-1!==r){do{let i=this.getEdgeEnd(s,t),r=this.getNextEdgeEx(s,i);this.setEdgeCluster_(s,i,e),s=r}while(s!==n);if(-1!==(i=this.getClusterFirstEdge(e))){let t=this.getNextEdge(i,e),s=this.getNextEdge(r,e);t===i?(this.setClusterFirstEdge_(e,r),this.addEdgeToClusterImpl_(i,e),this.setClusterFirstEdge_(e,i)):s===r&&this.addEdgeToClusterImpl_(r,e),this.setNextEdge_(r,e,t),this.setPrevEdge_(t,e,r),this.setNextEdge_(i,e,s),this.setPrevEdge_(s,e,i)}else this.setClusterFirstEdge_(e,r)}}let n=this.getClusterVertices(e),a=this.getClusterVertices(t);for(let t=this.m_clusterVertices.getFirst(a);-1!==t;t=this.m_clusterVertices.getNext(t)){let s=this.m_clusterVertices.getElement(t);this.m_shape.setUserIndex(s,this.m_vertexClusterIndex,e)}this.m_clusterVertices.concatenateLists(n,a),this.deleteCluster_(t),this.dbgCheckCluster_(e)}mergeEdges_(e,t){this.dbgCheckEdge_(e),this.dbgCheckEdge_(t);let s=this.getEdgeCluster(e,0),i=this.getEdgeCluster(e,1),r=this.getEdgeCluster(t,0),n=this.getEdgeCluster(t,1),a=this.getEdgeOriginVertices(e),o=this.getEdgeOriginVertices(t);if(this.m_edgeVertices.concatenateLists(a,o),t===this.getClusterFirstEdge(s)&&this.setClusterFirstEdge_(s,e),t===this.getClusterFirstEdge(i)&&this.setClusterFirstEdge_(i,e),this.disconnectEdge_(t),this.deleteEdge_(t),(s!==r||i!==n)&&(i!==r||s!==n)){let e=this.getClusterXY(s),t=this.getClusterXY(r);e.isEqualPoint2D(t)?(s!==r&&this.mergeClusters_(s,r),i!==n&&this.mergeClusters_(i,n)):(i!==r&&this.mergeClusters_(i,r),s!==n&&this.mergeClusters_(s,n))}this.dbgCheckEdge_(e)}disconnectEdge_(e){let t=this.getEdgeCluster(e,0),s=this.getEdgeCluster(e,1);this.disconnectEdgeFromCluster_(e,t),this.disconnectEdgeFromCluster_(e,s)}disconnectEdgeFromCluster_(e,t){let s=this.getNextEdge(e,t),i=this.getPrevEdge(e,t),r=this.getClusterFirstEdge(t);s!==e?(this.setNextEdge_(i,t,s),this.setPrevEdge_(s,t,i),r===e&&this.setClusterFirstEdge_(t,s)):this.setClusterFirstEdge_(t,-1)}applyIntersectorToEditShape_(e,t,s){let i=this.m_edgeVertices.getFirst(e),r=this.m_edgeVertices.getElement(i),n=this.getClusterFromVertex(r),a=this.m_shape.getNextVertex(r),o=this.getClusterFromVertex(a),l=this.m_shape.getXY(r),h=this.m_shape.getXY(a),m=!1,g=!1,u=t.getResultSegment(s,0).getStartXY(),_=t.getResultSegment(s,t.getResultSegmentCount(s)-1).getEndXY();l.equals(u)||(m=!0),h.equals(_)||(g=!0),this.m_shape.splitSegmentWithIntersector(r,t,s,!0,!0);let p=this.m_bTrackChanges&&t.getSegmentChanged(s);for(p&&this.m_shape.setGeometryModifiedWithVertex(r,!0),i=this.m_edgeVertices.getNext(i);-1!==i;i=this.m_edgeVertices.getNext(i)){let e=this.m_edgeVertices.getElement(i),r=this.getClusterFromVertex(e)===n;this.m_shape.splitSegmentWithIntersector(e,t,s,r,!0),p&&this.m_shape.setGeometryModifiedWithVertex(e,!0)}if(m&&this.updateClusterXY(!0,n,u,t.getResultSegmentStartPointWeight(s,0),t.getResultSegmentStartPointRank(s,0)),g){let e=t.getResultSegmentCount(s)-1;this.updateClusterXY(!0,o,_,t.getResultSegmentEndPointWeight(s,e),t.getResultSegmentEndPointRank(s,e))}}
1createEdgesAndClustersFromSplitEdge_(e,t,s){this.dbgCheckNewEdgesArray_();let i=this.getEdgeOriginVertices(e),r=this.getEdgeCluster(e,0),n=this.getEdgeCluster(e,1),a=this.newEdge_(-1);this.m_edgesToInsertInSweepStructure.push(a);let o=w.S.impossibleIndex3();this.setEdgeSweepNode_(a,o),this.m_tempEdgeBuffer.push(a),this.addEdgeToCluster(a,r);let l=t.getResultSegmentCount(s);for(let e=1;e<l;e++){let e=this.newCluster_(-1);this.m_modifiedClusters.push(e),this.m_tempEdgeBuffer.push(e),this.addEdgeToCluster(a,e);let t=this.newEdge_(-1);this.m_edgesToInsertInSweepStructure.push(t),this.setEdgeSweepNode_(t,o),this.m_tempEdgeBuffer.push(t),this.addEdgeToCluster(t,e),a=t}this.addEdgeToCluster(a,n);for(let e=this.m_edgeVertices.getFirst(i);-1!==e;e=this.m_edgeVertices.getNext(e)){let t=this.m_edgeVertices.getElement(e);if(this.getClusterFromVertex(t)===r){let e=0,s=this.m_tempEdgeBuffer.length;do{if(e>0){let s=this.m_tempEdgeBuffer[e-1];this.addVertexToCluster_(s,t)}let s=this.m_tempEdgeBuffer[e];e+=2,this.addVertexToEdge_(s,t),t=this.m_shape.getNextVertex(t)}while(e<s)}else{let e=this.m_tempEdgeBuffer.length-1;do{if(e<this.m_tempEdgeBuffer.length-2){let s=this.m_tempEdgeBuffer[e+1];this.addVertexToCluster_(s,t)}let s=this.m_tempEdgeBuffer[e];e-=2,this.addVertexToEdge_(s,t),t=this.m_shape.getNextVertex(t)}while(e>=0)}}this.m_tempEdgeBuffer.length=0,this.dbgCheckNewEdgesArray_()}getVertexFromClusterIndex(e){let t=this.getClusterVertices(e);return this.m_clusterVertices.getFirstElement(t)}getClusterFromVertex(e){return this.m_shape.getUserIndex(e,this.m_vertexClusterIndex)}processSplitHelper1_(e,t,s){let i=this.getEdgeCluster(t,0),r=this.getClusterXY(i),n=this.getEdgeCluster(t,1),a=this.getClusterXY(n),o=s.getResultSegmentCount(e),l=s.getResultSegment(e,0),h=l.getStartXY();if(r.isEqualPoint2D(h)||(!this.m_bComplications&&r.compare(this.m_sweepPoint)*h.compare(this.m_sweepPoint)<0&&(this.m_bComplications=!0),this.getAffectedEdges(i,this.m_tempEdgeBuffer),this.m_modifiedClusters.push(i)),!this.m_bComplications&&o>1){let e=r.compare(a),t=l.getEndXY();(r.compare(t)!==e||t.compare(a)!==e||0>t.compare(this.m_sweepPoint))&&(this.m_bComplications=!0)}let m=(l=s.getResultSegment(e,o-1)).getEndXY();a.isEqualPoint2D(m)||(!this.m_bComplications&&a.compare(this.m_sweepPoint)*m.compare(this.m_sweepPoint)<0&&(this.m_bComplications=!0),this.getAffectedEdges(n,this.m_tempEdgeBuffer),this.m_modifiedClusters.push(n)),this.m_tempEdgeBuffer.push(t);for(let e=0,s=this.m_tempEdgeBuffer.length;e<s;e++){let s=this.m_tempEdgeBuffer[e],i=this.getEdgeSweepNode(s);w.S.isValidElement(i)&&(this.m_sweepStructure.deleteNode(i),this.setEdgeSweepNode_(s,-1));let r=w.S.impossibleIndex3();s!==t&&this.getEdgeSweepNode(s)!==r&&(this.m_edgesToInsertInSweepStructure.push(s),this.setEdgeSweepNode_(s,r))}this.m_tempEdgeBuffer.length=0}checkAndFixIntersection_(e,t){let s=this.m_sweepStructure.getElement(e);return this.m_sweepComparator.compare(this.m_sweepStructure,s,t),!!this.m_sweepComparator.intersectionDetected()&&(this.m_sweepComparator.clearIntersectionDetectedFlag(),this.fixIntersection_(e,t),!0)}fixIntersection_(e,t){this.m_bCracked=!0;let s=this.m_sweepStructure.getElement(e),i=this.m_sweepStructure.getElement(t),r=null,n=null,a=this.getEdgeOriginVertices(s),o=this.m_edgeVertices.getFirstElement(a),l=this.getEdgeOriginVertices(i),h=this.m_edgeVertices.getFirstElement(l);this.m_shape.querySegment(o,this.m_segBuf1,!1,!1),r=this.m_segBuf1.get();let m=this.m_shape.getNextVertex(o),g=this.m_shape.getWeight(o),u=this.m_shape.getSegmentParentageBreakVertex(o),_=this.m_shape.getWeight(m),p=this.m_shape.getSegmentParentageBreakVertex(m),d=this.m_shape.getSegmentWeight(o),c=this.m_shape.getRank(o),f=this.m_shape.getRank(m),x=this.m_shape.getSegmentRank(o),P=this.m_shape.getSegmentParentage(o);this.m_shape.querySegment(h,this.m_segBuf2,!1,!1),n=this.m_segBuf2.get();let E=this.m_shape.getNextVertex(h),y=this.m_shape.getWeight(h),S=this.m_shape.getSegmentParentageBreakVertex(h),C=this.m_shape.getWeight(E),I=this.m_shape.getSegmentParentageBreakVertex(E),v=this.m_shape.getSegmentWeight(h),G=this.m_shape.getRank(h),w=this.m_shape.getRank(E),b=this.m_shape.getSegmentRank(h),T=this.m_shape.getSegmentParentage(h);this.m_segmentIntersector.pushSegment(r,g,c,_,f,d,x,u,p,P),this.m_segmentIntersector.pushSegment(n,y,G,C,w,v,b,S,I,T),3===this.m_segmentIntersector.intersect2D(this.m_tolerance,!0)&&(this.m_bComplications=!0),this.splitEdge_(s,i,-1,this.m_segmentIntersector),this.m_segmentIntersector.clear()}fixIntersectionPointSegment_(e,t){this.m_bCracked=!0;let s=this.m_sweepStructure.getElement(t),i=null,r=this.getEdgeOriginVertices(s),n=this.m_edgeVertices.getFirstElement(r);this.m_shape.querySegment(n,this.m_segBuf1,!1,!1),i=this.m_segBuf1.get();let a=this.m_shape.getNextVertex(n),o=this.m_shape.getWeight(n),l=this.m_shape.getSegmentParentageBreakVertex(n),h=this.m_shape.getWeight(a),m=this.m_shape.getSegmentParentageBreakVertex(a),g=this.m_shape.getSegmentWeight(n),u=this.m_shape.getRank(n),_=this.m_shape.getRank(a),p=this.m_shape.getSegmentRank(n),d=this.m_shape.getSegmentParentage(n),c=this.getClusterFirstVertex(e);this.m_segmentIntersector.pushSegment(i,o,u,h,_,g,p,l,m,d),this.m_shape.queryPoint(c,this.m_helperPoint);let f=this.m_shape.getWeight(c),x=this.m_shape.getRank(c);this.m_segmentIntersector.intersect2DEx(this.m_tolerance,this.m_helperPoint,x,f,!0),this.splitEdge_(s,-1,e,this.m_segmentIntersector),this.m_segmentIntersector.clear()}
1insertNewEdges_(){if(0===this.m_edgesToInsertInSweepStructure.length)return!0;this.dbgCheckNewEdgesArray_();let e=!0,t=0,s=Math.max(2*this.m_edgesToInsertInSweepStructure.length+200,this.m_sweepStructure.size()+200);for(;this.m_edgesToInsertInSweepStructure.length;){if(this.m_edgesToInsertInSweepStructure.length>Math.max(100,this.m_shape.getTotalPointCount())||t>s){this.m_edgesToInsertInSweepStructure.length=0,this.m_bComplications=!0,e=!1;break}let i=this.m_edgesToInsertInSweepStructure.at(-1);this.m_edgesToInsertInSweepStructure.pop(),this.setEdgeSweepNode_(i,-1);let r=this.isEdgeOnSweepLine_(i);w.S.isValidElement(r)?(this.insertNewEdgeToSweepStructure_(i,r),t++):r!==w.S.impossibleIndex2()&&(e=!1),this.m_bContinuingSegmentChainOptimization=!1}return e}insertNewEdgeToSweepStructure_(e,t){let s;if(this.m_bContinuingSegmentChainOptimization?(s=this.m_sweepStructure.addElementAtPosition(this.m_prevNeighbour,this.m_nextNeighbour,e,!0,!0),this.m_bContinuingSegmentChainOptimization=!1):s=this.m_sweepStructure.addUniqueElement(e),-1===s){let t=this.m_sweepStructure.getDuplicateElement(),s=this.m_sweepStructure.getElement(t);return this.mergeEdges_(s,e),!1}if(this.setEdgeSweepNode_(e,s),this.m_sweepComparator.intersectionDetected()){this.m_sweepComparator.clearIntersectionDetectedFlag();let e=this.m_sweepComparator.getLastComparedNode();return this.m_prevNeighbour===e&&(this.m_prevNeighbour=-1),this.m_nextNeighbour===e&&(this.m_nextNeighbour=-1),this.fixIntersection_(e,s),!0}return!1}isEdgeOnSweepLine_(e){let t=this.getEdgeCluster(e,0),s=this.getEdgeCluster(e,1),i=this.getClusterXY(t),r=this.getClusterXY(s);if(b.P.sqrDistance(i,r)<=this.m_toleranceSqr)return this.m_bComplications=!0,-1;let n=i.compare(this.m_sweepPoint),a=r.compare(this.m_sweepPoint);return n<=0&&a>0?s:a<=0&&n>0?t:n>0&&a>0?w.S.impossibleIndex2():-1}fillEventQueue(){let e=new w.A(0),t=this.m_shape.queryVertexIteratorOnSelection();for(let s=t.next();s!==G.n;s=t.next())-1!==this.m_shape.getUserIndex(s,this.m_vertexClusterIndex)&&e.add(s);this.m_shape.sortVerticesSimpleByY(e,0,e.size()),this.progress_(!0),this.m_eventQ.clear(),this.m_eventQ.setCapacity(e.size()),this.m_eventQ.setComparator(new eD(this.m_shape));let s=b.P.getNAN();s.setNAN();let i=-1;for(let t=0,r=e.size();t<r;t++){let r=e.read(t);if(this.m_shape.getXY(r).isEqualPoint2D(s)){let e=this.m_shape.getUserIndex(r,this.m_vertexClusterIndex);this.mergeClusters_(i,e);continue}i=this.getClusterFromVertex(r),this.m_shape.queryXY(r,s);let n=this.m_eventQ.addBiggestElement(r);this.setClusterEventQNode_(i,n)}}fillEventQueuePass2(){let e=new w.A(0);for(let t=this.m_eventQ.getFirst();-1!==t;t=this.m_eventQ.getNext(t)){let s=this.m_eventQ.getElement(t);e.add(s)}this.m_eventQ.clear(),this.m_shape.sortVerticesSimpleByY(e,0,e.size()),this.progress_(!0);for(let t=0,s=e.size();t<s;t++){let s=e.read(t),i=this.getClusterFromVertex(s),r=this.m_eventQ.addBiggestElement(s);this.setClusterEventQNode_(i,r)}}getAffectedEdges(e,t){let s=this.getClusterFirstEdge(e);if(-1===s)return;let i=s;do{let s=this.getEdgeSweepNode(i);w.S.isValidElement(s)&&t.push(i),i=this.getNextEdge(i,e)}while(i!==s)}updateClusterXY(e,t,s,i,r){let n=this.getClusterVertices(t);for(let t=this.m_clusterVertices.getFirst(n);-1!==t;t=this.m_clusterVertices.getNext(t)){let n=this.m_clusterVertices.getElement(t);this.m_shape.setXYMonotonicPoint2D(n,s),this.m_shape.setWeight(n,i),this.m_shape.setRank(n,r),e&&this.m_bTrackChanges&&this.m_shape.setGeometryModifiedWithVertex(n,!0),this.m_shape.setSegmentParentageBreakVertex(n,!0)}}splitEdge_(e,t,s,i){this.dbgCheckEdge_(e),-1!==t&&this.dbgCheckEdge_(t),this.disconnectEdge_(e),-1!==t&&this.disconnectEdge_(t),this.processSplitHelper1_(0,e,i),-1!==t&&this.processSplitHelper1_(1,t,i),-1!==s&&i.getResultPointChanged()&&this.m_modifiedClusters.push(s);for(let e=0,t=this.m_modifiedClusters.length;e<t;e++){let t=this.m_modifiedClusters[e],s=this.getClusterEventQNode(t);-1!==s&&(this.m_eventQ.deleteNode(s),this.setClusterEventQNode_(t,-1))}let r=this.getEdgeOriginVertices(e),n=-1!==t?this.getEdgeOriginVertices(t):-1;if(this.applyIntersectorToEditShape_(r,i,0),-1!==n)this.applyIntersectorToEditShape_(n,i,1
1);else{let e=i.getResultPoint().getXY();this.updateClusterXY(i.getResultPointChanged(),s,e,i.getResultPointWeight(),i.getResultPointRank())}this.createEdgesAndClustersFromSplitEdge_(e,i,0),-1!==t&&this.createEdgesAndClustersFromSplitEdge_(t,i,1),this.m_edgeVertices.deleteList(r),this.deleteEdge_(e),-1!==t&&(this.m_edgeVertices.deleteList(n),this.deleteEdge_(t));for(let e=0,t=this.m_modifiedClusters.length;e<t;e++){let t=this.m_modifiedClusters[e];t===this.m_sweepPointCluster&&(this.m_bSweepPointClusterWasModified=!0);let s=this.getClusterEventQNode(t);if(-1===s){let e=this.getClusterFirstVertex(t);if(-1===(s=this.m_eventQ.addUniqueElement(e))){let e=this.m_eventQ.getDuplicateElement(),s=this.m_eventQ.getElement(e),i=this.getClusterFromVertex(s);this.mergeClusters_(i,t)}else this.setClusterEventQNode_(t,s)}}this.m_modifiedClusters.length=0}getClusterXY(e){let t=this.getClusterFirstVertex(e);return this.m_shape.getXY(t)}getClusterFirstVertex(e){let t=this.getClusterVertices(e);return this.m_clusterVertices.getFirstElement(t)}dbgCheckEdge_(e){}dbgCheckCluster_(e){}dbgCheckNewEdgesArray_(){}dbgSaveSweepStructure_(e){}sweepImpl_(){this.progress_(!0),this.m_bSweepPointClusterWasModified=!1,this.m_sweepPointCluster=-1,null===this.m_sweepComparator&&(this.m_sweepStructure.disableBalancing(),this.m_sweepComparator=new eT(this),this.m_sweepStructure.setComparator(this.m_sweepComparator));let e=[],t=null,s=null;this.m_prevNeighbour=-1,this.m_nextNeighbour=-1,this.m_bContinuingSegmentChainOptimization=!1;let i=w.S.impossibleIndex2(),r=w.S.impossibleIndex3();for(let n=this.m_eventQ.getFirst();-1!==n;){this.progress_(),this.dbgCheckSweepStructure_(),this.m_bContinuingSegmentChainOptimization=!1,this.m_prevNeighbour=-1,this.m_nextNeighbour=-1;let a=this.m_eventQ.getElement(n);this.m_sweepPointCluster=this.getClusterFromVertex(a),this.m_shape.queryXY(a,this.m_sweepPoint),this.m_sweepComparator.setSweepY(this.m_sweepPoint.y,this.m_sweepPoint.x);let o=!1;{let t=this.getClusterFirstEdge(this.m_sweepPointCluster);if(!(o=-1===t)){let s=t;do{let t=this.getEdgeSweepNode(s);-1===t?(this.m_edgesToInsertInSweepStructure.push(s),this.setEdgeSweepNode_(s,r)):t!==r&&e.push(t),s=this.getNextEdge(s,this.m_sweepPointCluster)}while(s!==t)}}if(!this.m_sweepStructure.isAutoBalancing()&&(this.m_sweepStructure.getMaxDepthEver()>4||this.m_edgesToInsertInSweepStructure.length>10)&&this.m_sweepStructure.enableBalancing(),e.length>0){this.m_bContinuingSegmentChainOptimization=1===e.length&&1===this.m_edgesToInsertInSweepStructure.length;for(let t=0,s=e.length;t<s;t++){let s=this.m_sweepStructure.getElement(e[t]);this.setEdgeSweepNode_(s,i)}let t=i,s=i;for(let r=0,n=e.length;r<n;r++){let n=e[r];if(t===i){let e=this.m_sweepStructure.getPrev(n);if(-1!==e){let s=this.m_sweepStructure.getElement(e);this.getEdgeSweepNode(s)!==i&&(t=e)}else t=-1}if(s===i){let e=this.m_sweepStructure.getNext(n);if(-1!==e){let t=this.m_sweepStructure.getElement(e);this.getEdgeSweepNode(t)!==i&&(s=e)}else s=-1}if(t!==i&&s!==i)break}for(let t=0,s=e.length;t<s;t++){let s=e[t],i=this.m_sweepStructure.getElement(s);this.m_sweepStructure.deleteNode(s),this.setEdgeSweepNode_(i,-1)}e.length=0,this.m_prevNeighbour=t,this.m_nextNeighbour=s,-1!==t&&-1!==s?this.m_bContinuingSegmentChainOptimization||this.checkAndFixIntersection_(t,s):-1===t&&-1===s&&(this.m_bContinuingSegmentChainOptimization=!1)}else o&&(null===t&&(t=new eN(this)),t.setPoint(this.m_sweepPoint),this.m_sweepStructure.searchUpperBound(t),t.intersectionDetected()&&(t.clearIntersectionDetectedFlag(),this.fixIntersectionPointSegment_(this.m_sweepPointCluster,t.getCurrentNode())));let l=this.m_bContinuingSegmentChainOptimization;!this.insertNewEdges_()&&l&&-1!==this.m_prevNeighbour&&-1!==this.m_nextNeighbour&&this.checkAndFixIntersection_(this.m_prevNeighbour,this.m_nextNeighbour),this.m_bSweepPointClusterWasModified?(this.m_bSweepPointClusterWasModified=!1,null===s&&(s=new eV(this.m_shape)),s.setPoint(this.m_sweepPoint),n=this.m_eventQ.searchUpperBound(s)):n=this.m_eventQ.getNext(n)}return this.m_bCracked}setEditShape_(e){this.m_shape=e,this.m_vertexClusterIndex=this.m_shape.createUserIndex(),this.m_edges.setCapacity(e.getSelectedCount()+32),this.m_cluster
1s.setCapacity(e.getSelectedCount()),this.m_clusterVertices.reserveLists(e.getSelectedCount()),this.m_clusterVertices.reserveNodes(e.getSelectedCount()),this.m_edgeVertices.reserveLists(e.getSelectedCount()+32),this.m_edgeVertices.reserveNodes(e.getSelectedCount()+32);for(let t=this.m_shape.getFirstGeometry();t!==G.n;t=this.m_shape.getNextGeometry(t))if((0,I.h)(this.m_shape.getGeometryType(t)))for(let s=this.m_shape.getFirstPath(t);s!==G.n;s=this.m_shape.getNextPath(s)){let t=this.m_shape.getPathSize(s),i=this.m_shape.getFirstVertex(s);if(i===G.n)continue;let r=this.m_shape.getNextVertex(i);if(r===G.n||r===i)continue;let n=-1;e.selected(i)&&(n=this.newCluster_(i));let a=-1;-1!==n&&e.selected(r)&&(a=this.newEdge_(i),this.addEdgeToCluster(a,n));let o=a;for(let e=0,s=t-2;e<s;e++){let e=this.m_shape.getNextVertex(r),t=-1;if(this.m_shape.selected(r)){let s=this.newCluster_(r);-1!==o&&this.addEdgeToCluster(o,s),this.m_shape.selected(e)&&(t=this.newEdge_(r),this.addEdgeToCluster(t,s))}o=t,r=e}if(this.m_shape.isClosedPath(s)){let e=this.m_shape.getNextVertex(r);if(this.m_shape.selected(r)){let t=this.newCluster_(r);if(-1!==o&&this.addEdgeToCluster(o,t),this.m_shape.selected(e)){let e=this.newEdge_(r);this.addEdgeToCluster(e,t),this.addEdgeToCluster(e,n)}}}else{let e=-1;this.m_shape.selected(r)&&(e=this.newCluster_(r),-1!==o&&this.addEdgeToCluster(o,e))}}else for(let e=this.m_shape.getFirstPath(t);e!==G.n;e=this.m_shape.getNextPath(e)){let t=this.m_shape.getFirstVertex(e);for(let s=0,i=this.m_shape.getPathSize(e);s<i;s++)this.m_shape.selected(t)&&this.newCluster_(t),t=this.m_shape.getNextVertex(t)}this.fillEventQueue()}progress_(e=!1){}dbgCheckSweepStructure_(){}}function eH(e,t,s){return{vertex0:e,vertex1:t,dir:s}}class ek{constructor(e){this.m_shape=null,this.m_spikes=[],this.m_points=new w.A(0),this.m_pointsIndex=-1,this.m_dissolvedEdges=0,this.m_progressTracker=e}executeImpl_(e,t){if(this.m_shape=e,2>e.getPathCount(t)&&6>e.getPointCount(t))return;this.m_points.resize(0);for(let s=e.getFirstPath(t);s!==G.n;s=e.getNextPath(s)){let t=e.getFirstVertex(s);for(let i=0,r=e.getPathSize(s);i<r;i++,t=e.getNextVertex(t))this.m_points.add(t)}this.m_pointsIndex=e.createUserIndex();for(let t=0,s=this.m_points.size();t<s;++t)e.setUserIndex(this.m_points.read(t),this.m_pointsIndex,t);e.sortVerticesSimpleByY(this.m_points,0,this.m_points.size());let s=this.m_points.read(0),i=e.getXY(s),r=1,n=0,a=[];for(let t=1;t<this.m_points.size();t++){let o=this.m_points.read(t);if(o===G.n||-1===e.getUserIndex(o,this.m_pointsIndex))continue;let l=e.getXY(o);if(l.isEqualPoint2D(i))r++;else{if(r>1){for(let s=n;s<t;s++){let t=this.m_points.read(s);if(-1===e.getUserIndex(t,this.m_pointsIndex))continue;let r=e.getNextVertex(t),n=e.getPrevVertex(t);if(t!==r&&!e.isEqualXYPoint2D(r,i)){let e=eH(t,r,1);a.push(e)}if(t!==n&&n!==r&&!e.isEqualXYPoint2D(n,i)){let e=eH(t,n,-1);a.push(e)}}a.length>0&&this.processBunch_(a,i)}s=o,i.assign(l),r=1,n=t}}if(0===this.m_dissolvedEdges)return e.removeUserIndex(this.m_pointsIndex),void(this.m_pointsIndex=-1);let o=e.getPointCount(t);for(let t=0;t<this.m_points.size();t++){let s=this.m_points.read(t);if(s===G.n)continue;if(-1!==e.getUserIndex(s,this.m_pointsIndex)){e.setUserIndex(s,this.m_pointsIndex,-1);continue}let i=e.getPathFromVertex(s);e.getFirstVertex(i)===s&&e.setFirstVertex(i,G.n),e.freeVertex(s),this.m_points.write(t,G.n),o--}let l=e.createPathUserIndex(),h=e.getPathCount(t);for(let s=0,i=this.m_points.size();s<i;++s){if(this.m_points.read(s)===G.n)continue;let i=this.m_points.read(s);if(-1!==e.getUserIndex(i,this.m_pointsIndex))continue;let r=e.getPathFromVertex(i),n=-1;if(2===e.getPathUserIndex(r,l)){r=G.n;for(let t=e.getNextVertex(i);t!==i;t=e.getNextVertex(t)){let s=e.getPathFromVertex(t);if(2!==e.getPathUserIndex(s,l)){r=s,i=t;break}}r===G.n&&(r=e.insertPath(t,G.n),e.setClosedPath(r,!0),h++),(0,I.g)(r!==G.n)}e.setPathUserIndex(r,l,2),n=e.getFirstVertex(r);let a=0,o=!1,m=i;do{n===m&&(o=!0),e.setUserIndex(m,this.m_pointsIndex,1);let t=e.getPathFromVertex(m);t!==r&&(2!==e.getPathUserIndex(t,l)&&(e.setPathUserIndex(t,l,1),e.setFirstVertex(t,G.n)),e.setPathToVertex(m,r)),a++,m=e.getNextVertex(m)}while(m!==i);o||e.setFirstVertex(r,i),e.setPathSize(r,a)}for(let s=e.getFirstPath(t);s!==G.n;){let t=e.getNextPath(s);1!==e.getPathUserIndex(s,l)&&e.getFirstVertex(s)!==G.n||(e.removePathOnly(s),h--),s=t}e.setGeometryVertexCount(t,o),e.setGeometryPathCount(t,h),e.removePathUserIndex(l),e.removeUserIndex(this.m_pointsIndex),this.m_pointsIndex=-1,e.dbgVerifyVertexCounts(),e.filterClosePoints(0,!0,!1,!1,t)}processBunch_(e,t){e.sort((e,s)=>{let i=this.m_shape.getXY(e.vertex1).sub(t),r=this.m_shape.getXY(s.vertex1).sub(t),n=b.P.compareVectors(i,r);return 0===n?e.dir<s.dir?-1:1:n});let s=0,i=this.m_shape.getXY(e[0].vertex1),r=1,n=this.m_shape.hasCurves();for(let t=1,a=e.length;t<a;t++){let o=this.m_shape.getXY(e[t].vertex1);if(!(o.isEqualPoint2D(i)&&(r++,t+1<a))){if(2===r){let t=e[s],i=e[s+1],r=t.dir;if(r!==i.dir){let e=!0;if(n&&(e=!this.m_shape.isCurve(1===t.dir?t.vertex0:t.vertex1)&&!this.m_shape.isCurve(1===i.dir?i.vertex0:i.vertex1)),e){if(1===r){let e=t.vertex0,s=i.vertex0;this.m_shape.setNextVertex(e,s),this.m_shape.setPrevVertex(s,e),this.m_shape.getPrevVertex(e)===s&&(this.m_shape.setUserIndex(e,this.m_pointsIndex,-1),this.m_shape.setUserIndex(s,this.m_pointsIndex,-1));let r=t.vertex1,n=i.vertex1;this.m_shape.setPrevVertex(r,n),this.m_shape.setNextVertex(n,r),this.m_shape.getNextVertex(r)===n&&(this.m_shape.setUserIndex(r,this.m_pointsIndex,-1),this.m_shape.setUserIndex(n,this.m_pointsIndex,-1))}else{let e=t.vertex0,s=i.vertex0;this.m_shape.setPrevVertex(e,s),this.m_shape.setNextVertex(s,e),this.m_shape.getNextVertex(e)===s&&(this.m_shape.setUserIndex(e,this.m_pointsIndex,-1),this.m_shape.setUserIndex(s,this.m_pointsIndex,-1));let r=t.vertex1,n=i.vertex1;this.m_shape.setNextVertex(r,n),this.m_shape.setPrevVertex(n,r),this.m_shape.getPrevVertex(r)===n&&(this.m_shape.setUserIndex(r,this.m_pointsIndex,-1),this.m_shape.setUserIndex(n,this.m_pointsIndex,-1))}this.m_dissolvedEdges+=2}}}i.assign(o),s=t,r=1}}e.length=0}}function eA(e){for(let t=e.getFirstGeometry();t!==G.n;t=e.getNextGeometry(t))if((0,I.h)(e.getGeometryType(t)))return!0;return!1}function eM(e,t,s,i,r){if(!eA(t))return!1;let n=new eU(r);if(n.m_shape=t,n.m_tolerance=s,n.m_bAllowCoincident=e,n.m_bNeedsNonSimpleResult=null!==i,n.needsCrackingImpl_())return i&&i.assign(n.m_nonSimpleResult),!0;let a=new N.T;a.setSwapCoordinates(),t.applyTransformation(a),(n=new eU(r)).m_shape=t,n.m_tolerance=s,n.m_bAllowCoincident=e,n.m_bNeedsNonSimpleResult=null!==i;let o=n.needsCrackingImpl_();return t.applyTransformation(a),!!o&&(i&&i.assign(n.m_nonSimpleResult),!0)}class eU{crackBruteForce_(){let e=this.crackBruteForceImpl_();if(!e&&this.m_shape.hasCurves()){let t=new N.T;t.setSwapCoordinates(),this.m_shape.applyTransformation(t),e=this.crackBruteForceImpl_(),this.m_shape.applyTransformation(t)}return e}crackBruteForceImpl_(){let e=!1,t=new G.S,s=new G.S,i=v.Envelope2D.constructEmpty(),r=v.Envelope2D.constructEmpty(),n=new w.P,a=new eS,o=this.m_shape.getTotalPointCount(),l=o*o*2,h=this.m_shape.queryVertexIteratorOnSelection();for(let o=h.next();o!==G.n;o=h.next()){let m=this.m_shape.getGeometryType(h.currentGeometry()),g=1,u=1,_=1,p=0,d=0,c=0,f=this.m_shape.getSegmentParentage(o),x=!1,P=!1,E=null,y=!1;if((0,I.e)(m))g=this.m_shape.getWeight(o),p=this.m_shape.getRank(o);else{if(null===(E=this.getSegment_(o,t)))continue;let e=this.m_shape.getVertexIndex(o);g=this.m_shape.getWeightWithIndex(e),p=this.m_shape.getRankWithIndex(e),_=this.m_shape.getSegmentWeightWithIndex(e),c=this.m_shape.getSegmentRankWithIndex(e),x=this.m_shape.getSegmentParentageBreakVertex(o);{let e=this.m_shape.getNextVertex(o);u=this.m_shape.getWeight(e),d=this.m_shape.getRank(e),P=this.m_shape.getSegmentParentageBreakVertex(e)}if(E.queryLooseEnvelope(i),i.inflateCoords(this.m_tolerance,this.m_tolerance),E.isDegenerate(this.m_tolerance)){if(!E.isDegenerate(0))continue;y=!0,E=null}}let S=new G.V({copy:h}),C=S.next();C!==G.n&&(C=S.next());let v=0;for(;C!==G.n;C=S.next()){if(0!==v){v--;continue}if(this.m_shape.getTotalPointCount()>l)return e;this.progress_();let m=this.m_shape.getGeometryType(S.currentGeometry()),w=null,b=!1,T=0,N=0,D=0,V=0,F=0,H=0,k=!1,A=!1,M=this.m_shape.getSegmentParentage(C);if((0,I.e)(m))T=this.m_shape.getWeight(C),V=this.m_shape.getRank(C);else{if(null===(w=this.getSegment_(C,s)))continue;let e=this.m_shape.getVertexIndex(C);T=this.m_shape.getWeightWithIndex(e),V=this.m_shape.getRankWithIndex(e),D=this.m_shape.getSegmentWeightWithIndex(e),H=this.m_shape.getSegmentRankWithIndex(e),k=this.m_shape.getSegmentParentageBreakVertex(C);{let e=this.m_shape.getNextVertex(C);N=this.m_shape.getWeight(e),F=this.m_shape.getRank(e),A=this.m_shape.getSegmentParentageBreakVertex(e)}if(w.queryLooseEnvelope(r),w.isDegenerate(this.m_tolerance)){if(!w.isDegenerate(0))continue;b=!0,w=null}}let U=0,q=0;if(null!==E&&null!==w)i.isIntersectingNe(r)&&0!==(0,G.R)(!0,!0,E,w,this.m_tolerance,!0)&&(a.pushSegment(E,g,p,u,d,_,c,x,P,f),a.pushSegment(w,T,V,N,F,D,H,k,A,M),a.intersect2D(this.m_tolerance,!0),e||=a.getSegmentChanged(0)||a.getSegmentChanged(1),(U=a.getResultSegmentCount(0))+(q=a.getResultSegmentCount(1))>0&&(this.m_shape.splitSegmentWithIntersector(o,a,0,!0,!0),this.m_shape.splitSegmentWithIntersector(C,a,1,!0,!0),this.m_bTrackChanges&&(a.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(o,!0),a.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(C,!0))),q>1&&(v+=q-1),a.clear());else if(null!==E){let t=this.m_shape.getXY(C);if(i.contains(t)){if(a.pushSegment(E,g,p,u,d,_,c,x,P,f),this.m_shape.queryPoint(C,n),a.intersect2DEx(this.m_tolerance,n,V,T,!1),e||=a.getSegmentChanged(0)||a.getResultPointChanged(),(U=a.getResultSegmentCount(0))>0)if(this.m_bTrackChanges&&(a.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(o,!0),a.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(C,!0)),this.m_shape.splitSegmentWithIntersector(o,a,0,!0,!0),b){let e=G.n;for(let t=this.m_shape.getNextVertex(C);t!==G.n&&t!==C&&(w=this.getSegment_(t,s),e=t,null!=w&&w.isDegenerate(0));t=this.m_shape.getNextVertex(t));for(let t=C;t!==G.n&&(this.m_shape.setPoint(t,a.getResultPoint(),!0),t!==e);t=this.m_shape.getNextVertex(t));}else this.m_shape.setPoint(C,a.getResultPoint(),!0);a.clear()}}else{if(null===w)continue;{let t=this.m_shape.getXY(o);if(r.inflateCoords(this.m_tolerance,this.m_tolerance),r.contains(t)){if(a.pushSegment(w,T,V,N,F,D,H,k,A,M),this.m_shape.queryPoint(o,n),a.intersect2DEx(this.m_tolerance,n,p,g,!1),e||=a.getSegmentChanged(0)||a.getResultPointChanged(),(q=a.getResultSegmentCount(0))>0)if(this.m_bTrackChanges&&(a.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(C,!0),a.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(o,!0)),this.m_shape.splitSegmentWithIntersector(C,a,0,!0,!0),v+=q-1,y){let e=G.n;for(let t=this.m_shape.getNextVertex(o);t!==G.n&&t!==o&&(w=this.getSegment_(t,s),e=t,null!=w&&w.isDegenerate(0));t=this.m_shape.getNextVertex(t));for(let t=o;t!==G.n&&(this.m_shape.setPoint(t,a.getResultPoint(),!0),t!==e);t=this.m_shape.getNextVertex(t));}else this.m_shape.setPoint(o,a.getResultPoint(),!0);a.clear()}}}if(U+q!==0&&0!==U){let e=!1;for(;null!=(E=this.getSegment_(o,t))&&(E.queryEnvelope(i),E.isDegenerate(this.m_tolerance));){if(!(U>1)){e=!0;break}o=h.next(),U--,(0,I.g)(o!==G.n)}if(e)break}}}return e}crackerPlaneSweep_(){return this.planesweep_()}planesweep_(){return new eF(this.m_progressTracker,this.m_bTrackChanges).sweep(this.m_shape,this.m_tolerance)}needsCrackingImpl_(){let e=!1,t=new w.A(0);t.resize(this.m_shape.getSelectedCount());let s=this.m_shape.queryVertexIteratorOnSelection();for(let e=0,i=s.next();i!==G.n;++e,i=s.next())t.write(e,i);this.m_shape.sortVerticesSimpleByY(t,0,t.size()),t.add(G.n);let i=this.m_shape.createUserIndex(),r=this.m_shape.createUserIndex();this.m_sweepComparator=new e_(this.m_shape,this.m_tolerance,!this.m_bAllowCoincident),this.m_sweepStructure.setComparator(this.m_sweepComparator);let n=null,a=[],o=[],l=0,h=new b.P;for(let s=t.read(l++);s!==G.n;){this.m_shape.queryXY(s,h);let m=!1;do{let e=this.m_shape.getNextVertex(s),n=this.m_shape.getPrevVertex(s);m||=e!==G.n||n!==G.n,e===G.n||this.m_shape.selected(e)||(e=G.n),n===G.n||this.m_shape.selected(n)||(n=G.n),e!==G.n&&0>this.m_shape.compareVerticesSimpleY(s,e)&&(o.push(s),o.push(e)),n!==G.n&&0>this.m_shape.compareVerticesSimpleY(s,n)&&(o.push(n),o.push(n));let h=this.m_shape.getUserIndex(s,i);-1!==h&&(a.push(h),this.m_shape.setUserIndex(s,i,-1));let g=this.m_shape.getUserIndex(s,r);-1!==g&&(a.push(g),this.m_shape.setUserIndex(s,r,-1)),s=t.read(l++)}while(s!==G.n&&this.m_shape.isEqualXYPoint2D(s,h));if(!m&&(null===n&&(n=new ep(this.m_shape,this.m_tolerance)),n.setPoint(h),this.m_sweepStructure.searchUpperBound(n),n.intersectionDetected())){e=!0,this.m_bNeedsNonSimpleResult&&((0,I.d)("needsCrackingIMpl_"),this.m_nonSimpleResult=new H.NonSimpleResult(6,-1,-1));break}let g=1===a.length&&2===o.length;a.length>32&&(0,b.v)(a);let u=-1,_=-1;if(!g)for(let t=0,s=a.length;t<s;t++){let s=a[t],i=this.m_sweepStructure.getPrev(s);if(-1!==i&&-1===a.indexOf(i))if(-1===u)u=i;else{if(e=!0,!this.m_bNeedsNonSimpleResult)break;this.m_nonSimpleResult=new H.NonSimpleResult(6,-1,-1)}let r=this.m_sweepStructure.getNext(s);if(-1!==r&&-1===a.indexOf(r))if(-1===_)_=r;else{if(e=!0,!this.m_bNeedsNonSimpleResult)break;this.m_nonSimpleResult=new H.NonSimpleResult(6,-1,-1)}if(-1!==u&&-1!==_)break}if(e&&!this.m_bNeedsNonSimpleResult)break;if(this.m_sweepComparator.setSweepY(h.y,h.x),!g){for(let e=0,t=a.length;e<t;e++){let t=a[e];this.m_sweepStructure.deleteNode(t)}a.length=0}if(!g&&-1!==u&&-1!==_&&this.checkForIntersections_(u,_)){e=!0,this.m_bNeedsNonSimpleResult&&(this.m_nonSimpleResult=this.m_sweepComparator.getResult());break}for(let t=0,s=o.length;t<s;t+=2){let s,n=o[t],l=o[t+1];if(g?(s=this.m_sweepStructure.replaceElementAtPosition(a[0],n,!0,!0),a.length=0,g=!1):s=this.m_sweepStructure.addElement(n),this.m_sweepComparator.intersectionDetected()){this.m_bNeedsNonSimpleResult&&(this.m_nonSimpleResult=this.m_sweepComparator.getResult()),e=!0;break}-1===this.m_shape.getUserIndex(l,i)?this.m_shape.setUserIndex(l,i,s):this.m_shape.setUserIndex(l,r,s)}if(e)break;o.length=0}return this.m_shape.removeUserIndex(i),this.m_shape.removeUserIndex(r),e}checkForIntersections_(e,t){let s=this.m_sweepStructure.getElement(e);this.m_sweepComparator.compare(this.m_sweepStructure,s,t);let i=this.m_sweepComparator.intersectionDetected();return this.m_sweepComparator.clearIntersectionDetectedFlag(),i}getSegment_(e,t){return eU.st_getSegment(this.m_shape,e,t)}static st_getSegment(e,t,s){return e.querySegment(t,s,!1,!1)?s.get():null}dbgPrintSweepEdge(e){}dbgPrintSweepStructure(){}dbgSaveSweepStructure(e=null){}dbgCheckSweepStructure(){}progress_(e=!1){this.m_progressCounter++}crackAWithBMultiPath_(e,t,s){var i,r;let n,a=v.Envelope2D.constructEmpty();e.queryLooseEnvelope(a);let o=v.Envelope2D.constructEmpty();if(t.queryLooseEnvelope(o),o.inflateCoords(s,s),!o.isIntersecting(a))return e;let l=e.getImpl(),h=l.getAccelerators(),m=null;h&&(m=h.getQuadTree()),i=e,r=(0,I.v)(t),!((n=i.getPointCount())<16)&&2*n+Math.log(n)/Math.log(2)*1*r<n*r&&(m=(0,w.t)(l,o));let g=m?m.getIteratorForQT():null,u=t.querySegmentIterator(),_=e.querySegmentIterator(),p=(0,b.d)(15,NaN),d=[];for(;u.nextPath();)for(;u.hasNextSegment();){let e=u.nextSegment();if(m){g.resetIterator(e,s);for(let t=g.next();-1!==t;t=g.next()){this.progress_();let i=m.getElement(t);if(_.resetToVertex(i,-1),_.hasNextSegment()){let t=_.nextSegment().intersect(e,null,p,null,s);for(let e=0;e<t;e++){let t=p[e];if(0===t||1===t)continue;let s={t:t,index:_.getStartPointIndex()};d.push(s)}}}}else{let t=v.Envelope2D.constructEmpty();if(e.queryLooseEnvelope(t),t.inflateCoords(s,s),!a.isIntersecting(t))continue;for(_.resetToFirstPath();_.nextPath();)for(;_.hasNextSegment();){let i=_.nextSegment(),r=v.Envelope2D.constructEmpty();if(i.queryLooseEnvelope(r),!r.isIntersecting(t))continue;let n=i.intersect(e,null,p,null,s);for(let e=0;e<n;e++){let t=p[e];if(0===t||1===t)continue;let s={t:t,index:_.getStartPointIndex()};d.push(s)}}}}if(0===d.length)return e;d.sort((e,t)=>
1e.index<t.index?-1:e.index>t.index?1:e.t<t.t?-1:+(e.t>t.t));let c=e.createInstance();for(c.getGeometryType()===I.G.enumPolygon&&c.setFillRule(e.getFillRule()),_.resetToFirstPath();_.nextPath()&&!_.hasNextSegment(););(0,I.g)(_.hasNextSegment());let f=_.nextSegment(),x=new G.S,P=-1;for(let e=0,t=d.length;e<t;){let s=d[e].index,i=e+1;for(;i<t&&d[i].index===s;)++i;for(;_.getStartPointIndex()<s;){this.progress_();let e=_.hasNextSegment(),t=_.getPathIndex();if((e||!_.isClosingSegment()||_.isCurve())&&((0,I.g)(null!==f),c.addSegment(f,P!==t)),P=t,!e){for(_.isPathClosed();_.nextPath()&&!_.hasNextSegment(););(0,I.g)(_.hasNextSegment())}f=_.nextSegment()}let r=0;for(let t=e;t<i;t++){let e=d[t].t;if(e===r)continue;(0,I.g)(null!==f),f.queryCut(r,e,x),r=e;let s=_.getPathIndex();c.addSegment(x.get(),P!==s),P=s}let n=_.hasNextSegment();if((n||!_.isClosingSegment()||_.isCurve())&&((0,I.g)(null!=f),f.queryCut(r,1,x),c.addSegment(x.get(),!1)),n)f=_.nextSegment();else{for(;_.nextPath()&&!_.hasNextSegment(););f=_.hasNextSegment()?_.nextSegment():null}e=i}if(null!==f){let e=_.getPathIndex();(_.hasNextSegment()||!_.isClosingSegment()||_.isCurve())&&c.addSegment(f,P!==e),P=e}let E=_.hasNextSegment();for(;;){if(!E){for(;_.nextPath()&&!(E=_.hasNextSegment()););if(!E)break}f=_.nextSegment();let e=_.getPathIndex();((E=_.hasNextSegment())||!_.isClosingSegment()||_.isCurve())&&c.addSegment(f,P!==e),P=e}return c}constructor(e){this.m_shape=null,this.m_progressTracker=null,this.m_nonSimpleResult=new H.NonSimpleResult,this.m_tolerance=0,this.m_sweepComparator=null,this.m_progressCounter=0,this.m_bTrackChanges=!1,this.m_bNeedsNonSimpleResult=!1,this.m_bAllowCoincident=!0,this.m_sweepStructure=new w.T,this.m_progressTracker=e}}eU.s_bForceBruteForce=!0;class eq{constructor(e,t){this.m_monotoneParts=(0,b.m)(G.S,16),this.m_xOrds=(0,b.d)(16,NaN),this.m_inputPoint=b.P.getNAN(),this.m_miny=0,this.m_maxy=0,this.m_windnum=0,this.m_bAlternate=e,this.m_tolerance=t,this.m_toleranceSqr=t*t,this.m_bTestBorder=!!t,this.m_bBreak=!1}_DoOne(e){if(!this.m_bTestBorder&&(this.m_bAlternate&&this.m_inputPoint.equals(e.getStartXY())||this.m_inputPoint.equals(e.getEndXY())))return void(this.m_bBreak=!0);if(e.getStartY()===this.m_inputPoint.y&&e.getStartY()===e.getEndY()){if(this.m_bAlternate&&!this.m_bTestBorder){let t=Math.min(e.getStartX(),e.getEndX()),s=Math.max(e.getStartX(),e.getEndX());this.m_inputPoint.x>t&&this.m_inputPoint.x<s&&(this.m_bBreak=!0)}return}let t=!1,s=Math.max(e.getStartX(),e.getEndX());if(this.m_inputPoint.x>s)t=!0;else if(this.m_inputPoint.x>=Math.min(e.getStartX(),e.getEndX())){let i=e.intersectionOfYMonotonicWithAxisX(this.m_inputPoint.y,s);t=!Number.isNaN(i)&&i<=this.m_inputPoint.x}if(t){if(this.m_inputPoint.y===e.getStartY()){if(this.m_inputPoint.y<e.getEndY())return}else if(this.m_inputPoint.y===e.getEndY()&&this.m_inputPoint.y<e.getStartY())return;this.m_bAlternate?this.m_windnum^=1:this.m_windnum+=e.getStartY()>e.getEndY()?1:-1}}_Result(){return!!this.m_windnum}testBorder(e){let t=e.getClosestCoordinate(this.m_inputPoint,!1),s=e.getCoord2D(t);return b.P.sqrDistance(s,this.m_inputPoint)<=this.m_toleranceSqr}setInputPoint(e){this.m_inputPoint.setCoordsPoint2D(e),this.m_miny=e.y-this.m_tolerance,this.m_maxy=e.y+this.m_tolerance}processSegment(e){let t=e.queryInterval(0,1);if(t.vmin>this.m_maxy||t.vmax<this.m_miny)return!1;if(this.m_bTestBorder&&this.testBorder(e))return!0;if(t.vmin>this.m_inputPoint.y||t.vmax<this.m_inputPoint.y)return!1;let s=0;if(e.isCurve()&&(0===this.m_monotoneParts.length&&(this.m_monotoneParts.length=128),s=e.getMonotonicParts(this.m_monotoneParts,!0),(0,I.g)(this.m_monotoneParts.length>=s)),s>0)for(let e=0;e<s;e++){let t=this.m_monotoneParts[e].get(),s=b.E.construct(t.getStartY(),t.getEndY());if(!(s.vmin>this.m_inputPoint.y||s.vmax<this.m_inputPoint.y)&&(this._DoOne(t),this.m_bBreak))return!0}else if(this._DoOne(e),this.m_bBreak)return!0;return!1}result(){return(0,I.g)(0),2}}function eB(e,t,s){if(e.isEmpty())return 0;let i=v.Envelope2D.constructEmpty();if(e.queryLooseEnvelope(i),i.inflateCoords(s,s),!i.contains(t))return 0;let r=e.getImpl().getAccelerators();if(r){r.getRasterizedGeometry()&&(0,I.g)(0);let i=r.getQuadTree();if(i)return function(e,t,s,i){let r=new v.Envelope2D;e.queryLooseEnvelope(r),r.inflateCoords(i,i);let n=new eq(0===e.getFillRule(),i);n.setInputPoint(s);let a=r.clone();a.xmax=s.x+i,a.ymin=s.y-i,a.ymax=s.y+i;let o=e.getImpl().querySegmentIterator(),l=t.getIterator(a,i);for(let e=l.next();-1!==e;e=l.next())if(o.resetToVertex(t.getElement(e),-1),o.hasNextSegment()){let e=o.nextSegment();if(n.processSegment(e))return -1}return+!!n._Result()}(e,i,t,s)}let n=new eq(0===e.getFillRule(),s);n.setInputPoint(t);let a=e.getImpl().querySegmentIterator();for(;a.nextPath();)for(;a.hasNextSegment();){let e=a.nextSegment();if(n.processSegment(e))return -1}return+!!n._Result()}function eR(e,t){let s=e.getPointCount();return!(s<16)&&2*s+Math.log(s)/Math.log(2)*1*t<s*t}class eO{getDirection_(e){return this.m_shape.getNextVertex(this.getEnd1(e))===this.getEnd2(e)}getEnd_(e){let t=this.getEnd1(e),s=this.getEnd2(e);return this.m_shape.getNextVertex(t)===s?s:t}constructor(e){this.m_end1Nodes=[],this.m_end2Nodes=[],this.m_directions=[],this.m_shape=e,this.m_firstFree=-1}getSegment(e){return this.m_shape.getSegment(this.getStart(e))}isBottomUp(e){let t=this.getEnd1(e),s=this.getEnd2(e);this.m_shape.getPrevVertex(t)===s&&(s=(0,b.c)(t,t=s));let i=b.P.getNAN(),r=b.P.getNAN();return this.m_shape.queryXY(t,i),this.m_shape.queryXY(s,r),(0,I.g)(!i.equals(r)),i.y<r.y}getStart(e){let t=this.getEnd1(e),s=this.getEnd2(e);return this.m_shape.getNextVertex(t)===s?t:s}getEnd1(e){return this.m_end1Nodes[e]}getEnd2(e){return this.m_end2Nodes[e]}freeEdge(e){this.m_end1Nodes[e]=this.m_firstFree,this.m_firstFree=e}newEdge(e){if(-1!==this.m_firstFree){let t=this.m_firstFree;return this.m_firstFree=this.m_end1Nodes[t],this.m_end1Nodes[t]=e,this.m_end2Nodes[t]=this.m_shape.getNextVertex(e),t}let t=this.m_end1Nodes.length;return this.m_end1Nodes.push(e),this.m_end2Nodes.push(this.m_shape.getNextVertex(e)),t}getShape(){return this.m_shape}getPath(e){return this.m_shape.getPathFromVertex(this.getEnd1(e))}}let eY=class extends w.F{constructor(e){super(),this.m_line1=new G.L,this.m_line2=new G.L,this.m_leftElm=-1,this.m_leftx=0,this.m_seg1=null,this.m_helper=e}
1compare(e,t,s){let i,r=e.getElement(s),n=this.m_helper.m_edges;this.m_leftElm===t?i=this.m_leftx:((this.m_seg1=n.getSegment(t),this.m_seg1)?i=this.m_seg1.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0):(n.getShape().queryLineConnector(n.getStart(t),this.m_line1,!0),this.m_seg1=this.m_line1,i=this.m_line1.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0)),this.m_leftx=i,this.m_leftElm=t);let a,o=n.getSegment(r);if(o?a=o.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0):(n.getShape().queryLineConnector(n.getStart(r),this.m_line2,!0),o=this.m_line2,a=this.m_line2.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0)),i===a){let e=n.isBottomUp(t),s=n.isBottomUp(r),l=Math.min(e?this.m_seg1.getEndY():this.m_seg1.getStartY(),s?o.getEndY():o.getStartY()),h=.5*(l+this.m_helper.m_yScanline);h===this.m_helper.m_yScanline&&(h=l),(i=this.m_seg1.intersectionOfYMonotonicWithAxisX(h,0))===(a=o.intersectionOfYMonotonicWithAxisX(h,0))&&(0,I.z)("")}return i<a?-1:+(i>a)}reset(){this.m_leftElm=-1}};class eX{constructor(e){this.m_node=-1,this.m_index=0,this.m_sortedVertices=e.m_sortedVertices,this.m_sortedVerticesArray=e.m_sortedVerticesArray,this.m_sortedVertices&&(this.m_node=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList()))}next(){if(this.m_sortedVertices){let e=this.m_node;if(-1===e)return G.n;let t=this.m_sortedVertices.getData(e);return this.m_node=this.m_sortedVertices.getNext(e),t}if(this.m_index<this.m_sortedVerticesArray.size()){let e=this.m_sortedVerticesArray.read(this.m_index);return this.m_index++,e}return G.n}}class eL{constructor(e){this.m_edges=null,this.m_shape=null,this.m_AET=new w.T,this.m_yScanline=0,this.m_geometry=G.n,this.m_unknownRingOrientationCount=-1,this.m_sortedVertices=null,this.m_sortedVerticesArray=null,this.m_unknownNodes=[],this.m_node1UserIndex=-1,this.m_node2UserIndex=-1,this.m_pathOrientationIndex=-1,this.m_pathParentageIndex=-1,this.m_pathParentsIndex=-1,this.m_progressCounter=0,this.m_bFixSelfTangency=!1,this.m_progressTracker=e,this.m_AET.disableBalancing(),this.m_sweepComparator=new eY(this),this.m_AET.setComparator(this.m_sweepComparator)}fixRingOrientation_(){let e=this.fixRingOrientationImplMain_();return -1===this.m_pathOrientationIndex||this.fixRingOrientationImplSimplify_(),e}fixRingOrientationForMp2sp_(){return this.fixRingOrientationImplMain_(),-1===this.m_pathOrientationIndex?-1:this.fixRingOrientationImplMp2sp_()}processBunchForRingOrientationTest_(e){return this.processBunchForRingOrientationTestOddEven_(e)}processBunchForRingOrientationTestOddEven_(e){let t=!1;if(this.m_edges||(this.m_edges=new eO(this.m_shape)),this.m_unknownNodes.length=0,this.processBunchForRingOrientationRemoveEdges_(e),!this.m_AET.isAutoBalancing()){let t=0;for(let s=0,i=e.length;s<i;s++)-1!==e[s]&&t++;(t>10||this.m_AET.getMaxDepthEver()>4)&&this.m_AET.enableBalancing()}for(let t=0,s=e.length;t<s;t++){let s=e[t];s!==G.n&&this.insertEdge_(s,-1)}for(let e=0;e<this.m_unknownNodes.length&&this.m_unknownRingOrientationCount>0;e++){let s=this.m_unknownNodes[e],i=this.m_AET.getElement(s),r=this.m_edges.getPath(i),n=this.m_shape.getPathUserIndex(r,this.m_pathOrientationIndex),a=G.n;if(0===n){let e=this.m_AET.getPrev(s),i=s,r=!1;for(;e!==w.T.st_nullNode();){let t=this.m_AET.getElement(e),s=this.m_edges.getPath(t);if(0!==this.m_shape.getPathUserIndex(s,this.m_pathOrientationIndex)){a=s;break}i=e,e=this.m_AET.getPrev(e)}if(e===w.T.st_nullNode())r=!0,e=i;else{let t=this.m_AET.getElement(e);r=this.m_edges.isBottomUp(t),e=this.m_AET.getNext(e),r=!r}do{let s=this.m_AET.getElement(e),n=this.m_edges.getPath(s);if(0===this.m_shape.getPathUserIndex(n,this.m_pathOrientationIndex)){if(r!==this.m_edges.isBottomUp(s)){let e=this.m_shape.getFirstVertex(n);this.m_shape.reverseRingInternal(e),this.m_shape.setLastVertex(n,this.m_shape.getPrevVertex(e)),t=!0}if(this.m_shape.setPathUserIndex(n,this.m_pathOrientationIndex,r?3:2),!r){let e=this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex);2===e&&(a=this.m_shape.getPathUserIndex(a,this.m_pathParentsIndex),e=this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex)),(0,I.g)(3===e);let t=this.m_shape.getPathUserIndex(a,this.m_pathParentageIndex);this.m_shape.setPathUserIndex(a,this.m_pathParentageIndex,n),this.m_shape.setPathUserIndex(n,this.m_pathParentageIndex,t),this.m_shape.setPathUserIndex(n,this.m_pathParentsIndex,a)}if(this.m_unknownRingOrientationCount--,!this.m_unknownRingOrientationCount)return t}a=n,i=e,e=this.m_AET.getNext(e),r=!r}while(i!==s)}}return t}processBunchForRingOrientationRemoveEdges_(e){for(let t=0,s=e.length;t<s;t++){let s=e[t],i=this.m_shape.getUserIndex(s,this.m_node1UserIndex),r=this.m_shape.getUserIndex(s,this.m_node2UserIndex);if(-1!==i){let e=this.m_AET.getElement(i);this.m_edges.freeEdge(e),this.m_shape.setUserIndex(s,this.m_node1UserIndex,-1)}if(-1!==r){let e=this.m_AET.getElement(r);this.m_edges.freeEdge(e),this.m_shape.setUserIndex(s,this.m_node2UserIndex,-1)}let n=-1;-1!==i&&-1!==r?(this.m_AET.deleteNode(i),this.m_AET.deleteNode(r),e[t]=G.n):n=-1!==i?i:r,-1!==n&&(this.insertEdge_(s,n)||this.m_AET.deleteNode(n),e[t]=G.n)}}dbgVerifyRingOrientation_(){}
1insertEdge_(e,t){let s=b.P.getNAN(),i=b.P.getNAN();this.m_shape.queryXY(e,s);let r=this.m_shape.getNextVertex(e);this.m_shape.queryXY(r,i);let n=!1;if(s.y<i.y){let s;n=!0;let i=this.m_edges.newEdge(e);-1===t?s=this.m_AET.addElement(i):(s=t,this.m_AET.setElement(s,i)),-1===this.m_shape.getUserIndex(r,this.m_node1UserIndex)?this.m_shape.setUserIndex(r,this.m_node1UserIndex,s):this.m_shape.setUserIndex(r,this.m_node2UserIndex,s);let a=this.m_shape.getPathFromVertex(e);0===this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex)&&this.m_unknownNodes.push(s)}let a=this.m_shape.getPrevVertex(e);if(this.m_shape.queryXY(a,i),s.y<i.y){let s;n=!0;let i=this.m_edges.newEdge(a);-1===t?s=this.m_AET.addElement(i):(s=t,this.m_AET.setElement(s,i)),-1===this.m_shape.getUserIndex(a,this.m_node1UserIndex)?this.m_shape.setUserIndex(a,this.m_node1UserIndex,s):this.m_shape.setUserIndex(a,this.m_node2UserIndex,s);let r=this.m_shape.getPathFromVertex(e);0===this.m_shape.getPathUserIndex(r,this.m_pathOrientationIndex)&&this.m_unknownNodes.push(s)}return n}fixRingSelfTangency_(){let e=[],t=[],s=-1,i=-1,r=new b.P,n=G.n,a=G.n,o=-1,l=new eX(this);for(let h=l.next();h!==G.n;h=l.next()){let l=new b.P;this.m_shape.queryXY(h,l);let m=this.m_shape.getPathFromVertex(h);r.equals(l)&&a===m?(-1===i&&(s=this.m_shape.createPathUserIndex(),this.m_shape.fillPathUserIndexForGeometry(this.m_geometry,s,-1),i=this.m_shape.createUserIndex(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,i,-1)),-1===o&&(o=t.length,this.m_shape.setUserIndex(n,i,o),t.push(1),-1===this.m_shape.getPathUserIndex(m,s)&&(this.m_shape.setPathUserIndex(m,s,n),e.push(m))),this.m_shape.setUserIndex(h,i,o),t[t.length-1]++):(o=-1,r.assign(l)),n=h,a=m}if(0===e.length)return!1;(0,I.g)(-1!==s);for(let r=0,n=e.length;r<n;r++){let n=e[r],a=this.m_shape.getPathUserIndex(n,s),o=this.m_shape.getUserIndex(a,i),l=[],h=[];l.push(a),h.push(o);for(let e=this.m_shape.getNextVertex(a);e!==a;e=this.m_shape.getNextVertex(e)){let s=e,r=this.m_shape.getUserIndex(s,i);if(-1!==r){if(0===h.length){h.push(r),l.push(s);continue}if(h.at(-1)===r){let n=l.at(-1);this.m_shape.peelALoopIntoAPath(n,s),this.m_shape.setUserIndex(e,i,-1),t[r]--,1===t[r]&&(t[r]=0,h.pop(),l.pop()),a=n,e=n}else l.push(e),h.push(r)}}}return this.m_shape.removePathUserIndex(s),this.m_shape.removeUserIndex(i),this.m_shape.dbgVerifyVertexCounts(),!0}progress_(e=!1){}fixRingOrientationImplMain_(){let e={stack:[],error:void 0,hasError:!1};try{let t,s=!1,i=(0,T.mS)(e,(0,b.h)(()=>{this.m_sortedVerticesArray=null}),!1);if(null===this.m_sortedVertices){let e=this.m_shape.getPointCount(this.m_geometry);t=new w.A(0);for(let e=this.m_shape.getFirstPath(this.m_geometry);e!==G.n;e=this.m_shape.getNextPath(e)){let s=this.m_shape.getFirstVertex(e);for(let i=0,r=this.m_shape.getPathSize(e);i<r;i++)t.add(s),s=this.m_shape.getNextVertex(s)}this.m_shape.sortVerticesSimpleByY(t,0,e),this.progress_(!0),this.m_sortedVerticesArray=t}else i.bForget=!0;if(this.m_bFixSelfTangency&&(s=this.fixRingSelfTangency_()),1===this.m_shape.getPathCount(this.m_geometry)){let e=this.m_shape.getFirstPath(this.m_geometry),t=this.m_shape.getRingArea(e);if(this.m_shape.setExterior(e,!0),t<0){let t=this.m_shape.getFirstVertex(e);return this.m_shape.reverseRingInternal(t),this.m_shape.setLastVertex(e,this.m_shape.getPrevVertex(t)),!0}return!1}this.m_shape.dbgVerifyCurves(),this.m_pathOrientationIndex=this.m_shape.createPathUserIndex(),this.m_pathParentageIndex=this.m_shape.createPathUserIndex(),this.m_pathParentsIndex=this.m_shape.createPathUserIndex();for(let e=this.m_shape.getFirstPath(this.m_geometry);e!==G.n;e=this.m_shape.getNextPath(e))this.m_shape.setPathUserIndex(e,this.m_pathOrientationIndex,0),this.m_shape.setPathUserIndex(e,this.m_pathParentageIndex,-1),this.m_shape.setPathUserIndex(e,this.m_pathParentsIndex,-1);let r=[];this.m_yScanline=NaN;let n=b.P.getNAN();this.m_unknownRingOrientationCount=this.m_shape.getPathCount(this.m_geometry),this.m_node1UserIndex=this.m_shape.createUserIndexUninitialized(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,this.m_node1UserIndex,-1),this.m_node2UserIndex=this.m_shape.createUserIndexUninitialized(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,this.m_node2UserIndex,-1);let a=new eX(this);for(let e=a.next();e!==G.n&&(this.progress_(),this.m_shape.queryXY(e,n),n.y!==this.m_yScanline&&r.length&&(s=this.processBunchForRingOrientationTest_(r)||s,this.m_sweepComparator.reset(),r.length=0),r.push(e),this.m_yScanline=n.y,0!==this.m_unknownRingOrientationCount);e=a.next());return this.m_unknownRingOrientationCount>0&&(s=this.processBunchForRingOrientationTest_(r)||s,r.length=0),this.m_shape.removeUserIndex(this.m_node1UserIndex),this.m_shape.removeUserIndex(this.m_node2UserIndex),this.dbgVerifyRingOrientation_(),s}catch(t){e.error=t,e.hasError=!0}finally{(0,T.hk)(e)}}
1fixRingOrientationImplSimplify_(){let e=[];for(let t=this.m_shape.getFirstPath(this.m_geometry);t!==G.n;)if(this.progress_(),3===this.m_shape.getPathUserIndex(t,this.m_pathOrientationIndex)){this.m_shape.setExterior(t,!0);for(let s=this.m_shape.getPathUserIndex(t,this.m_pathParentageIndex);s!==G.n;){let i=this.m_shape.getPathUserIndex(s,this.m_pathParentageIndex);e.push(s),this.m_shape.setExterior(s,!1),this.m_shape.setPathUserIndex(s,this.m_pathParentageIndex,t),s=i}let s=t,i=e.length;for(let e=this.m_shape.getNextPath(t);i>0&&e!==G.n;e=this.m_shape.getNextPath(e),--i){if(this.m_shape.getPathUserIndex(e,this.m_pathParentageIndex)!==t){s=G.n;break}s=e}if(0!==i){s=t;for(let t=0,i=e.length;t<i;t++){let i=e[t];this.m_shape.setPathUserIndex(i,this.m_pathParentageIndex,w.J),this.m_shape.movePath(this.m_geometry,this.m_shape.getNextPath(s),i),s=i}}e.length=0,t=this.m_shape.getNextPath(s)}else t=this.m_shape.getNextPath(t);this.m_shape.removePathUserIndex(this.m_pathOrientationIndex),this.m_shape.removePathUserIndex(this.m_pathParentageIndex),this.m_shape.removePathUserIndex(this.m_pathParentsIndex)}fixRingOrientationImplMp2sp_(){let e=this.m_shape.createPathUserIndex(),t=0,s=[];for(let i=this.m_shape.getFirstPath(this.m_geometry);i!==G.n;)if(this.progress_(),3===this.m_shape.getPathUserIndex(i,this.m_pathOrientationIndex)){this.m_shape.setExterior(i,!0),this.m_shape.setPathUserIndex(i,e,t),t++;for(let e=this.m_shape.getPathUserIndex(i,this.m_pathParentageIndex);e!==G.n;){let t=this.m_shape.getPathUserIndex(e,this.m_pathParentageIndex);s.push(e),this.m_shape.setExterior(e,!1),this.m_shape.setPathUserIndex(e,this.m_pathParentageIndex,i),e=t}let r=i,n=s.length,a=t;for(let t=this.m_shape.getNextPath(i);n>0&&t!==G.n;t=this.m_shape.getNextPath(t),--n){if(this.m_shape.getPathUserIndex(t,this.m_pathParentageIndex)!==i){r=G.n;break}r=t,this.m_shape.setPathUserIndex(t,e,-a),a++}if(0!==n){r=i,a=t;for(let t=0,i=s.length;t<i;t++){let i=s[t];this.m_shape.setPathUserIndex(i,e,-a),a++,this.m_shape.setPathUserIndex(i,this.m_pathParentageIndex,w.J)}r=i}t=a,s.length=0,i=this.m_shape.getNextPath(r)}else i=this.m_shape.getNextPath(i);return this.m_shape.removePathUserIndex(this.m_pathOrientationIndex),this.m_shape.removePathUserIndex(this.m_pathParentageIndex),this.m_shape.removePathUserIndex(this.m_pathParentsIndex),e}}function ez(e,t,s,i,r,n){let a=new eW(n);return a.m_shape=e,a.m_geometry=t,a.m_knownSimpleResult=s,a.m_bFixSelfTangency=i,a.m_polylineDegeneracies=r,a.m_bHasSegmentParentage=e.hasSegmentParentage(),a.m_bHasSegments=e.hasCurves(),a.simplify_()}class eW{constructor(e){this.m_shape=null,this.m_geometry=G.n,this.m_sortedVertices=new w.I,this.m_bunchEdgeEndPoints=[],this.m_bunchEdgeCenterPoints=[],this.m_bunchEdgeIndices=[],this.m_sorterSegmentBuffer1=null,this.m_sorterSegmentBuffer2=null,this.m_knownSimpleResult=-1,this.m_sortedVerticesListIndex=-1,this.m_polylineDegeneracies=G.n,this.m_userIndexSortedIndexToVertex=-1,this.m_userIndexSortedAngleIndexToVertex=-1,this.m_nextVertexToProcess=-1,this.m_firstCoincidentVertex=-1,this.m_progressCounter=0,this.m_bFixSelfTangency=!1,this.m_bHasSegmentParentage=!1,this.m_bHasSegments=!1,this.m_progressTracker=e}compareAngles_(e,t){return this.m_bHasSegments?this.compareAnglesCurves_(e,t):this.compareAnglesLines_(e,t)}compareAnglesLines_(e,t){let s=this.m_bunchEdgeEndPoints[e],i=new b.P;this.m_shape.queryXY(s,i);let r=new b.P,n=this.m_bunchEdgeEndPoints[t];if(this.m_shape.queryXY(n,r),i.equals(r))return 0;let a=this.m_bunchEdgeCenterPoints[e],o=new b.P;this.m_shape.queryXY(a,o);let l=this.m_bunchEdgeCenterPoints[t],h=new b.P;this.m_shape.queryXY(l,h);let m=new b.P;m.setSub(i,o);let g=new b.P;return g.setSub(r,h),(m.isZero()||g.isZero())&&(0,I.z)(""),b.P.compareVectors(m,g)}compareAnglesCurves_(e,t){let s=this.m_bunchEdgeEndPoints[e],i=this.m_bunchEdgeEndPoints[t],r=this.m_bunchEdgeCenterPoints[e],n=this.m_bunchEdgeCenterPoints[t],a=this.m_shape.getNextVertex(r)===s,o=this.m_shape.getNextVertex(n)===i,l=a?this.m_shape.isCurve(r):this.m_shape.isCurve(s),h=o?this.m_shape.isCurve(n):this.m_shape.isCurve(i);return l||h?(this.m_sorterSegmentBuffer1||(this.m_sorterSegmentBuffer1=new G.S),this.m_sorterSegmentBuffer2||(this.m_sorterSegmentBuffer2=new G.S),a?this.m_shape.querySegment(r,this.m_sorterSegmentBuffer1,!1,!0):(this.m_shape.querySegment(s,this.m_sorterSegmentBuffer1,!1,!0),this.m_sorterSegmentBuffer1.get().reverse()),o?this.m_shape.querySegment(n,this.m_sorterSegmentBuffer2,!1,!0):(this.m_shape.querySegment(i,this.m_sorterSegmentBuffer2,!1,!0),this.m_sorterSegmentBuffer2.get().reverse()),(0,G.I)(this.m_sorterSegmentBuffer1.get(),this.m_sorterSegmentBuffer2.get())):this.compareAnglesLines_(e,t)}beforeRemoveVertex_(e,t){let s=this.m_shape.getUserIndex(e,this.m_userIndexSortedIndexToVertex);if(this.m_nextVertexToProcess===s&&(this.m_nextVertexToProcess=this.m_sortedVertices.getNext(this.m_nextVertexToProcess)),this.m_firstCoincidentVertex===s&&(this.m_firstCoincidentVertex=this.m_sortedVertices.getNext(this.m_firstCoincidentVertex)),this.m_sortedVertices.deleteElement(this.m_sortedVerticesListIndex,s),this.removeAngleSortInfo_(e),t){let t=this.m_shape.getPathFromVertex(e);if(t!==G.n&&this.m_shape.getFirstVertex(t)===e){let s=this.m_shape.getNextVertex(e);if(s!==e){if(this.m_shape.getPathFromVertex(s)===t)return void this.m_shape.setFirstVertex(t,s);{let s=this.m_shape.getPrevVertex(e);if(s!==e&&this.m_shape.getPathFromVertex(s)===t)return void this.m_shape.setFirstVertex(t,s)}}this.m_shape.setFirstVertex(t,G.n),this.m_shape.setLastVertex(t,G.n)}}}processBunch_(){let e=!1,t=new b.P(0,0);for(;;
1){this.m_bunchEdgeEndPoints.length=0,this.m_bunchEdgeCenterPoints.length=0,this.m_bunchEdgeIndices.length=0;let s=this.m_firstCoincidentVertex,i=0,r=!0;for(;s!==this.m_nextVertexToProcess;){let e=this.m_sortedVertices.getData(s);r&&(this.m_shape.queryXY(e,t),r=!1);let n=this.m_shape.getPrevVertex(e),a=this.m_shape.getNextVertex(e);this.m_shape.getUserIndex(n,this.m_userIndexSortedAngleIndexToVertex)!==w.J&&(this.m_bunchEdgeEndPoints.push(n),this.m_shape.setUserIndex(n,this.m_userIndexSortedAngleIndexToVertex,w.J),this.m_bunchEdgeCenterPoints.push(e),this.m_bunchEdgeIndices.push(i++)),this.m_shape.getUserIndex(a,this.m_userIndexSortedAngleIndexToVertex)!==w.J&&(this.m_bunchEdgeEndPoints.push(a),this.m_shape.setUserIndex(a,this.m_userIndexSortedAngleIndexToVertex,w.J),this.m_bunchEdgeCenterPoints.push(e),this.m_bunchEdgeIndices.push(i++)),s=this.m_sortedVertices.getNext(s)}if(this.m_bunchEdgeEndPoints.length<2){1===this.m_bunchEdgeEndPoints.length&&this.m_shape.setUserIndex(this.m_bunchEdgeEndPoints[0],this.m_userIndexSortedAngleIndexToVertex,-1);break}this.m_bunchEdgeIndices.sort((e,t)=>this.compareAngles_(e,t));for(let e=0,t=this.m_bunchEdgeIndices.length;e<t;e++){let t=this.m_bunchEdgeIndices[e],s=this.m_bunchEdgeEndPoints[t];this.m_shape.setUserIndex(s,this.m_userIndexSortedAngleIndexToVertex,e)}let n=this.processCrossOvers_(t);for(let e=0,t=this.m_bunchEdgeIndices.length;e<t;e++){let t=this.m_bunchEdgeIndices[e];if(-1===t)continue;let s=this.m_bunchEdgeEndPoints[t];this.m_shape.setUserIndex(s,this.m_userIndexSortedAngleIndexToVertex,-1)}if(!n)break;e=!0}return e}processCrossOvers_(e){let t=!1,s=!0;for(;s;){s=!1;let i=0;-1===this.m_bunchEdgeIndices[i]&&(i=this.getNextEdgeIndex_(i));let r=this.getNextEdgeIndex_(i);for(let n=0,a=this.m_bunchEdgeIndices.length;n<a&&-1!==i&&-1!==r&&i!==r;n++){let n=this.m_bunchEdgeIndices[i],a=this.m_bunchEdgeIndices[r],o=this.m_bunchEdgeEndPoints[n],l=this.m_bunchEdgeEndPoints[a],h=this.m_shape.getNextVertex(o),m=!1;this.m_shape.isEqualXYPoint2D(h,e)||(h=this.m_shape.getPrevVertex(o),m=!0);let g=this.m_shape.getNextVertex(l),u=!1;this.m_shape.isEqualXYPoint2D(g,e)||(g=this.m_shape.getPrevVertex(l),u=!0);let _=m?this.m_shape.getPrevVertex(h):this.m_shape.getNextVertex(h),p=u?this.m_shape.getPrevVertex(g):this.m_shape.getNextVertex(g),d=!1;(this.removeSpike_(h)||this.removeSpike_(g)||this.removeSpike_(o)||this.removeSpike_(l)||this.removeSpike_(_)||this.removeSpike_(p))&&(d=!0),h!==g&&(!d&&this.m_shape.isEqualXY(o,l)&&(d=this.resolveOverlap_(m,u,h,o,g,l)),!d&&this.m_shape.isEqualXY(_,p)&&(d=this.resolveOverlap_(!m,!u,h,_,g,p)),!d&&this.m_shape.isEqualXY(o,p)&&(d=this.resolveOverlap_(m,!u,h,o,g,p)),!d&&this.m_shape.isEqualXY(_,l)&&(d=this.resolveOverlap_(!m,u,h,_,g,l))),d&&(t=!0),s||=d,i=d?this.getNextEdgeIndex_(i):r,r=this.getNextEdgeIndex_(i)}}if(!t){let s=0;-1===this.m_bunchEdgeIndices[s]&&(s=this.getNextEdgeIndex_(s));let i=this.getNextEdgeIndex_(s);for(let r=0,n=this.m_bunchEdgeIndices.length;r<n&&-1!==s&&-1!==i&&s!==i;r++){let r=this.m_bunchEdgeIndices[s],n=this.m_bunchEdgeIndices[i],a=this.m_bunchEdgeEndPoints[r],o=this.m_bunchEdgeEndPoints[n],l=this.m_shape.getNextVertex(a);this.m_shape.isEqualXYPoint2D(l,e)||(l=this.m_shape.getPrevVertex(a));let h=this.m_shape.getNextVertex(o);this.m_shape.isEqualXYPoint2D(h,e)||(h=this.m_shape.getPrevVertex(o));let m=this.getDirection_(l,a),g=this.getDirection_(h,o),u=m?this.m_shape.getPrevVertex(l):this.m_shape.getNextVertex(l),_=g?this.m_shape.getPrevVertex(h):this.m_shape.getNextVertex(h),p=this.detectAndResolveCrossOver_(m,g,a,l,u,o,h,_);1!==p?(s=0===p?this.getNextEdgeIndex_(s):this.getPrevEdgeIndex_(s),i=this.getNextEdgeIndex_(s)):t=!0}}return t}simplify_(){var e,t,s,i;let r;this.m_shape.getGeometryType(this.m_geometry)===I.G.enumPolygon&&1===this.m_shape.getFillRule(this.m_geometry)&&new sf(this.m_progressTracker).planarSimplifyNoCrackingAndCluster(this.m_bFixSelfTangency,this.m_shape,this.m_geometry,0);let n=!1;this.m_userIndexSortedIndexToVertex=-1,this.m_userIndexSortedAngleIndexToVertex=-1,this.m_userIndexSortedAngleIndexToVertex=this.m_shape.createUserIndexUninitialized();let a=this.m_shape.getPointCount(this.m_geometry),o=new w.A(0);this.m_shape.dbgVerifyMonotone();for(let e=this.m_shape.getFirstPath(this.m_geometry);e!==G.n;e=this.m_shape.getNextPath(e)){let t=this.m_shape.getFirstVertex(e);for(let s=0,i=this.m_shape.getPathSize(e);s<i;s++)this.m_shape.setUserIndex(t,this.m_userIndexSortedAngleIndexToVertex,-1),o.add(t),t=this.m_shape.getNextVertex(t)}this.m_shape.sortVerticesSimpleByY(o,0,a),this.progress_(!0),this.m_userIndexSortedIndexToVertex=this.m_shape.createUserIndexUninitialized(),this.m_sortedVertices.reserveNodes(a),this.m_sortedVerticesListIndex=this.m_sortedVertices.createList(0);for(let e=0;e<a;
1e++){let t=o.read(e),s=this.m_sortedVertices.addElement(this.m_sortedVerticesListIndex,t);this.m_shape.setUserIndex(t,this.m_userIndexSortedIndexToVertex,s)}this.m_nextVertexToProcess=-1,this.cleanupSpikes_()&&(n=!0);let l=0,h=!1;do{h=!1,this.m_nextVertexToProcess=-1,this.m_firstCoincidentVertex=this.m_sortedVertices.getFirst(this.m_sortedVerticesListIndex);let e=new b.P(0,0);this.m_firstCoincidentVertex!==w.I.st_nullNode()&&this.m_shape.queryXY(this.m_sortedVertices.getData(this.m_firstCoincidentVertex),e);let t=0,s=this.m_firstCoincidentVertex;for(;s!==w.I.st_nullNode()&&(s=this.m_sortedVertices.getNext(s))!==w.I.st_nullNode();){this.progress_();let i=this.m_sortedVertices.getData(s),r=b.P.getNAN();if(this.m_shape.queryXY(i,r),e.equals(r))t++;else{if(t>0){this.m_nextVertexToProcess=s;let e=this.processBunch_();(s=this.m_nextVertexToProcess)!==w.I.st_nullNode()&&this.m_shape.queryXY(this.m_sortedVertices.getData(s),r),e&&(h=!0)}e.setCoordsPoint2D(r),this.m_firstCoincidentVertex=s,t=0}}this.m_nextVertexToProcess=-1,t>0&&this.processBunch_()&&(h=!0),l++>10&&(0,I.d)(""),h&&this.fixOrphanVertices_(),this.cleanupSpikes_()&&(h=!0),n||=h}while(h);return this.m_shape.dbgVerifyMonotone(),this.m_shape.dbgVerifyCurves(),this.m_shape.removeUserIndex(this.m_userIndexSortedIndexToVertex),this.m_shape.removeUserIndex(this.m_userIndexSortedAngleIndexToVertex),e=this.m_shape,t=this.m_geometry,s=this.m_sortedVertices,i=this.m_bFixSelfTangency,(r=new eL(this.m_progressTracker)).m_shape=e,r.m_geometry=t,r.m_sortedVertices=s,r.m_bFixSelfTangency=i,n=r.fixRingOrientation_()||n,this.m_shape.dbgVerifyCurves(),n}getDirection_(e,t){return this.m_shape.getNextVertex(t)!==e}detectAndResolveCrossOver_(e,t,s,i,r,n,a,o){if(i===a)return this.removeAngleSortInfo_(s),this.removeAngleSortInfo_(n),-1;let l=this.m_shape.getUserIndex(s,this.m_userIndexSortedAngleIndexToVertex),h=this.m_shape.getUserIndex(r,this.m_userIndexSortedAngleIndexToVertex),m=this.m_shape.getUserIndex(n,this.m_userIndexSortedAngleIndexToVertex),g=this.m_shape.getUserIndex(o,this.m_userIndexSortedAngleIndexToVertex),u=(0,b.d)(8,NaN),_=(0,b.d)(4,NaN);u[0]=0,_[0]=l,u[1]=0,_[1]=h,u[2]=1,_[2]=m,u[3]=1,_[3]=g;for(let e=1;e<4;e++){let t=_[e],s=u[e],i=e-1;for(;i>=0&&_[i]>t;)_[i+1]=_[i],u[i+1]=u[i],i--;_[i+1]=t,u[i+1]=s}let p=0;if(u[0]&&(p|=1),u[1]&&(p|=2),u[2]&&(p|=4),u[3]&&(p|=8),5!==p&&10!==p)return 0;if(e!==t&&(o=(0,b.c)(n,n=o)),e)this.m_shape.setNextVertex(o,i),this.m_shape.setPrevVertex(i,o),this.m_shape.setNextVertex(r,a),this.m_shape.setPrevVertex(a,r),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageBreakVertex(i,!0),this.m_shape.setSegmentParentageBreakVertex(a,!0));else{if(this.m_shape.setPrevVertex(o,i),this.m_shape.setNextVertex(i,o),this.m_shape.setPrevVertex(r,a),this.m_shape.setNextVertex(a,r),this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(i),t=this.m_shape.getSegmentParentage(a);this.m_shape.setSegmentParentageAndBreak(i,t,!0),this.m_shape.setSegmentParentageAndBreak(a,e,!0)}if(this.m_bHasSegments){let e=this.m_shape.getVertexIndex(i),t=this.m_shape.getVertexIndex(a),s=this.m_shape.getSegmentFromIndex(e);this.m_shape.setSegmentToIndex(e,null);let r=this.m_shape.getSegmentFromIndex(t);this.m_shape.setSegmentToIndex(t,null),this.m_shape.setSegmentToIndex(e,r),this.m_shape.setSegmentToIndex(t,s)}}return 1}resolveOverlap_(e,t,s,i,r,n){return this.resolveOverlapOddEven_(e,t,s,i,r,n)}resolveOverlapOddEven_(e,t,s,i,r,n){if(e!==t){e||(r=(0,b.c)(s,s=r),n=(0,b.c)(i,i=n));let t=this.m_shape.getNextVertex(r),a=this.m_shape.getNextVertex(s);if(this.m_shape.setNextVertex(s,t),this.m_shape.setPrevVertex(t,s),this.m_shape.setNextVertex(r,a),this.m_shape.setPrevVertex(a,r),this.m_bHasSegments){let e=this.m_shape.getVertexIndex(s),t=this.m_shape.getVertexIndex(r),i=this.m_shape.getSegmentFromIndex(e);this.m_shape.setSegmentToIndex(e,null);let n=this.m_shape.getSegmentFromIndex(t);this.m_shape.setSegmentToIndex(t,null),this.m_shape.setSegmentToIndex(e,n),this.m_shape.setSegmentToIndex(t,i)}if(this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(s),t=this.m_shape.getSegmentParentage(r);this.m_shape.setSegmentParentageAndBreak(s,t,!0),this.m_shape.setSegmentParentageAndBreak(r,e,!0),this.m_shape.setSegmentParentageBreakVertex(i,!0),this.m_shape.setSegmentParentageBreakVertex(n,!0)}this.removeSpike_(r)}else{let a=e?s:i,o=t?r:n,l=e?i:s,h=t?n:r,m=null;if(this.m_bHasSegments){let e=this.m_shape.getVertexIndex(h);m=this.m_shape.getSegmentFromIndex(e),this.m_shape.setSegmentToIndex(e,null);let t=this.m_shape.getVertexIndex(o);this.m_shape.setSegmentToIndex(t,null);let s=this.m_shape.getVertexIndex(a);this.m_shape.setSegmentToIndex(s,null)}let g=-1;this.m_bHasSegmentParentage&&(g=this.m_shape.getSegmentParentage(h));let u=!1;this.m_shape.setNextVertex(a,o),this.m_shape.setNextVertex(o,a),this.m_shape.setPrevVertex(l,h),this.m_shape.setPrevVertex(h,l);let _=h;for(;_!==o;){let e=this.m_shape.getPrevVertex(_),t=this.m_shape.getNextVertex(_);if(this.m_shape.setPrevVertex(_,t),this.m_shape.setNextVertex(_,e),u||=_===a,this.m_bHasSegments&&_!==a){let e=this.m_shape.getVertexIndex(t),s=m;m=this.m_shape.getSegmentFromIndex(e),null!==s&&s.reverse(),this.m_shape.setSegmentToIndex(e,s)}if(this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(t);this.m_shape.setSegmentParentagePreserveBreak(t,g),g=e}_=t}let p=null;if(!u){let e=this.m_shape.getPrevVertex(o),t=this.m_shape.getNextVertex(o);if(this.m_shape.setPrevVertex(o,t),this.m_shape.setNextVertex(o,e),this.m_bHasSegments){let e=this.m_shape.getVertexIndex(o);p=this.m_shape.getSegmentFromIndex(e),this.m_shape.setSegmentToIndex(e,null)}}let d=-1,c=-1;if(this.m_bHasSegmentParentage&&(d=u?this.m_shape.getSegmentParentage(a):this.m_shape.getSegmentParentage(o),c=this.m_shape.getSegmentParentage(l)),this.transferVertexData_(o,a),this.beforeRemoveVertex_(o,!0),this.m_shape.removeVertexInternal(o,!0),this.removeAngleSortInfo_(a),this.transferVertexData_(h,l),this.beforeRemoveVertex_(h,!0),this.m_shape.removeVertexInternal(h,!0),this.removeAngleSortInfo_(l),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageAndBreak(a,d,!0),this.m_shape.setSegmentParentageAndBreak(l,c,!0)),p){let e=this.m_shape.getVertexIndex(a);this.m_shape.setSegmentToIndex(e,p)}}return!0}cleanupSpikes_(){let e=!1;for(let t=this.m_shape.getFirstPath(this.m_geometry);t!==G.n;){let s=this.m_shape.getNextPath(t),i=this.m_shape.getFirstVertex(t);for(let s=0,r=this.m_shape.getPathSize(t);s<r&&r>1;){this.progress_();let{v:n,bModified:a}=this.checkAndCleanupSpike_(t,i);if(n===G.n)break;a?(e=!0,i=n,s=0,r=this.m_shape.getPathSize(t)):(i=n,s++)}t=s}return e}checkAndCleanupSpike_(e,t){let s={v:G.n,bModified:!1},i=this.m_shape.getPrevVertex(t),r=this.m_shape.getNextVertex(t),n=G.n,a=G.n;for(;this.m_shape.isEqualXY(i,r)&&(n=i,a=r,r!==t);)i=this.m_shape.getPrevVertex(i),r=this.m_shape.getNextVertex(r);if(n===G.n)return s.v=r,s;s.bModified=!0;for(let e=this.m_shape.getNextVertex(n);this.beforeRemoveVertex_(e,!1),e!==a;e=this.m_shape.getNextVertex(e));if(n===t)return this.m_polylineDegeneracies!==G.n?this.m_shape.movePath(this.m_polylineDegeneracies,G.n,e):this.m_shape.removePath(e),s.v=G.n,s;{let e=this.m_shape.peelALoopIntoAPath(n,a);this.m_polylineDegeneracies!==G.n?this.m_shape.movePath(this.m_polylineDegeneracies,G.n,e):this.m_shape.removePath(e)}return s.v=n,s}removeSpike_(e){let t=this.m_shape.getPrevVertex(e),s=this.m_shape.getNextVertex(e),i=G.n,r=G.n;for(;this.m_shape.isEqualXY(t,s)&&(i=t,r=s,s!==e);)t=this.m_shape.getPrevVertex(t),s=this.m_shape.getNextVertex(s);if(i===G.n)return!1;if(this.m_shape.peelALoop(i,r),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageBreakVertex(i,!0),this.m_shape.setSegmentParentageBreakVertex(r,!0)),this.removeAngleSortInfo_(i),this.m_polylineDegeneracies===G.n)for(let e=this.m_shape.getNextVertex(r);;){let t=this.m_shape.getNextVertex(e);if(this.removeAngleSortInfo_(e),this.beforeRemoveVertex_(e,!0),this.m_shape.setSegmentToIndex(this.m_shape.getVertexIndex(e),null),this.m_shape.removeVertexInternal(e,!1),e===r)break;e=t}else{for(let e=r;;){let t=this.m_shape.getNextVertex(e);if(this.removeAngleSortInfo_(e),this.beforeRemoveVertex_(e,!1),(e=t)===r)break}this.m_shape.insertClosedPath(this.m_polylineDegeneracies,G.n,r,r,[!1])}return!0}fixOrphanVertices_(){let e=0;for(let e=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList());-1!==e;e=this.m_sortedVertices.getNext(e)){let t=this.m_sortedVertices.getData(e);this.m_shape.setPathToVertex(t,G.n)}let t=0;for(let s=this.m_shape.getFirstPath(this.m_geometry);s!==G.n;){let i=this.m_shape.getFirstVertex(s);if(i===G.n||this.m_shape.getPathFromVertex(i)!==G.n){let e=s;s=this.m_shape.getNextPath(s),this.m_shape.removePathOnly(e);continue}this.m_shape.setPathToVertex(i,s);let r=1;for(let e=this.m_shape.getNextVertex(i);e!==i;e=this.m_shape.getNextVertex(e))this.m_shape.setPathToVertex(e,s),r++;this.m_shape.setRingAreaValid(s,!1),this.m_shape.setPathSize(s,r),this.m_shape.setLastVertex(s,this.m_shape.getPrevVertex(i)),t+=r,e++,s=this.m_shape.getNextPath(s)}for(let s=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList());-1!==s;s=this.m_sortedVertices.getNext(s)){let i=this.m_sortedVertices.getData(s);if(this.m_shape.getPathFromVertex(i)!==G.n)continue;let r=[!1],n=this.m_shape.insertClosedPath(this.m_geometry,G.n,i,i,r);t+=this.m_shape.getPathSize(n),e++}this.m_shape.setGeometryPathCount(this.m_geometry,e),this.m_shape.setGeometryVertexCount(this.m_geometry,t);let s=0;for(let e=this.m_shape.getFirstGeometry();e!==G.n;e=this.m_shape.getNextGeometry(e))s+=this.m_shape.getPointCount(e);this.m_shape.setTotalPointCount(s)}getNextEdgeIndex_(e){if(-1===e)return -1;for(let t=0,s=this.m_bunchEdgeIndices.length-1;t<s;t++)if(e=(e+1)%this.m_bunchEdgeIndices.length,-1!==this.m_bunchEdgeIndices[e])return e;return -1}getPrevEdgeIndex_(e){if(-1===e)return -1;for(let t=0,s=this.m_bunchEdgeIndices.length-1;t<s;t++)if(e=(this.m_bunchEdgeIndices.length+e-1)%this.m_bunchEdgeIndices.length,-1!==this.m_bunchEdgeIndices[e])return e;return -1}transferVertexData_(e,t){let s=this.m_shape.getUserIndex(t,this.m_userIndexSortedIndexToVertex),i=this.m_shape.getUserIndex(t,this.m_userIndexSortedAngleIndexToVertex);this.m_shape.transferAllDataToTheVertex(e,t),this.m_shape.setUserIndex(t,this.m_userIndexSortedIndexToVertex,s),this.m_shape.setUserIndex(t,this.m_userIndexSortedAngleIndexToVertex,i)}removeAngleSortInfo_(e){let t=this.m_shape.getUserIndex(e,this.m_userIndexSortedAngleIndexToVertex);-1!==t&&(this.m_bunchEdgeIndices[t]=-1,this.m_shape.setUserIndex(e,this.m_userIndexSortedAngleIndexToVertex,-1))}progress_(e=!1){}}function ej(e,t,s,i,r,n=!0){var a,o,l,h,m,g,u,_,p,d,c,f,x,P,E;switch(eZ(i)){case 0:break;case 1:(0,I.a)("relation string length has to be 9 characters");break;default:(0,I.a)("relation string")}if(n){let n=(a=i,o=e.getDimension(),l=t.getDimension(),"T*F**FFF*"===a?3:"FF*FF****"===a?4:(h=a,m=o,g=l,(0!==m||0!==g)&&(2===m&&2===g?"F***T****"===h:(2===m||1===m)&&0===g&&"F**T*****"===h))?8:(u=a,(_=o)>(p=l)?"T*****T**"===u:1===_&&1===p&&"0********"===u)?16:"T**FF*FF*"===a?64:"T*****FF*"===a?1:32*(d=a,(c=o)===l&&(1!==c?"T*T***T**"===d:"1*T***T**"===d)));if(0!==n)return tt(e,t,s,n,r)}let y=0;if("number"==typeof s)y=s;else{let i=v.Envelope2D.constructEmpty();e.queryEnvelope(i);let r=v.Envelope2D.constructEmpty();t.queryEnvelope(r);let n=v.Envelope2D.constructEmpty();
1n.setCoords({env2D:i}),n.mergeEnvelope2D(r),y=(0,w.a)(s,n,!1)}let S=e6(e,y),C=e6(t,y);if(S.isEmpty()||C.isEmpty())return function(e,t,s){let i=(0,b.d)(9,-1);if(e.isEmpty()&&t.isEmpty())return e2(i,s);let r,n=!1;e.isEmpty()?(r=t,n=!0):r=e,i[0]=-1,i[1]=-1,i[3]=-1,i[4]=-1,i[6]=-1,i[7]=-1,i[8]=2;let a=r.getGeometryType();if((0,I.h)(a))if(a===I.G.enumPolygon)if(0!==r.calculateArea2D())i[2]=2,i[5]=1;else{i[5]=-1;let e=v.Envelope2D.constructEmpty();r.queryEnvelope(e),i[2]=e.height()||e.width()?1:0}else{let e=0!==r.calculateLength2D();i[2]=+!!e,i[5]=(0,G.A)(r)?0:-1}else i[2]=0,i[5]=-1;return n&&e7(i),e2(i,s)}(S,C,i);let T=S.getGeometryType(),N=C.getGeometryType(),D=!1;switch(T){case I.G.enumPolygon:switch(N){case I.G.enumPolygon:D=function(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setAreaAreaPredicates_();let a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty();e.queryEnvelope(a),t.queryEnvelope(o);let l=!1;if(ti(a,o,s)&&(n.areaAreaDisjointPredicates_(e,t),l=!0),l||tr(e,t),!l){let i=new G.E,a=i.addGeometry(e),o=i.addGeometry(t);n.setEditShapeCrackAndCluster_(i,new w.C(s,0),r),n.computeMatrixTopoGraphHalfEdges_(a,o),n.m_topoGraph.removeShape()}return e2(n.m_matrix,n.m_scl)}(S,C,y,i,r);break;case I.G.enumPolyline:D=eK(S,C,y,i,r);break;case I.G.enumPoint:D=e$(S,C,y,i);break;case I.G.enumMultiPoint:D=eQ(S,C,y,i,r)}break;case I.G.enumPolyline:switch(N){case I.G.enumPolygon:D=eK(C,S,y,e8(i),r);break;case I.G.enumPolyline:D=function(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setLineLinePredicates_();let a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty();e.queryEnvelope(a),t.queryEnvelope(o);let l=!1;if(ti(a,o,s)&&(n.lineLineDisjointPredicates_(e,t),l=!0),l||tr(e,t),!l){let i=new G.E,a=i.addGeometry(e),o=i.addGeometry(t);n.setEditShapeCrackAndCluster_(i,new w.C(s,0),r),n.m_clusterIndexA=n.m_topoGra
1ph.createUserIndexForClusters(),n.m_clusterIndexB=n.m_topoGraph.createUserIndexForClusters(),e4(a,n.m_topoGraph,n.m_clusterIndexA),e4(o,n.m_topoGraph,n.m_clusterIndexB),n.computeMatrixTopoGraphHalfEdges_(a,o),n.m_topoGraph.deleteUserIndexForClusters(n.m_clusterIndexA),n.m_topoGraph.deleteUserIndexForClusters(n.m_clusterIndexB),n.m_topoGraph.removeShape()}return e2(n.m_matrix,n.m_scl)}(S,C,y,i,r);break;case I.G.enumPoint:D=e0(S,C,y,i,r);break;case I.G.enumMultiPoint:D=eJ(S,C,y,i,r)}break;case I.G.enumPoint:switch(N){case I.G.enumPolygon:D=e$(C,S,y,e8(i));break;case I.G.enumPolyline:D=e0(C,S,y,e8(i),r);break;case I.G.enumPoint:let V,F,H;f=S,x=C,P=y,E=i,V=f.getXY(),F=x.getXY(),H=(0,b.d)(9,-1),b.P.sqrDistance(V,F)<=P*P?H[0]=0:(H[2]=0,H[6]=0),H[8]=2,D=e2(H,E);break;case I.G.enumMultiPoint:D=e1(C,S,y,e8(i))}break;case I.G.enumMultiPoint:switch(N){case I.G.enumPolygon:D=eQ(C,S,y,e8(i),r);break;case I.G.enumPolyline:D=eJ(C,S,y,e8(i),r);break;case I.G.enumMultiPoint:D=function(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setPointPointPredicates_();let a=new v.Envelope2D,o=new v.Envelope2D;e.queryEnvelope(a),t.queryEnvelope(o);let l=!1;if(ti(a,o,s)&&(n.pointPointDisjointPredicates_(),l=!0),!l){let i=new G.E,a=i.addGeometry(e),o=i.addGeometry(t);n.setEditShapeCrackAndCluster_(i,new w.C(s,0),r),n.computeMatrixTopoGraphClusters_(a,o),n.m_topoGraph.removeShape()}return e2(n.m_matrix,n.m_scl)}(S,C,y,i,r);break;case I.G.enumPoint:D=e1(S,C,y,i)}break;default:D=!1}return D}function eZ(e){if(9!==e.length)return 1;for(let t=0;t<9;t++){let s=e[t];if("*"!==s&&"T"!==s&&"F"!==s&&"0"!==s&&"1"!==s&&"2"!==s)return 2}return 0}function eK(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setAreaLinePredicates_();let a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty();e.queryEnvelope(a),t.queryEnvelope(o);let l=!1;if(ti(a,o,s)&&(n.areaLineDisjointPredicates_(e,t),l=!0),l||tr(e,t),!l){let i=new G.E,a=i.addGeometry(e),o=i.addGeometry(t);n.setEditShapeCrackAndCluster_(i,new w.C(s,0),r),n.m_clusterIndexB=n.m_topoGraph.createUserIndexForClusters(),e4(o,n.m_topoGraph,n.m_clusterIndexB),n.computeMatrixTopoGraphHalfEdges_(a,o),n.m_topoGraph.deleteUserIndexForClusters(n.m_clusterIndexB),n.m_topoGraph.removeShape()}return e2(n.m_matrix,n.m_scl)}function eQ(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setAreaPointPredicates_();let a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty();e.queryEnvelope(a),t.queryEnvelope(o);let l=!1;if(ti(a,o,s)&&(n.areaPointDisjointPredicates_(e),l=!0),l||tr(e,t),!l){let i=new G.E,a=i.addGeometry(e),o=i.addGeometry(t);n.setEditShapeCrackAndCluster_(i,new w.C(s,0),r),n.computeMatrixTopoGraphClusters_(a,o),n.m_topoGraph.removeShape()}return e2(n.m_matrix,n.m_scl)}function eJ(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setLinePointPredicates_();let a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty();e.queryEnvelope(a),t.queryEnvelope(o);let l=!1;if(ti(a,o,s)&&(n.linePointDisjointPredicates_(e),l=!0),l||tr(e,t),!l){let i=new G.E,a=i.addGeometry(e),o=i.addGeometry(t);n.setEditShapeCrackAndCluster_(i,new w.C(s,0),r),n.m_clusterIndexA=n.m_topoGra
1ph.createUserIndexForClusters(),e4(a,n.m_topoGraph,n.m_clusterIndexA),n.computeMatrixTopoGraphClusters_(a,o),n.m_topoGraph.deleteUserIndexForClusters(n.m_clusterIndexA),n.m_topoGraph.removeShape()}return e2(n.m_matrix,n.m_scl)}function e$(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setAreaPointPredicates_();let a=v.Envelope2D.constructEmpty();e.queryEnvelope(a);let o=t.getXY(),l=!1;if(tn(o,a,s)&&(n.areaPointDisjointPredicates_(e),l=!0),!l){let t=t$(e,o,s);if(1===t)n.m_matrix[0]=0,n.m_matrix[2]=2,n.m_matrix[3]=-1,n.m_matrix[5]=1,n.m_matrix[6]=-1;else if(2===t)if(n.m_matrix[6]=-1,0!==e.calculateArea2D())n.m_matrix[0]=-1,n.m_matrix[3]=0,n.m_matrix[2]=2,n.m_matrix[5]=1;else{n.m_matrix[0]=0,n.m_matrix[3]=-1,n.m_matrix[5]=-1;let t=v.Envelope2D.constructEmpty();e.queryEnvelope(t),n.m_matrix[2]=t.height()||t.width()?1:-1}else n.areaPointDisjointPredicates_(e)}return e2(n.m_matrix,i)}function e0(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setLinePointPredicates_();let a=v.Envelope2D.constructEmpty();e.queryEnvelope(a);let o=!1;if(tn(t.getXY(),a,s)&&(n.linePointDisjointPredicates_(e),o=!0),!o){let i=null,a=!1,o=!1;if((n.m_performPredicates[0]||n.m_performPredicates[6])&&(tt(e,t,s,4,r)?(n.m_matrix[0]=-1,n.m_matrix[6]=0):(n.m_performPredicates[0]&&(o=!tt(i=(0,G.c)(e),t,s,4,r),a=!0,n.m_matrix[0]=o?-1:0),n.m_matrix[6]=-1)),n.m_performPredicates[3]&&(null!==i&&i.isEmpty()?n.m_matrix[3]=-1:(a||(null==i&&(i=(0,G.c)(e)),o=!tt(i,t,s,4,r),a=!0),n.m_matrix[3]=o?0:-1)),n.m_performPredicates[5])if(null!==i&&i.isEmpty())n.m_matrix[5]=-1;else if(a&&!o)n.m_matrix[5]=0;else{null===i&&(i=(0,G.c)(e));let a=tt(i,t,s,3,r);n.m_matrix[5]=a?-1:0}if(n.m_performPredicates[2])if(0!==e.calculateLength2D())n.m_matrix[2]=1;else{let i=new G.M({vd:e.getDescription()});i.addPoints(e,0,e.getPointCount());let a=tt(i,t,s,3,r);n.m_matrix[2]=a?-1:0}}return e2(n.m_matrix,n.m_scl)}function e1(e,t,s,i,r){let n=new e3;n.resetMatrix_(),n.setPredicates_(i),n.setPointPointPredicates_();let a=v.Envelope2D.constructEmpty();e.queryEnvelope(a);let o=t.getXY(),l=new b.P,h=!1;if(tn(o,a,s)&&(n.pointPointDisjointPredicates_(),h=!0),!h){let t=!1,i=!0,r=s*s;for(let s=0;s<e.getPointCount()&&(e.queryXY(s,l),b.P.sqrDistance(l,o)<=r?t=!0:i=!1,!t||i);s++);t?(n.m_matrix[0]=0,n.m_matrix[2]=i?-1:0,n.m_matrix[6]=-1):(n.m_matrix[0]=-1,n.m_matrix[2]=0,n.m_matrix[6]=0)}return e2(n.m_matrix,i)}function e2(e,t){for(let s=0;s<9;s++)switch(t[s]){case"T":if(-1===e[s])return!1;break;case"F":if(-1!==e[s])return!1;break;case"0":if(0!==e[s])return!1;break;case"1":if(1!==e[s])return!1;break;case"2":if(2!==e[s])return!1}return!0}function e4(e,t,s){let i=t.getGeometryID(e);for(let e=t.getFirstCluster();e!==G.n;e=t.getNextCluster(e)){if(0==(t.getClusterParentage(e)&i))continue;let r=t.getClusterHalfEdge(e);if(r===G.n){t.setClusterUserIndex(e,s,0);continue}let n=r,a=0;do{let e=n;0!=(t.getHalfEdgeParentage(e)&i)&&a++,n=t.getHalfEdgeNext(t.getHalfEdgeTwin(e))}while(n!==r);t.setClusterUserIndex(e,s,a)}}class e3{nullFunc(){return(0,I.d)("should not be called"),!1}constructor(){this.m_clusterIndexA=-1,this.m_clusterIndexB=-1,this.m_visitedIndex=-1,this.m_topoGraph=new em,this.m_matrix=(0,b.d)(9,0),this.m_maxDim=(0,b.d)(9,0),this.m_performPredicates=(0,b.d)(9,!1),this.m_scl="",this.m_predicateCount=0,this.m_predicatesHalfEdge=this.nullFunc,this.m_predicatesCluster=this.nullFunc}resetMatrix_(){this.m_matrix.fill(-2),this.m_maxDim.fill(-2)}setPredicates_(e){this.m_scl=e;for(let e=0;e<9;e++)"*"!==this.m_scl[e]?(this.m_performPredicates[e]=!0,this.m_predicateCount++):this.m_performPredicates[e]=!1}setRemainingPredicatesToFalse_(){for(let e=0;e<9;e++)this.m_performPredicates[e]&&-2===this.m_matrix[e]&&(this.m_matrix[e]=-1,this.m_performPredicates[e]=!1)}isPredicateKnown_(e){return -2!==this.m_matrix[e]&&(-1===this.m_matrix[e]?(this.m_performPredicates[e]=!1,this.m_predicateCount--,!0):"T"!==this.m_scl[e]&&"F"!==this.m_scl[e]?!(this.m_matrix[e]<this.m_maxDim[e])&&(this.m_performPredicates[e]=!1,this.m_predicateCount--,!0):(this.m_performPredicates[e]=!1,this.m_predicateCount--,!0))}setAreaAreaPredicates_(){this.m_predicatesHalfEdge=this.areaAreaPredicates_,this.m_maxDim[0]=2,this.m_maxDim[1]=1,this.m_maxDim[2]=2,this.m_maxDim[3]=1,this.m_maxDim[4]=1,this.m_maxDim[5]=1,this.m_maxDim[6]=2,this.m_maxDim[7]=1,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setAreaLinePredicates_(){this.m_predicatesHalfEdge=this.areaLinePredicates_,this.m_predicatesCluster=this.areaPointPredicates_,this.m_maxDim[0]=1,this.m_maxDim[1]=0,this.m_maxDim[2]=2,this.m_maxDim[3]=1,this.m_maxDim[4]=0,this.m_maxDim[5]=1,this.m_maxDim[6]=1,this.m_maxDim[7]=0,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setLineLinePredicates_(){this.m_predicatesHalfEdge=this.lineLinePredicates_,this.m_predicatesCluster=this.linePointPredicates_,this.m_maxDim[0]=1,this.m_maxDim[1]=0,this.m_maxDim[2]=1,this.m_maxDim[3]=0,this.m_maxDim[4]=0,this.m_maxDim[5]=0,this.m_maxDim[6]=1,this.m_maxDim[7]=0,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setAreaPointPredicates_(){this.m_predicatesCluster=this.areaPointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=2,this.m_maxDim[3]=0,this.m_maxDim[4]=-1,this.m_maxDim[5]=1,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[
11]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setLinePointPredicates_(){this.m_predicatesCluster=this.linePointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=1,this.m_maxDim[3]=0,this.m_maxDim[4]=-1,this.m_maxDim[5]=0,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[1]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setPointPointPredicates_(){this.m_predicatesCluster=this.pointPointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=0,this.m_maxDim[3]=-1,this.m_maxDim[4]=-1,this.m_maxDim[5]=-1,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[1]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[3]&&(this.m_matrix[3]=-1,this.m_performPredicates[3]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[5]&&(this.m_matrix[5]=-1,this.m_performPredicates[5]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}areaAreaDisjointPredicates_(e,t){this.m_matrix[0]=-1,this.m_matrix[1]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5]),this.areaGeomContainsOrDisjointPredicates_(t,this.m_performPredicates[6]?6:-1,this.m_scl[6],this.m_performPredicates[7]?7:-1,this.m_scl[7])}areaGeomContainsOrDisjointPredicates_(e,t,s,i,r){let n=-1!==t,a=-1!==i;if(n||a)if(("T"!==s&&"F"!==s&&n||"T"!==r&&"F"!==r&&a)&&0===e.calculateArea2D()){if(a&&(this.m_matrix[i]=-1),n){let s=v.Envelope2D.constructEmpty();e.queryEnvelope(s),this.m_matrix[t]=s.height()||s.width()?1:0}}else n&&(this.m_matrix[t]=2),a&&(this.m_matrix[i]=1)}areaAreaContainsPredicates_(e){this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1,this.m_matrix[7]=-1,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[0]?0:-1,this.m_scl[0],this.m_performPredicates[1]?1:-1,this.m_scl[1])}areaAreaWithinPredicates_(e){this.areaAreaContainsPredicates_(e),e7(this.m_matrix)}areaLineDisjointPredicates_(e,t){if(this.m_matrix[0]=-1,this.m_matrix[1]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_performPredicates[6]){let e=this.m_scl[6],s="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[6]=+!!s}if(this.m_performPredicates[7]){let e=(0,G.A)(t);this.m_matrix[7]=e?0:-1}this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5])}areaLineContainsPredicates_(e,t){if(this.m_performPredicates[0]){let e=this.m_scl[0],s="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[0]=+!!s}if(this.m_performPredicates[1]){let e=(0,G.A)(t);this.m_matrix[1]=e?0:-1}this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1,this.m_matrix[7]=-1}areaPointDisjointPredicates_(e){this.m_matrix[0]=-1,this.m_matrix[3]=-1,this.m_matrix[6]=0,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5])}areaPointContainsPredicates_(e){this.m_matrix[0]=0,this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1}lineLineDisjointPredicates_(e,t){if(this.m_matrix[0]=-1,this.m_matrix[
11]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_performPredicates[2]){let t=this.m_scl[2],s="T"===t||"F"===t||0!==e.calculateLength2D();this.m_matrix[2]=+!!s}if(this.m_performPredicates[5]){let t=(0,G.A)(e);this.m_matrix[5]=t?0:-1}if(this.m_performPredicates[6]){let e=this.m_scl[6],s="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[6]=+!!s}if(this.m_performPredicates[7]){let e=(0,G.A)(t);this.m_matrix[7]=e?0:-1}}linePointDisjointPredicates_(e){if(this.m_matrix[0]=-1,this.m_matrix[3]=-1,this.m_performPredicates[2]){let t=this.m_scl[2],s="T"===t||"F"===t||0!==e.calculateLength2D();this.m_matrix[2]=+!!s}if(this.m_performPredicates[5]){let t=(0,G.A)(e);this.m_matrix[5]=t?0:-1}this.m_matrix[6]=0}pointPointDisjointPredicates_(){this.m_matrix[0]=-1,this.m_matrix[2]=0,this.m_matrix[6]=0}areaAreaPredicates_(e,t,s){let i=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorArea_(e,t,s);let r=this.isPredicateKnown_(0);i&&=r}if(this.m_performPredicates[1]){this.interiorAreaBoundaryArea_(e,t,1);let s=this.isPredicateKnown_(1);i&&=s}if(this.m_performPredicates[2]){this.interiorAreaExteriorArea_(e,t,s,2);let r=this.isPredicateKnown_(2);i&&=r}if(this.m_performPredicates[3]){this.interiorAreaBoundaryArea_(e,s,3);let t=this.isPredicateKnown_(3);i&&=t}if(this.m_performPredicates[4]){this.boundaryAreaBoundaryArea_(e,t,s);let r=this.isPredicateKnown_(4);i&&=r}if(this.m_performPredicates[5]){this.boundaryAreaExteriorArea_(e,t,s,5);let r=this.isPredicateKnown_(5);i&&=r}if(this.m_performPredicates[6]){this.interiorAreaExteriorArea_(e,s,t,6);let r=this.isPredicateKnown_(6);i&&=r}if(this.m_performPredicates[7]){this.boundaryAreaExteriorArea_(e,s,t,7);let r=this.isPredicateKnown_(7);i&&=r}return i}areaLinePredicates_(e,t,s){let i=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorLine_(e,t,s);let r=this.isPredicateKnown_(0);i&&=r}if(this.m_performPredicates[1]){this.interiorAreaBoundaryLine_(e,t,s,this.m_clusterIndexB);let r=this.isPredicateKnown_(1);i&&=r}if(this.m_performPredicates[2]){this.interiorAreaExteriorLine_(e,t,s);let r=this.isPredicateKnown_(2);i&&=r}if(this.m_performPredicates[3]){this.boundaryAreaInteriorLine_(e,t,s,this.m_clusterIndexB);let r=this.isPredicateKnown_(3);i&&=r}if(this.m_performPredicates[4]){this.boundaryAreaBoundaryLine_(e,t,s,this.m_clusterIndexB);let r=this.isPredicateKnown_(4);i&&=r}if(this.m_performPredicates[5]){this.boundaryAreaExteriorLine_(e,t,s);let r=this.isPredicateKnown_(5);i&&=r}if(this.m_performPredicates[6]){this.exteriorAreaInteriorLine_(e,t);let s=this.isPredicateKnown_(6);i&&=s}if(this.m_performPredicates[7]){this.exteriorAreaBoundaryLine_(e,t,s,this.m_clusterIndexB);let r=this.isPredicateKnown_(7);i&&=r}return i}lineLinePredicates_(e,t,s){let i=!0;if(this.m_performPredicates[0]){this.interiorLineInteriorLine_(e,t,s,this.m_clusterIndexA,this.m_clusterIndexB);let r=this.isPredicateKnown_(0);i&&=r}if(this.m_performPredicates[1]){this.interiorLineBoundaryLine_(e,t,s,this.m_clusterIndexA,this.m_clusterIndexB,1);let r=this.isPredicateKnown_(1);i&&=r}if(this.m_performPredicates[2]){this.interiorLineExteriorLine_(e,t,s,2);let r=this.isPredicateKnown_(2);i&&=r}if(this.m_performPredicates[3]){this.interiorLineBoundaryLine_(e,s,t,this.m_clusterIndexB,this.m_clusterIndexA,3);let r=this.isPredicateKnown_(3);i&&=r}if(this.m_performPredicates[4]){this.boundaryLineBoundaryLine_(e,t,s,this.m_clusterIndexA,this.m_clusterIndexB);let r=this.isPredicateKnown_(4);i&&=r}if(this.m_performPredicates[5]){this.boundaryLineExteriorLine_(e,t,s,this.m_clusterIndexA,5);let r=this.isPredicateKnown_(5);i&&=r}if(this.m_performPredicates[6]){this.interiorLineExteriorLine_(e,s,t,6);let r=this.isPredicateKnown_(6);i&&=r}if(this.m_performPredicates[7]){this.boundaryLineExteriorLine_(e,s,t,this.m_clusterIndexB,7);let r=this.isPredicateKnown_(7);i&&=r}return i}areaPointPredicates_(e,t,s){let i=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorPoint_(e,t);let s=this.isPredicateKnown_(0);i&&=s}if(this.m_performPredicates[2]){this.interiorAreaExteriorPoint_(e,t);let s=this.isPredicateKnown_(2);i&&=s}if(this.m_performPredicates[3]){this.boundaryAreaInteriorPoint_(e,t,s
1);let r=this.isPredicateKnown_(3);i&&=r}if(this.m_performPredicates[5]){this.boundaryAreaExteriorPoint_(e,t);let s=this.isPredicateKnown_(5);i&&=s}if(this.m_performPredicates[6]){this.exteriorAreaInteriorPoint_(e,t);let s=this.isPredicateKnown_(6);i&&=s}return i}linePointPredicates_(e,t,s){let i=!0;if(this.m_performPredicates[0]){this.interiorLineInteriorPoint_(e,t,s,this.m_clusterIndexA);let r=this.isPredicateKnown_(0);i&&=r}if(this.m_performPredicates[2]){this.interiorLineExteriorPoint_(e,t,s,this.m_clusterIndexA);let r=this.isPredicateKnown_(2);i&&=r}if(this.m_performPredicates[3]){this.boundaryLineInteriorPoint_(e,t,s,this.m_clusterIndexA);let r=this.isPredicateKnown_(3);i&&=r}if(this.m_performPredicates[5]){this.boundaryLineExteriorPoint_(e,t,s,this.m_clusterIndexA);let r=this.isPredicateKnown_(5);i&&=r}if(this.m_performPredicates[6]){this.exteriorLineInteriorPoint_(e,t,s);let r=this.isPredicateKnown_(6);i&&=r}return i}pointPointPredicates_(e,t,s){let i=!0;if(this.m_performPredicates[0]){this.interiorPointInteriorPoint_(e,t,s);let r=this.isPredicateKnown_(0);i&&=r}if(this.m_performPredicates[2]){this.interiorPointExteriorPoint_(e,t,s,2);let r=this.isPredicateKnown_(2);i&&=r}if(this.m_performPredicates[6]){this.interiorPointExteriorPoint_(e,s,t,6);let r=this.isPredicateKnown_(6);i&&=r}return i}interiorAreaInteriorArea_(e,t,s){if(2===this.m_matrix[0])return;let i=this.m_topoGraph.getHalfEdgeFaceParentage(e);0!=(i&t)&&0!=(i&s)&&(this.m_matrix[0]=2)}interiorAreaBoundaryArea_(e,t,s){if(1===this.m_matrix[s])return;let i=this.m_topoGraph.getHalfEdgeFaceParentage(e),r=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0!=(i&t)&&0!=(r&t)&&(this.m_matrix[s]=1)}interiorAreaExteriorArea_(e,t,s,i){if(2===this.m_matrix[i])return;let r=this.m_topoGraph.getHalfEdgeFaceParentage(e);0!=(r&t)&&0==(r&s)&&(this.m_matrix[i]=2)}boundaryAreaBoundaryArea_(e,t,s){if(1===this.m_matrix[4])return;let i=this.m_topoGraph.getHalfEdgeParentage(e);if(0==(i&t)||0==(i&s)){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),r=this.m_topoGraph.getClusterParentage(i);if(0!=(r&t)&&0!=(r&s))return void(this.m_matrix[4]=0)}}else this.m_matrix[4]=1}boundaryAreaExteriorArea_(e,t,s,i){if(1===this.m_matrix[i])return;let r=this.m_topoGraph.getHalfEdgeFaceParentage(e),n=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0==(r&s)&&0==(n&s)&&(this.m_matrix[i]=1)}interiorAreaInteriorLine_(e,t,s){if(1===this.m_matrix[0])return;let i=this.m_topoGraph.getHalfEdgeFaceParentage(e),r=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0!=(i&t)&&0!=(r&t)&&(this.m_matrix[0]=1)}interiorAreaBoundaryLine_(e,t,s,i){if(0!==this.m_matrix[1]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let r=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(r);if(0==(n&t)&&0!=(this.m_topoGraph.getHalfEdgeFaceParentage(e)&t)){let e=this.m_topoGraph.getClusterUserIndex(r,i);if(0!=(n&s)&&e%2!=0)return void(this.m_matrix[1]=0)}}}interiorAreaExteriorLine_(e,t,s){2!==this.m_matrix[2]&&0!=(this.m_topoGraph.getHalfEdgeParentage(e)&t)&&(this.m_matrix[2]=2)}boundaryAreaInteriorLine_(e,t,s,i){if(1===this.m_matrix[3])return;let r=this.m_topoGraph.getHalfEdgeParentage(e);if(0==(r&t)||0==(r&s)){if(0!==this.m_matrix[3]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let r=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(r);if(0!=(n&t)){let e=this.m_topoGraph.getClusterUserIndex(r,i);if(0!=(n&s)&&e%2==0)return void(this.m_matrix[3]=0)}}}else this.m_matrix[3]=1}boundaryAreaBoundaryLine_(e,t,s,i){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let r=this.m_topoGra
1ph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(r);if(0!=(n&t)){let e=this.m_topoGraph.getClusterUserIndex(r,i);if(0!=(n&s)&&e%2!=0)return void(this.m_matrix[4]=0)}}}boundaryAreaExteriorLine_(e,t,s){if(1===this.m_matrix[5])return;let i=this.m_topoGraph.getHalfEdgeParentage(e);0!=(i&t)&&0==(i&s)&&(this.m_matrix[5]=1)}exteriorAreaInteriorLine_(e,t){if(1===this.m_matrix[6])return;let s=this.m_topoGraph.getHalfEdgeFaceParentage(e),i=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0==(s&t)&&0==(i&t)&&(this.m_matrix[6]=1)}exteriorAreaBoundaryLine_(e,t,s,i){if(0!==this.m_matrix[7]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let r=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(r);if(0==(n&t)&&0==(this.m_topoGraph.getHalfEdgeFaceParentage(e)&t)){let e=this.m_topoGraph.getClusterUserIndex(r,i);if(0!=(n&s)&&e%2!=0)return void(this.m_matrix[7]=0)}}}interiorLineInteriorLine_(e,t,s,i,r){if(1===this.m_matrix[0])return;let n=this.m_topoGraph.getHalfEdgeParentage(e);if(0==(n&t)||0==(n&s)){if(0!==this.m_matrix[0]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let n=this.m_topoGraph.getHalfEdgeTo(e),a=this.m_topoGraph.getClusterParentage(n);if(0!=(a&t)&&0!=(a&s)){let e=this.m_topoGraph.getClusterUserIndex(n,i),t=this.m_topoGraph.getClusterUserIndex(n,r);if(e%2==0&&t%2==0)return void(this.m_matrix[0]=0)}}}else this.m_matrix[0]=1}interiorLineBoundaryLine_(e,t,s,i,r,n){if(0!==this.m_matrix[n]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let a=this.m_topoGraph.getHalfEdgeTo(e),o=this.m_topoGraph.getClusterParentage(a);if(0!=(o&t)&&0!=(o&s)){let e=this.m_topoGraph.getClusterUserIndex(a,i),t=this.m_topoGraph.getClusterUserIndex(a,r);if(e%2==0&&t%2!=0)return void(this.m_matrix[n]=0)}}}interiorLineExteriorLine_(e,t,s,i){if(1===this.m_matrix[i])return;let r=this.m_topoGraph.getHalfEdgeParentage(e);0!=(r&t)&&0==(r&s)&&(this.m_matrix[i]=1)}boundaryLineBoundaryLine_(e,t,s,i,r){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let n=this.m_topoGraph.getHalfEdgeTo(e),a=this.m_topoGraph.getClusterParentage(n);if(0!=(a&t)&&0!=(a&s)){let e=this.m_topoGraph.getClusterUserIndex(n,i),t=this.m_topoGraph.getClusterUserIndex(n,r);if(e%2!=0&&t%2!=0)return void(this.m_matrix[4]=0)}}}boundaryLineExteriorLine_(e,t,s,i,r){if(0!==this.m_matrix[r]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let t=this.m_topoGraph.getHalfEdgeTo(e);if(0==(this.m_topoGraph.getClusterParentage(t)&s)&&this.m_topoGraph.getClusterUserIndex(t,i)%2!=0)return void(this.m_matrix[r]=0)}}interiorAreaInteriorPoint_(e,t){if(0!==this.m_matrix[0]&&0==(this.m_topoGraph.getClusterParentage(e)&t)){let s=this.m_topoGraph.getClusterChain(e);if(0!=(this.m_topoGraph.getChainParentage(s)&t))return void(this.m_matrix[0]=0)}}interiorAreaExteriorPoint_(e,t){2!==this.m_matrix[2]&&0!=(this.m_topoGraph.getClusterParentage(e)&t)&&(this.m_matrix[2]=2)}boundaryAreaInteriorPoint_(e,t,s){if(0===this.m_matrix[3])return;let i=this.m_topoGraph.getClusterParentage(e);0==(i&t)||0==(i&s)||(this.m_matrix[3]=0)}boundaryAreaExteriorPoint_(e,t){1!==this.m_matrix[5]&&0!=(this.m_topoGraph.getClusterParentage(e)&t)&&(this.m_matrix[5]=1)}exteriorAreaInteriorPoint_(e,t){if(0!==this.m_matrix[6]&&0==(this.m_topoGraph.getClusterParentage(e)&t)){let s=this.m_topoGraph.getClusterChain(e);if(0==(this.m_topoGraph.getChainParentage(s)&t))return void(this.m_matrix[6]=0)}}interiorLineInteriorPoint_(e,t,s,i){if(0===this.m_matrix[0])return;let r=this.m_topoGraph.getClusterParentage(e);if(0!=(r&t)&&0!=(r&s)&&this.m_topoGraph.getClusterUserIndex(e,i)%2==0)return void(this.m_matrix[0]=0)}interiorLineExteriorPoint_(e,t,s,i){if(1!==this.m_matrix[2])if(-1===this.m_topoGra
1ph.getClusterHalfEdge(e)){if(0!==this.m_matrix[2]&&0==(this.m_topoGraph.getClusterParentage(e)&s))return void(this.m_matrix[2]=0)}else this.m_matrix[2]=1}boundaryLineInteriorPoint_(e,t,s,i){if(0===this.m_matrix[3])return;let r=this.m_topoGraph.getClusterParentage(e);if(0!=(r&t)&&0!=(r&s)&&this.m_topoGraph.getClusterUserIndex(e,i)%2!=0)return void(this.m_matrix[3]=0)}boundaryLineExteriorPoint_(e,t,s,i){if(0===this.m_matrix[5])return;let r=this.m_topoGraph.getClusterParentage(e);if(0!=(r&t)&&0==(r&s)&&this.m_topoGraph.getClusterUserIndex(e,i)%2!=0)return void(this.m_matrix[5]=0)}exteriorLineInteriorPoint_(e,t,s){if(0===this.m_matrix[6])return;let i=this.m_topoGraph.getClusterParentage(e);0!=(i&t)||0==(i&s)||(this.m_matrix[6]=0)}interiorPointInteriorPoint_(e,t,s){if(0===this.m_matrix[0])return;let i=this.m_topoGraph.getClusterParentage(e);0==(i&t)||0==(i&s)||(this.m_matrix[0]=0)}interiorPointExteriorPoint_(e,t,s,i){if(0===this.m_matrix[i])return;let r=this.m_topoGraph.getClusterParentage(e);0==(r&t)||0!=(r&s)||(this.m_matrix[i]=0)}computeMatrixTopoGraphHalfEdges_(e,t){let s=!1,i=this.m_topoGraph.getGeometryID(e),r=this.m_topoGraph.getGeometryID(t);this.m_visitedIndex=this.m_topoGraph.createUserIndexForHalfEdges();for(let e=this.m_topoGraph.getFirstCluster();e!==G.n;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(t===G.n){if(null!==this.m_predicatesCluster&&(s=this.m_predicatesCluster(e,i,r)))break;continue}let n=t;do{let e=n;if(1!==this.m_topoGraph.getHalfEdgeUserIndex(e,this.m_visitedIndex))do{if(s=this.m_predicatesHalfEdge(e,i,r))break;this.m_topoGraph.setHalfEdgeUserIndex(e,this.m_visitedIndex,1),e=this.m_topoGraph.getHalfEdgeNext(e)}while(e!==n&&!s);if(s)break;n=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(e))}while(n!==t);if(s)break}s||this.setRemainingPredicatesToFalse_(),this.m_topoGraph.deleteUserIndexForHalfEdges(this.m_visitedIndex)}computeMatrixTopoGraphClusters_(e,t){let s=!1,i=this.m_topoGraph.getGeometryID(e),r=this.m_topoGraph.getGeometryID(t);for(let e=this.m_topoGraph.getFirstCluster();e!==G.n&&!(s=this.m_predicatesCluster(e,i,r));e=this.m_topoGraph.getNextCluster(e));s||this.setRemainingPredicatesToFalse_()}setEditShape_(e,t){this.m_topoGraph.setEditShape(e,t)}setEditShapeCrackAndCluster_(e,t,s){let i=0;if(e.hasCurves()){let r=new ss,n=e.getEnvelope2D(s),a=t5(t.total(),n);i=st(a,0),t6(e,a,t.total(),12e3,r,null,s),r.clearStitcher(e)}sr(e,t.add(i),s,!1,!1),e.filterClosePoints(0,!0,!0,!1,G.n);for(let t=e.getFirstGeometry();t!==G.n;t=e.getNextGeometry(t))e.getGeometryType(t)===I.G.enumPolygon&&ez(e,t,-1,!1,G.n,s);this.setEditShape_(e,s)}}function e7(e){let t=e[1],s=e[2],i=e[5];e[1]=e[3],e[2]=e[6],e[5]=e[7],e[3]=t,e[6]=s,e[7]=i}function e6(e,t,s){let i=e.getGeometryType();if((0,I.f)(i)){let t=new G.P({vd:e.getDescription()});return t.addSegment(e,!0),t}if(i===I.G.enumEnvelope){let s=v.Envelope2D.constructEmpty();if(e.queryEnvelope(s),s.height()<=t&&s.width()<=t){let t=new w.P({vd:e.getDescription()});return e.getCenter(t),t}if(s.height()<=t||s.width()<=t){let t=new G.P({vd:e.getDescription()}),s=new w.P;return e.queryCornerByVal(0,s),t.startPathPoint(s),e.queryCornerByVal(2,s),t.lineToPoint(s),t}let i=new G.a({vd:e.getDescription()});return i.addEnvelope(e,!1),i}return e}function e8(e){return`${e[0]}${e[3]}${e[6]}${e[1]}${e[4]}${e[7]}${e[2]}${e[5]}${e[8]}`}class e9{nullFunc(){return(0,I.d)("should not be called"),!1}constructor(e,t,s,i=!1){this.m_bDone=!1,this.m_tolerance=0,this.m_elementHandle=-1,this.m_query=v.Envelope2D.constructEmpty(),this.m_envInter=v.Envelope2D.constructEmpty(),this.m_quadTree=null,this.m_intersector=null,this.m_function=this.nullFunc;const r=e.getAccelerators();let n=null;null!=r&&(n=i?r.getQuadTreeForPaths():r.getQuadTree());const a=t.getAccelerators();let o=null;if(null!=a&&(o=i?a.getQuadTreeForPaths():a.getQuadTree()),null===n&&null===o&&!i){const i=e.getPointCount(),r=t.getPointCount();if(i>10&&r>10){const a=v.Envelope2D.constructEmpty(),l=v.Envelope2D.constructEmpty(),h=v.Envelope2D.constructEmpty();e.queryLooseEnvelope(a),t.queryLooseEnvelope(l),a.inflateCoords(s,s),l.inflateCoords(s,s),h.setCoords({env2D:a}),h.intersect(l),i>=r?n=(0,I.h)(e.getGeometryType())?(0,w.t)(e,h):(0,w.u)(e,h):o=(0,I.h)(t.getGeometryType())?(0,w.t)(t,h):(0,w.u)(t,h)}}this.construct_(e,n,t,o,s,i)}next(){if(this.m_bQuadTree){if(this.m_bDone)return!1;for(;this.m_function(););return!this.m_bDone}return!!this.m_intersector&&this.m_intersector.next()}getRedElement(){return this.m_bQuadTree?this.m_bSwapElements?this.m_quadTree.getElement(this.m_elementHandle):(0,I.h)(this.m_queryType)?this.m_bPaths?this.m_pathIndex:this.m_segIter.getStartPointIndex():this.m_pointIndex:this.m_b
1SwapElements?this.m_intersector.getBlueElement(this.m_intersector.getHandleB()):this.m_intersector.getRedElement(this.m_intersector.getHandleA())}getBlueElement(){return this.m_bQuadTree?this.m_bSwapElements?(0,I.h)(this.m_queryType)?this.m_bPaths?this.m_pathIndex:this.m_segIter.getStartPointIndex():this.m_pointIndex:this.m_quadTree.getElement(this.m_elementHandle):this.m_bSwapElements?this.m_intersector.getRedElement(this.m_intersector.getHandleA()):this.m_intersector.getBlueElement(this.m_intersector.getHandleB())}getRedEnvelope(){return this.m_bPaths||(0,I.p)(""),this.m_bQuadTree?this.m_bSwapElements?this.m_quadTree.getElementExtent(this.m_elementHandle):this.m_query:this.m_bSwapElements?this.m_intersector.getBlueEnvelope(this.m_intersector.getHandleB()):this.m_intersector.getRedEnvelope(this.m_intersector.getHandleA())}getBlueEnvelope(){return this.m_bPaths||(0,I.p)(""),this.m_bQuadTree?this.m_bSwapElements?this.m_query:this.m_quadTree.getElementExtent(this.m_elementHandle):this.m_bSwapElements?this.m_intersector.getRedEnvelope(this.m_intersector.getHandleA()):this.m_intersector.getBlueEnvelope(this.m_intersector.getHandleB())}construct_(e,t,s,i,r,n){let a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty();e.queryLooseEnvelope(a),s.queryLooseEnvelope(o),a.inflateCoords(r,r),o.inflateCoords(r,r),this.m_envInter.setCoords({env2D:a}),this.m_envInter.intersect(o),this.m_multiVertexImplA=e,this.m_multiVertexImplB=s;let l=e.getGeometryType(),h=s.getGeometryType();this.m_bPaths=n,this.m_pathIndex=-1,this.m_pointIndex=-1,this.m_bSwapElements=!1,this.m_queryType=I.G.enumUnknown,this.m_bQuadTree=!1,null!==t&&(this.m_bDone=!1,this.m_tolerance=r,this.m_quadTree=t,this.m_qtIter=this.m_quadTree.getIteratorForQT(),this.m_bQuadTree=!0,this.m_bSwapElements=!0,(0,I.h)(h)?(this.m_queryType=h,this.m_function=this.nextPath_,n?this.m_pathIndex=s.getPathCount():this.m_segIter=s.querySegmentIterator()):(this.m_queryType=h,this.m_function=this.nextPoint_,this.m_pointIndex=s.getPointCount())),this.m_bQuadTree||null!==i&&(this.m_bDone=!1,this.m_tolerance=r,this.m_quadTree=i,this.m_qtIter=this.m_quadTree.getIteratorForQT(),this.m_bQuadTree=!0,this.m_bSwapElements=!1,(0,I.h)(l)?(this.m_queryType=l,this.m_function=this.nextPath_,n?this.m_pathIndex=e.getPathCount():this.m_segIter=e.querySegmentIterator()):(this.m_queryType=l,this.m_function=this.nextPoint_,this.m_pointIndex=e.getPointCount())),this.m_bQuadTree||(n&&(0,I.h)(l)&&(0,I.h)(h)?this.m_intersector=(0,w.y)(e,s,r):(0,I.h)(l)&&(0,I.h)(h)?(this.m_intersector=(0,w.v)(e,s,r),this.m_bSwapElements=!1):(0,I.h)(l)&&!(0,I.h)(h)?(this.m_intersector=(0,w.w)(e,s,r),this.m_bSwapElements=!1):!(0,I.h)(l)&&(0,I.h)(h)?(this.m_intersector=(0,w.w)(s,e,r),this.m_bSwapElements=!0):(this.m_intersector=(0,w.x)(e,s,r),this.m_bSwapElements=!1))}nextPath_(){return this.m_bPaths?-1==--this.m_pathIndex?(this.m_bDone=!0,!1):(this.m_bSwapElements?this.m_multiVertexImplB.queryPathEnvelope(this.m_pathIndex,this.m_query):this.m_multiVertexImplA.queryPathEnvelope(this.m_pathIndex,this.m_query),this.m_qtIter.resetIterator(this.m_query,this.m_tolerance),this.m_function=this.iterate_,!0):this.m_segIter.nextPath()?(this.m_function=this.nextSegment_,!0):(this.m_bDone=!0,!1)}nextSegment_(){if(!this.m_segIter.hasNextSegment())return this.m_function=this.nextPath_,!0;let e=this.m_segIter.nextSegment(),t=new v.Envelope2D;return e.queryLooseEnvelope(t),!t.isIntersecting(this.m_envInter)||(this.m_qtIter.resetIterator(e,this.m_tolerance),this.m_function=this.iterate_,!0)}nextPoint_(){if(-1==--this.m_pointIndex)return this.m_bDone=!0,!1;let e=new b.P;if(this.m_bSwapElements){let t=this.m_multiVertexImplB.getXY(this.m_pointIndex);e.setCoordsPoint2D(t)}else{let t=this.m_multiVertexImplA.getXY(this.m_pointIndex);e.setCoordsPoint2D(t)}return!this.m_envInter.contains(e)||(this.m_qtIter.resetIterator(v.Envelope2D.construct(e.x,e.y,e.x,e.y),this.m_tolerance),this.m_function=this.iterate_,!0)}iterate_(){return this.m_elementHandle=this.m_qtIter.next(),-1===this.m_elementHandle&&((0,I.h)(this.m_queryType)?this.m_function=this.m_bPaths?this.nextPath_:this.nextSegment_:this.m_function=this.nextPoint_,!0)}}function e5(e){return 2===e?1:1===e?2:128===e?64:64===e?128:e}function te(e,t,s){let i;if(e instanceof rW||null===e){let r=v.Envelope2D.constructEmpty();r.setCoords({env2D:t}),r.mergeEnvelope2D(s),i=(0,w.a)(e,r,!1)}else i=e;return i}function tt(e,t,s,i,r){if(e.isEmpty()||t.isEmpty())return 4===i;(0,I.c)(e),(0,I.c)(t);let n=e.getGeometryType(),a=t.getGeometryType();if(n===I.G.enumEnvelope){if(a===I.G.enumEnvelope)return function(e,t,s,i){if(e.isEmpty()||t.isEmpty())return 4===i;let r=v.Envelope2D.constructEmpty();e.queryEnvelope(r);let n=v.Envelope2D.constructEmpty();t.queryEnvelope(n);let a=te(s,r,n);switch(i){case 4:return ti(r,n,a);case 2:return tT(n,r,a,!1);case 128:return tT(n,r,a,!0);case 1:return tT(r,n,a,!1);case 64:return tT(r,n,a,!0);case 3:return tb(r,n,a);case 8:var o=r,l=n,h=a;if(o.height()<=h||o.width()<=h||l.height()<=h||l.width()<=h)break;let m=new v.Envelope2D;return m.setCoords({env2D:o}),m.inflateCoords(-h,-h),m.intersect(l),!(!m.isEmpty()&&m.height()>h&&m.width()>h)&&(m.setCoords({env2D:o}),m.inflateCoords(h,h),m.intersect(l),!m.isEmpty());case 32:var g=r,u=n,_=a;if(g.height()<=_||g.width()<=_||u.height()<=_||u.width()<=_||tV(g,u,_)||tV(u,g,_))break;let p=new v.Envelope2D;return p.setCoords({env2D:g}),p.inflateCoords(-_,-_),p.intersect(u),!p.isEmpty()&&(p.height()>_||p.width()>_)}return!1}(e,t,s,i);if(a===I.G.enumPoint)return ts(t,e,s,e5(i))}else if(n===I.G.enumPoint){if(a===I.G.enumEnvelope)return ts(e,t,s,i);if(a===I.G.enumPoint)return function(e,t,s,i){let r;if(e.isEmpty()||t.isEmpty())return 4===i;let n=e.getXY(),a=t.getXY();if(s instanceof rW||null===s){let e=v.Envelope2D.constructEmpty();e.setCoords({pt:n}),e.merge(a),r=(0,w.a)(s,e,!1)}else r=s;switch(i){case 4:var o,l,h;return o=n,l=a,h=r,b.P.sqrDistance(o,l)>
1h*h;case 2:case 128:return function(e,t,s,i){return tw(e,t,s)}(a,n,r);case 1:case 64:return function(e,t,s,i){return tw(e,t,s)}(n,a,r);case 3:return tw(n,a,r)}return!1}(e,t,s,i)}let o=v.Envelope2D.constructEmpty();e.queryEnvelope(o);let l=v.Envelope2D.constructEmpty();t.queryEnvelope(l);let h=te(s,o,l);if(ti(o,l,h))return 4===i;let m=!1,g=null,u=null,_=null,p=null;switch((0,I.f)(n)?((g=new G.P({vd:e.getDescription()})).addSegment(e,!0),_=g,n=I.G.enumPolyline):_=e,(0,I.f)(a)?((u=new G.P({vd:t.getDescription()})).addSegment(t,!0),p=u,a=I.G.enumPolyline):p=t,n!==I.G.enumEnvelope&&a!==I.G.enumEnvelope?(_.getDimension()<p.getDimension()||n===I.G.enumPoint&&a===I.G.enumMultiPoint)&&(i=e5(i)):n!==I.G.enumPolygon&&a!==I.G.enumEnvelope&&(i=e5(i)),n){case I.G.enumPolygon:switch(a){case I.G.enumPolygon:m=function(e,t,s,i,r){var n,a,o,l,h,m,g,u,_,p;switch(i){case 4:return tr(n=e,a=t,o=s,!0),1===tN(n,a,o,!0);case 2:return tc(t,e,s,r);case 128:return tf(t,e,s);case 1:return tc(e,t,s,r);case 64:return tf(e,t,s);case 3:return td(e,t,s,r);case 8:return l=e,h=t,m=s,tr(l,h),tX(l,h,m,null);case 32:return g=e,u=t,_=s,p=r,tr(g,u),tL(g,u,_,p)}return!1}(_,p,h,i,r);break;case I.G.enumPolyline:m=ta(_,p,h,i,r);break;case I.G.enumPoint:m=to(_,p,h,i);break;case I.G.enumMultiPoint:m=tl(_,p,h,i);break;case I.G.enumEnvelope:m=th(_,p,h,i,r)}break;case I.G.enumPolyline:switch(a){case I.G.enumPolygon:m=ta(p,_,h,i,r);break;case I.G.enumPolyline:m=function(e,t,s,i,r){var n,a,o,l,h,m,g;switch(i){case 4:return n=e,a=t,o=s,tr(n,a),!new e9(n.getImpl(),a.getImpl(),o,!0).next()||!tq(n,a,o);case 2:return ty(t,e,s,r);case 128:return tS(t,e,s,r);case 1:return ty(e,t,s,r);case 64:return tS(e,t,s,r);case 3:let u,_;return l=e,h=t,m=s,g=r,u=v.Envelope2D.constructEmpty(),_=v.Envelope2D.constructEmpty(),l.queryEnvelope(u),h.queryEnvelope(_),!!tb(u,_,m)&&(tr(l,h),!!tk(l,h,m)||(l.hasNonLinearSegments()||h.hasNonLinearSegments()?ej(l,h,m,"**F**FFF*",g,!1):tM(l,h,m,!1)));case 8:return function(e,t,s,i){tr(e,t);let r=[],n=tB(e,t,s,r);if(-2===n){let r,n,a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty(),l=v.Envelope2D.constructEmpty();if(e.queryEnvelope(a),t.queryEnvelope(o),a.inflateCoords(1e3*s,1e3*s),o.inflateCoords(1e3*s,1e3*s),l.setCoords({env2D:a}),l.intersect(o),e.getPointCount()>10){if((r=(0,D.c)(e,l,s,0,i)).isEmpty())return!1}else r=e;if(t.getPointCount()>10){if((n=(0,D.c)(t,l,s,0,i)).isEmpty())return!1}else n=t;return ej(r,n,s,"F********",i,!1)}if(0!==n)return!1;let a=new G.M;for(let e=0;e<r.length;e+=2){let t=r[e],s=r[e+1];a.addXY(t,s)}let o=e.getBoundary(),l=t.getBoundary();return o.addPoints(l,0,l.getPointCount()),!o.isEmpty()&&tI(o,a,s)}(e,t,s,r);case 32:return function(e,t,s,i){let r,n;tr(e,t);let a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty();e.queryEnvelope(a),t.queryEnvelope(o);let l=tH(a,o,s),h=tH(o,a,s),m=e.hasNonLinearSegments(),g=t.hasNonLinearSegments(),u=tB(e,t,s,null);if(-1===u)return!1;if(1===u){if(l&&h)return!0;if(!m&&!g)return l&&!h?!tU(t,e,s,!1):h&&!l?!tU(e,t,s,!1):!tU(e,t,s,!1)&&!tU(t,e,s,!1)}let _=v.Envelope2D.constructEmpty(),p=v.Envelope2D.constructEmpty(),d=v.Envelope2D.constructEmpty();_.setCoords({env2D:a}),_.inflateCoords(1e3*s,1e3*s),p.setCoords({env2D:o}),p.inflateCoords(1e3*s,1e3*s),d.setCoords({env2D:_}),d.intersect(p);let c="";if(c+="1*",l){if(t.getPointCount()>10){if((n=(0,D.c)(t,d,s,0,i)).isEmpty())return!1}else n=t;c+="****"}else n=t,c+="T***";if(h){if(e.getPointCount()>10){if((r=(0,D.c)(e,d,s,0,i)).isEmpty())return!1}else r=e;c+="***"}else r=e,c+="T**";return ej(r,n,s,c,i,!1)}(e,t,s,r);case 16:return function(e,t,s,i){tr(e,t);let r=[],n=tB(e,t,s,r);if(-2===n){let r,n,a=v.Envelope2D.constructEmpty(),o=v.Envelope2D.constructEmpty(),l=v.Envelope2D.constructEmpty();if(e.queryEnvelope(a),t.queryEnvelope(o),a.inflateCoords(1e3*s,1e3*s),o.inflateCoords(1e3*s,1e3*s),l.setCoords({env2D:a}),l.intersect(o),e.getPointCount()>10){if((r=(0,D.c)(e,l,s,0,i)).isEmpty())return!1}else r=e;if(t.getPointCount()>10){if((n=(0,D.c)(t,l,s,0,i)).isEmpty())return!1}else n=t;return ej(r,n,s,"0********",i,!1)}if(0!==n)return!1;let a=new G.M;for(let e=0;e<r.length;e+=2){let t=r[e],s=r[e+1];a.addXY(t,s)}let o=e.getBoundary(),l=t.getBoundary();return o.addPoints(l,0,l.getPointCount()),!!o.isEmpty()||!tI(o,a,s)}(e,t,s,r)}return!1}(_,p,h,i,r);break;case I.G.enumPoint:m=tm(_,p,h,i);break;case I.G.enumMultiPoint:m=tg(_,p,h,i);break;case I.G.enumEnvelope:m=tu(_,p,h,i,r)}break;case I.G.enumPoint:switch(a){case I.G.enumPolygon:m=to(p,_,h,i);break;case I.G.enumPolyline:m=tm(p,_,h,i);break;case I.G.enumMultiPoint:m=t_(p,_,h,i)}break;case I.G.enumMultiPoint:switch(a){case I.G.enumPolygon:m=tl(p,_,h,i);break;case I.G.enumPolyline:m=tg(p,_,h,i);break;case I.G.enumMultiPoint:m=function(e,t,s,i){switch(i){case 4:return function(e,t,s){let i=new e9(e,t,s,!1),r=s*s,n=new b.P,a=new b.P;for(;i.next();){let s=i.getRedElement(),o=i.getBlueElement();if(e.queryXY(s,n),t.queryXY(o,a),b.P.sqrDistance(n,a)<=r)return!1}return!0}(e,t,s);case 2:case 128:return tI(t,e,s);case 1:case 64:return tI(e,t,s);case 3:var r,n,a;let o,l;return r=e,n=t,a=s,o=v.Envelope2D.constructEmpty(),l=v.Envelope2D.constructEmpty(),r.queryEnvelope(o),n.queryEnvelope(l),!!tb(o,l,a)&&(!!function(e,t,s){if(e.getPointCount()!==t.getPointCount())return!1;let i=new b.P,r=new b.P,n=!0,a=s*s;for(let s=0;s<e.getPointCount();s++)if(e.queryXY(s,i),t.queryXY(s,r),b.P.sqrDistance(i,r)>a){n=!1;break}return!!n}
1(r,n,a)||tA(r,n,a,!1,!0,!1));case 32:return tA(e,t,s,!1,!1,!0)}return!1}(_,p,h,i);break;case I.G.enumPoint:m=t_(_,p,h,i);break;case I.G.enumEnvelope:m=tp(_,p,h,i)}break;case I.G.enumEnvelope:switch(a){case I.G.enumPolygon:m=th(p,_,h,i,r);break;case I.G.enumPolyline:m=tu(p,_,h,i,r);break;case I.G.enumMultiPoint:m=tp(p,_,h,i)}}return m}function ts(e,t,s,i,r){if(e.isEmpty()||t.isEmpty())return 4===i;let n=e.getXY(),a=v.Envelope2D.constructEmpty();t.queryEnvelope(a);let o=function(e,t,s){let i;if(e instanceof rW||null===e){let r=v.Envelope2D.constructEmpty();r.setCoords({pt:t}),r.mergeEnvelope2D(s),i=(0,w.a)(e,r,!1)}else i=e;return i}(s,n,a);switch(i){case 4:return tn(n,a,o);case 2:case 128:var l,h,m,g=n,u=a,_=o;if(u.height()<=_||u.width()<=_)break;let p=v.Envelope2D.constructEmpty();return p.setCoords({env2D:u}),p.inflateCoords(-_,-_),p.containsExclusive(g);case 1:case 64:break;case 3:let d;return l=n,h=a,m=o,(d=new v.Envelope2D).setCoords({pt:l}),tb(d,h,m);case 8:var c=n,f=a,x=o;if(f.height()<=x||f.width()<=x)break;let P=new v.Envelope2D,E=new v.Envelope2D;return P.setCoords({env2D:f}),P.inflateCoords(x,x),!!P.contains(c)&&(E.setCoords({env2D:f}),E.inflateCoords(-x,-x),!E.containsExclusive(c))}return!1}function ti(e,t,s){let i=v.Envelope2D.constructEmpty();
1return i.setCoords({env2D:t}),i.inflateCoords(s,s),!e.isIntersecting(i)}function tr(e,t,s,i=!1){let r=e.getGeometryType(),n=t.getGeometryType();if((0,I.i)(r)){let t=e.getImpl().getAccelerators();if(null!==t){let e=t.getRasterizedGeometry();(0,I.g)(null===e)}}if((0,I.i)(n)){let e=t.getImpl().getAccelerators();if(null!==e){let t=e.getRasterizedGeometry();(0,I.g)(null===t)}}return 0}function tn(e,t,s,i){let r=v.Envelope2D.constructEmpty();return r.setCoords({env2D:t}),r.inflateCoords(s,s),!r.contains(e)}function ta(e,t,s,i,r){var n,a,o,l,h,m,g,u,_,p,d,c,f,x,P,E,y;switch(i){case 4:return tr(n=e,a=t,o=s,!0),1===tN(n,a,o,!0);case 1:let S,C;return l=e,h=t,m=s,g=r,S=v.Envelope2D.constructEmpty(),C=v.Envelope2D.constructEmpty(),l.queryEnvelope(S),h.queryEnvelope(C),!!tV(S,C,m)&&(tr(l,h),function(e,t,s,i){let r,n=[!1],a=tD(e,t,s,n);if(n[0])return a;let o=v.Envelope2D.constructEmpty();if(t.queryEnvelope(o),o.inflateCoords(1e3*s,1e3*s),e.getPointCount()>10){if((r=(0,D.c)(e,o,s,0,i)).isEmpty())return!1}else r=e;return function(e,t,s,i){let r=new e3;r.resetMatrix_(),r.setPredicates_("T*****F**"),r.setAreaLinePredicates_();let n=v.Envelope2D.constructEmpty(),a=v.Envelope2D.constructEmpty();e.queryEnvelope(n),t.queryEnvelope(a);let o=!1;if(ti(n,a,s)&&(r.areaLineDisjointPredicates_(e,t),o=!0),o||tr(e,t),o)return e2(r.m_matrix,r.m_scl);let l=new G.E,h=l.addGeometry(e),m=l.addGeometry(t);return r.setEditShapeCrackAndCluster_(l,new w.C(s,0),i),0!==l.getPointCount(h)&&(r.computeMatrixTopoGraphHalfEdges_(h,m),r.m_topoGraph.removeShape(),e2(r.m_matrix,r.m_scl))}(r,t,s,i)}(l,h,m,g));case 64:let I,T;return u=e,_=t,p=s,I=v.Envelope2D.constructEmpty(),T=v.Envelope2D.constructEmpty(),u.queryEnvelope(I),_.queryEnvelope(T),!!tV(I,T,p)&&(tr(u,_),2===tN(u,_,p,!1));case 8:return d=e,c=t,f=s,x=r,tr(d,c),tW(d,c,f,x);case 16:return P=e,E=t,y=s,tr(P,E),function(e,t,s){let i=e.getImpl(),r=t.getImpl(),n=i.querySegmentIterator(),a=r.querySegmentIterator(),o=(0,b.d)(2,NaN),l=(0,b.d)(2,NaN),h=new e9(i,r,s),m=!1;for(;h.next();){let e=h.getRedElement(),t=h.getBlueElement();n.resetToVertex(e,-1),a.resetToVertex(t,-1);let i=n.nextSegment(),r=a.nextSegment(),g=0;if(tK(i,r)?!m&&r.isIntersecting(i,s)&&(m=!0):g=r.intersect(i,null,l,o,s),2===g)m=!0;else if(g){let e=o[0],t=l[0];if(e>0&&e<1&&t>0&&t<1)return!0;m=!0}}if(!m)return!1;let g=v.Envelope2D.constructEmpty(),u=v.Envelope2D.constructEmpty(),_=v.Envelope2D.constructEmpty(),p=v.Envelope2D.constructEmpty(),d=v.Envelope2D.constructEmpty();if(e.queryEnvelope(g),t.queryEnvelope(u),tH(u,g,s)){let i,r;if(_.setCoords({env2D:g}),_.inflateCoords(1e3*s,1e3*s),p.setCoords({env2D:u}),p.inflateCoords(1e3*s,1e3*s),d.setCoords({env2D:_}),d.intersect(p),e.getPointCount()>10){if((i=(0,D.c)(e,d,s,0,null)).isEmpty())return!1}else i=e;if(t.getPointCount()>10){if((r=(0,D.c)(t,d,s,0,null)).isEmpty())return!1}else r=t;return ej(i,r,s,"T********",null,!1)}return ej(e,t,s,"T*****T**",null,!1)}(P,E,y)}return!1}function to(e,t,s,i,r){var n,a,o,l,h,m;switch(i){case 4:return 0===tJ(e,t,s);case 1:case 64:return n=e,a=t,o=s,1===t$(n,a.getXY(),o);case 8:return l=e,h=t,m=s,2===t$(l,h.getXY(),m)}return!1}function tl(e,t,s,i,r){switch(i){case 4:var n,a,o;return n=e,a=t,o=s,tr(n,a),1===function(e,t,s){let i=v.Envelope2D.constructEmpty();e.queryEnvelope(i),i.inflateCoords(s,s);let r=new b.P,n=e.getImpl(),a=new G.a,o=e,l=!1,h=!1,m=!1;for(let g=0;g<t.getPointCount();g++){if(t.queryXY(g,r),i.contains(r)){let e=t$(o,r,s);if(1===e)return h=!0,4;if(2===e)return 4;m=!0}else m=!0;l||(eR(e,t.getPointCount()-1)&&(null===n.getAccelerators()||null==n.getAccelerators().getQuadTree())?(e.copyTo(a),a.getImpl().buildQuadTreeAccelerator(1),o=a):o=e,l=!0)}return h?m?4:2:1}(n,a,o);case 1:return tx(e,t,s,!1);case 64:return tx(e,t,s,!0);case 8:return function(e,t,s){tr(e,t);let i=v.Envelope2D.constructEmpty();e.queryEnvelope(i),i.inflateCoords(s,s);let r=new b.P,n=!1,a=e.getImpl(),o=new G.a,l=e,h=!1;for(let m=0;m<t.getPointCount();m++){if(t.queryXY(m,r),i.contains(r)){let e=t$(l,r,s);if(2===e)n=!0;else if(1===e)return!1}h||(eR(e,t.getPointCount()-1)&&(null===a.getAccelerators()||null===a.getAccelerators().getQuadTree())?(e.copyTo(o),o.getImpl().buildQuadTreeAccelerator(1),l=o):l=e,h=!0)}return!!n}(e,t,s);case 16:return function(e,t,s){tr(e,t);let i=new v.Envelope2D,r=new v.Envelope2D,n=new v.Envelope2D;e.queryEnvelope(i),t.queryEnvelope(n),r.setCoords({env2D:i}),r.inflateCoords(s,s);let a=!1,o=!1,l=new b.P,h=e.getImpl(),m=new G.a,g=e,u=!1;for(let i=0;i<t.getPointCount();i++){if(t.queryXY(i,l),r.contains(l)){let e=t$(g,l,s);0===e?o=!0:1===e&&(a=!0)}else o=!0;if(a&&o)return!0;u||(eR(e,t.getPointCount()-1)&&(null===h.getAccelerators()||null===h.getAccelerators().getQuadTree())?(e.copyTo(m),m.getImpl().buildQuadTreeAccelerator(1),g=m):g=e,u=!0)}return!1}(e,t,s)}return!1}function th(e,t,s,i,r){let n,a;if(o=e,l=t,h=s,tr(o,l),n=v.Envelope2D.constructEmpty(),a=v.Envelope2D.constructEmpty(),o.queryEnvelope(n),l.queryEnvelope(a),!tV(a,n,h)&&0===t$(o,a.getLowerLeft(),0)&&!a.contains(o.getXY(0))&&!tY(o,a,h))return 4===i;if(4===i)return!1;switch(i){case 2:return tP(e,t,s,!1);case 128:return tP(e,t,s,!0);case 1:return tE(e,t,s,!1,r);case 64:return tE(e,t,s,!0,r);case 3:var o,l,h,m=e,g=t,u=s,_=r;let p=new v.Envelope2D,d=new v.Envelope2D;if(m.queryEnvelope(p),g.queryEnvelope(d),!tb(p,d,u))break;let c=new G.a;return c.addEnvelope(g,!1),td(m,c,u,_);case 8:var f=e,x=t,P=s,E=r;tr(f,x);let y=new v.Envelope2D,S=new v.Envelope2D;if(f.queryEnvelope(y),x.queryEnvelope(S),tV(S,y,P)||S.height()<=P||S.width()<=P)break;let C=new G.a;return C.addEnvelope(x,!1),tX(f,C,P,E);case 32:var I=e,w=t,b=s,T=r;tr(I,w);let N=new v.Envelope2D,D=new v.Envelope2D;if(I.queryEnvelope(N),w.queryEnvelope(D),tV(D,N,b)||D.height()<=b||D.width()<=b)break;let V=new G.a;return V.addEnvelope(w,!1),tL(I,V,b,T)}return!1}function tm(e,t,s,i,r){var n,a,o,l,h,m,g,u,_,p,d,c;switch(i){case 4:return n=e,a=t,o=s,tr(n,a),!tO(n,a.getXY(),o);case 1:case 64:return l=e,h=t,m=s,tr(l,h),tO(g=l,u=h.getXY(),_=m)&&!tZ(g,u,_);case 8:return p=e,d=t,c=s,tr(p,d),tZ(p,d.getXY(),c)}return!1}function tg(e,t,s,i,r){switch(i){case 4:var n,a,o;return n=e,a=t,o=s,tr(n,a),!tR(n,a,o,!1);case 1:case 64:var l=e,h=t,m=s;let g=v.Envelope2D.constructEmpty(),u=v.Envelope2D.constructEmpty();if(l.queryEnvelope(g),h.queryEnvelope(u),!tV(g,u,m))break;tr(l,h);let _=tR(l,h,m,!0);if(!_)return _;let p=l.getBoundary();return p.isEmpty()?_:!tI(p,h,m);case 8:return function(e,t,s){tr(e,t);let i=e.getImpl(),r=t.getImpl(),n=new G.M,a=new e9(i,r,s,!1),o=i.querySegmentIterator(),l=!1;for(;a.next();){let e=a.getRedElement(),t=a.getBlueElement();o.resetToVertex(e,-1);let i=o.nextSegment(),h=r.getXY(t);i.isIntersectingPoint(h,s)&&(l=!0,n.addPoint2D(h))}if(!l)return!1;let h=e.getBoundary();return!h.isEmpty()&&tI(h,n,s)}(e,t,s);case 16:return function(e,t,s){tr(e,t);let i=e.getImpl(),r=t.getImpl(),n=r.getPointCount(),a=(0,b.d)(n,!1),o=new e9(i,r,s,!1),l=i.querySegmentIterator(),h=!1;for(;o.next();){let e=o.getRedElement(),t=o.getBlueElement();l.resetToVertex(e,-1);let i=l.nextSegment(),n=r.getXY(t);i.isIntersectingPoint(n,s)&&(h=!0,a[t]=!0)}if(!h)return!1;let m=!1;for(let e=0;e<n;e++)if(!a[e]){m=!0;break}if(!m)return!1;let g=e.getBoundary();if(g.isEmpty())return!0;let u=new G.M;for(let e=0;e<n;e++)a[e]&&u.addPoint2D(r.getXY(e));return!tI(g,u,s)}(e,t,s)}return!1}function tu(e,t,s,i,r){var n,a,o,l,h,m,g,u,_;let p,d,c,f,x,P;if(n=e,a=t,o=s,p=v.Envelope2D.constructEmpty(),d=v.Envelope2D.constructEmpty(),n.queryEnvelope(p),a.queryEnvelope(d),0===(f=(l=d,h=p,m=o,(c=v.Envelope2D.constructEmpty()).setCo
1ords({env2D:l}),c.inflateCoords(m,m),c.containsEnvelope(h)?0x40000000:c.isIntersecting(h)?l.isIntersecting(h)?l.xmin<h.xmin&&h.xmax<l.xmax?h.ymin<l.ymin&&h.ymax>l.ymax?0:0x40000000:l.ymin<h.ymin&&h.ymax<l.ymax?h.xmin<l.xmin&&h.xmax>l.xmax?0:0x40000000:0:0:4))?!tY(n,d,o):4===f)return 4===i;if(4===i)return!1;switch(i){case 2:return tC(e,t,s,!1);case 128:return tC(e,t,s,!0);case 1:case 64:case 32:break;case 3:return g=e,u=t,_=s,x=new v.Envelope2D,P=new v.Envelope2D,g.queryEnvelope(x),u.queryEnvelope(P),!(P.height()>_&&P.width()>_)&&tb(x,P,_);case 8:return function(e,t,s,i){let r=new v.Envelope2D,n=new v.Envelope2D;if(e.queryEnvelope(r),t.queryEnvelope(n),n.height()<=s||n.width()<=s)return!1;let a=new v.Envelope2D,o=new v.Envelope2D;if(a.setCoords({env2D:n}),o.setCoords({env2D:n}),a.inflateCoords(s,s),o.inflateCoords(-s,-s),o.containsEnvelope(r)||!r.isIntersecting(a))return!1;let l=e.getImpl().querySegmentIterator();l.stripAttributes();let h=e.getImpl().getAccelerators(),m=null,g=null;null!==h&&null!==(m=h.getQuadTree())&&(g=m.getIterator(n,s)),g||l.nextPath()||(0,I.d)("relational_operations");let u=!1,_=null,p=new b.P,d=new b.P,c=e.hasNonLinearSegments(),f=!1;for(;;){if(null!==g){let e=g.next();if(-1===e)break;l.resetToVertex(m.getElement(e),-1),_=l.nextSegment()}else{for(;!l.hasNextSegment()&&l.nextPath(););if(!l.hasNextSegment())break;_=l.nextSegment()}if(c&&_.getGeometryType()!==I.G.enumLine){let e=new v.Envelope2D;if(_.queryEnvelope(e),o.containsEnvelope(e))return!1;if(a.isIntersecting(e)){f=!0;break}}else{p.assign(_.getStartXY()),d.assign(_.getEndXY());let e=o.clipLine(p,d);if(0!==e)return!1;u||0!==(e=a.clipLine(p,d))&&(u=!0)}}if(!f)return u;let x=new G.a;return x.addEnvelope(n,!1),tr(x,e),tW(x,e,s,i)}(e,t,s,r);case 16:return function(e,t,s){let i=new v.Envelope2D,r=new v.Envelope2D;if(e.queryEnvelope(i),t.queryEnvelope(r),r.height()<=s||r.width()<=s)return!1;let n=new v.Envelope2D;if(n.setCoords({env2D:r}),n.inflateCoords(s,s),n.containsEnvelope(i))return!1;let a=new v.Envelope2D;if(a.setCoords({env2D:r}),a.inflateCoords(-s,-s),!a.isIntersecting(i))return!1;let o=e.getImpl().querySegmentIterator();o.stripAttributes();let l=e.getImpl().getAccelerators(),h=null,m=null;if(null!==l&&null!==(h=l.getQuadTree())&&(m=h.getIterator(r,s)),!m){let e=o.nextPath();(0,I.g)(e)}let g=!1,u=null,_=new b.P,p=new b.P,d=null,c=null,f=null,x=null;for(e.hasNonLinearSegments()&&(d=new G.L,c=new G.L,f=new G.L,x=new G.L,a.querySide(0,d),a.querySide(1,c),a.querySide(2,f),a.querySide(3,x));;){if(null!==m){let e=m.next();if(-1===e)break;o.resetToVertex(h.getElement(e),-1),u=o.nextSegment()}else{for(;!o.hasNextSegment()&&o.nextPath(););if(!o.hasNextSegment())break;u=o.nextSegment()}if(u.getGeometryType()===I.G.enumLine){if(_.assign(u.getStartXY()),p.assign(u.getEndXY()),0!==a.clipLine(_,p)){g=!0;break}}else if(d.isIntersecting(u,s)||c.isIntersecting(u,s)||f.isIntersecting(u,s)||x.isIntersecting(u,s)){g=!0;break}}return g&&!0}(e,t,s)}return!1}function t_(e,t,s,i,r){switch(i){case 4:var n,a,o;return n=e,a=t,o=s,tj(n,a.getXY(),o);case 2:case 128:case 3:return tv(e,t,s);case 1:case 64:return function(e,t,s){return!tj(e,t.getXY(),s)}(e,t,s)}return!1}function tp(e,t,s,i,r){switch(i){case 4:return function(e,t,s){let i=v.Envelope2D.constructEmpty(),r=v.Envelope2D.constructEmpty();if(e.queryEnvelope(i),t.queryEnvelope(r),tV(r,i,s))return!1;let n=v.Envelope2D.constructEmpty();n.setCoords({env2D:r}),n.inflateCoords(s,s);let a=new b.P;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,a),n.contains(a))return!1;return!0}(e,t,s);case 2:return tG(e,t,s,!1);case 128:return tG(e,t,s,!0);case 1:case 64:break;case 3:var n,a,o;let l,h;return n=e,a=t,o=s,l=new v.Envelope2D,h=new v.Envelope2D,n.queryEnvelope(l),a.queryEnvelope(h),!(h.height()>o||h.width()>o)&&tb(l,h,o);case 8:return function(e,t,s){let i=new v.Envelope2D,r=new v.Envelope2D,n=new v.Envelope2D;if(t.queryEnvelope(i),i.height()<=s||i.width()<=s)return!1;r.setCoords({env2D:i}),n.setCoords({env2D:i}),r.inflateCoords(s,s),n.inflateCoords(-s,-s);let a=new b.P,o=!1;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,a),r.contains(a)){if(n.containsExclusive(a))return!1;o=!0}return o}(e,t,s);case 16:return function(e,t,s){let i=new v.Envelope2D,r=new v.Envelope2D;if(e.queryEnvelope(i),t.queryEnvelope(r),tV(r,i,s)||r.height()<=s||r.width()<=s)return!1;let n=new v.Envelope2D,a=new v.Envelope2D;
1n.setCoords({env2D:r}),n.inflateCoords(-s,-s),a.setCoords({env2D:r}),a.inflateCoords(s,s);let o=new b.P,l=!1,h=!1;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,o),!l&&n.containsExclusive(o)&&(l=!0),h||a.contains(o)||(h=!0),l&&h)return!0;return!1}(e,t,s)}return!1}function td(e,t,s,i){let r=v.Envelope2D.constructEmpty(),n=v.Envelope2D.constructEmpty();return e.queryEnvelope(r),t.queryEnvelope(n),!!tb(r,n,s)&&(tr(e,t),!!tk(e,t,s)||!(Math.abs(e.calculateLength2D()-t.calculateLength2D())>4*Math.max(e.getPointCount(),t.getPointCount())*s)&&(e.hasNonLinearSegments()||t.hasNonLinearSegments()?ej(e,t,s,"**F**FFF*",i,!1):tM(e,t,s,!0)))}function tc(e,t,s,i){let r=v.Envelope2D.constructEmpty(),n=v.Envelope2D.constructEmpty();return e.queryEnvelope(r),t.queryEnvelope(n),!!tV(r,n,s)&&(tr(e,t),tz(e,t,s,i))}function tf(e,t,s,i){let r=v.Envelope2D.constructEmpty(),n=v.Envelope2D.constructEmpty();return e.queryEnvelope(r),t.queryEnvelope(n),!!tV(r,n,s)&&(tr(e,t),2===tN(e,t,s,!1))}function tx(e,t,s,i,r){let n=v.Envelope2D.constructEmpty(),a=v.Envelope2D.constructEmpty();if(e.queryEnvelope(n),t.queryEnvelope(a),!tV(n,a,s))return!1;tr(e,t);let o=!1,l=new b.P,h=e.getImpl(),m=new G.a,g=e,u=!1;for(let r=0;r<t.getPointCount();r++){if(t.queryXY(r,l),!n.contains(l))return!1;let a=t$(g,l,s);if(1===a)o=!0;else if(0===a)return!1;if(i&&2===a)return!1;u||(eR(e,t.getPointCount()-1)&&(null===h.getAccelerators()||null===h.getAccelerators().getQuadTree())?(e.copyTo(m),m.getImpl().buildQuadTreeAccelerator(1),g=m):g=e,u=!0)}return o}function tP(e,t,s,i,r){let n=v.Envelope2D.constructEmpty(),a=v.Envelope2D.constructEmpty();return e.queryEnvelope(n),t.queryEnvelope(a),i?tF(a,n,s):tV(a,n,s)}function tE(e,t,s,i,r){let n=v.Envelope2D.constructEmpty(),a=v.Envelope2D.constructEmpty();if(e.queryEnvelope(n),t.queryEnvelope(a),!tV(n,a,s))return!1;tr(e,t);let o=new G.a;return o.addEnvelope(t,!1),i?2===tN(e,o,s,!1):tz(e,o,s,r)}function ty(e,t,s,i){let r=v.Envelope2D.constructEmpty(),n=v.Envelope2D.constructEmpty();return e.queryEnvelope(r),t.queryEnvelope(n),!!tV(r,n,s)&&((tr(e,t),e.hasNonLinearSegments()||t.hasNonLinearSegments())?ej(e,t,s,"******FF*",i,!1):tU(t,e,s,!1))}function tS(e,t,s,i){let r=v.Envelope2D.constructEmpty(),n=v.Envelope2D.constructEmpty();return e.queryEnvelope(r),t.queryEnvelope(n),!!tV(r,n,s)&&(tr(e,t),ej(e,t,s,"T**FF*FF*",i,!1))}function tC(e,t,s,i,r){let n=v.Envelope2D.constructEmpty(),a=v.Envelope2D.constructEmpty();if(e.queryEnvelope(n),t.queryEnvelope(a),a.height()<=s||a.width()<=s)return!1;if(i)return tF(a,n,s);if(!tV(a,n,s))return!1;let o=v.Envelope2D.constructEmpty();o.setCoords({env2D:a}),o.inflateCoords(-s,-s);let l=v.Envelope2D.constructEmpty();if(l.setCoords({env2D:a}),l.inflateCoords(s,s),o.containsEnvelope(n))return!0;let h=e.getImpl().querySegmentIterator();h.stripAttributes(),h.nextPath()||(0,I.d)("relational_operations");let m,g,u,_,p,d,c=!1,f=e.hasNonLinearSegments();for(f&&(u=new G.L,_=new G.L,p=new G.L,d=new G.L,o.querySide(0,u),o.querySide(1,_),o.querySide(2,p),o.querySide(3,d));;){for(;!h.hasNextSegment()&&h.nextPath(););if(!h.hasNextSegment())break;let e=h.nextSegment();if(f&&e.getGeometryType()!==I.G.enumLine){if(e.isIntersecting(u,s)||e.isIntersecting(_,s)||e.isIntersecting(p,s)||e.isIntersecting(d,s)){c=!0;break}}else if(m=e.getStartXY(),g=e.getEndXY(),0!==o.clipLine(m,g)){c=!0;break}}return c}function tI(e,t,s,i){let r=v.Envelope2D.constructEmpty(),n=v.Envelope2D.constructEmpty();return e.queryEnvelope(r),t.queryEnvelope(n),!!tV(r,n,s)&&tA(t,e,s,!0,!1,!1)}function tv(e,t,s,i){let r=v.Envelope2D.constructEmpty(),n=v.Envelope2D.constructEmpty();return e.queryEnvelope(r),t.queryEnvelope(n),tb(r,n,s)}function tG(e,t,s,i,r){let n=v.Envelope2D.constructEmpty(),a=v.Envelope2D.constructEmpty();if(e.queryEnvelope(n),t.queryEnvelope(a),a.height()<=s||a.width()<=s)return!1;if(i)return tF(a,n,s);if(!tV(a,n,s))return!1;let o=!1,l=v.Envelope2D.constructEmpty(),h=v.Envelope2D.constructEmpty();l.setCoords({env2D:a}),h.setCoords({env2D:a}),l.inflateCoords(-s,-s),h.inflateCoords(s,s);let m=new b.P;for(let t=0;t<e.getPointCount();t++){if(e.queryXY(t,m),!h.contains(m))return!1;l.containsExclusive(m)&&(o=!0)}return o}function tw(e,t,s,i){return b.P.sqrDistance(e,t)<=s*s}function tb(e,t,s,i){return tV(e,t,s)&&tV(t,e,s)}function tT(e,t,s,i,r){if(e.height()<=s||e.width()<=s)return!1;if(i)return tF(e,t,s);if(!tV(e,t,s))return!1;let n=v.Envelope2D.constructEmpty();
1return n.setCoords({env2D:e}),n.inflateCoords(-s,-s),n.intersect(t),!n.isEmpty()}function tN(e,t,s,i,r){let n=new b.P,a=new b.P,o=v.Envelope2D.constructEmpty(),l=v.Envelope2D.constructEmpty(),h=e.getImpl(),m=t.getImpl(),g=m.getGeometryType(),u=new e9(h,m,s,!0);if(!u.next())return 1;if(tq(e,t,s))return 4*!!i;let _=new G.a,p=e,d=new G.a,c=null;g===I.G.enumPolygon&&(c=t);let f=g===I.G.enumPolygon?(0,b.d)(h.getPathCount(),!1):[],x=(0,b.d)(m.getPathCount(),!1),P=!1,E=!1,y=!1,S=!1,C=!1,w=!1;do{if(y&&C||S&&w||y&&S)break;let r=u.getRedElement(),v=u.getBlueElement();if(!x[v]&&(a.assign(t.getXY(t.getPathStart(v))),o.setCoords({env2D:u.getRedEnvelope()}),o.inflateCoords(s,s),o.contains(a))){if(0!==t$(p,a,0)){if(S=!0,i)return 4}else w=!0;x[v]=!0}if(g===I.G.enumPolygon&&!f[r]&&(n.assign(e.getXY(e.getPathStart(r))),l.setCoords({env2D:u.getBlueEnvelope()}),l.inflateCoords(s,s),l.contains(n))){if(0!==t$(c,n,0)){if(y=!0,i)return 4}else C=!0;f[r]=!0}P||(eR(e,t.getPathCount()-1)&&(null===h.getAccelerators()||null===h.getAccelerators().getQuadTree())?(e.copyTo(_),_.getImpl().buildQuadTreeAccelerator(1),p=_):p=e,P=!0),g!==I.G.enumPolygon||E||(eR(t,e.getPathCount()-1)&&(null===m.getAccelerators()||null===m.getAccelerators().getQuadTree())?(t.copyTo(d),d.getImpl().buildQuadTreeAccelerator(1),c=d):c=t,E=!0)}while(u.next());if(!y&&!S)return 1;if(!C||!w){if(g===I.G.enumPolygon){for(let e=0,t=h.getPathCount();e<t;e++)if(!f[e]){C=!0;break}}for(let e=0,t=m.getPathCount();e<t;e++)if(!x[e]){w=!0;break}}return y&&C||S&&w||y&&S?4:S?2:3}function tD(e,t,s,i,r){i[0]=!1;let n=e.getImpl(),a=t.getImpl(),o=n.querySegmentIterator(),l=a.querySegmentIterator(),h=[0,0],m=[0,0],g=new e9(n,a,s),u=!1;for(;g.next();){let e=g.getRedElement(),t=g.getBlueElement();o.resetToVertex(e,-1),l.resetToVertex(t,-1);let r=o.nextSegment(),n=l.nextSegment(),a=0;if(tK(r,n)?!u&&n.isIntersecting(r,s)&&(u=!0):a=n.intersect(r,null,m,h,s),0!==a&&(u=!0,1===a)){let e=h[0],t=m[0];if(e>0&&e<1&&t>0&&t<1)return i[0]=!0,!1}}if(!u){i[0]=!0;let r=v.Envelope2D.constructEmpty();e.queryEnvelope(r),r.inflateCoords(s,s);let o=new G.a,l=e,h=!1;for(let s=0,i=t.getPathCount();s<i;s++)if(t.getPathSize(s)>0){let i=v.Envelope2D.constructEmpty();if(t.queryPathEnvelope(s,i),!r.isIntersecting(i))return!1;{let e=eB(l,t.getXY(t.getPathStart(s)),0);if((0,I.g)(-1!==e),0===e)return!1}h||(eR(e,t.getPathCount()-1)&&(null===n.getAccelerators()||null===n.getAccelerators().getQuadTree())?(e.copyTo(o),o.getImpl().buildQuadTreeAccelerator(1),l=o):l=e,h=!0)}if(1===e.getPathCount()||t.getGeometryType()===I.G.enumPolyline)return!0;let m=v.Envelope2D.constructEmpty();t.queryEnvelope(m),m.inflateCoords(s,s);let g=new G.a,u=t,_=!1;for(let s=0,i=e.getPathCount();s<i;s++)if(e.getPathSize(s)>0){let i=v.Envelope2D.constructEmpty();if(e.queryPathEnvelope(s,i),m.isIntersecting(i)){let t=eB(u,e.getXY(e.getPathStart(s)),0);if((0,I.g)(-1!==t),1===t)return!1}_||(eR(t,e.getPathCount()-1)&&(null===a.getAccelerators()||null===a.getAccelerators().getQuadTree())?(t.copyTo(g),g.getImpl().buildQuadTreeAccelerator(1),u=g):u=t,_=!0)}return!0}return!1}function tV(e,t,s){let i=v.Envelope2D.constructEmpty();
1return i.setCoords({env2D:e}),i.inflateCoords(s,s),i.containsEnvelope(t)}function tF(e,t,s){let i=v.Envelope2D.constructEmpty();return i.setCoords({env2D:t}),i.inflateCoords(s,s),e.containsExclusiveEnvelope(i)}function tH(e,t,s){let i=v.Envelope2D.constructEmpty();return i.setCoords({env2D:t}),i.inflateCoords(s,s),!i.contains(e.getLowerLeft())||!i.contains(e.getLowerRight())||!i.contains(e.getUpperLeft())||!i.contains(e.getUpperRight())}function tk(e,t,s,i){if(e.getPathCount()!==t.getPathCount()||e.getPointCount()!==t.getPointCount())return!1;if(e.hasNonLinearSegments()||t.hasNonLinearSegments())return e.equals(t);let r=new b.P,n=new b.P,a=!0,o=s*s;for(let s=0;s<e.getPathCount();s++){if(e.getPathEnd(s)!==t.getPathEnd(s)){a=!1;break}for(let i=e.getPathStart(s);i<t.getPathEnd(s);i++)if(e.queryXY(i,r),t.queryXY(i,n),b.P.sqrDistance(r,n)>o){a=!1;break}if(!a)break}return!!a}function tA(e,t,s,i,r,n,a){let o=e.getImpl(),l=t.getImpl(),h=o.getPointCount(),m=l.getPointCount(),g=(0,b.d)(h,!1),u=r||n?(0,b.d)(m,!1):[],_=s*s,p=new e9(o,l,s);for(;p.next();){let e=p.getRedElement(),t=p.getBlueElement(),s=o.getXY(e),i=l.getXY(t);b.P.sqrDistance(s,i)<=_&&(g[e]=!0,(r||n)&&(u[t]=!0))}let d=!1,c=!1;for(let e=0;e<h;e++){let t=g[e];if(d||=!t,c||=t,(r||i)&&d)return!1}if(i)return!0;let f=!1,x=!1;for(let e=0;e<m;e++){let t=u[e];if(f||=!t,x||=t,r&&f)return!1}return!!r||d&&c&&f&&x}function tM(e,t,s,i){return tU(e,t,s,i)&&tU(t,e,s,i)}function tU(e,t,s,i){let r;if((0,I.o)(e),(0,I.o)(t),t.isEmpty())return!1;let n=!0,a=(0,b.d)(2,NaN),o=(0,b.d)(2,NaN),l=[],h=new tQ,m=v.Envelope2D.constructEmpty(),g=v.Envelope2D.constructEmpty(),u=v.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(g),m.inflateCoords(s,s),g.inflateCoords(s,s),u.setCoords({env2D:m}),u.intersect(g);let _=e.getImpl().querySegmentIterator(),p=t.getImpl().querySegmentIterator(),d=t.getImpl().getAccelerators(),c=null,f=null,x=null,P=null;if(null!==d&&(c=d.getQuadTree(),null!==(f=d.getQuadTreeForPaths())&&(P=f.getIteratorForQT())),null===c){let s=e.getPointCount(),i=t.getPointCount();s>10&&i>10&&(c=(0,w.t)(t.getImpl(),u))}for(null!==c&&(x=c.getIteratorForQT());_.nextPath();)for(;_.hasNextSegment();){let e=_.nextSegment();if(e.queryEnvelope(m),!m.isIntersecting(u))return n=!1,!1;if(null!==P&&(P.resetIterator(m,s),-1===P.next()))continue;let t=0,d=null;if(null!=x)x.resetIterator(e,s);else if(p.resetToFirstPath(),!p.nextPath())return n=!1,!1;do if(t=0,null!==x){let i=x.next();if(-1===i)return n=!1,!1;p.resetToVertex(c.getElement(i),-1),d=p.nextSegment(),t=e.intersect(d,null,a,o,s)}else{for(;!p.hasNextSegment();)if(!p.nextPath())return n=!1,!1;(d=p.nextSegment()).queryEnvelope(g),g.inflateCoords(s,s),m.isIntersecting(g)&&(t=e.intersect(d,null,a,o,s))}while(2!==t||0!==a[0]||i&&!(o[0]<=o[1]));let f=NaN,v=!1;do{let i=!1;if(1===a[1]){if(!_.hasNextSegment()){v=!0;break}e=_.nextSegment(),i=!0}if(1===o[1]&&o[0]<=o[1]){if(-1===f||(f=1,!p.hasNextSegment()))break;d=p.nextSegment(),i=!0}if(0===o[1]&&o[0]>o[1]){if(1===f)break;if(Number.isNaN(f)){if(!p.hasPreviousSegment())break;p.previousSegment(),f=-1}if(!p.hasPreviousSegment())break;d=p.previousSegment(),i=!0}if(!i)break;t=e.intersect(d,null,a,o,s)}while(2===t&&(!i||o[0]<=o[1]));if(v)continue;let G=e.calculateLength2D();e.queryEnvelope(m),l.length=0,h.m_overlapEvents.length=0;let b=!1,T=!1,N=0,D=(0,w.a)(null,m,!0);for(null!==x?x.resetIterator(e,s):(p.resetToFirstPath(),p.nextPath()||(0,I.d)("relational_operations"));;){if(t=0,null!==x){let i=x.next();if(-1===i)break;p.resetToVertex(c.getElement(i),-1),d=p.nextSegment(),t=e.intersect(d,null,a,o,s)}else{for(;!p.hasNextSegment()&&p.nextPath(););if(!p.hasNextSegment())break;(d=p.nextSegment()).queryEnvelope(g),g.inflateCoords(s,s),m.isIntersecting(g)&&(t=e.intersect(d,null,a,o,s))}if(2===t&&(!i||o[0]<=o[1])){var E,y,S,C;let e=_.getStartPointIndex(),t=_.getPathIndex(),i=p.getStartPointIndex(),n=p.getPathIndex();if(E=e,y=t,S=a[0],C=a[1],r={m_ivertexA:E,m_ipathA:y,m_scalarA0:S,m_scalarA1:C,m_ivertexB:i,m_ipathB:n,m_scalarB0:o[0],m_scalarB1:o[1]},h.m_overlapEvents.push(r),l.push(l.length),!(b||r.m_scalarA0<N&&r.m_scalarA1<N)){if(0===N&&G*(r.m_scalarA0-N)>s)b=!0;else if(0!==N&&G*(r.m_scalarA0-N)>D)b=!0;else if(G*(1-(N=r.m_scalarA1))<=s||1===N){T=!0;break}}}}if(!T){if(!b)return n=!1,!1;l.length>1&&l.sort((e,t)=>
1h.compareOverlapEvents(e,t)),N=0;for(let e=0;e<h.m_overlapEvents.length;e++)if(!((r=h.m_overlapEvents[l[e]]).m_scalarA0<N&&r.m_scalarA1<N)){if(0===N&&G*(r.m_scalarA0-N)>s||0!==N&&G*(r.m_scalarA0-N)>D)return n=!1,!1;if(G*(1-(N=r.m_scalarA1))<=s||1===N)break}if(G*(1-N)>s)return n=!1,!1;l.length=0,h.m_overlapEvents.length=0}}return n}function tq(e,t,s){let i=e.getImpl(),r=t.getImpl(),n=i.querySegmentIterator(),a=r.querySegmentIterator(),o=new e9(i,r,s);for(;o.next();){let e=o.getRedElement(),t=o.getBlueElement();n.resetToVertex(e,-1),a.resetToVertex(t,-1);let i=n.nextSegment();if(a.nextSegment().isIntersecting(i,s))return!0}return!1}function tB(e,t,s,i){let r=e.getImpl(),n=t.getImpl(),a=r.querySegmentIterator(),o=n.querySegmentIterator(),l=(0,b.d)(2,NaN),h=new e9(r,n,s),m=!1,g=-1;for(;h.next();){let e=h.getRedElement(),t=h.getBlueElement();a.resetToVertex(e,-1),o.resetToVertex(t,-1);let r=a.nextSegment(),n=o.nextSegment(),u=0;if(tK(r,n)){if(n.isIntersecting(r,s))return -2}else u=r.intersect(n,null,l,null,s);if(u){if(2===u){let e=r.calculateLength2D(),t=l[0];if(e*(l[1]-t)>s)return 1;m=!0}else if(g=0,i){let e=l[0],t=new b.P;r.queryCoord2D(e,t),i.push(t.x),i.push(t.y)}}}return m?-2:g}function tR(e,t,s,i){let r=e.getImpl(),n=t.getPointCount(),a=i?(0,b.d)(n,!1):[],o=new e9(r,t,s,!1),l=r.querySegmentIterator();for(;o.next();){let e=o.getRedElement(),r=o.getBlueElement();l.resetToVertex(e,-1);let n=l.nextSegment(),h=t.getXY(r);if(n.isIntersectingPoint(h,s)){if(!i)return!0;a[r]=!0}}if(!i)return!1;for(let e=0;e<n;e++)if(!a[e])return!1;return!0}function tO(e,t,s){let i=new b.P,r=s*s,n=e.querySegmentIterator(),a=e.getImpl().getAccelerators();if(null!==a){let e=a.getQuadTree();if(null!==e){let a=v.Envelope2D.constructEmpty();a.setCoords({pt:t});let o=e.getIterator(a,s);for(let s=o.next();-1!==s;s=o.next())if(n.resetToVertex(e.getElement(s),-1),n.hasNextSegment()){let e=n.nextSegment(),s=e.getClosestCoordinate(t,!1);if(e.queryCoord2D(s,i),b.P.sqrDistance(t,i)<=r)return!0}return!1}}let o=v.Envelope2D.constructEmpty();for(;n.nextPath();)for(;n.hasNextSegment();){let e=n.nextSegment();if(e.queryEnvelope(o),o.inflateCoords(s,s),!o.contains(t))continue;let a=e.getClosestCoordinate(t,!1);if(e.queryCoord2D(a,i),b.P.sqrDistance(t,i)<=r)return!0}return!1}function tY(e,t,s,i){let r=e.querySegmentIterator(),n=e.getImpl().getAccelerators(),a=e.hasNonLinearSegments(),o=null,l=null,h=null,m=null;if(null!==n){let e=n.getQuadTree();if(null!==e){let i=e.getIterator(t,s);a&&(o=new G.L,l=new G.L,h=new G.L,m=new G.L,t.querySide(0,o),t.querySide(1,l),t.querySide(2,h),t.querySide(3,m));let n=v.Envelope2D.constructEmpty();n.setCoords({env2D:t}),n.inflateCoords(s,s);for(let a=i.next();-1!==a;a=i.next())if(r.resetToVertex(e.getElement(a),-1),r.hasNextSegment()){let e=r.nextSegment();if(e.getGeometryType()===I.G.enumLine){let t=e.getStartXY(),s=e.getEndXY();if(n.clipLine(t,s))return!0;continue}if(t.contains(e.getStartXY())||t.contains(e.getEndXY())||e.isIntersecting(o,s)||e.isIntersecting(l,s)||e.isIntersecting(h,s)||e.isIntersecting(m,s))return!0}return!1}}if(a){o=new G.L,l=new G.L,h=new G.L,m=new G.L,t.querySide(0,o),t.querySide(1,l),t.querySide(2,h),t.querySide(3,m);let i=e.querySegmentIterator();for(;i.nextPath();)for(;i.hasNextSegment();){let e=i.nextSegment();if(t.contains(e.getStartXY())||t.contains(e.getEndXY())||e.isIntersecting(o,s)||e.isIntersecting(l,s)||e.isIntersecting(h,s)||e.isIntersecting(m,s))return!0}}else{let i=v.Envelope2D.constructEmpty();i.setCoords({env2D:t}),i.inflateCoords(s,s);let r=e.getImpl(),n=r.getAttributeStreamRef(0),a=new b.P;for(let e=0,t=r.getPathCount();e<t;e++){let t=!0,s=new b.P,o=new b.P,l=new b.P,h=r.getPathStart(e),m=new b.P;for(let g=h,u=r.getPathEnd(e);g<u;g++)if(t)n.queryPoint2D(2*g,s),m.assign(s),t=!1;else{if(n.queryPoint2D(2*g,a),o.setCoordsPoint2D(s),l.setCoordsPoint2D(a),i.clipLine(o,l))return!0;s.assign(a)}if(r.isClosedPath(e)&&!t&&(o.setCoordsPoint2D(s),l.setCoordsPoint2D(m),i.clipLine(o,l)))return!0}}return!1}function tX(e,t,s,i){let r,n,a=e.getImpl(),o=t.getImpl(),l=[0],h=(0,w.p)(a.getIsSimple(0,l))&&(0,w.p)(o.getIsSimple(0,l)),m=a.querySegmentIterator(),g=o.querySegmentIterator(),u=(0,b.d)(2,0),_=(0,b.d)(2,0),p=new e9(a,o,s),d=!1;for(;p.next();){let e=p.getRedElement(),t=p.getBlueElement();m.resetToVertex(e,-1),g.resetToVertex(t,-1);let i=m.nextSegment(),r=g.nextSegment(),n=0;if(tK(i,r)){if(r.isIntersecting(i,s)){d=!0;break}}else n=r.intersect(i,null,_,u,s);if(2===n){let e=u[0],t=u[1],r=i.calculateLength2D();if(h&&(t-e)*r>s)return!1;d=!0}else if(n){let e=u[0],t=_[0];if(e>0&&e<1&&t>0&&t<1)return!1;d=!0}}if(!d)return!1;let c=v.Envelope2D.constructEmpty(),f=v.Envelope2D.constructEmpty(),x=v.Envelope2D.constructEmpty();if(e.queryEnvelope(c),t.queryEnvelope(f),c.inflateCoords(1e3*s,1e3*s),f.inflateCoords(1e3*s,1e3*s),x.setCoords({env2D:c}),x.intersect(f),e.getPointCount()>10){if((r=(0,D.c)(e,x,s,0,i)).isEmpty())return!1}else r=e;if(t.getPointCount()>10){if((n=(0,D.c)(t,x,s,0,i)).isEmpty())return!1}else n=t;return ej(r,n,s,"F********",i,!1)}function tL(e,t,s,i){let r,n,a=e.getImpl(),o=t.getImpl(),l=[0],h=(0,w.p)(a.getIsSimple(0,l))&&(0,w.p)(o.getIsSimple(0,l)),m=v.Envelope2D.constructEmpty(),g=v.Envelope2D.constructEmpty(),u=v.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(g);let _=!1,p=tH(m,g,s),d=tH(g,m,s),c=a.querySegmentIterator(),f=o.querySegmentIterator(),x=(0,b.d)(2,NaN),P=(0,b.d)(2,NaN),E=new e9(a,o,s);for(;E.next();){let e=E.getRedElement(),t=E.getBlueElement();c.resetToVertex(e,-1),f.resetToVertex(t,-1);let i=c.nextSegment(),r=f.nextSegment(),n=0;if(tK(i,r)){if(r.isIntersecting(i,s))break}else n=r.intersect(i,null,P,x,s);if(2===n){let e=x[0],t=x[1],r=i.calculateLength2D();if(h&&(t-e)*r>s&&(_=!0,p&&d))return!0}else if(n){let e=x[0],t=P[0];if(e>0&&e<1&&t>0&&t<1)return!0}}let y=v.Envelope2D.constructEmpty(),S=v.Envelope2D.constructEmpty();
1y.setCoords({env2D:m}),y.inflateCoords(1e3*s,1e3*s),S.setCoords({env2D:g}),S.inflateCoords(1e3*s,1e3*s),u.setCoords({env2D:y}),u.intersect(S);let C="";if(C+=_?"**":"T*",p){if(t.getPointCount()>10){if((n=(0,D.c)(t,u,s,0,i)).isEmpty())return!1}else n=t;C+="****"}else n=t,C+="T***";if(d){if(e.getPointCount()>10){if((r=(0,D.c)(e,u,s,0,i)).isEmpty())return!1}else r=e;C+="***"}else r=e,C+="T**";return ej(r,n,s,C,i,!1)}function tz(e,t,s,i){let r,n=[!1],a=tD(e,t,s,n);if(n[0])return a;let o=v.Envelope2D.constructEmpty();if(t.queryEnvelope(o),o.inflateCoords(1e3*s,1e3*s),e.getPointCount()>10){if((r=(0,D.c)(e,o,s,0,i)).isEmpty())return!1}else r=e;return function(e,t,s,i){let r=new e3;r.resetMatrix_(),r.setPredicates_("T*****F**"),r.setAreaAreaPredicates_();let n=v.Envelope2D.constructEmpty(),a=v.Envelope2D.constructEmpty();e.queryEnvelope(n),t.queryEnvelope(a);let o=!1;if(ti(n,a,s)&&(r.areaAreaDisjointPredicates_(e,t),o=!0),o||tr(e,t),o)return e2(r.m_matrix,r.m_scl);let l=new G.E,h=l.addGeometry(e),m=l.addGeometry(t),g=null,u=0;if(e.hasNonLinearSegments()||t.hasNonLinearSegments()){g=new ss;let e=t5(s,l.getEnvelope2D(i));u=st(e,0),t6(l,e,s,12e3,g,null,i)}sr(l,new w.C(s,0).add(u),i,!1,!1);let _=l.getGeometry(m).getBoundary();if(l.filterClosePoints(0,!0,!0,!1,G.n),ez(l,h,-1,!1,G.n,i),0===l.getPointCount(h))return!1;ez(l,m,-1,!1,G.n,i),r.setEditShape_(l,i);let p=0===l.getPointCount(m);if(!p){r.computeMatrixTopoGraphHalfEdges_(h,m),r.m_topoGraph.removeShape();let e=e2(r.m_matrix,r.m_scl);if(!e)return e}let d=l.getGeometry(h);return h=(l=new G.E).addGeometry(d),m=l.addGeometry(_),r.setEditShape_(l,i),r.m_predicateCount=0,r.resetMatrix_(),r.setPredicates_(p?"T*****F**":"******F**"),r.setAreaLinePredicates_(),r.computeMatrixTopoGraphHalfEdges_(h,m),r.m_topoGraph.removeShape(),e2(r.m_matrix,r.m_scl)}(r,t,s,i)}function tW(e,t,s,i){let r,n,a=e.getImpl(),o=t.getImpl(),l=a.querySegmentIterator(),h=o.querySegmentIterator(),m=(0,b.d)(2,NaN),g=(0,b.d)(2,NaN),u=new e9(a,o,s),_=!1;for(;u.next();){let e=u.getRedElement(),t=u.getBlueElement();l.resetToVertex(e,-1),h.resetToVertex(t,-1);let i=l.nextSegment(),r=h.nextSegment(),n=0;if(tK(i,r)?!_&&r.isIntersecting(i,s)&&(_=!0):n=r.intersect(i,null,g,m,s),2===n)_=!0;else if(n){let e=m[0],t=g[0];if(e>0&&e<1&&t>0&&t<1)return!1;_=!0}}if(!_)return!1;let p=v.Envelope2D.constructEmpty(),d=v.Envelope2D.constructEmpty(),c=v.Envelope2D.constructEmpty();if(e.queryEnvelope(p),t.queryEnvelope(d),p.inflateCoords(1e3*s,1e3*s),d.inflateCoords(1e3*s,1e3*s),c.setCoords({env2D:p}),c.intersect(d),e.getPointCount()>10){if((r=(0,D.c)(e,c,s,0,i)).isEmpty())return!1}else r=e;if(t.getPointCount()>10){if((n=(0,D.c)(t,c,s,0,i)).isEmpty())return!1}else n=t;return ej(r,n,s,"F********",i,!1)}function tj(e,t,s,i){let r=new b.P,n=s*s;for(let s=0;s<e.getPointCount();s++)if(e.queryXY(s,r),b.P.sqrDistance(r,t)<=n)return!1;return!0}function tZ(e,t,s){let i=e.getBoundary();return!i.isEmpty()&&!tj(i,t,s)}function tK(e,t){return e.getGeometryType()!==I.G.enumLine||t.getGeometryType()!==I.G.enumLine}class tQ{constructor(){this.m_overlapEvents=[]}compareOverlapEvents(e,t){let s=this.m_overlapEvents[e],i=this.m_overlapEvents[t];if(s.m_ipathA<i.m_ipathA)return -1;if(s.m_ipathA===i.m_ipathA){if(s.m_ivertexA<i.m_ivertexA)return -1;if(s.m_ivertexA===i.m_ivertexA&&(s.m_scalarA0<i.m_scalarA0||s.m_scalarA0===i.m_scalarA0&&(s.m_scalarA1<i.m_scalarA1||s.m_scalarA1===i.m_scalarA1&&s.m_ivertexB<i.m_ivertexB)))return -1}return 1}}function tJ(e,t,s){let i=t.isEmpty()?0:eB(e,t.getXY(),s);return i?1===i?1:2:0}function t$(e,t,s){let i=eB(e,t,s);return i?1===i?1:2:0}function t0(e,t,s,i,r){if(e.getGeometryType()===I.G.enumPolygon)for(let n=0;n<s;n++)r[n]=t$(e,t[n],i);else if(e.getGeometryType()===I.G.enumEnvelope){let n=v.Envelope2D.constructEmpty();e.queryEnvelope(n),function(e,t,s,i,r){if(e.isEmpty()){for(let e=0;e<s;e++)r[e]=0;return}let n=e.clone();n.inflateCoords(-(.5*i),-(.5*i));let a=e.clone();a.inflateCoords(.5*i,.5*i);for(let e=0;e<s;e++)n.contains(t[e])?r[e]=1:a.contains(t[e])?r[e]=2:r[e]=0}(n,t,s,i,r)}else(0,I.p)("")}function t1(e,t,s,i,r){let n=e.getGeometryType();n===I.G.enumPolyline?function(e,t,s,i,r){let n=e.getImpl(),a=n.getAccelerators(),o=null;a&&(o=a.getRasterizedGeometry());let l=s;for(let e=0;e<s;e++)r[e]=1,o&&(0,I.g)(0);if(l){if(a){let e=null;null!==a&&null!==a.getQuadTree()&&(e=a.getQuadTree());let o=n.getPointCount();if(null===e&&o>20&&o*s>4*o+Math.log(o)*s&&(e=(0,w.t)(n)),e){let a=null,o=n.querySegmentIterator(),h=new v.Envelope2D;for(let n=0;n<s&&l;n++)if(1===r[n]){h.setCoords(t[n]),null===a?a=e.getIterator(h,i):a.resetIterator(h,i);let s=-1;for(let h=a.next();-1!==h;h=a.next()){if(o.resetToVertex(e.getElement(h),s),s=o.getPathIndex(),o.nextSegment().isIntersectingPoint(t[n],i)){r[n]=2,l--;break}r[n]=0}}return}}let e=n.querySegmentIterator();for(;e.nextPath()&&l;)for(;e.hasNextSegment()&&l;){let n=e.nextSegment();for(let e=0;e<s&&l;e++)1===r[e]&&n.isIntersectingPoint(t[e],i)&&(r[e]=2,l--)}}for(let e=0;e<s;e++)1===r[e]&&(r[e]=0)}(e,t,s,i,r):(0,I.f)(n)?(0,I.g)(0):(0,I.p)("")}
1function t2(){return Number.isNaN(this.radius.value())}let t4=1/8;function t3(e,t,s,i){return{pt:e.clone(),t,err:s,checkCount:i}}class t7{constructor(e,t,s,i,r){this.m_left=e,this.m_tracker=r,this.m_eps=s,this.m_trackerCounter=0,this.m_tolerance=i,this.m_circleCheckCounter=0,this.m_bReversedLeft=!1,this.m_leftArc={ptStart:new b.P,ptEnd:new b.P,center:new G.X,radius:new b.X,fcenter:new G.$,fradius2:new b.M,maxError:NaN,isLine:t2}}closeToCircularArc(e,t,s,i,r,n){if(this.m_circleCheckCounter++,n.maxError=0,!t7.checkSweepAngle(e,t))return!1;if(n.ptStart.setCoordsPoint2D(s),n.ptEnd.setCoordsPoint2D(r),e.isCircular())return n.fradius2=b.M.constructDouble(e.getSemiMajorAxis()).mulDouble(e.getSemiMajorAxis()),n.radius.set(e.getSemiMajorAxis()),n.fcenter.assignPoint2D(e.getCenter()),n.center.set(e.getCenter()),!0;let a=n.ptEnd.sub(n.ptStart).clone();if(a.leftPerpendicularThis(),a.normalize(),Math.abs(a.dotProduct(i.sub(n.ptStart)))<=this.m_eps)return!!this.confirmIsLine(n,a)&&(n.radius.set(NaN),n.center.setCoords(0,0),!0);{let s=n.ptEnd.sub(n.ptStart),r=i.sub(n.ptStart),a=s.crossProduct(r);if(0===a)return!1;let o=.5*s.sqrLength(),l=.5*r.sqrLength(),h=o*r.y-l*s.y;h/=a;let m=s.x*l-r.x*o,g=Math.sqrt(h*h+(m/=a)*m);if(4*Number.EPSILON*g>this.m_eps)return!1;let u=h+n.ptStart.x,_=m+n.ptStart.y;n.radius.set(g),n.center.setCoords(u,_);let p=this.maxCircleApproximationError(e,t,n);if(p>this.m_eps)return n.maxError=p,!1}let o=(new G.$).assignPoint2D(n.ptStart),l=(new G.$).assignPoint2D(n.ptEnd).sub(o),h=(new G.$).assignPoint2D(i).sub(o),m=l.crossProduct(h);if(m.isZero())return!1;let g=l.sqrLength().mulDouble(.5),u=h.sqrLength().mulDouble(.5),_=g.mul(h.y).sub(u.mul(l.y)),p=l.x.mul(u).sub(h.x.mul(g)),d=_.mul(_).add(p.mul(p)),c=m.clone();c.invertThis(),n.fradius2=d.mul(c).mul(c),n.fcenter.setCoords(_.mul(c).add(o.x),p.mul(c).add(o.y)),n.center.setWithEps(n.fcenter.asPoint2D()),n.radius.setWithEps(Math.sqrt(n.fradius2.toDouble()));let f=G.X.constructPoint2D(n.ptStart).subE(n.center),x=G.X.constructPoint2D(n.ptEnd).subE(n.center);if(!f.dotProduct(x).gt(b.U))return!1;let P=this.maxCircleApproximationError(e,t,n);return n.maxError=P,P<=this.m_eps}static checkSweepAngle(e,t){if(e.getGeometryType()===I.G.enumEllipticArc){let s=(0,G.a0)(e,t.vmin);return!(Math.abs((0,G.a0)(e,t.vmax)-s)>.5*b.o)}return!0}confirmIsLine(e,t){let s=e.ptEnd.sub(e.ptStart);return!(Math.abs(t.dotProduct(s.mul(.25)))>this.m_eps)&&!(Math.abs(t.dotProduct(s.mul(.75)))>this.m_eps)}maxCircleApproximationError(e,t,s){let i,r,n=[.25,.75],a=[.1,.25,.75,.9];e.getGeometryType()===I.G.enumEllipticArc?(i=n,r=n.length):(i=a,r=a.length);let o=0;for(let n=0;n<r;++n){let r=new b.P;e.queryCoord2D((0,b.q)(t.vmin,t.vmax,i[n]),r);let a=Math.abs(r.sub(s.center.value()).length()-s.radius.value());a>o&&(o=a)}return o}approximateWithCirclesImpl(e,t){let s,i=1;t&&t.push(0);let r=(0,b.d)(9,NaN);e?s=this.m_left.getMonotonicPartParams(r.length,r):(r[0]=0,r[1]=1,s=2);let n=[],a=[],o=new b.P(0,0);for(let e=1;e<s;e++){let s=new b.E(r[e-1],r[e]);
1for(this.m_bReversedLeft=!t7.goodOrientation(this.m_left,s),this.m_bReversedLeft?(n.push(t3(o,s.vmin,0,0)),n.push(t3(o,s.vmax,0,0))):(n.push(t3(o,s.vmax,0,0)),n.push(t3(o,s.vmin,0,0))),n[0].pt=this.m_left.getCoord2D(n[0].t),n[1].pt=this.m_left.getCoord2D(n[1].t);n.length>1;){this.progress_();let e=n.at(-1),s=e.checkCount,r=e.err,o=e.pt.clone(),l=e.t,h=n[n.length-2].t,m=.5*(l+h),g=this.m_left.getCoord2D(m);if(r<=this.m_eps||s>=5){let e=new b.E;if(e.setCoords(l,h),this.closeToCircularArc(this.m_left,e,o,g,n[n.length-2].pt,this.m_leftArc)){t&&(this.m_bReversedLeft?a.push(l):t.push(h)),i++,n.pop();continue}s=0,r=this.m_leftArc.maxError}e.t=m,e.pt.setCoordsPoint2D(g),r*=t4,s++,e.err=r,e.checkCount=s,n.push(t3(o,l,r,s))}this.m_bReversedLeft&&t&&(t.length=t.length+a.length,(0,b.b)(t,a.reverse(),t.length-a.length,0,a.length),a.length=0),n.length=0}return i}approximateWithCirclesImplPolyline(e){let t=new G.P,s=[];if(!this.approximateWithCirclesImpl(!0,s))return t;let i=0,r=this.m_left.getStartXY();t.startPath(r);for(let n=1;n<s.length;++n)if(e)t.lineTo(this.m_left.getCoord2D(s[n]));else{let e=new b.P;this.m_left.queryCoord2D(s[n],e);let a=new b.P;this.m_left.queryCoord2D(.5*(s[n]+i),a);let o=new G.l;o.constructCircularArcThreePoint(r,e,a),t.addSegment(o,!1),r.assign(e),i=s[n]}return t}static goodOrientation(e,t){let s=e.getCoord2D(t.vmin),i=e.getCoord2D(t.vmax);return 0>s.compare(i)}progress_(e=!1){}}function t6(e,t,s,i,r,n,a){var o,l,h,m,g,u;o=e,l=t,h=s,m=r,g=n,u=a,o.hasCurves()?(o.setCurveStitcherPointer(m),m.m_impl=new si(u,!1,null),m.m_impl.buildMonotonicCurveParentage(o,l,h,g)):m.m_impl=null,sn(e,s,a)}function t8(e,t,s,i){if(!(0,I.h)(e.getGeometryType()))return e;let r=e.getImpl();if(!r.hasNonLinearSegments())return e;let n=e.createInstance();n.getGeometryType()===I.G.enumPolygon&&n.setFillRule(e.getFillRule()),new G.E;let a=new w.P,o=new G.S,l=[],h=[],m=[],g=e.getDescription().getAttributeCount()>1,u=r.querySegmentIterator();for(;u.nextPath();){let e=!0;for(;u.hasNextSegment();){let i=u.isClosingSegment(),r=u.nextSegment();if(!r.isCurve()){n.addSegment(r,e,i),e=!1;continue}let _,p=!1;switch(r.getGeometryType()){case I.G.enumEllipticArc:case I.G.enumRationalBezier2:_=(0,G.F)(r,t,s,!0,!0,h,m,l),p=!0;break;default:_=(0,G.B)(r,t,s,!0,!0,h,l)}let d=p?2:3;h[1].isNAN()?(o.createLine(),o.get().construct(h[0],h[d])):p?(o.createQuadraticRationalBezier(),o.get().constructArrayWeights(h,m)):(o.createCubicBezier(),o.get().constructPoints(h)),g&&e&&(r.queryCoord(l[0],a),o.get().setStart(a)),g&&(r.queryCoord(l[1],a),o.get().setEnd(a)),n.addSegment(o.get(),e,i&&1===_),e=!1;for(let e=1,t=_,s=d;e<t;++e,s+=d)h[s+1].isNAN()?(o.createLine(),o.get().construct(h[s],h[s+d])):p?(o.createQuadraticRationalBezier(),o.get().constructArrayWeights(h.slice(s),m.slice(s))):(o.createCubicBezier(),o.get().constructPoints(h.slice(s))),g&&(r.queryCoord(l[e+1],a),o.get().setEnd(a)),n.addSegment(o.get(),!1,i&&e+1===t)}}return n}function t9(e){if(!e.hasSegmentParentage())return;let t=e.queryVertexIteratorOnSelection();for(let s=t.next();s!==G.n;s=t.next())if(!e.getSegmentParentageBreakVertex(s)){e.getPathFromVertex(s);let t=e.getPrevVertex(s),i=t!==G.n?e.getSegmentParentage(t):-1,r=e.getSegmentParentage(s);-1!==r&&-1!==i&&r!==i&&e.setSegmentParentageBreakVertex(s,!0)}}function t5(e,t){var s;let i;return t||(t=v.Envelope2D.constructEmpty()),(i=(s=t).isEmpty()?e:(0,w.c)(null,s,!0).total())>e&&(i=e),.125*i}function se(e,t){return .125*e}function st(e,t){return 3*e+3*t}class ss{constructor(){this.m_impl=null}stitchCurves(e,t,s,i){this.m_impl&&(this.m_impl.stitchCurves(e,t,s),i&&this.clearStitcher(e))}clearStitcher(e){this.m_impl&&(this.m_impl.clearStitcher(e),this.m_impl=null)}getOriginalVertexIndex(e,t){return this.m_impl.getOriginalVertexIndex(e,t)}getOriginalSegmentTypeInfo(e){return this.m_impl.getOriginalSegmentTypeInfo(e)}}class si{constructor(e,t,s){this.m_originalPlanarSegments=[],this.m_progressTracker=null,this.m_nsr=null,this.m_progressTracker=e,this.m_nsr=s,this.m_tolerance=0,this.m_originalVertexIndex=-1,this.m_type=1,this.m_progressCounter=0,this.m_bIsSimple=t,this.m_densificationDeviation=NaN,this.m_maxSegmentsPerCurve=-1}buildMonotonicCurveParentage(e,t,s,i){if(!e.hasCurves())return;(0,I.g)(!e.hasSegmentParentage()),this.m_originalPlanarSegments.length=0,this.m_bIsSimple&&(this.m_originalVertexIndex=e.createUserIndex()),this.m_tolerance=s;let r=new w.P,n=new G.S,a=[],o=[],l=[];for(let i=e.getFirstGeometry();i!==G.n;i=e.getNextGeometry(i))for(let h=e.getFirstPath(i);h!==G.n;h=e.getNextPath(h)){let i=e.getPathSize(h),m=e.getFirstVertex(h),g=0,u=-1;for(let _=0;_<i;_++){let p,d=e.getNextVertex(m);if(!e.querySegment(m,n,!0,!1)){m=d;continue}if(0===g){u=e.getVertexIndex(m);let t=si.regularizeCurve(e,n.get(),m,s);if(t>=0){this.m_nsr&&0===this.m_nsr.m_reason&&this.m_nsr.assign(new H.NonSimpleResult(13,u,-1)),g=t,i=e.getPathSize(h),d=e.getNextVertex(m);let s=e.querySegment(m,n,!0,!1);(0,I.g)(s)}}else g--;let c=e.getVertexIndex(m);-1!==this.m_originalVertexIndex&&e.setUserIndex(m,this.m_originalVertexIndex,u),e.setSegmentToIndex(c,null);let f=!1;switch(n.get().getGeometryType()){case I.G.enumEllipticArc:case I.G.enumRationalBezier2:p=(0,G.F)(n.get(),t,s,!1,!0,o,l,a),f=!0;break;default:{let e=!this.m_bIsSimple||!n.get().isMonotoneQuickAndDirty();p=(0,G.B)(n.get(),t,s,e,!1,o,a)}}let x=this.m_originalPlanarSegments.length;if(e.setSegmentParentageAndBreak(m,x,!0),!o[1].isNAN()){let t=null;(t=f?new G.Q({points:o,weights:l}):new G.J({cp:o})).snapControlPoints(s*s),e.setSegmentToIndex(c,t)}let P=f?2:3;for(let t=1,i=p,m=P;t<i;++t,m+=P){n.get().queryCoord(a[t],r);let i=e.insertVertex(h,d,r);if(-1!==this.m_originalVertexIndex&&e.setUserIndex(i,this.m_originalVertexIndex,u),!o[m+1].isNAN())if(f){let t=new G.Q({points:o.slice(m),weights:l.slice(m)});t.snapControlPoints(s*s),e.setSegmentToIndex(e.getVertexIndex(i),t)}else{let t=new G.J({cp:o.slice(m)});t.snapControlPoints(s*s),e.setSegmentToIndex(e.getVertexIndex(i),t)}e.setSegmentParentageAndBreak(i,x,!1)}p>1&&(_+=p-1,i=e.getPathSize(h)),this.m_originalPlanarSegments.push(n.releaseSegment()),m=d}}}buildLinearSegmentParentage(e,t,s,i,r){if(this.m_type=0,this.m_densificationDeviation=t,this.m_maxSegmentsPerCurve=i,!e.hasCurves())return;(0,I.g)(!e.hasSegmentParentage()),this.m_tolerance=s,this.m_originalPlanarSegments=[],this.m_bIsSimple&&(this.m_originalVertexIndex=e.createUserIndex());let n=new w.P,a=new G.S,o=new G.D(0,t,0,this.m_progressTracker,!1,i),l=[];for(let t=e.getFirstGeometry();t!==G.n;t=e.getNextGeometry(t))for(let i=e.getFirstPath(t);i!==G.n;i=e.getNextPath(i)){let t=e.getPathSize(i),r=e.getFirstVertex(i);for(let h=0;h<t;h++){let h=e.getNextVertex(r);
1if(!e.querySegment(r,a,!0,!1)){r=h;continue}if(si.regularizeCurve(e,a.get(),r,s)>=0){t=e.getPathSize(i),h=e.getNextVertex(r);let s=e.querySegment(r,a,!0,!1);(0,I.g)(s)}let m=e.getVertexIndex(r);-1!==this.m_originalVertexIndex&&e.setUserIndex(r,this.m_originalVertexIndex,m),e.setSegmentToIndex(m,null),l.length=0,o.densifySegment(a.get(),l),this.progress_();let g=this.m_originalPlanarSegments.length;e.setSegmentParentageAndBreak(r,g,!0);for(let t=1,s=l.length-1;t<s;++t){a.get().queryCoord(l[t],n);let s=e.insertVertex(i,h,n);e.setSegmentParentageAndBreak(s,g,!1),-1!==this.m_originalVertexIndex&&e.setUserIndex(s,this.m_originalVertexIndex,m)}this.m_originalPlanarSegments.push(a.releaseSegment()),r=h}}e.clearSegments()}stitchCurves(e,t,s){si.st_stitchCurvesImpl(this,e,t,s,!1)}clearStitcher(e){this.m_originalPlanarSegments.length=0,-1!==this.m_originalVertexIndex&&(e.removeUserIndex(this.m_originalVertexIndex),this.m_originalVertexIndex=-1),e.deleteSegmentParentage()}static st_verifyParentage(e){si.st_stitchCurvesImpl(null,e,G.n,0,!0)}getOriginalVertexIndex(e,t){return -1!==this.m_originalVertexIndex&&t!==G.n?e.getUserIndex(t,this.m_originalVertexIndex):-1}getOriginalSegmentTypeInfo(e){if(-1!==e){let t=this.m_originalPlanarSegments[e];switch(t.getGeometryType()){case I.G.enumEllipticArc:return+(0!==t.projectionBehavior());case I.G.enumBezier:return 2;case I.G.enumBezier2:return 3;case I.G.enumLine:break;case I.G.enumRationalBezier2:return 4;default:(0,I.t)("")}}return -1}progress_(e=!1){this.m_progressCounter++}processSpanSmartTe_(e,t,s,i,r,n,a){if(t===s&&0===i)return(0,I.g)(e.getNextVertex(t)===G.n),e.setSegmentToIndex(e.getVertexIndex(t),null),void e.setSegmentParentageAndBreak(t,-1);let o=e.getNextVertex(t),l=e.getXY(t),h=e.getXY(s),m,g=0;{let t=2,r=l;for(let i=o;i!==s;i=e.getNextVertex(i)){let s=e.getXY(i);g+=b.P.distance(s,r),r=s,t++}g+=b.P.distance(h,r),(0,I.g)(t===i)}if(null===r)return e.setSegmentToIndex(e.getVertexIndex(t),null),void e.removeVertices(o,s);let u=r.getClosestCoordinate(l,!1),_=r.getClosestCoordinate(h,!1),p=r.calculateLength2D(),d=r.tToLength(u),c=r.tToLength(_),f=Math.abs(d)>10*a&&Math.abs(d-p)>10*a,x=Math.abs(c)>10*a&&Math.abs(c-p)>10*a,P=e=>Math.abs(e.calculateLength2D()-g)>Math.max(.2*g,4*a)?null:e,E=r.isClosed();if(!E){let e=b.P.distance(r.getStartXY(),r.getEndXY());e<=a&&p>5*e&&(E=!0)}if(E){let n,o,g=new b.P;if(2===i)g=b.P.lerp(l,h,.5),n=r.getClosestCoordinate(g,!1),o=r.tToLength(n);else{let s=e.getNextNthVertex(t,(i-1)/2);g=e.getXY(s),n=r.getClosestCoordinate(g,!1);let l=Math.abs(o=r.tToLength(n))>10*a&&Math.abs(o-p)>10*a;if(!l&&(i-1>=4&&(s=e.getNextNthVertex(t,(i-1)/4),n=r.getClosestCoordinate(g,!1),l=Math.abs(o=r.tToLength(n))>10*a&&Math.abs(o-p)>10*a),!l))return}let E=!1,y=d===c;if(y){let s=2,n=4;i-1<=4&&(s=1,n=2);let a=e.getXY(e.getNextNthVertex(t,s)),o=e.getXY(e.getNextNthVertex(t,n));
1E=-b.P.orientationNonRobust(l,a,o)*(0,b.e)(r.calculateArea2DHelper())>0}else x?f?E=o>d:o<c?(d=0,u=0):(d=p,u=1):o>d?(c=p,_=1):(c=0,_=0);if(y)(m=r.clone()).dropAllAttributes(),E||m.reverse(),(0,I.g)(l.equals(h));else{let e=!1;u>_&&(e=!0,[u,_]=[_,u]),(m=r.cut(u,_,!0)).getDescription().getAttributeCount(),e&&m.reverse()}m.setCoordsForIntersector(l,h,!1),(m=P(m))&&(this.removeSpanBetween(e,t,s),e.setSegmentToIndex(e.getVertexIndex(t),m))}else if(f||x){if((!f||!x)&&b.P.distance(r.getStartXY(),r.getEndXY())<10*a){let i=[(0,b.l)(u,_),(0,b.l)(u,_),(0,b.l)(u,_)];f?(i[1].second=0,i[2].second=1):(i[1].first=1,i[2].first=0);let n=[null,null,null],a=[0,0,0],o=Number.MAX_VALUE,p=0;for(let e=0;e<3;e++){let t=!1;if(i[e].first>i[e].second){t=!0;let s=i[e].first;i[e].first=i[e].second,i[e].second=s}n[e]=r.cut(i[e].first,i[e].second,!0),n[e].dropAllAttributes(),t&&n[e].reverse(),n[e].setCoordsForIntersector(l,h,!1),a[e]=n[e].calculateLength2D();let s=Math.abs(g-a[e]);s<o&&(o=s,p=e)}return void((m=P(m=n[p]))&&(this.removeSpanBetween(e,t,s),e.setSegmentToIndex(e.getVertexIndex(t),m)))}let i=!1;u>_&&(i=!0,[u,_]=[_,u]),(m=r.cut(u,_,!0)).dropAllAttributes(),i&&m.reverse(),m.setCoordsForIntersector(l,h,!1),(m=P(m))&&(this.removeSpanBetween(e,t,s),e.setSegmentToIndex(e.getVertexIndex(t),m))}else{if((m=r.clone()).dropAllAttributes(),d>c&&m.reverse(),g<Math.max(.75*p,p-this.m_densificationDeviation*(i-1))){let e=u>_?_:u,t=m.tToLength(e)+g,s=m.lengthToT(t);s=(0,b.s)(s,e,1),m=m.cut(e,s,!0)}m.setCoordsForIntersector(l,h,!1),(m=P(m))&&(this.removeSpanBetween(e,t,s),e.setSegmentToIndex(e.getVertexIndex(t),m))}}processSpanCurves_(e,t,s,i,r,n,a){if(t===s&&0===i)return(0,I.g)(e.getNextVertex(t)===G.n),e.setSegmentToIndex(e.getVertexIndex(t),null),void e.setSegmentParentageAndBreak(t,-1);let o=e.getNextVertex(t);{let t=2;for(let i=o;i!==s;i=e.getNextVertex(i))t++;(0,I.g)(t===i)}if(null===r)return e.setSegmentToIndex(e.getVertexIndex(t),null),void e.removeVertices(o,s);let l=e.getXY(t),h=e.getXY(s);if(r.isClosed()){if(l.isEqualPoint2D(h)&&l.isEqualPoint2D(r.getStartXY())){let o;if(o=this.verifySegmentFitnessCurves(e,t,s,i,r,n,a)){let i=r.clone();return i.dropAllAttributes(),o<0&&i.reverse(),this.removeSpanBetween(e,t,s),void e.setSegmentToIndex(e.getVertexIndex(t),i)}}}else if(l.isEqualPoint2D(r.getStartXY())){if(h.isEqualPoint2D(r.getEndXY())){let o=r.clone();o.dropAllAttributes();let l=this.verifySegmentFitnessCurves(e,t,s,i,o,n,a);if(l)return(0,I.g)(l>0),this.removeSpanBetween(e,t,s),void e.setSegmentToIndex(e.getVertexIndex(t),o)}}else if(h.isEqualPoint2D(r.getStartXY())&&l.isEqualPoint2D(r.getEndXY())){let o=r.getReversed();o.dropAllAttributes();let l=this.verifySegmentFitnessCurves(e,t,s,i,o,n,a);if(l)return(0,I.g)(l>0),this.removeSpanBetween(e,t,s),void e.setSegmentToIndex(e.getVertexIndex(t),o)}this.processSpanSplitSegmentCurves(e,t,s,i,r,n,a)}processSpan_(e,t,s,i,r,n,a){return 0===this.m_type?void this.processSpanSmartTe_(e,t,s,i,r,n,a):void this.processSpanCurves_(e,t,s,i,r,n,a)}processSpanSplitSegmentCurves(e,t,s,i,r,n,a){if(r.isLine()||this.fitSegmentToSpanCurves(e,t,s,i,r,n,a))return;let o=a*a,l=i,h=t,m=e.getXY(t),g=r.getClosestCoordinate(m,!1),u=r.getCoord2D(g),_=!1,p=b.P.sqrDistance(m,u);if(p>o){let i=e.getNextVertex(t);if(this.approximateSpanSectionCurves(e,t,r,n,a),i===s)return;h=i,_=!0,l-=1}let d=s,c=e.getXY(s);g=r.getClosestCoordinate(c,!1);let f=r.getCoord2D(g),x=!1,P=b.P.sqrDistance(c,f);if(P>o){let t=e.getPrevVertex(s);if(this.approximateSpanSectionCurves(e,t,r,n,a),t===h)return;d=t,x=!0,l-=1}if((_||x)&&this.fitSegmentToSpanCurves(e,h,d,l,r,n,a))return;let E=!1;if(!_&&p>0){let s=e.getNextVertex(t);if(this.approximateSpanSectionCurves(e,t,r,n,a),s===d)return;h=s,_=!0,E=!0,l-=1}if(!x&&P>0){let t=e.getPrevVertex(s);if(this.approximateSpanSectionCurves(e,t,r,n,a),t===h)return;d=t,x=!0,E=!0,l-=1}if(E&&this.fitSegmentToSpanCurves(e,h,d,l,r,n,a))return;let y=h;for(;;){let t=e.getNextVertex(y);if(this.approximateSpanSectionCurves(e,y,r,n,a),(y=t)===d)return}}fitSegmentToSpanCurves(e,t,s,i,r,n,a){let o=[];o.push(e.getXY(t));let l=t,h=new G.S;for(;;){e.querySegment(l,h,!1,!0);let t=0;for(let e of[.1,.25,.4,.5,.6,.75,.9,1])(2===i||1&t)&&o.push(h.get().getCoord2D(e)),t++;if((l=e.getNextVertex(l))===s)break}let m=(()=>
1{let e=o[0].compare(o.at(-1));if(0===e){let t=new b.K(0);(function(e,t,s){if(s.reset(),t<3)return;let i=e[0].clone(),r=i.x,n=i.y,a=e[1].clone(),o=new b.P;for(let r=2;r<t;r++)o.assign(e[r]),s.pe((o.x-i.x)*(a.y-n)),i.assign(a),a.assign(o);s.pe((r-i.x)*(a.y-n))})(o,o.length,t),e=t.getResult()>=0?-1:1}return e>0})();m&&o.reverse();let g=r.clone();if(g.dropAllAttributes(),m&&g.reverse(),g.setSegmentFromCoordsForStitcher(o,o.length),m&&g.reverse(),g.snapControlPoints(this.m_tolerance*this.m_tolerance),this.verifySegmentFitnessCurves(e,t,s,i,g,n,a)){this.removeSpanBetween(e,t,s);let i=e.getVertexIndex(t);return e.setSegmentToIndex(i,g),!0}return!1}approximateSpanSectionCurves(e,t,s,i,r){let n=new G.S;if(!e.querySegment(t,n,!0,!1))return;let a=s.getGeometryType();if(a!==n.get().getGeometryType()){if(a===I.G.enumEllipticArc){if(n.get().getGeometryType()!==I.G.enumRationalBezier2)return;if(0===s.projectionBehavior()){var o,l;let s,i=[];o=n.get(),l=this.m_progressTracker,s=Math.max(4*(0,G.U)(o),r),new t7(o,null,s,NaN,l).approximateWithCirclesImpl(!1,i);let a=e.getNextVertex(t),h=e.getPathFromVertex(t),m=new w.P,g=t;for(let t=1,s=i.length;t<s;t++){let s=i[t],r=n.get().getCoord2D(i[t-1]),o=n.get().getCoord2D((0,b.q)(i[t-1],s,.5));n.get().queryCoord(s,m);let l=m.getXY(),u=new G.l;u.constructCircularArcThreePoint(r,l,o);let _=G.n;s<1&&(_=e.insertVertex(h,a,m)),e.setSegmentToIndex(e.getVertexIndex(g),u),g=_}return}{let s=(0,b.m)(b.P,3);n.get().queryControlPoints(s);let i=[0,0,0];n.get().queryWeights(i);let r=(0,G.K)(i),a=new G.l;return(0,G.N)(s,r*r,null,!1,a),void e.setSegmentToIndex(e.getVertexIndex(t),a)}}(0,I.d)("approximate_span_section_")}}verifySegmentFitnessCurves(e,t,s,i,r,n,a){let o=e.getXY(t),l=e.getXY(s);if(!o.isEqualPoint2D(r.getStartXY())||!l.isEqualPoint2D(r.getEndXY()))return 0;let h=0;if(r.isClosed()){let e=r.getCoord2D(.1).sub(o);h=r.getCoord2D(.7).sub(o).crossProduct(e)>=0?1:-1}let m=(0,b.d)(G.O.s_maxMonotonicPartParams,NaN),g=r.getMonotonicPartParams(m.length,m);g--;let u=new G.L,_=[1,.5,.75,.25],p=0,d=t,c=o.clone();for(;;){let t=e.getNextVertex(d),i=e.getSegment(d);null===i&&(e.queryLineConnector(d,u,!0),i=u);for(let e=+(t===s);e<_.length;e++){let t=i.getCoord2D(_[e]);if(!r.isCloserThanDistance(t,b.E.unit(),a))return 0}if(g>1)for(let e=1;e<g;){let t=r.getCoord2D(m[e]);i.isCloserThanDistance(t,b.E.unit(),a)?(m[g-1]=(0,b.c)(m[e],m[e]=m[g-1]),g--):e++}if(h){let e=i.getCoord2D(.25);p+=e.sub(o).crossProduct(c.sub(o)),c.assign(e),e.assign(i.getCoord2D(.75)),p+=e.sub(o).crossProduct(c.sub(o)),c.assign(e)}if((d=t)===s)return g>1?0:h?p<0?-h:h:1}}removeSpanBetween(e,t,s){e.setSegmentToIndex(e.getVertexIndex(t),null);let i=e.getNextVertex(t);i!==s&&e.removeVertices(i,s)}static st_stitchCurvesImpl(e,t,s,i,r){if(!t.hasSegmentParentage())return;t9(t);let n=s===G.n?t.getFirstGeometry():s;for(;n!==G.n;)if((0,I.l)(t.getGeometryType(n))){for(let s=t.getFirstPath(n);s!==G.n;s=t.getNextPath(s)){let n=t.getPathSize(s),a=t.isClosedPath(s);a&&(n+=1);let o=t.getFirstVertex(s),l=t.getSegmentParentage(o);if(a){if(-1!==l&&!t.getSegmentParentageBreakVertex(o)){let e=t.getPrevVertex(o),s=o;for(let i=0;;i++){let r=t.getSegmentParentage(e);if(l!==r){(0,I.g)(-1===r);break}if(o=e,t.getSegmentParentageBreakVertex(e))break;if(e===s){o=s,t.setSegmentParentageBreakVertex(o,!0);break}e=t.getPrevVertex(e),(0,I.g)(i<n)}}}else(0,I.g)(-1===l||t.getSegmentParentageBreakVertex(o));let h=o;for(let s=0;s<n&&h!==G.n;){let a=t.getSegmentParentage(h);if(-1===a){if(s++,(h=t.getNextVertex(h))===o)break;continue}let l=0,m=G.n,g=h;l=1;let u=t.getNextVertex(g);for(;s<n&&u!==G.n;){s++,m=u,l++;let e=t.getSegmentParentage(u);if(-1===e||t.getSegmentParentageBreakVertex(u))break;(0,I.g)(e===a),u=t.getNextVertex(u)}if(m===G.n){(0,I.g)(0);break}if(!r){let s=e.m_originalPlanarSegments[a];e.processSpan_(t,g,m,l,s,a,i)}if((h=m)===o)break}}if(s!==G.n)break;n=t.getNextGeometry(n)}else n=s===G.n?t.getNextGeometry(n):G.n}static st_stitchCurvesFromLinesImpl(e,t,s,i,r){let n=s===G.n?t.getFirstGeometry():s;for(;n!==G.n;){for(let s=t.getFirstPath(n);s!==G.n;s=t.getNextPath(s)){let n=t.getPathSize(s);t.isClosedPath(s)&&(n+=1);let a=!0,o=!1,l=t.getFirstVertex(s),h=l;for(let s=0;s<n&&h!==G.n;){let m=t.getSegmentParentage(h);if(-1===m||a){a=!1,s++,h=t.getNextVertex(h),o=!0;continue}let g,u,_=0;if(o?(g=t.getPrevVertex(h),u=h,(0,I.g)(g!==G.n),(0,I.g)(u!==g),(0,I.g)(-1===t.getSegmentParentage(g)||l===g)):(g=h,u=t.getNextVertex(g),s++,(0,I.g)(u!==G.n),(0,I.g)(u!==g),m=t.getSegmentParentage(u)),_=2,o=!1,-1===m||t.getSegmentParentageBreakVertex(u)){h=u;continue}let p=t.getNextVertex(u);for(s++;s<n&&p!==G.n;
1){u=p,_++;let e=t.getSegmentParentage(p);if(-1===e||t.getSegmentParentageBreakVertex(p))break;(0,I.g)(e===m),s++,p=t.getNextVertex(p)}if(!r){let s=e.m_originalPlanarSegments[m];e.processSpan_(t,g,u,_,s,m,i)}h=u}}if(s!==G.n)break;n=t.getNextGeometry(n)}}static st_stitchCurvesFromCurvesImpl(e,t,s,i,r){let n=s===G.n?t.getFirstGeometry():s;for(;n!==G.n;)if((0,I.l)(t.getGeometryType(n))){for(let s=t.getFirstPath(n);s!==G.n;s=t.getNextPath(s)){let n=t.getPathSize(s),a=t.isClosedPath(s);a&&(n+=1);let o=t.getFirstVertex(s);if(a){if(-1!==t.getSegmentParentage(o)){let e=o;for(let i=0;!t.getSegmentParentageBreakVertex(e);i++){if(i===n){o=t.getFirstVertex(s),t.setSegmentParentageBreakVertex(e,!0);break}e=t.getPrevVertex(e)}}}else(0,I.g)(-1===t.getSegmentParentage(o)||t.getSegmentParentageBreakVertex(o));let l=o;for(let s=0;s<n&&l!==G.n;){let a=t.getSegmentParentage(l);if(-1===a){s++,l=t.getNextVertex(l);continue}let o=0,h=G.n,m=l;o=1;let g=t.getNextVertex(m);for(;s<n&&g!==G.n;){s++,h=g,o++;let e=t.getSegmentParentage(g);if(-1===e||t.getSegmentParentageBreakVertex(g))break;(0,I.g)(e===a),g=t.getNextVertex(g)}if(h===G.n)break;if(!r){let s=e.m_originalPlanarSegments[a];e.processSpan_(t,m,h,o,s,a,i)}l=h}}if(s!==G.n)break;n=t.getNextGeometry(n)}else n=s===G.n?t.getNextGeometry(n):G.n}static regularizeCurve(e,t,s,i){let r=t.snapControlPoints(i*i);if(r){let i=e.getVertexIndex(s),r=t.clone();e.setSegmentToIndex(i,r)}if(t.getGeometryType()===G.J.type){let n=[],a=t.calculateSpecialPointsForCracking(i,n);if(a>0){let o=[];if(a>1){for(let e=0;e<a;e++)if(o.push(t.getCoord2D(n[e])),e>0){let t=(Math.abs(o[e].x)+Math.abs(o[e].y))*(0,b.g)(),s=b.P.distance(o[e-1],o[e]);if(s<t&&s>0){let t=new b.P;(0,b.Q)(o[e-1],o[e],.5,t),o[e-1]=t,o[e]=t}}}e.splitSegment(s,n,a),r=e.snapControlPoints(s,a+1,i*i)||r;for(let t=0;t<a;t++)s=e.getNextVertex(s),e.setSegmentParentageBreakVertex(s,!0);return a}}return r?0:-1}}function sr(e,t,s,i,r){return new sa(e,s,t,i,r).do_()}function sn(e,t,s){return sa.fixCurveTwoPointLoops(e,t,s)}class sa{constructor(e,t,s,i,r){this.m_shape=e,this.m_progressTracker=t,this.m_tolerance=s,this.m_bFilterDegenerateSegments=i,this.m_bTrackChanges=r,this.m_progressCounter=0}do_(){let e=new w.C(this.m_tolerance.tolerance,this.m_tolerance.resolution),t=(0,w.e)(e),s=(0,w.l)(e),i=1.00001*s;s*=1.000001;let r=!1,n=this.m_shape.getTotalPointCount()+10>30?1e3:(this.m_shape.getTotalPointCount()+10)*(this.m_shape.getTotalPointCount()+10),a=this.m_shape.hasPointFeatures();for(let e=0;;e++){this.m_shape.dbgCheckSelection(),e>n&&(0,I.d)("crack_and_cluster_iteration_exceeded"),this.m_shape.dbgVerifyMonotone();let o=-1;0===e&&(o=this.firstCrack_(),r||=o>0);let l=this.cluster_(t);if(this.m_shape.dbgVerifyMonotone(),r||=l,this.m_bFilterDegenerateSegments){let e=0!==this.m_shape.filterClosePoints(t,!0,!1,this.m_bTrackChanges,G.n);r||=e,this.m_shape.dbgVerifyMonotone()}let h=this.m_shape.snapControlPointsOnSelection(i*i);r||=h,this.m_shape.dbgCheckSelection();let m=!1;if((0===e&&-1===o||a||eM(!0,this.m_shape,s,null,this.m_progressTracker))&&(m=this.crack_(i),r||=m,this.m_shape.dbgVerifyMonotone()),!m&&!sa.fixCurveTwoPointLoops(this.m_shape,t,this.m_progressTracker)){this.m_shape.dbgVerifyMonotone();break}}return r&&function(e){if(!e.hasSegmentParentage())return;t9(e);let t=new w.A(0),s=e.queryVertexIteratorOnSelection();for(let e=s.next();e!==G.n;e=s.next())t.add(e);if(0===t.size())return;e.sortVerticesSimpleByY(t,0,t.size()),t.add(G.n);let i=b.P.getNAN();e.queryXY(t.read(0),i);let r=0,n=b.P.getNAN();for(let s=1,a=t.size();s<a;s++){{let i=t.read(s);i!==G.n?e.queryXY(i,n):n.setNAN()}if(!n.isEqualPoint2D(i)){if(s-r>1){let i=!1;for(let n=r;n<s;++n){let s=t.read(n);if(e.getSegmentParentageBreakVertex(s)){i=!0;break}}if(!i){let n=(t,s,i)=>{let r=e.getPrevVertex(t),n=e.getNextVertex(t);r!==G.n?s.assign(e.getXY(r)):s.setNAN(),n!==G.n?i.assign(e.getXY(n)):i.setNAN()},a=new b.P,o=new b.P;n(t.read(r),a,o);for(let e=r+1;e<s;++e){let s=t.read(e);if(s===G.n)continue;let r=new b.P,l=new b.P;n(s,r,l);let h=(e,t)=>!!(e.equals(t)||e.isNAN()&&t.isNAN());if(!(h(r,a)&&h(l,o)||h(l,a)&&h(r,o))){i=!0;break}}}if(i)for(let i=r;i<s;++i)e.setSegmentParentageBreakVertex(t.read(i),!0)}i.setCoordsPoint2D(n),r=s}}}(this.m_shape),r}cluster_(e){return ec(this.m_shape,e,G.n,this.m_bTrackChanges,this.m_progressTracker)}crack_(e){return function(e,t,s,i){if(!eA(e))return!1;let r=new eU(i);r.m_shape=e,r.m_tolerance=t,r.m_bTrackChanges=s;
1let n=e.hasCurves()?5:15;return e.getTotalPointCount()<n?r.crackBruteForce_():r.crackerPlaneSweep_()}(this.m_shape,e,this.m_bTrackChanges,this.m_progressTracker)}static fixCurveTwoPointLoops(e,t,s){if(!e.hasCurves())return!1;e.dbgVerifyCurves();let i=e.createUserIndexUninitialized(),r=new w.A(0),n=e.queryVertexIteratorOnSelection();for(let t=n.next();t!==G.n;t=n.next())r.add(t),e.setUserIndex(t,i,-1);if(0===r.size())return!1;r.add(G.n),e.sortVerticesSimpleByY(r,0,r.size()-1);let a=0,o=e.getXY(r.read(a)),l=new b.P(NaN,NaN),h=[];for(let t=1,s=r.size();t<s;++t){let s=r.read(t),n=s!==G.n?e.getXY(s):l;if(n.equals(o))continue;let m=[];for(let s=a;s<t;s++){let t=r.read(s),n=e.getPrevVertex(t);if(n!==G.n&&-1===e.getUserIndex(n,i)){let t=so(e.getXY(n),e.getSegment(n));0!==b.P.sqrDistance(o,t.otherPt)&&(t.vert=n,t.dir=-1,m.push(t)),e.setUserIndex(n,i,1)}let a=e.getNextVertex(t);if(a!==G.n&&-1===e.getUserIndex(t,i)){let s=so(e.getXY(a),e.getSegment(t));0!==b.P.sqrDistance(o,s.otherPt)&&(s.vert=t,s.dir=1,m.push(s)),e.setUserIndex(t,i,1)}}if(m.length>1){m.sort((e,t)=>(function(e,t){let s=e.otherPt.compare(t.otherPt);return 0!==s?s:function(e,t){if(null===e.seg||null===t.seg)return null!==e.seg?-1:+(null!==t.seg);let s=e.seg.getGeometryType(),i=t.seg.getGeometryType();return s<i?-1:+(s>i)}(e,t)})(e,t));let e=so(l.clone(),null);m.push(e);let t=0;for(let e=1,s=m.length;e<s;e++)if(!m[e].otherPt.equals(m[e-1].otherPt)){if(e-t>1&&null!==m[t].seg){let s=!1,i=t;for(let r=t+1;r<e;r++)if(!function(e,t){if((0,I.g)(e.otherPt.equals(t.otherPt)),null===e.seg)return null===t.seg;if(null===t.seg)return!1;let s=e.seg.getGeometryType();if(s!==t.seg.getGeometryType())return!1;if(s===I.G.enumBezier){let s=e.seg,i=t.seg,r=s.getControlPoint1(),n=s.getControlPoint2();-1===e.dir&&(n=(0,b.c)(r,r=n));let a=i.getControlPoint1(),o=i.getControlPoint2();return -1===t.dir&&(o=(0,b.c)(a,a=o)),r.equals(a)&&n.equals(o)}if(s===I.G.enumRationalBezier2){let s=e.seg,i=t.seg,r=s.getControlPoint1(),n=i.getControlPoint1();if(!r.equals(n))return!1;let a=[0,0,0];s.queryWeights(a),-1===e.dir&&(a[2]=(0,b.c)(a[0],a[0]=a[2]));let o=[0,0,0];return i.queryWeights(o),-1===t.dir&&(o[2]=(0,b.c)(o[0],o[0]=o[2])),a[0]===o[0]&&a[1]===o[1]&&a[2]===o[2]}(0,I.d)("")}(m[i],m[r])){s=!0;break}if(s)for(let s=t;s<e&&null!==m[s].seg;s++)h.push(m[s].vert)}t=e}}a=t,o.setCoordsPoint2D(n)}for(let s of h){let i=e.getSegment(s);(0,I.g)(null!==i);let r=e.getXY(s),n=e.getXY(e.getNextVertex(s));if(b.P.distance(r,n)<3*t)e.setSegmentToIndex(e.getVertexIndex(s),null);else{let t=i.lengthToT(.5*i.calculateLength2D());e.splitSegment(s,[t],1)}}return e.removeUserIndex(i),h.length>0}firstCrack_(){let e=this.m_shape.getEnvelope2D(this.m_progressTracker),t=(0,w.c)(null,e,!0).total();if(4*t<this.m_tolerance.total()){let e=!1,s=this.cluster_(1.1*t);e||=s;let i=0;this.m_bFilterDegenerateSegments&&(i=this.m_shape.filterClosePoints(0,!0,!1,this.m_bTrackChanges,G.n));let r=this.crack_(t);return(e||=r)?1:2*!!i}return -1}progress_(e=!1){this.m_progressCounter++,!e&&4095&this.m_progressCounter||(this.m_progressCounter=0)}}function so(e,t){return{otherPt:e,seg:t,vert:-1,dir:0}}var sl=I.h,sh=I.f,sm=I.u;function sg(e){switch(e){case 1:return 1;case 2:return 2;case 3:break;case 4:return 4;case 0:return 0;default:(0,I.g)(0,"unrecognized cut side")}return 3}function su(){return{unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1}}function s_(e,t,s,i,r,n,a){let o=new sf(r);o.m_bOGCOutput=!0;let l=e.getGeometryType()===I.G.enumPolygon&&1===e.getFillRule()&&!(0,w.p)(i);return o.planarSimplifyImpl_(e,t,l,s,i,r,n,a)}function sp(e,t,s,i,r,n,a,o){return new sf(n).planarSimplifyImpl_(e,t,s,i,r,n,a,o)}function sd(e,t,s,i){if(e.getDimension()>t.getDimension())return sE(sy(e),e,t,"^");if(e.getDimension()<t.getDimension()||e.isEmpty())return sE(sy(t),e,t,"^");if(t.isEmpty())return sE(sy(e),e,t,"^");let r=new v.Envelope2D;e.queryEnvelope(r);let n=new v.Envelope2D;t.queryEnvelope(n);let a=new v.Envelope2D;a.setCoords({env2D:r}),a.mergeEnvelope2D(n);let o=(0,w.c)(s,a,!0),l=new sf(i),h=new G.E,m=h.addGeometry(sy(e)),g=h.addGeometry(sy(t)),u=0,_=null;if(h.hasCurves()){_=new ss;let e=h.getEnvelope2D(i);u=se(o.total()),t6(h,t5(o.total(),e),o.total(),12e3,_,null,i)}l.setEditShapeCrackAndCluster(h,o);let p=l.symmetricDifference(m,g);null!==_&&_.stitchCurves(h,p,u,!0);let d=sE(h.getGeometry(p),e,t,"^");return sl(d.getGeometryType())&&(d.getImpl().setIsSimple(4,o.total()),d.getGeometryType()===I.G.enumPolygon&&d.getImpl().updateOGCFlagsProtected()),d}function sc(e,t,s,i,r,n=!1){0===t&&(0,I.a)("not enough geometries to dissolve");let a=0;for(let s=0;s<t;s++)a=Math.max(e[s].getDimension(),a);if(2===a||1===a)return new sf(i).dissolveMultiPaths_(a,!1,e,t,s,r,n);let o=0,l=-1;for(let s=0;s<t;s++)e[s].getDimension()===a&&(-1===l&&(l=s),e[s].isEmpty()||(l=s,o++));if(o<2)return sy(e[l]);let h=w.q.constructEmpty(),m=new G.E,g=G.n;for(let s=0;s<t;s++)if(e[s].getDimension()===a&&!e[s].isEmpty()){g===G.n?g=m.addGeometry(sy(e[s])):m.appendGeometry(g,sy(e[s]));let t=w.q.constructEmpty();e[s].queryLooseEnvelope(t),h.mergeEnv3D(t)}let u=(0,w.c)(s,h.getEnvelope2D(),!0),_=new sf(i);if(n){let e=(0,w.r)(s,h.getEnvelopeZs(),!0);return _.planarSimplify3DImpl_(m,u,e,0,!0)}return _.m_bOGCOutput=!0,_.planarSimplifyMultiPoints(m,u,!1,-1)}
1class sf{constructor(e){this.m_topoGraph=null,this.m_maskLookup=[],this.m_dummyPt1=b.P.getNAN(),this.m_dummyPt2=b.P.getNAN(),this.m_fromEdgeForPolylines=G.n,this.m_progressCounter=0,this.m_bOGCOutput=!1,this.m_progressTracker=e}linesToPolygonsImpl(e,t){let s=0,i=0,r=null;if(e.hasCurves()){r=new ss;let n=e.getEnvelope2D(this.m_progressTracker);i=se(t.total());let a=t5(t.total(),n);s=st(a,i),t6(e,a,t.total(),12e3,r,null,this.m_progressTracker)}this.setEditShapeCrackAndCluster(e,t.add(s));let n=this.m_topoGraph.createUserIndexForChains(),a=this.m_topoGraph.getFirstChain();this.m_topoGraph.setChainUserIndex(a,n,1);for(let e=this.m_topoGraph.getChainFirstIsland(a);e!==G.n;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,n,1);let o=[];for(let t=this.m_topoGraph.getFirstChain();t!==G.n;t=this.m_topoGraph.getChainNext(t)){if(1===this.m_topoGraph.getChainUserIndex(t,n))continue;this.m_topoGraph.setChainUserIndex(t,n,1);for(let e=this.m_topoGraph.getChainFirstIsland(t);e!==G.n;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,n,1);if(0===this.m_topoGraph.getChainArea(t))continue;let s=this.m_topoGraph.extractPolygonFromChainAndIslands(e,G.n,t,G.n);null!=r&&r.stitchCurves(e,s,i,!1);let a=e.getGeometry(s);o.push(a)}return new F.S(o)}autoCompleteImpl(e,t,s){let i=0,r=0,n=null;if(e.hasCurves()){n=new ss;let t=e.getEnvelope2D(this.m_progressTracker);r=se(s.total());let a=t5(s.total(),t);i=st(a,r),t6(e,a,s.total(),12e3,n,null,this.m_progressTracker)}this.setEditShapeCrackAndCluster(e,s.add(i));let a=this.m_topoGraph.getGeometryID(t),o=this.m_topoGraph.createUserIndexForChains(),l=this.m_topoGraph.getFirstChain();this.m_topoGraph.setChainUserIndex(l,o,1);for(let e=this.m_topoGraph.getChainFirstIsland(l);e!==G.n;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,o,1);let h=[];for(let t=this.m_topoGraph.getFirstChain();t!==G.n;t=this.m_topoGraph.getChainNext(t)){if(1===this.m_topoGraph.getChainUserIndex(t,o))continue;this.m_topoGraph.setChainUserIndex(t,o,1);for(let e=this.m_topoGraph.getChainFirstIsland(t);e!==G.n;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,o,1);if(0!==this.m_topoGraph.getChainParentage(t))continue;let s=this.m_topoGraph.getChainHalfEdge(t),i=s,l=!1;do{let e=this.m_topoGraph.getHalfEdgeTwin(i);if(this.m_topoGraph.getHalfEdgeChain(e)!==t&&0!=(this.m_topoGraph.getHalfEdgeParentage(i)&a)){l=!0;break}i=this.m_topoGraph.getHalfEdgeNext(i)}while(i!==s);if(!l||0===this.m_topoGraph.getChainArea(t))continue;let m=this.m_topoGraph.extractPolygonFromChainAndIslands(e,G.n,t,G.n);null!==n&&n.stitchCurves(e,m,r,!1);let g=e.getGeometry(m);h.push(g)}return new F.S(h)}setEditShape(e,t=!1){null===this.m_topoGraph&&(this.m_topoGraph=new em),this.m_topoGraph.setEditShape(e,this.m_progressTracker,!0,t)}setEditShapeCrackAndCluster(e,t){sr(e,t,this.m_progressTracker,!0,!1);for(let t=e.getFirstGeometry();t!==G.n;t=e.getNextGeometry(t))e.getGeometryType(t)===I.G.enumPolygon&&ez(e,t,-1,this.m_bOGCOutput,G.n,this.m_progressTracker);this.setEditShape(e)}setHalfEdgeOrientations_(e,t){let s=this.m_topoGraph.getShape();for(let i=s.getFirstGeometry();i!==G.n;i=s.getNextGeometry(i))if(i===t)for(let t=s.getFirstPath(i);t!==G.n;t=s.getNextPath(t)){let i=s.getFirstVertex(t);if(i===G.n)continue;let r=s.getNextVertex(i);for(;r!==G.n;){let t=this.m_topoGraph.getClusterFromVertex(i),n=this.m_topoGraph.getClusterFromVertex(r),a=this.m_topoGraph.getHalfEdgeConnector(t,n);if(a!==G.n){let t=this.m_topoGraph.getHalfEdgeTwin(a);this.m_topoGraph.setHalfEdgeUserIndex(a,e,1),this.m_topoGraph.setHalfEdgeUserIndex(t,e,2)}i=r,r=s.getNextVertex(i)}}}flushVertices_(e,t){let s=this.m_topoGraph.getShape(),i=s.hasSegmentParentage(),r=new G.S,n=s.insertPath(e,G.n);t.push(t[0]);let a=t.length,o=G.n;for(let e=0;e<a;e++){let l=t[e];if(o=s.addVertex(n,l),!i)continue;let h=this.m_topoGraph.getClusterFromVertex(l);if(e>0&&this.m_topoGraph.isBreakNode(h)&&s.setSegmentParentageBreakVertex(o,!0),e<a-1){let i=this.m_topoGraph.getHalfEdgeConnector(h,this.m_topoGraph.getClusterFromVertex(t[e+1])),n=this.m_topoGra
1ph.getSegmentParentage(i);s.setSegmentParentageAndBreak(o,n,e>0||this.m_topoGraph.isBreakNode(h)),this.m_topoGraph.isHalfEdgeCurve(i)&&(this.m_topoGraph.querySegmentXY(i,r),s.setSegmentToIndex(s.getVertexIndex(o),r.get().clone()))}}if(i){let e=this.m_topoGraph.getClusterFromVertex(t[a-1]);this.m_topoGraph.isBreakNode(e)&&s.setSegmentParentageBreakVertex(o,!0)}s.setClosedPath(n,!0)}processPolygonCuts_(e,t,s,i){let r=this.m_topoGraph.getGeometryID(s),n=this.m_topoGraph.getGeometryID(i),a=[],o=this.m_topoGraph.getShape(),l=this.m_topoGraph.createUserIndexForHalfEdges();for(let s=this.m_topoGraph.getFirstCluster();s!==G.n;s=this.m_topoGraph.getNextCluster(s)){let i=this.m_topoGraph.getClusterHalfEdge(s);if(i===G.n)continue;let h=i;do{if(1!==this.m_topoGraph.getHalfEdgeUserIndex(h,l)){let s=h,i=h,m=!1,g=0;do{if(this.m_topoGraph.setHalfEdgeUserIndex(s,l,1),m||0==(this.m_topoGraph.getHalfEdgeParentage(s)&n)||0==(this.m_topoGraph.getHalfEdgeFaceParentage(s)&r)||(i=s,m=!0),m){let t=this.m_topoGraph.getHalfEdgeOrigin(s),i=this.m_topoGraph.getClusterVertexIterator(t),r=this.m_topoGraph.getVertexFromVertexIterator(i);a.push(r),-1!==e&&0!=(this.m_topoGraph.getHalfEdgeParentage(s)&n)&&(g|=this.m_topoGraph.getHalfEdgeUserIndex(s,e))}s=this.m_topoGraph.getHalfEdgeNext(s)}while(s!==i);if(m&&this.m_topoGraph.getChainArea(this.m_topoGraph.getHalfEdgeChain(i))>0){let e=o.createGeometry(I.G.enumPolygon);this.flushVertices_(e,a),-1!==t&&o.setGeometryUserIndex(e,t,g)}a.length=0}h=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(h))}while(h!==i)}this.m_topoGraph.deleteUserIndexForHalfEdges(l)}cutPolygonPolyline_(e,t,s,i){this.m_topoGraph.removeSpikes_();let r=-1;-1!==e&&(r=this.m_topoGraph.createUserIndexForHalfEdges(),this.setHalfEdgeOrientations_(r,s)),this.processPolygonCuts_(r,e,t,s),-1!==r&&(this.m_topoGraph.deleteUserIndexForHalfEdges(r),r=-1);let n=this.m_topoGraph.getShape();for(let e=n.getFirstGeometry();e!==G.n;e=n.getNextGeometry(e))e!==t&&e!==s&&i.push(e);i.sort((e,t)=>{let s=n.getFirstPath(e),i=n.getRingArea(s),r=n.getFirstPath(t),a=n.getRingArea(r);return i<a?-1:+(i>a)})}cut(e,t,s,i,r){let n=this.m_topoGraph.getShape().getGeometryType(s),a=this.m_topoGraph.getShape().getGeometryType(i),o=(0,I.u)(n),l=(0,I.u)(a);if(2!==o||1!==l){if(1===o&&1===l)return void new sC(this,e,t,s,i,r).Do();(0,I.d)("")}else this.cutPolygonPolyline_(t,s,i,r)}progress_(e=!1){}isGoodParentage(e){return e>=0&&e<this.m_maskLookup.length&&this.m_maskLookup[e]}normalizeInputGeometry(e){let t=e.getGeometryType();if(t===I.G.enumEnvelope){let t=new G.a({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(t===I.G.enumPoint){let t=new G.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if((0,I.f)(t)){let t=new G.P({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}return t!==I.G.enumMultiPoint&&t!==I.G.enumPolyline&&t!==I.G.enumPolygon&&(0,I.a)("Unexpected geometry type"),e}dissolveNonSimplePolygons(e,t,s,i){(0,I.g)(t>0);let r=new G.E,n=0,a=-1;for(let s=0;s<t;s++)2===e[s].getDimension()&&(-1===a&&(a=s),e[s].isEmpty()||(n++,r.addGeometry(e[s])));return 0===n?((0,I.g)(a>=0),this.normalizeInputGeometry(e[a])):this.planarSimplifyPolygons(r,s,!0,!1,-1,!0)}dissolveMultiPaths_(e,t,s,i,r,n,a){var o,l,h,m,g;let u;(0,I.g)(e>=1&&e<=2),(0,I.g)(i>0);let _=8&n?1:2,p=w.q.constructEmpty(),d=0,c=-1,f=!0;for(let t=0;t<i;t++)if(s[t].getDimension()===e&&(-1===c&&(c=t),!s[t].isEmpty())){c=t,d++;let i=w.q.constructEmpty();if(s[t].queryLooseEnvelope(i),p.mergeEnv3D(i),2===e&&f&&s[t].getGeometryType()===I.G.enumPolygon)if(16&n){let e=[0],i=s[t].getImpl().getIsSimple(0,e),r=this.m_bOGCOutput?5===i:(0,w.i)(i);f&&=r}else{let e=(0,w.h)(s[t],0);f&&=e}}if(d<2&&((0,I.g)(c>=0),0===d||!(16&n)))return this.normalizeInputGeometry(s[c]);if(!f){let e=(0,w.c)(t?null:r,p.getEnvelope2D(),!0);return this.dissolveNonSimplePolygons(s,i,e,n)}let x=s.slice(0,i),P=(0,w.c)(r,p.getEnvelope2D(),!0),E=10*(0,w.e)(P),y=new w.C(0,0);if(a&&(y=(0,w.r)(r,p.getEnvelopeZs(),!0)),1===d&&1===e&&2===_&&!t)return a?((0,I.g)(0),{}):this.m_bOGCOutput?s_(x[c],P,!1,-1,this.m_progressTracker,_,!1):sp(x[c],P,!1,!1,-1,this.m_progressTracker,_,!1);let S=new w.z;S.startConstruction();let C=2===e?3:4,T=0;for(let s=0;s<i;s++){if(x[s].getDimension()!==e||x[s].isEmpty())continue;let i=x[s].getGeometryType();if(i!==I.G.enumEnvelope){if((0,I.f)(i)?(x[s]=this.normalizeInputGeometry(x[s]),i=I.G.enumPolyline):(0,I.g)((0,I.h)(i)),1===e){(0,I.g)(i===I.G.enumPolyline);let e=-1;if(a)(0,I.g)(0,"3d not implemented yet");else{let t=[0];e=x[s].getImpl().getIsSimple(P.total(),t)}if(this.m_bOGCOutput?5!==e:!(0,w.i)(e))if(t)C=-1;else{a?(0,I.g)(0,"3d not implemented yet"):this.m_bOGCOutput?x[s]=s_(x[s],P,!1,-1,this.m_progressTracker,_,!1):x[s]=sp(x[s],P,!1,!1,-1,this.m_progressTracker,_,!1);let e=[0];(0,I.g)((0,w.i)(x[s].getImpl().getIsSimple(P.total(),e)))}}else{(0,I.g)(i===I.G.enumPolygon);let e=[0],t=x[s].getImpl().getIsSimple(0,e);(0,I.g)((0,w.p)(t))}let r=x[s].getImpl();for(let e=0,t=r.getPathCount();e<t;e++){let t=v.Envelope2D.constructEmpty();r.queryLoosePathEnvelope(e,t),t.inflateCoords(E,E),S.addEnvelope(T,t),T++}}else{(0,I.g)(i===I.G.enumEnvelope);let e=v.Envelope2D.constructEmpty();x[s].queryLooseEnvelope(e),e.inflateCoords(E,E),S.addEnvelope(T,e),T++,C=-1}}S.endConstruction();let N=T,D=(0,b.d)(N,-0x7fffffff),V=(0,b.d)(N,-1),F=0;c=-1,T=0;for(let t=0;t<i;t++){if(x[t].getDimension()!==e||(-1===c&&(c=t),x[t].isEmpty()))continue;c=t,F++;let s=x[t].getGeometryType();if((0,I.h)(s))for(let e=0,s=x[t].getPathCount();e<s;e++)V[T]=t,D[T]=-e-1,T++;else(0,I.g)(s===I.G.enumEnvelope),V[T]=t,D[T]=-1,T++}if(F<2&&2===e)return(0,I.g)(c>=0),this.normalizeInputGeometry(x[c]);let H=N;for(;S.next()&&H>0;){this.progress_();let e=S.getHandleA(),t=S.getHandleB(),s=S.getElement(e),i=S.getElement(t);V[s]!==V[i]&&(D[s]<0&&(H--,D[s]=-(D[s]+1)),D[i]<0&&(H--,D[i]=-(D[i]+1)))}let k=new G.E,A=!1,M=0;for(let t=0;t<i;t++){if(x[t].getDimension()!==e||x[t].isEmpty())continue;let s=x[t].getGeometryType(),i=M,r=0,n=0,a=(0,I.h)(s)?x[t]:null;for(let e=i,s=D.length;e<s&&V[e]===t;e++)D[e]>=0&&(r++,n+=a?a.getPathSize(D[e]):(0,I.v)(x[t])),M++;if(n>.95*(0,I.v)(x[t])){k.addGeometry(this.normalizeInputGeometry(x[t]));for(let e=i;e<M;e++)D[e]<0&&(D[e]=-(D[e]+1))}else{if(0===r){A=!0;continue}{A=!0,(0,I.g)((0,I.h)(s)),(0,I.g)(null!=a);let e=new G.a({vd:x[t].getDescription()}),r=new G.P({vd:x[t].getDescription()}),n=s===I.G.enumPolygon?e:r;for(let e=i;e<M;e++)D[e]>=0&&n.addPath(a,D[e],!0);k.addGeometry(n)}}}if(k.getFirstGeometry()!==G.n){let s=t?(0,w.c)(null,p.getEnvelope2D(),!0):P,i=new w.C(0,0);if(a&&(i=t?(0,w.r)(null,p.getEnvelopeZs(),!0):y),2===e&&!(2&n)){k.collapseAllGeometriesToFirst();let e=0,t=null;if(k.hasCurves()&&!k.hasSegmentParentage()){t=new ss;let i=k.getEnvelope2D(this.m_progressTracker);e=se(s.total()),t6(k,t5(s.total(),i),s.total(),12e3,t,null,this.m_progressTracker)}o=k.getFirstGeometry(),l=s.total(),h=this.m_progressTracker,l>0&&ec(k,l,o,!1,h),new ek(h).executeImpl_(k,o),null!==t&&t.stitchCurves(k,G.n,e,!0)}if(a)u=this.planarSimplify3DImpl_(k,s,i,_,!0);else if(2===e)u=this.planarSimplifyPolygons(k,s,2===e,t,-1,!1);else{let e=su();e.ogcRule=this.m_bOGCOutput,e.allCrossRoadsImpassable=!0,e.unsplitBehavior=_,u=this.planarSimplifyPolylines(k,s,t,e,-1)}A||(C=u.getImpl().getIsSimple(s.total(),[0]))}else(0,I.g)(A),(0,I.g)(c>=0),u=2===e?new G.a({vd:x[c].getDescription()}):new G.P({vd:x[c].getDescription()});if(A){let e=0;for(let t=0,s=D.length;t<s;t++){let s=V[t];
1if(!(s<0)&&D[t]<0){let i=x[s].getGeometryType(),r=(0,I.h)(i)?x[s]:null;if(r){let s=-(D[t]+1);e+=r.getPathSize(s)}else e+=4}}u.reserve(u.getPointCount()+e);for(let e=0,t=D.length;e<t;e++){let t=V[e];if(!(t<0)&&D[e]<0){let s=x[t].getGeometryType(),i=(0,I.h)(s)?x[t]:null;if(i){let t=-(D[e]+1);u.addPath(i,t,!0)}else s===I.G.enumEnvelope?u.addEnvelope(x[t],!1):((0,I.g)((0,I.f)(s)),u.addSegment(x[t],!0))}}}let U=0;if(2===e?-1!==C&&(C=3,U=t?0:P.total()):((0,I.g)(1===e),t||-1===C||(U=P.total())),a||u.getImpl().setIsSimple(C,U),!t&&A)if(2===e){if(!a)return(new sN).execute(u,r,!1,this.m_progressTracker);(0,I.g)(0,"3d not yet implemented")}else{let t,s,i,r;1===e&&1!==_&&(u=a?((0,I.g)(0),{}):(m=this.m_bOGCOutput,g=u,t=new sf(this.m_progressTracker),i=(s=new G.E).addGeometry(g),r=t.planarSimplifyNoCrackingAndCluster(m,s,i,_),(0,I.g)(r,"planar_simplify_no_cracking_and_cluster"),s.getGeometry(i))).getImpl().setIsSimple(C,U)}return u}dissolveTopoGraphCommonEdges_(){let e=this.m_topoGraph.createUserIndexForHalfEdges(),t=[];for(let s=this.m_topoGraph.getFirstCluster();s!==G.n;s=this.m_topoGraph.getNextCluster(s)){let i=this.m_topoGraph.getClusterHalfEdge(s),r=i;if(i!==G.n)do{if(this.progress_(),1!==this.m_topoGraph.getHalfEdgeUserIndex(r,e)){let s=this.m_topoGraph.getHalfEdgeTwin(r);this.m_topoGraph.setHalfEdgeUserIndex(s,e,1),this.m_topoGraph.setHalfEdgeUserIndex(r,e,1);let i=this.m_topoGraph.getHalfEdgeFaceParentage(r);if(this.isGoodParentage(i)){let e=this.m_topoGraph.getHalfEdgeFaceParentage(s);this.isGoodParentage(e)&&t.push(r)}}r=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(r))}while(r!==i)}this.m_topoGraph.deleteUserIndexForHalfEdges(e),this.m_topoGraph.deleteEdgesBreakFaces_(t)}chooseVertexByOrder(e,t,s,i){let r=(0,b.j)(),n=G.n;for(let i=this.m_topoGraph.getClusterVertexIterator(e);i!==G.n;i=this.m_topoGraph.incrementVertexIterator(i)){let e=this.m_topoGraph.getVertexFromVertexIterator(i),a=t.getUserIndex(e,s);a>=0&&a<r&&(r=a,n=e)}(0,I.g)(n!==G.n);let a=t.getUserIndex(n,i);return a>0&&(t.setUserIndex(n,i,--a),0===a&&t.setUserIndex(n,s,-1)),n}chooseVertexFromCluster_(e,t){return this.m_topoGraph.getVertexDominantFromCluster(e,t)}chooseVertexFromVertexCluster_(e,t){return this.m_topoGraph.getVertexDominant(e,t)}collectPolygonPathsPreservingFrom_(e,t,s,i,r){let n=this.m_topoGraph.getShape();if(n.getGeometryType(e)!==I.G.enumPolygon)return;let a=n.hasSegmentParentage(),o=new G.S;for(let l=n.getFirstPath(e);l!==G.n;l=n.getNextPath(l)){let e=n.getFirstVertex(l);this.m_topoGraph.getClusterFromVertex(e);let h=this.m_topoGraph.getHalfEdgeFromVertex(e);if(h===G.n)continue;let m=this.m_topoGraph.getHalfEdgeUserIndex(h,s);if(1===m||2===m)continue;let g=this.m_topoGraph.getHalfEdgeFaceParentage(h);if(!this.isGoodParentage(g)){this.m_topoGraph.setHalfEdgeUserIndex(h,s,2);continue}this.m_topoGraph.setHalfEdgeUserIndex(h,s,1);let u=n.insertPath(t,G.n);n.setClosedPath(u,!0);let _=h,p=e,d=this.m_topoGraph.getClusterFromVertex(p),c=1;do{let e,t;this.progress_();let l=this.chooseVertexFromVertexCluster_(p,r),h=n.addVertex(u,l);if(this.m_topoGraph.isHalfEdgeCurve(_)&&(this.m_topoGraph.querySegmentXY(_,o),n.setSegmentToIndex(n.getVertexIndex(h),o.get().clone())),a){let e=this.m_topoGraph.getSegmentParentage(_);n.setSegmentParentageAndBreak(h,e,this.m_topoGraph.isBreakNode(d))}-1!==i&&this.m_topoGraph.setClusterUserIndex(d,i,1),this.m_topoGraph.setHalfEdgeUserIndex(_,s,1),_=this.m_topoGraph.getHalfEdgeNext(_);do t=(e=1===c?n.getNextVertex(p):n.getPrevVertex(p))!==G.n?this.m_topoGraph.getClusterFromVertex(e):G.n;while(t===d);let m=this.m_topoGraph.getHalfEdgeOrigin(_);if(m!==t){do t=(e=1===c?n.getPrevVertex(p):n.getNextVertex(p))!==G.n?this.m_topoGraph.getClusterFromVertex(e):G.n;while(t===d);if(m!==t){t=m;let s=this.m_topoGraph.getClusterVertexIterator(t);e=this.m_topoGraph.getVertexFromVertexIterator(s)}else c=-c}d=t,p=e}while(_!==h)}}topoOperationPolygonPolygonHelper_(e,t,s,i,r,n){this.progress_(!0),e!==G.n&&this.collectPolygonPathsPreservingFrom_(e,s,r,n,i),t!==G.n&&this.collectPolygonPathsPreservingFrom_(t,s,r,n,i);
1let a=new G.S,o=this.m_topoGraph.getShape();o.dbgVerifyCurves();let l=o.hasSegmentParentage();for(let e=this.m_topoGraph.getFirstCluster();e!==G.n;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(t===G.n)continue;let h=t;do{this.progress_();let e=this.m_topoGraph.getHalfEdgeUserIndex(h,r);if(1!==e&&2!==e){let e=this.m_topoGraph.getHalfEdgeFaceParentage(h);if(this.isGoodParentage(e)){let e=o.insertPath(s,G.n);o.setClosedPath(e,!0);let t=h;do{let s=this.m_topoGraph.getHalfEdgeVertexIterator(t),h=G.n;if(s!==G.n)h=this.m_topoGraph.getVertexFromVertexIterator(s);else{let e=this.m_topoGraph.getHalfEdgeVertexIterator(this.m_topoGraph.getHalfEdgeTwin(t));h=this.m_topoGraph.getVertexFromVertexIterator(e),h=o.getNextVertex(h)}let m=this.chooseVertexFromVertexCluster_(h,i),g=o.addVertex(e,m);if(l){let e=this.m_topoGraph.getSegmentParentage(t),s=this.m_topoGraph.getHalfEdgeOrigin(t);o.setSegmentParentageAndBreak(g,e,this.m_topoGraph.isBreakNode(s))}if(this.m_topoGraph.isHalfEdgeCurve(t)&&(this.m_topoGraph.querySegmentXY(t,a),o.setSegmentToIndex(o.getVertexIndex(g),a.get().clone())),this.m_topoGraph.setHalfEdgeUserIndex(t,r,1),-1!==n){let e=this.m_topoGraph.getClusterFromVertex(m);this.m_topoGraph.setClusterUserIndex(e,n,1)}t=this.m_topoGraph.getHalfEdgeNext(t)}while(t!==h)}else this.m_topoGraph.setHalfEdgeUserIndex(h,r,2)}h=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(h))}while(h!==t)}}topoOperationPolygonPolygon_(e,t,s,i=!1){this.dissolveTopoGraphCommonEdges_();let r=this.m_topoGraph.getShape(),n=r.createGeometry(I.G.enumPolygon),a=this.m_topoGraph.createUserIndexForHalfEdges();return this.topoOperationPolygonPolygonHelper_(e,t,n,s,a,-1),this.m_topoGraph.deleteUserIndexForHalfEdges(a),i||ez(r,n,3,this.m_bOGCOutput,G.n,this.m_progressTracker),n}topoOperationPolyline_(e,t){let s=su();return s.allCrossRoadsImpassable=!1,s.ogcRule=t,s.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(G.n,e,!1,s).first}topoOperationMultiPoint_(){let e=this.m_topoGraph.getShape(),t=e.createGeometry(I.G.enumMultiPoint),s=e.insertPath(t,G.n);for(let t=this.m_topoGraph.getFirstCluster();t!==G.n;t=this.m_topoGraph.getNextCluster(t)){let i=this.m_topoGraph.getClusterParentage(t);if(this.isGoodParentage(i)){let i=G.n;for(let s=this.m_topoGraph.getClusterVertexIterator(t);s!==G.n;s=this.m_topoGraph.incrementVertexIterator(s)){let t=this.m_topoGraph.getVertexFromVertexIterator(s);i===G.n&&(i=t);let r=e.getGeometryFromPath(e.getPathFromVertex(t)),n=this.m_topoGraph.getGeometryID(r);if(this.isGoodParentage(n)){i=t;break}}e.addVertex(s,i)}}return t}intersection(e,t){let s=this.m_topoGraph.getShape().getGeometryType(e),i=this.m_topoGraph.getShape().getGeometryType(t),r=(0,I.u)(s),n=(0,I.u)(i),a=this.m_topoGraph.getGeometryID(e),o=this.m_topoGraph.getGeometryID(t);(0,I.g)(a>=0),(0,I.g)(o>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(a|o),this.m_maskLookup[a|o]=!0;let l=G.n;return this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(l=e),2===r&&2===n?this.topoOperationPolygonPolygon_(e,t,l):1===r&&n>0||1===n&&r>0?this.topoOperationPolyline_(l,this.m_bOGCOutput):0===r||0===n?this.topoOperationMultiPoint_():void(0,I.d)("")}topoOperationPolygonPolygonEx(e,t,s){let i=this.m_topoGraph.getShape(),r=i.createGeometry(I.G.enumPolygon),n=i.createGeometry(I.G.enumPolyline),a=i.createGeometry(I.G.enumMultiPoint);this.dissolveTopoGraphCommonEdges_();let o=G.n,l=this.m_topoGraph.createUserIndexForHalfEdges(),h=this.m_topoGraph.createUserIndexForClusters();i.dbgVerifyCurves(),this.topoOperationPolygonPolygonHelper_(e,t,r,s,l,h),i.dbgVerifyCurves();let m=i.hasSegmentParentage(),g=new G.S;for(let e=this.m_topoGraph.getFirstCluster();e!==G.n;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(t===G.n)continue;let r=t;do{let t=this.m_topoGraph.getHalfEdgeUserIndex(r,l),a=this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(r),l),o=t|a;if(2===o){let u=this.m_topoGraph.getHalfEdgeParentage(r);if(this.isGoodParentage(u)){let _=i.insertPath(n,G.n),p=r,d=this.chooseVertexFromCluster_(e,s),c=i.addVertex(_,d);
1if(m){let e=this.m_topoGraph.getSegmentParentage(r),t=this.m_topoGraph.getHalfEdgeOrigin(r);i.setSegmentParentageAndBreak(c,e,this.m_topoGraph.isBreakNode(t))}this.m_topoGraph.isHalfEdgeCurve(r)&&(this.m_topoGraph.querySegmentXY(r,g),i.setSegmentToIndex(i.getVertexIndex(c),g.get().clone())),this.m_topoGraph.setClusterUserIndex(e,h,1);do{this.progress_();let e=this.m_topoGraph.getHalfEdgeTo(p),n=this.chooseVertexFromCluster_(e,s);if(c=i.addVertex(_,n),m){let e=this.m_topoGraph.getSegmentParentage(r),t=this.m_topoGraph.getHalfEdgeOrigin(r);i.setSegmentParentageAndBreak(c,e,this.m_topoGraph.isBreakNode(t))}if(this.m_topoGraph.setHalfEdgeUserIndex(p,l,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),l,1),this.m_topoGraph.setClusterUserIndex(e,h,1),p=this.m_topoGraph.getHalfEdgeNext(p),2!=(o=(t=this.m_topoGraph.getHalfEdgeUserIndex(p,l))|(a=this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),l))))break;if(u=this.m_topoGraph.getHalfEdgeParentage(p),!this.isGoodParentage(u)){this.m_topoGraph.setHalfEdgeUserIndex(p,l,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),l,1);break}this.m_topoGraph.isHalfEdgeCurve(r)&&p!==r&&(this.m_topoGraph.querySegmentXY(r,g),i.setSegmentToIndex(i.getVertexIndex(c),g.get().clone()))}while(p!==r)}else this.m_topoGraph.setHalfEdgeUserIndex(r,l,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(r),l,1)}r=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(r))}while(r!==t)}for(let e=this.m_topoGraph.getFirstCluster();e!==G.n;e=this.m_topoGraph.getNextCluster(e)){if(this.progress_(),1===this.m_topoGraph.getClusterUserIndex(e,h))continue;let t=this.m_topoGraph.getClusterParentage(e);if(this.isGoodParentage(t)){o===G.n&&(o=i.insertPath(a,G.n));let t=this.m_topoGraph.getClusterVertexIterator(e),r=G.n;if(t!==G.n){r=this.m_topoGraph.getVertexFromVertexIterator(t);let e=this.chooseVertexFromVertexCluster_(r,s);i.addVertex(o,e)}}}this.m_topoGraph.deleteUserIndexForClusters(h),this.m_topoGraph.deleteUserIndexForHalfEdges(l),i.dbgVerifyCurves(),ez(i,r,3,this.m_bOGCOutput,G.n,this.m_progressTracker);let u=[G.n,G.n,G.n];return u[0]=a,u[1]=n,u[2]=r,u}topoOperationPolylinePolylineOrPolygonEx(e,t){let s=su();return s.allCrossRoadsImpassable=!1,s.ogcRule=t,s.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(G.n,e,!0,s)}topoOperationMultiPoint(){let e=this.m_topoGraph.getShape(),t=e.createGeometry(I.G.enumMultiPoint),s=e.insertPath(t,G.n);for(let t=this.m_topoGraph.getFirstCluster();t!==G.n;t=this.m_topoGraph.getNextCluster(t)){let i=this.m_topoGraph.getClusterParentage(t);if(this.isGoodParentage(i)){let i=G.n;for(let s=this.m_topoGraph.getClusterVertexIterator(t);s!==G.n;s=this.m_topoGraph.incrementVertexIterator(s)){let t=this.m_topoGraph.getVertexFromVertexIterator(s);i===G.n&&(i=t);let r=e.getGeometryFromPath(e.getPathFromVertex(t)),n=this.m_topoGraph.getGeometryID(r);if(this.isGoodParentage(n)){i=t;break}}e.addVertex(s,i)}}return t}intersectionEx(e,t){let s=this.m_topoGraph.getShape().getGeometryType(e),i=this.m_topoGraph.getShape().getGeometryType(t),r=sm(s),n=sm(i),a=this.m_topoGraph.getGeometryID(e),o=this.m_topoGraph.getGeometryID(t);(0,I.g)(a>=0),(0,I.g)(o>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(a|o),this.m_maskLookup[a|o]=!0;let l=G.n;if(this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(l=e),2===r&&2===n)return this.topoOperationPolygonPolygonEx(e,t,l);if(1===r&&n>0||1===n&&r>0){let{first:e,second:t}=this.topoOperationPolylinePolylineOrPolygonEx(l,this.m_bOGCOutput);return[t,e]}if(0===r||0===n){let e=[];return e.push(this.topoOperationMultiPoint()),e}(0,I.d)("")}getCombinedHalfEdgeParentage(e){return this.m_topoGraph.getHalfEdgeParentage(e)|this.m_topoGraph.getHalfEdgeFaceParentage(e)|this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e))}prevailingDirection(e,t){let s=this.getCombinedHalfEdgeParentage(t),i=this.m_topoGraph.getHalfEdgeOrigin(t),r=this.m_topoGraph.getHalfEdgeTo(t),n=0,a=0;
1for(let o=this.m_topoGraph.getClusterVertexIterator(i);o!==G.n;o=this.m_topoGraph.incrementVertexIterator(o)){let i=this.m_topoGraph.getVertexFromVertexIterator(o),l=e.getPathFromVertex(i),h=e.getGeometryFromPath(l),m=this.m_topoGraph.getGeometryID(h),g=e.getFirstVertex(l),u=0!=(m&s);u&&g===i&&(this.m_fromEdgeForPolylines=t);let _=e.getNextVertex(i);if(_!==G.n&&this.m_topoGraph.getClusterFromVertex(_)===r){if(n++,u){if(this.m_fromEdgeForPolylines===G.n&&g===_){let e=this.m_topoGraph.getHalfEdgeNext(t);this.isGoodParentage(this.getCombinedHalfEdgeParentage(e))&&(this.m_fromEdgeForPolylines=e)}a++}}else{let s=e.getPrevVertex(i);if(s!==G.n&&this.m_topoGraph.getClusterFromVertex(s)===r&&(n--,u)){if(this.m_fromEdgeForPolylines===G.n&&g===s){let e=this.m_topoGraph.getHalfEdgeNext(t);this.isGoodParentage(this.getCombinedHalfEdgeParentage(e))&&(this.m_fromEdgeForPolylines=e)}a--}}}return this.m_topoGraph.queryXY(i,this.m_dummyPt1),this.m_topoGraph.queryXY(r,this.m_dummyPt2),(0!==a?a:n)*b.P.distance(this.m_dummyPt1,this.m_dummyPt2)}tryMoveThroughCrossroadBackwards(e,t){let s=this.m_topoGraph.getHalfEdgePrev(e),i=this.m_topoGraph.getHalfEdgeTwin(s);if(!t){if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(e)))return G.n;let t=this.m_topoGraph.getHalfEdgeTwin(e);if(i===this.m_topoGraph.getHalfEdgeNext(t))return s}let r=i,n=G.n;for(;r!==e;){let e=this.getCombinedHalfEdgeParentage(r);if(this.isGoodParentage(e)){if(n!==G.n)return G.n;n=this.m_topoGraph.getHalfEdgeTwin(r)}r=this.m_topoGraph.getHalfEdgeTwin(this.m_topoGraph.getHalfEdgePrev(r))}return n}tryMoveThroughCrossroadForward(e,t){let s=this.m_topoGraph.getHalfEdgeNext(e),i=this.m_topoGraph.getHalfEdgeTwin(s);if(!t){let t=this.m_topoGraph.getHalfEdgeTwin(e);if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(t)))return G.n;if(i===this.m_topoGraph.getHalfEdgePrev(t))return s}let r=i,n=G.n;for(;r!==e;){let e=this.getCombinedHalfEdgeParentage(r);if(this.isGoodParentage(e)){if(n!==G.n)return G.n;n=this.m_topoGraph.getHalfEdgeTwin(r)}r=this.m_topoGraph.getHalfEdgeTwin(this.m_topoGraph.getHalfEdgeNext(r))}return n}isOnALoop(e,t){let s=e,i=2*this.m_topoGraph.getShape().getTotalPointCount()+10;for(let r=0;r<i;r++){if(1===this.m_topoGraph.getHalfEdgeUserIndex(s,t))return!1;let i=this.m_topoGraph.getHalfEdgeNext(s);if(i===this.m_topoGraph.getHalfEdgeTwin(s))return!1;if((s=i)===e)return!0}(0,I.d)("is_on_a_loop_")}restorePolylineParts(e,t,s,i,r,n,a,o,l,h){let m;(0,I.g)(r===G.n&&n>=0&&a>=0||-1===n&&-1===a),(0,I.g)(-1===o&&1!==h.unsplitBehavior||-1!==o&&1===h.unsplitBehavior);let g=h.ogcRule,u=h.allCrossRoadsImpassable,_=1===h.unsplitBehavior,p=0===h.unsplitBehavior,d=this.m_topoGraph.getShape(),c=d.hasSegmentParentage(),f=e,x=this.m_topoGraph.getHalfEdgeTwin(f),P=new G.S;this.m_fromEdgeForPolylines=G.n;let E=this.prevailingDirection(d,f),y=f,S=G.n,C=!1,v=!1,w=!1;if(!_)for(;;){let t=this.m_topoGraph.getHalfEdgePrev(f);if(t===x){w=!0;break}let i=this.m_topoGraph.getHalfEdgeNext(x);if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(i))){C=!0;break}if(this.m_topoGraph.getHalfEdgeTwin(t)!==i){if(u||(f=this.tryMoveThroughCrossroadBackwards(f,!0))===G.n){C=!0;break}x=this.m_topoGraph.getHalfEdgeTwin(f)}else f=t,x=i;if(1===this.m_topoGraph.getHalfEdgeUserIndex(f,s)){w=!0;break}if(f===e){S=e,v=!0;break}let r=this.getCombinedHalfEdgeParentage(f);if(!this.isGoodParentage(r))break;y=f,E+=this.prevailingDirection(d,f)}if(S===G.n){for(f=e,x=this.m_topoGraph.getHalfEdgeTwin(f),S=f;;){let e=this.m_topoGraph.getHalfEdgeNext(f),t=this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(e));if(t){C=!0;break}if(e===x){w=!0;break}if(-1!==o){let e=this.m_topoGraph.getHalfEdgeOrigin(x);if(1===this.m_topoGraph.getClusterUserIndex(e,o)){C=!0;break}}let i=this.m_topoGraph.getHalfEdgePrev(x);if(this.m_topoGraph.getHalfEdgeTwin(e)!==i){if(t||u||(f=this.tryMoveThroughCrossroadForward(f,!0))===G.n){C=!0;break}x=this.m_topoGraph.getHalfEdgeTwin(f)}else f=e,x=i;if(1===this.m_topoGraph.getHalfEdgeUserIndex(f,s)){w=!0;break}let r=this.getCombinedHalfEdgeParentage(f);if(!this.isGoodParentage(r))break;S=f,E+=this.prevailingDirection(d,f)}
1let t=this.m_topoGraph.getHalfEdgeOrigin(y);v=this.m_topoGraph.getHalfEdgeTo(S)===t}else if(this.m_fromEdgeForPolylines!==G.n){y=e,S=this.tryMoveThroughCrossroadBackwards(y,!1),(0,I.g)(S!==G.n);let t=this.m_topoGraph.getHalfEdgeTwin(y);this.m_topoGraph.getHalfEdgeNext(t)}let T=v;v||w||l&&((T=this.isOnALoop(e,s))||(T=this.isOnALoop(x,s)));let N=E>=0,D=!1;T&&C&&(v?(D=g,N&&(D||_||p)&&y!==e&&((0,I.g)(!_),y=e,D=!1)):(_||N&&p)&&(y=e));let V=0;for(f=y;x=this.m_topoGraph.getHalfEdgeTwin(f),this.m_topoGraph.setHalfEdgeUserIndex(f,s,1),this.m_topoGraph.setHalfEdgeUserIndex(x,s,1),V++,f!==S;)f=u?this.m_topoGraph.getHalfEdgeNext(f):this.tryMoveThroughCrossroadForward(f,!1);N||(S=(0,b.c)(y,y=S),S=this.m_topoGraph.getHalfEdgeTwin(S),y=this.m_topoGraph.getHalfEdgeTwin(y));let F=d.insertPath(t,G.n);f=y;let H=this.m_topoGraph.getHalfEdgeOrigin(y);m=-1!==n?this.chooseVertexByOrder(H,d,n,a):this.chooseVertexFromCluster_(H,r),this.m_topoGraph.isStrongPathNode(H)&&d.setStrongPathStart(F,!0);let k=d.addVertex(F,m),A=k;-1!==i&&this.m_topoGraph.setClusterUserIndex(H,i,1);let M=0,U=D?Math.trunc((V+1)/2):-1,q=G.n,B=!0,R=G.n;for(;;){let e;if(c){let e=this.m_topoGraph.getSegmentParentage(f),t=this.m_topoGraph.getHalfEdgeOrigin(f);d.setSegmentParentageAndBreak(A,e,B||this.m_topoGraph.isBreakNode(t))}B=!1,this.m_topoGraph.isHalfEdgeCurve(f)&&(this.m_topoGraph.querySegmentXY(f,P),d.setSegmentToIndex(d.getVertexIndex(A),P.get().clone())),q!==G.n&&-1!==a&&d.addToUserIndex(q,a,-1);let s=u?this.m_topoGraph.getHalfEdgeNext(f):this.tryMoveThroughCrossroadForward(f,!1),o=this.m_topoGraph.getHalfEdgeTo(f);if(e=-1!==n?this.chooseVertexByOrder(o,d,n,a):this.chooseVertexFromCluster_(o,r),k=d.addVertex(F,e),R=o,-1!==i&&this.m_topoGraph.setClusterUserIndex(o,i,1),c&&this.m_topoGraph.isBreakNode(o)&&d.setSegmentParentageBreakVertex(k,!0),q=e,M++,D&&M===U&&(F=d.insertPath(t,G.n),k=d.addVertex(F,e),B=!0,-1!==a&&d.addToUserIndex(e,a,-1),q=G.n),f===S)break;f=s,A=k}R!==G.n&&this.m_topoGraph.isStrongPathNode(R)&&d.setStrongPathEnd(F,!0)}topoOperationPolylineSimplify_(e,t){return this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,G.n,!1,t).first}topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,t,s,i){(0,I.g)(t===G.n||e===G.n);let r=this.m_topoGraph.getShape(),n=t=>t=e===G.n?t===G.n?r.getFirstGeometry():r.getNextGeometry(t):t===G.n?e:G.n,a=r.createGeometry(I.G.enumPolyline),o=-1;s&&(o=this.m_topoGraph.createUserIndexForClusters());let l=this.m_topoGraph.createUserIndexForHalfEdges(),h=t===G.n?r.createUserIndex():-1,m=t===G.n?r.createUserIndex():-1,g=-1;if(1===i.unsplitBehavior){g=this.m_topoGraph.createUserIndexForClusters();for(let e=n(G.n);e!==G.n;e=n(e))for(let t=r.getFirstPath(e);t!==G.n;t=r.getNextPath(t)){{let e=r.getFirstVertex(t),s=this.m_topoGraph.getClusterFromVertex(e);this.m_topoGraph.setClusterUserIndex(s,g,1)}if(!r.isClosedPath(t)){let e=r.getLastVertex(t),s=this.m_topoGraph.getClusterFromVertex(e);this.m_topoGraph.setClusterUserIndex(s,g,1)}}}if(t===G.n){let e=0;for(let t=n(G.n);t!==G.n;t=n(t))for(let s=r.getFirstPath(t);s!==G.n;s=r.getNextPath(s))if(r.isClosedPath(s)){let t=r.getFirstVertex(s);for(let i=0,n=r.getPathSize(s);i<n;i++,t=r.getNextVertex(t))r.setUserIndex(t,h,e++),r.setUserIndex(t,m,2)}else{let t=r.getFirstVertex(s);r.setUserIndex(t,h,e++),r.setUserIndex(t,m,1);let i=r.getNextVertex(t);for(let t=1,n=r.getPathSize(s)-1;t<n;++t)r.setUserIndex(i,h,e++),r.setUserIndex(i,m,2),i=r.getNextVertex(i);r.setUserIndex(i,h,e++),r.setUserIndex(i,m,1)}}for(let e=n(G.n);e!==G.n;e=n(e))for(let s=r.getFirstPath(e);s!==G.n;s=r.getNextPath(s)){let e=r.getFirstVertex(s);for(let n=0,u=r.getPathSize(s);n<u;n++,e=r.getNextVertex(e)){let s=this.m_topoGraph.getHalfEdgeFromVertex(e);if(s===G.n||1===this.m_topoGraph.getHalfEdgeUserIndex(s,l))continue;let r=this.getCombinedHalfEdgeParentage(s);if(this.isGoodParentage(r)){let e=0===n;this.restorePolylineParts(s,a,l,o,t,h,m,g,e,i)}}}let u=G.n;if(s){u=r.createGeometry(I.G.enumMultiPoint);let e=G.n;for(let s=this.m_topoGraph.getFirstCluster();s!==G.n;s=this.m_topoGraph.getNextCluster(s))if(this.progress_(),1!==this.m_topoGra
1ph.getClusterUserIndex(s,o)){let i=this.m_topoGraph.getClusterParentage(s);if(this.isGoodParentage(i)){e===G.n&&(e=r.insertPath(u,G.n));let i=this.m_topoGraph.getClusterVertexIterator(s);if(i!==G.n){let n;this.m_topoGraph.getVertexFromVertexIterator(i),n=-1!==h?this.chooseVertexByOrder(s,r,h,m):this.chooseVertexFromCluster_(s,t),r.addVertex(e,n)}}}}return -1!==m&&r.removeUserIndex(m),-1!==h&&r.removeUserIndex(h),-1!==o&&r.removeUserIndex(o),this.m_topoGraph.deleteUserIndexForHalfEdges(l),(0,b.l)(a,u)}difference(e,t){let s=this.m_topoGraph.getShape().getGeometryType(e),i=this.m_topoGraph.getShape().getGeometryType(t),r=(0,I.u)(s),n=(0,I.u)(i);if(r>n)return e;let a=this.m_topoGraph.getGeometryID(e),o=this.m_topoGraph.getGeometryID(t);if(this.m_maskLookup.length=0,this.m_maskLookup.length=1+(a|o),this.m_maskLookup[a]=!0,2===r&&2===n){let s=G.n;return this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(s=e),this.topoOperationPolygonPolygon_(e,t,s)}if(1===r&&2===n){let t=su();return t.allCrossRoadsImpassable=!1,t.ogcRule=this.m_bOGCOutput,t.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,G.n,!1,t).first}if(1===r&&1===n){let t=su();return t.allCrossRoadsImpassable=!0,t.ogcRule=this.m_bOGCOutput,t.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,G.n,!1,t).first}if(0===r)return this.topoOperationMultiPoint_();(0,I.d)("")}symmetricDifference(e,t){let s=this.m_topoGraph.getShape().getGeometryType(e),i=this.m_topoGraph.getShape().getGeometryType(t),r=sm(s),n=sm(i),a=this.m_topoGraph.getGeometryID(e),o=this.m_topoGraph.getGeometryID(t);return(0,I.g)(a>=0),(0,I.g)(o>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(a|o),this.m_maskLookup[a]=!0,this.m_maskLookup[a]=!0,this.m_maskLookup[o]=!0,2===r&&2===n?this.topoOperationPolygonPolygon_(e,t,G.n):1===r&&1===n?this.topoOperationPolyline_(G.n,this.m_bOGCOutput):0===r&&0===n?this.topoOperationMultiPoint():void(0,I.d)("")}planarSimplifyNoCrackingAndCluster(e,t,s,i){this.m_bOGCOutput=e,this.m_topoGraph=new em;let r=t.getFillRule(s),n=t.getGeometryType(s);if(1!==r||n===I.G.enumMultiPoint?this.m_topoGraph.setAndSimplifyEditShapeAlternate(t,s,this.m_progressTracker):this.m_topoGraph.setAndSimplifyEditShapeWinding(t,s,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return!1;this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let a=this.m_topoGraph.getGeometryID(s);if((0,I.g)(a>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=a+1,this.m_maskLookup[a]=!0,t.getGeometryType(s)===I.G.enumPolygon||1===r&&t.getGeometryType(s)!==I.G.enumMultiPoint){t.setFillRule(s,0);let n=this.topoOperationPolygonPolygon_(s,G.n,G.n);if(t.swapGeometry(n,s),t.removeGeometry(n),1===r&&this.m_bOGCOutput)return this.planarSimplifyNoCrackingAndCluster(e,t,s,i)}else if(t.getGeometryType(s)===I.G.enumPolyline){let e=su();e.ogcRule=this.m_bOGCOutput,e.allCrossRoadsImpassable=!0,e.unsplitBehavior=i;let r=this.topoOperationPolylineSimplify_(t.getFirstGeometry(),e);t.swapGeometry(r,s),t.removeGeometry(r)}else if(t.getGeometryType(s)===I.G.enumMultiPoint){let e=this.topoOperationMultiPoint_();t.swapGeometry(e,s),t.removeGeometry(e)}else(0,I.d)("");return!0}unsplitPolylineExact(e){return(0,I.g)(0),new G.P}planarSimplifyPolylines(e,t,s,i,r){for(let t=e.getFirstGeometry();t!==G.n;t=e.getNextGeometry(t)){let s=e.getGeometryType(t);(0,I.g)(s===I.G.enumPolyline)}let n=0,a=0,o=null;if(e.hasCurves()&&!e.hasSegmentParentage()){o=new ss;let s=e.getEnvelope2D(this.m_progressTracker);a=se(t.total());let i=t5(t.total(),s);n=st(i,a),t6(e,i,t.total(),12e3,o,null,this.m_progressTracker)}{var l;let s=(l=t.add(n),(0,w.e)(l));e.filterClosePoints(s,!1,!1,!1,G.n)}if(this.m_topoGraph=new em,4!==r&&5!==r)if(null===o&&s){let i=new eF(this.m_progressTracker,!1);i.sweepVertical(e,t.total()),i.hadComplications()?(sr(e,t,this.m_progressTracker,!0,!1),s=!1):this.m_topoGraph.setCheckDirtyPlanesweepTolerance(t.total())}else sr(e,t.add(n),this.m_progressTracker,!0,!1),s=!1;else s=!1;e.removeSelection(),e.collapseAllGeometriesToFirst();let h=e.getFirstGeometry();
1if(this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,h,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,I.g)(s&&null===o),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyPolylines(e,t,!1,i,-1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let m=this.m_topoGraph.getGeometryID(h);(0,I.g)(m>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=m+1,this.m_maskLookup[m]=!0;let g=this.topoOperationPolylineSimplify_(e.getFirstGeometry(),i);null!==o&&o.stitchCurves(e,g,a,!0);let u=e.getGeometry(g);return s||u.getImpl().setIsSimple(4,t.total()),u}planarSimplifyMultiPoints(e,t,s,i){for(let t=e.getFirstGeometry();t!==G.n;t=e.getNextGeometry(t)){let s=e.getGeometryType(t);(0,I.g)(s===I.G.enumMultiPoint)}this.m_topoGraph=new em,4!==i&&5!==i&&sr(e,t,this.m_progressTracker,!0,!1),s=!1,e.removeSelection(),e.collapseAllGeometriesToFirst();let r=e.getFirstGeometry();if(this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,r,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,I.g)(s),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyMultiPoints(e,t,!1,-1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let n=this.m_topoGraph.getGeometryID(r);(0,I.g)(n>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=n+1,this.m_maskLookup[n]=!0;let a=this.topoOperationMultiPoint(),o=e.getGeometry(a);return s||o.getImpl().setIsSimple(4,t.total()),o}planarSimplifyPolygons(e,t,s,i,r,n){for(let t=e.getFirstGeometry();t!==G.n;t=e.getNextGeometry(t)){let i=e.getGeometryType(t);(0,I.g)(i===I.G.enumPolygon||i===I.G.enumPolyline&&s)}let a=0,o=0,l=null;if(e.hasCurves()&&!e.hasSegmentParentage()){l=new ss;let s=e.getEnvelope2D(this.m_progressTracker);o=se(t.total());let i=t5(t.total(),s);a=st(i,o),t6(e,i,t.total(),12e3,l,null,this.m_progressTracker)}if(n){sr(e,t.add(a),this.m_progressTracker,!0,!1);for(let t=e.getFirstGeometry();t!==G.n;t=e.getNextGeometry(t))e.getGeometryType(t)===I.G.enumPolygon&&ez(e,t,-1,!1,G.n,this.m_progressTracker)}if(this.m_topoGraph=new em,n||4===r||5===r)i=!1;else if(null===l&&i){let s=new eF(this.m_progressTracker,!1);s.sweepVertical(e,t.total()),s.hadComplications()?(sr(e,t,this.m_progressTracker,!0,!1),i=!1):this.m_topoGraph.setCheckDirtyPlanesweepTolerance(t.total())}else sr(e,t.add(a),this.m_progressTracker,!0,!1),i=!1;e.removeSelection(),e.collapseAllGeometriesToFirst();let h=e.getFirstGeometry();if(s?this.m_topoGraph.setAndSimplifyEditShapeWinding(e,h,this.m_progressTracker):this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,h,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,I.g)(i&&null===l),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyPolygons(e,t,s,!1,-1,!1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let m=this.m_topoGraph.getGeometryID(h);(0,I.g)(m>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=m+1,this.m_maskLookup[m]=!0,e.setFillRule(h,0);let g=this.m_bOGCOutput&&s,u=this.topoOperationPolygonPolygon_(h,G.n,G.n,g);g&&(this.m_topoGraph.removeShape(),this.m_topoGraph=null,e.removeGeometry(h),this.m_topoGraph=new em,this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,u,this.m_progressTracker),u=this.topoOperationPolygonPolygon_(u,G.n,G.n,!1)),null!==l&&l.stitchCurves(e,u,o,!0);let _=e.getGeometry(u);return _.setFillRule(0),i?_.getImpl().setIsSimple(3,0):(_.getImpl().setIsSimple(4,t.total()),_.getImpl().updateOGCFlagsProtected()),_}planarSimplify3DImpl_(e,t,s,i,r){return(0,I.g)(0),{}}planarSimplifyImpl_(e,t,s,i,r,n,a,o){if(e.isEmpty())return e.clone();let l=e.getGeometryType(),h=new G.E,m=h.addGeometry(e);if((0,w.p)(r)&&l===I.G.enumPolygon&&(s=!1,h.setFillRule(m,0)),o&&(e.hasAttribute(1)&&h.replaceNaNs(1,0),h.removeNaNVertices()),l===I.G.enumPolygon||l===I.G.enumPolyline&&s)return this.planarSimplifyPolygons(h,t,s,i,r,!1);if(l===G.P.type){let e=su();return e.allCrossRoadsImpassable=!0,e.ogcRule=this.m_bOGCOutput,e.unsplitBehavior=a,this.planarSimplifyPolylines(h,t,i,e,r)}if(l===I.G.enumMultiPoint)return this.planarSimplifyMultiPoints(h,t,i,r);(0,I.d)("what else?")}}function sx(e,t,s,i){if(e.isEmpty())return e.createInstance();if(t.isEmpty())return i?e.createInstance():new w.P({copy:e});let r=[new b.P],n=[0],a=2===t.getDimension();return 1!==t.getDimension()&&2!==t.getDimension()&&(0,I.d)(""),r[0]=e.getXY(),a?t0(t,r,1,s.total(),n):t1(t,r,1,s.total(),n),0===n[0]?e.createInstance():e}function sP(e,t,s,i){let r=e.createInstance(),n=(0,b.m)(b.P,100),a=Array(100),o=e.getPointCount(),l=!0,h=2===t.getDimension();1!==t.getDimension()&&2!==t.getDimension()&&(0,I.d)("");for(let i=0;i<o;){let o=e.queryCoordinates(n,n.length,i,-1)-i;h?t0(t,n,o,s.total(),a):t1(t,n,o,s.total(),a);let m=0;for(let t=0;t<o;t++)0===a[t]&&(l&&(l=!1,r.addPoints(e,0,i)),m!==t&&r.addPoints(e,i+m,i+t),m=t+1);l||m===o||r.addPoints(e,i+m,i+o),i+=o}return l?e:r}function sE(e,t,s,i){let r=e.getGeometryType();if(r===I.G.enumEnvelope){let t=new G.a({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(r===I.G.enumPoint&&("|"===i||"^"===i)){let t=new G.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if(r===I.G.enumLine){let t=new G.P({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}if(r===I.G.enumMultiPoint&&"-"===i&&t.getGeometryType()===I.G.enumPoint||r===I.G.enumMultiPoint&&"&"===i&&t.getGeometryType()===I.G.enumPoint){let t=new w.P({vd:e.getDescription()});return e.isEmpty()||e.getPointByVal(0,t),t}return e}function sy(e){let t=e.getGeometryType();if(t===I.G.enumEnvelope){let t=new G.a({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(t===I.G.enumPoint){let t=new G.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if(sh(t)){let t=new G.P({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}return t!==I.G.enumMultiPoint&&t!==I.G.enumPolyline&&t!==I.G.enumPolygon&&(0,I.a)("Unexpected geometry type"),e}function sS(e,t,s,i){let r=s===G.n?e.getClusterHalfEdge(t):s,n=r;(0,I.g)(e.getHalfEdgeOrigin(r)===t);do i(n),n=e.getHalfEdgeNext(e.getHalfEdgeTwin(n));while(n!==r)}class sC{constructor(e,t,s,i,r,n){this.m_rParent=e,this.m_rTopoGraph=e.m_topoGra
1ph,this.m_rShape=this.m_rTopoGraph.getShape(),this.m_IDCuttee=this.m_rTopoGraph.getGeometryID(i),this.m_IDCutter=this.m_rTopoGraph.getGeometryID(r),this.m_IDBoth=this.m_IDCuttee|this.m_IDCutter,this.m_bConsiderTouch=t,this.m_sideIndex=s,this.m_cuttee=i,this.m_cutter=r,this.m_rCutHandles=n,this.m_cutteeBreadcrumbsIndex=this.m_rShape.createUserIndexUninitialized(),this.m_clusterParentageIndex=this.m_rShape.createUserIndexUninitialized();for(let e=this.m_rShape.getFirstPath(this.m_cuttee);e!==G.n;e=this.m_rShape.getNextPath(e)){let t=0;const s=this.m_rShape.getPathSize(e);for(let i=this.m_rShape.getFirstVertex(e);t<s;t++,i=this.m_rShape.getNextVertex(i))this.m_rShape.setUserIndex(i,this.m_clusterParentageIndex,this.m_rTopoGraph.getClusterParentage(this.m_rTopoGraph.getClusterFromVertex(i)))}}Do(){this.cutPolylinePolyline_(),this.m_rShape.removeUserIndex(this.m_cutteeBreadcrumbsIndex),this.m_rShape.removeUserIndex(this.m_clusterParentageIndex)}setTbd(e){return 8|e}classifyStandardCut(e,t,s,i){let r=this.m_rShape.getPrevVertex(e),n=this.m_rShape.getNextVertex(e),a=r===G.n?G.n:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(r)),o=n===G.n?G.n:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(n)),l=this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(s)),h=this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(i)),m=1,g=32,u=32;if(sS(this.m_rTopoGraph,t,h,e=>{e===l&&(m=2),e===a&&(g=m),e===o&&(u=m)}),this.m_bConsiderTouch)32!==g&&this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex)|g),32!==u&&this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|u);else{if(32===g||32===u||g===u&&a!==l&&a!==h&&o!==l&&o!==h)return 1;this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex)|g),this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|u)}return 0}classifyTouchCut(e,t,s,i){let r=this.m_rShape.getPrevVertex(e),n=this.m_rShape.getNextVertex(e),a=r===G.n?G.n:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(r)),o=n===G.n?G.n:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(n)),l=s===G.n?G.n:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(s)),h=i===G.n?G.n:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(i));if(!this.m_bConsiderTouch){let t;return(t=l===a||h===a)?this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))):(t=l===o||h===o)&&this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex))),+!t}if(a===G.n)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(o===G.n)return this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex))),0;if(a===o)return this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex))),this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(h!==G.n){if(a===h)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(o===h)return this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex))),0;let s=1;sS(this.m_rTopoGraph,t,h,t=>{if(t===a){let e=this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex)|s;this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,e),s=2}else if(t===o){let t=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|s;this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,t),s=2}}
1)}else{if(a===l)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(o===l)return this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex))),0;let s=2;sS(this.m_rTopoGraph,t,l,t=>{if(t===a){let e=this.m_rShape.getUserIndex(r,this.m_cutteeBreadcrumbsIndex)|s;this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,e),s=1}else if(t===o){let t=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|s;this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,t),s=1}})}return 0}classifyCutVertex(e,t){let s=0,i=0;for(let r=this.m_rTopoGraph.getClusterVertexIterator(t);r!==G.n;r=this.m_rTopoGraph.incrementVertexIterator(r)){let n=this.m_rTopoGraph.getVertexFromVertexIterator(r);if(this.m_rShape.getGeometryFromVertex(n)===this.m_cutter){i++;let r=this.m_rShape.getPrevVertex(n),a=this.m_rShape.getNextVertex(n);s+=r===G.n||a===G.n?this.classifyTouchCut(e,t,r,a):this.classifyStandardCut(e,t,r,a)}}i&&s===i&&!this.m_bConsiderTouch&&this.m_rShape.setUserIndex(e,this.m_clusterParentageIndex,this.m_IDCuttee)}cutPolylinePolyline_(){this.m_rShape.getGeometryType(this.m_cuttee),this.m_rShape.getGeometryType(this.m_cutter),this.m_rParent.m_maskLookup.length=0,this.m_rParent.m_maskLookup.length=this.m_IDBoth+1,this.m_rParent.m_maskLookup[this.m_IDBoth]=!0;for(let e=this.m_rShape.getFirstPath(this.m_cuttee);e!==G.n;e=this.m_rShape.getNextPath(e)){let t=this.m_rShape.getPathSize(e),s=this.m_rShape.getFirstVertex(e);for(let e=0;e<t;++e,s=this.m_rShape.getNextVertex(s))this.m_rShape.setUserIndex(s,this.m_cutteeBreadcrumbsIndex,0);s=this.m_rShape.getFirstVertex(e);for(let e=0;e<t;++e,s=this.m_rShape.getNextVertex(s)){let e=this.m_rTopoGraph.getClusterFromVertex(s);this.m_rTopoGraph.getClusterParentage(e)===this.m_IDBoth&&this.classifyCutVertex(s,e)}}let e=(e,t)=>{let s=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex),i=this.m_rTopoGraph.getHalfEdgeConnector(this.m_rTopoGraph.getClusterFromVertex(e),this.m_rTopoGraph.getClusterFromVertex(t));return(this.m_rTopoGraph.getHalfEdgeParentage(i)&this.m_IDBoth)===this.m_IDBoth&&(s|=4),s};for(let t=this.m_rShape.getFirstPath(this.m_cuttee);t!==G.n;t=this.m_rShape.getNextPath(t)){let s=this.m_rShape.getFirstVertex(t),i=this.m_rShape.isClosedPath(t),r=this.m_rShape.getPathSize(t)+ +!!i,n=1,a=32;for(let t=this.m_rShape.getNextVertex(s);n<r;++n,s=t,t=this.m_rShape.getNextVertex(t)){let i=e(s,t);this.m_rShape.getUserIndex(s,this.m_clusterParentageIndex)===this.m_IDBoth&&(a=i),32!==a&&this.m_rShape.setUserIndex(s,this.m_cutteeBreadcrumbsIndex,a|i)}s=this.m_rShape.getLastVertex(t);let o=32;n=1;for(let t=this.m_rShape.getPrevVertex(s);n<r;++n,s=t,t=this.m_rShape.getPrevVertex(t)){let i=e(t,s);this.m_rShape.getUserIndex(s,this.m_clusterParentageIndex)===this.m_IDBoth&&(o=i),32!==o&&this.m_rShape.setUserIndex(t,this.m_cutteeBreadcrumbsIndex,o|i)}}let t=G.n,s=G.n,i=32,r=this.m_rShape.hasSegmentParentage(),n=new G.S;for(let e=this.m_rShape.getFirstPath(this.m_cuttee);e!==G.n;e=this.m_rShape.getNextPath(e)){let a=this.m_rShape.isClosedPath(e),o=this.m_rShape.getPathSize(e)+ +!!a,l=1,h=this.m_rShape.getFirstVertex(e),m=G.n,g=!0;for(let e=this.m_rShape.getNextVertex(h);l<o;++l,e=this.m_rShape.getNextVertex(e)){let a=this.m_rShape.getUserIndex(h,this.m_cutteeBreadcrumbsIndex);8===a?a=3:4&(a&=-9)?a=4:3&~a||(a=3),a!==i?(t!==G.n&&(m=this.m_rShape.addVertex(s,h),r&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(m,!0),this.m_rCutHandles.push(t),this.m_rShape.setGeometryUserIndex(t,this.m_sideIndex,i)),t=this.m_rShape.createGeometry(I.G.enumPolyline),s=this.m_rShape.insertPath(t,G.n),i=a,g=!0):this.m_rShape.getUserIndex(h,this.m_clusterParentageIndex)===this.m_IDBoth&&4!==a&&(m=this.m_rShape.addVertex(s,h),r&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(m,!0),s=this.m_rShape.insertPath(t,G.n),g=!0),m=this.m_rShape.addVertex(s,h);let o=this.m_rTopoGraph.getClusterFromVertex(h);!g&&r&&this.m_rTopoGraph.isBreakNode(o)&&this.m_rShape.setSegmentParentageBreakVertex(m,!0);let l=this.m_rTopoGraph.getHalfEdgeFromVertex(h);if(r){let e=this.m_rTopoGraph.getSegmentParentage(l);this.m_rShape.setSegmentParentageAndBreak(m,e,g||this.m_rTopoGraph.isBreakNode(o))}this.m_rTopoGraph.isHalfEdgeCurve(l)&&(this.m_rTopoGraph.querySegmentXY(l,n),this.m_rShape.setSegmentToIndex(this.m_rShape.getVertexIndex(m),n.get().clone())),h=e,g=!1}m=this.m_rShape.addVertex(s,h),r&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(m,!0),this.m_rCutHandles.push(t),this.m_rShape.setGeometryUserIndex(t,this.m_sideIndex,i),t=G.n,s=G.n,i=32}}}function sI(e,t,s,i,r){if(i&&(i.m_reason=0,i.m_vertexIndex1=-1,i.m_vertexIndex2=-1),e.isEmpty())return 5;let n=e.getGeometryType();if(n===I.G.enumPoint)return sv(e,i);let a=(0,w.b)(t,e,!1).total();if(n===I.G.enumEnvelope){let t=v.Envelope2D.constructEmpty();return e.queryEnvelope(t),t.isDegenerate(a)?(i&&(i.m_reason=4,i.m_vertexIndex1=-1,i.m_vertexIndex2=-1),0):5}if((0,I.f)(n)){let n=new G.P({vd:e.getDescription()});return n.addSegment(e,!0),sI(n,t,s,i,r)}let o=e.getImpl().getIsSimple(a,[0]),l=s?-1:o;if(-1!==l)return l;let h=new sT(e,t,l,r,!1);return n===I.G.enumMultiPoint?l=h.multipointIsSimpleAsFeature():n===I.G.enumPolyline?l=h.polylineIsSimpleAsFeature():n===I.G.enumPolygon?l=h.polygonIsSimpleAsFeature():(0,I.d)(""),e.getImpl().setIsSimple(l,a),i&&i.assign(h.m_nonSimpleResult),l}function sv(e,t){let s=e.getX(),i=e.getY();if(!Number.isFinite(s)||!Number.isFinite(i))return t&&(t.m_reason=2,t.m_vertexIndex1=-1,t.m_vertexIndex2=-1),0;if(e.hasAttribute(1)){let s=e.getZ();if(!Number.isFinite(s))return t&&(t.m_reason=Number.isNaN(s)?3:2,t.m_vertexIndex1=-1,t.m_vertexIndex2=-1),0}return 5}class sG{constructor(){this.m_segment=null,this.m_vertexIndex=-1,this.m_pathIndex=-1,this.m_flags=0}setReversed(e){this.m_flags&=-2,this.m_flags=!!e|this.m_flags}getReversed(){return!!(1&this.m_flags)}getRightSide(){return+!this.getReversed()}}class sw extends w.F{constructor(e){super(),this.m_helper=e}
1compare(e,t,s){let i=e.getElement(s),r=this.m_helper.m_xy.read(2*t)-this.m_helper.m_xy.read(2*i);return r<0?-1:+(r>0)}}class sb extends w.F{constructor(e){super(),this.m_helper=e}compare(e,t,s){let i=e.getElement(s),r=this.m_helper.m_edges[t],n=this.m_helper.m_edges[i],a=r.getReversed(),o=n.getReversed(),l=r.m_segment.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0),h=n.m_segment.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0);if(l===h){let e=Math.min(a?r.m_segment.getStartY():r.m_segment.getEndY(),o?n.m_segment.getStartY():n.m_segment.getEndY()),t=.5*(e-this.m_helper.m_yScanline)+this.m_helper.m_yScanline;t===this.m_helper.m_yScanline&&(t=e),l=r.m_segment.intersectionOfYMonotonicWithAxisX(t,0),h=n.m_segment.intersectionOfYMonotonicWithAxisX(t,0)}return l<h?-1:+(l>h)}}class sT{constructor(e,t,s,i,r){this.m_multiVertexGeom=null,this.m_edges=[],this.m_freeEdges=[],this.m_lineEdgesRecycle=[],this.m_newEdges=[],this.m_recycledSegIter=null,this.m_crossOverHelperList=new w.I,this.m_progressTracker=null,this.m_progressCounter=0,this.m_AET=new w.T,this.m_xyToNode1=null,this.m_xyToNode2=null,this.m_pathOrientations=null,this.m_pathParentage=null,this.m_xy=null,this.m_pairs=[],this.m_pairIndices=null,this.m_pathsForOGCTests=[],this.m_curveStitcher=null,this.m_editShape=null,this.m_multiPathStitcher=null,this.m_nonSimpleResult=new H.NonSimpleResult,this.m_progressCounter=0,this.m_progressTracker=i,this.m_geometry=e,this.m_knownSimpleResult=s,this.m_sr=t;const n=(0,w.b)(t,e,!1);this.m_toleranceIsSimple=n,this.m_toleranceIsSimpleClustering=(0,w.e)(n),this.m_toleranceIsSimpleCracking=(0,w.l)(n),this.m_toleranceSimplify=(0,w.b)(t,e,!0),this.m_description=this.m_geometry.getDescription(),this.m_attributeCount=this.m_description.getAttributeCount(),this.m_bOGCRestrictions=r,this.m_bPlanarSimplify=this.m_bOGCRestrictions,this.m_unknownOrientationPathCount=-1,this.m_yScanline=0,this.m_progressCounter=0}isSimplePlanarImpl(){if(this.m_bPlanarSimplify=!0,!this.checkStructure())return 0;let e=this.m_geometry.getGeometryType();return(0,I.h)(e)&&!this.checkDegenerateSegments(!1)?0:this._CheckClustering()?(0,I.h)(e)?this._CheckCracking()?this.m_geometry.getGeometryType()===I.G.enumPolyline?4*!!this.checkSelfIntersectionsPolylinePlanar():this._CheckSelfIntersections()?this._CheckValidRingOrientation():0:0:5:0}isSimplePlanarImpl3D(){return(0,I.g)(0),7}generateSortedPairs(e){let t=null;(0,I.h)(e.getGeometryType())&&(t=e);let s=(this.m_bPlanarSimplify||this.m_bOGCRestrictions)&&null!==t,i=e.getPointCount();this.m_xy=e.getAttributeStreamRef(0),this.m_pairs.length=0,this.m_pairIndices=new w.A(0),s&&(this.m_pathsForOGCTests.length=0);let r=0;for(let e=0;e<i;e++)if(this.m_pairs.push(2*e),this.m_pairs.push(2*e+1),this.m_pairIndices.add(2*e),this.m_pairIndices.add(2*e+1),s){for(;e>=t.getPathEnd(r);)r++;this.m_pathsForOGCTests.push(r)}let n=new w.B,a={parent:this,workPt:new b.P,userSort(e,t,i){i.sort(e,t,(e,t)=>this.parent.compareVerticesForPlanarClustering(e,t,s))},getValue(e){let t=this.parent.m_pairs[e];return this.parent.m_xy.queryPoint2D(2*(t>>1),this.workPt),this.workPt.y+(1&t?this.parent.m_toleranceIsSimpleClustering:-this.parent.m_toleranceIsSimpleClustering)}};n.sort(this.m_pairIndices,0,2*i,a)}_TestToleranceDistancePlanar(e,t){let s=this.m_xy.read(2*e),i=this.m_xy.read(2*e+1),r=this.m_xy.read(2*t),n=this.m_xy.read(2*t+1);return!ef(s,i,r,n,this.m_toleranceIsSimpleClustering*this.m_toleranceIsSimpleClustering)||0!==this.m_geometry.getDimension()&&s===r&&i===n}checkStructure(){let e=this.m_geometry.getGeometryType();if((0,I.h)(e)){let e=this.m_geometry.getImpl(),t=this.m_geometry.getGeometryType()===I.G.enumPolygon?3:2;for(let s=0,i=e.getPathCount();s<i;s++)if(e.getPathSize(s)<t){if(e.hasNonLinearSegments()&&e.hasNonLinearSegmentsPath(s)&&e.getPathSize(s)>0)continue;return this.m_nonSimpleResult=new H.NonSimpleResult(1,s,0),!1}}if((0,I.i)(e)){let e=this.m_geometry.getImpl(),t=e.getAttributeStreamRef(0);for(let s=0,i=e.getPointCount();s<i;s++)if(!t.readPoint2D(2*s).isFinite())return this.m_nonSimpleResult=new H.NonSimpleResult(2,s,0),!1;if(this.m_geometry.hasAttribute(1)){let t=e.getAttributeStreamRef(1);for(let s=0,i=e.getPointCount();s<i;s++){let e=t.read(s);if(!Number.isFinite(e))return Number.isNaN(e)?this.m_nonSimpleResult=new H.NonSimpleResult(3,s,0):this.m_nonSimpleResult=new H.NonSimpleResult(2,s,0),!1}}}return!0}checkDegenerateSegments(e){let t=this.m_geometry.getImpl(),s=t.querySegmentIterator(),i=t.hasAttribute(1),r=i?(0,w.m)(this.m_sr,t,!1).total():0,n=t.hasNonLinearSegments(),a=this.m_toleranceIsSimple.total();for(;s.nextPath();)for(;s.hasNextSegment();){let t=s.nextSegment(),o=t.calculateLowerLength2D();if(!(o>a)&&!(n&&t.isCurve()&&(o=t.calculateLength2D())>a)){if(e&&i){let e=t.getStartAttributeAsDbl(1,0);if(Math.abs(t.getEndAttributeAsDbl(1,0)-e)>r)continue}return this.m_nonSimpleResult=new H.NonSimpleResult(4,s.getStartPointIndex(),-1),!1}}return!0}checkDegenerateSegments3D(){return(0,I.g)(0),!1}_CheckClustering(){let e=this.m_geometry.getImpl();this.generateSortedPairs(e);let t=e.getPointCount();this.m_AET.clear(),this.m_AET.setComparator(new sw(this)),this.m_AET.setCapacity(t);for(let e=0,s=2*t;e<s;e++){this.progress_();let t=this.m_pairIndices.read(e),s=this.m_pairs[t],i=s>>1;
1if(1&s){let e=this.m_AET.search(i),t=this.m_AET.getPrev(e),s=this.m_AET.getNext(e);if(this.m_AET.deleteNode(e),t!==w.T.st_nullNode()&&s!==w.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(t),this.m_AET.getElement(s)))return this.m_nonSimpleResult=new H.NonSimpleResult(5,this.m_AET.getElement(t),this.m_AET.getElement(s)),!1}else{let e=this.m_AET.addElement(i),t=this.m_AET.getPrev(e);if(t!==w.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(t),i))return this.m_nonSimpleResult=new H.NonSimpleResult(5,i,this.m_AET.getElement(t)),!1;let s=this.m_AET.getNext(e);if(s!==w.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(s),i))return this.m_nonSimpleResult=new H.NonSimpleResult(5,i,this.m_AET.getElement(s)),!1}}return!0}_CheckCracking(){let e=this.m_geometry.getImpl(),t=e.getPointCount();return!e.hasNonLinearSegments()&&t<10?this._CheckCrackingBrute():this._CheckCrackingPlanesweep()}_CheckCrackingPlanesweep(){if(this.m_editShape=new G.E,this.m_editShape.addGeometry(this.m_geometry),this.m_editShape.hasCurves()){var e,t,s,i;this.m_curveStitcher=new ss;let r=v.Envelope2D.constructEmpty();this.m_geometry.queryEnvelope(r);let n=t5(this.m_toleranceSimplify.total(),r),a=new H.NonSimpleResult;if(e=this.m_editShape,t=this.m_toleranceSimplify.total(),s=this.m_curveStitcher,i=this.m_progressTracker,e.hasCurves()?(e.setCurveStitcherPointer(s),s.m_impl=new si(i,!0,a),s.m_impl.buildMonotonicCurveParentage(e,n,t,null),sn(e,t,i)):s.m_impl=null,0!==a.m_reason)return this.m_editShape=null,this.m_nonSimpleResult.assign(a),!1}let r=new H.NonSimpleResult;return eM(!1,this.m_editShape,this.m_toleranceIsSimpleCracking,r,this.m_progressTracker)?(null!=this.m_curveStitcher?(r.m_vertexIndex1=this.m_curveStitcher.getOriginalVertexIndex(this.m_editShape,r.m_vertexIndex1),r.m_vertexIndex2=this.m_curveStitcher.getOriginalVertexIndex(this.m_editShape,r.m_vertexIndex2),this.m_curveStitcher=null):(r.m_vertexIndex1=this.m_editShape.getVertexIndex(r.m_vertexIndex1),r.m_vertexIndex2=this.m_editShape.getVertexIndex(r.m_vertexIndex2)),this.m_editShape=null,this.m_nonSimpleResult.assign(r),!1):(null==this.m_curveStitcher&&(this.m_editShape=null),!0)}_CheckCrackingBrute(){let e=this.m_geometry.getImpl(),t=e.querySegmentIterator(),s=e.querySegmentIterator();for(;t.nextPath();)for(;t.hasNextSegment();){let e=t.nextSegment();if(!t.isLastSegmentInPath()||!t.isLastPath()){s.resetTo(t);do for(;s.hasNextSegment();){let i=s.nextSegment(),r=(0,G.H)(!0,e,i,this.m_toleranceIsSimpleCracking,!0);if(r){let e=2===r?7:6;return this.m_nonSimpleResult=new H.NonSimpleResult(e,t.getStartPointIndex(),s.getStartPointIndex()),!1}}while(s.nextPath())}}return!0}_CheckSelfIntersections(){let e=this.m_geometry.getImpl();null!==this.m_curveStitcher&&(this.m_multiPathStitcher=this.m_editShape.getGeometry(this.m_editShape.getFirstGeometry()),e=this.m_multiPathStitcher.getImpl(),this.generateSortedPairs(e)),this.m_edges.length=0,this.m_lineEdgesRecycle.length=0,this.m_recycledSegIter=e.querySegmentIterator(),this.m_recycledSegIter.setCirculator(!0);let t=[],s=e.getPointCount(),i=NaN,r=0;for(let e=0,n=2*s;e<n;e++){this.progress_();let s=this.m_pairIndices.read(e),n=this.m_pairs[s];if(1&n)continue;let a=n>>1,o=this.m_xy.read(2*a),l=this.m_xy.read(2*a+1);if(t.length&&(o!==i||l!==r)){if(!this.processBunchForSelfIntersectionTest(t))return!1;t.length=0}t.push(a),i=o,r=l}return!!this.processBunchForSelfIntersectionTest(t)}checkSelfIntersectionsPolylinePlanar(){let e,t,s,i=this.m_geometry.getImpl(),r=[];for(let e=0,t=i.getPathCount();e<t;e++)r.push(i.isClosedPathInXYPlane(e));let n={x:-1,y:-1,ipath:-1,ivertex:-1,bBoundary:!1,bEndPoint:!1};{let a=this.m_pairIndices.read(0),o=this.m_pairs[a]>>1,l=this.m_xy.readPoint2D(2*o),h=this.m_pathsForOGCTests[o];e=r[h],t=i.getPathStart(h),s=i.getPathEnd(h)-1,n.bEndPoint=o===t||o===s,this.m_bOGCRestrictions?n.bBoundary=!e&&n.bEndPoint:n.bBoundary=n.bEndPoint,n.ipath=h,n.x=l.x,n.y=l.y,n.ivertex=o}for(let o=1,l=this.m_pairIndices.size();o<l;o++){var a;let l,h=this.m_pairIndices.read(o),m=this.m_pairs[h];if(1&m)continue;let g=m>>1,u=this.m_xy.readPoint2D(2*g),_=this.m_pathsForOGCTests[g];_!==n.ipath&&(e=r[_],t=i.getPathStart(_),s=i.getPathEnd(_)-1);let p=g===t||g===s;l=this.m_bOGCRestrictions?!e&&p:p;let d=(a=u.x,{x:a,y:u.y,ipath:_,ivertex:g,bBoundary:l,bEndPoint:p});if(d.x===n.x&&d.y===n.y){if(this.m_bOGCRestrictions){if(!(d.bBoundary&&n.bBoundary||d.ipath===n.ipath&&d.bEndPoint&&n.bEndPoint))return this.m_nonSimpleResult=new H.NonSimpleResult(10,d.ivertex,n.ivertex),!1}else if(!d.bEndPoint||!n.bEndPoint)return this.m_nonSimpleResult=new H.NonSimpleResult(7,d.ivertex,n.ivertex),!1}n.x=d.x,n.y=d.y,n.ipath=d.ipath,n.ivertex=d.ivertex,n.bBoundary=d.bBoundary,n.bEndPoint=d.bEndPoint}return!0}checkSelfIntersectionsPolylinePlanar3D(e){return(0,I.g)(0),!1}checkSelfIntersectionsPolygonsOGC(){let e=this.m_geometry.getImpl(),t=[],s=-1,i=!1;for(let r=0,n=e.getPathCount();r<n;r++)e.isExteriorRingOGC(r)&&(i=!1,s++,r<n-1&&(e.isExteriorRingOGC(r+1)||(i=!0))),t.push(i?s:-1);let r={x:-1,y:-1,ipath:-1,ivertex:-1,ipolygon:-1};{let e=this.m_pairIndices.read(0),s=this.m_pairs[e]>>1,i=this.m_xy.readPoint2D(2*s),n=this.m_pathsForOGCTests[s];r.ipath=n,r.x=i.x,r.y=i.y,r.ivertex=s,r.ipolygon=t[n]}let n=[];for(let e=1,s=this.m_pairIndices.size();e<s;e++){var a,o;let s=this.m_pairIndices.read(e),i=this.m_pairs[s];if(1&i)continue;let l=i>>1,h=this.m_xy.readPoint2D(2*l),m=this.m_pathsForOGCTests[l],g=(a=h.x,{x:a,y:h.y,ipath:m,ivertex:l,ipolygon:t[m]});if(g.x===r.x&&g.y===r.y){if(g.ipath===r.ipath)return this.m_nonSimpleResult=new H.NonSimpleResult(11,g.ivertex,r.ivertex),!1;
1t[g.ipath]>=0&&t[g.ipath]===t[r.ipath]&&(0!==n.length&&(o=n.at(-1),o.x===r.x&&o.y===r.y&&o.ipath===r.ipath&&o.ivertex===r.ivertex&&o.ipolygon===r.ipolygon)||n.push({...r}),n.push(g))}r.x=g.x,r.y=g.y,r.ipath=g.ipath,r.ivertex=g.ivertex,r.ipolygon=g.ipolygon}if(0===n.length)return!0;let l=new w.I(!0);t.fill(-1);let h=-1,m=new b.P;for(let e=0,s=n.length;e<s;e++){let s=n[e];s.x===m.x&&s.y===m.y||(h=l.createList(0),m.x=s.x,m.y=s.y);let i=t[s.ipath];-1===i&&(i=l.createList(2),t[s.ipath]=i),l.addElement(i,h),l.addElement(h,i)}let g=[];for(let e=l.getFirstList();-1!==e;e=l.getNextList(e)){let s=l.getListData(e);if(1&s||!(2&s))continue;let i=-1;for(g.push(e),g.push(-1);g.length;){let e=g.at(-1);g.pop();let t=g.at(-1);g.pop();let s=l.getListData(t);if(1&s){i=2&s?t:e;break}l.setListData(t,1|s);for(let s=l.getFirst(t);-1!==s;s=l.getNext(s)){let i=l.getData(s);i!==e&&(g.push(i),g.push(t))}}if(-1!==i){let e=t.indexOf(i);return this.m_nonSimpleResult=new H.NonSimpleResult(12,e,-1),!1}}return!0}_CheckValidRingOrientation(){let e=null!==this.m_multiPathStitcher?this.m_multiPathStitcher.getImpl():this.m_geometry.getImpl();if(0>=e.calculateArea2D())return this.m_nonSimpleResult=new H.NonSimpleResult(8,1===e.getPathCount()?1:-1,-1),0;if(1===e.getPathCount())return this.m_bOGCRestrictions&&!this.checkSelfIntersectionsPolygonsOGC()?0:4;this.m_pathOrientations=new w.n(e.getPathCount(),0),this.m_pathParentage=new w.A(e.getPathCount(),-1);let t=-1,s=0;for(let i=0,r=e.getPathCount();i<r;i++){let r=e.calculateRingArea2D(i);if(this.m_pathOrientations.write(i,r<0?0:8),r>0)t=i,s=r;else{if(0===r)return this.m_nonSimpleResult=new H.NonSimpleResult(8,i,-1),0;if((t<0||s<Math.abs(r))&&(this.m_nonSimpleResult=new H.NonSimpleResult(9,i,-1),this.m_bOGCRestrictions))return 0;this.m_pathParentage.write(i,t)}}this.m_unknownOrientationPathCount=e.getPathCount(),this.m_newEdges.length=0;let i=e.getPointCount();this.m_yScanline=NaN;let r=[];this.m_xyToNode1=new w.A(i,w.T.st_nullNode()),this.m_xyToNode2=new w.A(i,w.T.st_nullNode()),this.m_freeEdges.length=0,this.m_AET.clear(),this.m_AET.setComparator(new sb(this));for(let e=0,t=2*i;this.m_unknownOrientationPathCount>0&&e<t;e++){let t=this.m_pairIndices.read(e),s=this.m_pairs[t];if(1&s)continue;let i=s>>1,n=this.m_xy.read(2*i+1);if(n!==this.m_yScanline&&r.length){if(!this.processBunchForRingOrientationTest(r))return 0;r.length=0}r.push(i),this.m_yScanline=n}return this.m_unknownOrientationPathCount>0&&!this.processBunchForRingOrientationTest(r)?0:this.m_bOGCRestrictions?0!==this.m_nonSimpleResult.m_reason?0:5*!!this.checkSelfIntersectionsPolygonsOGC():0===this.m_nonSimpleResult.m_reason?4:3}processBunchForSelfIntersectionTest(e){if(1===e.length)return!0;for(let t=0,s=e.length;t<s;t++){let s=e[t];this.m_recycledSegIter.resetToVertex(s,-1);let i=this.m_recycledSegIter.previousSegment();this.m_edges.push(this.createEdge(i,s,this.m_recycledSegIter.getPathIndex(),!0)),this.m_recycledSegIter.nextSegment();let r=this.m_recycledSegIter.nextSegment();this.m_edges.push(this.createEdge(r,s,this.m_recycledSegIter.getPathIndex(),!1))}this.m_edges.sort((e,t)=>this.edgeAngleCompare(e,t));let t=this.m_crossOverHelperList.getFirstList();-1===t&&(t=this.m_crossOverHelperList.createList(0)),this.m_crossOverHelperList.reserveNodes(this.m_edges.length);for(let e=0,s=this.m_edges.length;e<s;e++)this.m_crossOverHelperList.addElement(t,e);let s=!0,i=-1,r=-1;for(;s;){s=!1;let e=this.m_crossOverHelperList.getFirst(t);if(-1===e)break;let n=this.m_crossOverHelperList.getNext(e);for(;-1!==n;){let a=this.m_crossOverHelperList.getData(e),o=this.m_crossOverHelperList.getData(n);if((i=this.m_edges[a].m_vertexIndex)!==(r=this.m_edges[o].m_vertexIndex))e=n,n=this.m_crossOverHelperList.getNext(e);else if(s=!0,this.m_crossOverHelperList.deleteElement(t,e),e=this.m_crossOverHelperList.getPrev(n),-1===(n=this.m_crossOverHelperList.deleteElement(t,n))||-1===e)break}}let n=this.m_crossOverHelperList.getListSize(t);if(this.m_crossOverHelperList.clear(t),n>0)return this.m_nonSimpleResult=new H.NonSimpleResult(7,i,r),!1;for(let t=0,s=e.length;t<s;t++)this.recycleEdge(this.m_edges[t]);return this.m_edges.length=0,!0}processBunchForRingOrientationTest(e){for(let t=0,s=e.length;t<s;t++){let s=e[t],i=this.m_xyToNode1.read(s);if(i!==w.T.st_nullNode()){let e=this.m_AET.getElement(i);this.m_freeEdges.push(e),this.m_AET.deleteNode(i),this.recycleEdge(this.m_edges[e]),this.m_edges[e]=null,this.m_xyToNode1.write(s,w.T.st_nullNode())}if((i=this.m_xyToNode2.read(s))!==w.T.st_nullNode()){let e=this.m_AET.getElement(i);this.m_freeEdges.push(e),this.m_AET.deleteNode(i),this.recycleEdge(this.m_edges[e]),this.m_edges[e]=null,this.m_xyToNode2.write(s,w.T.st_nullNode())}}for(let t=0,s=e.length;t<s;t++){let s=e[t];this.m_recycledSegIter.resetToVertex(s,-1);let i=this.m_recycledSegIter.previousSegment();if(i.getStartY()>i.getEndY()){let e,t=this.m_recycledSegIter.getStartPointIndex(),r=this.createEdge(i,s,this.m_recycledSegIter.getPathIndex(),!0);this.m_freeEdges.length>0?(e=this.m_freeEdges.at(-1),this.m_freeEdges.pop(),this.m_edges[e]=r):(e=this.m_edges.length,this.m_edges.push(r));let n=this.m_AET.addElement(e);this.m_xyToNode1.read(t)===w.T.st_nullNode()?this.m_xyToNode1.write(t,n):this.m_xyToNode2.write(t,n),3&this.m_pathOrientations.read(this.m_recycledSegIter.getPathIndex())||this.m_newEdges.push(n)}this.m_recycledSegIter.nextSegment();let r=this.m_recycledSegIter.nextSegment();if(r.getStartY()<r.getEndY()){let e,t=this.m_recycledSegIter.getEndPointIndex(),i=this.createEdge(r,
1s,this.m_recycledSegIter.getPathIndex(),!1);this.m_freeEdges.length>0?(e=this.m_freeEdges.at(-1),this.m_freeEdges.pop(),this.m_edges[e]=i):(e=this.m_edges.length,this.m_edges.push(i));let n=this.m_AET.addElement(e);this.m_xyToNode1.read(t)===w.T.st_nullNode()?this.m_xyToNode1.write(t,n):this.m_xyToNode2.write(t,n),3&this.m_pathOrientations.read(this.m_recycledSegIter.getPathIndex())||this.m_newEdges.push(n)}}for(let e=0,t=this.m_newEdges.length;e<t&&this.m_unknownOrientationPathCount>0;e++){let t=this.m_newEdges[e],s=this.m_AET.getElement(t),i=this.m_edges[s].m_pathIndex;if(!(3&this.m_pathOrientations.read(i))){let e=-1,s=this.m_AET.getPrev(t),i=t,r=0;{let t=-1,n=null,a=-1,o=0;for(;s!==w.T.st_nullNode()&&(t=this.m_AET.getElement(s),a=(n=this.m_edges[t]).m_pathIndex,!(3&(o=this.m_pathOrientations.read(a))));)i=s,s=this.m_AET.getPrev(s);s===w.T.st_nullNode()?(r=1,s=i):(e=1==(3&o)?a:this.m_pathParentage.read(a),r=+!n.getRightSide(),s=this.m_AET.getNext(s))}do{let t=this.m_AET.getElement(s),n=this.m_edges[t],a=n.m_pathIndex,o=this.m_pathOrientations.read(a);if(!(3&o)){if(r!==n.getRightSide())return this.m_nonSimpleResult=new H.NonSimpleResult(8,a,-1),!1;let t=r&&!n.getReversed()?1:2;if(o=-4&o|t,this.m_pathOrientations.write(a,o),2===t&&0===this.m_nonSimpleResult.m_reason){let t=this.m_pathParentage.read(a);if(t!==e&&(this.m_nonSimpleResult=new H.NonSimpleResult(9,a,t),this.m_bOGCRestrictions))return!1}if(this.m_unknownOrientationPathCount--,!this.m_unknownOrientationPathCount)return!0}e=1==(3&o)?a:this.m_pathParentage.read(a),i=s,s=this.m_AET.getNext(s),r=+!r}while(i!==t)}}return this.m_newEdges.length=0,!0}createEdge(e,t,s,i){let r;return e.getGeometryType()===I.G.enumLine?r=this.createEdgeLine(e):(r=new sG).m_segment=e.clone(),r.m_vertexIndex=t,r.m_pathIndex=s,r.m_flags=0,r.setReversed(i),r}createEdgeLine(e){let t;return this.m_lineEdgesRecycle.length>0?(t=this.m_lineEdgesRecycle.at(-1),this.m_lineEdgesRecycle.pop(),e.copyTo(t.m_segment)):(t=new sG).m_segment=e.clone(),t}recycleEdge(e){e.m_segment.getGeometryType()===I.G.enumLine&&this.m_lineEdgesRecycle.push(e)}static isShortSegment(e,t,s,i){let r=e.calculateLowerLength2D();if(r<=s){let n=!0;if(e.isCurve()&&(n=(r=e.calculateLength2D())<=s),n){if(t){let t=e.getEndAttributeAsDbl(1,0);Number.isNaN(t)&&(t=0);let s=e.getStartAttributeAsDbl(1,0);return Number.isNaN(s)&&(s=0),Math.abs(s-t)<=i}return!0}}return!1}static isShortSegmentPoints(e,t,s,i,r){if(s){let s=e.getXYZ(),n=t.getXYZ();return(0,w.o)(s,n,i,r)}{let s=e.getXY(),r=t.getXY();return b.P.sqrDistance(s,r)<=i*i}}removeDegenerateSegmentsFromCurvedPath(e,t,s,i){let r=e.hasAttribute(1),n=e.querySegmentIterator();n.resetToPath(t),(0,I.g)(n.nextPath());let a=this.m_toleranceSimplify.total(),o=!1,l=!0,h=new w.P,m=new w.P,g=new b.P;for(;n.hasNextSegment();){this.progress_();let e=n.nextSegment();if(sT.isShortSegment(e,r,a,s))if(o){if(e.queryEnd(m),sT.isShortSegmentPoints(h,m,r,a,s))continue;l&&(i.startPathPoint(h),l=!1),e.queryEnd(h),i.lineToPoint(h),o=!1}else g.assign(e.getStartXY()),e.queryStart(h),o=!0;else if(o)if(e.isCurve()){let t=e.clone();if(t.setCoordsForIntersector(g,e.getEndXY(),!1),t.setStart(h),sT.isShortSegment(t,r,a,s))continue;i.addSegment(t,l),l=!1,o=!1}else{if(e.queryEnd(m),sT.isShortSegmentPoints(h,m,r,a,s))continue;l&&(i.startPathPoint(h),l=!1),i.lineToPoint(m),o=!1}else i.addSegment(e,l),l=!1}if(l||!o)return;e.isClosedPath(t)?e.getPointByVal(e.getPathStart(t),h):e.getPointByVal(e.getPathEnd(t)-1,h);let u=i.querySegmentIterator();u.resetToLastPath(),u.resetToLastSegment();let _=i.getDescription().getAttributeCount()>1;for((0,I.g)(u.previousPath());u.hasPreviousSegment();){let e=u.previousSegment();if(e.isCurve()){let t=e.clone();if(t.setCoordsForIntersector(e.getStartXY(),h.getXY(),!1),!sT.isShortSegment(t,r,a,s)){_&&t.setEnd(h);let e=u.getEndPointIndex();for(let t=i.getPointCount()-1;t>=e;t--)i.removePoint(t);return void i.addSegment(t,!1)}}else if(e.queryStart(m),!sT.isShortSegmentPoints(m,h,r,a,s)){let e=u.getEndPointIndex();for(let t=i.getPointCount()-1;t>=e;t--)i.removePoint(t);return void i.lineToPoint(h)}}i.removePath(i.getPathCount()-1)}multipointIsSimpleAsFeature(){if(!this.checkStructure())return 0;let e=this.m_geometry.getImpl();this.m_multiVertexGeom=e;let t=e.getPointCount(),s=(0,b.d)(t,0);for(let e=0;e<t;e++)s[e]=e;s.sort((e,t)=>
1this.compareVerticesMultiPoint(e,t));for(let e=1;e<t;e++)if(0===this.compareVerticesMultiPoint(s[e-1],s[e]))return this.m_nonSimpleResult=new H.NonSimpleResult(5,s[e-1],s[e]),0;return 1}polylineIsSimpleAsFeature(){return this.checkStructure()&&this.checkDegenerateSegments(!0)?1:0}polygonIsSimpleAsFeature(){return this.isSimplePlanarImpl()}multipointSimplifyAsFeature(){let e=this.m_geometry.getImpl(),t=sT.hasNanZs(e),s,i=this.m_geometry;t&&(e=(s=this.m_geometry.clone()).getImpl(),s.replaceNaNs(1,w.V.getDefaultValue(1)),i=s),this.m_multiVertexGeom=e;let r=e.getPointCount(),n=(0,b.d)(r,0);for(let e=0;e<r;e++)n[e]=e;n.sort((e,t)=>this.compareVerticesMultiPoint(e,t));let a=Array(r);a.fill(!1);let o=-1;for(let t=0;t<r;t++){let s=n[t];e.getXY(s).isFinite()&&((o<0||0!==this.compareVerticesMultiPoint(o,s))&&(a[s]=!0),o=s)}let l=this.m_geometry.createInstance(),h=0,m=0;for(let e=0;e<r;e++)a[e]?m=e+1:(h<m&&l.addPoints(i,h,m),h=e+1);return h<m&&l.addPoints(i,h,m),l.getImpl().setIsSimple(1,this.m_toleranceSimplify.total()),l}polylineSimplifyAsFeature(){let e=this.m_geometry.getImpl(),t=e.querySegmentIterator(),s=e.querySegmentIterator(),i=this.m_geometry.createInstance(),r=this.m_geometry,n=e.hasAttribute(1),a=n?(0,w.m)(this.m_sr,e,!0).total():0,o=[],l=[],h=null;n&&(h=e.getAttributeStreamRef(1));let m=new w.P,g=e.hasNonLinearSegments(),u=this.m_toleranceSimplify.total();for(;t.nextPath();){if(s.nextPath(),2>e.getPathSize(t.getPathIndex()))continue;if(g&&e.hasNonLinearSegmentsPath(t.getPathIndex())){this.removeDegenerateSegmentsFromCurvedPath(e,t.getPathIndex(),a,i);continue}s.resetToLastSegment();let _=0,p=0,d=!0,c=!0;for(;t.hasNextSegment();){this.progress_();let i=t.nextSegment(),r=s.previousSegment();if(t.getStartPointIndex()>s.getStartPointIndex())break;if(d){let s=t.getStartPointIndex();e.getXY(s).isNAN()||(d=!1,o.push(s))}if(c){let t=s.getEndPointIndex();e.getXY(t).isNAN()||(l.push(t),c=!1)}if(!d){let s=o.at(-1),r=t.getEndPointIndex();if(r-s>1){let t=new b.P;t.setSub(e.getXY(s),e.getXY(r)),_=t.length()}else _=i.calculateLength2D();if(_>u)o.push(r),_=0;else if(n){let e=h.read(s);Number.isNaN(e)&&(e=0);let t=h.read(r);Number.isNaN(t)&&(t=0),Math.abs(t-e)>a&&(o.push(r),_=0)}}if(!c){let t=l.at(-1),i=s.getStartPointIndex();if(i-t>1){let s=new b.P;s.setSub(e.getXY(t),e.getXY(i)),p=s.length()}else p=r.calculateLength2D();if(p>u)l.push(i),p=0;else if(n){let e=h.read(t);Number.isNaN(e)&&(e=0);let s=h.read(i);Number.isNaN(s)&&(s=0),Math.abs(s-e)>a&&(l.push(i),p=0)}}}if(o.length>0&&l.length>0&&(o.at(-1)<l.at(-1)?o.length>l.length?o.pop():l.pop():(o.at(-1)===l.at(-1)||l.pop(),l.pop())),l.length+o.length>=2){let e=!1;for(let t=0,s=o.length;t<s;t++)r.getPointByVal(o[t],m),e?i.lineToPoint(m):(i.startPathPoint(m),e=!0);for(let t=l.length-1;t>0;t--)r.getPointByVal(l[t],m),e?i.lineToPoint(m):(i.startPathPoint(m),e=!0);r.isClosedPath(t.getPathIndex())?i.closePathWithLine():l.length>0&&(r.getPointByVal(l[0],m),i.lineToPoint(m))}o.length=0,l.length=0}return n&&i.replaceNaNs(1,0),i.getImpl().setIsSimple(1,u),i}polygonSimplifyAsFeature(){return this.simplifyPlanar()}simplifyPlanar(){if(1===this.m_geometry.getFillRule()&&!(0,w.p)(this.m_knownSimpleResult))return sp(this.m_geometry,this.m_toleranceSimplify,!0,!1,this.m_knownSimpleResult,this.m_progressTracker,0,!0);let e=new G.E;if(e.addGeometry(this.m_geometry),this.m_geometry.hasAttribute(1)&&e.replaceNaNs(1,0),e.removeNaNVertices(),0!==e.getTotalPointCount()){let t=null,s=0,i=0;if(e.hasCurves()){t=new ss;let r=v.Envelope2D.constructEmpty();this.m_geometry.queryEnvelope(r);let n=t5(this.m_toleranceSimplify.total(),r);i=st(n,s=se(this.m_toleranceSimplify.total())),t6(e,n,this.m_toleranceSimplify.total(),12e3,t,null,this.m_progressTracker)}(0,w.p)(this.m_knownSimpleResult)||sr(e,this.m_toleranceSimplify.add(i),this.m_progressTracker,!0,!1),this.m_geometry.getGeometryType()===I.G.enumPolygon&&ez(e,e.getFirstGeometry(),this.m_knownSimpleResult,!1,-1,this.m_progressTracker),null!==t&&t.stitchCurves(e,e.getFirstGeometry(),s,!0)}let t=e.getGeometry(e.getFirstGeometry());return t.getGeometryType()===I.G.enumPolygon&&(t.getImpl().updateOGCFlagsProtected(),t.setFillRule(0)),t.getImpl().setIsSimple(4,this.m_toleranceSimplify.total()),t}progress_(){}static hasNanZs(e){if(e.hasAttribute(1)){let t=e.getAttributeStreamRef(1);for(let s=0,i=e.getPointCount();s<i;s++)if(Number.isNaN(t.read(s)))return!0}return!1}
1compareVerticesForPlanarClustering(e,t,s){if(e===t)return 0;let i=this.m_pairs[e],r=this.m_pairs[t],n=i>>1,a=r>>1,o=this.m_xy.readPoint2D(2*n);o.y+=1&i?this.m_toleranceIsSimpleClustering:-this.m_toleranceIsSimpleClustering;let l=this.m_xy.readPoint2D(2*a);l.y+=1&r?this.m_toleranceIsSimpleClustering:-this.m_toleranceIsSimpleClustering;let h=o.compare(l);if(0===h&&s){let e=this.m_pathsForOGCTests[n]-this.m_pathsForOGCTests[a];return(0,b.e)(e)}return h}compareVerticesMultiPoint(e,t){if(e===t)return 0;let s=this.m_multiVertexGeom.getXY(e),i=this.m_multiVertexGeom.getXY(t),r=!s.isFinite(),n=!i.isFinite();if(r||n)return r<n?-1:+(r>n);if(s.y<i.y)return -1;if(s.y>i.y)return 1;if(s.x<i.x)return -1;if(s.x>i.x)return 1;for(let s=1;s<this.m_attributeCount;s++){let i=this.m_description.getSemantics(s),r=w.V.getComponentCount(i);for(let s=0;s<r;s++){let r=this.m_multiVertexGeom.getAttributeAsDbl(i,e,s),n=this.m_multiVertexGeom.getAttributeAsDbl(i,t,s),a=(0,b.r)(r,n);if(0!==a)return a}}return 0}edgeAngleCompare(e,t){if(e===t)return 0;let s=e.m_segment.getTangent(+!!e.getReversed());e.getReversed()&&s.negateThis();let i=t.m_segment.getTangent(+!!t.getReversed());t.getReversed()&&i.negateThis();let r=s.getQuarter(),n=i.getQuarter();if(n===r){let e=s.crossProduct(i);return e<0?1:e>0?-1:0}return r<n?-1:1}}class sN{getOperatorType(){return 10103}accelerateGeometry(e,t,s){return!1}canAccelerateGeometry(e){return!1}supportsCurves(){return!0}isSimpleAsFeature(e,t,s,i,r){let n=sI(e,t,s,i,r);return(0,w.k)(e.getGeometryType(),n)}isSimplePlanarDONOTUSE(e,t,s,i,r){let n=function(e,t,s,i,r){if(i&&(i.m_reason=0,i.m_vertexIndex1=-1,i.m_vertexIndex2=-1),e.isEmpty())return 5;let n=e.getGeometryType();if(n===I.G.enumPoint)return sv(e,i);let a=(0,w.b)(t,e,!1).total();if(n===I.G.enumEnvelope){let t=new v.Envelope2D;return e.queryEnvelope(t),t.isDegenerate(a)?(i&&(i.m_reason=4,i.m_vertexIndex1=-1,i.m_vertexIndex2=-1),0):5}if((0,I.f)(n)){let n=new G.P({vd:e.getDescription()});return n.addSegment(e,!0),sI(n,t,s,i,r)}let o=e.getImpl().getIsSimple(a,[0]),l=s?-1:o;if((0,w.i)(l)||0===l)return l;let h=new sT(e,t,l,r,!1);return n===I.G.enumMultiPoint||n===I.G.enumPolyline||n===I.G.enumPolygon?l=h.isSimplePlanarImpl():(0,I.d)(""),e.getImpl().setIsSimple(l,a),i&&i.assign(h.m_nonSimpleResult),l}(e,t,s,i,r);return(0,w.i)(n)}executeMany(e,t,s,i){return new sD(e,t,s,i)}execute(e,t,s,i){let r=new F.S([e]),n=this.executeMany(r,t,s,i).next();return n||(0,I.d)("null geometry"),n}}class sD extends F.G{constructor(e,t,s,i){super(),this.m_progressTracker=i,this.m_bForceSimplify=s,this.m_index=-1,this.m_inputGeometryCursor=e,this.m_spatialReference=t}next(){let e=this.m_inputGeometryCursor.next();return e?(this.m_index=this.m_inputGeometryCursor.getGeometryID(),this.simplify(e)):null}getGeometryID(){return this.m_index}tock(){return!1}getRank(){return 1}simplify(e){if(e||(0,I.a)(""),e.getGeometryType()===I.G.enumGeometryCollection){let t=(0,G.g)(e,-1),s=(new sN).executeMany(t,this.m_spatialReference,this.m_bForceSimplify,this.m_progressTracker),i=e.createInstance();for(let e=s.next();null!=e;e=s.next())i.addGeometry(e);return i}return function e(t,s,i,r){let n;if(t.isEmpty())return t;let a=t.getGeometryType();if(a===I.G.enumPoint){let e=new H.NonSimpleResult;if(sv(t,e),3===e.m_reason){let e=t.clone();return e.replaceNaNs(1,0),e}return 2===e.m_reason?t.createInstance():t}if(a===I.G.enumEnvelope){let e=(0,w.b)(s,t,!0).total(),i=v.Envelope2D.constructEmpty();return t.queryEnvelope(i),i.isDegenerate(e)?t.createInstance():t}if((0,I.f)(a)){let n=new G.P({vd:t.getDescription()});return n.addSegment(t,!0),e(n,s,i,r)}(0,I.x)(a);let o=(0,w.b)(s,t,!1).total(),l=t.getImpl().getIsSimple(o,[0]),h=i?-1:l;if((0,w.i)(h)){if(a===I.G.enumPolygon&&0!==t.getFillRule()){let e=t.clone();return e.setFillRule(0),e}return t}if((a===I.G.enumMultiPoint||a===I.G.enumPolyline)&&h>=1)return t;let m=new sT(t,s,h,r,!1);return a===I.G.enumMultiPoint?n=m.multipointSimplifyAsFeature():a===I.G.enumPolyline?n=m.polylineSimplifyAsFeature():a===I.G.enumPolygon?n=m.polygonSimplifyAsFeature():(0,I.d)(""),n}(e,this.m_spatialReference,this.m_bForceSimplify,this.m_progressTracker)}}class sV{constructor(e,t,s,i){this.m_intersectorGeom=null,this.m_sr=null,this.m_dimensionMask=-1,this.m_progressTracker=null,this.m_intersectorGeomType=I.G.enumUnknown,this.m_geomIntersectorEmptyGeom=null,this.m_intersectorGeom=e,this.m_sr=t,this.m_dimensionMask=s,this.m_progressTracker=i,this.m_intersectorGeomType=e.getGeometryType()}intersect(e){let t=this.tryFastImplementation(e);if(null!==t)return t;let s=(0,w.g)(this.m_intersectorGeom,e),i=(0,w.c)(this.m_sr,s,!0).total(),r=v.Envelope2D.constructEmpty();this.m_intersectorGeom.queryEnvelope(r);let n=v.Envelope2D.constructEmpty();e.queryEnvelope(n),r.inflateCoords(2*i,2*i),r.intersect(n),r.inflateCoords(100*i,100*i);let a=(0,D.c)(this.m_intersectorGeom,r,0,0,this.m_progressTracker),o=(0,D.c)(e,r,0,0,this.m_progressTracker);return e.getDimension()>this.m_intersectorGeom.getDimension()&&(a=(0,b.c)(o,o=a)),function(e,t,s,i){let r=v.Envelope2D.constructEmpty();e.queryEnvelope(r);let n=v.Envelope2D.constructEmpty();t.queryEnvelope(n);let a=v.Envelope2D.constructEmpty();a.setCoords({env2D:r}),a.mergeEnvelope2D(n);let o=(0,w.c)(s,a,!0),l=new v.Envelope2D(n),h=(0,w.e)(o);if(l.inflateCoords(h,h),!r.isIntersecting(l)){if(e.getDimension()<=t.getDimension())return sE(sy(e.createInstance()),e,t,"&");if(e.getDimension()>t.getDimension())return sE(sy(t.createInstance()),e,t,"&")}let m=new sf(i),g=new G.E,u=g.addGeometry(sy(e)),_=g.addGeometry(sy(t)),p=0,d=0,c=null;if(g.hasCurves()){c=new ss;let e=g.getEnvelope2D(i);d=se(o.total());let t=t5(o.total(),e);p=st(t,d),t6(g,t,o.total(),12e3,c,null,i)}m.setEditShapeCrackAndCluster(g,o.add(p));let f=m.intersection(u,_);null!==c&&c.stitchCurves(g,f,d,!0);let x=sE(g.getGeometry(f),e,t,"&");return sl(x.getGeometryType())&&(x.getImpl().setIsSimple(4,o.total()),x.getGeometryType()===I.G.enumPolygon&&x.getImpl().updateOGCFlagsProtected()),x}(o,a,this.m_sr,this.m_progressTracker)}intersectEx(e){let t=this.tryFastImplementation(e);if(null!==t){let s=[];return s.length=3,s[t.getDimension()]=t,this.prepareVector(e.getDescription(),this.m_dimensionMask,s)}let s=(0,w.g)(this.m_intersectorGeom,e),i=(0,w.c)(this.m_sr,s,!0).total(),r=v.Envelope2D.constructEmpty();this.m_intersectorGeom.queryEnvelope(r);let n=v.Envelope2D.constructEmpty();e.queryEnvelope(n),r.inflateCoords(2*i,2*i),r.intersect(n),r.inflateCoords(100*i,100*i);let a=(0,D.c)(this.m_intersectorGeom,r,0,0,this.m_progressTracker),o=(0,D.c)(e,r,0,0,this.m_progressTracker);e.getDimension()>this.m_intersectorGeom.getDimension()&&(a=(0,b.c)(o,o=a));let l=function(e,t,s,i){let r=[,,,],n=v.Envelope2D.constructEmpty();e.queryEnvelope(n);let a=v.Envelope2D.constructEmpty();t.queryEnvelope(a);let o=v.Envelope2D.constructEmpty();o.setCoords({env2D:n}),o.mergeEnvelope2D(a);let l=(0,w.c)(s,o,!0),h=new v.Envelope2D(a),m=(0,w.e)(l);if(h.inflateCoords(m,m),!n.isIntersecting(h)){if(e.getDimension()<=t.getDimension()){let s=sE(sy(e.createInstance()),e,t,"&");return r[s.getDimension()]=s,r}if(e.getDimension()>t.getDimension()){let s=sE(sy(t.createInstance()),e,t,"&");return r[s.getDimension()]=s,r}}let g=new sf(i),u=new G.E,_=u.addGeometry(sy(e)),p=u.addGeometry(sy(t)),d=0,c=0,f=null;if(u.hasCurves()){f=new ss;let e=u.getEnvelope2D(i);c=se(l.total());let t=t5(l.total(),e);d=st(t,c),t6(u,t,l.total(),12e3,f,null,i)}for(let s of(g.setEditShapeCrackAndCluster(u,l.add(d)),u.dbgVerifyCurves(),g.intersectionEx(_,p))){null!==f&&f.stitchCurves(u,s,c,!1);let i=sE(u.getGeometry(s),e,t,"&");sl(i.getGeometryType())&&(i.getImpl().setIsSimple(4,l.total()),i.getGeometryType()===I.G.enumPolygon&&i.getImpl().updateOGCFlagsProtected()),r[
1i.getDimension()]=i}return null!==f&&f.clearStitcher(u),r}(o,a,this.m_sr,this.m_progressTracker);return this.prepareVector(e.getDescription(),this.m_dimensionMask,l)}init(e,t,s,i=null){(0,I.g)(0)}static intersectPoints(e,t,s){var i;let r,n=(0,w.g)(e,t);return i=(0,w.c)(s,n,!0),e.isEmpty()||t.isEmpty()?e.createInstance():(r=(0,w.e)(i),ef(e.getX(),e.getY(),t.getX(),t.getY(),(0,b.a)(r)))?new w.P({copy:function(e,t,s=1,i=1,r=1,n=1){if(i>n)return e;if(n>i)return t;let a=new w.P;return function(e,t,s,i,r,n,a,o,l){if(e.equals(t),i>n)return a.assignCopy(e),l[0]=i,o[0]=s;if(n>i)return a=t,l[0]=n,o[0]=r;a.assignCopy(e);let h=ex(e.getXY(),t.getXY(),s,i,r,n);a.setXY(h.pt),o[0]=h.weight,l[0]=h.rank}(e,t,s,i,r,n,a,[0],[0]),a}(e,t)}):e.createInstance()}tryFastImplementation(e){let t=e.getGeometryType();if(this.m_intersectorGeomType===I.G.enumPoint&&t===I.G.enumPoint){let t=sV.intersectPoints(e,this.m_intersectorGeom,this.m_sr);if(-1!==this.m_dimensionMask){let e=new G.M({vd:t.getDescription()});return t.isEmpty()||e.add(t),e}return t}if(t===I.G.enumEnvelope&&this.m_intersectorGeomType===I.G.enumEnvelope&&(-1===this.m_dimensionMask||4===this.m_dimensionMask)){let t=this.m_intersectorGeom,s=new w.E({copy:e});return s.intersect(t),s}let s=(0,w.g)(e,this.m_intersectorGeom),i=(0,w.c)(this.m_sr,s,!0),r=e.isEmpty(),n=this.m_intersectorGeom.isEmpty(),a=r||n;if(!a){let t=function(e,t,s){let i=new v.Envelope2D;e.queryEnvelope(i);let r=new v.Envelope2D;t.queryEnvelope(r);let n=new v.Envelope2D(r);if(n.inflate(2*s),!n.isIntersecting(i))return 4;let a=e.getGeometryType(),o=t.getGeometryType();if(a===I.G.enumEnvelope&&i.containsEnvelope(n))return 1;if(o===I.G.enumEnvelope){let e=new v.Envelope2D(i);if(e.inflate(2*s),r.containsEnvelope(e))return 2}return 0}(this.m_intersectorGeom,e,i.total());if(4===t)a=!0;else{if(2&t)return this.m_intersectorGeom;if(1&t)return e}}if(a){let s=(0,I.u)(t),i=(0,I.u)(this.m_intersectorGeomType);return s<i?sV.ReturnEmpty(e,r):s>i||0===s&&t===I.G.enumMultiPoint&&this.m_intersectorGeomType===I.G.enumPoint?this.ReturnEmptyIntersector():sV.ReturnEmpty(e,r)}if(t===I.G.enumEnvelope&&0===(0,I.u)(this.m_intersectorGeomType)||this.m_intersectorGeomType===I.G.enumEnvelope&&0===(0,I.u)(t)){let s=t===I.G.enumEnvelope?e:this.m_intersectorGeom,r=t===I.G.enumEnvelope?this.m_intersectorGeom:e,n=v.Envelope2D.constructEmpty();return s.queryEnvelope(n),(0,D.c)(r,n,i.total(),0,this.m_progressTracker)}if(0===(0,I.u)(t)&&(0,I.u)(this.m_intersectorGeomType)>0||(0,I.u)(t)>0&&0===(0,I.u)(this.m_intersectorGeomType)){if(t===I.G.enumMultiPoint)return sP(e,this.m_intersectorGeom,i);if(t===I.G.enumPoint)return sx(e,this.m_intersectorGeom,i,!0);if(this.m_intersectorGeomType===I.G.enumMultiPoint)return sP(this.m_intersectorGeom,e,i);if(this.m_intersectorGeomType===I.G.enumPoint)return sx(this.m_intersectorGeom,e,i,!0);(0,I.d)("")}return null}ReturnEmptyIntersector(){return null===this.m_geomIntersectorEmptyGeom&&(this.m_geomIntersectorEmptyGeom=this.m_intersectorGeom.createInstance()),this.m_geomIntersectorEmptyGeom}static ReturnEmpty(e,t){return t?e:e.createInstance()}prepareVector(e,t,s){let i=0;return 1&t?(s[0]||(s[0]=new G.M({vd:e})),i++):s.shift(),2&t?(s[i]||(s[i]=new G.P({vd:e})),i++):s.splice(i,1),4&t?s[i]||(s[i]=new G.a({vd:e})):s.splice(i,1),new F.S(s)}}class sF extends F.G{constructor(e,t,s,i,r){super(),this.m_smallCursor=null,this.m_progressTracker=i,this.m_geomIntersector=t.next(),this.m_intersector=new sV(this.m_geomIntersector,s,r,i),this.m_index=-1,this.m_inputGeoms=e,this.m_dimensionMask=r,-1!==this.m_dimensionMask&&(this.m_dimensionMask<=0||this.m_dimensionMask>7)&&(0,I.a)("bad dimension mask")}next(){let e;if(!this.m_geomIntersector)return null;if(null!==this.m_smallCursor){if(e=this.m_smallCursor.next())return e;this.m_smallCursor=null}for(;e=this.m_inputGeoms.next();){if((0,I.c)(e),this.m_index=this.m_inputGeoms.getGeometryID(),-1===this.m_dimensionMask)return this.m_intersector.intersect(e);return this.m_smallCursor=this.m_intersector.intersectEx(e),this.m_smallCursor.next()}return null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}class sH{getOperatorType(){return 1e4}accelerateGeometry(e,t,s){if(!this.canAccelerateGeometry(e))return!1;(0,w.b)(t,e,!0);let i=0;return(e.getGeometryType()===I.G.enumPolygon||e.getGeometryType()===I.G.enumPolyline)&&(0,G.y)(e)&&0!==s&&(i|=!!e.getImpl().buildQuadTreeAccelerator(s)),!!i}canAccelerateGeometry(e){return(0,G.y)(e)}supportsCurves(){return!0}executeMany(e,t,s,i,r=-1){return new sF(e,t,s,i,r)}execute(e,t,s,i){if(e.getGeometryType()===I.G.enumPoint&&t.getGeometryType()===I.G.enumPoint)return sV.intersectPoints(e,t,s);let r=new F.S([e]),n=new F.S([t]),a=this.executeMany(r,n,s,i,-1).next();return a||(0,I.d)("null output"),a}}function sk(e,t,s){return t.m_projector.project(e,s)}function sA(e,t,s,i,r){return e.m_projector.transformInPlaceZ(t,null,s,i,null,r)}function sM(e,t,s){let i;if(e&&t&&t.isPannable()||(0,I.a)(""),e.isEmpty())return e;let r=e.getGeometryType();if(r===I.G.enumEnvelope){let t=new G.a({vd:e.getDescription()});t.addEnvelope(e,!1),i=t}else if((0,I.f)(r)){let t=new G.P({vd:e.getDescription()});t.addSegment(e,!0),i=t}else i=e;let n=iA(i,t);return n.isEmpty()?n:iT(n,t,0,n!==e,0,s)}function sU(e,t,s,i){let r=t.getXYGridRange(),n=e.hasAttribute(1),a=e.hasAttribute(2),o=new b.E,l=new b.E;n&&(o=t.getZGridRange()),a&&(l=t.getMGridRange());let h=(new D.O).execute(e,r,s,i);if(n){let t=h.queryInterval(1,0);o.contains(t)||(e===h&&(h=h.clone()),(0,w.H)(h,o,1,0))}if(a){let t=h.queryInterval(2,0);l.contains(t)||(e===h&&(h=h.clone()),(0,w.H)(h,l,2,0))}return h}class sq{constructor(e){this.m_inputPCSHorizonClipOption=0,this.m_outputPCSHorizonClipOption=0,this.m_bDontGeonormalizePolygon=!1,this.m_bClipOutCurvedPoles=!1,this.m_bNormalizeOutputGeometry=!1,this.m_bDontHackPolesInGeogToGeog=!1,this.m_centralMeridianOfOutputGCS=0,this.m_densificationStepInput=0,e||(0,I.a)(""),this.m_projTransform=e,this.m_bClipOutCurvedPoles=!1;const t=this.m_projTransform.getExtendedParamsImpl();this.m_bNormalizeOutputGeometry=t.normalizeResultGeometry,this.m_bNormalizeOutputGeometry&&(t.legacyHorizonClipping?this.m_bNormalizeOutputGeometry=!1:this.m_projTransform.getOutputSR().isPannable()||(this.m_bNormalizeOutputGeometry=!1)),t.clipWithInputHorizon?(this.m_inputPCSHorizonClipOption=0,!t.legacyHorizonClipping&&this.m_projTransform.getInputSR().isPannable()&&(this.m_inputPCSHorizonClipOption=this.m_bNormalizeOutputGeometry?4:2)):this.m_inputPCSHorizonClipOption=1,t.clipWithOutputHorizon?(this.m_outputPCSHorizonClipOption=0,!t.legacyHorizonClipping&&this.m_projTransform.getOutputSR().isPannable()&&(this.m_outputPCSHorizonClipOption=this.m_bNormalizeOutputGeometry?4:2)):this.m_outputPCSHorizonClipOption=1,this.m_centralMeridianOfOutputGCS=t.centralMeridianOfOutputGCS,this.m_densificationStepInput=t.densificationStep;const s=this.m_projTransform.getExtendedParamsInternal();this.m_bDontGeonormalizePolygon=s.hasFlag(0x80000000),this.m_bDontHackPolesInGeogToGeog=s.hasFlag(0x40000000),this.m_bClipOutCurvedPoles=s.hasFlag(0x20000000)}project(e,t){if(this.m_projTransform.isIdentity()||e.isEmpty())return e;let s=e.getGeometryType();if(s===I.G.enumPoint)return this.projectPoint(e,t);let i=this.m_projTransform.getInputSR().getCoordinateSystemType(),r=this.m_projTransform.getOutputSR().getCoordinateSystemType(),n=this.m_projTransform.getInputSR(),a=this.m_projTransform.getOutputSR();if(0===i&&i===r){let t=sR(n,a),s=e.clone();return s.applyTransformation(t),s}switch(s){case I.G.enumPolyline:case I.G.enumPolygon:return this.projectMultiPath(e,t);case I.G.enumMultiPoint:return this.projectMultiPoint(e,t);case I.G.enumEnvelope:return this.projectEnvelope(e,t);case I.G.enumGeometryCollection:return this.projectGeometryCollection(e,t);default:(0,I.d)("")}}projectPoint(e,t){let s=[e.getXY()],i,r=null;(i=e.hasAttribute(1))&&(r=[e.getZ()]),this.transformInPlaceZ(s,r,1,s,r,null);let n=e.clone();return n.setXY(s[0]),i&&n.setZ(r[0]),n}projectMultiPoint(e,t){let s=new G.M({copy:e}),i=this.m_projTransform.getInputSR(),r=this.m_projTransform.getOutputSR(),n=i.getCoordinateSystemType(),a=r.getCoordinateSystemType();if(3===n&&(0,I.g)(0),(s=iR(s,i,this.m_inputPCSHorizonClipOption,t)).isEmpty())return s;2===n&&iW(i,0,s),iQ(this.m_projTransform,s,!1);let o=0;3===a&&(0,I.g)(0);let l=2===a;return l?o=r.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(o=this.m_centralMeridianOfOutputGCS),l&&0!==this.m_outputPCSHorizonClipOption||(s=iT(s,rM(r),o,!1,0,t)),l&&(s=iG(s,r,this.m_outputPCSHorizonClipOption,t),iL(r,s,this.m_bNormalizeOutputGeometry),s.isEmpty()),s}projectMultiPath(e,t){let s=e.getGeometryType();return s===I.G.enumPolygon?this.projectPolygon(e,t):s===I.G.enumPolyline?this.projectPolyline(e,t):void(0,I.d)("project_multi_path_")}projectEnvelope(e,t){this.m_projTransform.getInputSR(),this.m_projTransform.getOutputSR();let s=this.m_projTransform.isVertical()&&e.hasAttribute(1),i=b.E.constructEmpty();if(s&&(i=e.queryInterval(1,0)),i.width()>0){let s=e.clone();s.setInterval(1,0,i.vmin,i.vmin);let r=this.projectEnvelopeHelper(s,t);s.setInterval(1,0,i.vmax,i.vmax);let n=this.projectEnvelopeHelper(s,t);return r.merge(n),r}return this.projectEnvelopeHelper(e,t)}projectPolygon(e,t){let s;(0,I.g)(e.getGeometryType()===I.G.enumPolygon),(0,I.g)(!this.m_projTransform.isIdentity()),(0,I.g)(!e.isEmpty());let i=this.m_projTransform.getInputSR(),r=this.m_projTransform.getOutputSR(),n=i.getCoordinateSystemType(),a=r.getCoordinateSystemType(),o=new G.a({copy:e});3===n&&(0,I.g)(0),3===a&&(0,I.g)(0);let l=2===n,h=2===a,m=l?i.getGCS():i,g=h?r.getGCS():r,_=!h&&!this.m_bDontHackPolesInGeogToGeog,p=!1,d=iR(o,i,this.m_inputPCSHorizonClipOption,t);if(d.isEmpty())return d;let c=this.m_densificationStepInput,f=!Number.isNaN(c);f&&(d=(new V.O).execute(d,c,0,0,t));let x=h?r.getPCSInfo():null,P=NaN;l&&(P=i.getCentralMeridian());let E=null!==r.getGCSSplitLines();if(this.m_bDontGeonormalizePolygon){let e=d;if(l&&(iZ(i,P,e),f)){let e=i.getUnitsPerMillimeter();c*=i.getGCS().getUnitsPerMillimeter()/e}if(iJ(this.m_projTransform,e,_),f){let e=i.getGCS().getUnitsPerMillimeter();c*=r.getGCS().getUnitsPerMillimeter()/e}s=e}else{var y,S,C,w,b,T,N,F,H;let e=new G.P({vd:d.getDescription()});if(e.addAndExplicitlyOpenAllPaths(d,!1),l){if(iZ(i,P,e),f){let e=i.getUnitsPerMillimeter();c*=i.getGCS().getUnitsPerMillimeter()/e}if(this.m_bClipOutCurvedPoles){let s=i.getPCSInfo(),r=s.getSouthPoleGeometry()===u.PE_POLE_LINE_CURVED,n=s.getNorthPoleGeometry()===u.PE_POLE_LINE_CURVED;if(r||n){let s=v.Envelope2D.constructEmpty();e.queryLooseEnvelope(s),s.inflateCoords(1,1);let i=89.9999*m.getOneDegreeGCSUnit();r&&(s.ymin=-i),n&&(s.ymax=i),e=(0,D.a)(e,s,m,0,0,t)}}}if(iJ(this.m_projTransform,e,_),f){let e=rM(i).getUnitsPerMillimeter();c*=rM(r).getUnitsPerMillimeter()/e}let n=NaN;h?(x=r.getPCSInfo(),n=r.getCentralMeridian()):Number.isNaN(this.m_centralMeridianOfOutputGCS)||(n=this.m_centralMeridianOfOutputGCS);let a=sB(i)|sB(r),o=10*g.getTolerance(0);this.m_bDontHackPolesInGeogToGeog&&(a=3,o=10*g.getTolerance(0)),y=d,S=i,C=e,w=g,b=n,T=t,N=a,F=o,H=this.m_bNormalizeOutputGeometry,s=new ii(y,null,C,S,w,b,N,F,T).geoNormalizePolygonGeometry(H),a=0}if(E&&((0,I.g)(!r.isPannable()),s=iC(s,r,t)),h){if(!p){let e=g.getPannableExtent().width();if(s.queryInterval(0,0).width()>=e-10*g.getTolerance(0)){let e=x.getNorthPoleLocation(),t=x.getSouthPoleLocation(),s=x.getNorthPoleGeometry(),i=x.getSouthPoleGeometry(),r=0;s===u.PE_POLE_POINT&&e!==u.PE_POLE_OUTSIDE_BOUNDARY&&(r=1),i===u.PE_POLE_POINT&&t!==u.PE_POLE_OUTSIDE_BOUNDARY&&(r|=2),p||=0!==r}}s=iG(s,r,this.m_outputPCSHorizonClipOption,t),f&&(s=(new V.O).execute(s,c,0,0,t)),iz(r,s,this.m_bNormalizeOutputGeometry)}return s.isEmpty()||p&&(s=(new sN).execute(s,r,!1,t)),s}projectPolyline(e,t){let s;(0,I.g)(e.getGeometryType()===I.G.enumPolyline),(0,I.g)(!this.m_projTransform.isIdentity()),(0,I.g)(!e.isEmpty());let i=this.m_projTransform.getInputSR(),r=this.m_projTransform.getOutputSR(),n=i.getCoordinateSystemType(),a=r.getCoordinateSystemType(),o=new G.P({copy:e});3===n&&(0,I.g)(0),3===a&&(0,I.g)(0);let l=2===n,h=2===a;l&&i.getGCS();let m=h?r.getGCS():r,g=!h&&!this.m_bDontHackPolesInGeogToGeog,u=iR(o,i,this.m_inputPCSHorizonClipOption,t);if(u.isEmpty())return u;let _=NaN;l&&(_=i.getCentralMeridian());let p=null!==r.getGCSSplitLines(),d=this.m_densificationStepInput,c=!Number.isNaN(d);if(c&&(u=(new V.O).execute(u,d,0,0,t)),this.m_bDontGeonormalizePolygon){if(l&&(iZ(i,_,u),c)){let e=i.getUnitsPerMillimeter();d*=i.getGCS().getUnitsPerMillimeter()/e}if(iJ(this.m_projTransform,u,g),c){let e=i.getGCS().getUnitsPerMillimeter();d*=r.getGCS().getUnitsPerMillimeter()/e}s=u}else{var f,x,P,E,y,S,C,v,w;let e=new G.P({vd:u.getDescription()});if(e.addAndExplicitlyOpenAllPaths(u,!1),l&&(iZ(i,_,e),c)){let e=i.getUnitsPerMillimeter();d*=i.getGCS().getUnitsPerMillimeter()/e}if(iJ(this.m_projTransform,e,g),c){let e=i.getGCS().getUnitsPerMillimeter();d*=r.getGCS().getUnitsPerMillimeter()/e}let n=NaN;h?n=r.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(n=this.m_centralMeridianOfOutputGCS);let a=sB(i)|sB(r),o=10*m.getTolerance(0);this.m_bDontHackPolesInGeogToGeog&&(a=3,o=0),f=u,x=i,P=e,E=m,y=n,S=t,C=a,v=o,w=this.m_bNormalizeOutputGeometry,s=new ii(f,null,P,x,E,y,C,v,S).geoNormalizePolylineGeometry(w),a=0}return p&&((0,I.g)(!r.isPannable()),s=iC(s,r,t)),h&&(s=iG(s,r,this.m_outputPCSHorizonClipOption,t),c&&
1(s=(new V.O).execute(s,d,0,0,t)),iz(r,s,this.m_bNormalizeOutputGeometry)),s.isEmpty(),s}projectGeometryCollection(e,t){return(0,I.g)(0),{}}projectEnvelopeHelper(e,t){let s=(e.height()+e.width())/400;if(0!==s){let i=(new V.O).execute(e,s,0,0,t),r=this.projectMultiPath(i,t),n=new w.E({vd:e.getDescription()});if(r.isEmpty()){let s=Math.min(e.height(),e.width()),r=(0,w.b)(this.m_projTransform.getInputSR(),e,!0).total();if(s>100*r){let e=v.Envelope2D.constructEmpty();if(s>100*Math.max(r,(0,w.c)(this.m_projTransform.getOutputSR(),e,!0).total()*(this.m_projTransform.getInputSR().getOneMeter()/this.m_projTransform.getOutputSR().getOneMeter())))return n}let a=new G.P;a.addAndExplicitlyOpenAllPaths(i,!1),this.projectMultiPath(a,t).queryEnvelope(n);let o=new G.M({vd:e.getDescription()});o.reserve(4);let l=new w.P;for(let t=0;t<4;t++)e.queryCornerByVal(t,l),o.add(l);let h=this.projectMultiPoint(o,t),m=new w.E;return h.queryEnvelope(m),n.merge(m),n}return r.queryEnvelope(n),n}{let s=e.getCenterXY(),i=new w.P(s),r=this.projectPoint(i,t),n=new w.E({vd:e.getDescription()});if(r.isEmpty())n.setEmpty();else{e.copyTo(n);let t=r.getXY();n.setCoords(t.x,t.y,t.x,t.y)}return n}}transformInPlace(e,t,s,i){return(0,I.g)(0),0}transformInPlaceZ(e,t,s,i,r,n){if(this.m_projTransform.isIdentity())return e!==i&&(0,b.D)(i,e,s),t!==r&&(0,b.b)(r,t,0,0,s),s;let a=this.m_projTransform,o=a.getInputSR(),l=a.getOutputSR(),h=o.getCoordinateSystemType(),m=l.getCoordinateSystemType();if(0===h&&h===m)return sR(o,l).transformPoints2D(e,s,i),a.isVertical()&&(0,I.g)(0),s;3===h&&(0,I.t)("image: transform_in_place_"),3===m&&(0,I.t)("image: transform_in_place_"),function(e,t,s,i,r){let n=i.getCoordinateSystemType();if(2===n){if(0===r)s!==e&&(0,b.D)(s,e,t),function(e,t,s){let i=e.getPCSHorizon();if(i.getGeometryType()===I.G.enumPolygon){let r=e.getDefaultPrecisionSR().getTolerance(0);for(let e=0;e<s;e++)1!==t$(i,t[e],r)&&t[e].setNAN();return}if(i.getGeometryType()===I.G.enumEnvelope){for(let e=0;e<s;e++)i.contains(t[e])||t[e].setNAN();return}(0,I.a)("")}(i,s,t);else if(s!==e&&(0,b.D)(s,e,t),i.isPannable()){let e=i.getTolerance(0);(function(e,t,s,i){for(let r=0;r<t;r++){if(e[r].y<s.ymin||e[r].y>s.ymax){e[r].setNAN();continue}let t=e[r].x;e[r].x=iV(t,s,i)}})(s,t,i.getPannableExtent(),e),iN(s,t,i,0)}}else{(0,I.g)(1===n);let r=i.getTolerance(0),a=i.getPannableExtent();for(let i=0;i<t;i++)s[i].assign(function(e,t,s){let i=new b.P;return i.x=iV(e.x,t,s),i.y=e.y,i}(e[i],a,r))}}(e,s,i,o,this.m_inputPCSHorizonClipOption),r!==t&&(0,b.b)(r,t,0,0,s),2===h&&iK(o,0,i,s),i1(this.m_projTransform,i,r,s,!1);let g=0,u=2===m;u?g=l.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(g=this.m_centralMeridianOfOutputGCS),u&&0!==this.m_outputPCSHorizonClipOption||iN(i,s,l.getGCS(),g),u&&(ib(i,s,l,this.m_outputPCSHorizonClipOption),iY(l,i,s,!1));let _=s;for(let e=0;e<s;++e)i[e].isNAN()&&(r&&(r[e]=NaN),_--);return _}}function sB(e){if(2!==e.getCoordinateSystemType())return 0;let t=0,s=e.getPCSInfo(),i=s.getNorthPoleLocation(),r=s.getSouthPoleLocation(),n=s.getNorthPoleGeometry(),a=s.getSouthPoleGeometry();return n===u.PE_POLE_POINT&&i!==u.PE_POLE_OUTSIDE_BOUNDARY&&(t=1),a===u.PE_POLE_POINT&&r!==u.PE_POLE_OUTSIDE_BOUNDARY&&(t|=2),t}function sR(e,t){let s=e.getHorzUnitFactor(),i=t.getHorzUnitFactor(),r=1,n=1,a=0x13167e5/180;1===e.getUnit().getUnitType()&&(r=a),1===t.getUnit().getUnitType()&&(n=a);let o=s/i*(r!==n?r/n:1),l=new N.T;return l.setScaleCoords(o,o),l}class sO{getOperatorType(){return 10300}supportsCurves(){return!0}accelerateGeometry(e,t,s){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,s){return!t||t.isIdentity()?e:new sY(e,t,s)}execute(e,t,s){return t.isIdentity()?e:sk(e,t,s)}transform(e,t,s,i,r=!0){return r?function(e,t,s,i){e.m_projector.transformInPlaceZ(t,null,s,i,null,null);let r=i.slice(0,s).filter(e=>!e.isNAN());for(let e=0,t=r.length;e<t;++e)i[e].assign(r[e]);return r.length}(e,t,s,i):sA(e,t,s,i,null)}transform3D(e,t,s,i,r=!0){return(0,I.g)(0),0}foldInto360Range(e,t){return sM(e,t,null)}foldInto360RangeGeodetic(e,t,s){return function e(t,s,i,r){if(t&&s&&s.isPannable()||(0,I.a)("fold_into_360_range_geodetic"),t.isEmpty())return t;if(4===i)return sM(t,s,r);let n=t,a=n.getGeometryType();if((0,I.h)(a)){n=iA(t,s);let e=new v.Envelope2D;n.queryEnvelope(e);let r=(0,w.c)(s,e,!1).total(),a=s.getPannableExtent(),o=Math.floor((e.xmin-a.xmin)/a.width())*a.width()+a.xmin,l=n;for(;o<e.xmax;)o>e.xmin+r&&o<e.xmax-r&&(l=iH(l,s,i,!0,o)),o+=a.width();n=l}else{if(a===I.G.enumEnvelope){let t=new G.a({vd:n.getDescription()});return t.addEnvelope(n,!1),e(t,s,i,r)}if((0,I.f)(a)){let t=new G.P({vd:n.getDescription()});return t.addSegment(n,!0),e(t,s,i,r)}}return sM(n,s,r)}(e,t,s,null)}normalizeGeometryEx(e,t,s,i,r=0){return function(e,t,s,i,r){if(!t.isPannable()||e.isEmpty())return e;let n=e.getGeometryType();n===I.G.enumGeometryCollection&&(0,I.t)("not yet impl for geometry collection");let a=t.getPannableExtent();Number.isNaN(s)&&(s=a.getCenterX());let o=a.width(),l=.5*o,h=r>0,m=e.queryInterval(0,0);if(!h&&m.width()<l||!(0,I.i)(e.getGeometryType())){let t=m.getCenter();if(Math.abs(t-s)<=l)return e;{let i=new N.T,r=(0,b.G)((s-t)/o)*o;i.setShiftCoords(r,0);let n=e.clone();return n.applyTransformation(i),n}}if(n===I.G.enumPolygon){let n=new G.P({vd:e.getDescription()});n.addAndExplicitlyOpenAllPaths(e,!1),h&&(n=sX(n,t,2,r,NaN,null,!0));let a=[];if(!i){{let s=e;h&&(s=new G.a).add(n,!1);let i=function(e,t,s){let i=rI();t.querySpheroidData(i);let r=t.getGCS()!==t?t.getSRToGCSTransform():null,n=(0,b.m)(b.P,100),a=new w.d(0,0,0),o=e.getPointCount(),l=t.getGCS().getUnit().getUnitToBaseFactor();for(let t=0;t<o;){let s=Math.min(100,o-t);e.queryCoordinates(n,s,t,t+s),r&&(new sO).transform(r,n,s,n,!1);for(let e=0;e<s;e++){if(n[e].isNAN())continue;n[e].scale(l);let t=L(i.majorSemiAxis,i.e2,n[e]);a.addThis(t)}t+=s}let h=j(i.majorSemiAxis,i.e2,a);if(h.scale(1/l),!new ie(t.getGCS(),h).project(e))return 0;s.length=e.getPathCount();let m=0>e.calculateArea2D();for(let t=0,i=e.getPathCount();t<i;t++){let i=e.calculateRingArea2D(t),r=m?i<0:i>0;s[t]=r}return m?-1:1}(e,t,a);if(i)i<0&&n.reverseAllPaths();else{let e=s.getPathCount();for(let t=0;t<e;t++)a.push(s.calculateRingArea2D(t)>0)}}i=a}return new ii(null,i,n,null,t,s,3,0,null).geoNormalizePolygonGeometry(!0)}if(n===I.G.enumPolyline){let i=new G.P({vd:e.getDescription()});return i.addAndExplicitlyOpenAllPaths(e,!1),h&&(i=sX(i,t,2,r,NaN,null,!0)),new ii(null,null,i,null,t,s,3,0,null).geoNormalizePolylineGeometry(!0)}if(n===I.G.enumMultiPoint){let t=e.getAttributeStreamRef(0),i,r=null,n=s,a=0,h=.1*o;for(let s=0,m=e.getPointCount();s<m;s++){let m=t.read(2*s),g=m-n;if(Math.abs(g)>l&&Math.abs(a-=g=(0,b.G)(g/o)*o)<h&&(a=0),0!==a){r||(r=(i=e.clone()).getAttributeStreamRef(0));let t=m+a;r.write(2*s,t)}n=m}return r?(i.notifyModified(),i):e}(0,I.d)("")}(e,t,s,i,r)}normalizeGeometry(e,t,s){return function(e,t,s){if(!t.isPannable()||e.isEmpty())return e;let i=t.getPannableExtent().width(),r=.5*i,n=e.queryInterval(0,0);if(n.width()<r||!(0,I.i)(e.getGeometryType())){if(Number.isNaN(s))return e;let t=n.getCenter();if(Math.abs(t-s)<=r)return e;{let r=new N.T,n=(0,b.G)((s-t)/i)*i;r.setShiftCoords(n,0);let a=e.clone();return a.applyTransformation(r),a}}let a=e.getGeometryType(),o=e.getAttributeStreamRef(0),l=e.clone(),h=l.getAttributeStreamRef(0),m=0,g=0,u=0,_=(0,I.h)(a)?0:-1,p=b.E.constructEmpty(),d=!1;for(let t=0,n=e.getPointCount();t<n;t++){let n=o.read(2*t);t===g&&((0,I.h)(a)?(0===_&&Number.isNaN(s)&&(d=!0),_>0&&Number.isNaN(s)&&(s=p.getCenter(),d=!1),g=e.getPathEnd(_),_++):g=e.getPointCount(),Number.isNaN(s)?u=n:(u=s,m=0));let l=n-u;Math.abs(l)>r&&Math.abs(m-=l=(0,b.G)(l/i)*i)<.1*i&&(m=0);let c=n+m;h.write(2*t,c),d&&p.mergeCoordinate(c),u=n}return l.notifyModified(),l}(e,t,s)}clipToSpatialReference(e,t,s,i=0){return function(e,t,s,i){let r=t.getCoordinateSystemType();if(0===r){let i=new rj;return t.queryPrecisionDescriptor(i),sU(e,i,t,s)}let n=e;(2===i||3===i)&&t.isPannable()&&(n=sM(n,t,s));let a=new rj;if(t.queryPrecisionDescriptor(a),n=sU(n,a,t,s),0===i||n.isEmpty())return n;if(1===r){if(1===i){let e=new v.Envelope2D;n.queryLooseEnvelope(e);let i=t.getPannableExtent(),r=.01*i.width();return i.xmin=e.xmin-r,i.xmax=e.xmax+r,(new D.O).execute(n,i,t,s)}return n}if(2===r){let e=t.getPCSHorizon();if(1===i||2===i){let i=(new sH).execute(n,e,t,s);return i===e?i.clone():i}return n}if(3===r)return n;(0,I.d)("missing implementation")}(e,t,s,i)}}class sY extends F.G{constructor(e,t,s){super(),this.m_projTrans=t,this.m_progressTracker=s,this.m_index=-1,e||(0,I.a)(""),this.m_inputGeom
1s=e}next(){let e=this.m_inputGeoms.next();return null!=e?((0,I.o)(e),(0,I.c)(e),this.m_index=this.m_inputGeoms.getGeometryID(),sk(e,this.m_projTrans,this.m_progressTracker)):null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}function sX(e,t,s,i,r,n,a=!1){let o,l,h;e||(0,I.a)("Geometry.Geodetic_densify.densify");let m=e.getGeometryType();if((0,I.c)(e),e.isEmpty()||(0,I.e)(m))return e;let g=new sK;g.m_sr=t,g.m_gcs=t.getGCS(),g.m_transform=g.m_gcs!==t?t.getSRToGCSTransform():null,g.m_progressTracker=n;let u=rI();if(g.m_gcs.querySpheroidData(u),g.m_a=u.majorSemiAxis,g.m_eSquared=u.e2,g.m_rpu=g.m_gcs.getUnit().getUnitToBaseFactor(),g.m_gcsTolerance=g.m_gcs.getTolerance(0),g.m_radTolerance=g.m_gcsTolerance*g.m_rpu,g.m_maxLength=i,g.m_maxDeviation=r,g.m_curveType=s,m===I.G.enumEnvelope){let t=new G.a({vd:e.getDescription()});t.addEnvelope(e,!1),o=t,m=I.G.enumPolygon}else if((0,I.f)(m)){let t=new G.P({vd:e.getDescription()});t.addSegment(e,!0),o=t,m=I.G.enumPolyline}else o=e;if(4!==g.m_curveType){if((0,I.g)((0,I.h)(m)),(l=g.replaceCurvesWithLinesAndProjectToGCSAsMultiPoint_(o)).isEmpty())return l;l=sL(g.m_rpu,l);let e=g.geodeticDensify(l);a||(e=(new sO).foldInto360RangeGeodetic(e,g.m_gcs,g.m_curveType)),h=g.m_transform&&!g.m_transform.isIdentity()?(new sO).execute(e,g.m_transform.getInverse(),n):e}else{let e;if((0,I.g)((0,I.h)(m)),t.isPannable())e=iA(o,t);else{let s=t.getPCSHorizon();(e=(new sH).execute(o,s,t,n))===s&&(e=s.clone())}if((l=e).isEmpty())return l;h=g.shapePreservingDensify(l)}return h}function sL(e,t){let s=new v.Envelope2D;if(t.queryLooseEnvelope(s),s.width()*e<Math.PI)return t;let i=!1,r=t.querySegmentIterator(),n=new b.P,a=new b.P;for(;r.nextPath();)for(;r.hasNextSegment();){let t=r.nextSegment();if(n.setCoordsPoint2D(t.getStartXY()),a.setCoordsPoint2D(t.getEndXY()),n.scale(e),a.scale(e),Math.abs(n.x-a.x)>Math.PI&&(!sW(n,a)||Math.abs(n.x-a.x)>2*Math.PI)){i=!0;break}}if(!i)return t;let o=t.createInstance();o.reserve(t.getPointCount());let l=t.getDescription().getAttributeCount()>1,h=new b.P,m=new b.P,g=new b.P(0,0),u=new b.P(0,0),_=new w.P;for(r.resetToFirstPath();r.nextPath();){let t=NaN,s=0;for(;r.hasNextSegment();){let i=r.nextSegment();if(n.setCoordsPoint2D(i.getStartXY()),a.setCoordsPoint2D(i.getEndXY()),n.scale(e),a.scale(e),Number.isNaN(t)?(s=s4(n.x,NaN,s),g.setCoordsPoint2D(n)):g.setCoordsPoint2D(u),t=g.x,sW(n,a)){if(a.x-n.x>2*Math.PI)for(;a.x-n.x>2*Math.PI;)a.x-=2*Math.PI;else if(a.x-n.x<-(2*Math.PI))for(;a.x-n.x<-(2*Math.PI);)a.x+=2*Math.PI;s=s4(a.x,NaN,s),u.setCoordsPoint2D(a)}else h.setCoordsPoint2D(a),function(e){if(e.x<-Math.PI)for(;e.x<-Math.PI;)e.x+=2*Math.PI;else if(e.x>Math.PI)for(;e.x>Math.PI;)e.x-=2*Math.PI}(h),s=s4(h.x,t,s),u.setCoords(s+h.x,h.y);if(.5>Math.abs(u.x-a.x)&&u.setCoordsPoint2D(a),l)i.queryCoord(0,_),m.setCoordsPoint2D(g),m.scale(1/e),_.setXY(m),r.isFirstSegmentInPath()?o.startPathPoint(_):o.lineToPoint(_),r.isLastSegmentInPath()&&!r.isPathClosed()&&(i.queryCoord(1,_),m.setCoordsPoint2D(u),m.scale(1/e),_.setXY(m),o.lineToPoint(_));else{r.isFirstSegmentInPath()&&o.insertPath2D(-1,null,0,0,!0);let t=o.getPathCount()-1;m.setCoordsPoint2D(g),m.scale(1/e),o.insertPoint2D(t,-1,m),r.isLastSegmentInPath()&&!r.isPathClosed()&&(m.setCoordsPoint2D(u),m.scale(1/e),o.insertPoint2D(t,-1,m))}}}return o}function sz(e,t,s,i,r,n,a,o,l,h,m,g){let u=new b.P,_=new b.P,p=i.compare(r)>0;s1(p,i,r,u,_);let d=s$(e,t,s,u,_,n,a,o,l,h,null,m,g);return p&&s0(l,h,null,m),d}function sW(e,t){return!(!r7(e.y,b.o)||!r7(t.y,b.o))||!(!r7(e.y,-b.o)||!r7(t.y,-b.o))}function sj(e,t){return!(!r7(e.y,b.o)||r7(t.y,b.o))||!(!r7(e.y,-b.o)||r7(t.y,-b.o))}function sZ(e,t){return!(!r7(t.y,b.o)||r7(e.y,b.o))||!(!r7(t.y,-b.o)||r7(e.y,-b.o))}class sK{constructor(){this.m_sr=null,this.m_gcs=null,this.m_transform=null,this.m_progressTracker=null,this.m_a=0,this.m_eSquared=0,this.m_rpu=0,this.m_gcsTolerance=0,this.m_radTolerance=0,this.m_maxLength=0,this.m_maxDeviation=0,this.m_curveType=0}geodeticDensify(e){let t=e.createInstance(),s=e.querySegmentIterator(),i=[],r=[],n=new G.S,a=e.getDescription().getAttributeCount()>1;for(;s.nextPath();){let e=[0];for(;s.hasNextSegment();){let o=s.nextSegment(),l=o.getStartXY(),h=o.getEndXY();l.scale(this.m_rpu),h.scale(this.m_rpu);let m=new b.P,g=new b.P,u=l.compare(h)>0;s1(u,l,h,m,g),i.length=0,r.length=0,this.m_maxLength>0?s$(this.m_a,this.m_eSquared,this.m_curveType,m,g,this.m_maxLength,this.m_maxDeviation,this.m_radTolerance,null,null,a?r:null,i,e):(0,I.g)(0),u&&s0(null,null,a?r:null,i),i[0].setCoordsPoint2D(o.getStartXY()),i.at(-1).setCoordsPoint2D(o.getEndXY());let _=1/this.m_rpu;for(let e=1,t=i.length-1;e<t;e++)i[e].scale(_);
1if(a){let e=s2(u,o,n);sJ(s.isFirstSegmentInPath(),s.isLastSegmentInPath()&&!s.isPathClosed(),o,e,r,i,t)}else sQ(s.isFirstSegmentInPath(),s.isLastSegmentInPath()&&!s.isPathClosed(),i,t)}}return t}shapePreservingDensify(e){let t=e.createInstance(),s=e.querySegmentIterator(),i=[],r=[],n=new G.S,a=e.getDescription().getAttributeCount()>1;for(;s.nextPath();)for(;s.hasNextSegment();){let e=s.nextSegment(),o=e.getStartXY(),l=e.getEndXY(),h=o.compare(l)>0,g=s2(h,e,n);i.length=0,r.length=0,function(e,t,s,i,r,n,a,o,l){let h=i.isCurve(),g=e*Math.sqrt(1-t)*Math.PI*179/180,u=n;n>0&&!(n>g)||(u=g);let _=a>0,p=NaN;_&&(p=function(e,t,s){let i=s/((1-t)*e*2),r=i*i;return s*(1-r*(.16666666666666666-.008333333333333333*r))}(e,t,a));let d=1===r.getCoordinateSystemType(),c=null;d||(c=r.getPECoordSys());let f=r.getTolerance(0),x=i.getStartXY(),P=i.getEndXY(),E=new b.P,y=new b.P;if(d)E.setCoordsPoint2D(x),E.scale(s),y.setCoordsPoint2D(P),y.scale(s);else{let e=[x.x,x.y,P.x,P.y];m.projToGeog(c,2,e),E.setCoords(e[0],e[1]),E.scale(s),y.setCoords(e[2],e[3]),y.scale(s)}let S=0,C=0,v=[],G=[],T=[];v.push(P.clone()),G.push(y.clone()),T.push(1),l.push(x.clone()),null!==o&&o.push(C);let N=r.isPannable(),D=x.clone(),V=[.5,.33333333333333337,.6666666666666666,.16666666666666669,.8333333333333333],F=5;h||(_?(V[0]=.5,V[1]=.25,V[2]=.75,F=3):F=1),(0,I.g)(u>0);let H=e=>{if(e=e.clone(),null!==c){let t=[e.x,e.y];m.projToGeog(c,1,t),e.setCoords(t[0],t[1])}return e.scale(s),e};for(;G.length>0;){let n=v.at(-1).clone();y.assign(G.at(-1));let a=T.at(-1),g=!1,x=NaN,P=function(e,t,s,i,r,n,a,o){let l=[],h=(0,b.m)(Array,8),g=2,u=r.getCoord2D(n);h[0][0]=u.x,h[0][1]=u.y,u=r.getCoord2D(a),h[1][0]=u.x,h[1][1]=u.y;let _=e=>{if(null!==s){let t=m.projToGeog(s,e,h);(0,I.g)(t===e)}for(let e of h)e[0]*=i,e[1]*=i};_(2),l.push(L(e,t,new b.P(h[0][0],h[0][1]))),l.push(L(e,t,new b.P(h[1][0],h[1][1])));let p=w.d.distance(l[0],l[1]);if(p>o)return p;let d=0;for(g=3;g<=17;){let s=1/(g-1),i=0;for(let e=1;e<g;++e)if(1&e){let t=(0,b.q)(n,a,e*s);r.queryCoord2D(t,u),h[i][0]=u.x,h[i][1]=u.y,i++}_(i);let m=1;for(let s=0;s<i;++s)l.splice(m,0,L(e,t,new b.P(h[s][0],h[s][1]))),m++;let c=l[m=0];m++;let f=0;for(;m!==l.length;++m){let e=l[m];f+=w.d.distance(c,e),c=e}if(f>o)return f;if(d=f-p,(0,I.g)(d>=0||Math.abs(d)<1e-14*f),d<0&&(d=0),p=f,f+d<=o)return f+d;g=2*g-1}return p+d}(e,t,c,s,i,C,a,u),k=u>=P&&Math.abs(E.y-y.y)<.9*Math.PI;d&&k&&(k=Math.abs(E.x-y.x)<.9*Math.PI);let A=new b.P,M=new b.P,U=!1;if(!_&&k&&k&&(U=!0),i.calculateSubLength(C,a)<=f&&(U=!0),!U)for(let o=0;o<F;o++){let l=(0,b.q)(C,a,V[o]),m=new b.P;i.queryCoord2D(l,m);let u=H(m);if(0===o&&(x=l,A.setCoordsPoint2D(m),M.setCoordsPoint2D(u),!k)||((0,I.g)(_),d&&Math.abs(E.x-u.x)>=Math.PI)){g=!0;break}let c=new b.P,f=new b.P;h?f=H(b.P.lerp(D,n,V[o])):(m.clone(),f=u.clone());let P=function(e,t,s,i,r){let n=L(e,t,s),a=L(e,t,i);return j(e,t,w.d.lerp(n,a,r))}(e,t,E,y,V[o]),S=P.clone();if(d?(S.x/=s,S.y/=s):(S.x/=s,S.y/=s,sA(r.getGCSToSRTransform(),[S],1,[S],null)),S.isNAN()){let s=L(e,t,u),i=L(e,t,E),r=L(e,t,y),{second:n}=K(e,t,s,i,r,2,null);if(n>p){g=!0;break}}else{if(N){let e=r.getPannableExtent().width(),t=(0,b.q)(i.getStartX(),i.getEndX(),.5);for(;S.x<t-.5*e;)S.x+=e;for(;S.x>=t+.5*e;)S.x-=e}let s=i.getClosestCoordinateOnInterval(S,new b.E(C,a),-1),n=i.getCoord2D(s),o=function(e,t,s,i){let r=L(e,t,s),n=L(e,t,i);return w.d.distance(r,n)}(e,t,n=H(n),P);if(o>p){if(o<4*p){let s=L(e,t,n),i=L(e,t,E),r=L(e,t,y),{second:a}=K(e,t,s,i,r,2,null);o=a}if(o>p){g=!0;break}}else if(h){let s=L(e,t,u),i=L(e,t,E),r=L(e,t,y),{second:n}=K(e,t,s,i,r,3,null);if(n<=p){s=L(e,t,f);let{second:a}=K(e,t,s,i,r,3,null);n=a}if(n>p){g=!0;break}}}}g?(v.push(A.clone()),G.push(M.clone()),T.push(x)):(v.pop(),G.pop(),T.pop(),l.push(n.clone()),S+=P,null!==o&&o.push(S),D.setCoordsPoint2D(n),E.setCoordsPoint2D(y),C=a)}if(null!==o){let e=1/S;for(let t=0;t<o.length;t++)o[t]*=e}}(this.m_a,this.m_eSquared,this.m_rpu,g,this.m_sr,this.m_maxLength,this.m_maxDeviation,a?r:null,i),h&&s0(null,null,a?r:null,i),a?sJ(s.isFirstSegmentInPath(),s.isLastSegmentInPath()&&!s.isPathClosed(),e,g,r,i,t):sQ(s.isFirstSegmentInPath(),s.isLastSegmentInPath()&&!s.isPathClosed(),i,t)}return t}replaceCurvesWithLinesAndProjectToGCSAsMultiPoint_(e){let t=e.hasNonLinearSegments();if((!this.m_transform||this.m_transform.isIdentity())&&(e=iA(e,this.m_gcs),!t))return e;let s=e.createInstance();s.reserveParts(e.getPointCount(),e.getPathCount());for(let t=0,i=e.getPathCount();t<i;++t){let i=new G.M,r=e.getPathStart(t),n=e.getPathEnd(t);i.addPoints(e,r,n);let a=e.isClosedPath(t),o=!1;if(a&&n-r==1&&e.hasNonLinearSegmentsPath(t)){let t=new w.P;e.getPointByVal(r,t),i.add(t),o=!0}if(this.m_transform&&!this.m_transform.isIdentity()){if(a&&!o){let t=new w.P;e.getPointByVal(r,t),i.add(t)}if(i=(new sO).execute(i,this.m_transform,this.m_progressTracker),a&&i.getPointCount()>1){let e=i.getXY(0),t=i.getXY(i.getPointCount()-1);e.equals(t)&&i.removePoint(i.getPointCount()-1)}}i.getPointCount()>1&&(s.addPathMultiPoint(i,0,-1,!0),a&&s.closePathWithLine())}return s}}function sQ(e,t,s,i){e&&i.insertPath2D(-1,null,0,0,!0);let r=i.getPathCount()-1;i.insertPointsFromPoints(r,-1,s,0,s.length-1,!0),t&&i.insertPoint2D(r,-1,s.at(-1))}function sJ(e,t,s,i,r,n,a){a.reserve(a.getPointCount()+n.length-1);let o=new w.P;if(s.queryStart(o),e?a.startPathPoint(o):a.lineToPoint(o),n.length>2){let e=i.calculateLength2D();for(let t=1;t<n.length-1;t++){let s=i.lengthToT(r[t]*e);i.queryCoord(s,o),o.setXY(n[t]),a.lineToPoint(o)}}t&&(s.queryEnd(o),a.lineToPoint(o))}function s$(e,t,s,i,r,n,a,l,h,m,g,u,_){let p={stack:[],error:void 0,hasError:!1};try{var f,x,P;let E=(0,T.mS)(p,new o,!1),y=(0,T.mS)(p,new o,!1),S=(0,T.mS)(p,new o,!1);d.geodeticDistance(e,t,i.x,i.y,r.x,r.y,S,E,y,s);let C=S.val,v=E.val,G=y.val,w=v,N=G;w<0&&(w+=2*Math.PI),N<0&&(N+=2*Math.PI),h&&(h[0]=w),m&&(m[0]=N);let D=NaN,V=NaN;if(null!==g){let s=c.q90(e,t),r=c.q(e,t,i.y);D=(s-r)/C,V=(s+r)/C}
1let F=sj(i,r),H=sZ(i,r),k=F||H,A=(f=i,x=r,P=l,!(!s8(f,x,P)||r7(f.y,b.o)||r7(f.y,-b.o)||r7(x.y,b.o)||r7(x.y,-b.o))),M=(0,T.mS)(p,new b.S(new o,new o),!1),U=new b.P,q=new b.P,B=new b.P;_[0]=s4(i.x,NaN,_[0]);let R=_[0];if(C<=n)return u.push(i.clone()),_[0]=s4(r.x,NaN,_[0]),null!=g&&g.push(0),k?(F&&s3(i,r,g,u),H&&s7(i,r,g,u)):A?s6(i,r,v,D,V,g,u):a>0&&(q.setCoords(i.x-R,i.y),U.setCoords(r.x-_[0],r.y),(0,I.g)(0),R=0),u.push(r.clone()),C;let O=1+Math.ceil(C/n),Y=C/(O-1),X=new b.P;u.push(i.clone()),X.setCoordsPoint2D(i),q.setCoords(i.x-_[0],i.y),null!==g&&g.push(0);for(let n=1;n<O;n++){let o;if(n<O-1){let r=n*Y;d.geodeticCoordinate(e,t,i.x,i.y,r,v,M.at(0),M.at(1),s),U.setCoords(M.at(0).val,M.at(1).val),_[0]=s4(U.x,X.x,_[0]),B.setCoords(_[0]+U.x,U.y),o=n/(O-1)}else _[0]=s4(r.x,NaN,_[0]),U.setCoords(r.x-_[0],r.y),B.setCoordsPoint2D(r),o=1;k?(1===n&&F&&s3(i,B,g,u),n===O-1&&H&&s7(X,r,g,u)):A?s8(X,B,l)&&(i.x<r.x?X.x>B.x&&(_[0]+=2*Math.PI,B.setCoords(_[0]+U.x,U.y)):X.x<B.x&&(_[0]-=2*Math.PI,B.setCoords(_[0]+U.x,U.y)),s6(X,B,v,D,V,g,u)):a>0&&(0,I.g)(0),u.push(B.clone()),null!=g&&g.push(o),X.setCoordsPoint2D(B),q.setCoordsPoint2D(U),R=_[0]}return C}catch(e){p.error=e,p.hasError=!0}finally{(0,T.hk)(p)}}function s0(e,t,s,i){if(i.reverse(),null!==s&&s.reverse(),e){let s=e[0],i=t[0];e[0]=i,t[0]=s}}function s1(e,t,s,i,r){e?(i.setCoordsPoint2D(s),r.setCoordsPoint2D(t)):(i.setCoordsPoint2D(t),r.setCoordsPoint2D(s))}function s2(e,t,s){return e?(s.create(t.getGeometryType()),t.copyTo(s.get()),s.get().reverse(),s.get()):t}function s4(e,t,s){if(Number.isNaN(t)){for(;s-e>Math.PI;)s-=2*Math.PI;for(;e-s>Math.PI;)s+=2*Math.PI;return s}return s+e-t>Math.PI?s-=2*Math.PI:t-(s+e)>Math.PI&&(s+=2*Math.PI),s}function s3(e,t,s,i){if(e.y>0){let r=new b.P;r.setCoords(t.x,b.o),r7(e.x,r.x)||r7(t.y,r.y)||(i.push(r),null!==s&&s.push(0))}else{let r=new b.P;r.setCoords(t.x,-b.o),r7(e.x,r.x)||r7(t.y,r.y)||(i.push(r),null!==s&&s.push(0))}}function s7(e,t,s,i){if(t.y>0){let r=new b.P;r.setCoords(e.x,b.o),r7(t.x,r.x)||r7(e.y,r.y)||(i.push(r),null!==s&&s.push(1))}else{let r=new b.P;r.setCoords(e.x,-b.o),r7(t.x,r.x)||r7(e.y,r.y)||(i.push(r),null!==s&&s.push(1))}}function s6(e,t,s,i,r,n,a){if(function(e){return 0===e||3552713678800501e-30>=Math.abs(e)}(s)){if(b.o-e.y>0){let t=new b.P;t.setCoords(e.x,b.o),a.push(t),null!==n&&n.push(i)}if(b.o-t.y>0){let e=new b.P;e.setCoords(t.x,b.o),a.push(e),null!==n&&n.push(i)}}else{if(b.o+e.y>0){let t=new b.P;t.setCoords(e.x,-b.o),a.push(t),null!==n&&n.push(r)}if(b.o+t.y>0){let e=new b.P;e.setCoords(t.x,-b.o),a.push(e),null!==n&&n.push(r)}}}function s8(e,t,s){return Math.abs(Math.abs(e.x-t.x)-Math.PI)<=s}function s9(e,t,s,i){let r={stack:[],error:void 0,hasError:!1};try{let n=[s.x],a=[s.y-i],l=[s.x],h=[s.y+i];J(n,a),J(l,h);let m=(0,T.mS)(r,new o,!1),g=(0,T.mS)(r,new o,!1);return d.greatEllipticDistance(e,t,s.x,s.y,n[0],a[0],m,null,null),d.greatEllipticDistance(e,t,s.x,s.y,l[0],h[0],g,null,null),Math.min(m.val,g.val)}catch(e){r.error=e,r.hasError=!0}finally{(0,T.hk)(r)}}function s5(e,t,s,i,r){let n=new v.Envelope2D;s.queryEnvelope(n);let a=(0,w.b)(null,s,!0).total();if(t.xmin-n.xmin<=a&&n.xmax-t.xmax<=a)return s;let o=t.width(),l=0;for(;t.xmin+l*o<n.xmin;)l++;for(;t.xmin+l*o>n.xmin;)l--;let h=l*o,m=new N.T;m.setShiftCoords(-h,0),s.applyTransformation(m);let g=new v.Envelope2D;s.queryEnvelope(g);let u=null;if(g.xmax>t.xmax){let i=0,n=new v.Envelope2D;n.setCoords({env2D:t}),n.ymin-=1,n.ymax+=1;let a=s;for(;n.xmin<g.xmax;){g.xmax>n.xmax&&(a=iH(a,e,2,!0,n.xmax));let s=(0,w.f)(a,n),l=(0,w.c)(null,s,!0).total(),h=(0,D.c)(a,n,l,NaN,r);null===u?u=h===a?h.clone():h:(m.setShiftCoords(-i*o,0),h.applyTransformation(m),u.add(h,!1)),i++,n.xmin=n.xmax,n.xmax=t.xmax+i*o}}else u=s;return u}class ie{constructor(e,t){this.m_basisX=new w.d,this.m_basisY=new w.d,this.m_normal=new w.d,(0,I.g)(1===e.getCoordinateSystemType()),this.m_gcs=e;const s=rI();e.querySpheroidData(s),this.m_a=s.majorSemiAxis,this.m_e2=s.e2,this.m_rpu=e.getUnit().getUnitToBaseFactor(),this.m_curvCenterRad=t.mul(this.m_rpu);const i=this.m_curvCenterRad.x,r=this.m_curvCenterRad.y,n=Math.cos(i),a=Math.sin(i),o=Math.cos(r),l=Math.sin(r);this.m_cartCenter3D=function(e,t,s,i,r,n){return z(e,t,s,i,r,n,0)}(this.m_a,this.m_e2,n,a,o,l),this.m_normal.setCoordsPoint3D(this.m_cartCenter3D),this.m_d=this.m_cartCenter3D.length(),this.m_normal.divThis(this.m_d),w.d.selectRightHandedBasisFromNormal(this.m_normal,this.m_basisX,this.m_basisY),this.m_northPolePcs=this.projectPoint(b.P.construct(0,.5*Math.PI/this.m_rpu)),this.m_southPolePcs=this.projectPoint(b.P.construct(0,-(.5*Math.PI)/this.m_rpu))}project(e){let t=e.getGeometryType();if((0,I.i)(t))return(0,I.o)(e),this.projectMultiVertex(e);(0,I.a)("Gnomonic.project")}unproject(e,t,s){let i=e.getGeometryType();if((0,I.i)(i)){(0,I.o)(e);let r=e,n=[];if(i===I.G.enumPolygon){let e=r.getPathCount();for(let t=0;t<e;t++){let e=r.calculateRingArea2D(t);n.push(e)}}return this.unprojectMultiVertex(t,r),(0,I.h)(i)?(function(e,t){let s=e.getPannableExtent(),i=b.P.construct(0,0);s.centerAt(i);let r=s.width(),n=.5*r,a=new b.P;a.setNAN();let o=NaN;for(let e=0;e<t.getPathCount();e++)for(let i=t.getPathStart(e);i<t.getPathEnd(e);i++){var l,h,m,g,u;let _=t.getXY(i),p=r7(_.y,s.ymax)||r7(s.ymin,_.y);i===t.getPathStart(e)?(a.setNAN(),o=0):a.isNAN()||p||(l=_.x,h=a.x,m=n,g=r,(u=o)+l-h>m?u-=g:h-(u+l)>m&&(u+=g),o=u),_.x+=o,t.setXYNoCurves(i,_),p||a.setCoordsPoint2D(_)}t.getImpl().notifyModifiedFlags(2001)}(this.m_gcs,r),function(e,t,s,i){let r=s.getGeometryType(),n=t.getPannableExtent(),a=s,o=!1,l=!1;if(r===I.G.enumPolygon){var h,m,g,u,_,p,d;let s,r,c,f,x,P,E=new v.Envelope2D,y=b.P.construct(0,0);
1E.setCoords({env2D:n}),E.centerAt(y),h=e,m=t,g=E,u=a,_=i,x=(p=g,d=u,s=new v.Envelope2D,d.queryEnvelope(s),r=r7(p.ymax,s.ymax),c=r7(p.ymin,s.ymin),!!(f=r||c)&&(function(e,t){let s=new G.a,i=new v.Envelope2D;for(let r=0;r<t.getPathCount();r++){t.queryPathEnvelope(r,i);let n=r7(e.ymax,i.ymax),a=r7(e.ymin,i.ymin);if(!(n||a)){s.addPath(t,r,!0);continue}s.insertPath2D(-1,null,0,0,!0);let o=t.getPathStart(r),l=t.getPathEnd(r),h=l-o,m=-1;for(m=o;m<l;m++){let s=t.getXY(m);if(n=r7(e.ymax,s.y),a=r7(e.ymin,s.y),!n&&!a)break}let g=m,u=!1,_=NaN;do{let i=t.getXY(g);n=r7(e.ymax,i.y),a=r7(e.ymin,i.y);let l=o+(g+1-o)%h;if(n||a){let n=b.P.construct(_,i.y);s.insertPoint2D(r,-1,n);let a=t.getXY(l),o=r7(e.ymax,a.y),h=r7(e.ymin,a.y);o||h||(n=b.P.construct(a.x,i.y),u?s.setXYNoCurves(s.getPointCount()-1,n):s.insertPoint2D(r,-1,n)),u=!0}else s.insertPoint2D(r,-1,i),_=i.x,u=!1;g=l}while(g!==m)}t.setEmpty(),t.add(s,!1)}(p,d),f)),P=function(e,t,s,i,r){let n=[],a=[],o=.5*s.width();for(let l=0;l<i.getPathCount();l++){let h=i.getXY(i.getPathStart(l)),m=i.getXY(i.getPathEnd(l)-1),g=e[l]<0;if(Math.abs(h.x-m.x)>o){let e=function(e,t,s,i,r,n){let a,o,l=new G.a,h=new G.a,m=new N.T,g=r.getXY(r.getPathStart(i)),u=r.getXY(r.getPathEnd(i)-1),_=s.width(),p=.5*_,d=new v.Envelope2D;r.queryEnvelope(d);let c=Math.ceil(d.width()/_)+1;g.x>u.x?(a=-_,o=e?s.ymin:s.ymax):(a=_,o=e?s.ymax:s.ymin),m.setShiftCoords(a,0),l.addPath(r,i,!0),h.add(l,!1);let f=new w.P;for(let e=0;e<c;e++)h.applyTransformation(m),h.getPointByVal(0,f),l.lineToPoint(f),l.addSegmentsFromPath(h,0,0,h.getSegmentCount()-1,!1);let x=l.getXY(0),P=l.getXY(l.getPointCount()-1);x.y=o,P.y=o,l.lineTo(P);let E=new b.P;for(E.setCoordsPoint2D(P),E.x-=.5*a;Math.abs(E.x-x.x)>p;)l.lineTo(E),E.x-=.5*a;l.lineTo(x);let y=s.getCenter().x,S=new v.Envelope2D;l.queryEnvelope(S);let C=0,I=S.getCenter().x;I-y>p?C=-Math.ceil((I-y-p)/_):y-I>p&&(C=Math.ceil((y-I-p)/_)),0!==C&&(m.setShiftCoords(C*_,0),l.applyTransformation(m));let T=new G.E,V=T.addGeometry(l);ik(T,V,t,0,2,!0,s.xmin),ik(T,V,t,0,2,!0,s.xmax);let F=T.getGeometry(V),H=(0,w.f)(F,s);H.inflateCoords(0,1);let k=(0,w.c)(null,H,!0);return(0,D.c)(F,s,k.total(),NaN,n)}(g,t,s,l,i,r);n.push(e),a.push(l)}else if(!g&&0>i.calculateRingArea2D(l)){let e=function(e,t,s,i,r){let n=t.width(),a=.5*n,o=t.getCenter().x,l=new v.Envelope2D;i.queryPathEnvelope(s,l);let h,m=0,g=l.getCenter().x;if(g-o>a?m=-Math.ceil((g-o-a)/n):o-g>a&&(m=Math.ceil((o-g-a)/n)),0!==m){let e=new N.T;e.setShiftCoords(m*n,0),i.getImpl().applyTransformationToPath(e,s),i.queryPathEnvelope(s,l),g=l.getCenter().x}let u=new v.Envelope2D;t.containsExclusiveEnvelope(l)?(h=!1,u.setCoords({env2D:t})):(h=!0,u.setCoords({env2D:t}),u.xmin-=n,u.xmax+=n);let _=i.createInstance();_.addPathPoint2D(null,0,!0);let p=new b.P;if(p.setCoords(u.xmin,u.ymin),_.insertPoint2D(0,-1,p),p.setCoords(u.xmin,u.ymax),_.insertPoint2D(0,-1,p),p.setCoords(.5*(u.xmin+u.xmax),u.ymax),_.insertPoint2D(0,-1,p),p.setCoords(u.xmax,u.ymax),_.insertPoint2D(0,-1,p),p.setCoords(u.xmax,u.ymin),_.insertPoint2D(0,-1,p),p.setCoords(.5*(u.xmin+u.xmax),u.ymin),_.insertPoint2D(0,-1,p),h){_.addPath(i,s,!0);let a=new N.T;g<o?a.setShiftCoords(n,0):a.setShiftCoords(-n,0),i.getImpl().applyTransformationToPath(a,s),_.addPath(i,s,!0);let l=new G.E,h=l.addGeometry(_);ik(l,h,e,0,2,!0,t.xmin),ik(l,h,e,0,2,!0,t.xmax),_=l.getGeometry(h);let m=(0,w.f)(_,t);m.inflateCoords(0,1);let u=(0,w.c)(null,m,!0).total();_=(0,D.c)(_,t,u,NaN,r)}else _.addPath(i,s,!0);return _}(t,s,l,i,r);n.push(e),a.push(l)}}if(0===n.length)return!1;let l=new G.a({vd:i.getDescription()}),h=0,m=a[0];for(let e=0;e<i.getPathCount();e++)e===m?(l.add(n[h],!1),++h<a.length&&(m=a[h])):l.addPath(i,e,!0);return i.setEmpty(),i.add(l,!1),!0}(h,m,g,u,_),o=x||P;let S=function(e,t,s,i){let r=new v.Envelope2D;s.queryEnvelope(r);let n=(0,w.b)(null,s,!0).total();if(t.xmin-r.xmin<=n&&r.xmax-t.xmax<=n)return s;let a=s.createInstance(),o=s.createInstance(),l=new v.Envelope2D,h=s.getPathCount();for(let r=0;r<h;r++)s.queryPathEnvelope(r,l),t.xmin-l.xmin<=n&&l.xmax-t.xmax<=n?a.addPath(s,r,!0):(o.setEmpty(),o.addPath(s,r,!0),o=s5(e,t,o,!0,i),a.add(o,!0));return a}(t,E,a,i);S!==a&&(l=!0),a=S}else a=(new sO).foldInto360RangeGeodetic(a,t,2);r===I.G.enumPolygon&&(o||l)&&(a=(new sN).execute(a,t,!1,i)),a!==s&&(s.setEmpty(),s.add(a,!1))}(n,this.m_gcs,r,s)):r=iT(r,this.m_gcs,0,!0,0,s),r}(0,I.a)("Gnomonic.unproject")}projectPoint(e){let t=e.mul(this.m_rpu),s=L(this.m_a,this.m_e2,t),i=this.m_normal.dotProduct(s);if(i<=0)return b.P.construct(NaN,NaN);let r=this.m_d/i,n=s.mul(r).sub(this.m_cartCenter3D),a=new b.P;return a.x=this.m_basisX.dotProduct(n),a.y=this.m_basisY.dotProduct(n),a}unprojectPoint(e){let t=this.m_cartCenter3D.add(this.m_basisX.mul(e.x).add(this.m_basisY.mul(e.y)));return j(this.m_a,this.m_e2,t).divide(this.m_rpu)}projectMultiVertex(e){let t=e.getImpl(),s=!0,i=new b.P,r=new b.P;for(let e=0,n=t.getPointCount();e<n;e++)t.queryXY(e,i),i.y*this.m_rpu>.5*Math.PI?r.assign(this.m_northPolePcs):i.y*this.m_rpu<-(.5*Math.PI)?r.assign(this.m_southPolePcs):r.assign(this.projectPoint(i)),t.setXYNoCurves(e,r),r.isNAN()&&(s=!1);return t.notifyModifiedFlags(2001),s}unprojectMultiVertex(e,t){let s=t.getImpl(),i=e*e,r=!this.m_northPolePcs.isNAN(),n=!this.m_southPolePcs.isNAN();for(let e=0,t=s.getPointCount();e<t;e++){let t=s.getXY(e),a=new b.P;
1r&&b.P.sqrDistance(t,this.m_northPolePcs)<=i?(a.setCoords(this.m_curvCenterRad.x,.5*Math.PI),a.scale(1/this.m_rpu)):n&&b.P.sqrDistance(t,this.m_southPolePcs)<=i?(a.setCoords(this.m_curvCenterRad.x,-(.5*Math.PI)),a.scale(1/this.m_rpu)):a=this.unprojectPoint(t),s.setXYNoCurves(e,a)}s.notifyModifiedFlags(2001)}}function it(e,t,s,i,r,n){let a=t.getAttributeStreamRef(0),o=t.getPointCount(),l=!1,h=new b.P;for(let e=0;e<o;++e)if(a.queryPoint2D(2*e,h),1&n&&h.y>=s||2&n&&h.y<=-s){l=!0;break}if(!l)return!1;let m=!1;e&&(m=t.getImpl().isClosedPathInXYPlane(0));let g=new G.E,u=g.addGeometry(t),_=g.getFirstPath(u),p=-1,d=!0,c=new b.P,f=new w.P,x=G.n,P=is*r/360;for(let e=g.getFirstVertex(_);e!==G.n;e=g.getNextVertex(e)){g.queryXY(e,h);let t=1&n&&h.y>=s?1:0;if(t|=2&n&&h.y<=-s?2:0,p>0&&p!==t){if(c.x!==h.x){let t=g.getPrevVertex(e);g.queryPoint(t,f);let s=g.insertVertex(_,e,f);c.x=h.x,g.setXY(s,c)}if(m){let t=x!==G.n?g.getNextVertex(x):g.getFirstVertex(_),s=g.getPrevVertex(e);for(;t!==s;)t=g.removeVertex(t,!1);if(x!==G.n){let e=g.getXY(x),t=g.getXY(s);if(Math.abs(e.x-t.x)>P){g.queryPoint(x,f);let i=g.insertVertex(_,s,f);e.x=(0,b.q)(e.x,t.x,.5),g.setXY(i,e)}}}x=G.n}if(t&&(h.y=(0,b.f)(i,h.y),g.setXY(e,h),!d&&p!==t))if(h.x!==c.x){g.queryPoint(e,f);let t=g.insertVertex(_,e,f);g.setXYCoords(t,c.x,h.y),x=t}else x=e;p=t,c.assign(h),d=!1}if(m){if(x!==G.n){let e=g.getNextVertex(x);for(;e!==G.n;)e=g.removeVertex(e,!1)}let e=g.getFirstVertex(_),t=g.getLastVertex(_),s=g.getXY(e),i=g.getXY(t);if(!s.equals(i)&&(g.queryPoint(e,f),t=g.insertVertex(_,G.n,f),Math.abs(s.x-i.x)>P)){let e=g.insertVertex(_,t,f);s.x=(0,b.q)(s.x,i.x,.5),g.setXY(e,s)}}return t.assignCopy(g.getGeometry(u)),!0}let is=210;class ii{constructor(e,t,s,i,r,n,a,o,l){this.m_bAdjustedAtPoles=0,this.m_inputPoly=s,this.m_progressTracker=l,this.m_originalGeometry=e,this.m_originalSR=i,this.m_polygonRingFlags=t,this.m_pannableSR=r,this.m_poleSnappingTolerance=o,this.m_poleFlags=a,this.m_bAdjustedAtPoles=0,this.m_pannableExtent=function(e,t){let s=e.getPannableExtent();return Number.isNaN(t)||s.centerAtCoords(t,0),s}(this.m_pannableSR,n),this.m_centralLongitude=Number.isNaN(n)?this.m_pannableExtent.getCenterX():n,this.m_width360=this.m_pannableExtent.width(),this.m_degree=this.m_width360/360,this.m_GCSLargeDelta=is*this.m_degree,(0,I.g)(null===this.m_originalGeometry&&null===this.m_originalSR||null!==this.m_originalGeometry&&null!==this.m_originalSR)}geonormalizeRing(e,t,s,i,r,n,a){let o=s,l=new G.P({vd:this.m_inputPoly.getDescription()});l.addPath(this.m_inputPoly,e,!0),0!==this.m_poleFlags&&(this.m_bAdjustedAtPoles|=!!it(!0,l,this.m_pannableExtent.ymax-this.m_poleSnappingTolerance,this.m_pannableExtent.ymax,this.m_pannableExtent.width(),this.m_poleFlags),this.m_bAdjustedAtPoles&&(o=!1));let h=-1;o&&(h=this.m_originalGeometry.getPathStart(e));let m=l.getAttributeStreamRef(0),g=l.getPointCount(),u=0,_=m.read(0),p=0,d=3*this.m_pannableSR.getTolerance(0),c=!1,f=new b.P,x=new b.P,P=!1,E=l.hasNonLinearSegments(),y=new b.P;for(let e=1;e<g;++e){m.queryPoint2D(2*e,y);let t=y.x,s=t+u,r=s-_;if(y.x=s,Math.abs(r)>this.m_GCSLargeDelta){if(o){let t=h+e-1,s=h+(e+1<g?e:0),a=n.read(2*t);Math.abs(r-(n.read(2*s)-a)*i)>+this.m_degree&&(o=!1)}o||(u-=(0,b.f)(this.m_width360,s-_),s=t+u,++p,P=0!==u,y.x=s)}else c||(0,w.G)(f,x,y,d)&&(c=!0);P&&(E&&(0,I.d)("error in geonormalize_ring_ for curves"),m.write(2*e,s)),_=s,f.setCoordsPoint2D(x),x.setCoordsPoint2D(y)}p&&l.notifyModified();let S=l.getXY(0),C=l.getXY(g-1);if(b.P.distance(S,C)<d){let e=this.finalizeGeoNormalizeClosedRing(l,c,r);a.add(e,!1)}else{t<0&&(null!==this.m_originalGeometry?((0,I.g)(null!==this.m_originalGeometry),t=+(this.m_originalGeometry.calculateRingArea2D(e)>0)):t=1);let s=this.finalizeGeoNormalizeOpenedRing(t>0,l);a.add(s,!1)}}geoNormalizePolygonGeometry(e){(0,I.g)(this.m_originalSR&&this.m_originalGeometry||!this.m_originalGeometry&&!this.m_originalSR),(0,I.g)(this.m_pannableSR.isPannable());let t=null,s=NaN,i=!!this.m_originalSR&&this.m_originalSR.isPannable();i&&(t=this.m_originalGeometry.getAttributeStreamRef(0),s=this.m_width360/this.m_originalSR.getPannableExtent().width()),this.m_bAdjustedAtPoles=0;let r=new G.a({vd:this.m_inputPoly.getDescription()});for(let n=0,a=this.m_inputPoly.getPathCount();n<a;++n){let a=this.m_polygonRingFlags?+!!this.m_polygonRingFlags[n]:-1;this.geonormalizeRing(n,a,i,s,e,t,r)}let n=this.m_pannableSR.getTolerance(0),a=this.m_pannableExtent.width()/180;iB(r,this.m_pannableExtent,.1*n,!1);let o=v.Envelope2D.constructEmpty();
1if(o.setCoords({env2D:this.m_pannableExtent}),e){let e=!0;for(let t=0;t<2;t++){e=!0;let t=v.Envelope2D.constructEmpty();for(let s=0,i=r.getPathCount();s<i;s++)if(r.queryPathEnvelope(s,t),!(o.xmin<=t.xmin&&o.xmax>=t.xmax||t.xmin>=o.xmax||t.xmax<=o.xmin)){e=!1;break}if(e)break;o.move(.5*this.m_width360,0)}e||o.setCoords({env2D:this.m_pannableExtent})}let l=(0,D.c)(r,o,n,a,this.m_progressTracker),h=r!==l,m=this.m_originalGeometry?this.m_originalGeometry.calculateArea2D():1,g=l.calculateArea2D(),u=0;if(g>0&&m<0)u=1;else if(g<=0&&m>0)if(0===g){if(this.m_originalSR){let e=NaN;2===this.m_originalSR.getCoordinateSystemType()?e=this.m_originalSR.getPCSHorizon().calculateArea2D():1===this.m_originalSR.getCoordinateSystemType()&&(e=this.m_originalSR.getPannableExtent().getArea()),m>.99*e&&(u=-1)}}else u=-1;if(0!==u){var _;let e,t,s=(_=l.getDescription(),(e=new G.a({vd:_})).addEnvelope(o,!1),t=o.width()/180,(new V.O).execute(e,t,0,0,null));s.add(l,!1),h=!0,l=s}return h&&(l=(new sN).execute(l,this.m_pannableSR,!1,this.m_progressTracker)),l}geoNormalizePolylineGeometry(e){(0,I.g)(this.m_pannableSR.isPannable());let t=null,s=this.m_originalSR&&this.m_originalSR.isPannable(),i=1;s&&((0,I.g)(this.m_originalGeometry),i=this.m_width360/this.m_originalSR.getPannableExtent().width(),t=this.m_originalGeometry.getAttributeStreamRef(0));let r=this.m_pannableExtent.width(),n=r*(0,b.H)()*4,a=e,o=NaN,l=b.E.constructEmpty();this.m_bAdjustedAtPoles=0;let h=new G.P({vd:this.m_inputPoly.getDescription()});for(let e=0,m=this.m_inputPoly.getPathCount();e<m;++e){let m=s,g=new G.P({vd:this.m_inputPoly.getDescription()});g.addPath(this.m_inputPoly,e,!0);let u=this.m_inputPoly.isClosedPath(e);0!==this.m_poleFlags&&(this.m_bAdjustedAtPoles|=!!it(u,g,this.m_pannableExtent.ymax-this.m_poleSnappingTolerance,this.m_pannableExtent.ymax,r,this.m_poleFlags),this.m_bAdjustedAtPoles&&(m=!1));let _=-1,p=g.getPointCount(),d=!1;m&&(_=this.m_originalGeometry.getPathStart(e),d=this.m_originalGeometry.isClosedPath(e));let c=g.getAttributeStreamRef(0),f=0,x=c.read(0),P=0,E=new b.P,y=new b.P,S=!1,C=g.hasNonLinearSegments(),w=new b.P;for(let e=1;e<p;++e){c.queryPoint2D(2*e,w);let s=w.x,r=s+f,n=r-x;if(w.x=r,Math.abs(n)>this.m_GCSLargeDelta){if(m){let s=_+e-1,r=_;(!d||e+1<p)&&(r+=e);let a=t.read(2*s);Math.abs(n-(t.read(2*r)-a)*i)>+this.m_degree&&(m=!1)}m||(f-=(0,b.f)(this.m_width360,r-x),r=s+f,++P,S=0!==f,w.x=r)}S&&(C&&(0,I.d)("error in geonormalize_ring_ for curves"),c.write(2*e,r)),x=r,E.setCoordsPoint2D(y),y.setCoordsPoint2D(w)}if(P&&g.notifyModified(),a){let e=!1;if(!g.isEmpty()){let t=v.Envelope2D.constructEmpty();if(g.queryEnvelope(t),t.width()>=r||t.ymin<=this.m_pannableExtent.ymin||t.ymax>=this.m_pannableExtent.ymax)e=!0;else{if(Number.isNaN(o)){let e=this.m_centralLongitude-.5*r;(o=t.xmin+Math.round((e-t.xmin)/r)*r)>e&&(o-=r),(0,I.g)(o<=e),o<e&&(o+=r),(0,I.g)(o>=e)}let s=Math.round((o-t.xmin)/r)*r;if(t.xmin+s>o+n&&(s-=r),t.xmin+s<o-n&&(s+=r),l.mergeCoordinate(t.xmin+s),l.mergeCoordinate(t.xmax+s),!(e=l.width()>=r)){let e=new N.T;e.setShiftCoords(s,0),g.applyTransformation(e)}}}h.add(g,!1),e&&(h=(()=>{let e=new G.P({vd:h.getDescription()});for(let t=0,s=h.getPathCount();t<s;++t){let s=new G.P({vd:h.getDescription()});s.addPath(h,t,!0);let i=iT(s,this.m_pannableSR,this.m_centralLongitude,!0,0,this.m_progressTracker);e.add(i,!1)}return e})(),a=!1)}else{let e=iT(g,this.m_pannableSR,this.m_centralLongitude,!0,0,this.m_progressTracker);h.add(e,!1)}}if(a)return h;let m=this.m_pannableSR.getTolerance(0),g=this.m_pannableExtent.width()/180;return iB(h,this.m_pannableExtent,.1*m,!1),(0,D.c)(h,this.m_pannableExtent,m,g,this.m_progressTracker)}finalizeGeoNormalizeOpenedRing(e,t){let s=t.getPointCount(),i=t.getXY(0),r=t.getXY(s-1);{let e=Math.abs(r.x-i.x),t=Math.round(e/this.m_width360)*this.m_width360;(0,I.g)(Math.abs(e-t)<this.m_pannableSR.getTolerance(0))}let n=(0,b.e)(r.x-i.x),a=v.Envelope2D.constructEmpty();t.queryLooseEnvelope(a);let o=this.m_pannableExtent.getCenterX(),l=0,h=o-this.m_width360,m=o+this.m_width360;if(n>=0){let e=Math.ceil((h-a.xmin)/this.m_width360);for(e*=this.m_width360;h>a.xmin+e;)e+=this.m_width360;for(;h<a.xmax+e;)e-=this.m_width360;for(l=e,a.width()>720&&(m=h+360*Math.ceil(a.width()/360));m<a.xmax;)m+=this.m_width360}
1else{let e=Math.ceil((m-a.xmax)/this.m_width360);for(e*=this.m_width360;m<a.xmax+e;)e-=this.m_width360;for(;m>a.xmin+e;)e+=this.m_width360;for(l=e,a.width()>720&&(h=m-360*Math.ceil(a.width()/360));h>a.xmin;)h-=this.m_width360}let g=Math.round(Math.abs(r.x-i.x)/this.m_width360)*this.m_width360,u=n*g,_=a.clone();_.move(l,0);let p=new b.P(0,0),d=new N.T;d.setShiftCoords(l,0),t.applyTransformation(d);let c=new G.P({vd:t.getDescription()});c.add(t,!1),p.assign(t.getXY(s-1));let f=0,x=c.getXY(0).x;for(;n>0?_.xmax<m:_.xmin>h;)_.move(u,0),d.xd=u,t.applyTransformation(d),x+=u,this.m_pannableExtent.xmin<=x&&this.m_pannableExtent.xmax>=x&&(f=c.getPointCount()-1),t.setXY(0,p),p.assign(t.getXY(s-1)),c.addSegmentsFromPath(t,0,0,s-1,!1);let P=new G.a({vd:c.getDescription()});P.add(c,!1);let E=c.getXY(0),y=c.getXY(c.getPointCount()-1),S=P.getPointCount()-1;if(n<0?e:!e){let e=new b.P(y.x,this.m_pannableExtent.ymax);P.lineTo(e);let t=new b.P(this.m_pannableExtent.getCenterX(),this.m_pannableExtent.ymax);P.lineTo(t);let s=new b.P(E.x,this.m_pannableExtent.ymax);P.lineTo(s)}else{let e=new b.P(y.x,this.m_pannableExtent.ymin);P.lineTo(e);let t=new b.P(this.m_pannableExtent.getCenterX(),this.m_pannableExtent.ymin);P.lineTo(t);let s=new b.P(E.x,this.m_pannableExtent.ymin);P.lineTo(s)}if(P.interpolateAttributesPath(0,S,0),P.getImpl().changeRingStartPoint(f),g>this.m_width360){let e=new G.a({copy:P});d.setShiftCoords(this.m_width360,0),e.applyTransformation(d),P.add(e,!1)}return P}finalizeGeoNormalizeClosedRing(e,t,s){let i,r=new G.a({vd:e.getDescription()});if(r.add(e,!1),r.hasNonLinearSegments()&&(i=r.getPointCount()-2,r.getSegmentType(i)!==I.G.enumLine)){let e=new G.S,t=r.getPointCount()-2;r.getSegmentBuffer(t,e,!1),r.removePointFromPath(0,t+1),r.closeLastPathWithSegment(e.get())}else r.removePointFromPath(0,r.getPointCount()-1);let n=v.Envelope2D.constructEmpty();r.queryLooseEnvelope(n);let a=Math.ceil((this.m_pannableExtent.xmin-n.xmin)/this.m_width360);for(a*=this.m_width360;this.m_pannableExtent.xmin>n.xmin+a;)a+=this.m_width360;for(;this.m_pannableExtent.xmin<n.xmax+a;)a-=this.m_width360;if(0!==(a+=this.m_width360)){n.move(a,0);let e=new N.T;e.setShiftCoords(a,0),r.applyTransformation(e)}if(this.m_pannableExtent.xmin<=n.xmin&&this.m_pannableExtent.xmax>=n.xmax){let e;if(t){let e=r.calculateArea2D(),t=(new sN).execute(r,this.m_pannableSR,!0,this.m_progressTracker);if(t!==r){let s=t.calculateArea2D();(0,b.e)(e)!==(0,b.e)(s)&&t.reverseAllPaths(),r.assignMove(t)}}if(e=new G.a(s?{copy:r}:{move:r}),s)for(;n.xmin<this.m_pannableExtent.xmax;){n.move(this.m_width360,0);let t=new N.T;t.setShiftCoords(this.m_width360,0),r.applyTransformation(t),e.add(r,!1)}return e}let o=new G.a({vd:e.getDescription()});o.add(r,!1);let l=t||n.width()>this.m_width360-10*this.m_pannableSR.getTolerance(0);for(;n.xmin<this.m_pannableExtent.xmax;){n.move(this.m_width360,0);let e=new N.T;e.setShiftCoords(this.m_width360,0),r.applyTransformation(e),o.add(r,!1)}if(l){let e=o.calculateArea2D();o.setFillRule(1);let t=(o=(new sN).execute(o,this.m_pannableSR,!0,this.m_progressTracker)).calculateArea2D();(0,b.e)(e)!==(0,b.e)(t)&&o.reverseAllPaths()}return o}geonormalize_ring_(e,t,s,i,r,n,a){(0,I.g)(0)}}function ir(e){var t;let s;(0,I.g)(0);let i=(t=e,(s=new i9({},!0)).m_WKID=t,s),r=new io;return r.setVertProj_(i),r}function ia(e){return!1}class io{constructor(){this.m_hashCode=0,this.m_peVertSysVal=null,this.m_verticalUnit=new rP,this.m_verticalShift=0,this.m_userVerticalWKID=0,this.m_bIsDepth=!1}getType(){return(0,I.g)(0),0}getID(){return(0,I.g)(0),0}getLatestID(){return this.m_peVertSysVal?this.m_peVertSysVal.getLatestID():0}getOldID(){return this.m_peVertSysVal?this.m_peVertSysVal.getOldID():0}getText(){return(0,I.g)(0),""}getTextExtended(e){return(0,I.g)(0),""}getText2(e){return(0,I.g)(0),""}getUnit(){return(0,I.g)(0),{}}equals(e){return(0,I.g)(0),!1}equalForProjection(e){return(0,I.g)(0),!1}getPeVertcsCopy(){return(0,I.g)(0),{}}getOneMeter(){return 1/this.m_verticalUnit.getUnitToBaseFactor()}getUnitToBaseFactor(){return(0,I.g)(0),0}isDepth(){return(0,I.g)(0),!1}getVerticalShift(){return(0,I.g)(0),0}isCustomWkid(){return!!this.m_peVertSysVal&&this.m_peVertSysVal.isCustomWkid()}getHashCode(){return this.m_hashCode}setVertProj_(e){this.m_peVertSysVal=e}getPEVerticalCoordSys(){return this.m_peVertSysVal?this.m_peVertSysVal.m_peVertcs:null}}function il(e,t,s,i,r){if(e.equals(t))return!1;if(i){let s=1,n=0,a=1,o=1,l=0,h=1;Number.isNaN(e.m_heightMetersPerUnit)||(s=e.m_heightMetersPerUnit,n=e.m_heightZ0,a=e.m_heightSign,o=t.m_heightMetersPerUnit,l=t.m_heightZ0,h=t.m_heightSign);let m=a*h*s/o;for(let e=0;e<r;e++)i[e]=(i[e]-n)*m+l}let n=1,a=0;if(Number.isNaN(e.m_XYToRadians)||(n=e.m_XYToRadians/t.m_XYToRadians,0!=(a=e.m_PrimeMeridianDegrees-t.m_PrimeMeridianDegrees)&&(a=(0,G.b)(a)/t.m_XYToRadians)),Array.isArray(s))for(let e=0;e<r;e++)s[e][0]=s[e][0]*n+a,s[e][1]=s[e][1]*n;else for(let e=0;e<r;e++){let t=e<<1;s[t]=s[t]*n+a,s[t+1]=s[t+1]*n}return!0}function ih(){return{m_heightMetersPerUnit:0,m_heightSign:0,m_heightZ0:0,m_XYToRadians:0,m_PrimeMeridianDegrees:0,assign(e){this.m_heightMetersPerUnit=e.m_heightMetersPerUnit,this.m_heightSign=e.m_heightSign,this.m_heightZ0=e.m_heightZ0,this.m_XYToRadians=e.m_XYToRadians,this.m_PrimeMeridianDegrees=e.m_PrimeMeridianDegrees},equals(e){return(0,b.F)(this.m_heightSign,e.m_heightSign)&&(0,b.F)(this.m_heightMetersPerUnit,e.m_heightMetersPerUnit)&&(0,b.F)(this.m_heightZ0,e.m_heightZ0)&&(0,b.F)(this.m_XYToRadians,e.m_XYToRadians)&&(0,b.F)(this.m_PrimeMeridianDegrees,e.m_PrimeMeridianDegrees)},initFromGcsAndVcsPe(e,t){this.m_heightSign=1,this.m_heightMetersPerUnit=NaN,this.m_heightZ0=0,this.m_XYToRadians=NaN,this.m_PrimeMeridianDegrees=NaN,t&&(0,I.g)(0),e&&(this.m_XYToRadians=e.getUnit().getUnitFactor(),this.m_PrimeMeridianDegrees=e.getPrimem().getLongitude())},initFromGcsAndVcs(e,t){let s=e?e.getPECoordSys():null,i=t?t.getPEVerticalCoordSys():null;this.initFromGcsAndVcsPe(s,i)},processUnitParams(e){Number.isNaN(this.m_heightMetersPerUnit)&&(this.m_heightMetersPerUnit=e.m_heightMetersPerUnit,this.m_heightSign=e.m_heightSign,this.m_heightZ0=e.m_heightZ0),Number.isNaN(this.m_XYToRadians)&&(this.m_XYToRadians=e.m_XYToRadians,this.m_PrimeMeridianDegrees=e.m_PrimeMeridianDegrees)}}}class im{constructor(e){this.m_constantsLoaded=-1,this.m_isUsable=-1,this.m_inputSR=null,this.m_outputSR=null,this.m_inputSRHorz=null,this.m_outputSRHorz=null,this.m_inputVCS=null,this.m_outputVCS=null,this.m_hashCode=0,this.m_areaOfUse=new w.E,this.m_inputUnitParams=ih(),this.m_outputUnitParams=ih(),(0,I.g)(e),this.m_geogTran=e,this.m_vertTran=null,this.m_latestID=l.getCode(this.m_geogTran),this.m_latestID<0&&(this.m_latestID=0);const t=this.m_geogTran.getGeogcs1();l.getCode(t);const s=this.m_geogTran.getGeogcs2();l.getCode(s),this.initUnitParams()}getLatestId(){return this.m_latestID}getText(){return this.m_geogTran?this.m_geogTran.toString():((0,I.g)(0),"")}getGeogtran(){return this.m_geogTran}getVerttran(){return null}loadConstants(e){let t=this.m_constantsLoaded;if(-1===t){if(!e){this.m_geogTran||(0,I.d)("vcs not impl");let t=this.m_geogTran.getParameters();null!==t[h.PE_PARM_ND]&&(e=0===t[h.PE_PARM_ND].getValue())}t=+!!this.m_geogTran.loadConstants(),this.m_constantsLoaded=t}return 0!==t}isUsable(){let e=this.m_isUsable;return -1===e&&(this.m_geogTran?this.m_isUsable=e=+!!this.m_geogTran:this.m_isUsable=e=+!!this.m_vertTran),1===e}getInputSr(e){return this.updateSrs(),e?this.m_inputSR:this.m_inputSRHorz}getOutputSr(e){return this.updateSrs(),e?this.m_outputSR:this.m_outputSRHorz}getHashCode(){let e=this.m_hashCode;return 0===e&&(0===(e=this.m_latestID>0?(0,b.B)(this.m_latestID):(0,b.I)(this.getText()))&&(e=345),this.m_hashCode=e),e}isGeogtran(){return null!==this.m_geogTran}prepareOrThrow(){}getName(){return this.isGeogtran()?this.getGeogtran().getName():((0,I.t)("vcs not impl"),"")}updateSrs(){let e,t,s,i,r,n;if(!this.m_inputSR&&!this.m_inputVCS){if(this.m_geogTran){let a=this.m_geogTran.getGeogcs1(),o=ru(a),l=this.m_geogTran.getGeogcs2(),h=ru(l),m=-1,g=-1;m=o.getVcsCode(),g=h.getVcsCode(),s=rV(a,null,null,1),i=rV(l,null,null,1),m>0&&g>0?(r=ir(m),n=ir(g),e={},t={}):(e=s,t=i)}else(0,I.g)(0);this.m_inputSR||this.m_inputVCS||(this.m_inputSR=e,this.m_outputSR=t,this.m_inputSRHorz=s,this.m_outputSRHorz=i,this.m_inputVCS=r,this.m_outputVCS=n)}}
1initUnitParams(){if(this.m_inputUnitParams.m_heightSign=1,this.m_inputUnitParams.m_heightMetersPerUnit=NaN,this.m_inputUnitParams.m_heightZ0=0,this.m_outputUnitParams.m_heightSign=1,this.m_outputUnitParams.m_heightMetersPerUnit=NaN,this.m_outputUnitParams.m_heightZ0=0,this.m_inputUnitParams.m_XYToRadians=NaN,this.m_inputUnitParams.m_PrimeMeridianDegrees=NaN,this.m_outputUnitParams.m_XYToRadians=NaN,this.m_outputUnitParams.m_PrimeMeridianDegrees=NaN,this.m_vertTran)(0,I.g)(0);else if(this.m_geogTran){let e=this.m_geogTran,t=e.getGeogcs1();this.m_inputUnitParams.m_XYToRadians=t.getUnit().getUnitFactor(),this.m_inputUnitParams.m_PrimeMeridianDegrees=t.getPrimem().getLongitude(),t=e.getGeogcs2(),this.m_outputUnitParams.m_XYToRadians=t.getUnit().getUnitFactor(),this.m_outputUnitParams.m_PrimeMeridianDegrees=t.getPrimem().getLongitude()}}}function ig(e,t,s,i,r,n,a){let o=null;t&&(o=t.getPEVerticalCoordSys());let l=null;e&&(l=e.getPECoordSys());let h=null;i&&(h=i.getPEVerticalCoordSys());let m=null;if(s&&(m=s.getPECoordSys()),!(l||o||m||h))return!1;let g=ih();g.initFromGcsAndVcsPe(l,o);let u=ih();return u.initFromGcsAndVcsPe(m,h),il(g,u,r,n,a)}class iu{supportsCurves(){return!0}accelerateGeometry(e,t,s){return i_(e,t,s)}canAccelerateGeometry(e){return ip(e)}}function i_(e,t,s){if(!ip(e))return!1;(0,w.j)(t,e,!1);let i=0,r=e.getGeometryType();return(0,I.h)(r)&&(0,G.y)(e)&&0!==s&&(i|=!!e.getImpl().buildQuadTreeAccelerator(s)),(0,I.h)(r)&&(0,G.z)(e)&&0!==s&&(i|=!!e.getImpl().buildQuadTreeForPathsAccelerator(s)),i>0}function ip(e){return(0,G.y)(e)||(0,G.z)(e)}class id extends iu{getOperatorType(){return 8}execute(e,t,s,i){return tt(e,t,s,1,i)}}class ic{getOperatorType(){return 10002}supportsCurves(){return!0}accelerateGeometry(e,t,s){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,s,i){return new ix(e,t,s,i)}execute(e,t,s,i){return this.executeMany(new F.S([e]),new F.S([t]),s,i).next()}}class ix extends F.G{constructor(e,t,s,i){super(),this.m_progressTracker=i,this.m_index=-1,this.m_inputGeoms=e,this.m_spatialReference=s;const r=t.next();this.m_geomSubtractor=r||new G.a}next(){let e=this.m_inputGeoms.next();return e?((0,I.c)(e),(0,I.s)(e),this.m_index=this.m_inputGeoms.getGeometryID(),function(e,t,s,i){if(e.isEmpty()||t.isEmpty())return e;let r=e.getDimension(),n=t.getDimension();if(r>n)return e;let a=e.getGeometryType(),o=t.getGeometryType(),l=new v.Envelope2D,h=new v.Envelope2D,m=new v.Envelope2D;e.queryEnvelope(l),t.queryEnvelope(h),m.setCoords({env2D:l}),m.mergeEnvelope2D(h);let g=(0,w.c)(s,m,!0),u=(0,w.e)(g),_=new v.Envelope2D;if(_.setCoords({env2D:l}),_.inflateCoords(u,u),!_.isIntersecting(h))return e;if(1===r&&2===n){let r=function(e,t,s,i,r){let n=new w.E;e.queryEnvelope(n);let a=new v.Envelope2D;t.queryEnvelope(a),n.merge(a);let o=.1*n.width(),l=.1*n.height();n.inflateCoords(o,l);let h=new G.a;h.addEnvelope(n,!1);let m=h.getImpl();if(s===I.G.enumPolygon){let e=t.getImpl();m.add(e,!0)}else m.addEnvelope(t,!0);return new sV(h,i,-1,r).tryFastImplementation(e)}(e,t,o,s,i);if(r)return r}if(a===I.G.enumPoint){var p,d,c,f,x,P,E;let s;switch((0,I.f)(o)?(s=new G.P({vd:t.getDescription()})).addSegment(t,!0):s=t,o){case I.G.enumPolygon:return 0===tJ(s,p=e,g.total())?p:p.createInstance();case I.G.enumPolyline:return function(e,t,s){let i=e.getXY(),r=t.querySegmentIterator(),n=(0,w.e)(s),a=n*n;for(;r.nextPath();)for(;r.hasNextSegment();){let t=r.nextSegment(),o=new v.Envelope2D;if(t.queryEnvelope(o),o.inflateCoords(n,n),!o.contains(i))continue;if(t.isIntersectingPoint(i,s.total()))return e.createInstance();let l=t.getStartXY();if(b.P.sqrDistance(i,l)<=a||(l=t.getEndXY(),b.P.sqrDistance(i,l)<=a))return e.createInstance()}return e}(e,s,g);case I.G.enumMultiPoint:return function(e,t,s){let i=t.getImpl().getAttributeStreamRef(0),r=t.getPointCount(),n=e.getXY(),a=(0,w.e)(s),o=a*a,l=new b.P;for(let t=0;t<r;t++)if(i.queryPoint2D(2*t,l),b.P.sqrDistance(l,n)<=o)return e.createInstance();return e}(e,s,g);case I.G.enumEnvelope:let i,r;return d=e,c=s,f=g,i=new v.Envelope2D,c.queryEnvelope(i),i.inflate(f.total()),r=d.getXY(),i.contains(r)?d.createInstance():d;case I.G.enumPoint:let n,a,l;return x=e,P=s,E=g,n=(0,w.e)(E),a=x.getXY(),l=P.getXY(),b.P.sqrDistance(a,l)<=n*n?x.createInstance():x;default:(0,I.a)("invalid shape type")}}else if(a===I.G.enumMultiPoint)switch(o){case I.G.enumPolygon:return function(e,t,s){let i=new v.Envelope2D;t.queryEnvelope(i),i.inflate(s.total());let r=e.getPointCount(),n=!1,a=(0,b.d)(r,!1),o=new b.P;for(let l=0;l<r;l++)e.queryXY(l,o),i.contains(o)&&0!==t$(t,o,s.total())&&(n=!0,a[l]=!0);if(!n)return e;let l=e.createInstance();for(let t=0;t<r;t++)a[t]||l.addPoints(e,t,t+1);return l}(e,t,g);case I.G.enumEnvelope:return function(e,t,s){let i=new v.Envelope2D;t.queryEnvelope(i),i.inflate(s.total());let r=e.getPointCount(),n=!1,a=(0,b.d)(r,!1),o=new b.P;for(let t=0;t<r;t++)e.queryXY(t,o),i.contains(o)&&(n=!0,a[t]=!0);if(!n)return e;let l=e.createInstance();for(let t=0;t<r;t++)a[t]||l.addPoints(e,t,t+1);return l}(e,t,g);case I.G.enumPoint:return function(e,t,s){let i=e.getImpl().getAttributeStreamRef(0),r=e.getPointCount(),n=t.getXY(),a=!1,o=(0,b.d)(r,!1),l=(0,w.e)(s),h=l*l,m=new b.P;for(let e=0;e<r;e++)i.queryPoint2D(2*e,m),b.P.sqrDistance(m,n)<=h&&(a=!0,o[e]=!0);if(!a)return e;let g=e.createInstance();for(let t=0;t<r;t++)o[t]||g.addPoints(e,t,t+1);return g}(e,t,g)}let y=new v.Envelope2D(l);return y.inflate(100*g.total()),function(e,t,s,i){if(e.isEmpty()||t.isEmpty()||e.getDimension()>t.getDimension())return sE(sy(e),e,t,"-");let r=new v.Envelope2D;e.queryEnvelope(r);let n=new v.Envelope2D;t.queryEnvelope(n);let a=new v.Envelope2D;a.setCoords({env2D:r}),a.mergeEnvelope2D(n);let o=(0,w.c)(s,a,!0),l=n.clone(),h=(0,w.e)(o);if(l.inflateCoords(h,h),!r.isIntersecting(l))return sE(sy(e),e,t,"-");let m=new sf(i),g=new G.E,u=g.addGeometry(sy(e)),_=g.addGeometry(sy(t)),p=0,d=0,c=null;if(g.hasCurves()){c=new ss;let e=g.getEnvelope2D(i);d=se(o.total());let t=t5(o.total(),e);p=st(t,d),t6(g,t,o.total(),12e3,c,null,i)}m.setEditShapeCrackAndCluster(g,o.add(p));let f=m.difference(u,_);null!==c&&c.stitchCurves(g,f,d,!0);let x=sE(g.getGeometry(f),e,t,"-");return sl(x.getGeometryType())&&(x.getImpl().setIsSimple(4,o.total()),x.getGeometryType()===I.G.enumPolygon&&x.getImpl().updateOGCFlagsProtected()),x}(e,(0,D.c)(t,y,0,0,i),s,i)}(e,this.m_geomSubtractor,this.m_spatialReference,this.m_progressTracker)):null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}class iP{getOperatorType(){return 10001}supportsCurves(){return!0}accelerateGeometry(e,t,s){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,s,i=0){return new iy(e,t,s,i)}execute(e,t,s,i){let r=new iy(new F.S([e,t]),s,i,0).next();return r||(0,I.d)("null output"),r}}class iE{constructor(){this.binVertexCount=0,this.geometries=[]}addPair(e){this.binVertexCount+=e.vertexCount,this.geometries.push(e)}sort(){this.geometries.sort((e,t)=>
1b.P.compareZorder(e.location,t.location)?-1:+!e.location.equals(t.location))}geomCount(){return this.geometries.length}geomPairs(){return this.geometries}clear(){this.binVertexCount=0,this.geometries.length=0}getBinVertexCount(){return this.binVertexCount}}class iy extends F.G{constructor(e,t,s,i,r=!1){super(),this.m_index=-1,this.m_currentDim=-1,this.m_bDone=!1,this.m_unionBins=[],this.m_readyGeoms=(0,b.C)(4),this.m_dimGeomCounts=(0,b.d)(4,0),this.m_addedGeoms=0,this.m_maxDimension=-1,this.m_bHadGeometry=(0,b.d)(4,!1),this.m_complexUnionGeoms=(0,b.C)(4),this.m_totalNonEmptyGeomCounters=(0,b.d)(4,0),this.m_progressTracker=s,this.m_bUnionAllDimensions=!!(4&i),this.m_bPreserveAllPathEnds=!!(8&i),this.m_inputGeoms=e,this.m_spatialReference=t,this.m_options=i,this.m_bIs3D=r}next(){if(this.m_bDone&&this.m_currentDim===this.m_maxDimension)return null;for(;!this.step_(););if(-1===this.m_maxDimension)return null;if(this.m_bUnionAllDimensions){if(-1===this.m_currentDim){for(let e=0;e<=this.m_maxDimension;e++)if(this.m_bHadGeometry[e]){this.m_complexUnionGeoms[e]=this.getResultGeometry(e);for(let t=e+1;t<=this.m_maxDimension;t++)this.m_complexUnionGeoms[t]=this.getResultGeometry(t),this.m_bHadGeometry[t]&&!this.m_complexUnionGeoms[t].isEmpty()&&(this.m_bIs3D?(0,I.g)(0):this.m_complexUnionGeoms[e]=(new ic).execute(this.m_complexUnionGeoms[e],this.m_complexUnionGeoms[t],this.m_spatialReference,this.m_progressTracker))}}for(;this.m_currentDim++,(this.m_currentDim>this.m_maxDimension||this.m_currentDim<0)&&(0,I.d)(""),!this.m_bHadGeometry[this.m_currentDim];);if(this.m_index++,0===this.m_currentDim&&this.m_complexUnionGeoms[this.m_currentDim].getGeometryType()===I.G.enumPoint){let e=new G.M({vd:this.m_complexUnionGeoms[this.m_currentDim].getDescription()});return this.m_complexUnionGeoms[this.m_currentDim].isEmpty()||e.add(this.m_complexUnionGeoms[this.m_currentDim]),e}return this.m_complexUnionGeoms[this.m_currentDim]}return this.m_index=0,this.m_currentDim=this.m_maxDimension,this.getResultGeometry(this.m_maxDimension)}getGeometryID(){return this.m_index}getRank(){return 1}tock(){return this.step_()}getResultGeometry(e){return this.m_readyGeoms[e]}finishDim(e,t,s){let i=t;if(!s)return 16&this.m_options?i=sc([i],1,this.m_spatialReference,this.m_progressTracker,this.m_options,this.m_bIs3D):i;if(1&this.m_options)return i;if(1===e)if(!(8&this.m_options)&&(16&this.m_options||this.m_totalNonEmptyGeomCounters[e]>1)){let e=(i=sc([i],1,this.m_spatialReference,this.m_progressTracker,16|this.m_options,this.m_bIs3D)).getImpl().getIsSimple(0,[0]);(0,I.g)(this.m_bIs3D||(0,w.i)(e))}else 1===this.m_totalNonEmptyGeomCounters[e]&&(this.m_bIs3D?(0,I.g)(0):i=(new sN).execute(i,this.m_spatialReference,!1,this.m_progressTracker));else this.m_bIs3D?(0,I.g)(0):i=(new sN).execute(i,this.m_spatialReference,!1,this.m_progressTracker);if(0===e&&i.getGeometryType()===I.G.enumPoint){let e=new G.M({vd:i.getDescription()});i.isEmpty()||e.add(i),i=e}return i}static getLevel(e){let t=(0,I.v)(e),s=t>0?(Math.log(t)-Math.log(32))/Math.log(4):0;return s<0&&(s=0),Math.floor(s)}step_(){let e;if(this.m_bDone)return!0;if(this.m_inputGeoms?null===(e=this.m_inputGeoms.next())?(this.m_bDone=!0,this.m_inputGeoms=null):(this.checkAndThrow(e),e.isEmpty()||this.m_totalNonEmptyGeomCounters[e.getDimension()]++):e=null,null!==e){let t=e.getDimension();this.m_bHadGeometry[t]=!0,(t>=this.m_maxDimension||this.m_bUnionAllDimensions)&&(this.addGeom(t,!1,e),t>this.m_maxDimension&&!this.m_bUnionAllDimensions&&this.removeAllBinsWithLowerDimension(t))}if(this.m_addedGeoms>0)for(let e=0;e<=this.m_maxDimension;e++){for(;this.m_dimGeomCounts[e]>1;){let t=this.collectGeometriesToUnion(e);if(null===t)break;{let s;s=1&this.m_options?sc(t,t.length,this.m_spatialReference,this.m_progressTracker,this.m_options,this.m_bIs3D):function(e,t,s,i,r,n=!1){t<2&&(0,I.a)("not enough geometries to dissolve");let a=0;for(let s=0;s<t;s++)a=Math.max(e[s].getDimension(),a);if(2===a||1===a)return new sf(i).dissolveMultiPaths_(a,!0,e,t,s,r,n);let o=w.q.constructEmpty(),l=new G.E,h=G.n,m=0,g=-1;for(let s=0;s<t;s++)if(e[s].getDimension()===a&&(-1===g&&(g=s),!e[s].isEmpty())){g=s,h===G.n?h=l.addGeometry(sy(e[s])):l.appendGeometry(h,sy(e[s]));let t=w.q.constructEmpty();e[s].queryLooseEnvelope(t),o.mergeEnv3D(t),m++}if(m<2)return sy(e[g]);let u=0===a?s:null,_=(0,w.c)(u,o.getEnvelope2D(),!0),p=new sf(i);if(n){let e=(0,w.r)(u,o.getEnvelopeZs(),!0);return p.m_bOGCOutput=!0,p.planarSimplify3DImpl_(l,_,e,0,!0)}return p.planarSimplifyMultiPoints(l,_,!0,-1)}(t,t.length,this.m_spatialReference,this.m_progressTracker,8|this.m_options,this.m_bIs3D),this.addGeom(e,!0,s)}}if(this.m_bDone&&((0,I.g)(this.m_dimGeomCounts[e]<=1),0!==this.m_dimGeomCounts[e])){let t=this.m_unionBins[e].entries().next().value,s=t[1].geomPairs()[0].geom,i=t[1].geomPairs()[0].bUnioned;this.m_unionBins[e].clear(),this.m_readyGeoms[e]=this.finishDim(e,s,i)}}return this.m_bDone}addGeom(e,t,s){let i={geom:null,vertexCount:-1,bUnioned:!1,location:new b.P};i.geom=s;let r=(0,I.v)(s);i.vertexCount=r;let n=v.Envelope2D.constructEmpty();s.queryEnvelope(n),i.location=r>0?n.getCenter():new b.P(0,0);let a=iy.getLevel(s);if(e+1>this.m_unionBins.length)for(;this.m_unionBins.length<Math.max(2,e+1);)this.m_unionBins.push(new Map);let o=null,l=this.m_unionBins[e].get(a);l&&(o=l),null===o&&(o=new iE,this.m_unionBins[e].set(a,o)),i.bUnioned=t,o.addPair(i),this.m_dimGeomCounts[e]++,this.m_addedGeoms++,this.m_maxDimension=Math.max(this.m_maxDimension,e)}removeAllBinsWithLowerDimension(e){for(let t=0;t<e;t++)this.m_unionBins[t].clear(),this.m_addedGeoms-=this.m_dimGeomCounts[t],this.m_dimGeomCounts[t]=0}collectGeometriesToUnion(e){if(1&this.m_options&&!this.m_bDone)return null;let t=null,s=[];for(let t of this.m_unionBins[e].keys())s.push(t);(0,b.v)(s);for(let i=0;i<s.length;i++){if(-1===s[i])continue;let r=this.m_unionBins[e].get(s[i]);{let n=r.getBinVertexCount()>5e3&&r.geomCount()>=4;if(this.m_bDone||n){for(let r=0;r<i;r++){if(-1===s[r])continue;let i=this.m_unionBins[e].get(s[r]);for(let s of(i.sort(),this.m_dimGeomCounts[e]-=i.geomCount(),this.m_addedGeoms-=i.geomCount(),i.geomPairs()))t||(t=[]),t.push(s.geom);i.clear(),this.m_unionBins[e].delete(s[r]),s[r]=-1}for(let s of(r.sort(),this.m_dimGeomCounts[e]-=r.geomCount(),this.m_addedGeoms-=r.geomCount(),r.geomPairs()))t||(t=[]),t.push(s.geom);if(r.clear(),this.m_unionBins[e].delete(s[i]),s[i]=-1,!this.m_bDone)break}}}return t}checkAndThrow(e){this.m_bIs3D&&(e.getDimension()>1&&(0,I.w)(),e.hasAttribute(1)||(0,I.a)("Geometry must have Zs")),(0,I.c)(e)}}class iS extends iu{getOperatorType(){return 3}execute(e,t,s,i=null){return tt(e,t,s,4,i)}}function iC(e,t,s){let i=t.getGCSSplitLines();if(null===i)return e;let r=t.getGCS(),n=r.getPannableExtent().width(),a=v.Envelope2D.constructEmpty();e.queryLooseEnvelope(a);let o=b.E.constructEmpty();a.queryIntervalX(o);let l=i.querySegmentIterator(),h=null,m=new N.T;for(;l.nextPath();)for(;l.hasNextSegment();){let e=l.nextSegment(),t=e.queryInterval(0,0),s=b.E.constructEmpty();
1s.setCoordsFromEnvelope(t);let i=0;for(;s.vmax>o.vmin;)s.move(-n),i--;for(;s.vmin<=o.vmax;){if(s.isIntersecting(o)){null===h&&(h=new G.P);let t=new G.L({start:e.getStartXY(),end:e.getEndXY()});0!==i&&(m.setShiftCoords(i*n,0),t.applyTransformation(m)),h.addSegment(t,!0)}s.move(n),++i}}if(null!==h){let t=(0,w.b)(r,h,!0);var g=h,u=(0,w.e)(t);let i=g.getGeometryType();return(0,I.h)(i)?new eU(s).crackAWithBMultiPath_(e,g,u):void(0,I.t)("crack_A_with_B")}return e}function iI(e,t,s){let i=e.getName();return rz(i)||(i=s||t>0?(i=e.toString(h.PE_STR_NAME_CANON|h.PE_STR_AUTH_NONE)).toLocaleUpperCase("en-US"):e.toString(h.PE_STR_AUTH_TOP)),i}function iv(e,t=-1){if((t>1||t<-1)&&(0,I.a)("verbosity"),-1===t)return e.toString();{let s=0===t?h.PE_STR_AUTH_TOP:h.PE_STR_AUTH_ALL;return e.toString(s)}}function iG(e,t,s,i){var r,n,a,o,l;if(e.isEmpty()||1===s)return e;let h=e.getGeometryType();if(h===I.G.enumPoint){let i=e.getXY();return 0===ib([i],1,t,s)||i.isNAN()?e.setEmpty():e.setXY(i),e}if(h===I.G.enumMultiPoint){let i=e.createInstance(),r=e.getPointCount();i.reserve(r);let n=e.getAttributeStreamRef(0),a=e.getDescription().getAttributeCount()>1,o=new w.P,l=Float64Array.from(n.getArray());if(ib(l,r,t,s)>0)for(let t=0,s=2*r;t<s;t+=2)Number.isNaN(l[t])||(a?(e.getPointByVal(t>>1,o),o.setXYCoords(l[t],l[t+1]),i.add(o)):i.addXY(l[t],l[t+1]));return i}let m=e,g=t.getOneDegreeGCSUnit(),u=90*g,_=180*g,p=360*g,d=t.getCentralMeridian(),c=.5*g,f=v.Envelope2D.constructEmpty();m.queryEnvelope(f);let x=t.getGCSHorizon(),P=t.getGCSHorisonIsInclusive(),E=x.getGeometryType()===I.G.enumEnvelope,y=v.Envelope2D.constructEmpty();x.queryEnvelope(y);let S=t.getGCS();if(2!==s&&4!==s||(y.xmin=d-_,y.xmax=y.xmin+p),4===s){if(!(f.width()>p-g)){let e=v.Envelope2D.constructEmpty();e.setCoords({xmin:f.xmin-g,ymin:y.ymin,xmax:f.xmax+g,ymax:y.ymax}),m=(new D.O).execute(m,e,S,i);let t=Math.floor((d-f.getCenterX())/p);for(f.move(t*p,0);f.xmin>y.xmax;)t-=1,f.move(-p,0);for(;f.xmin<y.xmin;)t+=1,f.move(p,0);if(0!==t){let e=new N.T;e.setShiftCoords(t*p,0),m.applyTransformation(e)}return m}s=2}if(2===s&&(y.xmin=d-_,y.xmax=y.xmin+p),f.ymin<-u||f.ymax>u){let e=v.Envelope2D.constructEmpty();if(e.setCoords({xmin:f.xmin-g,ymin:-u,xmax:f.xmax+g,ymax:u}),(m=(new D.O).execute(m,e,S,i)).isEmpty())return m;m.queryEnvelope(f)}if(P&&(y.ymax<f.ymin||y.ymin>f.ymax))return m.createInstance();f.width()>p&&(m=iU(m,d-_,p,S,!0,0,!0,i)).queryEnvelope(f);let C=(r=f.xmin,n=f.xmax,a=y.xmin,o=y.xmax,l=p,r>=a&&n<=o?0:iM(.5*(n+r),a,o,l));if(0!==C&&f.move(C,0),f.xmax>y.xmax||f.xmin<y.xmin){if(f.xmax>y.xmax)for(;f.xmin>=y.xmax;)f.move(-p,0),C-=p;for(;f.xmin<y.xmax-p;)f.move(p,0),C+=p}let G=(0,w.j)(S,x,!1);if(0!==C){let e=new N.T;e.setShiftCoords(C,0),m.applyTransformation(e),C=0}if(P){if(E&&y.containsEnvelope(f))return m;let e=[,,];for(let t=0;t<2;t++){let s;if(E?s=(0,I.h)(h)?(0,D.c)(m,y,G,c,i):(0,D.c)(m,y,G,0,i):(s=(new sH).execute(m,x,S,i))===x&&(s=s.clone()),y.xmin<=f.xmin&&y.xmax>=f.xmax||y.xmin>=f.xmin&&y.xmax<=f.xmax)return s;if(e[t]=s,0===t){f.move(-p,0);let e=new N.T;e.setShiftCoords(-p,0),m.applyTransformation(e)}}return(0,I.h)(h)?e[0].add(e[1],!1):(0,I.d)("intersect_with_GCS_horizon: unexpected geometry type"),e[0]}{if(y.ymax<f.ymin||y.ymin>f.ymax)return m;let e=0;for(;!m.isEmpty()&&f.xmax>y.xmin;){if(0!==e){let t=new N.T;t.setShiftCoords(e,0),m.applyTransformation(t)}if((new iS).execute(m,x,S,i)||(m=(new ic).execute(m,x,S,i),x===m&&(m=m.clone())),0!==e){let t=new N.T;t.setShiftCoords(-e,0),m.applyTransformation(t)}e-=p,f.move(-p,0)}return m}}function iw(e,t,s,i){for(let r=0,n=0;r<i;r++,n+=2)t[s+r].x=e[n],t[s+r].y=e[n+1]}function ib(e,t,s,i){if(0===t||1===i)return t;let r=function(e,t){let s;if(Array.isArray(e)){s=new Float64Array(2*t);for(let i=0,r=0;i<t;i++,r+=2)s[r]=e[i].x,s[r+1]=e[i].y}else s=e;return s}(e,t);if(2===i){let i=s.getPannableExtentInGCS(),n=t;for(let e=0,s=2*t;e<s;e+=2)(r[e+1]>i.ymax||r[e+1]<i.ymin)&&(r[e]=NaN,n--);return n?(iq(r,t,i.xmin,i.width(),!0),e!==r&&iw(r,e,0,t),n):(e!==r&&iw(r,e,0,t),0)}let n=s.getOneDegreeGCSUnit(),a=90*n,o=180*n,l=360*n,h=t;for(let e=0,s=2*t;e<s;e+=2)(r[e+1]>a||r[e+1]<-a)&&(r[e]=NaN,h--);if(!h)return e!==r&&iw(r,e,0,t),0;let m=v.Envelope2D.constructEmpty();m.setFromPoints(r,t);let g=s.getGCSHorizon(),u=s.getGCSHorisonIsInclusive(),_=g.getGeometryType()===I.G.enumEnvelope,p=v.Envelope2D.constructEmpty();if(g.queryEnvelope(p),u&&(p.ymax<m.ymin||p.ymin>m.ymax))return e!==r&&iw(r,e,0,t),0;if(u)if(iq(r,t,p.getCenterX()-o,l,!0),h=t,_)for(let e=0,s=2*t;e<s;e+=2)p.containsCoords(r[e],r[e+1])||(r[e]=NaN,h--);else{let e=(0,w.j)(s.getGCS(),g,!1),i=new b.P;for(let s=0,n=2*t;s<n;s+=2)i.setCoords(r[s],r[s+1]),0!==t$(g,i,e)||(r[s]=NaN,h--)}else{iq(r,t,-o,l,!0),h=t;let e=(0,w.j)(s.getGCS(),g,!1),i=new b.P;for(let s=0,n=2*t;s<n;
1s+=2){i.setCoords(r[s],r[s+1]),i.isNAN()&&h--;let t=iM(i.x,p.xmin,p.xmax,l);i.x+=t,0!==t$(g,i,e)&&(r[s]=NaN,h--)}}return e!==r&&iw(r,e,0,t),h}function iT(e,t,s,i,r,n){let a,o;if(t.isPannable()||(0,I.a)("fold_into_360_degree_range"),e.isEmpty())return e;if(2===t.getCoordinateSystemType()){let e=t.getPannableExtent();o=e.xmin,a=e.width()}else{let e=t.getOneDegreeGCSUnit();a=360*e,o=s-180*e}return iU(e,o,a,t,i,r,!0,n)}function iN(e,t,s,i){let r,n;if(2===s.getCoordinateSystemType()){let e=s.getPannableExtent();r=e.xmin,n=e.width()}else{let e=s.getOneDegreeGCSUnit();n=360*e,r=i-180*e}iq(e,t,r,n)}function iD(e,t){let s=t.width(),i=(0,b.n)(e-t.vmin,s);return i<0&&(i+=s),t.snapClip(i+t.vmin)}function iV(e,t,s){return e>t.xmax&&e-t.xmax<s?t.xmax:e<t.xmin&&t.xmin-e<s?t.xmin:e}function iF(e,t,s){if(e[0]<t.vmin||e[0]>t.vmax||s&&e[0]===t.vmax){let s=t.width();return e[0]+=Math.ceil((t.vmin-e[0])/s)*s,e[0]=t.snapClip(e[0]),!0}return!1}function iH(e,t,s,i,r){let n=new G.E,a=n.addGeometry(e);return ik(n,a,t,(0,w.j)(t,e,!1),s,i,r),n.getGeometry(a)}function ik(e,t,s,i,r,n,a){let l={stack:[],error:void 0,hasError:!1};try{(0,I.g)(rw()),s.isPannable()||(0,I.p)("insert_geodetic_points");let h=s.getPannableExtent(),g=s.getGCS(),u=rI();g.querySpheroidData(u);let _=g.getUnit().getUnitToBaseFactor(),p=u.majorSemiAxis,c=u.e2,f=0,x=new b.E;h.queryIntervalX(x);let P=null,E=(0,b.d)(4,NaN);2===s.getCoordinateSystemType()?(P=s.getPECoordSys(),n?(E[0]=iD(a,x),E[1]=h.getCenterY(),m.projToGeog(P,1,E),f=E[0]*_):(E[0]=h.getCenterX(),E[1]=a,m.projToGeog(P,1,E),f=E[1]*_)):f=a*_,n||0===f||2===r||(0,I.p)("insert_geodetic_points: 1");let y=(0,T.mS)(l,new o,!1),S=new b.P,C=new b.P,v=new b.P,N=new b.P,D=new b.P,V=new b.P;for(let l=e.getFirstPath(t);l!==G.n;l=e.getNextPath(l)){let t=e.getFirstVertex(l);e.queryXY(t,v);let h=!1,g=e.getNextVertex(t);for(let t=g;t!==G.n;t=e.getNextVertex(t)){if(t===g){if(h)break;h=!0}if(e.queryXY(t,N),n&&(i<a-v.x&&N.x-a>i||i<a-N.x&&v.x-a>i)||!n&&(0!==a||i<-v.y&&N.y>i||i<-N.y&&v.y>i))do{if(Math.abs(v.x-N.x)>=.5*x.width())break;2===s.getCoordinateSystemType()?(E[0]=iD(v.x,x),E[1]=v.y,E[2]=iD(N.x,x),E[3]=N.y,ij(P,2,E,0),D.x=E[0]*_,D.y=E[1]*_,V.y=E[3]*_):(D.x=v.x*_,D.y=v.y*_,V.y=N.y*_),V.x=(N.x-v.x)*Math.PI*2/x.width()+D.x;let i=0,l=(0,b.m)(b.P,2);if(n){if(C.x=f,C.y=function(e,t,s,i,r,n){let a={stack:[],error:void 0,hasError:!1};try{if(2===n)return function(e,t,s,i){if(Math.abs(t.x-s.x)>Math.PI||Math.abs(t.y)>b.o||Math.abs(s.y)>b.o||(Math.abs(t.y)===b.o||Math.abs(s.y)===b.o)&&t.x!==s.x)return NaN;let{first:r,second:n}=(0,b.W)(t.x,s.x),a=i;if(a=X(a,r,n),!b.E.construct(t.x,s.x).containsCoordinate(a))return NaN;let o=G.X.constructPoint2D(t),l=G.X.constructPoint2D(s),h=W(1,e,o),m=W(1,e,l),g=h.crossProductVector(m);if(g.z.isZero())return t.y;let u=g.x.divE(g.z.negate()),_=g.y.divE(g.z.negate()),p=u.mulE(u).addE(_.mulE(_)).sqrt();if(p.isZero()||u.isZero()&&_.isZero())return t.y;let d=Math.atan2(_.value(),u.value()),c=Math.atan2(p.value()*Math.cos(d-a),1-e),f=L(1,e,b.P.construct(a,c)),x=w.d.construct(f.x,f.y,-f.z),P=g.value().dotProduct(f);return Math.abs(g.value().dotProduct(x))<Math.abs(P)&&(c=-c),c}(t,s,i,r);if(Math.abs(s.x-i.x)>=Math.PI||!i3(s.x,i.x,r))return NaN;s.x>i.x&&(i=(0,b.c)(s,s=i));let l=(0,T.mS)(a,new o,!1),h=(0,T.mS)(a,new o,!1),m=(0,T.mS)(a,new o,!1),g=s.clone();d.geodeticDistance(e,t,s.x,s.y,i.x,i.y,h,l,null,n);let u=h.val,_=0,p=1;for(;u*(p-_)>1e-12*e;){let a=.5*(_+p);if(d.geodeticCoordinate(e,t,s.x,s.y,u*a,l.val,h,m,n),g.x=h.val,g.y=m.val,g.x===r)break;if(i3(s.x,g.x,r))p=a;else{if(!i3(i.x,g.x,r))return NaN;_=a}}return g.y}catch(e){a.error=e,a.hasError=!0}finally{(0,T.hk)(a)}}(p,c,D,V,f,r),Number.isNaN(C.y))break;l[0]=C,i=1}else if(2===r){let e=[0,0];if(!(i=Q(p,c,D,V,f,e)))break;l[0].x=e[0],l[0].y=f,2===i&&(l[1].x=e[1],l[1].y=f)}else{if(C.x=function(e,t,s,i,r){let n={stack:[],error:void 0,hasError:!1};try{let a=s.clone(),l=i.clone();if(2===r){let s=[0,0];return Q(e,t,a,l,0,s),s[0]}if(a.y>l.y){let e=new b.P;e.assign(a),a.assign(l),l.assign(e)}let h=(0,T.mS)(n,new o,!1),m=(0,T.mS)(n,new o,!1),g=(0,T.mS)(n,new o,!1),u=new b.E;if(u.setCoords(a.y,l.y),!u.containsCoordinate(0)||Math.abs(a.x-l.x)>=Math.PI)return NaN;if(a.x===l.x)return a.x;d.geodeticDistance(e,t,a.x,a.y,l.x,l.y,m,h,null,r);let _=m.val,p=0,c=1,f=a.clone();for(;_*(c-p)>1e-12*e;){let s=.5*(p+c);if(d.geodeticCoordinate(e,t,a.x,a.y,_*s,h.val,m,g,r),f.x=m.val,f.y=g.val,u.setCoords(a.y,f.y),0===f.y)break;if(u.containsCoordinate(0))c=s;else{if(u.setCoords(l.y,f.y),!u.containsCoordinate(0))return(0,I.g)(!1),NaN;p=s}}return f.x}catch(e){n.error=e,n.hasError=!0}finally{(0,T.hk)(n)}}(p,c,D,V,r),Number.isNaN(C.x))break;C.y=0,l[0]=C,i=1}let h=-1;for(let o=0;o<i;o++){d.geodeticDistance(p,c,D.x,D.y,V.x,V.y,y,null,null,r);let i=y.val;d.geodeticDistance(p,c,D.x,D.y,l[o].x,l[o].y,y,null,null,r);let g=y.val;2===s.getCoordinateSystemType()?(E[0]=l[o].x/_,E[1]=l[o].y/_,m.geogToProj(P,1,E),n?(S.y=E[1],S.x=a):(S.x=i7(E[0],v.x,N.x,x),S.y=a)):n?(S.x=a,S.y=l[o].y/_):(S.x=i7(l[o].x/_,v.x,N.x,x),S.y=a);let u=i>0?(0,b.s)(g/i,0,1):.5;if(0===u||1===u||h>u)continue;let f=e.getPrevVertex(t);e.splitSegment(f,[u],1);let C=e.getNextVertex(f);e.setXYCoords(C,S.x,S.y),h=u}}while(0);v.setCoordsPoint2D(N)}}}catch(e){l.error=e,l.hasError=!0}finally{(0,T.hk)(l)}}function iA(e,t){(0,I.g)(t.isPannable());let s=t.getPannableExtent();if(e.getGeometryType()===I.G.enumPoint){let t=e.getY();return s.ymin<=t&&t<=s.ymax?e:e.createInstance()}let i=v.Envelope2D.constructEmpty();e.queryEnvelope(i);let r=v.Envelope2D.constructEmpty();r.setCoords({env2D:s}),r.xmin=i.xmin,r.xmax=i.xmax,r.inflateCoords(.01*r.height(),0);let n=(0,w.a)(t,i,!1);return r.containsEnvelope(i)?e:(0,D.c)(e,r,n,0,null)}function iM(e,t,s,i){return(0,b.G)((.5*(s+t)-e)/i)*i}function iU(e,t,s,i,r,n,a,o){let l,h=e.getGeometryType(),m=b.E.constructEmpty();m.setCoords(t,t+s);let g=[0];if(h===I.G.enumPoint){if(g[0]=e.getX(),iF(g,m,a)){let t=r?e:e.clone();return t.setX(g[0]),t}return e}let u=v.Envelope2D.constructEmpty();if(e.queryEnvelope(u),u.isEmpty())return e;if(h===I.G.enumMultiPoint){let t=r?e:e.clone(),s=t.getImpl(),i=s.getAttributeStreamRef(0),n=2*s.getPointCount(),o=!1;for(let e=0;e<n;e+=2)g[0]=i.read(e),iF(g,m,a)&&(i.write(e,g[0]),o=!0);return o&&s.notifyModifiedFlags(2001),t}let _=b.E.constructEmpty();if(u.queryIntervalX(_),m.contains(_))return m.vmax,_.vmax,e;let p=v.Envelope2D.constructEmpty();if(p.setCoords({env2D:u}),0===_.width()){let t=_.vmin;t+=Math.ceil((m.vmin-t)/s)*s,t=m.snapClip(t);let i=r?e:e.clone();return i.setAttributeBasic(0,0,t),i}if(h===I.G.enumEnvelope){let t=r?e:e.clone();return u.intersect(p),t.setEnvelope(u),t}
1let d=.1*Math.max(u.height(),u.width())*1;p.inflateCoords(0,d);let c=e,f=i.getTolerance(0),x=new N.T;for(;;){let e=Math.floor((_.vmin-t)/s),r=Math.ceil((_.vmax-t)/s);if(!(r-e>3))break;{let a=Math.floor(.5*(r+e));p.xmin=u.xmin-d,p.xmax=t+s*a;let l=(0,D.c)(c,p,f,n,o);p.xmin=p.xmax,p.xmax=u.xmax+d;let m=(0,D.c)(c,p,f,n,o);x.setShiftCoords((a-r)*s,0),m.applyTransformation(x),h===I.G.enumPolygon?c=(new iP).execute(l,m,i,o):(c=l).add(m,!1),c.queryEnvelope(u),u.queryIntervalX(_)}}p.xmin=t,p.xmax=t+s;let P=v.Envelope2D.constructEmpty();P.setCoords({env2D:p}),P.inflateCoords(f,0);let E=Math.floor((u.xmin-p.xmin)/s)*s;E?(p.move(E,0),x.setShiftCoords(-E,0)):x.setIdentity(),l=h===I.G.enumPolyline?new G.P({vd:c.getDescription()}):new G.a({vd:c.getDescription()});let y=v.Envelope2D.constructEmpty(),S=v.Envelope2D.constructEmpty();for(;u.xmax>p.xmin;){let e=(0,D.c)(c,p,f,0,o);e.queryEnvelope(S);(h===I.G.enumPolyline?!e.isEmpty()&&(S.width()>f||S.height()>f):!e.isEmpty()&&(h!==I.G.enumPolygon||S.width()>f))&&(e.applyTransformation(x),e.queryEnvelope(S),l.queryEnvelope(y),y.inflateCoords(f,f),y.isIntersecting(S)&&h===I.G.enumPolygon?l=(new iP).execute(l,e,i,o):l.add(e,!1)),p.move(s,0),x.shiftCoords(-s,0)}return l}function iq(e,t,s,i,r=!0){let n=new b.E;n.setCoords(s,s+i);let a=[0];if(Array.isArray(e))for(let s=0;s<t;s++)n.containsRightExclusive(e[s].x)||(a[0]=e[s].x,iF(a,n,r),e[s].x=a[0]);else for(let s=0;s<t;s++){let t=s<<1;n.containsRightExclusive(e[t])||(a[0]=e[t],iF(a,n,r),e[t]=a[0])}}function iB(e,t,s,i=!0){if(e.isEmpty())return;let r=e.getGeometryType();if(!i||r!==I.G.enumPolygon)if((0,I.i)(r)){let i=!1;if((0,I.h)(r)&&e.hasNonLinearSegments()){let r=e.getImpl(),n=r.getAttributeStreamRef(0),a=r.getSegmentFlagsStreamRef();(0,I.g)(null!==a);for(let e=0,o=r.getPathCount();e<o;e++){let o=!0,l=r.isClosedPath(e),h=r.getPathEnd(e);l&&r.getPathSize(e)>0&&(o=1==(31&a.read(h-1)));for(let l=r.getPathStart(e);l<h;l++)if(1==(31&a.read(l))){if(o){let e=n.read(2*l),r=iV(e,t,s);r!==e&&(i=!0,n.write(2*l,r))}o=!0}else o=!1}}else{let r=e.getImpl(),n=r.getAttributeStreamRef(0);for(let e=0,a=r.getPointCount();e<a;e++){let r=n.read(2*e),a=iV(r,t,s);a!==r&&(i=!0,n.write(2*e,a))}}i&&e.getImpl().notifyModifiedFlags(2001)}else if(r===I.G.enumEnvelope){let i=v.Envelope2D.constructEmpty();e.queryEnvelope(i),i.xmin=iV(i.xmin,t,s),i.xmax=iV(i.xmax,t,s),e.setEnvelope(i)}else r===I.G.enumPoint?e.setX(iV(e.getX(),t,s)):(0,I.d)("")}function iR(e,t,s,i){let r=e.getGeometryType();(0,I.g)(r===I.G.enumPolygon||r===I.G.enumPolyline||r===I.G.enumMultiPoint);let n=t.getCoordinateSystemType();if(2===n){let n=e;if(0===s){let s=function(e,t){if(t.isEmpty())return 0;let s=e.getPECoordSys();if(s.getProjection().getCode()===h.PE_PRJ_AZIMUTHAL_EQUIDISTANT){let i=rI();e.querySpheroidData(i);let r=s.getParameters();if(null===r[h.PE_PARM_LAM0]||null===r[h.PE_PARM_PHI0])return 0;let n=[r[h.PE_PARM_LAM0].getValue(),r[h.PE_PARM_PHI0].getValue()];m.geogToProj(s,1,n);let a=new b.P(n[0],n[1]),o=v.Envelope2D.constructEmpty();t.queryEnvelope(o);let l=(0,b.m)(b.P,4);o.queryCorners(l);let g=0,u=e.getOneMeter(),_=Math.max(i.majorSemiAxis,i.minorSemiAxis)*Math.PI,p=Math.min(i.majorSemiAxis,i.minorSemiAxis)*Math.PI;p-=_/180,_*=u,p*=u;for(let e=0;e<4;e++){let t=b.P.distance(l[e],a);if(t>_)g++;else if(t>p)return -1}if(0===g)return 1;if(4===g){let e=v.Envelope2D.constructEmpty();return e.setCoords({center:a,width:_,height:_}),o.isIntersectingNe(e)?-1:0}}return -1}(t,e);if(0===s)return e.createInstance();if(1===s)return e;let r=t.getPCSHorizon(),a=r.getGeometryType(),o=t.getDefaultPrecisionSR();if(a===I.G.enumEnvelope){let s=v.Envelope2D.constructEmpty();r.queryEnvelope(s);let a=(0,w.a)(o,s,!1);n=(0,D.c)(e,s,a,5e4*t.getOneMeterPCSUnit(),i)}else(new id).execute(r,e,o,i)||(n=(new sH).execute(n,r,o,i))===r&&(n=n.clone())}else if(t.isPannable()){let e=v.Envelope2D.constructEmpty();n.queryEnvelope(e);let a=t.getPannableExtent();a.containsEnvelope(e)||(iB(n,a,t.getTolerance(0)),2!==s&&4!==s||(n=iA(n,t)),4!==s?n=iT(n,t,0,!0,1e5*t.getOneMeterPCSUnit(),i):r===I.G.enumPolygon&&e.width()>2*a.width()&&(n=iU(n,-2*a.width(),2*a.width(),t,!0,0,!0,i)))}return n}if((0,I.g)(1===n),r===I.G.enumMultiPoint)return iB(e,t.getPannableExtent(),t.getTolerance(0)),e;{let s=v.Envelope2D.constructEmpty();e.queryEnvelope(s);let n=e,a=t.getPannableExtent();if(s.ymin<a.ymin||s.ymax>a.ymax){let e=Math.max(1,s.calculateToleranceFromEnvelope()),r=new v.Envelope2D(s.xmin-e,a.ymin,s.xmax+e,a.ymax);if((n=(new D.O).execute(n,r,t,i)).isEmpty())return n}return r===I.G.enumPolygon&&s.width()>2*a.width()&&(n=iU(n,-2*a.width(),2*a.width(),t,!0,0,!0,i)),n}}function iO(e,t){let s=t.getPointCount();if(!s)return;let i=t.getImpl(),r=i.getAttributeStreamRef(0);m.geogToProj(e,s,r.getArray()),i.notifyModifiedFlags(2001)}function iY(e,t,s,i){if(!s)return;let r=e.getPECoordSys();
1if(1===s){if(t[0].isNAN())return;let s=[t[0].x,t[0].y];if(m.geogToProj(r,1,s),i){let{first:i,second:r}=e.m_peCoordSysVal.getGeogToProjFactors();s[0]=i*(t[0].x-e.getCentralMeridian())+r}return void t[0].setCoords(s[0],s[1])}let n=e.isPannable(),a=n?e.getPannableExtent().width():0,o=179*a/360,l=0;n&&(l=e.getCentralMeridian());let h=new Float64Array(512);for(let g=0;g<s;){for(let e=g;e<s&&t[e].isNAN();++e)g++;let u=Math.min(256,s-g);if(u>0){for(let e=1,s=g+1;e<u;++e,++s)if(t[s].isNAN()){u=e;break}for(let e=0;e<u;++e){let s=e<<1;h[s]=t[g+e].x,h[s+1]=t[g+e].y}if(m.geogToProj(r,u,h),i){let{first:s,second:i}=e.m_peCoordSysVal.getGeogToProjFactors();for(let e=0;e<u;++e)h[e<<1]=s*(t[g+e].x-l)+i}if(n)for(let e=0,s=g;e<u;e++,s++){let i=e<<1,r=h[i],n=(0,b.e)(r),m=t[s].x-l;n*(0,b.e)(m)<0&&Math.abs(r)>o&&(h[i]-=n*a)}iw(h,t,g,u),g+=u}}}function iX(e,t,s,i){let r,n=new G.M({vd:t.getDescription()});n.addPoints(t,0,-1),r=(new sO).execute(n,e,i);let a=t.getPointCount();if(s.setEmpty(),e.getInputSR().isPannable()){if(a!==r.getPointCount())return!1;let i=new v.Envelope2D;t.queryEnvelope(i);let n=new v.Envelope2D;r.queryEnvelope(n);let o=i.width(),l=n.width();
1if(0!==o&&0!==l){if(Math.abs(l/o/(e.getOutputSR().getPannableExtent().width()/e.getInputSR().getPannableExtent().width())-1)>1e-10)return!1}else if(0!==o||0!==l)return!1;s.add(t,!1);for(let e=0;e<a;e++){let t=r.getXY(e);s.setXY(e,t)}return!0}return!1}function iL(e,t,s){(0,I.g)(!s||e.isPannable());let i=t.getPointCount();if(!i)return;let r=t.getImpl(),n=r.getAttributeStreamRef(0),a=e.getPECoordSys(),o=0,l=n.readRange(0,2*i),h=()=>{m.geogToProj(a,i,l)},g=e.isPannable()&&!s,u=g?e.getPannableExtent().width():0,_=179*u/360;if(e.isPannable()&&(o=e.getCentralMeridian(),s)){let t=e.m_peCoordSysVal.getGeogToProjFactors(),s=t.first,r=t.second;h=()=>{m.geogToProj(a,i,l);for(let e=0;e<i;e++){let t=e<<1,i=s*(n.read(t)-o)+r;l[t]=i}}}if(h(),g)for(let e=0;e<i;e++){let t=e<<1,s=l[t],i=(0,b.e)(s),r=n.read(t)-o;i*(0,b.e)(r)<0&&Math.abs(s)>_&&(l[t]+=-i*u)}n.writeRangeFromArray(0,2*i,l,!0,1),r.notifyModifiedFlags(2001)}function iz(e,t,s){if(!t.hasNonLinearSegments())return void iL(e,t,s);if((0,I.g)(!s||e.isPannable()),t.isEmpty())return;let i=e.getPECoordSys(),r=e.isPannable(),n=r?e.getPannableExtent().width():0,a=179*n/360,o=0;r&&(o=e.getCentralMeridian());let l=t.createInstance();l.reserveParts(t.getPointCount(),t.getPathCount());let h=t.getImpl(),g=new G.S;for(let u=0,_=t.getPathCount();u<_;++u)if(h.hasNonLinearSegmentsPath(u)){let t=!0,i=-1,r=h.getPathStart(u),n=r+h.getSegmentCountPath(u);h.isClosedPath(u)&&(i=n-1);let a=new b.P;for(let o=r;o<n;++o){if(h.getSegmentBuffer(o,g,!1),function(e,t,s){switch(t.getGeometryType()){case I.G.enumLine:return function(e,t,s){let i=[t.getStartXY(),t.getEndXY()];iY(e,i,2,s),t.setStartXY(i[0]),t.setEndXY(i[1]),t.normalizeAfterEndpointChange()}(e,t,s);case I.G.enumBezier:return function(e,t,s){let i=(0,b.m)(b.P,4);t.queryControlPoints(i),iY(e,i,4,s),t.setControlPoints(i)}(e,t,s);case I.G.enumEllipticArc:return function(e,t,s){if(0===t.projectionBehavior())i4(!0,e,0,t,s);else{let i=t.isClosed()&&t.isMajor(),r=[t.getStartXY(),i?t.getCenter():t.getEndXY()],n=[r[0].clone(),r[1].clone()];iY(e,n,2,s);let a=new N.T;a.initializeFromTwoPointsArray(r,n),t.applyTransformation(a),t.setCoordsForIntersector(n[0],n[+!i],!1)}}(e,t,s);case I.G.enumBezier2:case I.G.enumRationalBezier2:return(0,I.g)(0);default:(0,I.d)("")}}(e,g.get(),s),!t&&(g.get().getStartXY().equals(a)||g.get().moveTo(a)),o!==i)l.addSegment(g.get(),t);else{if(t){let e=new w.P;g.get().queryStart(e),l.startPathPoint(e)}l.closeLastPathWithSegment(g.get())}a.assign(g.get().getEndXY()),t=!1}}else{let e,s=h.getPathSize(u),g=Math.min(s,1024);l.insertPath(-1,t,u,!0);let _=h.getAttributeStreamRef(0),p=l.getAttributeStreamRef(0);for(let t=h.getPathStart(u),l=h.getPathEnd(u);t<l;){if(e=_.readRange(t,g),m.geogToProj(i,g,e),r)for(let t=0;t<g;t++){let s=t<<1,i=e[s],r=(0,b.e)(i),l=_.read(2*(0+t))-o;r*(0,b.e)(l)<0&&Math.abs(i)>a&&(e[s]+=-r*n)}p.writeRangeFromArray(t,g,e,!0,1),t+=g,s-=g,g=Math.min(s,1024)}}t.assignMove(l)}function iW(e,t,s){let i,r=s.getPointCount();if(!r)return;let n=s.getImpl(),a=n.getAttributeStreamRef(0),o=Math.min(r,1e3),l=0,h=e.getPECoordSys();Number.isNaN(t)&&(t=0);let m=e.isPannable(),g=e.getOneDegreeGCSUnit(),u=360*g,_=179*g;
1for(;r;){if(i=a.readRange(2*l,2*o),ij(h,o,i,t),m)for(let e=0;e<o;e++){let s=e<<1,r=i[s]-t,n=(0,b.e)(r),o=a.read(2*(l+e));n*(0,b.e)(o)<0&&Math.abs(r)>_&&(i[s]+=-n*u)}a.writeRangeFromArray(2*l,2*o,i,!0,1),l+=o,r-=o,o=Math.min(r,1e3)}n.notifyModifiedFlags(2001)}function ij(e,t,s,i){let r=m.projToGeogCenter(e,t,s,i);for(let e=0;e<t;++e){let t=e<<1;(0,I.g)(Number.isFinite(s[t]+s[t+1]))}return r}function iZ(e,t,s){if(!s.hasNonLinearSegments())return void iW(e,t,s);if(s.isEmpty())return;let i=e.getPECoordSys();Number.isNaN(t)&&(t=0);let r=e.isPannable(),n=e.getOneDegreeGCSUnit(),a=360*n,o=179*n,l=s.createInstance();l.reserveParts(s.getPointCount(),s.getPathCount());let h=s.getImpl(),m=new G.S;for(let n=0,g=s.getPathCount();n<g;++n)if(h.hasNonLinearSegmentsPath(n)){let s=!0,i=-1,r=h.getPathStart(n),a=r+h.getSegmentCountPath(n);h.isClosedPath(n)&&(i=a-1);let o=new b.P;for(let n=r;n<a;++n){if(h.getSegmentBuffer(n,m,!1),function(e,t,s){switch(s.getGeometryType()){case I.G.enumLine:return function(e,t,s){let i=[s.getStartXY(),s.getEndXY()];iK(e,t,i,2),s.setStartXY(i[0]),s.setEndXY(i[1]),s.normalizeAfterEndpointChange()}(e,t,s);case I.G.enumBezier:return function(e,t,s){let i=(0,b.m)(b.P,4);s.queryControlPoints(i),i2(e,t,i,4),s.setControlPoints(i)}(e,t,s);case I.G.enumEllipticArc:return function(e,t,s){if(0===s.projectionBehavior())i4(!1,e,t,s,!1);else{let i=s.isClosed()&&s.isMajor(),r=[s.getStartXY(),i?s.getCenter():s.getEndXY()],n=[r[0].clone(),r[1].clone()];i2(e,t,n,2);let a=new N.T;a.initializeFromTwoPointsArray(r,n),s.applyTransformation(a),s.setCoordsForIntersector(n[0],n[+!i],!1)}}(e,t,s);case I.G.enumBezier2:case I.G.enumRationalBezier2:return(0,I.g)(0);default:(0,I.d)("")}}(e,t,m.get()),!s&&(m.get().getStartXY().equals(o)||m.get().moveTo(o)),n!==i)l.addSegment(m.get(),s);else{if(s){let e=new w.P;m.get().queryStart(e),l.startPathPoint(e)}l.closeLastPathWithSegment(m.get())}o.assign(m.get().getEndXY()),s=!1}}else{let e,m=h.getPathSize(n),g=Math.min(m,1e3);l.insertPath(-1,s,n,!0);let u=h.getAttributeStreamRef(0),_=l.getAttributeStreamRef(0);for(let s=h.getPathStart(n),l=h.getPathEnd(n);s<l;){if(e=u.readRange(2*s,2*g),ij(i,g,e,t),r)for(let i=0;i<g;i++){let r=i<<1,n=e[r]-t,l=(0,b.e)(n),h=u.read(2*s);l*(0,b.e)(h)<0&&Math.abs(n)>o&&(e[r]+=-l*a)}_.writeRangeFromArray(2*s,2*g,e,!0,1),s+=g,m-=g,g=Math.min(m,1e3)}}s.assignMove(l)}function iK(e,t,s,i){let r=e.getPECoordSys();Number.isNaN(t)&&(t=0);let n=e.isPannable(),a=e.getOneDegreeGCSUnit(),o=360*a,l=179*a,h=new Float64Array(512);for(let e=0;e<i;){for(let t=e;t<i&&s[t].isNAN();++t)e++;let a=Math.min(256,i-e);if(a>0){for(let t=1,i=e+1;t<a;++t,++i)if(s[i].isNAN()){a=t;break}for(let t=0;t<a;t++){let i=t<<1;h[i]=s[e+t].x,h[i+1]=s[e+t].y}if(ij(r,a,h,t),n)for(let i=0,r=e;i<a;++i,++r){let e=i<<1,n=s[r].x,a=h[e]-t,m=(0,b.e)(a);m*(0,b.e)(n)<0&&Math.abs(a)>l&&(h[e]-=m*o)}for(let t=0;t<a;t++){let i=t<<1;s[e+t].x=h[i],s[e+t].y=h[i+1]}e+=a}}}function iQ(e,t,s){let i=t.getPointCount();if(!i)return!1;let r=t.getImpl(),n=r.getAttributeStreamRef(0),a=null,o=e.getInputSR(),l=e.getOutputSR();o.getVCS(),l.getVCS();let h=o.getOneDegreeGCSUnit(),m=l.getOneDegreeGCSUnit(),g=e.isVertical();g&&t.hasAttribute(1)&&(a=r.getAttributeStreamRef(1));let u=e.getDatumTransformation(),_=!!u&&1===u.getType();if(_||null===a||(a.getArray(),(0,I.g)(0),a=null),!u||0===u.count()){let e=o.getGcsUnitFactor()/l.getGcsUnitFactor(),t=(o.getPrimeMeridian()-l.getPrimeMeridian())*m,s=-90*h,a=90*h,g=0,u=n.getArray(),_=[0];for(let e=1,t=2*i;e<t;)_[0]=u[e],g|=!!(0,b.V)(_,s,a),u[e]=_[0],e+=2;if(0!==t||1!==e){g=1;let s=n.getArray();for(let r=0,n=2*i;r<n;){let i=s[r];i*=e,i+=t,s[r]=i,s[r+1]*=e,r+=2}}return 0!==g&&r.notifyModifiedFlags(2001),!!g}let p=Math.min(i,1e3),d=(0,b.d)(p,NaN),c=(0,b.d)(p,NaN),f=null;null!==a&&(f=new Float64Array(p));let x=0,P=NaN,E=NaN,y=360*m,S=m/h;s&&(E=90*m,P=89.9*h,c.fill(0));let C=!0,v=0;for(;i;){let e=!1,t=n.readRange(2*x,2*p);for(let e=0;e<p;e++)d[e]=t[e<<1];if(s)for(let s=0;s<p;s++){let i=1+(s<<1),r=Math.abs(t[i])-P;if(r>0){let n=t[i];t[i]=(0,b.f)(P,n),c[s]=(0,b.f)(r,n),e=!0}}let r=t[0];_?(f&&a.queryRange(x,p,f,!0,1),u.transform(!1,t,f,p),f&&a.writeRangeFromArray(x,p,f,!0,1)):u.transform(!1,t,p),C&&(v=t[0]-S*r,C=!1);for(let e=0;e<p;e++){let s=e<<1,i=t[s]-d[e]*S-v;Math.abs(i)>200&&(t[s]+=i>0?-y:y)}if(e){for(let e=0;e<p;e++)if(c[e]){let s=1+(e<<1);t[s]+=S*c[e],t[s]>E?t[s]=E:t[s]<-E&&(t[s]=-E)}c.fill(0)}n.writeRangeFromArray(2*x,2*p,t,!0,1),g&&a&&a.writeRangeFromArray(x,p,f,!0,1),x+=p,i-=p,p=Math.min(i,1e3)}return r.notifyModifiedFlags(2001),!0}function iJ(e,t,s){if(!t.hasNonLinearSegments())return iQ(e,t,s);if(t.isEmpty())return!1;let i=t.createInstance();i.reserveParts(t.getPointCount(),t.getPathCount());let r=t.getImpl(),n=new G.S;for(let a=0,o=t.getPathCount();a<o;++a){let t=!0,o=-1,l=r.getPathStart(a),h=l+r.getSegmentCountPath(a);r.isClosedPath(a)&&(o=h-1);let m=new b.P;for(let a=l;a<h;++a){if(r.getSegmentBuffer(a,n,!1),function(e,t,s){switch(t.getGeometryType()){case I.G.enumLine:return function(e,t,s){let i=[t.getStartXY(),t.getEndXY()],r=null;t.hasAttribute(1)&&((r=[0,0])[0]=t.getAttributeAsDbl(0,1,0),r[1]=t.getAttributeAsDbl(1,1,0)),i1(e,i,r,2,s
1),t.setStartXY(i[0]),t.setEndXY(i[1]),r&&(t.setStartAttribute(1,0,r[0]),t.setEndAttribute(1,0,r[1])),t.normalizeAfterEndpointChange()}(e,t,s);case I.G.enumBezier:return function(e,t,s){let i=(0,b.m)(b.P,4);t.queryControlPoints(i);let r=null;t.hasAttribute(1)&&((r=[0,0,0,0])[0]=t.getAttributeAsDbl(0,1,0),r[3]=t.getAttributeAsDbl(1,1,0),r[1]=(0,b.q)(r[0],r[3],.5),r[2]=r[1]),i1(e,i,r||null,i.length,s),t.setControlPoints(i),r&&(t.setStartAttribute(1,0,r[0]),t.setEndAttribute(1,0,r[3])),t.normalizeAfterEndpointChange()}(e,t,s);case I.G.enumEllipticArc:return function(e,t,s){if(0===t.projectionBehavior())return function(e,t,s){let i=[t.getStartXY(),t.getEndXY(),t.getInteriorPoint(),t.getCenter()],r=4;t.isDegenerateToLine()&&(r=2);let n=null;if(t.hasAttribute(1)){(n=[0,0,0,0])[0]=t.getAttributeAsDbl(0,1,0),n[1]=t.getAttributeAsDbl(1,1,0);let e=(0,b.q)(n[0],n[1],.5);n[2]=e,n[3]=e}let a=t.getStartXY().equals(t.getEndXY())&&!t.isDegenerateToLine();i1(e,i,n,r,s),a?t.constructCircleCenterAndPoint(i[3],i[0],!t.isClockwise()):t.isDegenerateToLine()?t.constructLineCircularArc(i[0],i[1]):t.constructCircularArcThreePoint(i[0],i[1],i[2]),n&&(t.setStartAttribute(1,0,n[0]),t.setEndAttribute(1,0,n[1]))}(e,t,s);let i=t.getStartXY().equals(t.getEndXY()),r=(0,b.m)(b.P,3),n=(0,b.m)(b.P,3),a=null;r[0].assign(t.getStartXY()),r[1].assign(i?t.getCenter():t.getEndXY());t.hasAttribute(1)&&((a=[0,0,0])[0]=t.getAttributeAsDbl(0,1,0),a[1]=t.getAttributeAsDbl(1,1,0),a[2]=(0,b.q)(a[0],a[1],.5),i&&(a[1]=a[2])),n[0].setCoordsPoint2D(r[0]),n[1].setCoordsPoint2D(r[1]);let o=new N.T;if(i||t.isDegenerateToLine())i1(e,n,a,2,s),o.initializeFromTwoPoints(r[0],r[1],n[0],n[1]);else{let i=new b.P;t.queryCoord2D(.5,i),r[2].setCoordsPoint2D(i),n[2].setCoordsPoint2D(i),i1(e,n,a,3,s),o.setFromTwoTriangles(r,n)}o.isIdentity()||(t.applyTransformation(o),t.setStartXY(n[0]),t.setEndXY(i?n[0]:n[1]),t.normalizeAfterEndpointChange()),a&&(t.setStartAttribute(1,0,a[0]),t.setEndAttribute(1,0,i?a[0]:a[1]))}(e,t,s);case I.G.enumBezier2:case I.G.enumRationalBezier2:return(0,I.g)(0);default:(0,I.d)("")}}(e,n.get(),s),!t&&(n.get().getStartXY().equals(m)||n.get().moveTo(m)),a!==o)i.addSegment(n.get(),t);else{if(t){let e=new w.P;n.get().queryStart(e),i.startPathPoint(e)}i.closeLastPathWithSegment(n.get())}m.assign(n.get().getEndXY()),t=!1}}return t.assignMove(i),!0}function i$(e,t,s,i,r,n){if(e.isIdentityGeogToGeog()){let s=90*e.getInputSR().getOneDegreeGCSUnit(),r=0,n=[0];for(let e=0;e<i;e++)n[0]=t[e].y,r|=!!(0,b.V)(n,-s,s),t[e].y=n[0];return r}let a=e.getInputSR(),o=e.getOutputSR(),l=a.getVCS(),h=o.getVCS(),m=a.getOneDegreeGCSUnit(),g=90*m,u=o.getOneDegreeGCSUnit(),_=e.isVertical(),p=e.getDatumTransformation(),d=!!p&&1===p.getType();if(_||(s=null),!p||0===p.count()){let e=0,r=[0];for(let s=0;s<i;s++)r[0]=t[s].y,e|=!!(0,b.V)(r,-g,g),t[s].y=r[0];return!!ig(a.getGCS(),l,o.getGCS(),h,t,s,i)|e}d||null===s||(0,I.g)(0);let c=Math.min(i,1024),f=(0,b.d)(c,NaN),x=(0,b.d)(c,NaN),P=0,E=NaN,y=NaN,S=360*u,C=u/m;r&&(y=90*u,E=89.9*m);let v=!0,G=0,w=i;for(;w;){let e=!1;for(let e=0;e<c;e++)f[e]=t[e+P].x;if(r)for(let s=0;s<c;s++){let i=Math.abs(t[s+P].y)-E;if(i>0){let r=t[s+P].y;t[s+P].y=(0,b.f)(E,r),x[s]=(0,b.f)(i,r),e=!0}}let i=t[0].x;d?p.transform(!1,t,s,c):p.transform(!1,t,c),v&&(G=t[0].x-C*i,v=!1);for(let e=0;e<c;e++){let s=t[P+e].x-f[e]*C-G;Math.abs(s)>200&&(s>0?t[P+e].x-=S:t[P+e].x+=S)}if(e){for(let e=0;e<c;e++)x[e]&&(t[P+e].y+=C*x[e],t[P+e].y>y?t[P+e].y=y:t[P+e].y<-y&&(t[P+e].y=-y));x.fill(0,0,c)}P+=c,w-=c,c=Math.min(w,1024)}return 1}function i0(e,t,s,i,r){let n;(0,I.g)(null===i),(0,I.g)(t<0x7fffffff);let a=Array.isArray(s);n=a?(0,b._)(s):s;let o=g.geogToGeog(e,t,n,null,r);return a&&(0,b.$)(n,s),o}function i1(e,t,s,i,r,n){let a=0,o=!0,l=0;for(let n=0;n<i;++n)t[n].isNAN()?o||(a|=i$(e,t.slice(l,n-l),s?s.slice(l,n-l):null,n-l,r),l=n,o=!0):o&&(l=n,o=!1);return o||(a|=i$(e,0===l?t:t.slice(l),s?0===l?s:s.slice(l):null,i-l,r)),0!==a}function i2(e,t,s,i){iK(e,t,s,i);let r=new v.Envelope2D;r.setFromPoints(s,i);let n=e.getOneDegreeGCSUnit(),a=360*n,o=180*n;if(r.width()>o){for(let e=0;e<i;e++)for(;s[e].x<t;)s[e].x+=a;if(r.setFromPoints(s,i),r.xmax>o+t)for(let e=0;e<i;e++)s[e].x-=a}}function i4(e,t,s,i,r){let n=(0,b.m)(b.P,3),a=0,o=!1,l=!1,h=i.isDegenerateToLine();h?(n[0].assign(i.getStartXY()),n[1].assign(i.getEndXY()),n[2].setCoords(0,0),a=2):i.isClosed()&&i.isMajor()?(o=!0,l=!i.isClockwise(),n[0].assign(i.getStartXY()),n[1].assign(i.getCenter()),n[2].setCoords(0,0),a=2):(n[0].assign(i.getStartXY()),n[1].assign(i.getEndXY()),n[2].assign(i.getInteriorPoint()),a=3),e?iY(t,n,a,r):i2(t,s,n,a),h?i.constructLineCir
1cularArc(n[0],n[1]):o?i.constructCircleCenterAndPoint(n[1],n[0],l):i.constructCircularArcThreePoint(n[0],n[1],n[2])}function i3(e,t,s){let i=(0,G.a3)(e),r=(0,G.a3)(t),n=(0,G.a2)(i,r),a=(0,G.a2)(i,(0,G.a3)(s));return 0===a||n>0&&a>0&&a<=n||n<0&&a<0&&a>=n}function i7(e,t,s,i){let r=new b.E;r.setCoords(t,s);let n=i.width(),a=Math.floor((e-t)/n)*n+e,o=r.getCenter();for(;Math.abs(a-o)>Math.abs(a+n-o);)a+=n;return a}class i6 extends F.G{constructor(){super(),this.m_geometryDeque=[],this.m_index=-1}next(){if(this.m_geometryDeque.length>0){this.m_index++;let e=this.m_geometryDeque[0];return this.m_geometryDeque.shift(),e}return null}getGeometryID(){return this.m_index}tick(e){this.m_geometryDeque.push(e)}tock(){return!0}getRank(){return 1}}class i8{constructor(e,t=!0){this.m_PCSHorizon=null,this.m_GCSHorizon=null,this.m_GCSSplitLines=null,this.m_bGCSHorisonIsInclusive=!1,this.m_oneMeterPCS=0,this.m_oneDegreeGCS=0,this.m_gcsUnitFactor=0,this.m_northPole=b.P.getNAN(),this.m_southPole=b.P.getNAN(),this.m_polesUpdated=0,this.m_domain=v.Envelope2D.constructEmpty(),this.m_primeMeridian=NaN,this.m_geogToProjFactor=1,this.m_geogToProjOffset=0,this.m_geogToProjFactorsUpdated=0,this.m_oneMillimeter=0,this.m_centralMeridian=0,this.m_pPCSInfoNoDomain=null,this.m_oldWKID=-1973,this.m_vcsWKID=-1,this.m_bIsPannable=!1,this.m_bCached=!1,this.m_pannableExtent=v.Envelope2D.constructEmpty(),this.m_pannableExtentGCS=v.Envelope2D.constructEmpty(),this.m_areaOfUse=null,this.m_canonicalWkt="",this.m_peCoordSys=e,this.m_WKID=l.getCode(e),this.m_WKID<=0?(this.m_WKID=0,this.m_canonicalWkt=iI(e,0,!0),this.m_hashCode=(0,b.I)(this.m_canonicalWkt)):this.m_hashCode=(0,b.J)(this.m_WKID);
1const s=this.m_peCoordSys.getType();this.m_csType=s===h.PE_TYPE_PROJCS?2:1,(0,I.g)(s===h.PE_TYPE_PROJCS||s===h.PE_TYPE_GEOGCS),s===h.PE_TYPE_PROJCS&&(e.loadConstants()||(0,I.a)("PeProjcs.loadConstants failed"));const i=s===h.PE_TYPE_GEOGCS?this.m_peCoordSys:this.m_peCoordSys.getGeogcs();s!==h.PE_TYPE_GEOGCS&&l.getCode(i),this.m_unit=function(e){var t;let s=r6(null);return e.getType()===h.PE_TYPE_PROJCS||e.getType()===h.PE_TYPE_GEOGCS?s.reset(e.getUnit()):(0,I.a)("PE_coord_sys"),s.get()||(0,I.d)("cannot create units from coord sys"),(t=s.get()).getType()===h.PE_TYPE_LINUNIT?new rP(t):t.getType()===h.PE_TYPE_ANGUNIT?new U(t):void(0,I.a)("peUnit")}(e),this.m_primeMeridian=i.getPrimem().getLongitude();{const e=i.getUnit().getUnitFactor();this.m_gcsUnitFactor=e;let t=Math.PI/(180*e);1e-10>Math.abs(t-1)&&(t=1),this.m_oneDegreeGCS=t}if(s===h.PE_TYPE_PROJCS){const e=this.m_peCoordSys,t=e.getUnit().getUnitFactor();this.m_oneMeterPCS=1/t,this.m_oneMillimeter=.001/t,this.m_pPCSInfoNoDomain=u.generate(e,u.PE_PCSINFO_OPTION_NONE),this.m_pPCSInfoNoDomain||(0,I.d)("cannot create pcs info"),this.m_bIsPannable=this.m_pPCSInfoNoDomain.isPannableRectangle(),this.m_centralMeridian=this.m_pPCSInfoNoDomain.getCentralMeridian()}else{this.m_bIsPannable=!0,this.m_polesUpdated=1,this.m_oneMeterPCS=0;const e=1/i.getUnit().getUnitFactor(),t=i.getDatum().getSpheroid().getAxis();this.m_oneMillimeter=.001/t*e,this.m_centralMeridian=0}this.m_bIsPannable&&(this.updateGCSHorizon(),this.updatePCSHorizon(),this.updatePoles(),this.updateDomain(),this.updatePannableExtent(),this.updatePannableExtentGCS())}[Symbol.dispose](){}getHashCode(){return this.m_hashCode}getPCSHorizonPannable(){return this.m_PCSHorizon}getGCSHorizonPannable(){return this.m_GCSHorizon}getPCSInfo(){return(0,I.g)(this.m_pPCSInfoNoDomain),this.m_pPCSInfoNoDomain}getCentralMeridian(){return this.m_centralMeridian}updateGCSHorizon(){let e,t;if(this.m_peCoordSys.getType()!==h.PE_TYPE_PROJCS)return;
1let s=!0,i=this.m_peCoordSys,r=i.getGeogcs(),n=i.horizonGcsGenerate();if(!n)return;(0,I.g)(n.length>0);let a=n[0].getNump(),o=n[0].getKind();s=n[0].getInclusive()>0;let l=this.getOneDegreeGCSUnit(),m=90*l,g=360*l,u=180*l*h.PE_HORIZON_DELTA/Math.PI,_=v.Envelope2D.constructEmpty(),p=null;if(a>1){for(let e=1;e<a;e++)if(n[e].getKind()===h.PE_HORIZON_LINE){p||(p=new G.P);let t=n[e].getCoord();p.startPathCoords(t[0][0],t[0][1]),p.lineToCoords(t[1][0],t[1][1])}}if(o===h.PE_HORIZON_RECT){let e=n[0].getCoord();if(_.setFromPoints([new b.P(e[0][0],e[0][1]),new b.P(e[1][0],e[1][1])],2),Math.abs(_.ymax-m)<1e-7*u&&(_.ymax=m),Math.abs(_.ymin+m)<1e-7*u&&(_.ymin=-m),_.width()>370*l){let e=-400*l;_.setCoords({xmin:e,ymin:_.ymin,xmax:e+5*g,ymax:_.ymax})}let t=new w.E({env2D:_});this.m_GCSHorizon||(this.m_GCSHorizon=t,this.m_bGCSHorisonIsInclusive=s)}else{let i=this.getPCSInfo().isGcsHorizonMultiOverlap(),o=rV(r,null,null,1),u=[],_=new b.E;for(let t=0;t<a;t++){if(n[t].getKind()!==h.PE_HORIZON_POLY)continue;e=n[t].getSize();let s=n[t].getCoord(),i=v.Envelope2D.constructEmpty();i.setFromPoints((0,b.L)(s),e),u.push(new b.E(i.xmin,i.xmax)),i.width(),_.merge(u.at(-1))}let d=!1,c=new b.E;_.width()>g&&u.length>1?(c.vmin=this.getCentralMeridian()-g,c.vmax=c.vmin+2*g,d=!0,i=!0):(c.vmin=_.vmin,c.vmax=c.vmin+g);let f=e=>{let t=0;for(;u[e].vmin+t<c.vmin;)t+=g;for(;u[e].vmax+t-g>c.vmin;)t-=g;return t},x=new G.a;if(i){let s=new i6,i=(new iP).executeMany(s,o,null);for(let r=0;r<a;r++){if(n[r].getKind()!==h.PE_HORIZON_POLY)continue;e=n[r].getSize();let a=n[r].getCoord();t=n[r].getInclusive()>0;let o=new G.a;if(o.addPathPoint2D((0,b.L)(a),e-1,!0),d){let e=f(r),t=u[r].clone();t.move(e);let i=e,n=new N.T;do{n.setShiftCoords(i,0);let e=o.clone();e.applyTransformation(n),s.tick(e),s.tock(),i+=g,t.move(g)}while(t.vmin<c.vmax)}else s.tick(o),i.tock()}x=i.next()}else{x=new G.a;for(let i=0;i<a;i++){if(n[i].getKind()!==h.PE_HORIZON_POLY)continue;e=n[i].getSize();let r=n[i].getCoord();if(t=n[i].getInclusive()>0,(0,I.g)(t===s),d){let t=new G.a;t.addPathPoint2D((0,b.L)(r),e-1,!0);let s=f(i),n=u[i].clone();n.move(s);let a=s,o=new N.T;do{if(0!==a){o.setShiftCoords(a,0);let e=new G.a({copy:t});e.applyTransformation(o),x.addPath(e,0,!0)}else x.addPath(t,0,!0);a+=g,n.move(g)}while(n.vmin<c.vmax)}else x.addPathPoint2D((0,b.L)(r),e-1,!0)}}d&&(x=(new D.O).execute(x,new v.Envelope2D(c.vmin,-m-l,c.vmax,m+l),o,null)),s?(new sH).accelerateGeometry(x,o,1):(new ic).accelerateGeometry(x,o,1),(new iS).accelerateGeometry(x,o,1),null===this.m_GCSHorizon&&(this.m_GCSHorizon=x,this.m_bGCSHorisonIsInclusive=s,this.m_GCSSplitLines=p)}}updateAreaOfUse(){return null}updatePCSHorizon(){let e;if(this.m_peCoordSys.getType()!==h.PE_TYPE_PROJCS)return;let t=this.m_peCoordSys.horizonPcsGenerate();if(!t)return;this.getPCSInfo();let s=t[0].getKind();t[0].getInclusive();let i=v.Envelope2D.constructEmpty(),r=t[0].getNump(),n=!1;if(s===h.PE_HORIZON_RECT){let s=t[0].getCoord();i.setFromPoints((0,b.L)(s),2),e=new w.E({env2D:i})}else{let s=-1;for(let e=0;e<r;e++)t[e].getKind()===h.PE_HORIZON_POLY&&(s=e);(0,I.g)(s>=0);let i=t[s].getSize()-1,a=t[s].getCoord(),o=new G.a;e=o,o.addPathPoint2D((0,b.L)(a),i,!0),n=!0}if(this.getPCSInfo().isDensificationNeeded()){(0,I.g)(s!==h.PE_HORIZON_RECT);let t=1e5*this.getOneMeterPCSUnit();e=(new V.O).execute(e,t,0,0,null)}if(n){{let t=new w.E;e.queryEnvelope(t),e.calculateArea2D(),e.calculateLength2D(),e.getExteriorRingCount()}(new sH).accelerateGeometry(e,null,1)}null===this.m_PCSHorizon&&(this.m_PCSHorizon=e)}updatePannableExtent(){let e=this.m_peCoordSys.getType();if(e===h.PE_TYPE_PROJCS){let e=this.m_peCoordSys,t=this.getPCSInfo().getCentralMeridian(),s=e.getGeogcs();
1s||(0,I.d)("");let i=[t+1/s.getUnit().getUnitFactor()*Math.PI,0];m.geogToProj(e,1,i);let r=i[0],n=e.getParameters()[h.PE_PARM_X0].getValue(),a=this.getPCSHorizon(),o=v.Envelope2D.constructEmpty();a.queryEnvelope(o);let l=Math.abs(r-n),g=o.ymax,u=o.ymin;this.m_pannableExtent.setCoords({xmin:-1*l+n,ymin:u,xmax:l+n,ymax:g})}else if(e===h.PE_TYPE_GEOGCS){let e=1/this.m_peCoordSys.getUnit().getUnitFactor()*Math.PI;this.m_pannableExtent.setCoords({xmin:-e,ymin:-e/2,xmax:e,ymax:e/2})}else(0,I.d)("")}updatePannableExtentGCS(){let e=this.m_peCoordSys.getType();if(e===h.PE_TYPE_PROJCS){let e=this.m_peCoordSys,t=this.m_centralMeridian,s=e.getGeogcs();s||(0,I.d)("");let i=1/s.getUnit().getUnitFactor()*Math.PI,r=this.getGCSHorizon(),n=v.Envelope2D.constructEmpty();r.queryEnvelope(n),this.m_pannableExtentGCS.setCoords({xmin:t-i,ymin:n.ymin,xmax:t+i,ymax:n.ymax})}else if(e===h.PE_TYPE_GEOGCS){let e=1/this.m_peCoordSys.getUnit().getUnitFactor()*Math.PI;this.m_pannableExtentGCS.setCoords({xmin:-e,ymin:-e/2,xmax:e,ymax:e/2})}else(0,I.d)("")}updateDomain(){if(1===this.m_csType){let e=400*this.getOneDegreeGCSUnit();this.m_domain=v.Envelope2D.construct(-e,-e,e,e)}else{(0,I.g)(2===this.m_csType);let e=u.generate(this.m_peCoordSys,u.PE_PCSINFO_OPTION_DOMAIN);e||(0,I.d)("generate pcs info failed");let t=new v.Envelope2D(e.getDomainMinx(),e.getDomainMiny(),e.getDomainMaxx(),e.getDomainMaxy());this.m_domain.isEmpty()&&this.m_domain.setCoords({env2D:t})}}updatePoles(){if(this.m_peCoordSys.getType()===h.PE_TYPE_PROJCS){let e=90*this.getOneDegreeGCSUnit(),t=[[0,e],[0,-e]];
1m.geogToProj(this.m_peCoordSys,2,t);let s=this.getPCSInfo().getNorthPoleLocation()!==u.PE_POLE_OUTSIDE_BOUNDARY,i=this.getPCSInfo().getSouthPoleLocation()!==u.PE_POLE_OUTSIDE_BOUNDARY;this.m_polesUpdated||(s&&this.m_northPole.setCoords(t[0][0],t[0][1]),i&&this.m_southPole.setCoords(t[1][0],t[1][1]),this.m_polesUpdated=1)}else this.m_polesUpdated=1}updateGeogToProjFactors(){if(this.m_peCoordSys.getType()===h.PE_TYPE_PROJCS){let e=this.getOneDegreeGCSUnit(),t=this.m_pPCSInfoNoDomain.getCentralMeridian(),s=[0,0,0,0];s[0]=t,s[1]=0,s[2]=t+e,s[3]=0;let i=m.geogToProj(this.m_peCoordSys,2,s);(0,I.g)(2===i);let r=(s[2]-s[0])/e,n=s[0];0===this.m_geogToProjFactorsUpdated&&(this.m_geogToProjFactor=r,this.m_geogToProjOffset=n,this.m_geogToProjFactorsUpdated=1)}else this.m_geogToProjFactorsUpdated=1}getOneMeterPCSUnit(){return this.m_oneMeterPCS}getOneDegreeGCSUnit(){return this.m_oneDegreeGCS}getGcsUnitFactor(){return this.m_gcsUnitFactor}getUnitsPerMillimeter(){return this.m_oneMillimeter}getGCSSplitLines(){return this.m_bIsPannable?null:(this.m_GCSHorizon||this.updateGCSHorizon(),this.m_GCSSplitLines)}getGCSHorizon(){return this.m_bIsPannable?this.getGCSHorizonPannable():(null!==this.m_GCSHorizon||this.updateGCSHorizon(),this.m_GCSHorizon)}getGCSHorisonIsInclusive(){return this.m_bIsPannable||this.getGCSHorizon(),this.m_bGCSHorisonIsInclusive}getPCSHorizon(){return this.m_bIsPannable?this.getPCSHorizonPannable():(null!==this.m_PCSHorizon||this.updatePCSHorizon(),this.m_PCSHorizon)}getPole(e){return this.m_bIsPannable||0!==this.m_polesUpdated||this.updatePoles(),e?this.m_southPole:this.m_northPole}getGeogToProjFactors(){return 0===this.m_geogToProjFactorsUpdated&&this.updateGeogToProjFactors(),(0,b.l)(this.m_geogToProjFactor,this.m_geogToProjOffset)}getDomainXY(){if(this.m_bIsPannable)return this.m_domain.clone();return this.m_domain.isEmpty()&&this.updateDomain(),this.m_domain.clone()}getPrimeMeridian(){return this.m_primeMeridian}getLatestID(){return this.m_WKID}getOldID(){let e=this.m_oldWKID;if(e<0){if(e=0,this.m_WKID>0){var t,s,i,r;let n=[0];t=this.m_peCoordSys.getType(),s=this.m_WKID,i=n,r=[0],(s<=0?(i[0]=0,r[0]=0,1):(i[0]=s,r[0]=s,0))&&(0,I.d)("query_code_change"),e=n[0]}this.m_oldWKID=e}return e}isCustomWkid(){return!1}isPannable(){return this.m_bIsPannable}getPannableExtent(){return this.m_pannableExtent.clone()}getPannableExtentGCS(){return this.m_pannableExtentGCS.clone()}getAreaOfUse(){return null!==this.m_areaOfUse?this.m_areaOfUse:this.updateAreaOfUse()}getVcsCode(){return 0}saveMemory(){}getCSType(){return this.m_csType}getUnit(){return this.m_unit}setCached(){this.m_bCached=!0}getCached(){return this.m_bCached}static equal(e,t){return!1}static equal_for_projection(e,t){return!1}}class i9{constructor(e,t=!0){this.m_oneMeter=0,this.m_WKID=-1,this.m_oldWKID=-1,this.m_canonicalWkt="not yet implemented",this.m_model=0,this.m_unit=new rP,this.m_cached=!1}setCached(e=!0){this.m_cached=e}getCached(){return this.m_cached}getOneMeterUnit(){return 0}getLatestID(){return this.m_WKID}getOldID(){let e=this.m_oldWKID;return e<0&&(e=0,this.m_WKID>0&&(e=this.m_WKID),this.m_oldWKID=e),e}getModel(){return 0}isCustomWkid(){return!1}getVerticalUnit(){return this.m_unit}static equal(e,t){return!1}static equal_for_projection(e,t){return!1}}function i5(e,t,s){return re(e,t,v.Envelope2D.constructEmpty())}function re(e,t,s,i){var n,a,o;return n=e,a=t,o=s,rw()||(0,I.r)("cannot create projection transformation"),n.hasVCS()&&a.hasVCS()?((0,I.g)(0),{}):function(e,t,s){var i,n;e&&t||(0,I.a)("!inputSR || !outputSR");let a=e.getLatestID(),o=t.getLatestID();if(3857===a&&4326===o){if(e.m_bDefaultDescriptor&&t.m_bDefaultDescriptor)return rd()}else if(4326===a&&3857===o&&e.m_bDefaultDescriptor&&t.m_bDefaultDescriptor)return r||(r=rd().getInverse()),r;let l=v.Envelope2D.constructEmpty();l.setCoords({env2D:s});let h=e.getCoordinateSystemType(),m=t.getCoordinateSystemType();if(0===h||0===m)return rn(e,t);let g=e.getGCS().getLatestID(),u=t.getGCS().getLatestID();if(g>0&&g===u)return rn(e,t);let _=new r_(e,t,s);{let e=function(e){if(rp.has(e.getHashCode()))return rp.get(e.getHashCode())}(_);if(e)return e}let p=ri(0,e,t,l,1,!0);return i=_,n=rn(e,t,p.length?p[0]:void 0),rp.set(i.getHashCode(),n),n}(n,a,o)}function rt(e,t,s,i){return rs(!0,e,t,s,i)}function rs(e,t,s,i,r,n){return rw()||(0,I.r)("cannot create projection transformation"),new rl(e?2:1,t,s,i,r,n)}function ri(e,t,s,i,r,n=!1){if(t&&s||(0,I.a)(""),rw()||(0,I.r)("cannot obtain geotransformation list"),1===e&&t.hasVCS()&&s.hasVCS())return(0,I.t)("hv xform not impl"),[];{let e=function(e,t,s,i,r){let n=e.getGCS(),a=t.getGCS(),o=n.getPECoordSys(),l=a.getPECoordSys(),h=null;if(!s.isEmpty()){let t=s.clone();if(!t.isEmpty()&&2===e.getCoordinateSystemType()){let s=new w.E({env2D:t}),i=rt(e,n,null);(s=(new sO).execute(s,i,null)).queryEnvelope(t)}if(!t.isEmpty()){let e=o.getPrimem().getLongitude(),s=o.getUnit().getUnitFactor();h=new f(t.xmin,t.ymin,t.xmax,t.ymax,e,s)}}let m=i;m>=(0,b.i)()&&(m=0);let g=[],u=_.PE_GTLIST_OPTS_COMMON;r||(u&=~_.PE_GTLIST_OPTS_USABLE);for(let e=0;e<2;e++){g.length=0;let e=m,t=_.getGTlist(o,l,2,u,h,e),s=!1;if(t&&t.length>0)for(let e=0,n=t.length;e<n;e++){let n=function(e){(0,I.g)(null!==e);let t=new nl,s=e[0].getSteps();if(s){let i=e[0].getEntries();for(let e=0;e<s;e++){let s=0!==i[e].getDirection(),r=new nn(i[e].getGeogtran(),s);t.add(r)}return t.create()}return null}([t[e]]);if((0,I.g)(n),r&&n.referencesMissingData())s=!0;else if(g.push(n),i>0&&g.length===i)break}if(!s)break;0===m||(m=0)}return h&&h.destroy(),g}(t,s,i,r,n),a=[];for(let t of e)a.push(t);return a}}function rr(){return{centralMeridianOfOutputGCS:NaN,densificationStep:NaN,clipWithInputHorizon:!0,clipWithOutputHorizon:!0,legacyHorizonClipping:!1,normalizeResultGeometry:!1,equals(e){return(0,b.F)(this.centralMeridianOfOutputGCS,e.centralMeridianOfOutputGCS)&&(0,b.F)(this.densificationStep,e.densificationStep)&&this.clipWithInputHorizon===e.clipWithInputHorizon&&this.clipWithOutputHorizon===e.clipWithOutputHorizon&&this.legacyHorizonClipping===e.legacyHorizonClipping&&this.normalizeResultGeometry===e.normalizeResultGeometry}}}function rn(e,t,s,i,r){return new rl(1,e,t,s,i,r)}
1function ra(){return{flagsMask:0,setFlag(e,t){t?this.flagsMask|=e:this.flagsMask&=~e},hasFlag(e){return 0!=(this.flagsMask&e)}}}function ro(){return{m_extendedParams:rr(),m_extendedParamsInternal:ra()}}class rl{constructor(e,t,s,i,r,n){let a,o;this.m_datumTran=null,this.m_bIdentity=!0,this.m_bIdentityGeogToGeog=!0,this.m_bVertical=!1,this.m_bNormalize=!1,t&&s||(0,I.a)("!inputSR || !outputSR"),i&&0===i.getType()&&(i.m_bReadOnly=!0),this.m_bNormalize=!1,1!==e&&(a=t.getVCS(),o=s.getVCS(),this.m_bVertical=null!=a&&null!=o),this.m_inputSR=t,this.m_outputSR=s,this.m_bIdentity=!1,this.m_bIdentityGeogToGeog=!1,(0,I.g)(!this.m_params),r&&(this.m_params=ro(),this.m_params.m_extendedParams=r),n&&(this.m_params||(this.m_params=ro()),this.m_params.m_extendedParamsInternal=n);let l=!1;const h=null!=i,m=t.getCoordinateSystemType(),g=s.getCoordinateSystemType();if(s.isPannable()&&0!==m&&r){const e=r.centralMeridianOfOutputGCS;if(!Number.isNaN(e)&&s.isPannable()){const t=s.getPannableExtent(),i=t.getCenterX();if(i!==e){const s=Math.ceil(t.width());e+s!==i+s&&(l=!0)}}}const u=r&&r.normalizeResultGeometry;if(t.equals(s))return this.m_bIdentity=!l,this.m_bIdentityGeogToGeog=!0,void this.updateProjector();const _=!h&&t.equalForProjection(s,this.m_bVertical);this.m_bIdentity=_&&!l,this.m_bIdentity?this.m_bIdentityGeogToGeog=!0:0!==m&&0!==g&&(u&&this.m_outputSR.isPannable()&&(this.m_bNormalize=u),this.m_datumTran=i||null,this.m_bIdentityGeogToGeog=(!this.m_datumTran||0===this.m_datumTran.count())&&this.m_inputSR.getGCS().equalForProjection(this.m_outputSR.getGCS(),this.m_bVertical)),this.updateProjector()}getInputSR(){return this.m_inputSR}getOutputSR(){return this.m_outputSR}getDatumTransformation(){return this.m_datumTran}getInverse(){let e=new rl(1,this.m_outputSR,this.m_inputSR,this.m_datumTran?.createInverse());return e.m_bIdentity=this.m_bIdentity,e.m_bVertical=this.m_bVertical,e.m_bIdentityGeogToGeog=this.m_bIdentityGeogToGeog,e.updateProjector(),e}isIdentity(){return this.m_bIdentity}getExtendedParams(){return this.m_params?this.m_params.m_extendedParams:ro().m_extendedParams}equals(e){return(0,I.g)(0),!1}isVertical(){return this.m_bVertical}isMatchingTransformation(e,t){return(0,I.g)(0),!1}getGeographicTransformations(){return this.m_datumTran}getExtendedParamsImpl(){return this.m_params?this.m_params.m_extendedParams:ro().m_extendedParams}getExtendedParamsInternal(){return this.m_params?this.m_params.m_extendedParamsInternal:ro().m_extendedParamsInternal}isIdentityGeogToGeog(){return this.m_bIdentityGeogToGeog}normalizeOutput(){return this.m_bNormalize}updateProjector(){this.m_projector=new sq(this)}}let rh=new Map,rm=new Map,rg=new Map;function ru(e){let t=e.getCode();if(t>0)return rx(t)||rf(l.coordsys(t));let s=e.getName();if(rm.has(s)){let t=rm.get(s);if(t&&t.deref()){let s=t.deref();if(s.m_peCoordSys.isEqual(e))return s}}return rf((t=l.getCode(e))>0?l.coordsys(t):e)}class r_{constructor(e,t,s){this.m_hashCode=-1,e&&(this.m_inputSR=e,this.m_outputSR=t,this.m_env=s.clone(),this.m_hashCode=this.m_inputSR.getHashCode(),this.m_hashCode=(0,b.A)(this.m_hashCode,this.m_outputSR.getHashCode()),this.m_env.isEmpty()||(this.m_hashCode=(0,b.A)(this.m_hashCode,(0,b.a0)(this.m_env.xmin)),this.m_hashCode=(0,b.A)(this.m_hashCode,(0,b.a0)(this.m_env.xmax)),this.m_hashCode=(0,b.A)(this.m_hashCode,(0,b.a0)(this.m_env.ymin)),this.m_hashCode=(0,b.A)(this.m_hashCode,(0,b.a0)(this.m_env.ymax))))}getHashCode(){return this.m_hashCode}equals(e){return!(this.m_inputSR&&!e.m_inputSR||!this.m_inputSR&&e.m_inputSR)&&this.m_env.equals(e.m_env)&&this.m_inputSR.equals(e.m_inputSR)&&this.m_outputSR.equals(e.m_outputSR)}clear(){this.m_inputSR=void 0,this.m_outputSR=void 0,this.m_hashCode=-1,this.m_env=void 0}}let rp=new Map;function rd(){return i||(i=rt(rZ(),rQ())),i}let rc=new Map;function rf(e){let t=r6(e),s=e.getCode();if(s>0){let e=rx(s);if(e)return e}let i=e.getName(),r=rm.get(i);if(r){let t=r.deref();if(t&&t.m_peCoordSys.isEqual(e))return t}let n=new i8(t.release());if(s>0)return n.setCached(),rh.set(s,new WeakRef(n)),rm.set(i,new WeakRef(n)),n;let a=iI(e,0,!1);if(r=rg.get(a)){let e=r.deref();if(e)return e}return n.setCached(),rg.set(a,new WeakRef(n)),n}function rx(e){let t=rh.get(e);if(t)return t.deref()}class rP extends A{constructor(e){return void 0===e?(super(),this.m_wkid=9001,void(this.m_peUnit=null)):"number"==typeof e?(super(),this.m_factor=e,void(this.m_wkid=0)):(super(e),void(e||(this.m_factor=1,this.m_wkid=9001,this.m_peUnit=(n||(n=l.unit(9001)),n))))}getUnitType(){return 0}convertFromMeters(e){return e/this.getUnitToBaseFactor()}convertToMeters(e){return e*this.getUnitToBaseFactor()}}let rE=["0","1","2","3","4","5","6","7","8","9","b","c","d","e","f","g","h","j","k","m","n","p","q","r","s","t","u","v","w","x","y","z"];function ry(e,t,s,i,r){(0,I.g)(i>>5<r.length);let n=t,a=s;for(let t=i;t>=0;t-=2){let s=31&t,i=.5*(a+n);e>=i?(r[t>>5]|=1<<s,n=i):a=i}}let rS=new Set,rC="operation is not supported for unknown coordinate systems";function rI(){return{majorSemiAxis:0,e2:0,minorSemiAxis:0,flattening:0,isSphere(){return 0===this.e2}}}function rv(e){var t;if(l)return;l=(t=e).PeFactory,(0,I.g)(l),f=t.PeGCSExtent,(0,I.g)(f),d=t.PeLineType,(0,I.g)(d),c=t.PeMath,(0,I.g)(c),o=t.PeDouble,(0,I.g)(o),h=t.PeDefs,(0,I.g)(h),m=t.PeCSTransformations,(0,I.g)(m),g=t.PeGTTransformations,(0,I.g)(g),u=t.PePCSInfo,(0,I.g)(u),_=t.PeGTlistExtended,(0,I.g)(_),l.initialize(),p=t.PeGTlistExtendedEntry,(0,I.g)(p),h.PE_TYPE_ANGUNIT=512,h.PE_STR_AUTH_ALL=2,u.PE_POLE_LINE_STRAIGHT=2,u.PE_POLE_LINE_CURVED=3,h.PE_PARM_LAM0=2,h.PE_PARM_PHI0=6,h.PE_PRJ_AZIMUTHAL_EQUIDISTANT=43032,h.PE_PRJ_LAMBERT_AZIMUTHAL_EQAREA=43033,h.PE_PRJ_ALBERS=43007,h.PE_PRJ_CYLINDRICAL_EQAREA=43034,h.PE_TYPE_VERTCS=8,h.PE_LINETYPE_GEODESIC=0,h.PE_LINETYPE_LOXODROME=1,h.PE_LINETYPE_GREAT_ELLIPTIC=2,h.PE_LINETYPE_NORMAL_SECTION=3,_.PE_GTLIST_OPTS_USABLE=1,r8=null;let s=rS;
1rS=null,s.forEach(e=>{let t=e.deref();t&&t.attachToPe()})}function rG(e){r8=e,(0,I.g)(r8)}function rw(){return!!l}function rb(){return!!r8}function rT(){return!!l||!!r8}function rN(e,t,s){return(0,I.g)(rT()),r2(e,void 0===t?0:t,null,!1)}function rD(e,t){let s,i;(0,I.g)(rT());let r=new rW;return rw()?((i=r6(l.fromString(h.PE_TYPE_COORDSYS,e))).get()||(0,I.A)(e),s=ru(i.release()),r.setHorzProj_(s),r.m_vertcs=null,r.m_userWKID=s.getLatestID()):r.m_unit=(s=r9(e)).isPCS?new rP(s.metersOrRadiansPerUnit):new U(s.metersOrRadiansPerUnit),r$(r.m_precisionDescriptor,s,null,1),r.m_bDefaultDescriptor=!0,r.m_userWKT=e,r.calculateHashCode(),r.initDbgName(),r}function rV(e,t,s,i,r=!0){var n,a,o,l;let h,m,g=null;return t&&(g=function(e=!0){return(0,I.g)(0),{}}(r)),n=e,a=g,o=i,l=r,n||(0,I.a)("!PE_coord_sys"),m=new rW,h=l?ru(n):new i8(n,!1),r$(m.m_precisionDescriptor,h,a,o),m.m_bDefaultDescriptor=!0,m.setHorzProj_(h),m.m_vertcs=a,m.m_userWKID=h.getLatestID(),m.calculateHashCode(),m.initDbgName(),m}function rF(e,t,s=!1){3===e.getCoordinateSystemType()&&(0,I.a)("image spatial reference cannot be altered");let i=new rW;return i.m_peCoordSysVal=e.m_peCoordSysVal,i.m_vertcs=e.m_vertcs,i.m_unit=e.m_unit,i.m_precisionDescriptor.assign(t),i.m_localZToXYFactor=e.m_localZToXYFactor,(Number.isNaN(i.m_precisionDescriptor.m_falseX)||Number.isNaN(i.m_precisionDescriptor.m_falseY))&&(i.m_precisionDescriptor.m_falseX=e.m_precisionDescriptor.m_falseX,i.m_precisionDescriptor.m_falseY=e.m_precisionDescriptor.m_falseY),i.m_precisionDescriptor.snapPrecision(),i.m_precisionDescriptor.fixTolerance(),i.m_userWKID=e.m_userWKID,i.m_precisionDescriptor.equals(e.m_precisionDescriptor)?i.m_bDefaultDescriptor=e.m_bDefaultDescriptor:i.m_bDefaultDescriptor=!1,s&&(i.m_bDefaultDescriptor=!0),i.calculateHashCode(),i.initDbgName(),i}function rH(e,t,s){return{}}function rk(e,t,s){void 0===t&&(t=1),(t<=0||!Number.isFinite(t))&&(0,I.a)(""),e||1===t||(0,I.a)("null Unit has to have z_to_xy_factor equal to 1");let i=new rW;i.m_unit=e;let r=e||new rP(9001);return r1(i.m_precisionDescriptor,r,null,1),i.m_bDefaultDescriptor=!0,Number.isNaN(i.m_precisionDescriptor.m_falseX)&&(0,I.a)("NAN false X/Y are not allowed here"),i.m_localZToXYFactor=t,i.calculateHashCode(),i.initDbgName(),i}function rA(e,t){return e.snapGeometry(t)}function rM(e){let t=e.getCoordinateSystemType();return 1===t?e:(3===t&&(0,I.g)(0),e.getGCS())}function rU(e){var t,s;return(0,I.g)(rT()),rb()?(t=e,(0,I.g)(rb()),!!r8(t).isPCS||(s=t,l&&(0,I.p)("pe has been loaded. no-pe methods should not be used at this point."),r3||ne(),r3.has(s))):function(e){if(rc.has(e))return rc.get(e);{let t=null!==r6(l.coordsys(e)).get();return rc.set(e,t),t}}(e)}function rq(e){if(rw())return null!==r6(l.fromString(h.PE_TYPE_COORDSYS,e)).get();try{return r9(e),!0}catch(e){}return!1}function rB(){let e,t;return a||(e=Math.trunc(Math.random()*(0,b.i)()),t=Date.now(),a=`|abba_000|${e.toString(16)}|${t.toString(16)}|`),a}(E=C||(C={}))[E.utmDefault=0]="utmDefault",E[E.utmNorthSouth=1]="utmNorthSouth";let rR,rO,rY,rX=0;function rL(e=""){let t=`${rB()}${rX++}`;return""!==e&&(t+=`|${e}`),t}function rz(e){return e.startsWith(rB())}class rW{destroy(){var e;e=this.m_peCoordSysVal,rm.delete(e.m_peCoordSys.getName()),rg.delete(iI(e.m_peCoordSys,0,!1)),1===this.getCoordinateSystemType()||2===this.getCoordinateSystemType()?this.getPECoordSys().destroy():(0,I.d)("SpatialReference.destroy")}constructor(){this.m_vertcs=null,this.m_peCoordSysVal=null,this.m_userWKID=0,this.m_userWKT=null,this.m_geogSpatialReference=null,this.m_srToGcs=null,this.m_gcsToSr=null,this.m_defaultPrecisionSR=null,this.m_localZToXYFactor=-1,this.m_precisionDescriptor=new rj,this.m_hashCode=0,this.m_bDefaultDescriptor=!1,rJ(this.m_precisionDescriptor),rS&&rS.add(new WeakRef(this))}attachToPe(){(this.m_userWKID>0?rN(this.m_userWKID):rD(this.m_userWKT)).copyTo(this,!1)}copyTo(e,t=!0){(t||e.m_bDefaultDescriptor)&&(e.m_bDefaultDescriptor=this.m_bDefaultDescriptor,e.m_precisionDescriptor.assign(this.m_precisionDescriptor)),e.m_defaultPrecisionSR=null,e.m_gcsToSr=this.m_gcsToSr,e.m_geogSpatialReference=this.m_geogSpatialReference,e.m_hashCode=this.m_hashCode,e.m_localZToXYFactor=this.m_localZToXYFactor,e.m_peCoordSysVal=this.m_peCo
1ordSysVal,e.m_srToGcs=this.m_srToGcs,e.m_userWKID=this.m_userWKID,e.m_userWKT=this.m_userWKT,e.m_vertcs=this.m_vertcs,e.m_unit=this.m_unit}getHashCode(){return this.m_hashCode}getHashCodeHorizontal(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getHashCode():this.m_unit?this.m_unit.getHashCode():0x12345673}updateTransform(e){if(1===this.getCoordinateSystemType())return rt(this,this,null);let t=e?this.m_srToGcs:this.m_gcsToSr;if(t)return t;let s=this.getGCS(),i=t=e?rt(this,s,null):rt(s,this,null);return(e?this.m_srToGcs:this.m_gcsToSr)||(e?this.m_srToGcs=i:this.m_gcsToSr=i,t)}getHashCodeVertical(){return this.m_vertcs?this.m_vertcs.getHashCode():0}calculateHashCode(){let e=this.getHashCodeHorizontal(),t=this.getHashCodeVertical(),s=this.m_precisionDescriptor.getHashCode();e=(0,b.A)(e,t),this.m_hashCode=(0,b.A)(e,s)}initDbgName(){}setHorzProj_(e){this.m_peCoordSysVal=e,this.m_unit=this.m_peCoordSysVal.getUnit()}getTolerance(e=0){return this.m_precisionDescriptor.getTolerance(e)}getResolution(e=0){return this.m_precisionDescriptor.getResolution(e)}getPECoordSys(){return this.m_peCoordSysVal?this.m_peCoordSysVal.m_peCoordSys:null}getPCSInfo(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCo
1ordSysVal),this.m_peCoordSysVal.getPCSInfo()}getCentralMeridian(){return(this.throwIfNotGCSOrPCS(),1===this.getCoordinateSystemType())?0:this.getPCSInfo().getCentralMeridian()}getCoordinateSystemType(){let e=this.getPECoordSys();if(e)switch(e.getType()){case h.PE_TYPE_GEOGCS:return 1;case h.PE_TYPE_PROJCS:return 2}else{if((this.m_userWKID>0||this.m_userWKT)&&this.m_unit instanceof rP)return 2;if(this.m_unit instanceof U)return 1}return 0}getID(){return this.m_userWKID}getLatestID(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getLatestID():this.m_userWKID}getOldID(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getOldID():this.m_userWKID}getVerticalID(){return(0,I.t)("vcs not implemented"),0}getLatestVerticalID(){return this.m_vertcs?this.m_vertcs.getLatestID():0}getOldVerticalID(){return(0,I.t)("vcs not implemented"),0}getPEVerticalCoordSys(){return null}getPole(e){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPole(e)}getText(){let e=this.getPECoordSys();return e?iv(e):this.m_userWKT??""}getTextExtended(e){let t=this.getPECoordSys();return t?this.getPEVerticalCoordSys()?(this.getPEVerticalCoordSys(),(0,I.g)(0),""):iv(t,e):this.m_userWKT??""}getText2(e=-1){let t,s=this.getPECoordSys();return s?((e>1||e<-1)&&(0,I.a)("verbosity"),t=h.PE_STR_FMT_WKT2,-1!==e&&(t|=0===e?h.PE_STR_AUTH_TOP:h.PE_STR_AUTH_ALL),s.toString(t)):this.m_userWKT??""}getUnit(){return this.m_unit}getUnitsPerMillimeter(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getUnitsPerMillimeter():this.m_unit instanceof rP?.001/this.m_unit.getUnitToBaseFactor():this.m_unit instanceof U?.001/(r9(this.m_userWKT??this.m_userWKID).semiMajor*this.m_unit.getUnitToBaseFactor()):((0,I.p)("sr object not in valid state"),0)}getAuthorityName(){return this.getPECoordSys()&&(0,I.g)(0),""}getVerticalUnit(){return(0,I.t)("vcs not implemented"),{}}getVCS(){return this.m_vertcs}hasVCS(){return!1}getGCSHorisonIsInclusive(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCo
1ordSysVal),this.m_peCoordSysVal.getGCSHorisonIsInclusive()}getGCSHorizon(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGCSHorizon()}getGCS(){let e,t=this.getCoordinateSystemType();if(0===t)(0,I.p)(rC);else{if(1===t)return this;3===t&&(0,I.p)("image cs not supported")}if(this.m_geogSpatialReference)return this.m_geogSpatialReference;if(this===rZ()||this===rK())e=rQ();else{(0,I.g)(this.m_peCoordSysVal);let t=this.m_peCoordSysVal.m_peCoordSys.getGeogcs();t||(0,I.d)(""),e=rV(t,this.m_vertcs,null,this.m_precisionDescriptor.getPrecision(),this.m_peCoordSysVal.getCached())}return this.m_geogSpatialReference?e=this.m_geogSpatialReference:this.m_geogSpatialReference=e,e}getGCSSplitLines(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGCSSplitLines()}toGCS(e,t){if(0===e.length)return 0;e.length>t.length&&(0,I.a)("coordsSrc.size() > coordsDst.size()");let s=this.getCoordinateSystemType();if(0===s&&(0,I.p)(rC),1===s)return(0,b.D)(t,e,e.length),e.length;
1(0,I.g)(this.m_peCoordSysVal);let i=this.getSRToGCSTransform();return(new sO).transform(i,e,e.length,t)}toGeohash(e,t=8){let s=e.clone();s.scale(9102===this.getGCS().getUnit().getID()?1:this.getGCS().getUnit().getUnitToBaseFactor()/Math.PI*180),s.x<-180?(s.x=(0,b.n)(s.x,360),s.x<-180&&(s.x+=360)):s.x>180&&(s.x=(0,b.n)(s.x,360),s.x>180&&(s.x-=360)),s.y>90&&(s.y=90),s.y<-90&&(s.y=-90);let i=5*t,r=new Uint32Array(4);return ry(s.x,-180,180,i-1,r),ry(s.y,-90,90,i-2,r),function(e,t,s){let i=(0,b.d)(t,"R"),r=0,n=0;for(let s=0;s<t;s++){let a=e[r]>>n&31;if((n+=5)>31){let t=37-n;a&=(1<<t)-1,n-=32,a|=(e[++r]&(1<<n)-1)<<t}let o=rE[a];i[t-1-s]=o}return s>t?i.push(..."0".repeat(s-t)):s<t&&(i.length=s),i.join("")}(r,t,t)}isPannable(){let e=this.getCoordinateSystemType();return 0!==e&&3!==e&&((0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.isPannable())}getPannableExtent(){return this.isPannable()||(0,I.a)("!is_pannable"),(0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPannableExtent()}getPannableExtentInGCS(){return this.isPannable()||(0,I.a)("!is_pannable"),(0,I.g)(this.m_peCo
1ordSysVal),this.m_peCoordSysVal.getPannableExtentGCS()}throwIfNotGCSOrPCS(){let e=this.getCoordinateSystemType();1!==e&&2!==e&&(0,I.a)("Not a GCS or PCS")}getDomainXY(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getDomainXY()}getFullWorldExtent(){return this.throwIfNotGCSOrPCS(),this.isPannable()?this.getPannableExtent():this.getDomainXY()}queryPrecisionDescriptor(e){if(e.assign(this.m_precisionDescriptor),Number.isNaN(e.m_falseX))if(rw()||(0,I.r)("cannot query precision descriptor"),(0,I.g)(null!==this.m_peCoordSysVal),2!==this.m_precisionDescriptor.m_precision){let t=this.m_peCoordSysVal.getDomainXY();e.m_falseX=t.xmin,e.m_falseY=t.ymin}else e.m_falseX=-Number.MAX_VALUE,e.m_falseY=-Number.MAX_VALUE}queryPrecisionDescriptorWithoutFalseXY(e){e.assign(this.m_precisionDescriptor),e.m_falseX=NaN,e.m_falseY=NaN}queryDefaultPrecisionDescriptorWithoutFalseXY(e){if(this.m_bDefaultDescriptor)e.assign(this.m_precisionDescriptor);else{let t=this.getCoordinateSystemType();0===t?r1(e,this.m_unit,this.m_vertcs,this.m_precisionDescriptor.getPrecision()):3===t?(0,I.t)("image cs"):r$(e,this.m_peCoordSysVal,this.m_vertcs,this.m_precisionDescriptor.getPrecision())}e.m_falseX=NaN,e.m_falseY=NaN}horizontalEqual(e){var t,s;return(t=this.m_peCoordSysVal)===(s=e.m_peCoordSysVal)||null!==t&&null!==s&&t.m_csType===s.m_csType&&(0===t.m_WKID&&0===s.m_WKID?t.m_hashCode===s.m_hashCode&&t.m_canonicalWkt===s.m_canonicalWkt:t.m_WKID===s.m_WKID)}verticalEqual(e){return null!==this.m_vertcs==(null!==e.m_vertcs)&&(!this.m_vertcs||this.m_vertcs.equals(e.m_vertcs))}equals(e){if(this===e)return!0;if(!this.horizontalEqual(e)||!this.verticalEqual(e)||!e.m_peCoordSysVal&&((0,I.g)(!this.m_peCo
1ordSysVal),null!==this.m_unit!=(null!==e.m_unit)||this.m_unit&&!this.m_unit.equals(e.m_unit)||this.m_localZToXYFactor!==e.m_localZToXYFactor))return!1;if(!this.m_bDefaultDescriptor||!e.m_bDefaultDescriptor){if(this.m_peCoordSysVal){if(!this.m_precisionDescriptor.equalsWithoutFalseXY(e.m_precisionDescriptor))return!1;(0,I.g)(e.m_peCoordSysVal);let t=this.m_precisionDescriptor.m_falseX,s=this.m_precisionDescriptor.m_falseY;if(Number.isNaN(t)){let e=this.m_peCoordSysVal.getDomainXY();t=e.xmin,s=e.ymin}let i=e.m_precisionDescriptor.m_falseX,r=e.m_precisionDescriptor.m_falseY;if(Number.isNaN(i)){let t=e.m_peCoordSysVal.getDomainXY();i=t.xmin,r=t.ymin}return t===i&&s===r}return this.m_precisionDescriptor.equals(e.m_precisionDescriptor)}return!0}equalForProjection(e,t){var s,i;if(this===e)return!0;let r=this.getCoordinateSystemType(),n=e.getCoordinateSystemType();if(0===r||0===n)return 0===r&&0===n?(!t||this.getZToXYFactor()===e.getZToXYFactor())&&(!this.getUnit()||!e.getUnit()||this.getUnit().equals(e.getUnit())):3!==r&&3!==n&&(null===this.getUnit()||null===e.getUnit()||(!t||this.getZToXYFactor()===e.getZToXYFactor())&&this.getUnit().equals(e.getUnit()));if(r!==n)return!1;if(3===r)return this.equals(e);
1if((s=this.m_peCoordSysVal)===(i=e.m_peCoordSysVal)||null!==s&&null!==i&&s.m_csType===i.m_csType&&(0===s.m_WKID&&0===i.m_WKID?1===s.m_csType?s.m_peCoordSys.isEqual(i.m_peCoordSys):s.m_peCoordSys===i.m_peCoordSys:s.m_WKID===i.m_WKID)){if(!t)return!0;if(null!==this.m_vertcs==(null!==e.m_vertcs))return!this.m_vertcs||this.m_vertcs.equalForProjection(e.m_vertcs)}return!1}equalHorizontal(e){return this.horizontalEqual(e)}equalVertical(e){return(0,I.g)(0),!1}equalVerticalVCS(e){return(0,I.g)(0),!1}convergenceAngle(e){return(0,I.g)(0),0}getPeCoordsysCopy(){if(this.m_peCoordSysVal){let e=this.m_peCoordSysVal.m_peCoordSys;return e||(0,I.d)("cannot clone coord sys"),e}return null}getPeVertcsCopy(){return(0,I.g)(0),0}throwIfLocal(){0===this.getCoordinateSystemType()&&(0,I.a)(rC)}getPrimeMeridian(){return this.throwIfLocal(),(0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPrimeMeridian()}getSRToGCSTransform(){return this.updateTransform(!0)}getGCSToSRTransform(){return this.updateTransform(!1)}getOneMeter(){return 1e3*this.getUnitsPerMillimeter()}getOneMeterPCSUnit(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCo
1ordSysVal),this.m_peCoordSysVal.getOneMeterPCSUnit()}getDefaultPrecisionSR(){if(this.m_bDefaultDescriptor)return this;if(null===this.m_defaultPrecisionSR){let e=new rj;this.queryDefaultPrecisionDescriptorWithoutFalseXY(e),this.m_defaultPrecisionSR=rF(this,e,!0)}return this.m_defaultPrecisionSR}getPCSHorizon(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPCSHorizon()}getHorzUnitFactor(){return this.m_unit?this.m_unit.getUnitToBaseFactor():1}querySpheroidData(e){var t;this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCoordSysVal);let s=this.getGCS().getPECoordSys().getDatum().getSpheroid(),i=s.getFlattening();t=s.getAxis(),e.majorSemiAxis=t,e.minorSemiAxis=t*(1-i),e.e2=i*(2-i),e.flattening=i}getAreaOfUse(){0===this.getCoordinateSystemType()&&(0,I.p)(""),(0,I.g)(this.m_peCoordSysVal);let e=this.m_peCoordSysVal.getAreaOfUse();return null===e?new k:new k({geom:e.clone(),sr:rN(4326)})}getZToXYFactor(){return 1}isCustomWkid(){return!1}getOneDegreeGCSUnit(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCo
1ordSysVal),this.m_peCoordSysVal.getOneDegreeGCSUnit()}getGcsUnitFactor(){return this.throwIfNotGCSOrPCS(),(0,I.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGcsUnitFactor()}snapGeometry(e){if(e.isEmpty()||2===this.m_precisionDescriptor.getPrecision())return!1;let t=e.getGeometryType();if((0,I.i)(t))return this.snapMultiVertex_(e);if(t===I.G.enumPoint)return this.snapPoint_(e);if(t===I.G.enumEnvelope)return this.snapEnvelope_(e);if((0,I.f)(t))return this.snapSegment_(e);if(t===I.G.enumGeometryCollection){let t=!1;for(let s=0,i=e.getGeometryCount();s<i;++s)t=this.snapGeometry(e.getGeometry(s))||t;return t}(0,I.d)("what else?")}snapMultiVertex_(e){if((0,I.g)(!e.isEmpty()),(0,I.g)(2!==this.m_precisionDescriptor.getPrecision()),(0,I.h)(e.getGeometryType())&&e.hasNonLinearSegments())return this.snapGeometryWithCurves_(e);let t=e.getImpl(),s=t.getDescription(),i=!1;for(let e=0,r=s.getAttributeCount();e<r;e++){let r=s.getSemantics(e),n=t.getAttributeStreamRef(r);i=this.snapAttributes(r,n,0,t.getPointCount())||i}return i&&t.notifyModifiedFlags(2001),i}snapPoint_(e){return!1}snapEnvelope_(e){return!1}snapSegment_(e){(0,I.g)(!e.isEmpty()),(0,I.g)(2!==this.m_precisionDescriptor.getPrecision());let t=new rj;this.queryPrecisionDescriptor(t);let s=e.getStartXY(),i=new b.P;i.x=r4(s.x,t.getFalseX(),t.getGridUnitsXY()),i.y=r4(s.y,t.getFalseY(),t.getGridUnitsXY());let r=!i.equals(s),n=e.getEndXY(),a=new b.P;a.x=r4(n.x,t.getFalseX(),t.getGridUnitsXY()),a.y=r4(n.y,t.getFalseY(),t.getGridUnitsXY()),(r||=!a.equals(n))&&e.changeEndPoints2D(i,a);let o=(t,s,i)=>{let r=!1;{let n=e.getStartAttributeAsDbl(t,0),a=r4(n,s,i),o=!(0,b.F)(a,n);r||=o,o&&e.setStartAttribute(t,0,a)}{let n=e.getEndAttributeAsDbl(t,0),a=r4(n,s,i),o=!(0,b.F)(a,n);r||=o,o&&e.setEndAttribute(t,0,a)}return r},l=+!!r;return e.hasAttribute(1)&&(l|=!!o(1,t.getFalseZ(),t.getGridUnitsZ())),e.hasAttribute(2)&&(l|=!!o(2,t.getFalseM(),t.getGridUnitsM())),!!l}snapGeometryWithCurves_(e){(0,I.g)(!e.isEmpty()),(0,I.g)(2!==this.m_precisionDescriptor.getPrecision());let t=e.createInstance(),s=new G.S,i=0;for(let r=0,n=e.getPathCount();r<n;++r){let n=e.getSegmentCountPath(r);if(0===n){if(t.addPath(e,r,!0),1===t.getPathSize(r)){let e=new w.P;t.getPointByVal(t.getPointCount()-1,e),i|=!!this.snapGeometry(e),t.setPointByVal(t.getPointCount()-1,e)}continue}let a=e.isClosedPath(r);for(let o=0,l=a?n-1:n;o<l;++o)e.getSegmentFromPath(r,o,s,!1),i|=!!this.snapGeometry(s.get()),t.addSegment(s.get(),0===o);a&&(e.getSegmentFromPath(r,n-1,s,!1),i|=!!this.snapGeometry(s.get()),1===n?t.addPathFromClosedSegment(s.get(),!1):t.closeLastPathWithSegment(s.get()))}return i&&t.copyTo(e),!!i}snapAttributes(e,t,s,i){let r=!1,n=new rj;if(this.queryPrecisionDescriptor(n),0===e)for(let e=s;e<i;e++){let s=t.read(2*e),i=rW.s_SnapValue(s,n.getFalseX(),n.getGridUnitsXY()),a=t.read(2*e+1),o=rW.s_SnapValue(a,n.getFalseY(),n.getGridUnitsXY());(r=r||i!==s||o!==a)&&(t.write(2*e,i),t.write(2*e+1,o))}else if(1===e)for(let e=s;e<i;e++){let s=t.read(e),i=rW.s_SnapValue(s,n.getFalseZ(),n.getGridUnitsZ());(r=r||!(0,b.F)(i,s))&&t.write(e,i)}else if(2===e)for(let e=s;e<i;e++){let s=t.read(e),i=rW.s_SnapValue(s,n.getFalseM(),n.getGridUnitsM());(r=r||!(0,b.F)(i,s))&&t.write(e,i)}return r}static s_SnapValue(e,t,s){return(0,b.G)((e-t)*s)/s+t}}class rj{constructor(){const e=1e-4*Number(9007199254740990n)*.5;this.m_precision=1,this.m_falseX=-e,this.m_falseY=-e,this.m_unitsXY=Number(9007199254740990n)/(2*e),this.m_falseM=-1e5,this.m_unitsM=1e4,this.m_falseZ=-1e5,this.m_unitsZ=1e4,this.m_toleranceXY=.001,this.m_toleranceM=.001,this.m_toleranceZ=.001}getHashCode(){let e=7777,t=7777;return t=(0,b.A)(t,this.m_falseM),t=(0,b.A)(t,this.m_unitsM),e=(0,b.A)(e,this.m_unitsXY),t=(0,b.A)(t,this.m_toleranceXY),e=(0,b.A)(e,this.m_falseZ),t=(0,b.A)(t,this.m_toleranceZ),e=(0,b.A)(e,this.m_unitsZ),t=(0,b.A)(t,this.m_toleranceM),e=(0,b.A)(e,this.m_precision),(0,b.A)(e,t)}clone(){let e=new rj;return e.m_falseX=this.m_falseX,e.m_falseY=this.m_falseY,e.m_unitsXY=this.m_unitsXY,e.m_falseZ=this.m_falseZ,e.m_unitsZ=this.m_unitsZ,e.m_falseM=this.m_falseM,e.m_unitsM=this.m_unitsM,e.m_toleranceXY=this.m_toleranceXY,e.m_toleranceZ=this.m_toleranceZ,e.m_toleranceM=this.m_toleranceM,e.m_precision=this.m_precision,e}assign(e){return this.m_falseX=e.m_falseX,this.m_falseY=e.m_falseY,this.m_unitsXY=e.m_unitsXY,this.m_falseZ=e.m_falseZ,this.m_unitsZ=e.m_unitsZ,this.m_falseM=e.m_falseM,this.m_unitsM=e.m_unitsM,this.m_toleranceXY=e.m_toleranceXY,this.m_toleranceZ=e.m_toleranceZ,this.m_toleranceM=e.m_toleranceM,this.m_precision=e.m_precision,this}initialize2D(e,t){}getTolerance(e){switch(e){case 0:return this.m_toleranceXY;case 1:return this.m_toleranceZ;case 2:return this.m_toleranceM;default:return 0}}getResolution(e){if(2===this.m_precision)return 0;switch(e){case 0:return 1/this.m_unitsXY;
1case 1:return 1/this.m_unitsZ;case 2:return 1/this.m_unitsM;default:return 0}}getFalseX(){return this.m_falseX}getFalseY(){return this.m_falseY}getFalseZ(){return this.m_falseZ}getFalseM(){return this.m_falseM}getGridUnitsXY(){return this.m_unitsXY}getGridUnitsZ(){return this.m_unitsZ}getGridUnitsM(){return this.m_unitsM}getPrecision(){return this.m_precision}static getLimit32(){return 0x7ffffffd}static getLimit64(){return 9007199254740990n}static getLimitFloat(){return 0}getXYGridRange(){let e=new v.Envelope2D;switch(this.m_precision){case 0:{let t=rj.getLimit32()/this.getGridUnitsXY();e.setCoords({xmin:this.getFalseX(),ymin:this.getFalseY(),xmax:this.getFalseX()+t,ymax:this.getFalseY()+t})}break;case 1:{let t=Number(rj.getLimit64())/this.getGridUnitsXY();e.setCoords({xmin:this.getFalseX(),ymin:this.getFalseY(),xmax:this.getFalseX()+t,ymax:this.getFalseY()+t})}break;case 2:e.setCoords({xmin:-Number.MAX_VALUE,ymin:-Number.MAX_VALUE,xmax:Number.MAX_VALUE,ymax:Number.MAX_VALUE});break;default:e.setEmpty(),(0,I.d)("")}return e}getZGridRange(){let e=new b.E;switch(this.m_precision){case 0:{let t=rj.getLimit32()/this.getGridUnitsZ();e.setCoords(this.getFalseZ(),this.getFalseZ()+t)}break;case 1:{let t=Number(rj.getLimit64())/this.getGridUnitsZ();e.setCoords(this.getFalseZ(),this.getFalseZ()+t)}break;case 2:e.setCoords(-Number.MAX_VALUE,Number.MAX_VALUE);break;default:e.setEmpty(),(0,I.d)("")}return e}getMGridRange(){let e=new b.E;switch(this.m_precision){case 0:{let t=rj.getLimit32()/this.getGridUnitsM();e.setCoords(this.getFalseM(),this.getFalseM()+t)}break;case 1:{let t=Number(rj.getLimit64())/this.getGridUnitsM();e.setCoords(this.getFalseM(),this.getFalseM()+t)}break;case 2:e.setCoords(-Number.MAX_VALUE,Number.MAX_VALUE);break;default:e.setEmpty(),(0,I.d)("")}return e}setTolerance(e,t){switch(t<0&&(0,I.a)("tol < 0"),Number.isFinite(t)||(0,I.a)("tol is not finite"),e){case 0:this.m_toleranceXY=t;break;case 1:this.m_toleranceZ=t;break;case 2:this.m_toleranceM=t;break;default:(0,I.a)("cannot set tolerance for this attribute")}}setGridParams(e,t,s){Number.isFinite(e)&&Number.isFinite(t)&&Number.isFinite(s)||(0,I.a)("grid params are not finite"),s<1&&(0,I.a)("grid units cannot be smaller than 1.0"),this.m_falseX=e,this.m_falseY=t,this.m_unitsXY=s}setZParams(e,t){Number.isFinite(e)&&Number.isFinite(t)||(0,I.a)("grid params are not finite"),t<1&&(0,I.a)("grid units cannot be smaller than 1.0"),this.m_falseZ=e,this.m_unitsZ=t}setMParams(e,t){Number.isFinite(e)&&Number.isFinite(t)||(0,I.a)("grid params are not finite"),t<1&&(0,I.a)("grid units cannot be smaller than 1.0"),this.m_falseM=e,this.m_unitsM=t}setPrecision(e){}equals(e){return this===e||(0,b.F)(this.m_falseX,e.m_falseX)&&(0,b.F)(this.m_falseY,e.m_falseY)&&this.equalsWithoutFalseXY(e)}snapPrecision(){if(2===this.m_precision)return;let e=(e,t,s,i)=>{if(!Number.isFinite(t)||!Number.isFinite(s))return s;if(s<1)return 1;if(!i)return s;let r=Number(e)/s;return Math.trunc((t+r-t)*s)>e&&(s=e/(t+r-t)),Math.max(1,s)},t=Number(0===this.m_precision?2147483645n:9007199254740990n);this.m_unitsXY=e(t,this.m_falseX,this.m_unitsXY,!0),this.m_unitsXY=e(t,this.m_falseY,this.m_unitsXY,!0),this.m_unitsZ=e(t,this.m_falseZ,this.m_unitsZ,!1),this.m_unitsM=e(t,this.m_falseM,this.m_unitsM,!1)}verifyPrecision(){if(2===this.m_precision)return!0;let e=(e,t,s,i)=>!(s<1)&&!!Number.isFinite(t)&&!!Number.isFinite(s)&&(!i||!(BigInt((t+Number(e)/s-t)*s)>e)),t=0===this.m_precision?2147483645n:9007199254740990n;return!!e(t,this.m_falseX,this.m_unitsXY,!0)&&!!e(t,this.m_falseY,this.m_unitsXY,!0)&&!!e(t,this.m_falseZ,this.m_unitsZ,!1)&&!!e(t,this.m_falseM,this.m_unitsM,!1)}
1fixTolerance(){2!==this.m_precision&&(this.m_toleranceXY=Math.max(2/this.m_unitsXY,this.m_toleranceXY),this.m_toleranceZ=Math.max(2/this.m_unitsZ,this.m_toleranceZ),this.m_toleranceM=Math.max(2/this.m_unitsM,this.m_toleranceM),(Number.isNaN(this.m_falseX)||Number.isNaN(this.m_falseY))&&(this.m_falseX=this.m_falseY=NaN))}equalsWithoutFalseXY(e){return this===e||this.m_unitsXY===e.m_unitsXY&&this.m_falseZ===e.m_falseZ&&this.m_unitsZ===e.m_unitsZ&&this.m_falseM===e.m_falseM&&this.m_unitsM===e.m_unitsM&&this.m_toleranceXY===e.m_toleranceXY&&this.m_toleranceZ===e.m_toleranceZ&&this.m_toleranceM===e.m_toleranceM&&this.m_precision===e.m_precision}setBestXyDomainFromEnvelope(e,t){}setBestZDomainFromZRange(e,t,s){}setBestMDomainFromMRange(e,t,s){}}function rZ(){return(!rR||rw()&&null===rR.getPECoordSys())&&(rR=r2(3857,0,null,!0)),rR}function rK(){return(!rO||rw()&&null===rO.getPECoordSys())&&(rO=r2(102100,0,null,!0)),rO}function rQ(){return(!rY||rw()&&null===rY.getPECoordSys())&&(rY=r2(4326,0,null,!0)),rY}function rJ(e){e.m_falseX=0,e.m_falseY=0,e.m_unitsXY=1,e.m_falseZ=0,e.m_unitsZ=1,e.m_falseM=0,e.m_unitsM=1,e.m_toleranceXY=100*(0,b.H)(),e.m_toleranceZ=100*(0,b.H)(),e.m_toleranceM=100*(0,b.H)(),e.m_precision=2}function r$(e,t,s,i){let r=t instanceof i8;rJ(e),e.m_precision=i,e.m_falseX=NaN,e.m_falseY=NaN;let n=r?t.m_csType:t.isPCS?2:1;1===n?e.m_unitsXY=1/((0===i?1/18e5:1e-9)*(r?t.getOneDegreeGCSUnit():Math.PI/t.metersOrRadiansPerUnit/180)):2===n?e.m_unitsXY=1/((0===i?.001:1e-4)*(r?t.getOneMeterPCSUnit():1/t.metersOrRadiansPerUnit)):(0,I.a)("unrecognized cs type"),e.m_falseM=-1e5,e.m_unitsM=1/(0===i?.001:1e-4),e.m_unitsM=Math.max(1,e.m_unitsM),e.m_unitsXY=Math.max(1,e.m_unitsXY);let a=0,o=0;0!==i&&1!==i||(a=2/e.m_unitsXY,o=2/e.m_unitsM),e.m_toleranceXY=M
1ath.max(a,r?t.getUnitsPerMillimeter():2===n?.001/t.metersOrRadiansPerUnit:.001/(t.semiMajor*t.metersOrRadiansPerUnit)),e.m_toleranceM=Math.max(.001,o),r0(e,s)}function r0(e,t){if(e.m_falseZ=-1e5,t){let s=(0===e.m_precision?.001:1e-4)*t.getOneMeter();e.m_unitsZ=1/s}else e.m_unitsZ=1/(0===e.m_precision?.001:1e-4);e.m_unitsZ=Math.max(1,e.m_unitsZ);let s=0;0!==e.m_precision&&1!==e.m_precision||(s=2/e.m_unitsZ),e.m_toleranceZ=Math.max(t?.001*t.getOneMeter():.001,s)}function r1(e,t,s,i){rJ(e),e.m_precision=i;let r=0===i?2147483645n:9007199254740990n,n=1,a=1,o=.001;t&&(a=t.getUnitToBaseFactor()),t&&1===t.getUnitType()?(n=400*Math.PI/180,o=8983152841195215e-24*Math.PI/180/a):(n=(0===i?.001:1e-4)*Number(r)*.5,o=.001/a),e.m_falseX=-(n/=a),e.m_falseY=-n,e.m_unitsXY=Number(r)/(2*n),e.m_falseM=-1e5,e.m_unitsM=1/(0===i?.001:1e-4),e.m_unitsM=Math.max(1,e.m_unitsM),e.snapPrecision();let l=0,h=0;0!==e.m_precision&&1!==e.m_precision||(h=2/e.m_unitsM,l=2/e.m_unitsXY),e.m_toleranceXY=Math.max(l,o),e.m_toleranceM=Math.max(.001,h),r0(e,s)}function r2(e,t,s,i){if(!i&&t<=0){if(3857===e)return rZ();if(102100===e)return rK();if(4326===e)return rQ()}let r=new rW,n,a=null;return rw()?(n=function(e){e<=0&&(0,I.y)(e);{let t=rx(e);if(t)return t}let t=r6(l.coordsys(e));t.get()||(0,I.y)(e);let s=rf(t.release());return s.getLatestID()!==e&&rh.set(e,new WeakRef(s)),s}(e),t>0?a=null:t=0,r.setHorzProj_(n),r.m_vertcs=a):r.m_unit=(n=r9(e)).isPCS?new rP(n.metersOrRadiansPerUnit):new U(n.metersOrRadiansPerUnit),r$(r.m_precisionDescriptor,n,a,1),r.m_bDefaultDescriptor=!0,r.m_userWKID=e,r.calculateHashCode(),r.initDbgName(),r}function r4(e,t,s){return(0,b.G)((e-t)*s)/s+t}let r3=null;function r7(e,t){return e===t||Math.abs(e-t)<=3552713678800501e-30*(1+(Math.abs(e)+Math.abs(t))/2)}function r6(e){return{_this:e,get(){return this._this},reset(e){this._this=e},release(){let e=this._this;return this._this=null,e}}}let r8=null;function r9(e){(0,I.g)(r8);let t=r8(e);return t.semiMajor=t.isPCS?NaN:function(e){if(l&&(0,I.p)("pe has been loaded. no-pe methods should not be used at this point."),"string"==typeof e){let t=e.match(r5);t&&2===t.length||(0,I.a)("bad gcs wkt");let s=Number.parseFloat(t[1]);return Number.isFinite(s)||(0,I.a)("bad gcs wkt"),s}return r3||ne(),r3.has(e)||(0,I.p)("gcs wkid not found"),r3.get(e)}(e),t}let r5=/(?:ELLIPSOID|SPHEROID)\["(?:\w|[-()])+",(\d+\.\d+)/;function ne(){for(let e in r3=new Map,M){let t=Number.parseFloat(e),s=M[e];if(Array.isArray(s))for(let e of s)r3.set(e,t);else r3.set(s,t)}for(let e in M)delete M[e]}function nt(e,t){let s=l.geogtran(e);return s||(0,I.y)(e),new nn(s,t)}function ns(e,t){let s=l.fromString(h.PE_TYPE_GEOGTRAN,e);return s||(0,I.A)(e),new nn(s,t)}let ni=(0,b.B)(0),nr=(0,b.B)(1);class nn{constructor(e,t){if(e instanceof nn)return this.m_geogTranWrapper=e.m_geogTranWrapper,this.m_bInverted=t?!e.m_bInverted:e.m_bInverted,void(this.m_hashCode=(0,b.A)(this.m_geogTranWrapper.getHashCode(),this.m_bInverted?nr:ni));this.m_geogTranWrapper=new im(e),this.m_bInverted=t,this.m_hashCode=(0,b.A)(this.m_geogTranWrapper.getHashCode(),this.m_bInverted?nr:ni)}getID(){return this.m_geogTranWrapper.getLatestId()}getLatestID(){return this.m_geogTranWrapper.getLatestId()}getText(){return this.m_geogTranWrapper.getText()}getTextExtended(e){if(!this.m_geogTranWrapper.getGeogtran())return"";if(-1===e)return this.m_geogTranWrapper.getGeogtran().toString();{let t=0===e?h.PE_STR_AUTH_TOP:h.PE_STR_AUTH_ALL;return this.m_geogTranWrapper.getGeogtran().toString(t)}}getText2(e=-1){let t=h.PE_STR_FMT_WKT2;return -1!==e&&(t|=0===e?h.PE_STR_AUTH_TOP:h.PE_STR_AUTH_ALL),this.m_geogTranWrapper.getGeogtran().toString(t)}getName(){return this.m_geogTranWrapper&&this.m_geogTranWrapper.getGeogtran()?this.m_geogTranWrapper.getGeogtran().getName():""}getInputSpatialReference(){return this.m_bInverted?this.m_geogTranWrapper.getOutputSr(!1):this.m_geogTranWrapper.getInputSr(!1)}getOutputSpatialReference(){return this.m_bInverted?this.m_geogTranWrapper.getInputSr(!1):this.m_geogTranWrapper.getOutputSr(!1)}getInverse(){return new nn(this,!0)}isInverted(){return this.m_bInverted}getHashCode(){return this.m_hashCode}GetPeGeogtran(){return this.m_geogTranWrapper.getGeogtran()}equals(e){return e===this||this.m_bInverted===e.m_bInverted&&(this.GetPeGeogtran()===e.GetPeGeogtran()||this.getID()===e.getID()&&!(0===this.getID()&&!this.GetPeGeogtran().isEqual(e.GetPeGeogtran())))}referencesMissingData(){return!!this.m_geogTranWrapper&&!this.m_geogTranWrapper.isUsable()}getWrapper(){return this.m_geogTranWrapper}}function na(){return new no([],null,null,null)}class no{constructor(e,t,s,i){this.m_bReadOnly=!0,this.m_name="",this.m_fastTrack=-1,this.m_bNameIsSet=!1,this.m_transforms=e,t&&(this.m_name=t,this.m_bNameIsSet=!0),this.m_inputSr=s,this.m_outputSr=i}getType(){return 0}getName(){if(this.m_bNameIsSet)return this.m_name;if(0===this.m_transforms.length)return"";let e="";for(let t of this.m_transforms)e.length>0&&(e+=" + "),t.isInverted()&&(e+="~"),e+=t.getName();return e}count(){return this.m_transforms.length}createInverse(){return this.getInverse()}getHashCode(){let e=1973;for(let t=0;t<this.m_transforms.length;t++)e=(0,b.A)(e,this.m_transforms[t].getHashCode());return e}equals(e){return(0,I.g)(0),!1}referencesMissingData(){if(0===this.m_transforms.length)return!1;for(let e of this.m_transforms)if(e.referencesMissingData())return!0;return!1}isMatchingTransformation(e,t){return(0,I.g)(0),!1}validateTransformation(e,t){return(0,I.g)(0),!1}nameIsSet(){return(0,I.g)(0),!1}getInputSpatialReference(){return this.m_inputSr}getOutputSpatialReference(){return this.m_outputSr}getStep(e){return(e<0||e>this.count())&&(0,I.q)(""),this.m_transforms[e]}getInverse(){let e=new nl;return e.addSteps(this,!0),e.setInputSpatialReference(this.m_outputSr),e.setOutputSpatialReference(this.m_inputSr),e.create()}
1transform(e,t,s){var i,r,n;let a,o,l;if(0===this.count())return;let m=this.m_inputSr,g=this.m_outputSr;if(e&&(g=(0,b.c)(m,m=g)),0===this.m_transforms.length)return void ig(m,null,g,null,t,null,s);let u=this.m_fastTrack;if(1===u)return void(0,G.a4)(e,this.m_transforms,i=>{!function(e,t,s,i){let r=e.getVerttran(),n=e.getGeogtran();if(i>0){e.prepareOrThrow();let a=t?h.PE_TRANSFORM_2_TO_1:h.PE_TRANSFORM_1_TO_2;r?(0,I.g)(0):i0(n,i,s,null,a)}}(i.getWrapper(),e!==i.isInverted(),t,s)});let _=ih();-1===u&&_.initFromGcsAndVcs(m,null);let p=ih(),d=e?this.m_transforms.length-1:0,c=e?-1:1;for(let i=0,r=this.m_transforms.length;i<r;i++,d+=c){if(0===i){let i=this.m_transforms[d];(function(e,t,s,i,r,n){let a=ih();a.initFromGcsAndVcsPe(e,null),n.assign(s?t.m_outputUnitParams:t.m_inputUnitParams),n.processUnitParams(a),a.processUnitParams(n),r>0&&il(a,n,i,null,r)})(m.getPECoordSys(),i.getWrapper(),e!==i.isInverted(),t,s,p),-1===u&&(_.equals(p)||(u=0)),_.assign(p)}else{let i=this.m_transforms[d-c],r=this.m_transforms[d];(function(e,t,s,i,r,n,a,o){let l=ih(),h=ih();l.assign(s?t.m_inputUnitParams:t.m_outputUnitParams),h.assign(r?i.m_outputUnitParams:i.m_inputUnitParams),l.processUnitParams(e),h.processUnitParams(l),l.processUnitParams(h),a>0&&il(l,h,n,null,a),o.assign(h)})(_,i.getWrapper(),e!==i.isInverted(),r.getWrapper(),e!==r.isInverted(),t,s,p),-1===u&&(_.equals(p)||(u=0)),_.assign(p)}let r=this.m_transforms[d];(function(e,t,s,i,r,n){let a=t.getVerttran(),o=t.getGeogtran();if(n.assign(s?t.m_inputUnitParams:t.m_outputUnitParams),n.processUnitParams(e),r>0){t.prepareOrThrow();let e=s?h.PE_TRANSFORM_2_TO_1:h.PE_TRANSFORM_1_TO_2;a?(0,I.g)(0):i0(o,r,i,null,e)}})(_,r.getWrapper(),e!==r.isInverted(),t,s,p),_.assign(p)}let f=this.m_transforms[d-c];i=f.getWrapper(),r=e!==f.isInverted(),n=g,(a=ih()).assign(r?i.m_inputUnitParams:i.m_outputUnitParams),a.processUnitParams(_),o=null,n&&(o=n.getPECoordSys()),(l=ih()).initFromGcsAndVcsPe(o,null),l.processUnitParams(a),a.processUnitParams(l),s>0&&il(a,l,t,null,s),-1===u&&(p.initFromGcsAndVcs(g,null),_.equals(p)||(u=0)),this.m_fastTrack=+(0!==u)}}class nl{constructor(){this.m_transforms=[],this.m_inputGCS=null,this.m_outputGCS=null,this.m_name="",this.m_bNameIsSet=!1}getInputSpatialReference(){return null!==this.m_inputGCS?this.m_inputGCS:this.count()>0?this.m_transforms[0].getInputSpatialReference():null}setInputSpatialReference(e){this.m_inputGCS=e?e.getGCS():null}getOutputSpatialReference(){return null!==this.m_outputGCS?this.m_outputGCS:this.count()>0?this.m_transforms.at(-1).getOutputSpatialReference():null}setOutputSpatialReference(e){this.m_outputGCS=e?e.getGCS():null}getName(){if(this.m_bNameIsSet)return this.m_name;if(0===this.m_transforms.length)return"";let e="";for(let t of this.m_transforms)e.length>0&&(e+=" + "),t.isInverted()&&(e+="~"),e+=t.getName();return e}count(){return this.m_transforms.length}getStep(e){return(e<0||e>this.count())&&(0,I.q)(""),this.m_transforms[e]}setStep(e,t){(0,I.g)(0)}add(e){this.m_transforms.push(e)}addSteps(e,t){if(t)for(let t=e.count()-1;t>=0;--t)this.add(e.getStep(t).getInverse());else for(let t=0;t<e.count();++t)this.add(e.getStep(t))}clear(){this.m_transforms=[],this.m_name="",this.m_bNameIsSet=!1,this.m_inputGCS=null,this.m_outputGCS=null}remove(e){(0,I.g)(0)}create(){let e=this.getInputSpatialReference(),t=this.getOutputSpatialReference(),s=new no(this.m_transforms,this.m_bNameIsSet?this.m_name:null,e,t);return s.m_bReadOnly=!0,this.clear(),s}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.