@maptiler/geocoding-control 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +3 -4
  2. package/icons/airport.svg +6 -0
  3. package/icons/animal_shelter.svg +4 -0
  4. package/icons/art_gallery.svg +4 -0
  5. package/icons/atm.svg +5 -1
  6. package/icons/barrier.svg +4 -0
  7. package/icons/baseball.svg +4 -0
  8. package/icons/basketball.svg +4 -0
  9. package/icons/bbq.svg +4 -1
  10. package/icons/beach.svg +4 -0
  11. package/icons/beer.svg +4 -1
  12. package/icons/bench.svg +4 -1
  13. package/icons/bicycle.svg +4 -1
  14. package/icons/bicycle_parking.svg +5 -1
  15. package/icons/bicycle_rental.svg +5 -1
  16. package/icons/billiards.svg +4 -0
  17. package/icons/board.svg +4 -1
  18. package/icons/bollard.svg +4 -0
  19. package/icons/bowling.svg +4 -1
  20. package/icons/building.svg +4 -0
  21. package/icons/bulldozer.svg +4 -0
  22. package/icons/bus_guided.svg +4 -0
  23. package/icons/bus_trolley.svg +4 -0
  24. package/icons/butcher.svg +4 -1
  25. package/icons/camper_trailer.svg +4 -0
  26. package/icons/campfire.svg +4 -0
  27. package/icons/caution.svg +4 -0
  28. package/icons/cemetery.svg +3 -11
  29. package/icons/charging_station.svg +4 -1
  30. package/icons/christian.svg +5 -0
  31. package/icons/circle-dot.svg +4 -0
  32. package/icons/circle-stroke.svg +4 -0
  33. package/icons/circle.svg +4 -0
  34. package/icons/city.svg +4 -0
  35. package/icons/communications_tower.svg +4 -1
  36. package/icons/confectionery.svg +4 -1
  37. package/icons/construction.svg +4 -0
  38. package/icons/cricket.svg +4 -0
  39. package/icons/cross.svg +4 -1
  40. package/icons/cycle_barrier.svg +4 -0
  41. package/icons/dam.svg +4 -0
  42. package/icons/danger.svg +4 -0
  43. package/icons/diamond.svg +4 -0
  44. package/icons/diamond_stroked.svg +4 -0
  45. package/icons/dot.svg +4 -0
  46. package/icons/drinking_water.svg +4 -1
  47. package/icons/emergency_phone.svg +4 -1
  48. package/icons/entrance.svg +4 -0
  49. package/icons/farm.svg +3 -8
  50. package/icons/fence.svg +4 -0
  51. package/icons/florist.svg +4 -1
  52. package/icons/furniture.svg +4 -1
  53. package/icons/gaming.svg +4 -0
  54. package/icons/garden.svg +4 -0
  55. package/icons/garden_centre.svg +4 -1
  56. package/icons/gate.svg +4 -1
  57. package/icons/globe.svg +4 -0
  58. package/icons/golf_green.svg +4 -0
  59. package/icons/gondola.svg +4 -0
  60. package/icons/guidepost.svg +4 -1
  61. package/icons/hardware.svg +3 -3
  62. package/icons/heart.svg +4 -0
  63. package/icons/heliport.svg +4 -0
  64. package/icons/highway_rest_area.svg +4 -0
  65. package/icons/home.svg +4 -0
  66. package/icons/hot_spring.svg +4 -1
  67. package/icons/hut.svg +4 -0
  68. package/icons/industry.svg +4 -0
  69. package/icons/karaoke.svg +4 -0
  70. package/icons/lift_gate.svg +4 -0
  71. package/icons/light_rail.svg +4 -0
  72. package/icons/lighthouse.svg +4 -1
  73. package/icons/marker.svg +4 -0
  74. package/icons/marker_stroked.svg +4 -0
  75. package/icons/monorail.svg +4 -0
  76. package/icons/motorcycle.svg +4 -1
  77. package/icons/motorcycle_parking.svg +4 -1
  78. package/icons/motorcycle_rental.svg +4 -0
  79. package/icons/motorcycle_repair.svg +4 -0
  80. package/icons/natural.svg +4 -0
  81. package/icons/noodle.svg +4 -0
  82. package/icons/obelisk.svg +4 -1
  83. package/icons/observation_tower.svg +4 -1
  84. package/icons/oneway.svg +4 -0
  85. package/icons/optician.svg +4 -1
  86. package/icons/park.svg +4 -1
  87. package/icons/parking_paid.svg +4 -0
  88. package/icons/pin.svg +4 -0
  89. package/icons/pipe.svg +4 -0
  90. package/icons/pizza.svg +4 -0
  91. package/icons/place_of_worship.svg +4 -1
  92. package/icons/playground.svg +3 -3
  93. package/icons/racetrack.svg +4 -0
  94. package/icons/radiation.svg +4 -0
  95. package/icons/railway.svg +4 -0
  96. package/icons/ranger_station.svg +4 -0
  97. package/icons/recycling.svg +4 -1
  98. package/icons/road_accident.svg +4 -0
  99. package/icons/roadblock.svg +4 -0
  100. package/icons/rocket.svg +4 -0
  101. package/icons/school_bus.svg +4 -0
  102. package/icons/sculpture.svg +4 -0
  103. package/icons/seafood.svg +4 -1
  104. package/icons/shelter.svg +4 -1
  105. package/icons/shoes.svg +4 -1
  106. package/icons/sikh.svg +4 -0
  107. package/icons/snow.svg +4 -0
  108. package/icons/soccer.svg +4 -1
  109. package/icons/spring.svg +4 -1
  110. package/icons/square.svg +4 -0
  111. package/icons/square_stroked.svg +4 -0
  112. package/icons/star.svg +4 -0
  113. package/icons/star_stroked.svg +4 -0
  114. package/icons/statue.svg +4 -1
  115. package/icons/subway.svg +4 -0
  116. package/icons/sushi.svg +4 -0
  117. package/icons/swimming.svg +5 -0
  118. package/icons/swimming_pool.svg +8 -0
  119. package/icons/tako.svg +4 -0
  120. package/icons/taxi.svg +4 -1
  121. package/icons/teahouse.svg +4 -0
  122. package/icons/terminal.svg +4 -1
  123. package/icons/theme_park.svg +4 -0
  124. package/icons/town.svg +4 -0
  125. package/icons/town_hall.svg +4 -1
  126. package/icons/townhall.svg +4 -1
  127. package/icons/tram_stop.svg +4 -0
  128. package/icons/transit.svg +4 -0
  129. package/icons/triangle.svg +4 -0
  130. package/icons/triangle_stroked.svg +4 -0
  131. package/icons/truck.svg +4 -0
  132. package/icons/tunnel.svg +4 -0
  133. package/icons/veterinary.svg +4 -1
  134. package/icons/viewpoint.svg +4 -1
  135. package/icons/village.svg +4 -0
  136. package/icons/volleyball.svg +4 -0
  137. package/icons/warehouse.svg +4 -0
  138. package/icons/water.svg +3 -5
  139. package/icons/water_park.svg +6 -1
  140. package/icons/water_tower.svg +4 -1
  141. package/icons/watermill.svg +4 -0
  142. package/icons/wetland.svg +4 -0
  143. package/icons/wine.svg +4 -0
  144. package/leaflet-controller.d.ts +2 -2
  145. package/leaflet-controller.js +1427 -9922
  146. package/leaflet-controller.js.map +1 -1
  147. package/leaflet-controller.umd.js +3 -9
  148. package/leaflet-controller.umd.js.map +1 -1
  149. package/leaflet.js +2708 -11166
  150. package/leaflet.js.map +1 -1
  151. package/leaflet.umd.js +3 -9
  152. package/leaflet.umd.js.map +1 -1
  153. package/maplibregl-controller.d.ts +2 -2
  154. package/maplibregl-controller.js +1268 -9849
  155. package/maplibregl-controller.js.map +1 -1
  156. package/maplibregl-controller.umd.js +3 -9
  157. package/maplibregl-controller.umd.js.map +1 -1
  158. package/maplibregl.js +2550 -11094
  159. package/maplibregl.js.map +1 -1
  160. package/maplibregl.umd.js +3 -9
  161. package/maplibregl.umd.js.map +1 -1
  162. package/maptilersdk.js +2558 -11102
  163. package/maptilersdk.js.map +1 -1
  164. package/maptilersdk.umd.js +3 -9
  165. package/maptilersdk.umd.js.map +1 -1
  166. package/mask.d.ts +1 -1
  167. package/openlayers-controller.js +1191 -9762
  168. package/openlayers-controller.js.map +1 -1
  169. package/openlayers-controller.umd.js +3 -9
  170. package/openlayers-controller.umd.js.map +1 -1
  171. package/openlayers.js +2689 -11223
  172. package/openlayers.js.map +1 -1
  173. package/openlayers.umd.js +3 -9
  174. package/openlayers.umd.js.map +1 -1
  175. package/package.json +24 -22
  176. package/react.js +996 -955
  177. package/react.js.map +1 -1
  178. package/react.umd.js +1 -1
  179. package/react.umd.js.map +1 -1
  180. package/style.css +1 -1
  181. package/svelte/FeatureItem.svelte +6 -5
  182. package/svelte/GeocodingControl.svelte +68 -12
  183. package/svelte/GeocodingControl.svelte.d.ts +4 -2
  184. package/svelte/geoUtils.js +7 -1
  185. package/svelte/leaflet-controller.d.ts +2 -2
  186. package/svelte/leaflet-controller.js +48 -2
  187. package/svelte/maplibregl-controller.d.ts +2 -2
  188. package/svelte/maplibregl-controller.js +5 -2
  189. package/svelte/mask.d.ts +1 -1
  190. package/svelte/mask.js +32 -29
  191. package/svelte/openlayers-controller.js +13 -14
  192. package/svelte/types.d.ts +15 -9
  193. package/types.d.ts +15 -9
  194. package/vanilla.js +1016 -975
  195. package/vanilla.js.map +1 -1
  196. package/vanilla.umd.js +1 -1
  197. package/vanilla.umd.js.map +1 -1
  198. package/icons/beach_resort.svg +0 -1
  199. package/icons/drinking-water.svg +0 -1
  200. package/icons/emergency-phone.svg +0 -1
  201. package/icons/rental_bicycle.svg +0 -1
  202. package/icons/rental_car.svg +0 -1
  203. /package/icons/{camp_site.svg → campsite.svg} +0 -0
  204. /package/icons/{toll_booth.svg → toll.svg} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"maplibregl-controller.js","sources":["../node_modules/@turf/helpers/dist/esm/index.js","../node_modules/splaytree/dist/splay.esm.js","../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/polygon-clipping/dist/polygon-clipping.esm.js","../node_modules/@turf/meta/dist/esm/index.js","../node_modules/@turf/union/dist/esm/index.js","../node_modules/svelte/src/runtime/internal/utils.js","../node_modules/svelte/src/runtime/internal/dom.js","../node_modules/svelte/src/runtime/internal/lifecycle.js","../node_modules/svelte/src/runtime/internal/scheduler.js","../node_modules/svelte/src/runtime/internal/transitions.js","../node_modules/svelte/src/runtime/internal/Component.js","../node_modules/svelte/src/shared/version.js","../node_modules/svelte/src/runtime/internal/disclose-version/index.js","../src/MarkerIcon.svelte","../node_modules/@turf/bbox/dist/esm/index.js","../node_modules/@turf/center/dist/esm/index.js","../node_modules/@turf/jsts/dist/jsts.min.js","../node_modules/d3-geo/src/adder.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/area.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/bounds.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/polygon.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-geo/src/clip/extent.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/length.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../node_modules/d3-geo/src/projection/equirectangular.js","../node_modules/@turf/buffer/dist/esm/index.js","../node_modules/@turf/difference/dist/esm/index.js","../src/mask.ts","../src/maplibregl-controller.ts"],"sourcesContent":["// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 0)\n return angle > 180 ? angle - 360 : angle;\n return angle < -180 ? angle + 360 : angle;\n}\nfunction radiansToDegrees(radians) {\n const degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","/**\n * splaytree v3.1.2\n * Fast Splay tree for Node and browser\n *\n * @author Alexander Milevski <info@w8r.name>\n * @license MIT\n * @preserve\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\n\nvar Node = /** @class */ (function () {\r\n function Node(key, data) {\r\n this.next = null;\r\n this.key = key;\r\n this.data = data;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n return Node;\r\n}());\n\n/* follows \"An implementation of top-down splaying\"\r\n * by D. Sleator <sleator@cs.cmu.edu> March 1992\r\n */\r\nfunction DEFAULT_COMPARE(a, b) {\r\n return a > b ? 1 : a < b ? -1 : 0;\r\n}\r\n/**\r\n * Simple top down splay, not requiring i to be in the tree t.\r\n */\r\nfunction splay(i, t, comparator) {\r\n var N = new Node(null, null);\r\n var l = N;\r\n var r = N;\r\n while (true) {\r\n var cmp = comparator(i, t.key);\r\n //if (i < t.key) {\r\n if (cmp < 0) {\r\n if (t.left === null)\r\n break;\r\n //if (i < t.left.key) {\r\n if (comparator(i, t.left.key) < 0) {\r\n var y = t.left; /* rotate right */\r\n t.left = y.right;\r\n y.right = t;\r\n t = y;\r\n if (t.left === null)\r\n break;\r\n }\r\n r.left = t; /* link right */\r\n r = t;\r\n t = t.left;\r\n //} else if (i > t.key) {\r\n }\r\n else if (cmp > 0) {\r\n if (t.right === null)\r\n break;\r\n //if (i > t.right.key) {\r\n if (comparator(i, t.right.key) > 0) {\r\n var y = t.right; /* rotate left */\r\n t.right = y.left;\r\n y.left = t;\r\n t = y;\r\n if (t.right === null)\r\n break;\r\n }\r\n l.right = t; /* link left */\r\n l = t;\r\n t = t.right;\r\n }\r\n else\r\n break;\r\n }\r\n /* assemble */\r\n l.right = t.left;\r\n r.left = t.right;\r\n t.left = N.right;\r\n t.right = N.left;\r\n return t;\r\n}\r\nfunction insert(i, data, t, comparator) {\r\n var node = new Node(i, data);\r\n if (t === null) {\r\n node.left = node.right = null;\r\n return node;\r\n }\r\n t = splay(i, t, comparator);\r\n var cmp = comparator(i, t.key);\r\n if (cmp < 0) {\r\n node.left = t.left;\r\n node.right = t;\r\n t.left = null;\r\n }\r\n else if (cmp >= 0) {\r\n node.right = t.right;\r\n node.left = t;\r\n t.right = null;\r\n }\r\n return node;\r\n}\r\nfunction split(key, v, comparator) {\r\n var left = null;\r\n var right = null;\r\n if (v) {\r\n v = splay(key, v, comparator);\r\n var cmp = comparator(v.key, key);\r\n if (cmp === 0) {\r\n left = v.left;\r\n right = v.right;\r\n }\r\n else if (cmp < 0) {\r\n right = v.right;\r\n v.right = null;\r\n left = v;\r\n }\r\n else {\r\n left = v.left;\r\n v.left = null;\r\n right = v;\r\n }\r\n }\r\n return { left: left, right: right };\r\n}\r\nfunction merge(left, right, comparator) {\r\n if (right === null)\r\n return left;\r\n if (left === null)\r\n return right;\r\n right = splay(left.key, right, comparator);\r\n right.left = left;\r\n return right;\r\n}\r\n/**\r\n * Prints level of the tree\r\n */\r\nfunction printRow(root, prefix, isTail, out, printNode) {\r\n if (root) {\r\n out(\"\" + prefix + (isTail ? '└── ' : '├── ') + printNode(root) + \"\\n\");\r\n var indent = prefix + (isTail ? ' ' : '│ ');\r\n if (root.left)\r\n printRow(root.left, indent, false, out, printNode);\r\n if (root.right)\r\n printRow(root.right, indent, true, out, printNode);\r\n }\r\n}\r\nvar Tree = /** @class */ (function () {\r\n function Tree(comparator) {\r\n if (comparator === void 0) { comparator = DEFAULT_COMPARE; }\r\n this._root = null;\r\n this._size = 0;\r\n this._comparator = comparator;\r\n }\r\n /**\r\n * Inserts a key, allows duplicates\r\n */\r\n Tree.prototype.insert = function (key, data) {\r\n this._size++;\r\n return this._root = insert(key, data, this._root, this._comparator);\r\n };\r\n /**\r\n * Adds a key, if it is not present in the tree\r\n */\r\n Tree.prototype.add = function (key, data) {\r\n var node = new Node(key, data);\r\n if (this._root === null) {\r\n node.left = node.right = null;\r\n this._size++;\r\n this._root = node;\r\n }\r\n var comparator = this._comparator;\r\n var t = splay(key, this._root, comparator);\r\n var cmp = comparator(key, t.key);\r\n if (cmp === 0)\r\n this._root = t;\r\n else {\r\n if (cmp < 0) {\r\n node.left = t.left;\r\n node.right = t;\r\n t.left = null;\r\n }\r\n else if (cmp > 0) {\r\n node.right = t.right;\r\n node.left = t;\r\n t.right = null;\r\n }\r\n this._size++;\r\n this._root = node;\r\n }\r\n return this._root;\r\n };\r\n /**\r\n * @param {Key} key\r\n * @return {Node|null}\r\n */\r\n Tree.prototype.remove = function (key) {\r\n this._root = this._remove(key, this._root, this._comparator);\r\n };\r\n /**\r\n * Deletes i from the tree if it's there\r\n */\r\n Tree.prototype._remove = function (i, t, comparator) {\r\n var x;\r\n if (t === null)\r\n return null;\r\n t = splay(i, t, comparator);\r\n var cmp = comparator(i, t.key);\r\n if (cmp === 0) { /* found it */\r\n if (t.left === null) {\r\n x = t.right;\r\n }\r\n else {\r\n x = splay(i, t.left, comparator);\r\n x.right = t.right;\r\n }\r\n this._size--;\r\n return x;\r\n }\r\n return t; /* It wasn't there */\r\n };\r\n /**\r\n * Removes and returns the node with smallest key\r\n */\r\n Tree.prototype.pop = function () {\r\n var node = this._root;\r\n if (node) {\r\n while (node.left)\r\n node = node.left;\r\n this._root = splay(node.key, this._root, this._comparator);\r\n this._root = this._remove(node.key, this._root, this._comparator);\r\n return { key: node.key, data: node.data };\r\n }\r\n return null;\r\n };\r\n /**\r\n * Find without splaying\r\n */\r\n Tree.prototype.findStatic = function (key) {\r\n var current = this._root;\r\n var compare = this._comparator;\r\n while (current) {\r\n var cmp = compare(key, current.key);\r\n if (cmp === 0)\r\n return current;\r\n else if (cmp < 0)\r\n current = current.left;\r\n else\r\n current = current.right;\r\n }\r\n return null;\r\n };\r\n Tree.prototype.find = function (key) {\r\n if (this._root) {\r\n this._root = splay(key, this._root, this._comparator);\r\n if (this._comparator(key, this._root.key) !== 0)\r\n return null;\r\n }\r\n return this._root;\r\n };\r\n Tree.prototype.contains = function (key) {\r\n var current = this._root;\r\n var compare = this._comparator;\r\n while (current) {\r\n var cmp = compare(key, current.key);\r\n if (cmp === 0)\r\n return true;\r\n else if (cmp < 0)\r\n current = current.left;\r\n else\r\n current = current.right;\r\n }\r\n return false;\r\n };\r\n Tree.prototype.forEach = function (visitor, ctx) {\r\n var current = this._root;\r\n var Q = []; /* Initialize stack s */\r\n var done = false;\r\n while (!done) {\r\n if (current !== null) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length !== 0) {\r\n current = Q.pop();\r\n visitor.call(ctx, current);\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\r\n */\r\n Tree.prototype.range = function (low, high, fn, ctx) {\r\n var Q = [];\r\n var compare = this._comparator;\r\n var node = this._root;\r\n var cmp;\r\n while (Q.length !== 0 || node) {\r\n if (node) {\r\n Q.push(node);\r\n node = node.left;\r\n }\r\n else {\r\n node = Q.pop();\r\n cmp = compare(node.key, high);\r\n if (cmp > 0) {\r\n break;\r\n }\r\n else if (compare(node.key, low) >= 0) {\r\n if (fn.call(ctx, node))\r\n return this; // stop if smth is returned\r\n }\r\n node = node.right;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Returns array of keys\r\n */\r\n Tree.prototype.keys = function () {\r\n var keys = [];\r\n this.forEach(function (_a) {\r\n var key = _a.key;\r\n return keys.push(key);\r\n });\r\n return keys;\r\n };\r\n /**\r\n * Returns array of all the data in the nodes\r\n */\r\n Tree.prototype.values = function () {\r\n var values = [];\r\n this.forEach(function (_a) {\r\n var data = _a.data;\r\n return values.push(data);\r\n });\r\n return values;\r\n };\r\n Tree.prototype.min = function () {\r\n if (this._root)\r\n return this.minNode(this._root).key;\r\n return null;\r\n };\r\n Tree.prototype.max = function () {\r\n if (this._root)\r\n return this.maxNode(this._root).key;\r\n return null;\r\n };\r\n Tree.prototype.minNode = function (t) {\r\n if (t === void 0) { t = this._root; }\r\n if (t)\r\n while (t.left)\r\n t = t.left;\r\n return t;\r\n };\r\n Tree.prototype.maxNode = function (t) {\r\n if (t === void 0) { t = this._root; }\r\n if (t)\r\n while (t.right)\r\n t = t.right;\r\n return t;\r\n };\r\n /**\r\n * Returns node at given index\r\n */\r\n Tree.prototype.at = function (index) {\r\n var current = this._root;\r\n var done = false;\r\n var i = 0;\r\n var Q = [];\r\n while (!done) {\r\n if (current) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length > 0) {\r\n current = Q.pop();\r\n if (i === index)\r\n return current;\r\n i++;\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n return null;\r\n };\r\n Tree.prototype.next = function (d) {\r\n var root = this._root;\r\n var successor = null;\r\n if (d.right) {\r\n successor = d.right;\r\n while (successor.left)\r\n successor = successor.left;\r\n return successor;\r\n }\r\n var comparator = this._comparator;\r\n while (root) {\r\n var cmp = comparator(d.key, root.key);\r\n if (cmp === 0)\r\n break;\r\n else if (cmp < 0) {\r\n successor = root;\r\n root = root.left;\r\n }\r\n else\r\n root = root.right;\r\n }\r\n return successor;\r\n };\r\n Tree.prototype.prev = function (d) {\r\n var root = this._root;\r\n var predecessor = null;\r\n if (d.left !== null) {\r\n predecessor = d.left;\r\n while (predecessor.right)\r\n predecessor = predecessor.right;\r\n return predecessor;\r\n }\r\n var comparator = this._comparator;\r\n while (root) {\r\n var cmp = comparator(d.key, root.key);\r\n if (cmp === 0)\r\n break;\r\n else if (cmp < 0)\r\n root = root.left;\r\n else {\r\n predecessor = root;\r\n root = root.right;\r\n }\r\n }\r\n return predecessor;\r\n };\r\n Tree.prototype.clear = function () {\r\n this._root = null;\r\n this._size = 0;\r\n return this;\r\n };\r\n Tree.prototype.toList = function () {\r\n return toList(this._root);\r\n };\r\n /**\r\n * Bulk-load items. Both array have to be same size\r\n */\r\n Tree.prototype.load = function (keys, values, presort) {\r\n if (values === void 0) { values = []; }\r\n if (presort === void 0) { presort = false; }\r\n var size = keys.length;\r\n var comparator = this._comparator;\r\n // sort if needed\r\n if (presort)\r\n sort(keys, values, 0, size - 1, comparator);\r\n if (this._root === null) { // empty tree\r\n this._root = loadRecursive(keys, values, 0, size);\r\n this._size = size;\r\n }\r\n else { // that re-builds the whole tree from two in-order traversals\r\n var mergedList = mergeLists(this.toList(), createList(keys, values), comparator);\r\n size = this._size + size;\r\n this._root = sortedListToBST({ head: mergedList }, 0, size);\r\n }\r\n return this;\r\n };\r\n Tree.prototype.isEmpty = function () { return this._root === null; };\r\n Object.defineProperty(Tree.prototype, \"size\", {\r\n get: function () { return this._size; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tree.prototype, \"root\", {\r\n get: function () { return this._root; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Tree.prototype.toString = function (printNode) {\r\n if (printNode === void 0) { printNode = function (n) { return String(n.key); }; }\r\n var out = [];\r\n printRow(this._root, '', true, function (v) { return out.push(v); }, printNode);\r\n return out.join('');\r\n };\r\n Tree.prototype.update = function (key, newKey, newData) {\r\n var comparator = this._comparator;\r\n var _a = split(key, this._root, comparator), left = _a.left, right = _a.right;\r\n if (comparator(key, newKey) < 0) {\r\n right = insert(newKey, newData, right, comparator);\r\n }\r\n else {\r\n left = insert(newKey, newData, left, comparator);\r\n }\r\n this._root = merge(left, right, comparator);\r\n };\r\n Tree.prototype.split = function (key) {\r\n return split(key, this._root, this._comparator);\r\n };\r\n Tree.prototype[Symbol.iterator] = function () {\r\n var current, Q, done;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n current = this._root;\r\n Q = [];\r\n done = false;\r\n _a.label = 1;\r\n case 1:\r\n if (!!done) return [3 /*break*/, 6];\r\n if (!(current !== null)) return [3 /*break*/, 2];\r\n Q.push(current);\r\n current = current.left;\r\n return [3 /*break*/, 5];\r\n case 2:\r\n if (!(Q.length !== 0)) return [3 /*break*/, 4];\r\n current = Q.pop();\r\n return [4 /*yield*/, current];\r\n case 3:\r\n _a.sent();\r\n current = current.right;\r\n return [3 /*break*/, 5];\r\n case 4:\r\n done = true;\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 1];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n return Tree;\r\n}());\r\nfunction loadRecursive(keys, values, start, end) {\r\n var size = end - start;\r\n if (size > 0) {\r\n var middle = start + Math.floor(size / 2);\r\n var key = keys[middle];\r\n var data = values[middle];\r\n var node = new Node(key, data);\r\n node.left = loadRecursive(keys, values, start, middle);\r\n node.right = loadRecursive(keys, values, middle + 1, end);\r\n return node;\r\n }\r\n return null;\r\n}\r\nfunction createList(keys, values) {\r\n var head = new Node(null, null);\r\n var p = head;\r\n for (var i = 0; i < keys.length; i++) {\r\n p = p.next = new Node(keys[i], values[i]);\r\n }\r\n p.next = null;\r\n return head.next;\r\n}\r\nfunction toList(root) {\r\n var current = root;\r\n var Q = [];\r\n var done = false;\r\n var head = new Node(null, null);\r\n var p = head;\r\n while (!done) {\r\n if (current) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length > 0) {\r\n current = p = p.next = Q.pop();\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n p.next = null; // that'll work even if the tree was empty\r\n return head.next;\r\n}\r\nfunction sortedListToBST(list, start, end) {\r\n var size = end - start;\r\n if (size > 0) {\r\n var middle = start + Math.floor(size / 2);\r\n var left = sortedListToBST(list, start, middle);\r\n var root = list.head;\r\n root.left = left;\r\n list.head = list.head.next;\r\n root.right = sortedListToBST(list, middle + 1, end);\r\n return root;\r\n }\r\n return null;\r\n}\r\nfunction mergeLists(l1, l2, compare) {\r\n var head = new Node(null, null); // dummy\r\n var p = head;\r\n var p1 = l1;\r\n var p2 = l2;\r\n while (p1 !== null && p2 !== null) {\r\n if (compare(p1.key, p2.key) < 0) {\r\n p.next = p1;\r\n p1 = p1.next;\r\n }\r\n else {\r\n p.next = p2;\r\n p2 = p2.next;\r\n }\r\n p = p.next;\r\n }\r\n if (p1 !== null) {\r\n p.next = p1;\r\n }\r\n else if (p2 !== null) {\r\n p.next = p2;\r\n }\r\n return head.next;\r\n}\r\nfunction sort(keys, values, left, right, compare) {\r\n if (left >= right)\r\n return;\r\n var pivot = keys[(left + right) >> 1];\r\n var i = left - 1;\r\n var j = right + 1;\r\n while (true) {\r\n do\r\n i++;\r\n while (compare(keys[i], pivot) < 0);\r\n do\r\n j--;\r\n while (compare(keys[j], pivot) > 0);\r\n if (i >= j)\r\n break;\r\n var tmp = keys[i];\r\n keys[i] = keys[j];\r\n keys[j] = tmp;\r\n tmp = values[i];\r\n values[i] = values[j];\r\n values[j] = tmp;\r\n }\r\n sort(keys, values, left, j, compare);\r\n sort(keys, values, j + 1, right, compare);\r\n}\n\nexport default Tree;\n//# sourceMappingURL=splay.esm.js.map\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import SplayTree from 'splaytree';\nimport { orient2d } from 'robust-predicates';\n\n/**\n * A bounding box has the format:\n *\n * { ll: { x: xmin, y: ymin }, ur: { x: xmax, y: ymax } }\n *\n */\n\nconst isInBbox = (bbox, point) => {\n return bbox.ll.x <= point.x && point.x <= bbox.ur.x && bbox.ll.y <= point.y && point.y <= bbox.ur.y;\n};\n\n/* Returns either null, or a bbox (aka an ordered pair of points)\n * If there is only one point of overlap, a bbox with identical points\n * will be returned */\nconst getBboxOverlap = (b1, b2) => {\n // check if the bboxes overlap at all\n if (b2.ur.x < b1.ll.x || b1.ur.x < b2.ll.x || b2.ur.y < b1.ll.y || b1.ur.y < b2.ll.y) return null;\n\n // find the middle two X values\n const lowerX = b1.ll.x < b2.ll.x ? b2.ll.x : b1.ll.x;\n const upperX = b1.ur.x < b2.ur.x ? b1.ur.x : b2.ur.x;\n\n // find the middle two Y values\n const lowerY = b1.ll.y < b2.ll.y ? b2.ll.y : b1.ll.y;\n const upperY = b1.ur.y < b2.ur.y ? b1.ur.y : b2.ur.y;\n\n // put those middle values together to get the overlap\n return {\n ll: {\n x: lowerX,\n y: lowerY\n },\n ur: {\n x: upperX,\n y: upperY\n }\n };\n};\n\n/* Javascript doesn't do integer math. Everything is\n * floating point with percision Number.EPSILON.\n *\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON\n */\n\nlet epsilon = Number.EPSILON;\n\n// IE Polyfill\nif (epsilon === undefined) epsilon = Math.pow(2, -52);\nconst EPSILON_SQ = epsilon * epsilon;\n\n/* FLP comparator */\nconst cmp = (a, b) => {\n // check if they're both 0\n if (-epsilon < a && a < epsilon) {\n if (-epsilon < b && b < epsilon) {\n return 0;\n }\n }\n\n // check if they're flp equal\n const ab = a - b;\n if (ab * ab < EPSILON_SQ * a * b) {\n return 0;\n }\n\n // normal comparison\n return a < b ? -1 : 1;\n};\n\n/**\n * This class rounds incoming values sufficiently so that\n * floating points problems are, for the most part, avoided.\n *\n * Incoming points are have their x & y values tested against\n * all previously seen x & y values. If either is 'too close'\n * to a previously seen value, it's value is 'snapped' to the\n * previously seen value.\n *\n * All points should be rounded by this class before being\n * stored in any data structures in the rest of this algorithm.\n */\n\nclass PtRounder {\n constructor() {\n this.reset();\n }\n reset() {\n this.xRounder = new CoordRounder();\n this.yRounder = new CoordRounder();\n }\n round(x, y) {\n return {\n x: this.xRounder.round(x),\n y: this.yRounder.round(y)\n };\n }\n}\nclass CoordRounder {\n constructor() {\n this.tree = new SplayTree();\n // preseed with 0 so we don't end up with values < Number.EPSILON\n this.round(0);\n }\n\n // Note: this can rounds input values backwards or forwards.\n // You might ask, why not restrict this to just rounding\n // forwards? Wouldn't that allow left endpoints to always\n // remain left endpoints during splitting (never change to\n // right). No - it wouldn't, because we snap intersections\n // to endpoints (to establish independence from the segment\n // angle for t-intersections).\n round(coord) {\n const node = this.tree.add(coord);\n const prevNode = this.tree.prev(node);\n if (prevNode !== null && cmp(node.key, prevNode.key) === 0) {\n this.tree.remove(coord);\n return prevNode.key;\n }\n const nextNode = this.tree.next(node);\n if (nextNode !== null && cmp(node.key, nextNode.key) === 0) {\n this.tree.remove(coord);\n return nextNode.key;\n }\n return coord;\n }\n}\n\n// singleton available by import\nconst rounder = new PtRounder();\n\n/* Cross Product of two vectors with first point at origin */\nconst crossProduct = (a, b) => a.x * b.y - a.y * b.x;\n\n/* Dot Product of two vectors with first point at origin */\nconst dotProduct = (a, b) => a.x * b.x + a.y * b.y;\n\n/* Comparator for two vectors with same starting point */\nconst compareVectorAngles = (basePt, endPt1, endPt2) => {\n const res = orient2d(basePt.x, basePt.y, endPt1.x, endPt1.y, endPt2.x, endPt2.y);\n if (res > 0) return -1;\n if (res < 0) return 1;\n return 0;\n};\nconst length = v => Math.sqrt(dotProduct(v, v));\n\n/* Get the sine of the angle from pShared -> pAngle to pShaed -> pBase */\nconst sineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = {\n x: pBase.x - pShared.x,\n y: pBase.y - pShared.y\n };\n const vAngle = {\n x: pAngle.x - pShared.x,\n y: pAngle.y - pShared.y\n };\n return crossProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n};\n\n/* Get the cosine of the angle from pShared -> pAngle to pShaed -> pBase */\nconst cosineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = {\n x: pBase.x - pShared.x,\n y: pBase.y - pShared.y\n };\n const vAngle = {\n x: pAngle.x - pShared.x,\n y: pAngle.y - pShared.y\n };\n return dotProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n};\n\n/* Get the x coordinate where the given line (defined by a point and vector)\n * crosses the horizontal line with the given y coordiante.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst horizontalIntersection = (pt, v, y) => {\n if (v.y === 0) return null;\n return {\n x: pt.x + v.x / v.y * (y - pt.y),\n y: y\n };\n};\n\n/* Get the y coordinate where the given line (defined by a point and vector)\n * crosses the vertical line with the given x coordiante.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst verticalIntersection = (pt, v, x) => {\n if (v.x === 0) return null;\n return {\n x: x,\n y: pt.y + v.y / v.x * (x - pt.x)\n };\n};\n\n/* Get the intersection of two lines, each defined by a base point and a vector.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst intersection$1 = (pt1, v1, pt2, v2) => {\n // take some shortcuts for vertical and horizontal lines\n // this also ensures we don't calculate an intersection and then discover\n // it's actually outside the bounding box of the line\n if (v1.x === 0) return verticalIntersection(pt2, v2, pt1.x);\n if (v2.x === 0) return verticalIntersection(pt1, v1, pt2.x);\n if (v1.y === 0) return horizontalIntersection(pt2, v2, pt1.y);\n if (v2.y === 0) return horizontalIntersection(pt1, v1, pt2.y);\n\n // General case for non-overlapping segments.\n // This algorithm is based on Schneider and Eberly.\n // http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - pg 244\n\n const kross = crossProduct(v1, v2);\n if (kross == 0) return null;\n const ve = {\n x: pt2.x - pt1.x,\n y: pt2.y - pt1.y\n };\n const d1 = crossProduct(ve, v1) / kross;\n const d2 = crossProduct(ve, v2) / kross;\n\n // take the average of the two calculations to minimize rounding error\n const x1 = pt1.x + d2 * v1.x,\n x2 = pt2.x + d1 * v2.x;\n const y1 = pt1.y + d2 * v1.y,\n y2 = pt2.y + d1 * v2.y;\n const x = (x1 + x2) / 2;\n const y = (y1 + y2) / 2;\n return {\n x: x,\n y: y\n };\n};\n\nclass SweepEvent {\n // for ordering sweep events in the sweep event queue\n static compare(a, b) {\n // favor event with a point that the sweep line hits first\n const ptCmp = SweepEvent.comparePoints(a.point, b.point);\n if (ptCmp !== 0) return ptCmp;\n\n // the points are the same, so link them if needed\n if (a.point !== b.point) a.link(b);\n\n // favor right events over left\n if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n\n // we have two matching left or right endpoints\n // ordering of this case is the same as for their segments\n return Segment.compare(a.segment, b.segment);\n }\n\n // for ordering points in sweep line order\n static comparePoints(aPt, bPt) {\n if (aPt.x < bPt.x) return -1;\n if (aPt.x > bPt.x) return 1;\n if (aPt.y < bPt.y) return -1;\n if (aPt.y > bPt.y) return 1;\n return 0;\n }\n\n // Warning: 'point' input will be modified and re-used (for performance)\n constructor(point, isLeft) {\n if (point.events === undefined) point.events = [this];else point.events.push(this);\n this.point = point;\n this.isLeft = isLeft;\n // this.segment, this.otherSE set by factory\n }\n link(other) {\n if (other.point === this.point) {\n throw new Error(\"Tried to link already linked events\");\n }\n const otherEvents = other.point.events;\n for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n const evt = otherEvents[i];\n this.point.events.push(evt);\n evt.point = this.point;\n }\n this.checkForConsuming();\n }\n\n /* Do a pass over our linked events and check to see if any pair\n * of segments match, and should be consumed. */\n checkForConsuming() {\n // FIXME: The loops in this method run O(n^2) => no good.\n // Maintain little ordered sweep event trees?\n // Can we maintaining an ordering that avoids the need\n // for the re-sorting with getLeftmostComparator in geom-out?\n\n // Compare each pair of events to see if other events also match\n const numEvents = this.point.events.length;\n for (let i = 0; i < numEvents; i++) {\n const evt1 = this.point.events[i];\n if (evt1.segment.consumedBy !== undefined) continue;\n for (let j = i + 1; j < numEvents; j++) {\n const evt2 = this.point.events[j];\n if (evt2.consumedBy !== undefined) continue;\n if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n evt1.segment.consume(evt2.segment);\n }\n }\n }\n getAvailableLinkedEvents() {\n // point.events is always of length 2 or greater\n const events = [];\n for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n const evt = this.point.events[i];\n if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n events.push(evt);\n }\n }\n return events;\n }\n\n /**\n * Returns a comparator function for sorting linked events that will\n * favor the event that will give us the smallest left-side angle.\n * All ring construction starts as low as possible heading to the right,\n * so by always turning left as sharp as possible we'll get polygons\n * without uncessary loops & holes.\n *\n * The comparator function has a compute cache such that it avoids\n * re-computing already-computed values.\n */\n getLeftmostComparator(baseEvent) {\n const cache = new Map();\n const fillCache = linkedEvent => {\n const nextEvent = linkedEvent.otherSE;\n cache.set(linkedEvent, {\n sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n });\n };\n return (a, b) => {\n if (!cache.has(a)) fillCache(a);\n if (!cache.has(b)) fillCache(b);\n const {\n sine: asine,\n cosine: acosine\n } = cache.get(a);\n const {\n sine: bsine,\n cosine: bcosine\n } = cache.get(b);\n\n // both on or above x-axis\n if (asine >= 0 && bsine >= 0) {\n if (acosine < bcosine) return 1;\n if (acosine > bcosine) return -1;\n return 0;\n }\n\n // both below x-axis\n if (asine < 0 && bsine < 0) {\n if (acosine < bcosine) return -1;\n if (acosine > bcosine) return 1;\n return 0;\n }\n\n // one above x-axis, one below\n if (bsine < asine) return -1;\n if (bsine > asine) return 1;\n return 0;\n };\n }\n}\n\n// Give segments unique ID's to get consistent sorting of\n// segments and sweep events when all else is identical\nlet segmentId = 0;\nclass Segment {\n /* This compare() function is for ordering segments in the sweep\n * line tree, and does so according to the following criteria:\n *\n * Consider the vertical line that lies an infinestimal step to the\n * right of the right-more of the two left endpoints of the input\n * segments. Imagine slowly moving a point up from negative infinity\n * in the increasing y direction. Which of the two segments will that\n * point intersect first? That segment comes 'before' the other one.\n *\n * If neither segment would be intersected by such a line, (if one\n * or more of the segments are vertical) then the line to be considered\n * is directly on the right-more of the two left inputs.\n */\n static compare(a, b) {\n const alx = a.leftSE.point.x;\n const blx = b.leftSE.point.x;\n const arx = a.rightSE.point.x;\n const brx = b.rightSE.point.x;\n\n // check if they're even in the same vertical plane\n if (brx < alx) return 1;\n if (arx < blx) return -1;\n const aly = a.leftSE.point.y;\n const bly = b.leftSE.point.y;\n const ary = a.rightSE.point.y;\n const bry = b.rightSE.point.y;\n\n // is left endpoint of segment B the right-more?\n if (alx < blx) {\n // are the two segments in the same horizontal plane?\n if (bly < aly && bly < ary) return 1;\n if (bly > aly && bly > ary) return -1;\n\n // is the B left endpoint colinear to segment A?\n const aCmpBLeft = a.comparePoint(b.leftSE.point);\n if (aCmpBLeft < 0) return 1;\n if (aCmpBLeft > 0) return -1;\n\n // is the A right endpoint colinear to segment B ?\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n\n // colinear segments, consider the one with left-more\n // left endpoint to be first (arbitrary?)\n return -1;\n }\n\n // is left endpoint of segment A the right-more?\n if (alx > blx) {\n if (aly < bly && aly < bry) return -1;\n if (aly > bly && aly > bry) return 1;\n\n // is the A left endpoint colinear to segment B?\n const bCmpALeft = b.comparePoint(a.leftSE.point);\n if (bCmpALeft !== 0) return bCmpALeft;\n\n // is the B right endpoint colinear to segment A?\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n\n // colinear segments, consider the one with left-more\n // left endpoint to be first (arbitrary?)\n return 1;\n }\n\n // if we get here, the two left endpoints are in the same\n // vertical plane, ie alx === blx\n\n // consider the lower left-endpoint to come first\n if (aly < bly) return -1;\n if (aly > bly) return 1;\n\n // left endpoints are identical\n // check for colinearity by using the left-more right endpoint\n\n // is the A right endpoint more left-more?\n if (arx < brx) {\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n }\n\n // is the B right endpoint more left-more?\n if (arx > brx) {\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n }\n if (arx !== brx) {\n // are these two [almost] vertical segments with opposite orientation?\n // if so, the one with the lower right endpoint comes first\n const ay = ary - aly;\n const ax = arx - alx;\n const by = bry - bly;\n const bx = brx - blx;\n if (ay > ax && by < bx) return 1;\n if (ay < ax && by > bx) return -1;\n }\n\n // we have colinear segments with matching orientation\n // consider the one with more left-more right endpoint to be first\n if (arx > brx) return 1;\n if (arx < brx) return -1;\n\n // if we get here, two two right endpoints are in the same\n // vertical plane, ie arx === brx\n\n // consider the lower right-endpoint to come first\n if (ary < bry) return -1;\n if (ary > bry) return 1;\n\n // right endpoints identical as well, so the segments are idential\n // fall back on creation order as consistent tie-breaker\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n\n // identical segment, ie a === b\n return 0;\n }\n\n /* Warning: a reference to ringWindings input will be stored,\n * and possibly will be later modified */\n constructor(leftSE, rightSE, rings, windings) {\n this.id = ++segmentId;\n this.leftSE = leftSE;\n leftSE.segment = this;\n leftSE.otherSE = rightSE;\n this.rightSE = rightSE;\n rightSE.segment = this;\n rightSE.otherSE = leftSE;\n this.rings = rings;\n this.windings = windings;\n // left unset for performance, set later in algorithm\n // this.ringOut, this.consumedBy, this.prev\n }\n static fromRing(pt1, pt2, ring) {\n let leftPt, rightPt, winding;\n\n // ordering the two points according to sweep line ordering\n const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n if (cmpPts < 0) {\n leftPt = pt1;\n rightPt = pt2;\n winding = 1;\n } else if (cmpPts > 0) {\n leftPt = pt2;\n rightPt = pt1;\n winding = -1;\n } else throw new Error(`Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`);\n const leftSE = new SweepEvent(leftPt, true);\n const rightSE = new SweepEvent(rightPt, false);\n return new Segment(leftSE, rightSE, [ring], [winding]);\n }\n\n /* When a segment is split, the rightSE is replaced with a new sweep event */\n replaceRightSE(newRightSE) {\n this.rightSE = newRightSE;\n this.rightSE.segment = this;\n this.rightSE.otherSE = this.leftSE;\n this.leftSE.otherSE = this.rightSE;\n }\n bbox() {\n const y1 = this.leftSE.point.y;\n const y2 = this.rightSE.point.y;\n return {\n ll: {\n x: this.leftSE.point.x,\n y: y1 < y2 ? y1 : y2\n },\n ur: {\n x: this.rightSE.point.x,\n y: y1 > y2 ? y1 : y2\n }\n };\n }\n\n /* A vector from the left point to the right */\n vector() {\n return {\n x: this.rightSE.point.x - this.leftSE.point.x,\n y: this.rightSE.point.y - this.leftSE.point.y\n };\n }\n isAnEndpoint(pt) {\n return pt.x === this.leftSE.point.x && pt.y === this.leftSE.point.y || pt.x === this.rightSE.point.x && pt.y === this.rightSE.point.y;\n }\n\n /* Compare this segment with a point.\n *\n * A point P is considered to be colinear to a segment if there\n * exists a distance D such that if we travel along the segment\n * from one * endpoint towards the other a distance D, we find\n * ourselves at point P.\n *\n * Return value indicates:\n *\n * 1: point lies above the segment (to the left of vertical)\n * 0: point is colinear to segment\n * -1: point lies below the segment (to the right of vertical)\n */\n comparePoint(point) {\n if (this.isAnEndpoint(point)) return 0;\n const lPt = this.leftSE.point;\n const rPt = this.rightSE.point;\n const v = this.vector();\n\n // Exactly vertical segments.\n if (lPt.x === rPt.x) {\n if (point.x === lPt.x) return 0;\n return point.x < lPt.x ? 1 : -1;\n }\n\n // Nearly vertical segments with an intersection.\n // Check to see where a point on the line with matching Y coordinate is.\n const yDist = (point.y - lPt.y) / v.y;\n const xFromYDist = lPt.x + yDist * v.x;\n if (point.x === xFromYDist) return 0;\n\n // General case.\n // Check to see where a point on the line with matching X coordinate is.\n const xDist = (point.x - lPt.x) / v.x;\n const yFromXDist = lPt.y + xDist * v.y;\n if (point.y === yFromXDist) return 0;\n return point.y < yFromXDist ? -1 : 1;\n }\n\n /**\n * Given another segment, returns the first non-trivial intersection\n * between the two segments (in terms of sweep line ordering), if it exists.\n *\n * A 'non-trivial' intersection is one that will cause one or both of the\n * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n *\n * * endpoint of segA with endpoint of segB --> trivial\n * * endpoint of segA with point along segB --> non-trivial\n * * endpoint of segB with point along segA --> non-trivial\n * * point along segA with point along segB --> non-trivial\n *\n * If no non-trivial intersection exists, return null\n * Else, return null.\n */\n getIntersection(other) {\n // If bboxes don't overlap, there can't be any intersections\n const tBbox = this.bbox();\n const oBbox = other.bbox();\n const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n if (bboxOverlap === null) return null;\n\n // We first check to see if the endpoints can be considered intersections.\n // This will 'snap' intersections to endpoints if possible, and will\n // handle cases of colinearity.\n\n const tlp = this.leftSE.point;\n const trp = this.rightSE.point;\n const olp = other.leftSE.point;\n const orp = other.rightSE.point;\n\n // does each endpoint touch the other segment?\n // note that we restrict the 'touching' definition to only allow segments\n // to touch endpoints that lie forward from where we are in the sweep line pass\n const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n\n // do left endpoints match?\n if (touchesThisLSE && touchesOtherLSE) {\n // these two cases are for colinear segments with matching left\n // endpoints, and one segment being longer than the other\n if (touchesThisRSE && !touchesOtherRSE) return trp;\n if (!touchesThisRSE && touchesOtherRSE) return orp;\n // either the two segments match exactly (two trival intersections)\n // or just on their left endpoint (one trivial intersection\n return null;\n }\n\n // does this left endpoint matches (other doesn't)\n if (touchesThisLSE) {\n // check for segments that just intersect on opposing endpoints\n if (touchesOtherRSE) {\n if (tlp.x === orp.x && tlp.y === orp.y) return null;\n }\n // t-intersection on left endpoint\n return tlp;\n }\n\n // does other left endpoint matches (this doesn't)\n if (touchesOtherLSE) {\n // check for segments that just intersect on opposing endpoints\n if (touchesThisRSE) {\n if (trp.x === olp.x && trp.y === olp.y) return null;\n }\n // t-intersection on left endpoint\n return olp;\n }\n\n // trivial intersection on right endpoints\n if (touchesThisRSE && touchesOtherRSE) return null;\n\n // t-intersections on just one right endpoint\n if (touchesThisRSE) return trp;\n if (touchesOtherRSE) return orp;\n\n // None of our endpoints intersect. Look for a general intersection between\n // infinite lines laid over the segments\n const pt = intersection$1(tlp, this.vector(), olp, other.vector());\n\n // are the segments parrallel? Note that if they were colinear with overlap,\n // they would have an endpoint intersection and that case was already handled above\n if (pt === null) return null;\n\n // is the intersection found between the lines not on the segments?\n if (!isInBbox(bboxOverlap, pt)) return null;\n\n // round the the computed point if needed\n return rounder.round(pt.x, pt.y);\n }\n\n /**\n * Split the given segment into multiple segments on the given points.\n * * Each existing segment will retain its leftSE and a new rightSE will be\n * generated for it.\n * * A new segment will be generated which will adopt the original segment's\n * rightSE, and a new leftSE will be generated for it.\n * * If there are more than two points given to split on, new segments\n * in the middle will be generated with new leftSE and rightSE's.\n * * An array of the newly generated SweepEvents will be returned.\n *\n * Warning: input array of points is modified\n */\n split(point) {\n const newEvents = [];\n const alreadyLinked = point.events !== undefined;\n const newLeftSE = new SweepEvent(point, true);\n const newRightSE = new SweepEvent(point, false);\n const oldRightSE = this.rightSE;\n this.replaceRightSE(newRightSE);\n newEvents.push(newRightSE);\n newEvents.push(newLeftSE);\n const newSeg = new Segment(newLeftSE, oldRightSE, this.rings.slice(), this.windings.slice());\n\n // when splitting a nearly vertical downward-facing segment,\n // sometimes one of the resulting new segments is vertical, in which\n // case its left and right events may need to be swapped\n if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n newSeg.swapEvents();\n }\n if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n this.swapEvents();\n }\n\n // in the point we just used to create new sweep events with was already\n // linked to other events, we need to check if either of the affected\n // segments should be consumed\n if (alreadyLinked) {\n newLeftSE.checkForConsuming();\n newRightSE.checkForConsuming();\n }\n return newEvents;\n }\n\n /* Swap which event is left and right */\n swapEvents() {\n const tmpEvt = this.rightSE;\n this.rightSE = this.leftSE;\n this.leftSE = tmpEvt;\n this.leftSE.isLeft = true;\n this.rightSE.isLeft = false;\n for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n this.windings[i] *= -1;\n }\n }\n\n /* Consume another segment. We take their rings under our wing\n * and mark them as consumed. Use for perfectly overlapping segments */\n consume(other) {\n let consumer = this;\n let consumee = other;\n while (consumer.consumedBy) consumer = consumer.consumedBy;\n while (consumee.consumedBy) consumee = consumee.consumedBy;\n const cmp = Segment.compare(consumer, consumee);\n if (cmp === 0) return; // already consumed\n // the winner of the consumption is the earlier segment\n // according to sweep line ordering\n if (cmp > 0) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n\n // make sure a segment doesn't consume it's prev\n if (consumer.prev === consumee) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n const ring = consumee.rings[i];\n const winding = consumee.windings[i];\n const index = consumer.rings.indexOf(ring);\n if (index === -1) {\n consumer.rings.push(ring);\n consumer.windings.push(winding);\n } else consumer.windings[index] += winding;\n }\n consumee.rings = null;\n consumee.windings = null;\n consumee.consumedBy = consumer;\n\n // mark sweep events consumed as to maintain ordering in sweep event queue\n consumee.leftSE.consumedBy = consumer.leftSE;\n consumee.rightSE.consumedBy = consumer.rightSE;\n }\n\n /* The first segment previous segment chain that is in the result */\n prevInResult() {\n if (this._prevInResult !== undefined) return this._prevInResult;\n if (!this.prev) this._prevInResult = null;else if (this.prev.isInResult()) this._prevInResult = this.prev;else this._prevInResult = this.prev.prevInResult();\n return this._prevInResult;\n }\n beforeState() {\n if (this._beforeState !== undefined) return this._beforeState;\n if (!this.prev) this._beforeState = {\n rings: [],\n windings: [],\n multiPolys: []\n };else {\n const seg = this.prev.consumedBy || this.prev;\n this._beforeState = seg.afterState();\n }\n return this._beforeState;\n }\n afterState() {\n if (this._afterState !== undefined) return this._afterState;\n const beforeState = this.beforeState();\n this._afterState = {\n rings: beforeState.rings.slice(0),\n windings: beforeState.windings.slice(0),\n multiPolys: []\n };\n const ringsAfter = this._afterState.rings;\n const windingsAfter = this._afterState.windings;\n const mpsAfter = this._afterState.multiPolys;\n\n // calculate ringsAfter, windingsAfter\n for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n const ring = this.rings[i];\n const winding = this.windings[i];\n const index = ringsAfter.indexOf(ring);\n if (index === -1) {\n ringsAfter.push(ring);\n windingsAfter.push(winding);\n } else windingsAfter[index] += winding;\n }\n\n // calcualte polysAfter\n const polysAfter = [];\n const polysExclude = [];\n for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n if (windingsAfter[i] === 0) continue; // non-zero rule\n const ring = ringsAfter[i];\n const poly = ring.poly;\n if (polysExclude.indexOf(poly) !== -1) continue;\n if (ring.isExterior) polysAfter.push(poly);else {\n if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n const index = polysAfter.indexOf(ring.poly);\n if (index !== -1) polysAfter.splice(index, 1);\n }\n }\n\n // calculate multiPolysAfter\n for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n const mp = polysAfter[i].multiPoly;\n if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n }\n return this._afterState;\n }\n\n /* Is this segment part of the final result? */\n isInResult() {\n // if we've been consumed, we're not in the result\n if (this.consumedBy) return false;\n if (this._isInResult !== undefined) return this._isInResult;\n const mpsBefore = this.beforeState().multiPolys;\n const mpsAfter = this.afterState().multiPolys;\n switch (operation.type) {\n case \"union\":\n {\n // UNION - included iff:\n // * On one side of us there is 0 poly interiors AND\n // * On the other side there is 1 or more.\n const noBefores = mpsBefore.length === 0;\n const noAfters = mpsAfter.length === 0;\n this._isInResult = noBefores !== noAfters;\n break;\n }\n case \"intersection\":\n {\n // INTERSECTION - included iff:\n // * on one side of us all multipolys are rep. with poly interiors AND\n // * on the other side of us, not all multipolys are repsented\n // with poly interiors\n let least;\n let most;\n if (mpsBefore.length < mpsAfter.length) {\n least = mpsBefore.length;\n most = mpsAfter.length;\n } else {\n least = mpsAfter.length;\n most = mpsBefore.length;\n }\n this._isInResult = most === operation.numMultiPolys && least < most;\n break;\n }\n case \"xor\":\n {\n // XOR - included iff:\n // * the difference between the number of multipolys represented\n // with poly interiors on our two sides is an odd number\n const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n this._isInResult = diff % 2 === 1;\n break;\n }\n case \"difference\":\n {\n // DIFFERENCE included iff:\n // * on exactly one side, we have just the subject\n const isJustSubject = mps => mps.length === 1 && mps[0].isSubject;\n this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n break;\n }\n default:\n throw new Error(`Unrecognized operation type found ${operation.type}`);\n }\n return this._isInResult;\n }\n}\n\nclass RingIn {\n constructor(geomRing, poly, isExterior) {\n if (!Array.isArray(geomRing) || geomRing.length === 0) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.poly = poly;\n this.isExterior = isExterior;\n this.segments = [];\n if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n const firstPoint = rounder.round(geomRing[0][0], geomRing[0][1]);\n this.bbox = {\n ll: {\n x: firstPoint.x,\n y: firstPoint.y\n },\n ur: {\n x: firstPoint.x,\n y: firstPoint.y\n }\n };\n let prevPoint = firstPoint;\n for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n let point = rounder.round(geomRing[i][0], geomRing[i][1]);\n // skip repeated points\n if (point.x === prevPoint.x && point.y === prevPoint.y) continue;\n this.segments.push(Segment.fromRing(prevPoint, point, this));\n if (point.x < this.bbox.ll.x) this.bbox.ll.x = point.x;\n if (point.y < this.bbox.ll.y) this.bbox.ll.y = point.y;\n if (point.x > this.bbox.ur.x) this.bbox.ur.x = point.x;\n if (point.y > this.bbox.ur.y) this.bbox.ur.y = point.y;\n prevPoint = point;\n }\n // add segment from last to first if last is not the same as first\n if (firstPoint.x !== prevPoint.x || firstPoint.y !== prevPoint.y) {\n this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n }\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n const segment = this.segments[i];\n sweepEvents.push(segment.leftSE);\n sweepEvents.push(segment.rightSE);\n }\n return sweepEvents;\n }\n}\nclass PolyIn {\n constructor(geomPoly, multiPoly) {\n if (!Array.isArray(geomPoly)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.exteriorRing = new RingIn(geomPoly[0], this, true);\n // copy by value\n this.bbox = {\n ll: {\n x: this.exteriorRing.bbox.ll.x,\n y: this.exteriorRing.bbox.ll.y\n },\n ur: {\n x: this.exteriorRing.bbox.ur.x,\n y: this.exteriorRing.bbox.ur.y\n }\n };\n this.interiorRings = [];\n for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n const ring = new RingIn(geomPoly[i], this, false);\n if (ring.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = ring.bbox.ll.x;\n if (ring.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = ring.bbox.ll.y;\n if (ring.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = ring.bbox.ur.x;\n if (ring.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = ring.bbox.ur.y;\n this.interiorRings.push(ring);\n }\n this.multiPoly = multiPoly;\n }\n getSweepEvents() {\n const sweepEvents = this.exteriorRing.getSweepEvents();\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n sweepEvents.push(ringSweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n}\nclass MultiPolyIn {\n constructor(geom, isSubject) {\n if (!Array.isArray(geom)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n try {\n // if the input looks like a polygon, convert it to a multipolygon\n if (typeof geom[0][0][0] === \"number\") geom = [geom];\n } catch (ex) {\n // The input is either malformed or has empty arrays.\n // In either case, it will be handled later on.\n }\n this.polys = [];\n this.bbox = {\n ll: {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY\n },\n ur: {\n x: Number.NEGATIVE_INFINITY,\n y: Number.NEGATIVE_INFINITY\n }\n };\n for (let i = 0, iMax = geom.length; i < iMax; i++) {\n const poly = new PolyIn(geom[i], this);\n if (poly.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = poly.bbox.ll.x;\n if (poly.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = poly.bbox.ll.y;\n if (poly.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = poly.bbox.ur.x;\n if (poly.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = poly.bbox.ur.y;\n this.polys.push(poly);\n }\n this.isSubject = isSubject;\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polySweepEvents = this.polys[i].getSweepEvents();\n for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n sweepEvents.push(polySweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n}\n\nclass RingOut {\n /* Given the segments from the sweep line pass, compute & return a series\n * of closed rings from all the segments marked to be part of the result */\n static factory(allSegments) {\n const ringsOut = [];\n for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n const segment = allSegments[i];\n if (!segment.isInResult() || segment.ringOut) continue;\n let prevEvent = null;\n let event = segment.leftSE;\n let nextEvent = segment.rightSE;\n const events = [event];\n const startingPoint = event.point;\n const intersectionLEs = [];\n\n /* Walk the chain of linked events to form a closed ring */\n while (true) {\n prevEvent = event;\n event = nextEvent;\n events.push(event);\n\n /* Is the ring complete? */\n if (event.point === startingPoint) break;\n while (true) {\n const availableLEs = event.getAvailableLinkedEvents();\n\n /* Did we hit a dead end? This shouldn't happen.\n * Indicates some earlier part of the algorithm malfunctioned. */\n if (availableLEs.length === 0) {\n const firstPt = events[0].point;\n const lastPt = events[events.length - 1].point;\n throw new Error(`Unable to complete output ring starting at [${firstPt.x},` + ` ${firstPt.y}]. Last matching segment found ends at` + ` [${lastPt.x}, ${lastPt.y}].`);\n }\n\n /* Only one way to go, so cotinue on the path */\n if (availableLEs.length === 1) {\n nextEvent = availableLEs[0].otherSE;\n break;\n }\n\n /* We must have an intersection. Check for a completed loop */\n let indexLE = null;\n for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n if (intersectionLEs[j].point === event.point) {\n indexLE = j;\n break;\n }\n }\n /* Found a completed loop. Cut that off and make a ring */\n if (indexLE !== null) {\n const intersectionLE = intersectionLEs.splice(indexLE)[0];\n const ringEvents = events.splice(intersectionLE.index);\n ringEvents.unshift(ringEvents[0].otherSE);\n ringsOut.push(new RingOut(ringEvents.reverse()));\n continue;\n }\n /* register the intersection */\n intersectionLEs.push({\n index: events.length,\n point: event.point\n });\n /* Choose the left-most option to continue the walk */\n const comparator = event.getLeftmostComparator(prevEvent);\n nextEvent = availableLEs.sort(comparator)[0].otherSE;\n break;\n }\n }\n ringsOut.push(new RingOut(events));\n }\n return ringsOut;\n }\n constructor(events) {\n this.events = events;\n for (let i = 0, iMax = events.length; i < iMax; i++) {\n events[i].segment.ringOut = this;\n }\n this.poly = null;\n }\n getGeom() {\n // Remove superfluous points (ie extra points along a straight line),\n let prevPt = this.events[0].point;\n const points = [prevPt];\n for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n const pt = this.events[i].point;\n const nextPt = this.events[i + 1].point;\n if (compareVectorAngles(pt, prevPt, nextPt) === 0) continue;\n points.push(pt);\n prevPt = pt;\n }\n\n // ring was all (within rounding error of angle calc) colinear points\n if (points.length === 1) return null;\n\n // check if the starting point is necessary\n const pt = points[0];\n const nextPt = points[1];\n if (compareVectorAngles(pt, prevPt, nextPt) === 0) points.shift();\n points.push(points[0]);\n const step = this.isExteriorRing() ? 1 : -1;\n const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n const iEnd = this.isExteriorRing() ? points.length : -1;\n const orderedPoints = [];\n for (let i = iStart; i != iEnd; i += step) orderedPoints.push([points[i].x, points[i].y]);\n return orderedPoints;\n }\n isExteriorRing() {\n if (this._isExteriorRing === undefined) {\n const enclosing = this.enclosingRing();\n this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n }\n return this._isExteriorRing;\n }\n enclosingRing() {\n if (this._enclosingRing === undefined) {\n this._enclosingRing = this._calcEnclosingRing();\n }\n return this._enclosingRing;\n }\n\n /* Returns the ring that encloses this one, if any */\n _calcEnclosingRing() {\n // start with the ealier sweep line event so that the prevSeg\n // chain doesn't lead us inside of a loop of ours\n let leftMostEvt = this.events[0];\n for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n const evt = this.events[i];\n if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n }\n let prevSeg = leftMostEvt.segment.prevInResult();\n let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n while (true) {\n // no segment found, thus no ring can enclose us\n if (!prevSeg) return null;\n\n // no segments below prev segment found, thus the ring of the prev\n // segment must loop back around and enclose us\n if (!prevPrevSeg) return prevSeg.ringOut;\n\n // if the two segments are of different rings, the ring of the prev\n // segment must either loop around us or the ring of the prev prev\n // seg, which would make us and the ring of the prev peers\n if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n if (prevPrevSeg.ringOut.enclosingRing() !== prevSeg.ringOut) {\n return prevSeg.ringOut;\n } else return prevSeg.ringOut.enclosingRing();\n }\n\n // two segments are from the same ring, so this was a penisula\n // of that ring. iterate downward, keep searching\n prevSeg = prevPrevSeg.prevInResult();\n prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n }\n }\n}\nclass PolyOut {\n constructor(exteriorRing) {\n this.exteriorRing = exteriorRing;\n exteriorRing.poly = this;\n this.interiorRings = [];\n }\n addInterior(ring) {\n this.interiorRings.push(ring);\n ring.poly = this;\n }\n getGeom() {\n const geom = [this.exteriorRing.getGeom()];\n // exterior ring was all (within rounding error of angle calc) colinear points\n if (geom[0] === null) return null;\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringGeom = this.interiorRings[i].getGeom();\n // interior ring was all (within rounding error of angle calc) colinear points\n if (ringGeom === null) continue;\n geom.push(ringGeom);\n }\n return geom;\n }\n}\nclass MultiPolyOut {\n constructor(rings) {\n this.rings = rings;\n this.polys = this._composePolys(rings);\n }\n getGeom() {\n const geom = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polyGeom = this.polys[i].getGeom();\n // exterior ring was all (within rounding error of angle calc) colinear points\n if (polyGeom === null) continue;\n geom.push(polyGeom);\n }\n return geom;\n }\n _composePolys(rings) {\n const polys = [];\n for (let i = 0, iMax = rings.length; i < iMax; i++) {\n const ring = rings[i];\n if (ring.poly) continue;\n if (ring.isExteriorRing()) polys.push(new PolyOut(ring));else {\n const enclosingRing = ring.enclosingRing();\n if (!enclosingRing.poly) polys.push(new PolyOut(enclosingRing));\n enclosingRing.poly.addInterior(ring);\n }\n }\n return polys;\n }\n}\n\n/**\n * NOTE: We must be careful not to change any segments while\n * they are in the SplayTree. AFAIK, there's no way to tell\n * the tree to rebalance itself - thus before splitting\n * a segment that's in the tree, we remove it from the tree,\n * do the split, then re-insert it. (Even though splitting a\n * segment *shouldn't* change its correct position in the\n * sweep line tree, the reality is because of rounding errors,\n * it sometimes does.)\n */\n\nclass SweepLine {\n constructor(queue) {\n let comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Segment.compare;\n this.queue = queue;\n this.tree = new SplayTree(comparator);\n this.segments = [];\n }\n process(event) {\n const segment = event.segment;\n const newEvents = [];\n\n // if we've already been consumed by another segment,\n // clean up our body parts and get out\n if (event.consumedBy) {\n if (event.isLeft) this.queue.remove(event.otherSE);else this.tree.remove(segment);\n return newEvents;\n }\n const node = event.isLeft ? this.tree.add(segment) : this.tree.find(segment);\n if (!node) throw new Error(`Unable to find segment #${segment.id} ` + `[${segment.leftSE.point.x}, ${segment.leftSE.point.y}] -> ` + `[${segment.rightSE.point.x}, ${segment.rightSE.point.y}] ` + \"in SweepLine tree.\");\n let prevNode = node;\n let nextNode = node;\n let prevSeg = undefined;\n let nextSeg = undefined;\n\n // skip consumed segments still in tree\n while (prevSeg === undefined) {\n prevNode = this.tree.prev(prevNode);\n if (prevNode === null) prevSeg = null;else if (prevNode.key.consumedBy === undefined) prevSeg = prevNode.key;\n }\n\n // skip consumed segments still in tree\n while (nextSeg === undefined) {\n nextNode = this.tree.next(nextNode);\n if (nextNode === null) nextSeg = null;else if (nextNode.key.consumedBy === undefined) nextSeg = nextNode.key;\n }\n if (event.isLeft) {\n // Check for intersections against the previous segment in the sweep line\n let prevMySplitter = null;\n if (prevSeg) {\n const prevInter = prevSeg.getIntersection(segment);\n if (prevInter !== null) {\n if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n if (!prevSeg.isAnEndpoint(prevInter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n\n // Check for intersections against the next segment in the sweep line\n let nextMySplitter = null;\n if (nextSeg) {\n const nextInter = nextSeg.getIntersection(segment);\n if (nextInter !== null) {\n if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n if (!nextSeg.isAnEndpoint(nextInter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n\n // For simplicity, even if we find more than one intersection we only\n // spilt on the 'earliest' (sweep-line style) of the intersections.\n // The other intersection will be handled in a future process().\n if (prevMySplitter !== null || nextMySplitter !== null) {\n let mySplitter = null;\n if (prevMySplitter === null) mySplitter = nextMySplitter;else if (nextMySplitter === null) mySplitter = prevMySplitter;else {\n const cmpSplitters = SweepEvent.comparePoints(prevMySplitter, nextMySplitter);\n mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n }\n\n // Rounding errors can cause changes in ordering,\n // so remove afected segments and right sweep events before splitting\n this.queue.remove(segment.rightSE);\n newEvents.push(segment.rightSE);\n const newEventsFromSplit = segment.split(mySplitter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (newEvents.length > 0) {\n // We found some intersections, so re-do the current event to\n // make sure sweep line ordering is totally consistent for later\n // use with the segment 'prev' pointers\n this.tree.remove(segment);\n newEvents.push(event);\n } else {\n // done with left event\n this.segments.push(segment);\n segment.prev = prevSeg;\n }\n } else {\n // event.isRight\n\n // since we're about to be removed from the sweep line, check for\n // intersections between our previous and next segments\n if (prevSeg && nextSeg) {\n const inter = prevSeg.getIntersection(nextSeg);\n if (inter !== null) {\n if (!prevSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (!nextSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n this.tree.remove(segment);\n }\n return newEvents;\n }\n\n /* Safely split a segment that is currently in the datastructures\n * IE - a segment other than the one that is currently being processed. */\n _splitSafely(seg, pt) {\n // Rounding errors can cause changes in ordering,\n // so remove afected segments and right sweep events before splitting\n // removeNode() doesn't work, so have re-find the seg\n // https://github.com/w8r/splay-tree/pull/5\n this.tree.remove(seg);\n const rightSE = seg.rightSE;\n this.queue.remove(rightSE);\n const newEvents = seg.split(pt);\n newEvents.push(rightSE);\n // splitting can trigger consumption\n if (seg.consumedBy === undefined) this.tree.add(seg);\n return newEvents;\n }\n}\n\n// Limits on iterative processes to prevent infinite loops - usually caused by floating-point math round-off errors.\nconst POLYGON_CLIPPING_MAX_QUEUE_SIZE = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE || 1000000;\nconst POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS || 1000000;\nclass Operation {\n run(type, geom, moreGeoms) {\n operation.type = type;\n rounder.reset();\n\n /* Convert inputs to MultiPoly objects */\n const multipolys = [new MultiPolyIn(geom, true)];\n for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n }\n operation.numMultiPolys = multipolys.length;\n\n /* BBox optimization for difference operation\n * If the bbox of a multipolygon that's part of the clipping doesn't\n * intersect the bbox of the subject at all, we can just drop that\n * multiploygon. */\n if (operation.type === \"difference\") {\n // in place removal\n const subject = multipolys[0];\n let i = 1;\n while (i < multipolys.length) {\n if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;else multipolys.splice(i, 1);\n }\n }\n\n /* BBox optimization for intersection operation\n * If we can find any pair of multipolygons whose bbox does not overlap,\n * then the result will be empty. */\n if (operation.type === \"intersection\") {\n // TODO: this is O(n^2) in number of polygons. By sorting the bboxes,\n // it could be optimized to O(n * ln(n))\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const mpA = multipolys[i];\n for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n }\n }\n }\n\n /* Put segment endpoints in a priority queue */\n const queue = new SplayTree(SweepEvent.compare);\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const sweepEvents = multipolys[i].getSweepEvents();\n for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n queue.insert(sweepEvents[j]);\n if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when putting segment endpoints in a priority queue \" + \"(queue size too big).\");\n }\n }\n }\n\n /* Pass the sweep line over those endpoints */\n const sweepLine = new SweepLine(queue);\n let prevQueueSize = queue.size;\n let node = queue.pop();\n while (node) {\n const evt = node.key;\n if (queue.size === prevQueueSize) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n const seg = evt.segment;\n throw new Error(`Unable to pop() ${evt.isLeft ? \"left\" : \"right\"} SweepEvent ` + `[${evt.point.x}, ${evt.point.y}] from segment #${seg.id} ` + `[${seg.leftSE.point.x}, ${seg.leftSE.point.y}] -> ` + `[${seg.rightSE.point.x}, ${seg.rightSE.point.y}] from queue.`);\n }\n if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(queue size too big).\");\n }\n if (sweepLine.segments.length > POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(too many sweep line segments).\");\n }\n const newEvents = sweepLine.process(evt);\n for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n const evt = newEvents[i];\n if (evt.consumedBy === undefined) queue.insert(evt);\n }\n prevQueueSize = queue.size;\n node = queue.pop();\n }\n\n // free some memory we don't need anymore\n rounder.reset();\n\n /* Collect and compile segments we're keeping into a multipolygon */\n const ringsOut = RingOut.factory(sweepLine.segments);\n const result = new MultiPolyOut(ringsOut);\n return result.getGeom();\n }\n}\n\n// singleton available by import\nconst operation = new Operation();\n\nconst union = function (geom) {\n for (var _len = arguments.length, moreGeoms = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n moreGeoms[_key - 1] = arguments[_key];\n }\n return operation.run(\"union\", geom, moreGeoms);\n};\nconst intersection = function (geom) {\n for (var _len2 = arguments.length, moreGeoms = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n moreGeoms[_key2 - 1] = arguments[_key2];\n }\n return operation.run(\"intersection\", geom, moreGeoms);\n};\nconst xor = function (geom) {\n for (var _len3 = arguments.length, moreGeoms = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n moreGeoms[_key3 - 1] = arguments[_key3];\n }\n return operation.run(\"xor\", geom, moreGeoms);\n};\nconst difference = function (subjectGeom) {\n for (var _len4 = arguments.length, clippingGeoms = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n clippingGeoms[_key4 - 1] = arguments[_key4];\n }\n return operation.run(\"difference\", subjectGeom, clippingGeoms);\n};\nvar index = {\n union: union,\n intersection: intersection,\n xor: xor,\n difference: difference\n};\n\nexport { index as default };\n","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null)\n return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null)\n continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\")\n multiFeatureIndex++;\n }\n if (geomType === \"LineString\")\n multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\")\n multiFeatureIndex++;\n if (geomType === \"Polygon\")\n geometryIndex++;\n }\n if (geomType === \"Polygon\")\n multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false)\n break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false)\n break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry)\n return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\")\n return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson)\n throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null)\n return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0)\n segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0)\n coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport polygonClipping from \"polygon-clipping\";\nimport { multiPolygon, polygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction union(features, options = {}) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least 2 geometries\");\n }\n const unioned = polygonClipping.union(geoms[0], ...geoms.slice(1));\n if (unioned.length === 0)\n return null;\n if (unioned.length === 1)\n return polygon(unioned[0], options.properties);\n else\n return multiPolygon(unioned, options.properties);\n}\nvar turf_union_default = union;\nexport {\n turf_union_default as default,\n union\n};\n//# sourceMappingURL=index.js.map","/** @returns {void} */\nexport function noop() {}\n\nexport const identity = (x) => x;\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nexport function assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n/**\n * @param {any} value\n * @returns {value is PromiseLike<any>}\n */\nexport function is_promise(value) {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === 'object' || typeof value === 'function') &&\n\t\ttypeof (/** @type {any} */ (value).then) === 'function'\n\t);\n}\n\n/** @returns {void} */\nexport function add_location(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nexport function run(fn) {\n\treturn fn();\n}\n\nexport function blank_object() {\n\treturn Object.create(null);\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\n/** @returns {boolean} */\nexport function safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\nlet src_url_equal_anchor;\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nexport function src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\tif (!src_url_equal_anchor) {\n\t\tsrc_url_equal_anchor = document.createElement('a');\n\t}\n\t// This is actually faster than doing URL(..).href\n\tsrc_url_equal_anchor.href = url;\n\treturn element_src === src_url_equal_anchor.href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element_srcset\n * @param {string | undefined | null} srcset\n * @returns {boolean}\n */\nexport function srcset_url_equal(element_srcset, srcset) {\n\tconst element_urls = split_srcset(element_srcset.srcset);\n\tconst urls = split_srcset(srcset || '');\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n\n/** @returns {boolean} */\nexport function not_equal(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\n/** @returns {boolean} */\nexport function is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\n/** @returns {void} */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\tthrow new Error(`'${name}' is not a store with a 'subscribe' method`);\n\t}\n}\n\nexport function subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback(undefined);\n\t\t}\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public.js').Readable<T>} store\n * @returns {T}\n */\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe(store, (_) => (value = _))();\n\treturn value;\n}\n\n/** @returns {void} */\nexport function component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nexport function create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;\n}\n\nexport function get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\t\t\treturn merged;\n\t\t}\n\t\treturn $$scope.dirty | lets;\n\t}\n\treturn $$scope.dirty;\n}\n\n/** @returns {void} */\nexport function update_slot_base(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tslot_changes,\n\tget_slot_context_fn\n) {\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\n/** @returns {void} */\nexport function update_slot(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tdirty,\n\tget_slot_changes_fn,\n\tget_slot_context_fn\n) {\n\tconst slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n\tupdate_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\n\n/** @returns {any[] | -1} */\nexport function get_all_dirty_from_scope($$scope) {\n\tif ($$scope.ctx.length > 32) {\n\t\tconst dirty = [];\n\t\tconst length = $$scope.ctx.length / 32;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdirty[i] = -1;\n\t\t}\n\t\treturn dirty;\n\t}\n\treturn -1;\n}\n\n/** @returns {{}} */\nexport function exclude_internal_props(props) {\n\tconst result = {};\n\tfor (const k in props) if (k[0] !== '$') result[k] = props[k];\n\treturn result;\n}\n\n/** @returns {{}} */\nexport function compute_rest_props(props, keys) {\n\tconst rest = {};\n\tkeys = new Set(keys);\n\tfor (const k in props) if (!keys.has(k) && k[0] !== '$') rest[k] = props[k];\n\treturn rest;\n}\n\n/** @returns {{}} */\nexport function compute_slots(slots) {\n\tconst result = {};\n\tfor (const key in slots) {\n\t\tresult[key] = true;\n\t}\n\treturn result;\n}\n\n/** @returns {(this: any, ...args: any[]) => void} */\nexport function once(fn) {\n\tlet ran = false;\n\treturn function (...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\t\tfn.call(this, ...args);\n\t};\n}\n\nexport function null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nexport function set_store_value(store, ret, value) {\n\tstore.set(value);\n\treturn ret;\n}\n\nexport const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\nexport function action_destroyer(action_result) {\n\treturn action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nexport function split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\nexport const contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n","import { contenteditable_truthy_values, has_prop } from './utils.js';\n\nimport { ResizeObserverSingleton } from './ResizeObserverSingleton.js';\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\n\n/**\n * @returns {void}\n */\nexport function start_hydrating() {\n\tis_hydrating = true;\n}\n\n/**\n * @returns {void}\n */\nexport function end_hydrating() {\n\tis_hydrating = false;\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {(index: number) => number} key\n * @param {number} value\n * @returns {number}\n */\nfunction upper_bound(low, high, key, value) {\n\t// Return first index of value larger than input value in the range [low, high)\n\twhile (low < high) {\n\t\tconst mid = low + ((high - low) >> 1);\n\t\tif (key(mid) <= value) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\thigh = mid;\n\t\t}\n\t}\n\treturn low;\n}\n\n/**\n * @param {NodeEx} target\n * @returns {void}\n */\nfunction init_hydrate(target) {\n\tif (target.hydrate_init) return;\n\ttarget.hydrate_init = true;\n\t// We know that all children have claim_order values since the unclaimed have been detached if target is not <head>\n\n\tlet children = /** @type {ArrayLike<NodeEx2>} */ (target.childNodes);\n\t// If target is <head>, there may be children without claim_order\n\tif (target.nodeName === 'HEAD') {\n\t\tconst my_children = [];\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst node = children[i];\n\t\t\tif (node.claim_order !== undefined) {\n\t\t\t\tmy_children.push(node);\n\t\t\t}\n\t\t}\n\t\tchildren = my_children;\n\t}\n\t/*\n\t * Reorder claimed children optimally.\n\t * We can reorder claimed children optimally by finding the longest subsequence of\n\t * nodes that are already claimed in order and only moving the rest. The longest\n\t * subsequence of nodes that are claimed in order can be found by\n\t * computing the longest increasing subsequence of .claim_order values.\n\t *\n\t * This algorithm is optimal in generating the least amount of reorder operations\n\t * possible.\n\t *\n\t * Proof:\n\t * We know that, given a set of reordering operations, the nodes that do not move\n\t * always form an increasing subsequence, since they do not move among each other\n\t * meaning that they must be already ordered among each other. Thus, the maximal\n\t * set of nodes that do not move form a longest increasing subsequence.\n\t */\n\t// Compute longest increasing subsequence\n\t// m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n\tconst m = new Int32Array(children.length + 1);\n\t// Predecessor indices + 1\n\tconst p = new Int32Array(children.length);\n\tm[0] = -1;\n\tlet longest = 0;\n\tfor (let i = 0; i < children.length; i++) {\n\t\tconst current = children[i].claim_order;\n\t\t// Find the largest subsequence length such that it ends in a value less than our current value\n\t\t// upper_bound returns first greater value, so we subtract one\n\t\t// with fast path for when we are on the current longest subsequence\n\t\tconst seq_len =\n\t\t\t(longest > 0 && children[m[longest]].claim_order <= current\n\t\t\t\t? longest + 1\n\t\t\t\t: upper_bound(1, longest, (idx) => children[m[idx]].claim_order, current)) - 1;\n\t\tp[i] = m[seq_len] + 1;\n\t\tconst new_len = seq_len + 1;\n\t\t// We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n\t\tm[new_len] = i;\n\t\tlongest = Math.max(new_len, longest);\n\t}\n\t// The longest increasing subsequence of nodes (initially reversed)\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst lis = [];\n\t// The rest of the nodes, nodes that will be moved\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst to_move = [];\n\tlet last = children.length - 1;\n\tfor (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n\t\tlis.push(children[cur - 1]);\n\t\tfor (; last >= cur; last--) {\n\t\t\tto_move.push(children[last]);\n\t\t}\n\t\tlast--;\n\t}\n\tfor (; last >= 0; last--) {\n\t\tto_move.push(children[last]);\n\t}\n\tlis.reverse();\n\t// We sort the nodes being moved to guarantee that their insertion order matches the claim order\n\tto_move.sort((a, b) => a.claim_order - b.claim_order);\n\t// Finally, we move the nodes\n\tfor (let i = 0, j = 0; i < to_move.length; i++) {\n\t\twhile (j < lis.length && to_move[i].claim_order >= lis[j].claim_order) {\n\t\t\tj++;\n\t\t}\n\t\tconst anchor = j < lis.length ? lis[j] : null;\n\t\ttarget.insertBefore(to_move[i], anchor);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @returns {void}\n */\nexport function append(target, node) {\n\ttarget.appendChild(node);\n}\n\n/**\n * @param {Node} target\n * @param {string} style_sheet_id\n * @param {string} styles\n * @returns {void}\n */\nexport function append_styles(target, style_sheet_id, styles) {\n\tconst append_styles_to = get_root_for_style(target);\n\tif (!append_styles_to.getElementById(style_sheet_id)) {\n\t\tconst style = element('style');\n\t\tstyle.id = style_sheet_id;\n\t\tstyle.textContent = styles;\n\t\tappend_stylesheet(append_styles_to, style);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {ShadowRoot | Document}\n */\nexport function get_root_for_style(node) {\n\tif (!node) return document;\n\tconst root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n\tif (root && /** @type {ShadowRoot} */ (root).host) {\n\t\treturn /** @type {ShadowRoot} */ (root);\n\t}\n\treturn node.ownerDocument;\n}\n\n/**\n * @param {Node} node\n * @returns {CSSStyleSheet}\n */\nexport function append_empty_stylesheet(node) {\n\tconst style_element = element('style');\n\t// For transitions to work without 'style-src: unsafe-inline' Content Security Policy,\n\t// these empty tags need to be allowed with a hash as a workaround until we move to the Web Animations API.\n\t// Using the hash for the empty string (for an empty tag) works in all browsers except Safari.\n\t// So as a workaround for the workaround, when we append empty style tags we set their content to /* empty */.\n\t// The hash 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=' will then work even in Safari.\n\tstyle_element.textContent = '/* empty */';\n\tappend_stylesheet(get_root_for_style(node), style_element);\n\treturn style_element.sheet;\n}\n\n/**\n * @param {ShadowRoot | Document} node\n * @param {HTMLStyleElement} style\n * @returns {CSSStyleSheet}\n */\nfunction append_stylesheet(node, style) {\n\tappend(/** @type {Document} */ (node).head || node, style);\n\treturn style.sheet;\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @returns {void}\n */\nexport function append_hydration(target, node) {\n\tif (is_hydrating) {\n\t\tinit_hydrate(target);\n\t\tif (\n\t\t\ttarget.actual_end_child === undefined ||\n\t\t\t(target.actual_end_child !== null && target.actual_end_child.parentNode !== target)\n\t\t) {\n\t\t\ttarget.actual_end_child = target.firstChild;\n\t\t}\n\t\t// Skip nodes of undefined ordering\n\t\twhile (target.actual_end_child !== null && target.actual_end_child.claim_order === undefined) {\n\t\t\ttarget.actual_end_child = target.actual_end_child.nextSibling;\n\t\t}\n\t\tif (node !== target.actual_end_child) {\n\t\t\t// We only insert if the ordering of this node should be modified or the parent node is not target\n\t\t\tif (node.claim_order !== undefined || node.parentNode !== target) {\n\t\t\t\ttarget.insertBefore(node, target.actual_end_child);\n\t\t\t}\n\t\t} else {\n\t\t\ttarget.actual_end_child = node.nextSibling;\n\t\t}\n\t} else if (node.parentNode !== target || node.nextSibling !== null) {\n\t\ttarget.appendChild(node);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @param {Node} [anchor]\n * @returns {void}\n */\nexport function insert(target, node, anchor) {\n\ttarget.insertBefore(node, anchor || null);\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @param {NodeEx} [anchor]\n * @returns {void}\n */\nexport function insert_hydration(target, node, anchor) {\n\tif (is_hydrating && !anchor) {\n\t\tappend_hydration(target, node);\n\t} else if (node.parentNode !== target || node.nextSibling != anchor) {\n\t\ttarget.insertBefore(node, anchor || null);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {void}\n */\nexport function detach(node) {\n\tif (node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function destroy_each(iterations, detaching) {\n\tfor (let i = 0; i < iterations.length; i += 1) {\n\t\tif (iterations[i]) iterations[i].d(detaching);\n\t}\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element(name) {\n\treturn document.createElement(name);\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @param {string} is\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element_is(name, is) {\n\treturn document.createElement(name, { is });\n}\n\n/**\n * @template T\n * @template {keyof T} K\n * @param {T} obj\n * @param {K[]} exclude\n * @returns {Pick<T, Exclude<keyof T, K>>}\n */\nexport function object_without_properties(obj, exclude) {\n\tconst target = /** @type {Pick<T, Exclude<keyof T, K>>} */ ({});\n\tfor (const k in obj) {\n\t\tif (\n\t\t\thas_prop(obj, k) &&\n\t\t\t// @ts-ignore\n\t\t\texclude.indexOf(k) === -1\n\t\t) {\n\t\t\t// @ts-ignore\n\t\t\ttarget[k] = obj[k];\n\t\t}\n\t}\n\treturn target;\n}\n\n/**\n * @template {keyof SVGElementTagNameMap} K\n * @param {K} name\n * @returns {SVGElement}\n */\nexport function svg_element(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n/**\n * @param {string} data\n * @returns {Text}\n */\nexport function text(data) {\n\treturn document.createTextNode(data);\n}\n\n/**\n * @returns {Text} */\nexport function space() {\n\treturn text(' ');\n}\n\n/**\n * @returns {Text} */\nexport function empty() {\n\treturn text('');\n}\n\n/**\n * @param {string} content\n * @returns {Comment}\n */\nexport function comment(content) {\n\treturn document.createComment(content);\n}\n\n/**\n * @param {EventTarget} node\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} handler\n * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]\n * @returns {() => void}\n */\nexport function listen(node, event, handler, options) {\n\tnode.addEventListener(event, handler, options);\n\treturn () => node.removeEventListener(event, handler, options);\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function prevent_default(fn) {\n\treturn function (event) {\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_immediate_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopImmediatePropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function self(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.target === this) fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function trusted(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.isTrusted) fn.call(this, event);\n\t};\n}\n\n/**\n * @param {Element} node\n * @param {string} attribute\n * @param {string} [value]\n * @returns {void}\n */\nexport function attr(node, attribute, value) {\n\tif (value == null) node.removeAttribute(attribute);\n\telse if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);\n}\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_attributes(node, attributes) {\n\t// @ts-ignore\n\tconst descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n\tfor (const key in attributes) {\n\t\tif (attributes[key] == null) {\n\t\t\tnode.removeAttribute(key);\n\t\t} else if (key === 'style') {\n\t\t\tnode.style.cssText = attributes[key];\n\t\t} else if (key === '__value') {\n\t\t\t/** @type {any} */ (node).value = node[key] = attributes[key];\n\t\t} else if (\n\t\t\tdescriptors[key] &&\n\t\t\tdescriptors[key].set &&\n\t\t\talways_set_through_set_attribute.indexOf(key) === -1\n\t\t) {\n\t\t\tnode[key] = attributes[key];\n\t\t} else {\n\t\t\tattr(node, key, attributes[key]);\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_svg_attributes(node, attributes) {\n\tfor (const key in attributes) {\n\t\tattr(node, key, attributes[key]);\n\t}\n}\n\n/**\n * @param {Record<string, unknown>} data_map\n * @returns {void}\n */\nexport function set_custom_element_data_map(node, data_map) {\n\tObject.keys(data_map).forEach((key) => {\n\t\tset_custom_element_data(node, key, data_map[key]);\n\t});\n}\n\n/**\n * @returns {void} */\nexport function set_custom_element_data(node, prop, value) {\n\tconst lower = prop.toLowerCase(); // for backwards compatibility with existing behavior we do lowercase first\n\tif (lower in node) {\n\t\tnode[lower] = typeof node[lower] === 'boolean' && value === '' ? true : value;\n\t} else if (prop in node) {\n\t\tnode[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n\t} else {\n\t\tattr(node, prop, value);\n\t}\n}\n\n/**\n * @param {string} tag\n */\nexport function set_dynamic_element_data(tag) {\n\treturn /-/.test(tag) ? set_custom_element_data_map : set_attributes;\n}\n\n/**\n * @returns {void}\n */\nexport function xlink_attr(node, attribute, value) {\n\tnode.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @returns {string}\n */\nexport function get_svelte_dataset(node) {\n\treturn node.dataset.svelteH;\n}\n\n/**\n * @returns {unknown[]} */\nexport function get_binding_group_value(group, __value, checked) {\n\tconst value = new Set();\n\tfor (let i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) value.add(group[i].__value);\n\t}\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement[]} group\n * @returns {{ p(...inputs: HTMLInputElement[]): void; r(): void; }}\n */\nexport function init_binding_group(group) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\treturn {\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\t_inputs.forEach((input) => group.push(input));\n\t\t},\n\t\t/* remove */ r() {\n\t\t\t_inputs.forEach((input) => group.splice(group.indexOf(input), 1));\n\t\t}\n\t};\n}\n\n/**\n * @param {number[]} indexes\n * @returns {{ u(new_indexes: number[]): void; p(...inputs: HTMLInputElement[]): void; r: () => void; }}\n */\nexport function init_binding_group_dynamic(group, indexes) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _group = get_binding_group(group);\n\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\n\tfunction get_binding_group(group) {\n\t\tfor (let i = 0; i < indexes.length; i++) {\n\t\t\tgroup = group[indexes[i]] = group[indexes[i]] || [];\n\t\t}\n\t\treturn group;\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction push() {\n\t\t_inputs.forEach((input) => _group.push(input));\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction remove() {\n\t\t_inputs.forEach((input) => _group.splice(_group.indexOf(input), 1));\n\t}\n\treturn {\n\t\t/* update */ u(new_indexes) {\n\t\t\tindexes = new_indexes;\n\t\t\tconst new_group = get_binding_group(group);\n\t\t\tif (new_group !== _group) {\n\t\t\t\tremove();\n\t\t\t\t_group = new_group;\n\t\t\t\tpush();\n\t\t\t}\n\t\t},\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\tpush();\n\t\t},\n\t\t/* remove */ r: remove\n\t};\n}\n\n/** @returns {number} */\nexport function to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/** @returns {any[]} */\nexport function time_ranges_to_array(ranges) {\n\tconst array = [];\n\tfor (let i = 0; i < ranges.length; i += 1) {\n\t\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\n\t}\n\treturn array;\n}\n\n/**\n * @param {Element} element\n * @returns {ChildNode[]}\n */\nexport function children(element) {\n\treturn Array.from(element.childNodes);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {void}\n */\nfunction init_claim_info(nodes) {\n\tif (nodes.claim_info === undefined) {\n\t\tnodes.claim_info = { last_index: 0, total_claimed: 0 };\n\t}\n}\n\n/**\n * @template {ChildNodeEx} R\n * @param {ChildNodeArray} nodes\n * @param {(node: ChildNodeEx) => node is R} predicate\n * @param {(node: ChildNodeEx) => ChildNodeEx | undefined} process_node\n * @param {() => R} create_node\n * @param {boolean} dont_update_last_index\n * @returns {R}\n */\nfunction claim_node(nodes, predicate, process_node, create_node, dont_update_last_index = false) {\n\t// Try to find nodes in an order such that we lengthen the longest increasing subsequence\n\tinit_claim_info(nodes);\n\tconst result_node = (() => {\n\t\t// We first try to find an element after the previous one\n\t\tfor (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// Otherwise, we try to find one before\n\t\t// We iterate in reverse so that we don't go too far back\n\t\tfor (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t} else if (replacement === undefined) {\n\t\t\t\t\t// Since we spliced before the last_index, we decrease it\n\t\t\t\t\tnodes.claim_info.last_index--;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// If we can't find any matching node, we create a new one\n\t\treturn create_node();\n\t})();\n\tresult_node.claim_order = nodes.claim_info.total_claimed;\n\tnodes.claim_info.total_claimed += 1;\n\treturn result_node;\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @param {(name: string) => Element | SVGElement} create_element\n * @returns {Element | SVGElement}\n */\nfunction claim_element_base(nodes, name, attributes, create_element) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Element | SVGElement} */\n\t\t(node) => node.nodeName === name,\n\t\t/** @param {Element} node */\n\t\t(node) => {\n\t\t\tconst remove = [];\n\t\t\tfor (let j = 0; j < node.attributes.length; j++) {\n\t\t\t\tconst attribute = node.attributes[j];\n\t\t\t\tif (!attributes[attribute.name]) {\n\t\t\t\t\tremove.push(attribute.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tremove.forEach((v) => node.removeAttribute(v));\n\t\t\treturn undefined;\n\t\t},\n\t\t() => create_element(name)\n\t);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_svg_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, svg_element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Text}\n */\nexport function claim_text(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Text} */\n\t\t(node) => node.nodeType === 3,\n\t\t/** @param {Text} node */\n\t\t(node) => {\n\t\t\tconst data_str = '' + data;\n\t\t\tif (node.data.startsWith(data_str)) {\n\t\t\t\tif (node.data.length !== data_str.length) {\n\t\t\t\t\treturn node.splitText(data_str.length);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.data = data_str;\n\t\t\t}\n\t\t},\n\t\t() => text(data),\n\t\ttrue // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n\t);\n}\n\n/**\n * @returns {Text} */\nexport function claim_space(nodes) {\n\treturn claim_text(nodes, ' ');\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Comment}\n */\nexport function claim_comment(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Comment} */\n\t\t(node) => node.nodeType === 8,\n\t\t/** @param {Comment} node */\n\t\t(node) => {\n\t\t\tnode.data = '' + data;\n\t\t\treturn undefined;\n\t\t},\n\t\t() => comment(data),\n\t\ttrue\n\t);\n}\n\nfunction get_comment_idx(nodes, text, start) {\n\tfor (let i = start; i < nodes.length; i += 1) {\n\t\tconst node = nodes[i];\n\t\tif (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n * @param {boolean} is_svg\n * @returns {HtmlTagHydration}\n */\nexport function claim_html_tag(nodes, is_svg) {\n\t// find html opening tag\n\tconst start_index = get_comment_idx(nodes, 'HTML_TAG_START', 0);\n\tconst end_index = get_comment_idx(nodes, 'HTML_TAG_END', start_index + 1);\n\tif (start_index === -1 || end_index === -1) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\n\tinit_claim_info(nodes);\n\tconst html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n\tdetach(html_tag_nodes[0]);\n\tdetach(html_tag_nodes[html_tag_nodes.length - 1]);\n\tconst claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n\tif (claimed_nodes.length === 0) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\tfor (const n of claimed_nodes) {\n\t\tn.claim_order = nodes.claim_info.total_claimed;\n\t\tnodes.claim_info.total_claimed += 1;\n\t}\n\treturn new HtmlTagHydration(is_svg, claimed_nodes);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data(text, data) {\n\tdata = '' + data;\n\tif (text.data === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data_contenteditable(text, data) {\n\tdata = '' + data;\n\tif (text.wholeText === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @param {string} attr_value\n * @returns {void}\n */\nexport function set_data_maybe_contenteditable(text, data, attr_value) {\n\tif (~contenteditable_truthy_values.indexOf(attr_value)) {\n\t\tset_data_contenteditable(text, data);\n\t} else {\n\t\tset_data(text, data);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_input_value(input, value) {\n\tinput.value = value == null ? '' : value;\n}\n\n/**\n * @returns {void} */\nexport function set_input_type(input, type) {\n\ttry {\n\t\tinput.type = type;\n\t} catch (e) {\n\t\t// do nothing\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_style(node, key, value, important) {\n\tif (value == null) {\n\t\tnode.style.removeProperty(key);\n\t} else {\n\t\tnode.style.setProperty(key, value, important ? 'important' : '');\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_option(select, value, mounting) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\tif (option.__value === value) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_options(select, value) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\toption.selected = ~value.indexOf(option.__value);\n\t}\n}\n\nexport function select_value(select) {\n\tconst selected_option = select.querySelector(':checked');\n\treturn selected_option && selected_option.__value;\n}\n\nexport function select_multiple_value(select) {\n\treturn [].map.call(select.querySelectorAll(':checked'), (option) => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\n\n/**\n * @type {boolean} */\nlet crossorigin;\n\n/**\n * @returns {boolean} */\nexport function is_crossorigin() {\n\tif (crossorigin === undefined) {\n\t\tcrossorigin = false;\n\t\ttry {\n\t\t\tif (typeof window !== 'undefined' && window.parent) {\n\t\t\t\tvoid window.parent.document;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tcrossorigin = true;\n\t\t}\n\t}\n\treturn crossorigin;\n}\n\n/**\n * @param {HTMLElement} node\n * @param {() => void} fn\n * @returns {() => void}\n */\nexport function add_iframe_resize_listener(node, fn) {\n\tconst computed_style = getComputedStyle(node);\n\tif (computed_style.position === 'static') {\n\t\tnode.style.position = 'relative';\n\t}\n\tconst iframe = element('iframe');\n\tiframe.setAttribute(\n\t\t'style',\n\t\t'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n\t\t\t'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;'\n\t);\n\tiframe.setAttribute('aria-hidden', 'true');\n\tiframe.tabIndex = -1;\n\tconst crossorigin = is_crossorigin();\n\n\t/**\n\t * @type {() => void}\n\t */\n\tlet unsubscribe;\n\tif (crossorigin) {\n\t\tiframe.src = \"data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>\";\n\t\tunsubscribe = listen(\n\t\t\twindow,\n\t\t\t'message',\n\t\t\t/** @param {MessageEvent} event */ (event) => {\n\t\t\t\tif (event.source === iframe.contentWindow) fn();\n\t\t\t}\n\t\t);\n\t} else {\n\t\tiframe.src = 'about:blank';\n\t\tiframe.onload = () => {\n\t\t\tunsubscribe = listen(iframe.contentWindow, 'resize', fn);\n\t\t\t// make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n\t\t\t// see https://github.com/sveltejs/svelte/issues/4233\n\t\t\tfn();\n\t\t};\n\t}\n\tappend(node, iframe);\n\treturn () => {\n\t\tif (crossorigin) {\n\t\t\tunsubscribe();\n\t\t} else if (unsubscribe && iframe.contentWindow) {\n\t\t\tunsubscribe();\n\t\t}\n\t\tdetach(iframe);\n\t};\n}\nexport const resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'content-box'\n});\nexport const resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'border-box'\n});\nexport const resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton(\n\t{ box: 'device-pixel-content-box' }\n);\nexport { ResizeObserverSingleton };\n\n/**\n * @returns {void} */\nexport function toggle_class(element, name, toggle) {\n\t// The `!!` is required because an `undefined` flag means flipping the current state.\n\telement.classList.toggle(name, !!toggle);\n}\n\n/**\n * @template T\n * @param {string} type\n * @param {T} [detail]\n * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]\n * @returns {CustomEvent<T>}\n */\nexport function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * @param {string} selector\n * @param {HTMLElement} parent\n * @returns {ChildNodeArray}\n */\nexport function query_selector_all(selector, parent = document.body) {\n\treturn Array.from(parent.querySelectorAll(selector));\n}\n\n/**\n * @param {string} nodeId\n * @param {HTMLElement} head\n * @returns {any[]}\n */\nexport function head_selector(nodeId, head) {\n\tconst result = [];\n\tlet started = 0;\n\tfor (const node of head.childNodes) {\n\t\tif (node.nodeType === 8 /* comment node */) {\n\t\t\tconst comment = node.textContent.trim();\n\t\t\tif (comment === `HEAD_${nodeId}_END`) {\n\t\t\t\tstarted -= 1;\n\t\t\t\tresult.push(node);\n\t\t\t} else if (comment === `HEAD_${nodeId}_START`) {\n\t\t\t\tstarted += 1;\n\t\t\t\tresult.push(node);\n\t\t\t}\n\t\t} else if (started > 0) {\n\t\t\tresult.push(node);\n\t\t}\n\t}\n\treturn result;\n}\n/** */\nexport class HtmlTag {\n\t/**\n\t * @private\n\t * @default false\n\t */\n\tis_svg = false;\n\t/** parent for creating node */\n\te = undefined;\n\t/** html tag nodes */\n\tn = undefined;\n\t/** target */\n\tt = undefined;\n\t/** anchor */\n\ta = undefined;\n\tconstructor(is_svg = false) {\n\t\tthis.is_svg = is_svg;\n\t\tthis.e = this.n = null;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tthis.h(html);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @param {HTMLElement | SVGElement} target\n\t * @param {HTMLElement | SVGElement} anchor\n\t * @returns {void}\n\t */\n\tm(html, target, anchor = null) {\n\t\tif (!this.e) {\n\t\t\tif (this.is_svg)\n\t\t\t\tthis.e = svg_element(/** @type {keyof SVGElementTagNameMap} */ (target.nodeName));\n\t\t\t/** #7364 target for <template> may be provided as #document-fragment(11) */ else\n\t\t\t\tthis.e = element(\n\t\t\t\t\t/** @type {keyof HTMLElementTagNameMap} */ (\n\t\t\t\t\t\ttarget.nodeType === 11 ? 'TEMPLATE' : target.nodeName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\tthis.t =\n\t\t\t\ttarget.tagName !== 'TEMPLATE'\n\t\t\t\t\t? target\n\t\t\t\t\t: /** @type {HTMLTemplateElement} */ (target).content;\n\t\t\tthis.c(html);\n\t\t}\n\t\tthis.i(anchor);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\th(html) {\n\t\tthis.e.innerHTML = html;\n\t\tthis.n = Array.from(\n\t\t\tthis.e.nodeName === 'TEMPLATE' ? this.e.content.childNodes : this.e.childNodes\n\t\t);\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert(this.t, this.n[i], anchor);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tp(html) {\n\t\tthis.d();\n\t\tthis.h(html);\n\t\tthis.i(this.a);\n\t}\n\n\t/**\n\t * @returns {void} */\n\td() {\n\t\tthis.n.forEach(detach);\n\t}\n}\n\nexport class HtmlTagHydration extends HtmlTag {\n\t/** @type {Element[]} hydration claimed nodes */\n\tl = undefined;\n\n\tconstructor(is_svg = false, claimed_nodes) {\n\t\tsuper(is_svg);\n\t\tthis.e = this.n = null;\n\t\tthis.l = claimed_nodes;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tif (this.l) {\n\t\t\tthis.n = this.l;\n\t\t} else {\n\t\t\tsuper.c(html);\n\t\t}\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert_hydration(this.t, this.n[i], anchor);\n\t\t}\n\t}\n}\n\n/**\n * @param {NamedNodeMap} attributes\n * @returns {{}}\n */\nexport function attribute_to_object(attributes) {\n\tconst result = {};\n\tfor (const attribute of attributes) {\n\t\tresult[attribute.name] = attribute.value;\n\t}\n\treturn result;\n}\n\nconst escaped = {\n\t'\"': '&quot;',\n\t'&': '&amp;',\n\t'<': '&lt;'\n};\n\nconst regex_attribute_characters_to_escape = /[\"&<]/g;\n\n/**\n * Note that the attribute itself should be surrounded in double quotes\n * @param {any} attribute\n */\nfunction escape_attribute(attribute) {\n\treturn String(attribute).replace(regex_attribute_characters_to_escape, (match) => escaped[match]);\n}\n\n/**\n * @param {Record<string, string>} attributes\n */\nexport function stringify_spread(attributes) {\n\tlet str = ' ';\n\tfor (const key in attributes) {\n\t\tif (attributes[key] != null) {\n\t\t\tstr += `${key}=\"${escape_attribute(attributes[key])}\" `;\n\t\t}\n\t}\n\n\treturn str;\n}\n\n/**\n * @param {HTMLElement} element\n * @returns {{}}\n */\nexport function get_custom_elements_slots(element) {\n\tconst result = {};\n\telement.childNodes.forEach(\n\t\t/** @param {Element} node */ (node) => {\n\t\t\tresult[node.slot || 'default'] = true;\n\t\t}\n\t);\n\treturn result;\n}\n\nexport function construct_svelte_component(component, props) {\n\treturn new component(props);\n}\n\n/**\n * @typedef {Node & {\n * \tclaim_order?: number;\n * \thydrate_init?: true;\n * \tactual_end_child?: NodeEx;\n * \tchildNodes: NodeListOf<NodeEx>;\n * }} NodeEx\n */\n\n/** @typedef {ChildNode & NodeEx} ChildNodeEx */\n\n/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */\n\n/**\n * @typedef {ChildNodeEx[] & {\n * \tclaim_info?: {\n * \t\tlast_index: number;\n * \t\ttotal_claimed: number;\n * \t};\n * }} ChildNodeArray\n */\n","import { custom_event } from './dom.js';\n\nexport let current_component;\n\n/** @returns {void} */\nexport function set_current_component(component) {\n\tcurrent_component = component;\n}\n\nexport function get_current_component() {\n\tif (!current_component) throw new Error('Function called outside component initialization');\n\treturn current_component;\n}\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#beforeupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tget_current_component().$$.before_update.push(fn);\n}\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs/svelte#onmount\n * @template T\n * @param {() => import('./private.js').NotFunction<T> | Promise<import('./private.js').NotFunction<T>> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tget_current_component().$$.on_mount.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#afterupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tget_current_component().$$.after_update.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs/svelte#ondestroy\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tget_current_component().$$.on_destroy.push(fn);\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: never; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * https://svelte.dev/docs/svelte#createeventdispatcher\n * @template {Record<string, any>} [EventMap=any]\n * @returns {import('./public.js').EventDispatcher<EventMap>}\n */\nexport function createEventDispatcher() {\n\tconst component = get_current_component();\n\treturn (type, detail, { cancelable = false } = {}) => {\n\t\tconst callbacks = component.$$.callbacks[type];\n\t\tif (callbacks) {\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = custom_event(/** @type {string} */ (type), detail, { cancelable });\n\t\t\tcallbacks.slice().forEach((fn) => {\n\t\t\t\tfn.call(component, event);\n\t\t\t});\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#setcontext\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tget_current_component().$$.context.set(key, context);\n\treturn context;\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#getcontext\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\treturn get_current_component().$$.context.get(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs/svelte#getallcontexts\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\treturn get_current_component().$$.context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#hascontext\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\treturn get_current_component().$$.context.has(key);\n}\n\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\n/**\n * @param component\n * @param event\n * @returns {void}\n */\nexport function bubble(component, event) {\n\tconst callbacks = component.$$.callbacks[event.type];\n\tif (callbacks) {\n\t\t// @ts-ignore\n\t\tcallbacks.slice().forEach((fn) => fn.call(this, event));\n\t}\n}\n","import { run_all } from './utils.js';\nimport { current_component, set_current_component } from './lifecycle.js';\n\nexport const dirty_components = [];\nexport const intros = { enabled: false };\nexport const binding_callbacks = [];\n\nlet render_callbacks = [];\n\nconst flush_callbacks = [];\n\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\n\nlet update_scheduled = false;\n\n/** @returns {void} */\nexport function schedule_update() {\n\tif (!update_scheduled) {\n\t\tupdate_scheduled = true;\n\t\tresolved_promise.then(flush);\n\t}\n}\n\n/** @returns {Promise<void>} */\nexport function tick() {\n\tschedule_update();\n\treturn resolved_promise;\n}\n\n/** @returns {void} */\nexport function add_render_callback(fn) {\n\trender_callbacks.push(fn);\n}\n\n/** @returns {void} */\nexport function add_flush_callback(fn) {\n\tflush_callbacks.push(fn);\n}\n\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\n\nlet flushidx = 0; // Do *not* move this inside the flush() function\n\n/** @returns {void} */\nexport function flush() {\n\t// Do not reenter flush while dirty components are updated, as this can\n\t// result in an infinite loop. Instead, let the inner flush handle it.\n\t// Reentrancy is ok afterwards for bindings etc.\n\tif (flushidx !== 0) {\n\t\treturn;\n\t}\n\tconst saved_component = current_component;\n\tdo {\n\t\t// first, call beforeUpdate functions\n\t\t// and update components\n\t\ttry {\n\t\t\twhile (flushidx < dirty_components.length) {\n\t\t\t\tconst component = dirty_components[flushidx];\n\t\t\t\tflushidx++;\n\t\t\t\tset_current_component(component);\n\t\t\t\tupdate(component.$$);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// reset dirty state to not end up in a deadlocked state and then rethrow\n\t\t\tdirty_components.length = 0;\n\t\t\tflushidx = 0;\n\t\t\tthrow e;\n\t\t}\n\t\tset_current_component(null);\n\t\tdirty_components.length = 0;\n\t\tflushidx = 0;\n\t\twhile (binding_callbacks.length) binding_callbacks.pop()();\n\t\t// then, once components are updated, call\n\t\t// afterUpdate functions. This may cause\n\t\t// subsequent updates...\n\t\tfor (let i = 0; i < render_callbacks.length; i += 1) {\n\t\t\tconst callback = render_callbacks[i];\n\t\t\tif (!seen_callbacks.has(callback)) {\n\t\t\t\t// ...so guard against infinite loops\n\t\t\t\tseen_callbacks.add(callback);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\trender_callbacks.length = 0;\n\t} while (dirty_components.length);\n\twhile (flush_callbacks.length) {\n\t\tflush_callbacks.pop()();\n\t}\n\tupdate_scheduled = false;\n\tseen_callbacks.clear();\n\tset_current_component(saved_component);\n}\n\n/** @returns {void} */\nfunction update($$) {\n\tif ($$.fragment !== null) {\n\t\t$$.update();\n\t\trun_all($$.before_update);\n\t\tconst dirty = $$.dirty;\n\t\t$$.dirty = [-1];\n\t\t$$.fragment && $$.fragment.p($$.ctx, dirty);\n\t\t$$.after_update.forEach(add_render_callback);\n\t}\n}\n\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function flush_render_callbacks(fns) {\n\tconst filtered = [];\n\tconst targets = [];\n\trender_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));\n\ttargets.forEach((c) => c());\n\trender_callbacks = filtered;\n}\n","import { identity as linear, is_function, noop, run_all } from './utils.js';\nimport { now } from './environment.js';\nimport { loop } from './loop.js';\nimport { create_rule, delete_rule } from './style_manager.js';\nimport { custom_event } from './dom.js';\nimport { add_render_callback } from './scheduler.js';\n\n/**\n * @type {Promise<void> | null}\n */\nlet promise;\n\n/**\n * @returns {Promise<void>}\n */\nfunction wait() {\n\tif (!promise) {\n\t\tpromise = Promise.resolve();\n\t\tpromise.then(() => {\n\t\t\tpromise = null;\n\t\t});\n\t}\n\treturn promise;\n}\n\n/**\n * @param {Element} node\n * @param {INTRO | OUTRO | boolean} direction\n * @param {'start' | 'end'} kind\n * @returns {void}\n */\nfunction dispatch(node, direction, kind) {\n\tnode.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\n\nconst outroing = new Set();\n\n/**\n * @type {Outro}\n */\nlet outros;\n\n/**\n * @returns {void} */\nexport function group_outros() {\n\toutros = {\n\t\tr: 0,\n\t\tc: [],\n\t\tp: outros // parent group\n\t};\n}\n\n/**\n * @returns {void} */\nexport function check_outros() {\n\tif (!outros.r) {\n\t\trun_all(outros.c);\n\t}\n\toutros = outros.p;\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} [local]\n * @returns {void}\n */\nexport function transition_in(block, local) {\n\tif (block && block.i) {\n\t\toutroing.delete(block);\n\t\tblock.i(local);\n\t}\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} local\n * @param {0 | 1} [detach]\n * @param {() => void} [callback]\n * @returns {void}\n */\nexport function transition_out(block, local, detach, callback) {\n\tif (block && block.o) {\n\t\tif (outroing.has(block)) return;\n\t\toutroing.add(block);\n\t\toutros.c.push(() => {\n\t\t\toutroing.delete(block);\n\t\t\tif (callback) {\n\t\t\t\tif (detach) block.d(1);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t});\n\t\tblock.o(local);\n\t} else if (callback) {\n\t\tcallback();\n\t}\n}\n\n/**\n * @type {import('../transition/public.js').TransitionConfig}\n */\nconst null_transition = { duration: 0 };\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ start(): void; invalidate(): void; end(): void; }}\n */\nexport function create_in_transition(node, fn, params) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'in' };\n\tlet config = fn(node, params, options);\n\tlet running = false;\n\tlet animation_name;\n\tlet task;\n\tlet uid = 0;\n\n\t/**\n\t * @returns {void} */\n\tfunction cleanup() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\t\tif (css) animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n\t\ttick(0, 1);\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tif (task) task.abort();\n\t\trunning = true;\n\t\tadd_render_callback(() => dispatch(node, true, 'start'));\n\t\ttask = loop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(1, 0);\n\t\t\t\t\tdispatch(node, true, 'end');\n\t\t\t\t\tcleanup();\n\t\t\t\t\treturn (running = false);\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\tlet started = false;\n\treturn {\n\t\tstart() {\n\t\t\tif (started) return;\n\t\t\tstarted = true;\n\t\t\tdelete_rule(node);\n\t\t\tif (is_function(config)) {\n\t\t\t\tconfig = config(options);\n\t\t\t\twait().then(go);\n\t\t\t} else {\n\t\t\t\tgo();\n\t\t\t}\n\t\t},\n\t\tinvalidate() {\n\t\t\tstarted = false;\n\t\t},\n\t\tend() {\n\t\t\tif (running) {\n\t\t\t\tcleanup();\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ end(reset: any): void; }}\n */\nexport function create_out_transition(node, fn, params) {\n\t/** @type {TransitionOptions} */\n\tconst options = { direction: 'out' };\n\tlet config = fn(node, params, options);\n\tlet running = true;\n\tlet animation_name;\n\tconst group = outros;\n\tgroup.r += 1;\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\tif (css) animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tadd_render_callback(() => dispatch(node, false, 'start'));\n\n\t\tif ('inert' in node) {\n\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\tnode.inert = true;\n\t\t}\n\n\t\tloop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(0, 1);\n\t\t\t\t\tdispatch(node, false, 'end');\n\t\t\t\t\tif (!--group.r) {\n\t\t\t\t\t\t// this will result in `end()` being called,\n\t\t\t\t\t\t// so we don't need to clean up here\n\t\t\t\t\t\trun_all(group.c);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(1 - t, t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\n\tif (is_function(config)) {\n\t\twait().then(() => {\n\t\t\t// @ts-ignore\n\t\t\tconfig = config(options);\n\t\t\tgo();\n\t\t});\n\t} else {\n\t\tgo();\n\t}\n\n\treturn {\n\t\tend(reset) {\n\t\t\tif (reset && 'inert' in node) {\n\t\t\t\tnode.inert = original_inert_value;\n\t\t\t}\n\t\t\tif (reset && config.tick) {\n\t\t\t\tconfig.tick(1, 0);\n\t\t\t}\n\t\t\tif (running) {\n\t\t\t\tif (animation_name) delete_rule(node, animation_name);\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @param {boolean} intro\n * @returns {{ run(b: 0 | 1): void; end(): void; }}\n */\nexport function create_bidirectional_transition(node, fn, params, intro) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'both' };\n\tlet config = fn(node, params, options);\n\tlet t = intro ? 0 : 1;\n\n\t/**\n\t * @type {Program | null} */\n\tlet running_program = null;\n\n\t/**\n\t * @type {PendingProgram | null} */\n\tlet pending_program = null;\n\tlet animation_name = null;\n\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction clear_animation() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @param {PendingProgram} program\n\t * @param {number} duration\n\t * @returns {Program}\n\t */\n\tfunction init(program, duration) {\n\t\tconst d = /** @type {Program['d']} */ (program.b - t);\n\t\tduration *= Math.abs(d);\n\t\treturn {\n\t\t\ta: t,\n\t\t\tb: program.b,\n\t\t\td,\n\t\t\tduration,\n\t\t\tstart: program.start,\n\t\t\tend: program.start + duration,\n\t\t\tgroup: program.group\n\t\t};\n\t}\n\n\t/**\n\t * @param {INTRO | OUTRO} b\n\t * @returns {void}\n\t */\n\tfunction go(b) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\t/**\n\t\t * @type {PendingProgram} */\n\t\tconst program = {\n\t\t\tstart: now() + delay,\n\t\t\tb\n\t\t};\n\n\t\tif (!b) {\n\t\t\t// @ts-ignore todo: improve typings\n\t\t\tprogram.group = outros;\n\t\t\toutros.r += 1;\n\t\t}\n\n\t\tif ('inert' in node) {\n\t\t\tif (b) {\n\t\t\t\tif (original_inert_value !== undefined) {\n\t\t\t\t\t// aborted/reversed outro — restore previous inert value\n\t\t\t\t\tnode.inert = original_inert_value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\t\tnode.inert = true;\n\t\t\t}\n\t\t}\n\n\t\tif (running_program || pending_program) {\n\t\t\tpending_program = program;\n\t\t} else {\n\t\t\t// if this is an intro, and there's a delay, we need to do\n\t\t\t// an initial tick and/or apply CSS animation immediately\n\t\t\tif (css) {\n\t\t\t\tclear_animation();\n\t\t\t\tanimation_name = create_rule(node, t, b, duration, delay, easing, css);\n\t\t\t}\n\t\t\tif (b) tick(0, 1);\n\t\t\trunning_program = init(program, duration);\n\t\t\tadd_render_callback(() => dispatch(node, b, 'start'));\n\t\t\tloop((now) => {\n\t\t\t\tif (pending_program && now > pending_program.start) {\n\t\t\t\t\trunning_program = init(pending_program, duration);\n\t\t\t\t\tpending_program = null;\n\t\t\t\t\tdispatch(node, running_program.b, 'start');\n\t\t\t\t\tif (css) {\n\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\tanimation_name = create_rule(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\trunning_program.b,\n\t\t\t\t\t\t\trunning_program.duration,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\teasing,\n\t\t\t\t\t\t\tconfig.css\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (running_program) {\n\t\t\t\t\tif (now >= running_program.end) {\n\t\t\t\t\t\ttick((t = running_program.b), 1 - t);\n\t\t\t\t\t\tdispatch(node, running_program.b, 'end');\n\t\t\t\t\t\tif (!pending_program) {\n\t\t\t\t\t\t\t// we're done\n\t\t\t\t\t\t\tif (running_program.b) {\n\t\t\t\t\t\t\t\t// intro — we can tidy up immediately\n\t\t\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// outro — needs to be coordinated\n\t\t\t\t\t\t\t\tif (!--running_program.group.r) run_all(running_program.group.c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trunning_program = null;\n\t\t\t\t\t} else if (now >= running_program.start) {\n\t\t\t\t\t\tconst p = now - running_program.start;\n\t\t\t\t\t\tt = running_program.a + running_program.d * easing(p / running_program.duration);\n\t\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!(running_program || pending_program);\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trun(b) {\n\t\t\tif (is_function(config)) {\n\t\t\t\twait().then(() => {\n\t\t\t\t\tconst opts = { direction: b ? 'in' : 'out' };\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconfig = config(opts);\n\t\t\t\t\tgo(b);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tgo(b);\n\t\t\t}\n\t\t},\n\t\tend() {\n\t\t\tclear_animation();\n\t\t\trunning_program = pending_program = null;\n\t\t}\n\t};\n}\n\n/** @typedef {1} INTRO */\n/** @typedef {0} OUTRO */\n/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */\n/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */\n\n/**\n * @typedef {Object} Outro\n * @property {number} r\n * @property {Function[]} c\n * @property {Object} p\n */\n\n/**\n * @typedef {Object} PendingProgram\n * @property {number} start\n * @property {INTRO|OUTRO} b\n * @property {Outro} [group]\n */\n\n/**\n * @typedef {Object} Program\n * @property {number} a\n * @property {INTRO|OUTRO} b\n * @property {1|-1} d\n * @property {number} duration\n * @property {number} start\n * @property {number} end\n * @property {Outro} [group]\n */\n","import {\n\tadd_render_callback,\n\tflush,\n\tflush_render_callbacks,\n\tschedule_update,\n\tdirty_components\n} from './scheduler.js';\nimport { current_component, set_current_component } from './lifecycle.js';\nimport { blank_object, is_empty, is_function, run, run_all, noop } from './utils.js';\nimport {\n\tchildren,\n\tdetach,\n\tstart_hydrating,\n\tend_hydrating,\n\tget_custom_elements_slots,\n\tinsert,\n\telement,\n\tattr\n} from './dom.js';\nimport { transition_in } from './transitions.js';\n\n/** @returns {void} */\nexport function bind(component, name, callback) {\n\tconst index = component.$$.props[name];\n\tif (index !== undefined) {\n\t\tcomponent.$$.bound[index] = callback;\n\t\tcallback(component.$$.ctx[index]);\n\t}\n}\n\n/** @returns {void} */\nexport function create_component(block) {\n\tblock && block.c();\n}\n\n/** @returns {void} */\nexport function claim_component(block, parent_nodes) {\n\tblock && block.l(parent_nodes);\n}\n\n/** @returns {void} */\nexport function mount_component(component, target, anchor) {\n\tconst { fragment, after_update } = component.$$;\n\tfragment && fragment.m(target, anchor);\n\t// onMount happens before the initial afterUpdate\n\tadd_render_callback(() => {\n\t\tconst new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n\t\t// if the component was destroyed immediately\n\t\t// it will update the `$$.on_destroy` reference to `null`.\n\t\t// the destructured on_destroy may still reference to the old array\n\t\tif (component.$$.on_destroy) {\n\t\t\tcomponent.$$.on_destroy.push(...new_on_destroy);\n\t\t} else {\n\t\t\t// Edge case - component was destroyed immediately,\n\t\t\t// most likely as a result of a binding initialising\n\t\t\trun_all(new_on_destroy);\n\t\t}\n\t\tcomponent.$$.on_mount = [];\n\t});\n\tafter_update.forEach(add_render_callback);\n}\n\n/** @returns {void} */\nexport function destroy_component(component, detaching) {\n\tconst $$ = component.$$;\n\tif ($$.fragment !== null) {\n\t\tflush_render_callbacks($$.after_update);\n\t\trun_all($$.on_destroy);\n\t\t$$.fragment && $$.fragment.d(detaching);\n\t\t// TODO null out other refs, including component.$$ (but need to\n\t\t// preserve final state?)\n\t\t$$.on_destroy = $$.fragment = null;\n\t\t$$.ctx = [];\n\t}\n}\n\n/** @returns {void} */\nfunction make_dirty(component, i) {\n\tif (component.$$.dirty[0] === -1) {\n\t\tdirty_components.push(component);\n\t\tschedule_update();\n\t\tcomponent.$$.dirty.fill(0);\n\t}\n\tcomponent.$$.dirty[(i / 31) | 0] |= 1 << i % 31;\n}\n\n// TODO: Document the other params\n/**\n * @param {SvelteComponent} component\n * @param {import('./public.js').ComponentConstructorOptions} options\n *\n * @param {import('./utils.js')['not_equal']} not_equal Used to compare props and state values.\n * @param {(target: Element | ShadowRoot) => void} [append_styles] Function that appends styles to the DOM when the component is first initialised.\n * This will be the `add_css` function from the compiled component.\n *\n * @returns {void}\n */\nexport function init(\n\tcomponent,\n\toptions,\n\tinstance,\n\tcreate_fragment,\n\tnot_equal,\n\tprops,\n\tappend_styles = null,\n\tdirty = [-1]\n) {\n\tconst parent_component = current_component;\n\tset_current_component(component);\n\t/** @type {import('./private.js').T$$} */\n\tconst $$ = (component.$$ = {\n\t\tfragment: null,\n\t\tctx: [],\n\t\t// state\n\t\tprops,\n\t\tupdate: noop,\n\t\tnot_equal,\n\t\tbound: blank_object(),\n\t\t// lifecycle\n\t\ton_mount: [],\n\t\ton_destroy: [],\n\t\ton_disconnect: [],\n\t\tbefore_update: [],\n\t\tafter_update: [],\n\t\tcontext: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n\t\t// everything else\n\t\tcallbacks: blank_object(),\n\t\tdirty,\n\t\tskip_bound: false,\n\t\troot: options.target || parent_component.$$.root\n\t});\n\tappend_styles && append_styles($$.root);\n\tlet ready = false;\n\t$$.ctx = instance\n\t\t? instance(component, options.props || {}, (i, ret, ...rest) => {\n\t\t\t\tconst value = rest.length ? rest[0] : ret;\n\t\t\t\tif ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {\n\t\t\t\t\tif (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);\n\t\t\t\t\tif (ready) make_dirty(component, i);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t })\n\t\t: [];\n\t$$.update();\n\tready = true;\n\trun_all($$.before_update);\n\t// `false` as a special case of no DOM component\n\t$$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n\tif (options.target) {\n\t\tif (options.hydrate) {\n\t\t\tstart_hydrating();\n\t\t\t// TODO: what is the correct type here?\n\t\t\t// @ts-expect-error\n\t\t\tconst nodes = children(options.target);\n\t\t\t$$.fragment && $$.fragment.l(nodes);\n\t\t\tnodes.forEach(detach);\n\t\t} else {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t$$.fragment && $$.fragment.c();\n\t\t}\n\t\tif (options.intro) transition_in(component.$$.fragment);\n\t\tmount_component(component, options.target, options.anchor);\n\t\tend_hydrating();\n\t\tflush();\n\t}\n\tset_current_component(parent_component);\n}\n\nexport let SvelteElement;\n\nif (typeof HTMLElement === 'function') {\n\tSvelteElement = class extends HTMLElement {\n\t\t/** The Svelte component constructor */\n\t\t$$ctor;\n\t\t/** Slots */\n\t\t$$s;\n\t\t/** The Svelte component instance */\n\t\t$$c;\n\t\t/** Whether or not the custom element is connected */\n\t\t$$cn = false;\n\t\t/** Component props data */\n\t\t$$d = {};\n\t\t/** `true` if currently in the process of reflecting component props back to attributes */\n\t\t$$r = false;\n\t\t/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */\n\t\t$$p_d = {};\n\t\t/** @type {Record<string, Function[]>} Event listeners */\n\t\t$$l = {};\n\t\t/** @type {Map<Function, Function>} Event listener unsubscribe functions */\n\t\t$$l_u = new Map();\n\n\t\tconstructor($$componentCtor, $$slots, use_shadow_dom) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\t\t\tif (use_shadow_dom) {\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t}\n\t\t}\n\n\t\taddEventListener(type, listener, options) {\n\t\t\t// We can't determine upfront if the event is a custom event or not, so we have to\n\t\t\t// listen to both. If someone uses a custom event with the same name as a regular\n\t\t\t// browser event, this fires twice - we can't avoid that.\n\t\t\tthis.$$l[type] = this.$$l[type] || [];\n\t\t\tthis.$$l[type].push(listener);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t}\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t}\n\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$l_u.get(listener);\n\t\t\t\tif (unsub) {\n\t\t\t\t\tunsub();\n\t\t\t\t\tthis.$$l_u.delete(listener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tthis.$$cn = true;\n\t\t\tif (!this.$$c) {\n\t\t\t\t// We wait one tick to let possible child slot elements be created/mounted\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (!this.$$cn || this.$$c) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfunction create_slot(name) {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tlet node;\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\tc: function create() {\n\t\t\t\t\t\t\t\tnode = element('slot');\n\t\t\t\t\t\t\t\tif (name !== 'default') {\n\t\t\t\t\t\t\t\t\tattr(node, 'name', name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @param {HTMLElement} target\n\t\t\t\t\t\t\t * @param {HTMLElement} [anchor]\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tm: function mount(target, anchor) {\n\t\t\t\t\t\t\t\tinsert(target, node, anchor);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\td: function destroy(detaching) {\n\t\t\t\t\t\t\t\tif (detaching) {\n\t\t\t\t\t\t\t\t\tdetach(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst $$slots = {};\n\t\t\t\tconst existing_slots = get_custom_elements_slots(this);\n\t\t\t\tfor (const name of this.$$s) {\n\t\t\t\t\tif (name in existing_slots) {\n\t\t\t\t\t\t$$slots[name] = [create_slot(name)];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const attribute of this.attributes) {\n\t\t\t\t\t// this.$$data takes precedence over this.attributes\n\t\t\t\t\tconst name = this.$$g_p(attribute.name);\n\t\t\t\t\tif (!(name in this.$$d)) {\n\t\t\t\t\t\tthis.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Port over props that were set programmatically before ce was initialized\n\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\tif (!(key in this.$$d) && this[key] !== undefined) {\n\t\t\t\t\t\tthis.$$d[key] = this[key]; // don't transform, these were set through JavaScript\n\t\t\t\t\t\tdelete this[key]; // remove the property that shadows the getter/setter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$c = new this.$$ctor({\n\t\t\t\t\ttarget: this.shadowRoot || this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...this.$$d,\n\t\t\t\t\t\t$$slots,\n\t\t\t\t\t\t$$scope: {\n\t\t\t\t\t\t\tctx: []\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Reflect component props as attributes\n\t\t\t\tconst reflect_attributes = () => {\n\t\t\t\t\tthis.$$r = true;\n\t\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\t\tthis.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];\n\t\t\t\t\t\tif (this.$$p_d[key].reflect) {\n\t\t\t\t\t\t\tconst attribute_value = get_custom_element_value(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tthis.$$d[key],\n\t\t\t\t\t\t\t\tthis.$$p_d,\n\t\t\t\t\t\t\t\t'toAttribute'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (attribute_value == null) {\n\t\t\t\t\t\t\t\tthis.removeAttribute(this.$$p_d[key].attribute || key);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setAttribute(this.$$p_d[key].attribute || key, attribute_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.$$r = false;\n\t\t\t\t};\n\t\t\t\tthis.$$c.$$.after_update.push(reflect_attributes);\n\t\t\t\treflect_attributes(); // once initially because after_update is added too late for first render\n\n\t\t\t\tfor (const type in this.$$l) {\n\t\t\t\t\tfor (const listener of this.$$l[type]) {\n\t\t\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$l = {};\n\t\t\t}\n\t\t}\n\n\t\t// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte\n\t\t// and setting attributes through setAttribute etc, this is helpful\n\t\tattributeChangedCallback(attr, _oldValue, newValue) {\n\t\t\tif (this.$$r) return;\n\t\t\tattr = this.$$g_p(attr);\n\t\t\tthis.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');\n\t\t\tthis.$$c?.$set({ [attr]: this.$$d[attr] });\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.$$cn = false;\n\t\t\t// In a microtask, because this could be a move within the DOM\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tif (!this.$$cn && this.$$c) {\n\t\t\t\t\tthis.$$c.$destroy();\n\t\t\t\t\tthis.$$c = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t$$g_p(attribute_name) {\n\t\t\treturn (\n\t\t\t\tObject.keys(this.$$p_d).find(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tthis.$$p_d[key].attribute === attribute_name ||\n\t\t\t\t\t\t(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)\n\t\t\t\t) || attribute_name\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * @param {string} prop\n * @param {any} value\n * @param {Record<string, CustomElementPropDefinition>} props_definition\n * @param {'toAttribute' | 'toProp'} [transform]\n */\nfunction get_custom_element_value(prop, value, props_definition, transform) {\n\tconst type = props_definition[prop]?.type;\n\tvalue = type === 'Boolean' && typeof value !== 'boolean' ? value != null : value;\n\tif (!transform || !props_definition[prop]) {\n\t\treturn value;\n\t} else if (transform === 'toAttribute') {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value == null ? null : JSON.stringify(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value ? '' : null;\n\t\t\tcase 'Number':\n\t\t\t\treturn value == null ? null : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value && JSON.parse(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value; // conversion already handled above\n\t\t\tcase 'Number':\n\t\t\t\treturn value != null ? +value : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * @internal\n *\n * Turn a Svelte component into a custom element.\n * @param {import('./public.js').ComponentType} Component A Svelte component constructor\n * @param {Record<string, CustomElementPropDefinition>} props_definition The props to observe\n * @param {string[]} slots The slots to create\n * @param {string[]} accessors Other accessors besides the ones for props the component has\n * @param {boolean} use_shadow_dom Whether to use shadow DOM\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\taccessors,\n\tuse_shadow_dom,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, use_shadow_dom);\n\t\t\tthis.$$p_d = props_definition;\n\t\t}\n\t\tstatic get observedAttributes() {\n\t\t\treturn Object.keys(props_definition).map((key) =>\n\t\t\t\t(props_definition[key].attribute || key).toLowerCase()\n\t\t\t);\n\t\t}\n\t};\n\tObject.keys(props_definition).forEach((prop) => {\n\t\tObject.defineProperty(Class.prototype, prop, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tvalue = get_custom_element_value(prop, value, props_definition);\n\t\t\t\tthis.$$d[prop] = value;\n\t\t\t\tthis.$$c?.$set({ [prop]: value });\n\t\t\t}\n\t\t});\n\t});\n\taccessors.forEach((accessor) => {\n\t\tObject.defineProperty(Class.prototype, accessor, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c?.[accessor];\n\t\t\t}\n\t\t});\n\t});\n\tif (extend) {\n\t\t// @ts-expect-error - assigning here is fine\n\t\tClass = extend(Class);\n\t}\n\tComponent.element = /** @type {any} */ (Class);\n\treturn Class;\n}\n\n/**\n * Base class for Svelte components. Used when dev=false.\n *\n * @template {Record<string, any>} [Props=any]\n * @template {Record<string, any>} [Events=any]\n */\nexport class SvelteComponent {\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$ = undefined;\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$set = undefined;\n\n\t/** @returns {void} */\n\t$destroy() {\n\t\tdestroy_component(this, 1);\n\t\tthis.$destroy = noop;\n\t}\n\n\t/**\n\t * @template {Extract<keyof Events, string>} K\n\t * @param {K} type\n\t * @param {((e: Events[K]) => void) | null | undefined} callback\n\t * @returns {() => void}\n\t */\n\t$on(type, callback) {\n\t\tif (!is_function(callback)) {\n\t\t\treturn noop;\n\t\t}\n\t\tconst callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n\t\tcallbacks.push(callback);\n\t\treturn () => {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index !== -1) callbacks.splice(index, 1);\n\t\t};\n\t}\n\n\t/**\n\t * @param {Partial<Props>} props\n\t * @returns {void}\n\t */\n\t$set(props) {\n\t\tif (this.$$set && !is_empty(props)) {\n\t\t\tthis.$$.skip_bound = true;\n\t\t\tthis.$$set(props);\n\t\t\tthis.$$.skip_bound = false;\n\t\t}\n\t}\n}\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n *\n * https://svelte.dev/docs/svelte-compiler#svelte-version\n * @type {string}\n */\nexport const VERSION = '4.2.18';\nexport const PUBLIC_VERSION = '4';\n","import { PUBLIC_VERSION } from '../../../shared/version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n","<script lang=\"ts\">\n export let displayIn: \"list\" | \"leaflet\" | \"maplibre\";\n</script>\n\n<svg\n width={displayIn === \"list\" ? 20 : undefined}\n viewBox=\"0 0 70 85\"\n fill=\"none\"\n class:in-map={displayIn !== \"list\"}\n class:list-icon={displayIn === \"list\"}\n>\n <path\n stroke-width=\"4\"\n d=\"M 5,33.103579 C 5,17.607779 18.457,5 35,5 C 51.543,5 65,17.607779 65,33.103579 C 65,56.388679 40.4668,76.048179 36.6112,79.137779 C 36.3714,79.329879 36.2116,79.457979 36.1427,79.518879 C 35.8203,79.800879 35.4102,79.942779 35,79.942779 C 34.5899,79.942779 34.1797,79.800879 33.8575,79.518879 C 33.7886,79.457979 33.6289,79.330079 33.3893,79.138079 C 29.5346,76.049279 5,56.389379 5,33.103579 Z M 35.0001,49.386379 C 43.1917,49.386379 49.8323,42.646079 49.8323,34.331379 C 49.8323,26.016779 43.1917,19.276479 35.0001,19.276479 C 26.8085,19.276479 20.1679,26.016779 20.1679,34.331379 C 20.1679,42.646079 26.8085,49.386379 35.0001,49.386379 Z\"\n />\n</svg>\n\n<style>\n svg {\n display: block;\n fill: #6b7c93;\n stroke: #6b7c93;\n }\n\n .list-icon {\n grid-row: 1/3;\n align-self: center;\n margin: 8px;\n }\n\n .in-map {\n height: 30px;\n }\n\n :global(.maplibregl-canvas-container .marker-selected) {\n z-index: 1;\n }\n\n :global(.maplibregl-canvas-container) svg path,\n :global(.leaflet-map-pane) svg path {\n fill: #3170fe;\n stroke: #3170fe;\n }\n\n :global(.marker-selected) svg path {\n fill: #98b7ff;\n stroke: #3170fe;\n }\n\n :global(.marker-reverse) svg path {\n fill: silver;\n stroke: gray;\n }\n\n :global(.marker-interactive) {\n cursor: pointer !important;\n }\n\n /* :global(.marker-fuzzy) svg path {\n fill: silver;\n stroke: gray;\n }\n\n :global(.marker-fuzzy.marker-selected) svg path {\n fill: #ddd;\n stroke: silver;\n } */\n\n :global(.maptiler-gc-popup > .maplibregl-popup-content) {\n padding: 2px 8px;\n }\n</style>\n","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nvar turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { bbox } from \"@turf/bbox\";\nimport { point } from \"@turf/helpers\";\nfunction center(geojson, options = {}) {\n const ext = bbox(geojson);\n const x = (ext[0] + ext[2]) / 2;\n const y = (ext[1] + ext[3]) / 2;\n return point([x, y], options.properties, options);\n}\nvar turf_center_default = center;\nexport {\n center,\n turf_center_default as default\n};\n//# sourceMappingURL=index.js.map","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).jsts=e()}(this,(function(){\"use strict\";function t(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function e(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function n(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}function r(t){return r=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},r(t)}function s(t,e){return s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},s(t,e)}function a(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function o(t,e,n){return o=a()?Reflect.construct:function(t,e,n){var i=[null];i.push.apply(i,e);var r=new(Function.bind.apply(t,i));return n&&s(r,n.prototype),r},o.apply(null,arguments)}function u(t){var e=\"function\"==typeof Map?new Map:void 0;return u=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf(\"[native code]\")))return t;var n;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,i)}function i(){return o(t,arguments,r(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),s(i,t)},u(t)}function l(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function h(t,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return l(t)}function c(t){var e=a();return function(){var n,i=r(t);if(e){var s=r(this).constructor;n=Reflect.construct(i,arguments,s)}else n=i.apply(this,arguments);return h(this,n)}}function f(t,e,n){return f=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=r(t)););return t}(t,e);if(i){var s=Object.getOwnPropertyDescriptor(i,e);return s.get?s.get.call(n):s.value}},f(t,e,n||t)}function v(t){return function(t){if(Array.isArray(t))return y(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||g(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function g(t,e){if(t){if(\"string\"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function d(t,e){var n=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!n){if(Array.isArray(t)||(n=g(t))||e&&t&&\"number\"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,a=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){o=!0,s=t},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw s}}}}var _=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getEndCapStyle\",value:function(){return this._endCapStyle}},{key:\"isSingleSided\",value:function(){return this._isSingleSided}},{key:\"setQuadrantSegments\",value:function(t){this._quadrantSegments=t,0===this._quadrantSegments&&(this._joinStyle=e.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=e.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),t<=0&&(this._quadrantSegments=1),this._joinStyle!==e.JOIN_ROUND&&(this._quadrantSegments=e.DEFAULT_QUADRANT_SEGMENTS)}},{key:\"getJoinStyle\",value:function(){return this._joinStyle}},{key:\"setJoinStyle\",value:function(t){this._joinStyle=t}},{key:\"setSimplifyFactor\",value:function(t){this._simplifyFactor=t<0?0:t}},{key:\"getSimplifyFactor\",value:function(){return this._simplifyFactor}},{key:\"getQuadrantSegments\",value:function(){return this._quadrantSegments}},{key:\"setEndCapStyle\",value:function(t){this._endCapStyle=t}},{key:\"getMitreLimit\",value:function(){return this._mitreLimit}},{key:\"setMitreLimit\",value:function(t){this._mitreLimit=t}},{key:\"setSingleSided\",value:function(t){this._isSingleSided=t}}],[{key:\"constructor_\",value:function(){if(this._quadrantSegments=e.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=e.CAP_ROUND,this._joinStyle=e.JOIN_ROUND,this._mitreLimit=e.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=e.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setQuadrantSegments(t)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(i)}else if(4===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3];this.setQuadrantSegments(r),this.setEndCapStyle(s),this.setJoinStyle(a),this.setMitreLimit(o)}}},{key:\"bufferDistanceError\",value:function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)}}]),e}();_.CAP_ROUND=1,_.CAP_FLAT=2,_.CAP_SQUARE=3,_.JOIN_ROUND=1,_.JOIN_MITRE=2,_.JOIN_BEVEL=3,_.DEFAULT_QUADRANT_SEGMENTS=8,_.DEFAULT_MITRE_LIMIT=5,_.DEFAULT_SIMPLIFY_FACTOR=.01;var p=function(e){i(s,e);var r=c(s);function s(e){var n;return t(this,s),(n=r.call(this,e)).name=Object.keys({Exception:s})[0],n}return n(s,[{key:\"toString\",value:function(){return this.message}}]),s}(u(Error)),m=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({IllegalArgumentException:r})[0],i}return r}(p),k=function(){function e(){t(this,e)}return n(e,[{key:\"filter\",value:function(t){}}]),e}();function x(){}function I(){}function E(){}var N,T,S,L,C,R,w,O,b=function(){function e(){t(this,e)}return n(e,null,[{key:\"equalsWithTolerance\",value:function(t,e,n){return Math.abs(t-e)<=n}}]),e}(),M=function(){function e(n,i){t(this,e),this.low=i||0,this.high=n||0}return n(e,null,[{key:\"toBinaryString\",value:function(t){var e,n=\"\";for(e=2147483648;e>0;e>>>=1)n+=(t.high&e)===e?\"1\":\"0\";for(e=2147483648;e>0;e>>>=1)n+=(t.low&e)===e?\"1\":\"0\";return n}}]),e}();function A(){}function P(){}A.NaN=NaN,A.isNaN=function(t){return Number.isNaN(t)},A.isInfinite=function(t){return!Number.isFinite(t)},A.MAX_VALUE=Number.MAX_VALUE,A.POSITIVE_INFINITY=Number.POSITIVE_INFINITY,A.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY,\"function\"==typeof Float64Array&&\"function\"==typeof Int32Array?(R=2146435072,w=new Float64Array(1),O=new Int32Array(w.buffer),A.doubleToLongBits=function(t){w[0]=t;var e=0|O[0],n=0|O[1];return(n&R)===R&&0!=(1048575&n)&&0!==e&&(e=0,n=2146959360),new M(n,e)},A.longBitsToDouble=function(t){return O[0]=t.low,O[1]=t.high,w[0]}):(N=1023,T=Math.log2,S=Math.floor,L=Math.pow,C=function(){for(var t=53;t>0;t--){var e=L(2,t)-1;if(S(T(e))+1===t)return e}return 0}(),A.doubleToLongBits=function(t){var e,n,i,r,s,a,o,u,l;if(t<0||1/t===Number.NEGATIVE_INFINITY?(a=1<<31,t=-t):a=0,0===t)return new M(u=a,l=0);if(t===1/0)return new M(u=2146435072|a,l=0);if(t!=t)return new M(u=2146959360,l=0);if(r=0,l=0,(e=S(t))>1)if(e<=C)(r=S(T(e)))<=20?(l=0,u=e<<20-r&1048575):(l=e%(n=L(2,i=r-20))<<32-i,u=e/n&1048575);else for(i=e,l=0;0!==(i=S(n=i/2));)r++,l>>>=1,l|=(1&u)<<31,u>>>=1,n!==i&&(u|=524288);if(o=r+N,s=0===e,e=t-e,r<52&&0!==e)for(i=0;;){if((n=2*e)>=1?(e=n-1,s?(o--,s=!1):(i<<=1,i|=1,r++)):(e=n,s?0==--o&&(r++,s=!1):(i<<=1,r++)),20===r)u|=i,i=0;else if(52===r){l|=i;break}if(1===n){r<20?u|=i<<20-r:r<52&&(l|=i<<52-r);break}}return u|=o<<20,new M(u|=a,l)},A.longBitsToDouble=function(t){var e,n,i,r,s=t.high,a=t.low,o=s&1<<31?-1:1;for(i=((2146435072&s)>>20)-N,r=0,n=1<<19,e=1;e<=20;e++)s&n&&(r+=L(2,-e)),n>>>=1;for(n=1<<31,e=21;e<=52;e++)a&n&&(r+=L(2,-e)),n>>>=1;if(-1023===i){if(0===r)return 0*o;i=-1022}else{if(1024===i)return 0===r?o/0:NaN;r+=1}return o*r*L(2,i)});var D=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({RuntimeException:r})[0],i}return r}(p),F=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,null,[{key:\"constructor_\",value:function(){if(0===arguments.length)D.constructor_.call(this);else if(1===arguments.length){var t=arguments[0];D.constructor_.call(this,t)}}}]),s}(D),G=function(){function e(){t(this,e)}return n(e,null,[{key:\"shouldNeverReachHere\",value:function(){if(0===arguments.length)e.shouldNeverReachHere(null);else if(1===arguments.length){var t=arguments[0];throw new F(\"Should never reach here\"+(null!==t?\": \"+t:\"\"))}}},{key:\"isTrue\",value:function(){if(1===arguments.length){var t=arguments[0];e.isTrue(t,null)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];if(!n)throw null===i?new F:new F(i)}}},{key:\"equals\",value:function(){if(2===arguments.length){var t=arguments[0],n=arguments[1];e.equals(t,n,null)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2];if(!r.equals(i))throw new F(\"Expected \"+i+\" but encountered \"+r+(null!==s?\": \"+s:\"\"))}}}]),e}(),q=new ArrayBuffer(8),Y=new Float64Array(q),z=new Int32Array(q),X=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getM\",value:function(){return A.NaN}},{key:\"setOrdinate\",value:function(t,n){switch(t){case e.X:this.x=n;break;case e.Y:this.y=n;break;case e.Z:this.setZ(n);break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"equals2D\",value:function(){if(1===arguments.length){var t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!b.equalsWithTolerance(this.x,e.x,n)&&!!b.equalsWithTolerance(this.y,e.y,n)}}},{key:\"setM\",value:function(t){throw new m(\"Invalid ordinate index: \"+e.M)}},{key:\"getZ\",value:function(){return this.z}},{key:\"getOrdinate\",value:function(t){switch(t){case e.X:return this.x;case e.Y:return this.y;case e.Z:return this.getZ()}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"equals3D\",value:function(t){return this.x===t.x&&this.y===t.y&&(this.getZ()===t.getZ()||A.isNaN(this.getZ())&&A.isNaN(t.getZ()))}},{key:\"equals\",value:function(t){return t instanceof e&&this.equals2D(t)}},{key:\"equalInZ\",value:function(t,e){return b.equalsWithTolerance(this.getZ(),t.getZ(),e)}},{key:\"setX\",value:function(t){this.x=t}},{key:\"compareTo\",value:function(t){var e=t;return this.x<e.x?-1:this.x>e.x?1:this.y<e.y?-1:this.y>e.y?1:0}},{key:\"getX\",value:function(){return this.x}},{key:\"setZ\",value:function(t){this.z=t}},{key:\"clone\",value:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return G.shouldNeverReachHere(\"this shouldn't happen because this class is Cloneable\"),null;throw t}}},{key:\"copy\",value:function(){return new e(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.getZ()+\")\"}},{key:\"distance3D\",value:function(t){var e=this.x-t.x,n=this.y-t.y,i=this.getZ()-t.getZ();return Math.sqrt(e*e+n*n+i*i)}},{key:\"getY\",value:function(){return this.y}},{key:\"setY\",value:function(t){this.y=t}},{key:\"distance\",value:function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)}},{key:\"hashCode\",value:function(){var t=17;return t=37*(t=37*t+e.hashCode(this.x))+e.hashCode(this.y)}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ()}},{key:\"interfaces_\",get:function(){return[x,I,E]}}],[{key:\"constructor_\",value:function(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)e.constructor_.call(this,0,0);else if(1===arguments.length){var t=arguments[0];e.constructor_.call(this,t.x,t.y,t.getZ())}else if(2===arguments.length){var n=arguments[0],i=arguments[1];e.constructor_.call(this,n,i,e.NULL_ORDINATE)}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this.x=r,this.y=s,this.z=a}}},{key:\"hashCode\",value:function(t){return Y[0]=t,z[0]^z[1]}}]),e}(),B=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"compare\",value:function(t,n){var i=e.compare(t.x,n.x);if(0!==i)return i;var r=e.compare(t.y,n.y);return 0!==r?r:this._dimensionsToTest<=2?0:e.compare(t.getZ(),n.getZ())}},{key:\"interfaces_\",get:function(){return[P]}}],[{key:\"constructor_\",value:function(){if(this._dimensionsToTest=2,0===arguments.length)e.constructor_.call(this,2);else if(1===arguments.length){var t=arguments[0];if(2!==t&&3!==t)throw new m(\"only 2 or 3 dimensions may be specified\");this._dimensionsToTest=t}}},{key:\"compare\",value:function(t,e){return t<e?-1:t>e?1:A.isNaN(t)?A.isNaN(e)?0:-1:A.isNaN(e)?1:0}}]),e}();X.DimensionalComparator=B,X.NULL_ORDINATE=A.NaN,X.X=0,X.Y=1,X.Z=2,X.M=3;var U=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getArea\",value:function(){return this.getWidth()*this.getHeight()}},{key:\"equals\",value:function(t){if(!(t instanceof e))return!1;var n=t;return this.isNull()?n.isNull():this._maxx===n.getMaxX()&&this._maxy===n.getMaxY()&&this._minx===n.getMinX()&&this._miny===n.getMinY()}},{key:\"intersection\",value:function(t){if(this.isNull()||t.isNull()||!this.intersects(t))return new e;var n=this._minx>t._minx?this._minx:t._minx,i=this._miny>t._miny?this._miny:t._miny;return new e(n,this._maxx<t._maxx?this._maxx:t._maxx,i,this._maxy<t._maxy?this._maxy:t._maxy)}},{key:\"isNull\",value:function(){return this._maxx<this._minx}},{key:\"getMaxX\",value:function(){return this._maxx}},{key:\"covers\",value:function(){if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];return this.covers(t.x,t.y)}if(arguments[0]instanceof e){var n=arguments[0];return!this.isNull()&&!n.isNull()&&(n.getMinX()>=this._minx&&n.getMaxX()<=this._maxx&&n.getMinY()>=this._miny&&n.getMaxY()<=this._maxy)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return!this.isNull()&&(i>=this._minx&&i<=this._maxx&&r>=this._miny&&r<=this._maxy)}}},{key:\"intersects\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}if(arguments[0]instanceof X){var n=arguments[0];return this.intersects(n.x,n.y)}}else if(2===arguments.length){if(arguments[0]instanceof X&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1];if(this.isNull())return!1;var s=i.x<r.x?i.x:r.x;if(s>this._maxx)return!1;var a=i.x>r.x?i.x:r.x;if(a<this._minx)return!1;var o=i.y<r.y?i.y:r.y;if(o>this._maxy)return!1;var u=i.y>r.y?i.y:r.y;return!(u<this._miny)}if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var l=arguments[0],h=arguments[1];return!this.isNull()&&!(l>this._maxx||l<this._minx||h>this._maxy||h<this._miny)}}}},{key:\"getMinY\",value:function(){return this._miny}},{key:\"getDiameter\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return Math.sqrt(t*t+e*e)}},{key:\"getMinX\",value:function(){return this._minx}},{key:\"expandToInclude\",value:function(){if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];this.expandToInclude(t.x,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];if(n.isNull())return null;this.isNull()?(this._minx=n.getMinX(),this._maxx=n.getMaxX(),this._miny=n.getMinY(),this._maxy=n.getMaxY()):(n._minx<this._minx&&(this._minx=n._minx),n._maxx>this._maxx&&(this._maxx=n._maxx),n._miny<this._miny&&(this._miny=n._miny),n._maxy>this._maxy&&(this._maxy=n._maxy))}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.isNull()?(this._minx=i,this._maxx=i,this._miny=r,this._maxy=r):(i<this._minx&&(this._minx=i),i>this._maxx&&(this._maxx=i),r<this._miny&&(this._miny=r),r>this._maxy&&(this._maxy=r))}}},{key:\"minExtent\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t<e?t:e}},{key:\"getWidth\",value:function(){return this.isNull()?0:this._maxx-this._minx}},{key:\"compareTo\",value:function(t){var e=t;return this.isNull()?e.isNull()?0:-1:e.isNull()?1:this._minx<e._minx?-1:this._minx>e._minx?1:this._miny<e._miny?-1:this._miny>e._miny?1:this._maxx<e._maxx?-1:this._maxx>e._maxx?1:this._maxy<e._maxy?-1:this._maxy>e._maxy?1:0}},{key:\"translate\",value:function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)}},{key:\"copy\",value:function(){return new e(this)}},{key:\"toString\",value:function(){return\"Env[\"+this._minx+\" : \"+this._maxx+\", \"+this._miny+\" : \"+this._maxy+\"]\"}},{key:\"setToNull\",value:function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1}},{key:\"disjoint\",value:function(t){return!(!this.isNull()&&!t.isNull())||(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}},{key:\"getHeight\",value:function(){return this.isNull()?0:this._maxy-this._miny}},{key:\"maxExtent\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e}},{key:\"expandBy\",value:function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}}},{key:\"contains\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof X){var n=arguments[0];return this.covers(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return this.covers(i,r)}}},{key:\"centre\",value:function(){return this.isNull()?null:new X((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)}},{key:\"init\",value:function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];this._minx=n._minx,this._maxx=n._maxx,this._miny=n._miny,this._maxy=n._maxy}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];s<a?(this._minx=s,this._maxx=a):(this._minx=a,this._maxx=s),o<u?(this._miny=o,this._maxy=u):(this._miny=u,this._maxy=o)}}},{key:\"getMaxY\",value:function(){return this._maxy}},{key:\"distance\",value:function(t){if(this.intersects(t))return 0;var e=0;this._maxx<t._minx?e=t._minx-this._maxx:this._minx>t._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxy<t._miny?n=t._miny-this._maxy:this._miny>t._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)}},{key:\"hashCode\",value:function(){var t=17;return t=37*(t=37*(t=37*(t=37*t+X.hashCode(this._minx))+X.hashCode(this._maxx))+X.hashCode(this._miny))+X.hashCode(this._maxy)}},{key:\"interfaces_\",get:function(){return[x,E]}}],[{key:\"constructor_\",value:function(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];this.init(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];this.init(s,a,o,u)}}},{key:\"intersects\",value:function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.x<e.x?t.x:e.x)&&n.x<=(t.x>e.x?t.x:e.x)&&n.y>=(t.y<e.y?t.y:e.y)&&n.y<=(t.y>e.y?t.y:e.y)}if(4===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2],a=arguments[3],o=Math.min(s.x,a.x),u=Math.max(s.x,a.x),l=Math.min(i.x,r.x),h=Math.max(i.x,r.x);return!(l>u)&&(!(h<o)&&(o=Math.min(s.y,a.y),u=Math.max(s.y,a.y),l=Math.min(i.y,r.y),h=Math.max(i.y,r.y),!(l>u)&&!(h<o)))}}}]),e}(),V=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"isGeometryCollection\",value:function(){return this.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION}},{key:\"getFactory\",value:function(){return this._factory}},{key:\"getGeometryN\",value:function(t){return this}},{key:\"getArea\",value:function(){return 0}},{key:\"isRectangle\",value:function(){return!1}},{key:\"equalsExact\",value:function(t){return this===t||this.equalsExact(t,0)}},{key:\"geometryChanged\",value:function(){this.apply(e.geometryChangedFilter)}},{key:\"geometryChangedAction\",value:function(){this._envelope=null}},{key:\"equalsNorm\",value:function(t){return null!==t&&this.norm().equalsExact(t.norm())}},{key:\"getLength\",value:function(){return 0}},{key:\"getNumGeometries\",value:function(){return 1}},{key:\"compareTo\",value:function(){var t;if(1===arguments.length){var e=arguments[0];return t=e,this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return t=n,this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(n,i)}}},{key:\"getUserData\",value:function(){return this._userData}},{key:\"getSRID\",value:function(){return this._SRID}},{key:\"getEnvelope\",value:function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())}},{key:\"checkNotGeometryCollection\",value:function(t){if(t.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION)throw new m(\"This method does not support GeometryCollection arguments\")}},{key:\"equal\",value:function(t,e,n){return 0===n?t.equals(e):t.distance(e)<=n}},{key:\"norm\",value:function(){var t=this.copy();return t.normalize(),t}},{key:\"reverse\",value:function(){var t=this.reverseInternal();return null!=this.envelope&&(t.envelope=this.envelope.copy()),t.setSRID(this.getSRID()),t}},{key:\"copy\",value:function(){var t=this.copyInternal();return t.envelope=null==this._envelope?null:this._envelope.copy(),t._SRID=this._SRID,t._userData=this._userData,t}},{key:\"getPrecisionModel\",value:function(){return this._factory.getPrecisionModel()}},{key:\"getEnvelopeInternal\",value:function(){return null===this._envelope&&(this._envelope=this.computeEnvelopeInternal()),new U(this._envelope)}},{key:\"setSRID\",value:function(t){this._SRID=t}},{key:\"setUserData\",value:function(t){this._userData=t}},{key:\"compare\",value:function(t,e){for(var n=t.iterator(),i=e.iterator();n.hasNext()&&i.hasNext();){var r=n.next(),s=i.next(),a=r.compareTo(s);if(0!==a)return a}return n.hasNext()?1:i.hasNext()?-1:0}},{key:\"hashCode\",value:function(){return this.getEnvelopeInternal().hashCode()}},{key:\"isEquivalentClass\",value:function(t){return this.getClass()===t.getClass()}},{key:\"isGeometryCollectionOrDerived\",value:function(){return this.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION||this.getTypeCode()===e.TYPECODE_MULTIPOINT||this.getTypeCode()===e.TYPECODE_MULTILINESTRING||this.getTypeCode()===e.TYPECODE_MULTIPOLYGON}},{key:\"interfaces_\",get:function(){return[I,x,E]}},{key:\"getClass\",value:function(){return e}}],[{key:\"hasNonEmptyElements\",value:function(t){for(var e=0;e<t.length;e++)if(!t[e].isEmpty())return!0;return!1}},{key:\"hasNullElements\",value:function(t){for(var e=0;e<t.length;e++)if(null===t[e])return!0;return!1}}]),e}();V.constructor_=function(t){t&&(this._envelope=null,this._userData=null,this._factory=t,this._SRID=t.getSRID())},V.TYPECODE_POINT=0,V.TYPECODE_MULTIPOINT=1,V.TYPECODE_LINESTRING=2,V.TYPECODE_LINEARRING=3,V.TYPECODE_MULTILINESTRING=4,V.TYPECODE_POLYGON=5,V.TYPECODE_MULTIPOLYGON=6,V.TYPECODE_GEOMETRYCOLLECTION=7,V.TYPENAME_POINT=\"Point\",V.TYPENAME_MULTIPOINT=\"MultiPoint\",V.TYPENAME_LINESTRING=\"LineString\",V.TYPENAME_LINEARRING=\"LinearRing\",V.TYPENAME_MULTILINESTRING=\"MultiLineString\",V.TYPENAME_POLYGON=\"Polygon\",V.TYPENAME_MULTIPOLYGON=\"MultiPolygon\",V.TYPENAME_GEOMETRYCOLLECTION=\"GeometryCollection\",V.geometryChangedFilter={get interfaces_(){return[k]},filter:function(t){t.geometryChangedAction()}};var H=function(){function e(){t(this,e)}return n(e,null,[{key:\"toLocationSymbol\",value:function(t){switch(t){case e.EXTERIOR:return\"e\";case e.BOUNDARY:return\"b\";case e.INTERIOR:return\"i\";case e.NONE:return\"-\"}throw new m(\"Unknown location value: \"+t)}}]),e}();H.INTERIOR=0,H.BOUNDARY=1,H.EXTERIOR=2,H.NONE=-1;var Z=function(){function e(){t(this,e)}return n(e,[{key:\"add\",value:function(){}},{key:\"addAll\",value:function(){}},{key:\"isEmpty\",value:function(){}},{key:\"iterator\",value:function(){}},{key:\"size\",value:function(){}},{key:\"toArray\",value:function(){}},{key:\"remove\",value:function(){}}]),e}(),j=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({NoSuchElementException:r})[0],i}return r}(p),W=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({UnsupportedOperationException:r})[0],i}return r}(p),K=function(e){i(s,e);var r=c(s);function s(){return t(this,s),r.apply(this,arguments)}return n(s,[{key:\"contains\",value:function(){}}]),s}(Z),J=function(e,r){i(a,e);var s=c(a);function a(e){var n;return t(this,a),(n=s.call(this)).map=new Map,e instanceof Z&&n.addAll(e),n}return n(a,[{key:\"contains\",value:function(t){var e=t.hashCode?t.hashCode():t;return!!this.map.has(e)}},{key:\"add\",value:function(t){var e=t.hashCode?t.hashCode():t;return!this.map.has(e)&&!!this.map.set(e,t)}},{key:\"addAll\",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.add(i)}}catch(t){n.e(t)}finally{n.f()}return!0}},{key:\"remove\",value:function(){throw new W}},{key:\"size\",value:function(){return this.map.size}},{key:\"isEmpty\",value:function(){return 0===this.map.size}},{key:\"toArray\",value:function(){return Array.from(this.map.values())}},{key:\"iterator\",value:function(){return new Q(this.map)}},{key:r,value:function(){return this.map}}]),a}(K,Symbol.iterator),Q=function(){function e(n){t(this,e),this.iterator=n.values();var i=this.iterator.next(),r=i.done,s=i.value;this.done=r,this.value=s}return n(e,[{key:\"next\",value:function(){if(this.done)throw new j;var t=this.value,e=this.iterator.next(),n=e.done,i=e.value;return this.done=n,this.value=i,t}},{key:\"hasNext\",value:function(){return!this.done}},{key:\"remove\",value:function(){throw new W}}]),e}(),$=function(){function e(){t(this,e)}return n(e,null,[{key:\"opposite\",value:function(t){return t===e.LEFT?e.RIGHT:t===e.RIGHT?e.LEFT:t}}]),e}();$.ON=0,$.LEFT=1,$.RIGHT=2;var tt=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({EmptyStackException:r})[0],i}return r}(p),et=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({IndexOutOfBoundsException:r})[0],i}return r}(p),nt=function(e){i(s,e);var r=c(s);function s(){return t(this,s),r.apply(this,arguments)}return n(s,[{key:\"get\",value:function(){}},{key:\"set\",value:function(){}},{key:\"isEmpty\",value:function(){}}]),s}(Z),it=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),(e=r.call(this)).array=[],e}return n(s,[{key:\"add\",value:function(t){return this.array.push(t),!0}},{key:\"get\",value:function(t){if(t<0||t>=this.size())throw new et;return this.array[t]}},{key:\"push\",value:function(t){return this.array.push(t),t}},{key:\"pop\",value:function(){if(0===this.array.length)throw new tt;return this.array.pop()}},{key:\"peek\",value:function(){if(0===this.array.length)throw new tt;return this.array[this.array.length-1]}},{key:\"empty\",value:function(){return 0===this.array.length}},{key:\"isEmpty\",value:function(){return this.empty()}},{key:\"search\",value:function(t){return this.array.indexOf(t)}},{key:\"size\",value:function(){return this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}}]),s}(nt);function rt(t,e){return t.interfaces_&&t.interfaces_.indexOf(e)>-1}var st=function(){function e(n){t(this,e),this.str=n}return n(e,[{key:\"append\",value:function(t){this.str+=t}},{key:\"setCharAt\",value:function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)}},{key:\"toString\",value:function(){return this.str}}]),e}(),at=function(){function e(n){t(this,e),this.value=n}return n(e,[{key:\"intValue\",value:function(){return this.value}},{key:\"compareTo\",value:function(t){return this.value<t?-1:this.value>t?1:0}}],[{key:\"compare\",value:function(t,e){return t<e?-1:t>e?1:0}},{key:\"isNan\",value:function(t){return Number.isNaN(t)}},{key:\"valueOf\",value:function(t){return new e(t)}}]),e}(),ot=function(){function e(){t(this,e)}return n(e,null,[{key:\"isWhitespace\",value:function(t){return t<=32&&t>=0||127===t}},{key:\"toUpperCase\",value:function(t){return t.toUpperCase()}}]),e}(),ut=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"le\",value:function(t){return this._hi<t._hi||this._hi===t._hi&&this._lo<=t._lo}},{key:\"extractSignificantDigits\",value:function(t,n){var i=this.abs(),r=e.magnitude(i._hi),s=e.TEN.pow(r);(i=i.divide(s)).gt(e.TEN)?(i=i.divide(e.TEN),r+=1):i.lt(e.ONE)&&(i=i.multiply(e.TEN),r-=1);for(var a=r+1,o=new st,u=e.MAX_PRINT_DIGITS-1,l=0;l<=u;l++){t&&l===a&&o.append(\".\");var h=Math.trunc(i._hi);if(h<0)break;var c=!1,f=0;h>9?(c=!0,f=\"9\"):f=\"0\"+h,o.append(f),i=i.subtract(e.valueOf(h)).multiply(e.TEN),c&&i.selfAdd(e.TEN);var v=!0,g=e.magnitude(i._hi);if(g<0&&Math.abs(g)>=u-l&&(v=!1),!v)break}return n[0]=r,o.toString()}},{key:\"sqr\",value:function(){return this.multiply(this)}},{key:\"doubleValue\",value:function(){return this._hi+this._lo}},{key:\"subtract\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.add(t.negate())}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.add(-n)}}},{key:\"equals\",value:function(){if(1===arguments.length&&arguments[0]instanceof e){var t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}}},{key:\"isZero\",value:function(){return 0===this._hi&&0===this._lo}},{key:\"selfSubtract\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.isNaN()?this:this.selfAdd(-n,0)}}},{key:\"getSpecialNumberString\",value:function(){return this.isZero()?\"0.0\":this.isNaN()?\"NaN \":null}},{key:\"min\",value:function(t){return this.le(t)?this:t}},{key:\"selfDivide\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfDivide(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.selfDivide(n,0)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1],s=null,a=null,o=null,u=null,l=null,h=null,c=null,f=null;return l=this._hi/i,f=(s=(h=e.SPLIT*l)-(s=h-l))*(o=(f=e.SPLIT*i)-(o=f-i))-(c=l*i)+s*(u=i-o)+(a=l-s)*o+a*u,f=l+(h=(this._hi-c-f+this._lo-l*r)/i),this._hi=f,this._lo=l-f+h,this}}},{key:\"dump\",value:function(){return\"DD<\"+this._hi+\", \"+this._lo+\">\"}},{key:\"divide\",value:function(){if(arguments[0]instanceof e){var t=arguments[0],n=null,i=null,r=null,s=null,a=null,o=null,u=null,l=null;i=(a=this._hi/t._hi)-(n=(o=e.SPLIT*a)-(n=o-a)),l=n*(r=(l=e.SPLIT*t._hi)-(r=l-t._hi))-(u=a*t._hi)+n*(s=t._hi-r)+i*r+i*s;var h=l=a+(o=(this._hi-u-l+this._lo-a*t._lo)/t._hi),c=a-l+o;return new e(h,c)}if(\"number\"==typeof arguments[0]){var f=arguments[0];return A.isNaN(f)?e.createNaN():e.copy(this).selfDivide(f,0)}}},{key:\"ge\",value:function(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>=t._lo}},{key:\"pow\",value:function(t){if(0===t)return e.valueOf(1);var n=new e(this),i=e.valueOf(1),r=Math.abs(t);if(r>1)for(;r>0;)r%2==1&&i.selfMultiply(n),(r/=2)>0&&(n=n.sqr());else i=n;return t<0?i.reciprocal():i}},{key:\"ceil\",value:function(){if(this.isNaN())return e.NaN;var t=Math.ceil(this._hi),n=0;return t===this._hi&&(n=Math.ceil(this._lo)),new e(t,n)}},{key:\"compareTo\",value:function(t){var e=t;return this._hi<e._hi?-1:this._hi>e._hi?1:this._lo<e._lo?-1:this._lo>e._lo?1:0}},{key:\"rint\",value:function(){return this.isNaN()?this:this.add(.5).floor()}},{key:\"setValue\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.init(t),this}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.init(n),this}}},{key:\"max\",value:function(t){return this.ge(t)?this:t}},{key:\"sqrt\",value:function(){if(this.isZero())return e.valueOf(0);if(this.isNegative())return e.NaN;var t=1/Math.sqrt(this._hi),n=this._hi*t,i=e.valueOf(n),r=this.subtract(i.sqr())._hi*(.5*t);return i.add(r)}},{key:\"selfAdd\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfAdd(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0],i=null,r=null,s=null,a=null,o=null,u=null;return a=(s=this._hi+n)-(o=s-this._hi),r=(u=(a=n-o+(this._hi-a))+this._lo)+(s-(i=s+u)),this._hi=i+r,this._lo=r+(i-this._hi),this}}else if(2===arguments.length){var l=arguments[0],h=arguments[1],c=null,f=null,v=null,g=null,y=null,d=null,_=null;g=this._hi+l,f=this._lo+h,y=g-(d=g-this._hi),v=f-(_=f-this._lo);var p=(c=g+(d=(y=l-d+(this._hi-y))+f))+(d=(v=h-_+(this._lo-v))+(d+(g-c))),m=d+(c-p);return this._hi=p,this._lo=m,this}}},{key:\"selfMultiply\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.selfMultiply(n,0)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1],s=null,a=null,o=null,u=null,l=null,h=null;s=(l=e.SPLIT*this._hi)-this._hi,h=e.SPLIT*i,s=l-s,a=this._hi-s,o=h-i;var c=(l=this._hi*i)+(h=s*(o=h-o)-l+s*(u=i-o)+a*o+a*u+(this._hi*r+this._lo*i)),f=h+(s=l-c);return this._hi=c,this._lo=f,this}}},{key:\"selfSqr\",value:function(){return this.selfMultiply(this)}},{key:\"floor\",value:function(){if(this.isNaN())return e.NaN;var t=Math.floor(this._hi),n=0;return t===this._hi&&(n=Math.floor(this._lo)),new e(t,n)}},{key:\"negate\",value:function(){return this.isNaN()?this:new e(-this._hi,-this._lo)}},{key:\"clone\",value:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return null;throw t}}},{key:\"multiply\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return t.isNaN()?e.createNaN():e.copy(this).selfMultiply(t)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return A.isNaN(n)?e.createNaN():e.copy(this).selfMultiply(n,0)}}},{key:\"isNaN\",value:function(){return A.isNaN(this._hi)}},{key:\"intValue\",value:function(){return Math.trunc(this._hi)}},{key:\"toString\",value:function(){var t=e.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()}},{key:\"toStandardNotation\",value:function(){var t=this.getSpecialNumberString();if(null!==t)return t;var n=new Array(1).fill(null),i=this.extractSignificantDigits(!0,n),r=n[0]+1,s=i;if(\".\"===i.charAt(0))s=\"0\"+i;else if(r<0)s=\"0.\"+e.stringOfChar(\"0\",-r)+i;else if(-1===i.indexOf(\".\")){var a=r-i.length;s=i+e.stringOfChar(\"0\",a)+\".0\"}return this.isNegative()?\"-\"+s:s}},{key:\"reciprocal\",value:function(){var t,n,i,r,s=null,a=null,o=null,u=null;t=(i=1/this._hi)-(s=(o=e.SPLIT*i)-(s=o-i)),a=(u=e.SPLIT*this._hi)-this._hi;var l=i+(o=(1-(r=i*this._hi)-(u=s*(a=u-a)-r+s*(n=this._hi-a)+t*a+t*n)-i*this._lo)/this._hi);return new e(l,i-l+o)}},{key:\"toSciNotation\",value:function(){if(this.isZero())return e.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var n=new Array(1).fill(null),i=this.extractSignificantDigits(!1,n),r=e.SCI_NOT_EXPONENT_CHAR+n[0];if(\"0\"===i.charAt(0))throw new IllegalStateException(\"Found leading zero: \"+i);var s=\"\";i.length>1&&(s=i.substring(1));var a=i.charAt(0)+\".\"+s;return this.isNegative()?\"-\"+a+r:a+r}},{key:\"abs\",value:function(){return this.isNaN()?e.NaN:this.isNegative()?this.negate():new e(this)}},{key:\"isPositive\",value:function(){return this._hi>0||0===this._hi&&this._lo>0}},{key:\"lt\",value:function(t){return this._hi<t._hi||this._hi===t._hi&&this._lo<t._lo}},{key:\"add\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return e.copy(this).selfAdd(t)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return e.copy(this).selfAdd(n)}}},{key:\"init\",value:function(){if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];this._hi=t,this._lo=0}else if(arguments[0]instanceof e){var n=arguments[0];this._hi=n._hi,this._lo=n._lo}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this._hi=i,this._lo=r}}},{key:\"gt\",value:function(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>t._lo}},{key:\"isNegative\",value:function(){return this._hi<0||0===this._hi&&this._lo<0}},{key:\"trunc\",value:function(){return this.isNaN()?e.NaN:this.isPositive()?this.floor():this.ceil()}},{key:\"signum\",value:function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0}},{key:\"interfaces_\",get:function(){return[E,x,I]}}],[{key:\"constructor_\",value:function(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];this.init(t)}else if(arguments[0]instanceof e){var n=arguments[0];this.init(n)}else if(\"string\"==typeof arguments[0]){var i=arguments[0];e.constructor_.call(this,e.parse(i))}}else if(2===arguments.length){var r=arguments[0],s=arguments[1];this.init(r,s)}}},{key:\"determinant\",value:function(){if(\"number\"==typeof arguments[3]&&\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3];return e.determinant(e.valueOf(t),e.valueOf(n),e.valueOf(i),e.valueOf(r))}if(arguments[3]instanceof e&&arguments[2]instanceof e&&arguments[0]instanceof e&&arguments[1]instanceof e){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3],l=s.multiply(u).selfSubtract(a.multiply(o));return l}}},{key:\"sqr\",value:function(t){return e.valueOf(t).selfMultiply(t)}},{key:\"valueOf\",value:function(){if(\"string\"==typeof arguments[0]){var t=arguments[0];return e.parse(t)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return new e(n)}}},{key:\"sqrt\",value:function(t){return e.valueOf(t).sqrt()}},{key:\"parse\",value:function(t){for(var n=0,i=t.length;ot.isWhitespace(t.charAt(n));)n++;var r=!1;if(n<i){var s=t.charAt(n);\"-\"!==s&&\"+\"!==s||(n++,\"-\"===s&&(r=!0))}for(var a=new e,o=0,u=0,l=0,h=!1;!(n>=i);){var c=t.charAt(n);if(n++,ot.isDigit(c)){var f=c-\"0\";a.selfMultiply(e.TEN),a.selfAdd(f),o++}else{if(\".\"!==c){if(\"e\"===c||\"E\"===c){var v=t.substring(n);try{l=at.parseInt(v)}catch(e){throw e instanceof NumberFormatException?new NumberFormatException(\"Invalid exponent \"+v+\" in string \"+t):e}break}throw new NumberFormatException(\"Unexpected character '\"+c+\"' at position \"+n+\" in string \"+t)}u=o,h=!0}}var g=a;h||(u=o);var y=o-u-l;if(0===y)g=a;else if(y>0){var d=e.TEN.pow(y);g=a.divide(d)}else if(y<0){var _=e.TEN.pow(-y);g=a.multiply(_)}return r?g.negate():g}},{key:\"createNaN\",value:function(){return new e(A.NaN,A.NaN)}},{key:\"copy\",value:function(t){return new e(t)}},{key:\"magnitude\",value:function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),i=Math.trunc(Math.floor(n));return 10*Math.pow(10,i)<=e&&(i+=1),i}},{key:\"stringOfChar\",value:function(t,e){for(var n=new st,i=0;i<e;i++)n.append(t);return n.toString()}}]),e}();ut.PI=new ut(3.141592653589793,12246467991473532e-32),ut.TWO_PI=new ut(6.283185307179586,24492935982947064e-32),ut.PI_2=new ut(1.5707963267948966,6123233995736766e-32),ut.E=new ut(2.718281828459045,14456468917292502e-32),ut.NaN=new ut(A.NaN,A.NaN),ut.EPS=123259516440783e-46,ut.SPLIT=134217729,ut.MAX_PRINT_DIGITS=32,ut.TEN=ut.valueOf(10),ut.ONE=ut.valueOf(1),ut.SCI_NOT_EXPONENT_CHAR=\"E\",ut.SCI_NOT_ZERO=\"0.0E0\";var lt=function(){function e(){t(this,e)}return n(e,null,[{key:\"orientationIndex\",value:function(t,n,i){var r=e.orientationIndexFilter(t,n,i);if(r<=1)return r;var s=ut.valueOf(n.x).selfAdd(-t.x),a=ut.valueOf(n.y).selfAdd(-t.y),o=ut.valueOf(i.x).selfAdd(-n.x),u=ut.valueOf(i.y).selfAdd(-n.y);return s.selfMultiply(u).selfSubtract(a.selfMultiply(o)).signum()}},{key:\"signOfDet2x2\",value:function(){if(arguments[3]instanceof ut&&arguments[2]instanceof ut&&arguments[0]instanceof ut&&arguments[1]instanceof ut){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3],r=t.multiply(i).selfSubtract(e.multiply(n));return r.signum()}if(\"number\"==typeof arguments[3]&&\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3],l=ut.valueOf(s),h=ut.valueOf(a),c=ut.valueOf(o),f=ut.valueOf(u),v=l.multiply(f).selfSubtract(h.multiply(c));return v.signum()}}},{key:\"intersection\",value:function(t,e,n,i){var r=new ut(t.y).selfSubtract(e.y),s=new ut(e.x).selfSubtract(t.x),a=new ut(t.x).selfMultiply(e.y).selfSubtract(new ut(e.x).selfMultiply(t.y)),o=new ut(n.y).selfSubtract(i.y),u=new ut(i.x).selfSubtract(n.x),l=new ut(n.x).selfMultiply(i.y).selfSubtract(new ut(i.x).selfMultiply(n.y)),h=s.multiply(l).selfSubtract(u.multiply(a)),c=o.multiply(a).selfSubtract(r.multiply(l)),f=r.multiply(u).selfSubtract(o.multiply(s)),v=h.selfDivide(f).doubleValue(),g=c.selfDivide(f).doubleValue();return A.isNaN(v)||A.isInfinite(v)||A.isNaN(g)||A.isInfinite(g)?null:new X(v,g)}},{key:\"orientationIndexFilter\",value:function(t,n,i){var r=null,s=(t.x-i.x)*(n.y-i.y),a=(t.y-i.y)*(n.x-i.x),o=s-a;if(s>0){if(a<=0)return e.signum(o);r=s+a}else{if(!(s<0))return e.signum(o);if(a>=0)return e.signum(o);r=-s-a}var u=e.DP_SAFE_EPSILON*r;return o>=u||-o>=u?e.signum(o):2}},{key:\"signum\",value:function(t){return t>0?1:t<0?-1:0}}]),e}();lt.DP_SAFE_EPSILON=1e-15;var ht=function(){function e(){t(this,e)}return n(e,[{key:\"getM\",value:function(t){if(this.hasM()){var e=this.getDimension()-this.getMeasures();return this.getOrdinate(t,e)}return A.NaN}},{key:\"setOrdinate\",value:function(t,e,n){}},{key:\"getZ\",value:function(t){return this.hasZ()?this.getOrdinate(t,2):A.NaN}},{key:\"size\",value:function(){}},{key:\"getOrdinate\",value:function(t,e){}},{key:\"getCoordinate\",value:function(){}},{key:\"getCoordinateCopy\",value:function(t){}},{key:\"createCoordinate\",value:function(){}},{key:\"getDimension\",value:function(){}},{key:\"hasM\",value:function(){return this.getMeasures()>0}},{key:\"getX\",value:function(t){}},{key:\"hasZ\",value:function(){return this.getDimension()-this.getMeasures()>2}},{key:\"getMeasures\",value:function(){return 0}},{key:\"expandEnvelope\",value:function(t){}},{key:\"copy\",value:function(){}},{key:\"getY\",value:function(t){}},{key:\"toCoordinateArray\",value:function(){}},{key:\"interfaces_\",get:function(){return[I]}}]),e}();ht.X=0,ht.Y=1,ht.Z=2,ht.M=3;var ct=function(){function e(){t(this,e)}return n(e,null,[{key:\"index\",value:function(t,e,n){return lt.orientationIndex(t,e,n)}},{key:\"isCCW\",value:function(){if(arguments[0]instanceof Array){var t=arguments[0],n=t.length-1;if(n<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var i=t[0],r=0,s=1;s<=n;s++){var a=t[s];a.y>i.y&&(i=a,r=s)}var o=r;do{(o-=1)<0&&(o=n)}while(t[o].equals2D(i)&&o!==r);var u=r;do{u=(u+1)%n}while(t[u].equals2D(i)&&u!==r);var l=t[o],h=t[u];if(l.equals2D(i)||h.equals2D(i)||l.equals2D(h))return!1;var c=e.index(l,i,h),f=null;return f=0===c?l.x>h.x:c>0,f}if(rt(arguments[0],ht)){var v=arguments[0],g=v.size()-1;if(g<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var y=v.getCoordinate(0),d=0,_=1;_<=g;_++){var p=v.getCoordinate(_);p.y>y.y&&(y=p,d=_)}var k=null,x=d;do{(x-=1)<0&&(x=g),k=v.getCoordinate(x)}while(k.equals2D(y)&&x!==d);var I=null,E=d;do{E=(E+1)%g,I=v.getCoordinate(E)}while(I.equals2D(y)&&E!==d);if(k.equals2D(y)||I.equals2D(y)||k.equals2D(I))return!1;var N=e.index(k,y,I);return 0===N?k.x>I.x:N>0}}}]),e}();ct.CLOCKWISE=-1,ct.RIGHT=ct.CLOCKWISE,ct.COUNTERCLOCKWISE=1,ct.LEFT=ct.COUNTERCLOCKWISE,ct.COLLINEAR=0,ct.STRAIGHT=ct.COLLINEAR;var ft=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinate\",value:function(){return this._minCoord}},{key:\"getRightmostSide\",value:function(t,e){var n=this.getRightmostSideOfSegment(t,e);return n<0&&(n=this.getRightmostSideOfSegment(t,e-1)),n<0&&(this._minCoord=null,this.checkForRightmostCoordinate(t)),n}},{key:\"findRightmostEdgeAtVertex\",value:function(){var t=this._minDe.getEdge().getCoordinates();G.isTrue(this._minIndex>0&&this._minIndex<t.length,\"rightmost point expected to be interior vertex of edge\");var e=t[this._minIndex-1],n=t[this._minIndex+1],i=ct.index(this._minCoord,n,e),r=!1;(e.y<this._minCoord.y&&n.y<this._minCoord.y&&i===ct.COUNTERCLOCKWISE||e.y>this._minCoord.y&&n.y>this._minCoord.y&&i===ct.CLOCKWISE)&&(r=!0),r&&(this._minIndex=this._minIndex-1)}},{key:\"getRightmostSideOfSegment\",value:function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var i=$.LEFT;return n[e].y<n[e+1].y&&(i=$.RIGHT),i}},{key:\"getEdge\",value:function(){return this._orientedDe}},{key:\"checkForRightmostCoordinate\",value:function(t){for(var e=t.getEdge().getCoordinates(),n=0;n<e.length-1;n++)(null===this._minCoord||e[n].x>this._minCoord.x)&&(this._minDe=t,this._minIndex=n,this._minCoord=e[n])}},{key:\"findRightmostEdgeAtNode\",value:function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)}},{key:\"findEdge\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}G.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),\"inconsistency in rightmost processing\"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe,this.getRightmostSide(this._minDe,this._minIndex)===$.LEFT&&(this._orientedDe=this._minDe.getSym())}}],[{key:\"constructor_\",value:function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null}}]),e}(),vt=function(e){i(s,e);var r=c(s);function s(e,n){var i;return t(this,s),(i=r.call(this,n?e+\" [ \"+n+\" ]\":e)).pt=n?new X(n):void 0,i.name=Object.keys({TopologyException:s})[0],i}return n(s,[{key:\"getCoordinate\",value:function(){return this.pt}}]),s}(D),gt=function(){function e(){t(this,e),this.array=[]}return n(e,[{key:\"addLast\",value:function(t){this.array.push(t)}},{key:\"removeFirst\",value:function(){return this.array.shift()}},{key:\"isEmpty\",value:function(){return 0===this.array.length}}]),e}(),yt=function(e,r){i(a,e);var s=c(a);function a(e){var n;return t(this,a),(n=s.call(this)).array=[],e instanceof Z&&n.addAll(e),n}return n(a,[{key:\"interfaces_\",get:function(){return[nt,Z]}},{key:\"ensureCapacity\",value:function(){}},{key:\"add\",value:function(t){return 1===arguments.length?this.array.push(t):this.array.splice(arguments[0],0,arguments[1]),!0}},{key:\"clear\",value:function(){this.array=[]}},{key:\"addAll\",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.array.push(i)}}catch(t){n.e(t)}finally{n.f()}}},{key:\"set\",value:function(t,e){var n=this.array[t];return this.array[t]=e,n}},{key:\"iterator\",value:function(){return new dt(this)}},{key:\"get\",value:function(t){if(t<0||t>=this.size())throw new et;return this.array[t]}},{key:\"isEmpty\",value:function(){return 0===this.array.length}},{key:\"sort\",value:function(t){t?this.array.sort((function(e,n){return t.compare(e,n)})):this.array.sort()}},{key:\"size\",value:function(){return this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}},{key:\"remove\",value:function(t){for(var e=0,n=this.array.length;e<n;e++)if(this.array[e]===t)return!!this.array.splice(e,1);return!1}},{key:r,value:function(){return this.array.values()}}]),a}(nt,Symbol.iterator),dt=function(){function e(n){t(this,e),this.arrayList=n,this.position=0}return n(e,[{key:\"next\",value:function(){if(this.position===this.arrayList.size())throw new j;return this.arrayList.get(this.position++)}},{key:\"hasNext\",value:function(){return this.position<this.arrayList.size()}},{key:\"set\",value:function(t){return this.arrayList.set(this.position-1,t)}},{key:\"remove\",value:function(){this.arrayList.remove(this.arrayList.get(this.position))}}]),e}(),_t=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"clearVisitedEdges\",value:function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){t.next().setVisited(!1)}}},{key:\"getRightmostCoordinate\",value:function(){return this._rightMostCoord}},{key:\"computeNodeDepth\",value:function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var i=n.next();if(i.isVisited()||i.getSym().isVisited()){e=i;break}}if(null===e)throw new vt(\"unable to find edge to compute depths at \"+t.getCoordinate());t.getEdges().computeDepths(e);for(var r=t.getEdges().iterator();r.hasNext();){var s=r.next();s.setVisited(!0),this.copySymDepths(s)}}},{key:\"computeDepth\",value:function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.getNode(),e.getLabel(),e.setEdgeDepths($.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)}},{key:\"create\",value:function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()}},{key:\"findResultEdges\",value:function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth($.RIGHT)>=1&&e.getDepth($.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}}},{key:\"computeDepths\",value:function(t){var e=new J,n=new gt,i=t.getNode();for(n.addLast(i),e.add(i),t.setVisited(!0);!n.isEmpty();){var r=n.removeFirst();e.add(r),this.computeNodeDepth(r);for(var s=r.getEdges().iterator();s.hasNext();){var a=s.next().getSym();if(!a.isVisited()){var o=a.getNode();e.contains(o)||(n.addLast(o),e.add(o))}}}}},{key:\"compareTo\",value:function(t){var e=t;return this._rightMostCoord.x<e._rightMostCoord.x?-1:this._rightMostCoord.x>e._rightMostCoord.x?1:0}},{key:\"getEnvelope\",value:function(){if(null===this._env){for(var t=new U,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),i=0;i<n.length-1;i++)t.expandToInclude(n[i]);this._env=t}return this._env}},{key:\"addReachable\",value:function(t){var e=new it;for(e.add(t);!e.empty();){var n=e.pop();this.add(n,e)}}},{key:\"copySymDepths\",value:function(t){var e=t.getSym();e.setDepth($.LEFT,t.getDepth($.RIGHT)),e.setDepth($.RIGHT,t.getDepth($.LEFT))}},{key:\"add\",value:function(t,e){t.setVisited(!0),this._nodes.add(t);for(var n=t.getEdges().iterator();n.hasNext();){var i=n.next();this._dirEdgeList.add(i);var r=i.getSym().getNode();r.isVisited()||e.push(r)}}},{key:\"getNodes\",value:function(){return this._nodes}},{key:\"getDirectedEdges\",value:function(){return this._dirEdgeList}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._finder=null,this._dirEdgeList=new yt,this._nodes=new yt,this._rightMostCoord=null,this._env=null,this._finder=new ft}}]),e}(),pt=function(){function e(){t(this,e)}return n(e,null,[{key:\"intersection\",value:function(t,e,n,i){var r=t.x<e.x?t.x:e.x,s=t.y<e.y?t.y:e.y,a=t.x>e.x?t.x:e.x,o=t.y>e.y?t.y:e.y,u=n.x<i.x?n.x:i.x,l=n.y<i.y?n.y:i.y,h=n.x>i.x?n.x:i.x,c=n.y>i.y?n.y:i.y,f=((r>u?r:u)+(a<h?a:h))/2,v=((s>l?s:l)+(o<c?o:c))/2,g=t.x-f,y=t.y-v,d=e.x-f,_=e.y-v,p=n.x-f,m=n.y-v,k=i.x-f,x=i.y-v,I=y-_,E=d-g,N=g*_-d*y,T=m-x,S=k-p,L=p*x-k*m,C=I*S-T*E,R=(E*L-S*N)/C,w=(T*N-I*L)/C;return A.isNaN(R)||A.isInfinite(R)||A.isNaN(w)||A.isInfinite(w)?null:new X(R+f,w+v)}}]),e}(),mt=function(){function e(){t(this,e)}return n(e,null,[{key:\"arraycopy\",value:function(t,e,n,i,r){for(var s=0,a=e;a<e+r;a++)n[i+s]=t[a],s++}},{key:\"getProperty\",value:function(t){return{\"line.separator\":\"\\n\"}[t]}}]),e}(),kt=function(){function e(){t(this,e)}return n(e,null,[{key:\"log10\",value:function(t){var n=Math.log(t);return A.isInfinite(n)||A.isNaN(n)?n:n/e.LOG_10}},{key:\"min\",value:function(t,e,n,i){var r=t;return e<r&&(r=e),n<r&&(r=n),i<r&&(r=i),r}},{key:\"clamp\",value:function(){if(\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1],n=arguments[2];return t<e?e:t>n?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var i=arguments[0],r=arguments[1],s=arguments[2];return i<r?r:i>s?s:i}}},{key:\"wrap\",value:function(t,e){return t<0?e- -t%e:t%e}},{key:\"max\",value:function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=t;return e>i&&(i=e),n>i&&(i=n),i}if(4===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3],u=r;return s>u&&(u=s),a>u&&(u=a),o>u&&(u=o),u}}},{key:\"average\",value:function(t,e){return(t+e)/2}}]),e}();kt.LOG_10=Math.log(10);var xt=function(){function e(){t(this,e)}return n(e,null,[{key:\"segmentToSegment\",value:function(t,n,i,r){if(t.equals(n))return e.pointToSegment(t,i,r);if(i.equals(r))return e.pointToSegment(r,t,n);var s=!1;if(U.intersects(t,n,i,r)){var a=(n.x-t.x)*(r.y-i.y)-(n.y-t.y)*(r.x-i.x);if(0===a)s=!0;else{var o=(t.y-i.y)*(r.x-i.x)-(t.x-i.x)*(r.y-i.y),u=((t.y-i.y)*(n.x-t.x)-(t.x-i.x)*(n.y-t.y))/a,l=o/a;(l<0||l>1||u<0||u>1)&&(s=!0)}}else s=!0;return s?kt.min(e.pointToSegment(t,i,r),e.pointToSegment(n,i,r),e.pointToSegment(i,t,n),e.pointToSegment(r,t,n)):0}},{key:\"pointToSegment\",value:function(t,e,n){if(e.x===n.x&&e.y===n.y)return t.distance(e);var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((t.x-e.x)*(n.x-e.x)+(t.y-e.y)*(n.y-e.y))/i;if(r<=0)return t.distance(e);if(r>=1)return t.distance(n);var s=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(s)*Math.sqrt(i)}},{key:\"pointToLinePerpendicular\",value:function(t,e,n){var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(r)*Math.sqrt(i)}},{key:\"pointToSegmentString\",value:function(t,n){if(0===n.length)throw new m(\"Line array must contain at least one vertex\");for(var i=t.distance(n[0]),r=0;r<n.length-1;r++){var s=e.pointToSegment(t,n[r],n[r+1]);s<i&&(i=s)}return i}}]),e}(),It=function(){function e(){t(this,e)}return n(e,[{key:\"create\",value:function(){if(1===arguments.length)arguments[0]instanceof Array||rt(arguments[0],ht);else if(2===arguments.length);else if(3===arguments.length){var t=arguments[0],e=arguments[1];return this.create(t,e)}}}]),e}(),Et=function(){function e(){t(this,e)}return n(e,[{key:\"filter\",value:function(t){}}]),e}(),Nt=function(){function e(){t(this,e)}return n(e,null,[{key:\"ofLine\",value:function(t){var e=t.size();if(e<=1)return 0;var n=0,i=new X;t.getCoordinate(0,i);for(var r=i.x,s=i.y,a=1;a<e;a++){t.getCoordinate(a,i);var o=i.x,u=i.y,l=o-r,h=u-s;n+=Math.sqrt(l*l+h*h),r=o,s=u}return n}}]),e}(),Tt=function e(){t(this,e)},St=function(){function e(){t(this,e)}return n(e,null,[{key:\"copyCoord\",value:function(t,e,n,i){for(var r=Math.min(t.getDimension(),n.getDimension()),s=0;s<r;s++)n.setOrdinate(i,s,t.getOrdinate(e,s))}},{key:\"isRing\",value:function(t){var e=t.size();return 0===e||!(e<=3)&&(t.getOrdinate(0,ht.X)===t.getOrdinate(e-1,ht.X)&&t.getOrdinate(0,ht.Y)===t.getOrdinate(e-1,ht.Y))}},{key:\"scroll\",value:function(){if(2===arguments.length){if(rt(arguments[0],ht)&&Number.isInteger(arguments[1])){var t=arguments[0],n=arguments[1];e.scroll(t,n,e.isRing(t))}else if(rt(arguments[0],ht)&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1],s=e.indexOf(r,i);if(s<=0)return null;e.scroll(i,s)}}else if(3===arguments.length){var a=arguments[0],o=arguments[1],u=arguments[2],l=o;if(l<=0)return null;for(var h=a.copy(),c=u?a.size()-1:a.size(),f=0;f<c;f++)for(var v=0;v<a.getDimension();v++)a.setOrdinate(f,v,h.getOrdinate((o+f)%c,v));if(u)for(var g=0;g<a.getDimension();g++)a.setOrdinate(c,g,a.getOrdinate(0,g))}}},{key:\"isEqual\",value:function(t,e){var n=t.size();if(n!==e.size())return!1;for(var i=Math.min(t.getDimension(),e.getDimension()),r=0;r<n;r++)for(var s=0;s<i;s++){var a=t.getOrdinate(r,s),o=e.getOrdinate(r,s);if(t.getOrdinate(r,s)!==e.getOrdinate(r,s)&&(!A.isNaN(a)||!A.isNaN(o)))return!1}return!0}},{key:\"minCoordinateIndex\",value:function(){if(1===arguments.length){var t=arguments[0];return e.minCoordinateIndex(t,0,t.size()-1)}if(3===arguments.length){for(var n=arguments[0],i=arguments[1],r=arguments[2],s=-1,a=null,o=i;o<=r;o++){var u=n.getCoordinate(o);(null===a||a.compareTo(u)>0)&&(a=u,s=o)}return s}}},{key:\"extend\",value:function(t,n,i){var r=t.create(i,n.getDimension()),s=n.size();if(e.copy(n,0,r,0,s),s>0)for(var a=s;a<i;a++)e.copy(n,s-1,r,a,1);return r}},{key:\"reverse\",value:function(t){for(var n=t.size()-1,i=Math.trunc(n/2),r=0;r<=i;r++)e.swap(t,r,n-r)}},{key:\"swap\",value:function(t,e,n){if(e===n)return null;for(var i=0;i<t.getDimension();i++){var r=t.getOrdinate(e,i);t.setOrdinate(e,i,t.getOrdinate(n,i)),t.setOrdinate(n,i,r)}}},{key:\"copy\",value:function(t,n,i,r,s){for(var a=0;a<s;a++)e.copyCoord(t,n+a,i,r+a)}},{key:\"ensureValidRing\",value:function(t,n){var i=n.size();return 0===i?n:i<=3?e.createClosedRing(t,n,4):n.getOrdinate(0,ht.X)===n.getOrdinate(i-1,ht.X)&&n.getOrdinate(0,ht.Y)===n.getOrdinate(i-1,ht.Y)?n:e.createClosedRing(t,n,i+1)}},{key:\"indexOf\",value:function(t,e){for(var n=0;n<e.size();n++)if(t.x===e.getOrdinate(n,ht.X)&&t.y===e.getOrdinate(n,ht.Y))return n;return-1}},{key:\"createClosedRing\",value:function(t,n,i){var r=t.create(i,n.getDimension()),s=n.size();e.copy(n,0,r,0,s);for(var a=s;a<i;a++)e.copy(n,0,r,a,1);return r}},{key:\"minCoordinate\",value:function(t){for(var e=null,n=0;n<t.size();n++){var i=t.getCoordinate(n);(null===e||e.compareTo(i)>0)&&(e=i)}return e}}]),e}(),Lt=function(){function e(){t(this,e)}return n(e,null,[{key:\"toDimensionSymbol\",value:function(t){switch(t){case e.FALSE:return e.SYM_FALSE;case e.TRUE:return e.SYM_TRUE;case e.DONTCARE:return e.SYM_DONTCARE;case e.P:return e.SYM_P;case e.L:return e.SYM_L;case e.A:return e.SYM_A}throw new m(\"Unknown dimension value: \"+t)}},{key:\"toDimensionValue\",value:function(t){switch(ot.toUpperCase(t)){case e.SYM_FALSE:return e.FALSE;case e.SYM_TRUE:return e.TRUE;case e.SYM_DONTCARE:return e.DONTCARE;case e.SYM_P:return e.P;case e.SYM_L:return e.L;case e.SYM_A:return e.A}throw new m(\"Unknown dimension symbol: \"+t)}}]),e}();Lt.P=0,Lt.L=1,Lt.A=2,Lt.FALSE=-1,Lt.TRUE=-2,Lt.DONTCARE=-3,Lt.SYM_FALSE=\"F\",Lt.SYM_TRUE=\"T\",Lt.SYM_DONTCARE=\"*\",Lt.SYM_P=\"0\",Lt.SYM_L=\"1\",Lt.SYM_A=\"2\";var Ct=function(){function e(){t(this,e)}return n(e,[{key:\"filter\",value:function(t){}}]),e}(),Rt=function(){function e(){t(this,e)}return n(e,[{key:\"filter\",value:function(t,e){}},{key:\"isDone\",value:function(){}},{key:\"isGeometryChanged\",value:function(){}}]),e}(),wt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"computeEnvelopeInternal\",value:function(){return this.isEmpty()?new U:this._points.expandEnvelope(new U)}},{key:\"isRing\",value:function(){return this.isClosed()&&this.isSimple()}},{key:\"getCoordinates\",value:function(){return this._points.toCoordinateArray()}},{key:\"copyInternal\",value:function(){return new a(this._points.copy(),this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this._points.size()!==n._points.size())return!1;for(var i=0;i<this._points.size();i++)if(!this.equal(this._points.getCoordinate(i),n._points.getCoordinate(i),e))return!1;return!0}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"normalize\",value:function(){for(var t=0;t<Math.trunc(this._points.size()/2);t++){var e=this._points.size()-1-t;if(!this._points.getCoordinate(t).equals(this._points.getCoordinate(e))){if(this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e))>0){var n=this._points.copy();St.reverse(n),this._points=n}return null}}}},{key:\"getCoordinate\",value:function(){return this.isEmpty()?null:this._points.getCoordinate(0)}},{key:\"getBoundaryDimension\",value:function(){return this.isClosed()?Lt.FALSE:0}},{key:\"isClosed\",value:function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))}},{key:\"reverseInternal\",value:function(){var t=this._points.copy();return St.reverse(t),this.getFactory().createLineString(t)}},{key:\"getEndPoint\",value:function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_LINESTRING}},{key:\"getDimension\",value:function(){return 1}},{key:\"getLength\",value:function(){return Nt.ofLine(this._points)}},{key:\"getNumPoints\",value:function(){return this._points.size()}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=t,n=0,i=0;n<this._points.size()&&i<e._points.size();){var r=this._points.getCoordinate(n).compareTo(e._points.getCoordinate(i));if(0!==r)return r;n++,i++}return n<this._points.size()?1:i<e._points.size()?-1:0}if(2===arguments.length){var s=arguments[0],a=arguments[1],o=s;return a.compare(this._points,o._points)}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et))for(var t=arguments[0],e=0;e<this._points.size();e++)t.filter(this._points.getCoordinate(e));else if(rt(arguments[0],Rt)){var n=arguments[0];if(0===this._points.size())return null;for(var i=0;i<this._points.size()&&(n.filter(this._points,i),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var r=arguments[0];r.filter(this)}else if(rt(arguments[0],k)){var s=arguments[0];s.filter(this)}}},{key:\"getBoundary\",value:function(){throw new W}},{key:\"isEquivalentClass\",value:function(t){return t instanceof a}},{key:\"getCoordinateN\",value:function(t){return this._points.getCoordinate(t)}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_LINESTRING}},{key:\"getCoordinateSequence\",value:function(){return this._points}},{key:\"isEmpty\",value:function(){return 0===this._points.size()}},{key:\"init\",value:function(t){if(null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),1===t.size())throw new m(\"Invalid number of points in LineString (found \"+t.size()+\" - must be 0 or >= 2)\");this._points=t}},{key:\"isCoordinate\",value:function(t){for(var e=0;e<this._points.size();e++)if(this._points.getCoordinate(e).equals(t))return!0;return!1}},{key:\"getStartPoint\",value:function(){return this.isEmpty()?null:this.getPointN(0)}},{key:\"getPointN\",value:function(t){return this.getFactory().createPoint(this._points.getCoordinate(t))}},{key:\"interfaces_\",get:function(){return[Tt]}}],[{key:\"constructor_\",value:function(){if(this._points=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];V.constructor_.call(this,e),this.init(t)}}}]),a}(V),Ot=function e(){t(this,e)},bt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"computeEnvelopeInternal\",value:function(){if(this.isEmpty())return new U;var t=new U;return t.expandToInclude(this._coordinates.getX(0),this._coordinates.getY(0)),t}},{key:\"getCoordinates\",value:function(){return this.isEmpty()?[]:[this.getCoordinate()]}},{key:\"copyInternal\",value:function(){return new a(this._coordinates.copy(),this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&(!(!this.isEmpty()||!t.isEmpty())||this.isEmpty()===t.isEmpty()&&this.equal(t.getCoordinate(),this.getCoordinate(),e))}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"normalize\",value:function(){}},{key:\"getCoordinate\",value:function(){return 0!==this._coordinates.size()?this._coordinates.getCoordinate(0):null}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"reverseInternal\",value:function(){return this.getFactory().createPoint(this._coordinates.copy())}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_POINT}},{key:\"getDimension\",value:function(){return 0}},{key:\"getNumPoints\",value:function(){return this.isEmpty()?0:1}},{key:\"getX\",value:function(){if(null===this.getCoordinate())throw new IllegalStateException(\"getX called on empty Point\");return this.getCoordinate().x}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0],e=t;return this.getCoordinate().compareTo(e.getCoordinate())}if(2===arguments.length){var n=arguments[0],i=arguments[1],r=n;return i.compare(this._coordinates,r._coordinates)}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et)){var t=arguments[0];if(this.isEmpty())return null;t.filter(this.getCoordinate())}else if(rt(arguments[0],Rt)){var e=arguments[0];if(this.isEmpty())return null;e.filter(this._coordinates,0),e.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var n=arguments[0];n.filter(this)}else if(rt(arguments[0],k)){var i=arguments[0];i.filter(this)}}},{key:\"getBoundary\",value:function(){return this.getFactory().createGeometryCollection()}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_POINT}},{key:\"getCoordinateSequence\",value:function(){return this._coordinates}},{key:\"getY\",value:function(){if(null===this.getCoordinate())throw new IllegalStateException(\"getY called on empty Point\");return this.getCoordinate().y}},{key:\"isEmpty\",value:function(){return 0===this._coordinates.size()}},{key:\"init\",value:function(t){null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),G.isTrue(t.size()<=1),this._coordinates=t}},{key:\"isSimple\",value:function(){return!0}},{key:\"interfaces_\",get:function(){return[Ot]}}],[{key:\"constructor_\",value:function(){this._coordinates=null;var t=arguments[0],e=arguments[1];V.constructor_.call(this,e),this.init(t)}}]),a}(V),Mt=function(){function e(){t(this,e)}return n(e,null,[{key:\"ofRing\",value:function(){if(arguments[0]instanceof Array){var t=arguments[0];return Math.abs(e.ofRingSigned(t))}if(rt(arguments[0],ht)){var n=arguments[0];return Math.abs(e.ofRingSigned(n))}}},{key:\"ofRingSigned\",value:function(){if(arguments[0]instanceof Array){var t=arguments[0];if(t.length<3)return 0;for(var e=0,n=t[0].x,i=1;i<t.length-1;i++){var r=t[i].x-n,s=t[i+1].y,a=t[i-1].y;e+=r*(a-s)}return e/2}if(rt(arguments[0],ht)){var o=arguments[0],u=o.size();if(u<3)return 0;var l=new X,h=new X,c=new X;o.getCoordinate(0,h),o.getCoordinate(1,c);var f=h.x;c.x-=f;for(var v=0,g=1;g<u-1;g++)l.y=h.y,h.x=c.x,h.y=c.y,o.getCoordinate(g+1,c),c.x-=f,v+=h.x*(l.y-c.y);return v/2}}}]),e}(),At=function(){function e(){t(this,e)}return n(e,null,[{key:\"sort\",value:function(){var t=arguments,e=arguments[0];if(1===arguments.length)e.sort((function(t,e){return t.compareTo(e)}));else if(2===arguments.length)e.sort((function(e,n){return t[1].compare(e,n)}));else if(3===arguments.length){var n=e.slice(arguments[1],arguments[2]);n.sort();var i=e.slice(0,arguments[1]).concat(n,e.slice(arguments[2],e.length));e.splice(0,e.length);var r,s=d(i);try{for(s.s();!(r=s.n()).done;){var a=r.value;e.push(a)}}catch(t){s.e(t)}finally{s.f()}}else if(4===arguments.length){var o=e.slice(arguments[1],arguments[2]);o.sort((function(e,n){return t[3].compare(e,n)}));var u=e.slice(0,arguments[1]).concat(o,e.slice(arguments[2],e.length));e.splice(0,e.length);var l,h=d(u);try{for(h.s();!(l=h.n()).done;){var c=l.value;e.push(c)}}catch(t){h.e(t)}finally{h.f()}}}},{key:\"asList\",value:function(t){var e,n=new yt,i=d(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n.add(r)}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"copyOf\",value:function(t,e){return t.slice(0,e)}}]),e}(),Pt=function e(){t(this,e)},Dt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"computeEnvelopeInternal\",value:function(){return this._shell.getEnvelopeInternal()}},{key:\"getCoordinates\",value:function(){if(this.isEmpty())return[];for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=this._shell.getCoordinates(),i=0;i<n.length;i++)t[++e]=n[i];for(var r=0;r<this._holes.length;r++)for(var s=this._holes[r].getCoordinates(),a=0;a<s.length;a++)t[++e]=s[a];return t}},{key:\"getArea\",value:function(){var t=0;t+=Mt.ofRing(this._shell.getCoordinateSequence());for(var e=0;e<this._holes.length;e++)t-=Mt.ofRing(this._holes[e].getCoordinateSequence());return t}},{key:\"copyInternal\",value:function(){for(var t=this._shell.copy(),e=new Array(this._holes.length).fill(null),n=0;n<this._holes.length;n++)e[n]=this._holes[n].copy();return new a(t,e,this._factory)}},{key:\"isRectangle\",value:function(){if(0!==this.getNumInteriorRing())return!1;if(null===this._shell)return!1;if(5!==this._shell.getNumPoints())return!1;for(var t=this._shell.getCoordinateSequence(),e=this.getEnvelopeInternal(),n=0;n<5;n++){var i=t.getX(n);if(i!==e.getMinX()&&i!==e.getMaxX())return!1;var r=t.getY(n);if(r!==e.getMinY()&&r!==e.getMaxY())return!1}for(var s=t.getX(0),a=t.getY(0),o=1;o<=4;o++){var u=t.getX(o),l=t.getY(o);if(u!==s===(l!==a))return!1;s=u,a=l}return!0}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t,i=this._shell,s=n._shell;if(!i.equalsExact(s,e))return!1;if(this._holes.length!==n._holes.length)return!1;for(var o=0;o<this._holes.length;o++)if(!this._holes[o].equalsExact(n._holes[o],e))return!1;return!0}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"normalize\",value:function(){if(0===arguments.length){this._shell=this.normalized(this._shell,!0);for(var t=0;t<this._holes.length;t++)this._holes[t]=this.normalized(this._holes[t],!1);At.sort(this._holes)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(e.isEmpty())return null;var i=e.getCoordinateSequence(),r=St.minCoordinateIndex(i,0,i.size()-2);St.scroll(i,r,!0),ct.isCCW(i)===n&&St.reverse(i)}}},{key:\"getCoordinate\",value:function(){return this._shell.getCoordinate()}},{key:\"getNumInteriorRing\",value:function(){return this._holes.length}},{key:\"getBoundaryDimension\",value:function(){return 1}},{key:\"reverseInternal\",value:function(){for(var t=this.getExteriorRing().reverse(),e=new Array(this.getNumInteriorRing()).fill(null),n=0;n<e.length;n++)e[n]=this.getInteriorRingN(n).reverse();return this.getFactory().createPolygon(t,e)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_POLYGON}},{key:\"getDimension\",value:function(){return 2}},{key:\"getLength\",value:function(){var t=0;t+=this._shell.getLength();for(var e=0;e<this._holes.length;e++)t+=this._holes[e].getLength();return t}},{key:\"getNumPoints\",value:function(){for(var t=this._shell.getNumPoints(),e=0;e<this._holes.length;e++)t+=this._holes[e].getNumPoints();return t}},{key:\"convexHull\",value:function(){return this.getExteriorRing().convexHull()}},{key:\"normalized\",value:function(t,e){var n=t.copy();return this.normalize(n,e),n}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0],e=this._shell,n=t._shell;return e.compareToSameClass(n)}if(2===arguments.length){var i=arguments[0],r=arguments[1],s=i,a=this._shell,o=s._shell,u=a.compareToSameClass(o,r);if(0!==u)return u;for(var l=this.getNumInteriorRing(),h=s.getNumInteriorRing(),c=0;c<l&&c<h;){var f=this.getInteriorRingN(c),v=s.getInteriorRingN(c),g=f.compareToSameClass(v,r);if(0!==g)return g;c++}return c<l?1:c<h?-1:0}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et)){var t=arguments[0];this._shell.apply(t);for(var e=0;e<this._holes.length;e++)this._holes[e].apply(t)}else if(rt(arguments[0],Rt)){var n=arguments[0];if(this._shell.apply(n),!n.isDone())for(var i=0;i<this._holes.length&&(this._holes[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var r=arguments[0];r.filter(this)}else if(rt(arguments[0],k)){var s=arguments[0];s.filter(this),this._shell.apply(s);for(var a=0;a<this._holes.length;a++)this._holes[a].apply(s)}}},{key:\"getBoundary\",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();var t=new Array(this._holes.length+1).fill(null);t[0]=this._shell;for(var e=0;e<this._holes.length;e++)t[e+1]=this._holes[e];return t.length<=1?this.getFactory().createLinearRing(t[0].getCoordinateSequence()):this.getFactory().createMultiLineString(t)}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_POLYGON}},{key:\"getExteriorRing\",value:function(){return this._shell}},{key:\"isEmpty\",value:function(){return this._shell.isEmpty()}},{key:\"getInteriorRingN\",value:function(t){return this._holes[t]}},{key:\"interfaces_\",get:function(){return[Pt]}}],[{key:\"constructor_\",value:function(){this._shell=null,this._holes=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(V.constructor_.call(this,n),null===t&&(t=this.getFactory().createLinearRing()),null===e&&(e=[]),V.hasNullElements(e))throw new m(\"holes must not contain null elements\");if(t.isEmpty()&&V.hasNonEmptyElements(e))throw new m(\"shell is empty but holes are not\");this._shell=t,this._holes=e}}]),a}(V),Ft=function(e){i(r,e);var n=c(r);function r(){return t(this,r),n.apply(this,arguments)}return r}(K),Gt=function(e){i(s,e);var r=c(s);function s(e){var n;return t(this,s),(n=r.call(this)).array=[],e instanceof Z&&n.addAll(e),n}return n(s,[{key:\"contains\",value:function(t){var e,n=d(this.array);try{for(n.s();!(e=n.n()).done;){if(0===e.value.compareTo(t))return!0}}catch(t){n.e(t)}finally{n.f()}return!1}},{key:\"add\",value:function(t){if(this.contains(t))return!1;for(var e=0,n=this.array.length;e<n;e++){if(1===this.array[e].compareTo(t))return!!this.array.splice(e,0,t)}return this.array.push(t),!0}},{key:\"addAll\",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.add(i)}}catch(t){n.e(t)}finally{n.f()}return!0}},{key:\"remove\",value:function(){throw new W}},{key:\"size\",value:function(){return this.array.length}},{key:\"isEmpty\",value:function(){return 0===this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}},{key:\"iterator\",value:function(){return new qt(this.array)}}]),s}(Ft),qt=function(){function e(n){t(this,e),this.array=n,this.position=0}return n(e,[{key:\"next\",value:function(){if(this.position===this.array.length)throw new j;return this.array[this.position++]}},{key:\"hasNext\",value:function(){return this.position<this.array.length}},{key:\"remove\",value:function(){throw new W}}]),e}(),Yt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"computeEnvelopeInternal\",value:function(){for(var t=new U,e=0;e<this._geometries.length;e++)t.expandToInclude(this._geometries[e].getEnvelopeInternal());return t}},{key:\"getGeometryN\",value:function(t){return this._geometries[t]}},{key:\"getCoordinates\",value:function(){for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=0;n<this._geometries.length;n++)for(var i=this._geometries[n].getCoordinates(),r=0;r<i.length;r++)t[++e]=i[r];return t}},{key:\"getArea\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getArea();return t}},{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new a(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this._geometries.length!==n._geometries.length)return!1;for(var i=0;i<this._geometries.length;i++)if(!this._geometries[i].equalsExact(n._geometries[i],e))return!1;return!0}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"normalize\",value:function(){for(var t=0;t<this._geometries.length;t++)this._geometries[t].normalize();At.sort(this._geometries)}},{key:\"getCoordinate\",value:function(){return this.isEmpty()?null:this._geometries[0].getCoordinate()}},{key:\"getBoundaryDimension\",value:function(){for(var t=Lt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getBoundaryDimension());return t}},{key:\"reverseInternal\",value:function(){for(var t=this._geometries.length,e=new yt(t),n=0;n<t;n++)e.add(this._geometries[n].reverse());return this.getFactory().buildGeometry(e)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_GEOMETRYCOLLECTION}},{key:\"getDimension\",value:function(){for(var t=Lt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getDimension());return t}},{key:\"getLength\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getLength();return t}},{key:\"getNumPoints\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getNumPoints();return t}},{key:\"getNumGeometries\",value:function(){return this._geometries.length}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0],e=new Gt(At.asList(this._geometries)),n=new Gt(At.asList(t._geometries));return this.compare(e,n)}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],s=i,a=this.getNumGeometries(),o=s.getNumGeometries(),u=0;u<a&&u<o;){var l=this.getGeometryN(u),h=s.getGeometryN(u),c=l.compareToSameClass(h,r);if(0!==c)return c;u++}return u<a?1:u<o?-1:0}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et))for(var t=arguments[0],e=0;e<this._geometries.length;e++)this._geometries[e].apply(t);else if(rt(arguments[0],Rt)){var n=arguments[0];if(0===this._geometries.length)return null;for(var i=0;i<this._geometries.length&&(this._geometries[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var r=arguments[0];r.filter(this);for(var s=0;s<this._geometries.length;s++)this._geometries[s].apply(r)}else if(rt(arguments[0],k)){var a=arguments[0];a.filter(this);for(var o=0;o<this._geometries.length;o++)this._geometries[o].apply(a)}}},{key:\"getBoundary\",value:function(){return V.checkNotGeometryCollection(this),G.shouldNeverReachHere(),null}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_GEOMETRYCOLLECTION}},{key:\"isEmpty\",value:function(){for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isEmpty())return!1;return!0}}],[{key:\"constructor_\",value:function(){if(this._geometries=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];if(V.constructor_.call(this,e),null===t&&(t=[]),V.hasNullElements(t))throw new m(\"geometries must not contain null elements\");this._geometries=t}}}]),a}(V),zt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new a(t,this._factory)}},{key:\"isValid\",value:function(){return!0}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(r(a.prototype),\"equalsExact\",this).call(this,t,e)}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"getCoordinate\",value:function(){if(1===arguments.length&&Number.isInteger(arguments[0])){var t=arguments[0];return this._geometries[t].getCoordinate()}return f(r(a.prototype),\"getCoordinate\",this).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTIPOINT}},{key:\"getDimension\",value:function(){return 0}},{key:\"getBoundary\",value:function(){return this.getFactory().createGeometryCollection()}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTIPOINT}},{key:\"interfaces_\",get:function(){return[Ot]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}]),a}(Yt),Xt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"copyInternal\",value:function(){return new a(this._points.copy(),this._factory)}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"isClosed\",value:function(){return!!this.isEmpty()||f(r(a.prototype),\"isClosed\",this).call(this)}},{key:\"reverseInternal\",value:function(){var t=this._points.copy();return St.reverse(t),this.getFactory().createLinearRing(t)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_LINEARRING}},{key:\"validateConstruction\",value:function(){if(!this.isEmpty()&&!f(r(a.prototype),\"isClosed\",this).call(this))throw new m(\"Points of LinearRing do not form a closed linestring\");if(this.getCoordinateSequence().size()>=1&&this.getCoordinateSequence().size()<a.MINIMUM_VALID_SIZE)throw new m(\"Invalid number of points in LinearRing (found \"+this.getCoordinateSequence().size()+\" - must be 0 or >= 4)\")}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_LINEARRING}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];wt.constructor_.call(this,t,e),this.validateConstruction()}}]),a}(wt);Xt.MINIMUM_VALID_SIZE=4;var Bt=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"setOrdinate\",value:function(t,e){switch(t){case s.X:this.x=e;break;case s.Y:this.y=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"getZ\",value:function(){return X.NULL_ORDINATE}},{key:\"getOrdinate\",value:function(t){switch(t){case s.X:return this.x;case s.Y:return this.y}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"setZ\",value:function(t){throw new m(\"CoordinateXY dimension 2 does not support z-ordinate\")}},{key:\"copy\",value:function(){return new s(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ()}}],[{key:\"constructor_\",value:function(){if(0===arguments.length)X.constructor_.call(this);else if(1===arguments.length){if(arguments[0]instanceof s){var t=arguments[0];X.constructor_.call(this,t.x,t.y)}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e.x,e.y)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];X.constructor_.call(this,n,i,X.NULL_ORDINATE)}}}]),s}(X);Bt.X=0,Bt.Y=1,Bt.Z=-1,Bt.M=-1;var Ut=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"getM\",value:function(){return this._m}},{key:\"setOrdinate\",value:function(t,e){switch(t){case s.X:this.x=e;break;case s.Y:this.y=e;break;case s.M:this._m=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"setM\",value:function(t){this._m=t}},{key:\"getZ\",value:function(){return X.NULL_ORDINATE}},{key:\"getOrdinate\",value:function(t){switch(t){case s.X:return this.x;case s.Y:return this.y;case s.M:return this._m}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"setZ\",value:function(t){throw new m(\"CoordinateXY dimension 2 does not support z-ordinate\")}},{key:\"copy\",value:function(){return new s(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\" m=\"+this.getM()+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ(),this._m=t.getM()}}],[{key:\"constructor_\",value:function(){if(this._m=null,0===arguments.length)X.constructor_.call(this),this._m=0;else if(1===arguments.length){if(arguments[0]instanceof s){var t=arguments[0];X.constructor_.call(this,t.x,t.y),this._m=t._m}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e.x,e.y),this._m=this.getM()}}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];X.constructor_.call(this,n,i,X.NULL_ORDINATE),this._m=r}}}]),s}(X);Ut.X=0,Ut.Y=1,Ut.Z=-1,Ut.M=2;var Vt=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"getM\",value:function(){return this._m}},{key:\"setOrdinate\",value:function(t,e){switch(t){case X.X:this.x=e;break;case X.Y:this.y=e;break;case X.Z:this.z=e;break;case X.M:this._m=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"setM\",value:function(t){this._m=t}},{key:\"getOrdinate\",value:function(t){switch(t){case X.X:return this.x;case X.Y:return this.y;case X.Z:return this.getZ();case X.M:return this.getM()}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"copy\",value:function(){return new s(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.getZ()+\" m=\"+this.getM()+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ(),this._m=t.getM()}}],[{key:\"constructor_\",value:function(){if(this._m=null,0===arguments.length)X.constructor_.call(this),this._m=0;else if(1===arguments.length){if(arguments[0]instanceof s){var t=arguments[0];X.constructor_.call(this,t),this._m=t._m}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e),this._m=this.getM()}}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],a=arguments[3];X.constructor_.call(this,n,i,r),this._m=a}}}]),s}(X),Ht=function(){function e(){t(this,e)}return n(e,null,[{key:\"measures\",value:function(t){return t instanceof Bt?0:t instanceof Ut||t instanceof Vt?1:0}},{key:\"dimension\",value:function(t){return t instanceof Bt?2:t instanceof Ut?3:t instanceof Vt?4:3}},{key:\"create\",value:function(){if(1===arguments.length){var t=arguments[0];return e.create(t,0)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return 2===n?new Bt:3===n&&0===i?new X:3===n&&1===i?new Ut:4===n&&1===i?new Vt:new X}}}]),e}(),Zt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"getCoordinate\",value:function(t){return this.get(t)}},{key:\"addAll\",value:function(){if(2===arguments.length&&\"boolean\"==typeof arguments[1]&&rt(arguments[0],Z)){for(var t=arguments[0],e=arguments[1],n=!1,i=t.iterator();i.hasNext();)this.add(i.next(),e),n=!0;return n}return f(r(a.prototype),\"addAll\",this).apply(this,arguments)}},{key:\"clone\",value:function(){for(var t=f(r(a.prototype),\"clone\",this).call(this),e=0;e<this.size();e++)t.add(e,this.get(e).clone());return t}},{key:\"toCoordinateArray\",value:function(){if(0===arguments.length)return this.toArray(a.coordArrayType);if(1===arguments.length){var t=arguments[0];if(t)return this.toArray(a.coordArrayType);for(var e=this.size(),n=new Array(e).fill(null),i=0;i<e;i++)n[i]=this.get(e-i-1);return n}}},{key:\"add\",value:function(){if(1===arguments.length){var t=arguments[0];return f(r(a.prototype),\"add\",this).call(this,t)}if(2===arguments.length){if(arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];return this.add(e,n,!0),!0}if(arguments[0]instanceof X&&\"boolean\"==typeof arguments[1]){var i=arguments[0],s=arguments[1];if(!s&&this.size()>=1){var o=this.get(this.size()-1);if(o.equals2D(i))return null}f(r(a.prototype),\"add\",this).call(this,i)}else if(arguments[0]instanceof Object&&\"boolean\"==typeof arguments[1]){var u=arguments[0],l=arguments[1];return this.add(u,l),!0}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var h=arguments[0],c=arguments[1],v=arguments[2];if(v)for(var g=0;g<h.length;g++)this.add(h[g],c);else for(var y=h.length-1;y>=0;y--)this.add(h[y],c);return!0}if(\"boolean\"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof X){var d=arguments[0],_=arguments[1],p=arguments[2];if(!p){var m=this.size();if(m>0){if(d>0){var k=this.get(d-1);if(k.equals2D(_))return null}if(d<m){var x=this.get(d);if(x.equals2D(_))return null}}}f(r(a.prototype),\"add\",this).call(this,d,_)}}else if(4===arguments.length){var I=arguments[0],E=arguments[1],N=arguments[2],T=arguments[3],S=1;N>T&&(S=-1);for(var L=N;L!==T;L+=S)this.add(I[L],E);return!0}}},{key:\"closeRing\",value:function(){if(this.size()>0){var t=this.get(0).copy();this.add(t,!1)}}}],[{key:\"constructor_\",value:function(){if(0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.ensureCapacity(t.length),this.add(t,!0)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.ensureCapacity(e.length),this.add(e,n)}}}]),a}(yt);Zt.coordArrayType=new Array(0).fill(null);var jt=function(){function e(){t(this,e)}return n(e,null,[{key:\"isRing\",value:function(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])}},{key:\"ptNotInList\",value:function(t,n){for(var i=0;i<t.length;i++){var r=t[i];if(e.indexOf(r,n)<0)return r}return null}},{key:\"scroll\",value:function(t,n){var i=e.indexOf(n,t);if(i<0)return null;var r=new Array(t.length).fill(null);mt.arraycopy(t,i,r,0,t.length-i),mt.arraycopy(t,0,r,t.length-i,i),mt.arraycopy(r,0,t,0,t.length)}},{key:\"equals\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(t===e)return!0;if(null===t||null===e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!t[n].equals(e[n]))return!1;return!0}if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2];if(i===r)return!0;if(null===i||null===r)return!1;if(i.length!==r.length)return!1;for(var a=0;a<i.length;a++)if(0!==s.compare(i[a],r[a]))return!1;return!0}}},{key:\"intersection\",value:function(t,e){for(var n=new Zt,i=0;i<t.length;i++)e.intersects(t[i])&&n.add(t[i],!0);return n.toCoordinateArray()}},{key:\"measures\",value:function(t){if(null===t||0===t.length)return 0;var e,n=0,i=d(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n=Math.max(n,Ht.measures(r))}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"hasRepeatedPoints\",value:function(t){for(var e=1;e<t.length;e++)if(t[e-1].equals(t[e]))return!0;return!1}},{key:\"removeRepeatedPoints\",value:function(t){return e.hasRepeatedPoints(t)?new Zt(t,!1).toCoordinateArray():t}},{key:\"reverse\",value:function(t){for(var e=t.length-1,n=Math.trunc(e/2),i=0;i<=n;i++){var r=t[i];t[i]=t[e-i],t[e-i]=r}}},{key:\"removeNull\",value:function(t){for(var e=0,n=0;n<t.length;n++)null!==t[n]&&e++;var i=new Array(e).fill(null);if(0===e)return i;for(var r=0,s=0;s<t.length;s++)null!==t[s]&&(i[r++]=t[s]);return i}},{key:\"copyDeep\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=new Array(t.length).fill(null),n=0;n<t.length;n++)e[n]=t[n].copy();return e}if(5===arguments.length)for(var i=arguments[0],r=arguments[1],s=arguments[2],a=arguments[3],o=arguments[4],u=0;u<o;u++)s[a+u]=i[r+u].copy()}},{key:\"isEqualReversed\",value:function(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=e[t.length-n-1];if(0!==i.compareTo(r))return!1}return!0}},{key:\"envelope\",value:function(t){for(var e=new U,n=0;n<t.length;n++)e.expandToInclude(t[n]);return e}},{key:\"toCoordinateArray\",value:function(t){return t.toArray(e.coordArrayType)}},{key:\"dimension\",value:function(t){if(null===t||0===t.length)return 3;var e,n=0,i=d(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n=Math.max(n,Ht.dimension(r))}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"atLeastNCoordinatesOrNothing\",value:function(t,e){return e.length>=t?e:[]}},{key:\"indexOf\",value:function(t,e){for(var n=0;n<e.length;n++)if(t.equals(e[n]))return n;return-1}},{key:\"increasingDirection\",value:function(t){for(var e=0;e<Math.trunc(t.length/2);e++){var n=t.length-1-e,i=t[e].compareTo(t[n]);if(0!==i)return i}return 1}},{key:\"compare\",value:function(t,e){for(var n=0;n<t.length&&n<e.length;){var i=t[n].compareTo(e[n]);if(0!==i)return i;n++}return n<e.length?-1:n<t.length?1:0}},{key:\"minCoordinate\",value:function(t){for(var e=null,n=0;n<t.length;n++)(null===e||e.compareTo(t[n])>0)&&(e=t[n]);return e}},{key:\"extract\",value:function(t,e,n){e=kt.clamp(e,0,t.length);var i=(n=kt.clamp(n,-1,t.length))-e+1;n<0&&(i=0),e>=t.length&&(i=0),n<e&&(i=0);var r=new Array(i).fill(null);if(0===i)return r;for(var s=0,a=e;a<=n;a++)r[s++]=t[a];return r}}]),e}(),Wt=function(){function e(){t(this,e)}return n(e,[{key:\"compare\",value:function(t,e){var n=t,i=e;return jt.compare(n,i)}},{key:\"interfaces_\",get:function(){return[P]}}]),e}(),Kt=function(){function e(){t(this,e)}return n(e,[{key:\"compare\",value:function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;var r=jt.compare(n,i);return jt.isEqualReversed(n,i)?0:r}},{key:\"OLDcompare\",value:function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;for(var r=jt.increasingDirection(n),s=jt.increasingDirection(i),a=r>0?0:n.length-1,o=s>0?0:n.length-1,u=0;u<n.length;u++){var l=n[a].compareTo(i[o]);if(0!==l)return l;a+=r,o+=s}return 0}},{key:\"interfaces_\",get:function(){return[P]}}]),e}();jt.ForwardComparator=Wt,jt.BidirectionalComparator=Kt,jt.coordArrayType=new Array(0).fill(null);var Jt=function(){function e(n){t(this,e),this.str=n}return n(e,[{key:\"append\",value:function(t){this.str+=t}},{key:\"setCharAt\",value:function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)}},{key:\"toString\",value:function(){return this.str}}]),e}(),Qt=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getM\",value:function(t){return this.hasM()?this._coordinates[t].getM():A.NaN}},{key:\"setOrdinate\",value:function(t,e,n){switch(e){case ht.X:this._coordinates[t].x=n;break;case ht.Y:this._coordinates[t].y=n;break;default:this._coordinates[t].setOrdinate(e,n)}}},{key:\"getZ\",value:function(t){return this.hasZ()?this._coordinates[t].getZ():A.NaN}},{key:\"size\",value:function(){return this._coordinates.length}},{key:\"getOrdinate\",value:function(t,e){switch(e){case ht.X:return this._coordinates[t].x;case ht.Y:return this._coordinates[t].y;default:return this._coordinates[t].getOrdinate(e)}}},{key:\"getCoordinate\",value:function(){if(1===arguments.length){var t=arguments[0];return this._coordinates[t]}if(2===arguments.length){var e=arguments[0],n=arguments[1];n.setCoordinate(this._coordinates[e])}}},{key:\"getCoordinateCopy\",value:function(t){var e=this.createCoordinate();return e.setCoordinate(this._coordinates[t]),e}},{key:\"createCoordinate\",value:function(){return Ht.create(this.getDimension(),this.getMeasures())}},{key:\"getDimension\",value:function(){return this._dimension}},{key:\"getX\",value:function(t){return this._coordinates[t].x}},{key:\"getMeasures\",value:function(){return this._measures}},{key:\"expandEnvelope\",value:function(t){for(var e=0;e<this._coordinates.length;e++)t.expandToInclude(this._coordinates[e]);return t}},{key:\"copy\",value:function(){for(var t=new Array(this.size()).fill(null),n=0;n<this._coordinates.length;n++){var i=this.createCoordinate();i.setCoordinate(this._coordinates[n]),t[n]=i}return new e(t,this._dimension,this._measures)}},{key:\"toString\",value:function(){if(this._coordinates.length>0){var t=new Jt(17*this._coordinates.length);t.append(\"(\"),t.append(this._coordinates[0]);for(var e=1;e<this._coordinates.length;e++)t.append(\", \"),t.append(this._coordinates[e]);return t.append(\")\"),t.toString()}return\"()\"}},{key:\"getY\",value:function(t){return this._coordinates[t].y}},{key:\"toCoordinateArray\",value:function(){return this._coordinates}},{key:\"interfaces_\",get:function(){return[ht,E]}}],[{key:\"constructor_\",value:function(){if(this._dimension=3,this._measures=0,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];e.constructor_.call(this,t,jt.dimension(t),jt.measures(t))}else if(Number.isInteger(arguments[0])){var n=arguments[0];this._coordinates=new Array(n).fill(null);for(var i=0;i<n;i++)this._coordinates[i]=new X}else if(rt(arguments[0],ht)){var r=arguments[0];if(null===r)return this._coordinates=new Array(0).fill(null),null;this._dimension=r.getDimension(),this._measures=r.getMeasures(),this._coordinates=new Array(r.size()).fill(null);for(var s=0;s<this._coordinates.length;s++)this._coordinates[s]=r.getCoordinateCopy(s)}}else if(2===arguments.length){if(arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var a=arguments[0],o=arguments[1];e.constructor_.call(this,a,o,jt.measures(a))}else if(Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var u=arguments[0],l=arguments[1];this._coordinates=new Array(u).fill(null),this._dimension=l;for(var h=0;h<u;h++)this._coordinates[h]=Ht.create(l)}}else if(3===arguments.length)if(Number.isInteger(arguments[2])&&arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var c=arguments[0],f=arguments[1],v=arguments[2];this._dimension=f,this._measures=v,this._coordinates=null===c?new Array(0).fill(null):c}else if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var g=arguments[0],y=arguments[1],d=arguments[2];this._coordinates=new Array(g).fill(null),this._dimension=y,this._measures=d;for(var _=0;_<g;_++)this._coordinates[_]=this.createCoordinate()}}}]),e}(),$t=function(){function e(){t(this,e)}return n(e,[{key:\"readResolve\",value:function(){return e.instance()}},{key:\"create\",value:function(){if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new Qt(t)}if(rt(arguments[0],ht)){var e=arguments[0];return new Qt(e)}}else{if(2===arguments.length){var n=arguments[0],i=arguments[1];return i>3&&(i=3),i<2&&(i=2),new Qt(n,i)}if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=s-a;return a>1&&(a=1),o>3&&(o=3),o<2&&(o=2),new Qt(r,o+a,a)}}}},{key:\"interfaces_\",get:function(){return[It,E]}}],[{key:\"instance\",value:function(){return e.instanceObject}}]),e}();$t.instanceObject=new $t;var te=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new a(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(r(a.prototype),\"equalsExact\",this).call(this,t,e)}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return 1}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTIPOLYGON}},{key:\"getDimension\",value:function(){return 2}},{key:\"getBoundary\",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();for(var t=new yt,e=0;e<this._geometries.length;e++)for(var n=this._geometries[e].getBoundary(),i=0;i<n.getNumGeometries();i++)t.add(n.getGeometryN(i));var r=new Array(t.size()).fill(null);return this.getFactory().createMultiLineString(t.toArray(r))}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTIPOLYGON}},{key:\"interfaces_\",get:function(){return[Pt]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}]),a}(Yt),ee=function(){function e(){t(this,e)}return n(e,[{key:\"get\",value:function(){}},{key:\"put\",value:function(){}},{key:\"size\",value:function(){}},{key:\"values\",value:function(){}},{key:\"entrySet\",value:function(){}}]),e}(),ne=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),(e=r.call(this)).map=new Map,e}return n(s,[{key:\"get\",value:function(t){return this.map.get(t)||null}},{key:\"put\",value:function(t,e){return this.map.set(t,e),e}},{key:\"values\",value:function(){for(var t=new yt,e=this.map.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t}},{key:\"entrySet\",value:function(){var t=new J;return this.map.entries().forEach((function(e){return t.add(e)})),t}},{key:\"size\",value:function(){return this.map.size()}}]),s}(ee),ie=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"equals\",value:function(t){if(!(t instanceof e))return!1;var n=t;return this._modelType===n._modelType&&this._scale===n._scale}},{key:\"compareTo\",value:function(t){var e=t,n=this.getMaximumSignificantDigits(),i=e.getMaximumSignificantDigits();return at.compare(n,i)}},{key:\"getScale\",value:function(){return this._scale}},{key:\"isFloating\",value:function(){return this._modelType===e.FLOATING||this._modelType===e.FLOATING_SINGLE}},{key:\"getType\",value:function(){return this._modelType}},{key:\"toString\",value:function(){var t=\"UNKNOWN\";return this._modelType===e.FLOATING?t=\"Floating\":this._modelType===e.FLOATING_SINGLE?t=\"Floating-Single\":this._modelType===e.FIXED&&(t=\"Fixed (Scale=\"+this.getScale()+\")\"),t}},{key:\"makePrecise\",value:function(){if(\"number\"==typeof arguments[0]){var t=arguments[0];if(A.isNaN(t))return t;if(this._modelType===e.FLOATING_SINGLE){return t}return this._modelType===e.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof X){var n=arguments[0];if(this._modelType===e.FLOATING)return null;n.x=this.makePrecise(n.x),n.y=this.makePrecise(n.y)}}},{key:\"getMaximumSignificantDigits\",value:function(){var t=16;return this._modelType===e.FLOATING?t=16:this._modelType===e.FLOATING_SINGLE?t=6:this._modelType===e.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t}},{key:\"setScale\",value:function(t){this._scale=Math.abs(t)}},{key:\"interfaces_\",get:function(){return[E,x]}}],[{key:\"constructor_\",value:function(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=e.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof re){var t=arguments[0];this._modelType=t,t===e.FIXED&&this.setScale(1)}else if(\"number\"==typeof arguments[0]){var n=arguments[0];this._modelType=e.FIXED,this.setScale(n)}else if(arguments[0]instanceof e){var i=arguments[0];this._modelType=i._modelType,this._scale=i._scale}}},{key:\"mostPrecise\",value:function(t,e){return t.compareTo(e)>=0?t:e}}]),e}(),re=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"readResolve\",value:function(){return e.nameToTypeMap.get(this._name)}},{key:\"toString\",value:function(){return this._name}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){this._name=null;var t=arguments[0];this._name=t,e.nameToTypeMap.put(t,this)}}]),e}();re.nameToTypeMap=new ne,ie.Type=re,ie.FIXED=new re(\"FIXED\"),ie.FLOATING=new re(\"FLOATING\"),ie.FLOATING_SINGLE=new re(\"FLOATING SINGLE\"),ie.maximumPreciseValue=9007199254740992;var se=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new a(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(r(a.prototype),\"equalsExact\",this).call(this,t,e)}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return this.isClosed()?Lt.FALSE:0}},{key:\"isClosed\",value:function(){if(this.isEmpty())return!1;for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isClosed())return!1;return!0}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTILINESTRING}},{key:\"getDimension\",value:function(){return 1}},{key:\"getBoundary\",value:function(){throw new W}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTILINESTRING}},{key:\"interfaces_\",get:function(){return[Tt]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}]),a}(Yt),ae=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"createEmpty\",value:function(t){switch(t){case-1:return this.createGeometryCollection();case 0:return this.createPoint();case 1:return this.createLineString();case 2:return this.createPolygon();default:throw new m(\"Invalid dimension: \"+t)}}},{key:\"toGeometry\",value:function(t){return t.isNull()?this.createPoint():t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new X(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new X(t.getMinX(),t.getMinY()),new X(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new X(t.getMinX(),t.getMinY()),new X(t.getMinX(),t.getMaxY()),new X(t.getMaxX(),t.getMaxY()),new X(t.getMaxX(),t.getMinY()),new X(t.getMinX(),t.getMinY())]),null)}},{key:\"createLineString\",value:function(){if(0===arguments.length)return this.createLineString(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLineString(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(rt(arguments[0],ht)){var e=arguments[0];return new wt(e,this)}}}},{key:\"createMultiLineString\",value:function(){if(0===arguments.length)return new se(null,this);if(1===arguments.length){var t=arguments[0];return new se(t,this)}}},{key:\"buildGeometry\",value:function(t){for(var n=null,i=!1,r=!1,s=t.iterator();s.hasNext();){var a=s.next(),o=a.getTypeCode();null===n&&(n=o),o!==n&&(i=!0),a instanceof Yt&&(r=!0)}if(null===n)return this.createGeometryCollection();if(i||r)return this.createGeometryCollection(e.toGeometryArray(t));var u=t.iterator().next();if(t.size()>1){if(u instanceof Dt)return this.createMultiPolygon(e.toPolygonArray(t));if(u instanceof wt)return this.createMultiLineString(e.toLineStringArray(t));if(u instanceof bt)return this.createMultiPoint(e.toPointArray(t));G.shouldNeverReachHere(\"Unhandled geometry type: \"+u.getGeometryType())}return u}},{key:\"createMultiPointFromCoords\",value:function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)}},{key:\"createPoint\",value:function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(rt(arguments[0],ht)){var e=arguments[0];return new bt(e,this)}}}},{key:\"getCoordinateSequenceFactory\",value:function(){return this._coordinateSequenceFactory}},{key:\"createPolygon\",value:function(){if(0===arguments.length)return this.createPolygon(null,null);if(1===arguments.length){if(rt(arguments[0],ht)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof Xt){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return new Dt(i,r,this)}}},{key:\"getSRID\",value:function(){return this._SRID}},{key:\"createGeometryCollection\",value:function(){if(0===arguments.length)return new Yt(null,this);if(1===arguments.length){var t=arguments[0];return new Yt(t,this)}}},{key:\"getPrecisionModel\",value:function(){return this._precisionModel}},{key:\"createLinearRing\",value:function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(rt(arguments[0],ht)){var e=arguments[0];return new Xt(e,this)}}}},{key:\"createMultiPolygon\",value:function(){if(0===arguments.length)return new te(null,this);if(1===arguments.length){var t=arguments[0];return new te(t,this)}}},{key:\"createMultiPoint\",value:function(){if(0===arguments.length)return new zt(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new zt(t,this)}if(rt(arguments[0],ht)){var e=arguments[0];if(null===e)return this.createMultiPoint(new Array(0).fill(null));for(var n=new Array(e.size()).fill(null),i=0;i<e.size();i++){var r=this.getCoordinateSequenceFactory().create(1,e.getDimension(),e.getMeasures());St.copy(e,i,r,0,1),n[i]=this.createPoint(r)}return this.createMultiPoint(n)}}}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){if(this._precisionModel=null,this._coordinateSequenceFactory=null,this._SRID=null,0===arguments.length)e.constructor_.call(this,new ie,0);else if(1===arguments.length){if(rt(arguments[0],It)){var t=arguments[0];e.constructor_.call(this,new ie,0,t)}else if(arguments[0]instanceof ie){var n=arguments[0];e.constructor_.call(this,n,0,e.getDefaultCoordinateSequenceFactory())}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];e.constructor_.call(this,i,r,e.getDefaultCoordinateSequenceFactory())}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this._precisionModel=s,this._coordinateSequenceFactory=o,this._SRID=a}}},{key:\"toMultiPolygonArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toGeometryArray\",value:function(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"getDefaultCoordinateSequenceFactory\",value:function(){return $t.instance()}},{key:\"toMultiLineStringArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toLineStringArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toMultiPointArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toLinearRingArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toPointArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toPolygonArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"createPointFromInternalCoord\",value:function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)}}]),e}(),oe=\"XY\",ue=\"XYZ\",le=\"XYM\",he=\"XYZM\",ce={POINT:\"Point\",LINE_STRING:\"LineString\",LINEAR_RING:\"LinearRing\",POLYGON:\"Polygon\",MULTI_POINT:\"MultiPoint\",MULTI_LINE_STRING:\"MultiLineString\",MULTI_POLYGON:\"MultiPolygon\",GEOMETRY_COLLECTION:\"GeometryCollection\",CIRCLE:\"Circle\"},fe=\"EMPTY\",ve=1,ge=2,ye=3,de=4,_e=5,pe=6,me={};for(var ke in ce)me[ke]=ce[ke].toUpperCase();var xe=function(){function e(n){t(this,e),this.wkt=n,this.index_=-1}return n(e,[{key:\"isAlpha_\",value:function(t){return t>=\"a\"&&t<=\"z\"||t>=\"A\"&&t<=\"Z\"}},{key:\"isNumeric_\",value:function(t,e){return t>=\"0\"&&t<=\"9\"||\".\"==t&&!(void 0!==e&&e)}},{key:\"isWhiteSpace_\",value:function(t){return\" \"==t||\"\\t\"==t||\"\\r\"==t||\"\\n\"==t}},{key:\"nextChar_\",value:function(){return this.wkt.charAt(++this.index_)}},{key:\"nextToken\",value:function(){var t,e=this.nextChar_(),n=this.index_,i=e;if(\"(\"==e)t=ge;else if(\",\"==e)t=_e;else if(\")\"==e)t=ye;else if(this.isNumeric_(e)||\"-\"==e)t=de,i=this.readNumber_();else if(this.isAlpha_(e))t=ve,i=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(\"\"!==e)throw new Error(\"Unexpected character: \"+e);t=pe}return{position:n,value:i,type:t}}},{key:\"readNumber_\",value:function(){var t,e=this.index_,n=!1,i=!1;do{\".\"==t?n=!0:\"e\"!=t&&\"E\"!=t||(i=!0),t=this.nextChar_()}while(this.isNumeric_(t,n)||!i&&(\"e\"==t||\"E\"==t)||i&&(\"-\"==t||\"+\"==t));return parseFloat(this.wkt.substring(e,this.index_--))}},{key:\"readText_\",value:function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()}}]),e}(),Ie=function(){function e(n,i){t(this,e),this.lexer_=n,this.token_,this.layout_=oe,this.factory=i}return n(e,[{key:\"consume_\",value:function(){this.token_=this.lexer_.nextToken()}},{key:\"isTokenType\",value:function(t){return this.token_.type==t}},{key:\"match\",value:function(t){var e=this.isTokenType(t);return e&&this.consume_(),e}},{key:\"parse\",value:function(){return this.consume_(),this.parseGeometry_()}},{key:\"parseGeometryLayout_\",value:function(){var t=oe,e=this.token_;if(this.isTokenType(ve)){var n=e.value;\"Z\"===n?t=ue:\"M\"===n?t=le:\"ZM\"===n&&(t=he),t!==oe&&this.consume_()}return t}},{key:\"parseGeometryCollectionText_\",value:function(){if(this.match(ge)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(_e));if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePointText_\",value:function(){if(this.match(ge)){var t=this.parsePoint_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())}},{key:\"parseLineStringText_\",value:function(){if(this.match(ge)){var t=this.parsePointList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePolygonText_\",value:function(){if(this.match(ge)){var t=this.parseLineStringTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiPointText_\",value:function(){var t;if(this.match(ge)){if(t=this.token_.type==ge?this.parsePointTextList_():this.parsePointList_(),this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiLineStringText_\",value:function(){if(this.match(ge)){var t=this.parseLineStringTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiPolygonText_\",value:function(){if(this.match(ge)){var t=this.parsePolygonTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePoint_\",value:function(){for(var t=[],e=this.layout_.length,n=0;n<e;++n){var i=this.token_;if(!this.match(de))break;t.push(i.value)}if(t.length==e)return t;throw new Error(this.formatErrorMessage_())}},{key:\"parsePointList_\",value:function(){for(var t=[this.parsePoint_()];this.match(_e);)t.push(this.parsePoint_());return t}},{key:\"parsePointTextList_\",value:function(){for(var t=[this.parsePointText_()];this.match(_e);)t.push(this.parsePointText_());return t}},{key:\"parseLineStringTextList_\",value:function(){for(var t=[this.parseLineStringText_()];this.match(_e);)t.push(this.parseLineStringText_());return t}},{key:\"parsePolygonTextList_\",value:function(){for(var t=[this.parsePolygonText_()];this.match(_e);)t.push(this.parsePolygonText_());return t}},{key:\"isEmptyGeometry_\",value:function(){var t=this.isTokenType(ve)&&this.token_.value==fe;return t&&this.consume_(),t}},{key:\"formatErrorMessage_\",value:function(){return\"Unexpected `\"+this.token_.value+\"` at position \"+this.token_.position+\" in `\"+this.lexer_.wkt+\"`\"}},{key:\"parseGeometry_\",value:function(){var t=this.factory,e=function(t){return o(X,v(t))},n=function(n){var i=n.map((function(n){return t.createLinearRing(n.map(e))}));return i.length>1?t.createPolygon(i[0],i.slice(1)):t.createPolygon(i[0])},i=this.token_;if(this.match(ve)){var r=i.value;if(this.layout_=this.parseGeometryLayout_(),\"GEOMETRYCOLLECTION\"==r){var s=this.parseGeometryCollectionText_();return t.createGeometryCollection(s)}switch(r){case\"POINT\":var a=this.parsePointText_();return a?t.createPoint(o(X,v(a))):t.createPoint();case\"LINESTRING\":var u=this.parseLineStringText_().map(e);return t.createLineString(u);case\"LINEARRING\":var l=this.parseLineStringText_().map(e);return t.createLinearRing(l);case\"POLYGON\":var h=this.parsePolygonText_();return h&&0!==h.length?n(h):t.createPolygon();case\"MULTIPOINT\":var c=this.parseMultiPointText_();if(!c||0===c.length)return t.createMultiPoint();var f=c.map(e).map((function(e){return t.createPoint(e)}));return t.createMultiPoint(f);case\"MULTILINESTRING\":var g=this.parseMultiLineStringText_().map((function(n){return t.createLineString(n.map(e))}));return t.createMultiLineString(g);case\"MULTIPOLYGON\":var y=this.parseMultiPolygonText_();if(!y||0===y.length)return t.createMultiPolygon();var d=y.map(n);return t.createMultiPolygon(d);default:throw new Error(\"Invalid geometry type: \"+r)}}throw new Error(this.formatErrorMessage_())}}]),e}();function Ee(t){if(t.isEmpty())return\"\";var e=t.getCoordinate(),n=[e.x,e.y];return void 0===e.z||Number.isNaN(e.z)||n.push(e.z),void 0===e.m||Number.isNaN(e.m)||n.push(e.m),n.join(\" \")}function Ne(t){for(var e=t.getCoordinates().map((function(t){var e=[t.x,t.y];return void 0===t.z||Number.isNaN(t.z)||e.push(t.z),void 0===t.m||Number.isNaN(t.m)||e.push(t.m),e})),n=[],i=0,r=e.length;i<r;++i)n.push(e[i].join(\" \"));return n.join(\", \")}function Te(t){var e=[];e.push(\"(\"+Ne(t.getExteriorRing())+\")\");for(var n=0,i=t.getNumInteriorRing();n<i;++n)e.push(\"(\"+Ne(t.getInteriorRingN(n))+\")\");return e.join(\", \")}var Se={Point:Ee,LineString:Ne,LinearRing:Ne,Polygon:Te,MultiPoint:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Ee(t.getGeometryN(n))+\")\");return e.join(\", \")},MultiLineString:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Ne(t.getGeometryN(n))+\")\");return e.join(\", \")},MultiPolygon:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Te(t.getGeometryN(n))+\")\");return e.join(\", \")},GeometryCollection:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(Le(t.getGeometryN(n)));return e.join(\", \")}};function Le(t){var e=t.getGeometryType(),n=Se[e];e=e.toUpperCase();var i=function(t){var e=\"\";if(t.isEmpty())return e;var n=t.getCoordinate();return void 0===n.z||Number.isNaN(n.z)||(e+=\"Z\"),void 0===n.m||Number.isNaN(n.m)||(e+=\"M\"),e}(t);return i.length>0&&(e+=\" \"+i),t.isEmpty()?e+\" \"+fe:e+\" (\"+n(t)+\")\"}var Ce=function(){function e(n){t(this,e),this.geometryFactory=n||new ae,this.precisionModel=this.geometryFactory.getPrecisionModel()}return n(e,[{key:\"read\",value:function(t){var e=new xe(t);return new Ie(e,this.geometryFactory).parse()}},{key:\"write\",value:function(t){return Le(t)}}]),e}(),Re=function(){function e(n){t(this,e),this.parser=new Ce(n)}return n(e,[{key:\"write\",value:function(t){return this.parser.write(t)}}],[{key:\"toLineString\",value:function(t,e){if(2!==arguments.length)throw new Error(\"Not implemented\");return\"LINESTRING ( \"+t.x+\" \"+t.y+\", \"+e.x+\" \"+e.y+\" )\"}}]),e}(),we=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getIndexAlongSegment\",value:function(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]}},{key:\"getTopologySummary\",value:function(){var t=new Jt;return this.isEndPoint()&&t.append(\" endpoint\"),this._isProper&&t.append(\" proper\"),this.isCollinear()&&t.append(\" collinear\"),t.toString()}},{key:\"computeIntersection\",value:function(t,e,n,i){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=n,this._inputLines[1][1]=i,this._result=this.computeIntersect(t,e,n,i)}},{key:\"getIntersectionNum\",value:function(){return this._result}},{key:\"computeIntLineIndex\",value:function(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map((function(){return Array(2)})),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){var t=arguments[0],e=this.getEdgeDistance(t,0),n=this.getEdgeDistance(t,1);e>n?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}}},{key:\"isProper\",value:function(){return this.hasIntersection()&&this._isProper}},{key:\"setPrecisionModel\",value:function(t){this._precisionModel=t}},{key:\"isInteriorIntersection\",value:function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;e<this._result;e++)if(!this._intPt[e].equals2D(this._inputLines[t][0])&&!this._intPt[e].equals2D(this._inputLines[t][1]))return!0;return!1}}},{key:\"getIntersection\",value:function(t){return this._intPt[t]}},{key:\"isEndPoint\",value:function(){return this.hasIntersection()&&!this._isProper}},{key:\"hasIntersection\",value:function(){return this._result!==e.NO_INTERSECTION}},{key:\"getEdgeDistance\",value:function(t,n){return e.computeEdgeDistance(this._intPt[n],this._inputLines[t][0],this._inputLines[t][1])}},{key:\"isCollinear\",value:function(){return this._result===e.COLLINEAR_INTERSECTION}},{key:\"toString\",value:function(){return Re.toLineString(this._inputLines[0][0],this._inputLines[0][1])+\" - \"+Re.toLineString(this._inputLines[1][0],this._inputLines[1][1])+this.getTopologySummary()}},{key:\"getEndpoint\",value:function(t,e){return this._inputLines[t][e]}},{key:\"isIntersection\",value:function(t){for(var e=0;e<this._result;e++)if(this._intPt[e].equals2D(t))return!0;return!1}},{key:\"getIntersectionAlongSegment\",value:function(t,e){return this.computeIntLineIndex(),this._intPt[this._intLineIndex[t][e]]}}],[{key:\"constructor_\",value:function(){this._result=null,this._inputLines=Array(2).fill().map((function(){return Array(2)})),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new X,this._intPt[1]=new X,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0}},{key:\"computeEdgeDistance\",value:function(t,e,n){var i=Math.abs(n.x-e.x),r=Math.abs(n.y-e.y),s=-1;if(t.equals(e))s=0;else if(t.equals(n))s=i>r?i:r;else{var a=Math.abs(t.x-e.x),o=Math.abs(t.y-e.y);0!==(s=i>r?a:o)||t.equals(e)||(s=Math.max(a,o))}return G.isTrue(!(0===s&&!t.equals(e)),\"Bad distance calculation\"),s}},{key:\"nonRobustComputeEdgeDistance\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y,s=Math.sqrt(i*i+r*r);return G.isTrue(!(0===s&&!t.equals(e)),\"Invalid distance calculation\"),s}}]),e}();we.DONT_INTERSECT=0,we.DO_INTERSECT=1,we.COLLINEAR=2,we.NO_INTERSECTION=0,we.POINT_INTERSECTION=1,we.COLLINEAR_INTERSECTION=2;var Oe=function(e){i(a,e);var s=c(a);function a(){return t(this,a),s.call(this)}return n(a,[{key:\"isInSegmentEnvelopes\",value:function(t){var e=new U(this._inputLines[0][0],this._inputLines[0][1]),n=new U(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)}},{key:\"computeIntersection\",value:function(){if(3!==arguments.length)return f(r(a.prototype),\"computeIntersection\",this).apply(this,arguments);var t=arguments[0],e=arguments[1],n=arguments[2];if(this._isProper=!1,U.intersects(e,n,t)&&0===ct.index(e,n,t)&&0===ct.index(n,e,t))return this._isProper=!0,(t.equals(e)||t.equals(n))&&(this._isProper=!1),this._result=we.POINT_INTERSECTION,null;this._result=we.NO_INTERSECTION}},{key:\"intersection\",value:function(t,e,n,i){var r=this.intersectionSafe(t,e,n,i);return this.isInSegmentEnvelopes(r)||(r=new X(a.nearestEndpoint(t,e,n,i))),null!==this._precisionModel&&this._precisionModel.makePrecise(r),r}},{key:\"checkDD\",value:function(t,e,n,i,r){var s=lt.intersection(t,e,n,i),a=this.isInSegmentEnvelopes(s);mt.out.println(\"DD in env = \"+a+\" --------------------- \"+s),r.distance(s)>1e-4&&mt.out.println(\"Distance = \"+r.distance(s))}},{key:\"intersectionSafe\",value:function(t,e,n,i){var r=pt.intersection(t,e,n,i);return null===r&&(r=a.nearestEndpoint(t,e,n,i)),r}},{key:\"computeCollinearIntersection\",value:function(t,e,n,i){var r=U.intersects(t,e,n),s=U.intersects(t,e,i),a=U.intersects(n,i,t),o=U.intersects(n,i,e);return r&&s?(this._intPt[0]=n,this._intPt[1]=i,we.COLLINEAR_INTERSECTION):a&&o?(this._intPt[0]=t,this._intPt[1]=e,we.COLLINEAR_INTERSECTION):r&&a?(this._intPt[0]=n,this._intPt[1]=t,!n.equals(t)||s||o?we.COLLINEAR_INTERSECTION:we.POINT_INTERSECTION):r&&o?(this._intPt[0]=n,this._intPt[1]=e,!n.equals(e)||s||a?we.COLLINEAR_INTERSECTION:we.POINT_INTERSECTION):s&&a?(this._intPt[0]=i,this._intPt[1]=t,!i.equals(t)||r||o?we.COLLINEAR_INTERSECTION:we.POINT_INTERSECTION):s&&o?(this._intPt[0]=i,this._intPt[1]=e,!i.equals(e)||r||a?we.COLLINEAR_INTERSECTION:we.POINT_INTERSECTION):we.NO_INTERSECTION}},{key:\"computeIntersect\",value:function(t,e,n,i){if(this._isProper=!1,!U.intersects(t,e,n,i))return we.NO_INTERSECTION;var r=ct.index(t,e,n),s=ct.index(t,e,i);if(r>0&&s>0||r<0&&s<0)return we.NO_INTERSECTION;var a=ct.index(n,i,t),o=ct.index(n,i,e);return a>0&&o>0||a<0&&o<0?we.NO_INTERSECTION:0===r&&0===s&&0===a&&0===o?this.computeCollinearIntersection(t,e,n,i):(0===r||0===s||0===a||0===o?(this._isProper=!1,t.equals2D(n)||t.equals2D(i)?this._intPt[0]=t:e.equals2D(n)||e.equals2D(i)?this._intPt[0]=e:0===r?this._intPt[0]=new X(n):0===s?this._intPt[0]=new X(i):0===a?this._intPt[0]=new X(t):0===o&&(this._intPt[0]=new X(e))):(this._isProper=!0,this._intPt[0]=this.intersection(t,e,n,i)),we.POINT_INTERSECTION)}}],[{key:\"nearestEndpoint\",value:function(t,e,n,i){var r=t,s=xt.pointToSegment(t,n,i),a=xt.pointToSegment(e,n,i);return a<s&&(s=a,r=e),(a=xt.pointToSegment(n,t,e))<s&&(s=a,r=n),(a=xt.pointToSegment(i,t,e))<s&&(s=a,r=i),r}}]),a}(we),be=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"countSegment\",value:function(t,e){if(t.x<this._p.x&&e.x<this._p.x)return null;if(this._p.x===e.x&&this._p.y===e.y)return this._isPointOnSegment=!0,null;if(t.y===this._p.y&&e.y===this._p.y){var n=t.x,i=e.x;return n>i&&(n=e.x,i=t.x),this._p.x>=n&&this._p.x<=i&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var r=ct.index(t,e,this._p);if(r===ct.COLLINEAR)return this._isPointOnSegment=!0,null;e.y<t.y&&(r=-r),r===ct.LEFT&&this._crossingCount++}}},{key:\"isPointInPolygon\",value:function(){return this.getLocation()!==H.EXTERIOR}},{key:\"getLocation\",value:function(){return this._isPointOnSegment?H.BOUNDARY:this._crossingCount%2==1?H.INTERIOR:H.EXTERIOR}},{key:\"isOnSegment\",value:function(){return this._isPointOnSegment}}],[{key:\"constructor_\",value:function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t}},{key:\"locatePointInRing\",value:function(){if(arguments[0]instanceof X&&rt(arguments[1],ht)){for(var t=arguments[0],n=arguments[1],i=new e(t),r=new X,s=new X,a=1;a<n.size();a++)if(n.getCoordinate(a,r),n.getCoordinate(a-1,s),i.countSegment(r,s),i.isOnSegment())return i.getLocation();return i.getLocation()}if(arguments[0]instanceof X&&arguments[1]instanceof Array){for(var o=arguments[0],u=arguments[1],l=new e(o),h=1;h<u.length;h++){var c=u[h],f=u[h-1];if(l.countSegment(c,f),l.isOnSegment())return l.getLocation()}return l.getLocation()}}}]),e}(),Me=function(){function e(){t(this,e)}return n(e,null,[{key:\"isOnLine\",value:function(){if(arguments[0]instanceof X&&rt(arguments[1],ht)){for(var t=arguments[0],e=arguments[1],n=new Oe,i=new X,r=new X,s=e.size(),a=1;a<s;a++)if(e.getCoordinate(a-1,i),e.getCoordinate(a,r),n.computeIntersection(t,i,r),n.hasIntersection())return!0;return!1}if(arguments[0]instanceof X&&arguments[1]instanceof Array){for(var o=arguments[0],u=arguments[1],l=new Oe,h=1;h<u.length;h++){var c=u[h-1],f=u[h];if(l.computeIntersection(o,c,f),l.hasIntersection())return!0}return!1}}},{key:\"locateInRing\",value:function(t,e){return be.locatePointInRing(t,e)}},{key:\"isInRing\",value:function(t,n){return e.locateInRing(t,n)!==H.EXTERIOR}}]),e}(),Ae=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"setAllLocations\",value:function(t){for(var e=0;e<this.location.length;e++)this.location[e]=t}},{key:\"isNull\",value:function(){for(var t=0;t<this.location.length;t++)if(this.location[t]!==H.NONE)return!1;return!0}},{key:\"setAllLocationsIfNull\",value:function(t){for(var e=0;e<this.location.length;e++)this.location[e]===H.NONE&&(this.location[e]=t)}},{key:\"isLine\",value:function(){return 1===this.location.length}},{key:\"merge\",value:function(t){if(t.location.length>this.location.length){var e=new Array(3).fill(null);e[$.ON]=this.location[$.ON],e[$.LEFT]=H.NONE,e[$.RIGHT]=H.NONE,this.location=e}for(var n=0;n<this.location.length;n++)this.location[n]===H.NONE&&n<t.location.length&&(this.location[n]=t.location[n])}},{key:\"getLocations\",value:function(){return this.location}},{key:\"flip\",value:function(){if(this.location.length<=1)return null;var t=this.location[$.LEFT];this.location[$.LEFT]=this.location[$.RIGHT],this.location[$.RIGHT]=t}},{key:\"toString\",value:function(){var t=new st;return this.location.length>1&&t.append(H.toLocationSymbol(this.location[$.LEFT])),t.append(H.toLocationSymbol(this.location[$.ON])),this.location.length>1&&t.append(H.toLocationSymbol(this.location[$.RIGHT])),t.toString()}},{key:\"setLocations\",value:function(t,e,n){this.location[$.ON]=t,this.location[$.LEFT]=e,this.location[$.RIGHT]=n}},{key:\"get\",value:function(t){return t<this.location.length?this.location[t]:H.NONE}},{key:\"isArea\",value:function(){return this.location.length>1}},{key:\"isAnyNull\",value:function(){for(var t=0;t<this.location.length;t++)if(this.location[t]===H.NONE)return!0;return!1}},{key:\"setLocation\",value:function(){if(1===arguments.length){var t=arguments[0];this.setLocation($.ON,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.location[e]=n}}},{key:\"init\",value:function(t){this.location=new Array(t).fill(null),this.setAllLocations(H.NONE)}},{key:\"isEqualOnSide\",value:function(t,e){return this.location[e]===t.location[e]}},{key:\"allPositionsEqual\",value:function(t){for(var e=0;e<this.location.length;e++)if(this.location[e]!==t)return!1;return!0}}],[{key:\"constructor_\",value:function(){if(this.location=null,1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];this.init(t.length)}else if(Number.isInteger(arguments[0])){var n=arguments[0];this.init(1),this.location[$.ON]=n}else if(arguments[0]instanceof e){var i=arguments[0];if(this.init(i.location.length),null!==i)for(var r=0;r<this.location.length;r++)this.location[r]=i.location[r]}}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this.init(3),this.location[$.ON]=s,this.location[$.LEFT]=a,this.location[$.RIGHT]=o}}}]),e}(),Pe=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getGeometryCount\",value:function(){var t=0;return this.elt[0].isNull()||t++,this.elt[1].isNull()||t++,t}},{key:\"setAllLocations\",value:function(t,e){this.elt[t].setAllLocations(e)}},{key:\"isNull\",value:function(t){return this.elt[t].isNull()}},{key:\"setAllLocationsIfNull\",value:function(){if(1===arguments.length){var t=arguments[0];this.setAllLocationsIfNull(0,t),this.setAllLocationsIfNull(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.elt[e].setAllLocationsIfNull(n)}}},{key:\"isLine\",value:function(t){return this.elt[t].isLine()}},{key:\"merge\",value:function(t){for(var e=0;e<2;e++)null===this.elt[e]&&null!==t.elt[e]?this.elt[e]=new Ae(t.elt[e]):this.elt[e].merge(t.elt[e])}},{key:\"flip\",value:function(){this.elt[0].flip(),this.elt[1].flip()}},{key:\"getLocation\",value:function(){if(1===arguments.length){var t=arguments[0];return this.elt[t].get($.ON)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.elt[e].get(n)}}},{key:\"toString\",value:function(){var t=new st;return null!==this.elt[0]&&(t.append(\"A:\"),t.append(this.elt[0].toString())),null!==this.elt[1]&&(t.append(\" B:\"),t.append(this.elt[1].toString())),t.toString()}},{key:\"isArea\",value:function(){if(0===arguments.length)return this.elt[0].isArea()||this.elt[1].isArea();if(1===arguments.length){var t=arguments[0];return this.elt[t].isArea()}}},{key:\"isAnyNull\",value:function(t){return this.elt[t].isAnyNull()}},{key:\"setLocation\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.elt[t].setLocation($.ON,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.elt[n].setLocation(i,r)}}},{key:\"isEqualOnSide\",value:function(t,e){return this.elt[0].isEqualOnSide(t.elt[0],e)&&this.elt[1].isEqualOnSide(t.elt[1],e)}},{key:\"allPositionsEqual\",value:function(t,e){return this.elt[t].allPositionsEqual(e)}},{key:\"toLine\",value:function(t){this.elt[t].isArea()&&(this.elt[t]=new Ae(this.elt[t].location[0]))}}],[{key:\"constructor_\",value:function(){if(this.elt=new Array(2).fill(null),1===arguments.length){if(Number.isInteger(arguments[0])){var t=arguments[0];this.elt[0]=new Ae(t),this.elt[1]=new Ae(t)}else if(arguments[0]instanceof e){var n=arguments[0];this.elt[0]=new Ae(n.elt[0]),this.elt[1]=new Ae(n.elt[1])}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.elt[0]=new Ae(H.NONE),this.elt[1]=new Ae(H.NONE),this.elt[i].setLocation(r)}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this.elt[0]=new Ae(s,a,o),this.elt[1]=new Ae(s,a,o)}else if(4===arguments.length){var u=arguments[0],l=arguments[1],h=arguments[2],c=arguments[3];this.elt[0]=new Ae(H.NONE,H.NONE,H.NONE),this.elt[1]=new Ae(H.NONE,H.NONE,H.NONE),this.elt[u].setLocations(l,h,c)}}},{key:\"toLineLabel\",value:function(t){for(var n=new e(H.NONE),i=0;i<2;i++)n.setLocation(i,t.getLocation(i));return n}}]),e}(),De=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"computeRing\",value:function(){if(null!==this._ring)return null;for(var t=new Array(this._pts.size()).fill(null),e=0;e<this._pts.size();e++)t[e]=this._pts.get(e);this._ring=this._geometryFactory.createLinearRing(t),this._isHole=ct.isCCW(this._ring.getCoordinates())}},{key:\"isIsolated\",value:function(){return 1===this._label.getGeometryCount()}},{key:\"computePoints\",value:function(t){this._startDe=t;var e=t,n=!0;do{if(null===e)throw new vt(\"Found null DirectedEdge\");if(e.getEdgeRing()===this)throw new vt(\"Directed Edge visited twice during ring-building at \"+e.getCoordinate());this._edges.add(e);var i=e.getLabel();G.isTrue(i.isArea()),this.mergeLabel(i),this.addPoints(e.getEdge(),e.isForward(),n),n=!1,this.setEdgeRing(e,this),e=this.getNext(e)}while(e!==this._startDe)}},{key:\"getLinearRing\",value:function(){return this._ring}},{key:\"getCoordinate\",value:function(t){return this._pts.get(t)}},{key:\"computeMaxNodeDegree\",value:function(){this._maxNodeDegree=0;var t=this._startDe;do{var e=t.getNode().getEdges().getOutgoingDegree(this);e>this._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2}},{key:\"addPoints\",value:function(t,e,n){var i=t.getCoordinates();if(e){var r=1;n&&(r=0);for(var s=r;s<i.length;s++)this._pts.add(i[s])}else{var a=i.length-2;n&&(a=i.length-1);for(var o=a;o>=0;o--)this._pts.add(i[o])}}},{key:\"isHole\",value:function(){return this._isHole}},{key:\"setInResult\",value:function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)}},{key:\"containsPoint\",value:function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!Me.isInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();){if(n.next().containsPoint(t))return!1}return!0}},{key:\"addHole\",value:function(t){this._holes.add(t)}},{key:\"isShell\",value:function(){return null===this._shell}},{key:\"getLabel\",value:function(){return this._label}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"getMaxNodeDegree\",value:function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree}},{key:\"getShell\",value:function(){return this._shell}},{key:\"mergeLabel\",value:function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=e.getLocation(n,$.RIGHT);if(i===H.NONE)return null;if(this._label.getLocation(n)===H.NONE)return this._label.setLocation(n,i),null}}},{key:\"setShell\",value:function(t){this._shell=t,null!==t&&t.addHole(this)}},{key:\"toPolygon\",value:function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n<this._holes.size();n++)e[n]=this._holes.get(n).getLinearRing();return t.createPolygon(this.getLinearRing(),e)}}],[{key:\"constructor_\",value:function(){if(this._startDe=null,this._maxNodeDegree=-1,this._edges=new yt,this._pts=new yt,this._label=new Pe(H.NONE),this._ring=null,this._isHole=null,this._shell=null,this._holes=new yt,this._geometryFactory=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._geometryFactory=e,this.computePoints(t),this.computeRing()}}}]),e}(),Fe=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"setEdgeRing\",value:function(t,e){t.setMinEdgeRing(e)}},{key:\"getNext\",value:function(t){return t.getNextMin()}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];De.constructor_.call(this,t,e)}}]),s}(De),Ge=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"buildMinimalRings\",value:function(){var t=new yt,e=this._startDe;do{if(null===e.getMinEdgeRing()){var n=new Fe(e,this._geometryFactory);t.add(n)}e=e.getNext()}while(e!==this._startDe);return t}},{key:\"setEdgeRing\",value:function(t,e){t.setEdgeRing(e)}},{key:\"linkDirectedEdgesForMinimalEdgeRings\",value:function(){var t=this._startDe;do{t.getNode().getEdges().linkMinimalDirectedEdges(this),t=t.getNext()}while(t!==this._startDe)}},{key:\"getNext\",value:function(t){return t.getNext()}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];De.constructor_.call(this,t,e)}}]),s}(De),qe=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"setVisited\",value:function(t){this._isVisited=t}},{key:\"setInResult\",value:function(t){this._isInResult=t}},{key:\"isCovered\",value:function(){return this._isCovered}},{key:\"isCoveredSet\",value:function(){return this._isCoveredSet}},{key:\"setLabel\",value:function(t){this._label=t}},{key:\"getLabel\",value:function(){return this._label}},{key:\"setCovered\",value:function(t){this._isCovered=t,this._isCoveredSet=!0}},{key:\"updateIM\",value:function(t){G.isTrue(this._label.getGeometryCount()>=2,\"found partial label\"),this.computeIM(t)}},{key:\"isInResult\",value:function(){return this._isInResult}},{key:\"isVisited\",value:function(){return this._isVisited}}],[{key:\"constructor_\",value:function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._label=t}}}]),e}(),Ye=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"isIncidentEdgeInResult\",value:function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1}},{key:\"isIsolated\",value:function(){return 1===this._label.getGeometryCount()}},{key:\"getCoordinate\",value:function(){return this._coord}},{key:\"print\",value:function(t){t.println(\"node \"+this._coord+\" lbl: \"+this._label)}},{key:\"computeIM\",value:function(t){}},{key:\"computeMergedLocation\",value:function(t,e){var n=H.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var i=t.getLocation(e);n!==H.BOUNDARY&&(n=i)}return n}},{key:\"setLabel\",value:function(){if(2!==arguments.length||!Number.isInteger(arguments[1])||!Number.isInteger(arguments[0]))return f(r(a.prototype),\"setLabel\",this).apply(this,arguments);var t=arguments[0],e=arguments[1];null===this._label?this._label=new Pe(t,e):this._label.setLocation(t,e)}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"mergeLabel\",value:function(){if(arguments[0]instanceof a){var t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof Pe)for(var e=arguments[0],n=0;n<2;n++){var i=this.computeMergedLocation(e,n),r=this._label.getLocation(n);r===H.NONE&&this._label.setLocation(n,i)}}},{key:\"add\",value:function(t){this._edges.insert(t),t.setNode(this)}},{key:\"setLabelBoundary\",value:function(t){if(null===this._label)return null;var e=H.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case H.BOUNDARY:n=H.INTERIOR;break;case H.INTERIOR:default:n=H.BOUNDARY}this._label.setLocation(t,n)}}],[{key:\"constructor_\",value:function(){this._coord=null,this._edges=null;var t=arguments[0],e=arguments[1];this._coord=t,this._edges=e,this._label=new Pe(0,H.NONE)}}]),a}(qe),ze=function(e){i(r,e);var n=c(r);function r(){return t(this,r),n.apply(this,arguments)}return r}(ee);function Xe(t){return null==t?0:t.color}function Be(t){return null==t?null:t.parent}function Ue(t,e){null!==t&&(t.color=e)}function Ve(t){return null==t?null:t.left}function He(t){return null==t?null:t.right}var Ze=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),(e=r.call(this)).root_=null,e.size_=0,e}return n(s,[{key:\"get\",value:function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return e.value;e=e.right}}return null}},{key:\"put\",value:function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:0,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,i,r=this.root_;do{if(n=r,(i=t.compareTo(r.key))<0)r=r.left;else{if(!(i>0)){var s=r.value;return r.value=e,s}r=r.right}}while(null!==r);var a={key:t,left:null,right:null,value:e,parent:n,color:0,getValue:function(){return this.value},getKey:function(){return this.key}};return i<0?n.left=a:n.right=a,this.fixAfterInsertion(a),this.size_++,null}},{key:\"fixAfterInsertion\",value:function(t){var e;for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)Be(t)===Ve(Be(Be(t)))?1===Xe(e=He(Be(Be(t))))?(Ue(Be(t),0),Ue(e,0),Ue(Be(Be(t)),1),t=Be(Be(t))):(t===He(Be(t))&&(t=Be(t),this.rotateLeft(t)),Ue(Be(t),0),Ue(Be(Be(t)),1),this.rotateRight(Be(Be(t)))):1===Xe(e=Ve(Be(Be(t))))?(Ue(Be(t),0),Ue(e,0),Ue(Be(Be(t)),1),t=Be(Be(t))):(t===Ve(Be(t))&&(t=Be(t),this.rotateRight(t)),Ue(Be(t),0),Ue(Be(Be(t)),1),this.rotateLeft(Be(Be(t))));this.root_.color=0}},{key:\"values\",value:function(){var t=new yt,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=s.successor(e));)t.add(e.value);return t}},{key:\"entrySet\",value:function(){var t=new J,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=s.successor(e));)t.add(e);return t}},{key:\"rotateLeft\",value:function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}}},{key:\"rotateRight\",value:function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}}},{key:\"getFirstEntry\",value:function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t}},{key:\"size\",value:function(){return this.size_}},{key:\"containsKey\",value:function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return!0;e=e.right}}return!1}}],[{key:\"successor\",value:function(t){var e;if(null===t)return null;if(null!==t.right){for(e=t.right;null!==e.left;)e=e.left;return e}e=t.parent;for(var n=t;null!==e&&n===e.right;)n=e,e=e.parent;return e}}]),s}(ze),je=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"find\",value:function(t){return this.nodeMap.get(t)}},{key:\"addNode\",value:function(){if(arguments[0]instanceof X){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof Ye){var n=arguments[0],i=this.nodeMap.get(n.getCoordinate());return null===i?(this.nodeMap.put(n.getCoordinate(),n),n):(i.mergeLabel(n),i)}}},{key:\"print\",value:function(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"iterator\",value:function(){return this.nodeMap.values().iterator()}},{key:\"values\",value:function(){return this.nodeMap.values()}},{key:\"getBoundaryNodes\",value:function(t){for(var e=new yt,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().getLocation(t)===H.BOUNDARY&&e.add(i)}return e}},{key:\"add\",value:function(t){var e=t.getCoordinate();this.addNode(e).add(t)}}],[{key:\"constructor_\",value:function(){this.nodeMap=new Ze,this.nodeFact=null;var t=arguments[0];this.nodeFact=t}}]),e}(),We=function(){function e(){t(this,e)}return n(e,null,[{key:\"isNorthern\",value:function(t){return t===e.NE||t===e.NW}},{key:\"isOpposite\",value:function(t,e){return t!==e&&2===(t-e+4)%4}},{key:\"commonHalfPlane\",value:function(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var n=t<e?t:e;return 0===n&&3===(t>e?t:e)?3:n}},{key:\"isInHalfPlane\",value:function(t,n){return n===e.SE?t===e.SE||t===e.SW:t===n||t===n+1}},{key:\"quadrant\",value:function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],n=arguments[1];if(0===t&&0===n)throw new m(\"Cannot compute the quadrant for point ( \"+t+\", \"+n+\" )\");return t>=0?n>=0?e.NE:e.SE:n>=0?e.NW:e.SW}if(arguments[0]instanceof X&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1];if(r.x===i.x&&r.y===i.y)throw new m(\"Cannot compute the quadrant for two identical points \"+i);return r.x>=i.x?r.y>=i.y?e.NE:e.SE:r.y>=i.y?e.NW:e.SW}}}]),e}();We.NE=0,We.NW=1,We.SW=2,We.SE=3;var Ke=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"compareDirection\",value:function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant<t._quadrant?-1:ct.index(t._p0,t._p1,this._p1)}},{key:\"getDy\",value:function(){return this._dy}},{key:\"getCoordinate\",value:function(){return this._p0}},{key:\"setNode\",value:function(t){this._node=t}},{key:\"print\",value:function(t){var e=Math.atan2(this._dy,this._dx),n=this.getClass().getName(),i=n.lastIndexOf(\".\"),r=n.substring(i+1);t.print(\" \"+r+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+e+\" \"+this._label)}},{key:\"compareTo\",value:function(t){var e=t;return this.compareDirection(e)}},{key:\"getDirectedCoordinate\",value:function(){return this._p1}},{key:\"getDx\",value:function(){return this._dx}},{key:\"getLabel\",value:function(){return this._label}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"getQuadrant\",value:function(){return this._quadrant}},{key:\"getNode\",value:function(){return this._node}},{key:\"toString\",value:function(){var t=Math.atan2(this._dy,this._dx),e=this.getClass().getName(),n=e.lastIndexOf(\".\");return\" \"+e.substring(n+1)+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+t+\" \"+this._label}},{key:\"computeLabel\",value:function(t){}},{key:\"init\",value:function(t,e){this._p0=t,this._p1=e,this._dx=e.x-t.x,this._dy=e.y-t.y,this._quadrant=We.quadrant(this._dx,this._dy),G.isTrue(!(0===this._dx&&0===this._dy),\"EdgeEnd with identical endpoints found\")}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var t=arguments[0];this._edge=t}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];e.constructor_.call(this,n,i,r,null)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];e.constructor_.call(this,s),this.init(a,o),this._label=u}}}]),e}(),Je=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"getNextMin\",value:function(){return this._nextMin}},{key:\"getDepth\",value:function(t){return this._depth[t]}},{key:\"setVisited\",value:function(t){this._isVisited=t}},{key:\"computeDirectedLabel\",value:function(){this._label=new Pe(this._edge.getLabel()),this._isForward||this._label.flip()}},{key:\"getNext\",value:function(){return this._next}},{key:\"setDepth\",value:function(t,e){if(-999!==this._depth[t]&&this._depth[t]!==e)throw new vt(\"assigned depths do not match\",this.getCoordinate());this._depth[t]=e}},{key:\"isInteriorAreaEdge\",value:function(){for(var t=!0,e=0;e<2;e++)this._label.isArea(e)&&this._label.getLocation(e,$.LEFT)===H.INTERIOR&&this._label.getLocation(e,$.RIGHT)===H.INTERIOR||(t=!1);return t}},{key:\"setNextMin\",value:function(t){this._nextMin=t}},{key:\"print\",value:function(t){f(r(a.prototype),\"print\",this).call(this,t),t.print(\" \"+this._depth[$.LEFT]+\"/\"+this._depth[$.RIGHT]),t.print(\" (\"+this.getDepthDelta()+\")\"),this._isInResult&&t.print(\" inResult\")}},{key:\"setMinEdgeRing\",value:function(t){this._minEdgeRing=t}},{key:\"isLineEdge\",value:function(){var t=this._label.isLine(0)||this._label.isLine(1),e=!this._label.isArea(0)||this._label.allPositionsEqual(0,H.EXTERIOR),n=!this._label.isArea(1)||this._label.allPositionsEqual(1,H.EXTERIOR);return t&&e&&n}},{key:\"setEdgeRing\",value:function(t){this._edgeRing=t}},{key:\"getMinEdgeRing\",value:function(){return this._minEdgeRing}},{key:\"getDepthDelta\",value:function(){var t=this._edge.getDepthDelta();return this._isForward||(t=-t),t}},{key:\"setInResult\",value:function(t){this._isInResult=t}},{key:\"getSym\",value:function(){return this._sym}},{key:\"isForward\",value:function(){return this._isForward}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"printEdge\",value:function(t){this.print(t),t.print(\" \"),this._isForward?this._edge.print(t):this._edge.printReverse(t)}},{key:\"setSym\",value:function(t){this._sym=t}},{key:\"setVisitedEdge\",value:function(t){this.setVisited(t),this._sym.setVisited(t)}},{key:\"setEdgeDepths\",value:function(t,e){var n=this.getEdge().getDepthDelta();this._isForward||(n=-n);var i=1;t===$.LEFT&&(i=-1);var r=$.opposite(t),s=e+n*i;this.setDepth(t,e),this.setDepth(r,s)}},{key:\"getEdgeRing\",value:function(){return this._edgeRing}},{key:\"isInResult\",value:function(){return this._isInResult}},{key:\"setNext\",value:function(t){this._next=t}},{key:\"isVisited\",value:function(){return this._isVisited}}],[{key:\"constructor_\",value:function(){this._isForward=null,this._isInResult=!1,this._isVisited=!1,this._sym=null,this._next=null,this._nextMin=null,this._edgeRing=null,this._minEdgeRing=null,this._depth=[0,-999,-999];var t=arguments[0],e=arguments[1];if(Ke.constructor_.call(this,t),this._isForward=e,e)this.init(t.getCoordinate(0),t.getCoordinate(1));else{var n=t.getNumPoints()-1;this.init(t.getCoordinate(n),t.getCoordinate(n-1))}this.computeDirectedLabel()}},{key:\"depthFactor\",value:function(t,e){return t===H.EXTERIOR&&e===H.INTERIOR?1:t===H.INTERIOR&&e===H.EXTERIOR?-1:0}}]),a}(Ke),Qe=function(){function e(){t(this,e)}return n(e,[{key:\"createNode\",value:function(t){return new Ye(t,null)}}]),e}(),$e=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"printEdges\",value:function(t){t.println(\"Edges:\");for(var e=0;e<this._edges.size();e++){t.println(\"edge \"+e+\":\");var n=this._edges.get(e);n.print(t),n.eiList.print(t)}}},{key:\"find\",value:function(t){return this._nodes.find(t)}},{key:\"addNode\",value:function(){if(arguments[0]instanceof Ye){var t=arguments[0];return this._nodes.addNode(t)}if(arguments[0]instanceof X){var e=arguments[0];return this._nodes.addNode(e)}}},{key:\"getNodeIterator\",value:function(){return this._nodes.iterator()}},{key:\"linkResultDirectedEdges\",value:function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkResultDirectedEdges()}}},{key:\"debugPrintln\",value:function(t){mt.out.println(t)}},{key:\"isBoundaryNode\",value:function(t,e){var n=this._nodes.find(e);if(null===n)return!1;var i=n.getLabel();return null!==i&&i.getLocation(t)===H.BOUNDARY}},{key:\"linkAllDirectedEdges\",value:function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkAllDirectedEdges()}}},{key:\"matchInSameDirection\",value:function(t,e,n,i){return!!t.equals(n)&&(ct.index(t,e,i)===ct.COLLINEAR&&We.quadrant(t,e)===We.quadrant(n,i))}},{key:\"getEdgeEnds\",value:function(){return this._edgeEndList}},{key:\"debugPrint\",value:function(t){mt.out.print(t)}},{key:\"getEdgeIterator\",value:function(){return this._edges.iterator()}},{key:\"findEdgeInSameDirection\",value:function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(this.matchInSameDirection(t,e,r[0],r[1]))return i;if(this.matchInSameDirection(t,e,r[r.length-1],r[r.length-2]))return i}return null}},{key:\"insertEdge\",value:function(t){this._edges.add(t)}},{key:\"findEdgeEnd\",value:function(t){for(var e=this.getEdgeEnds().iterator();e.hasNext();){var n=e.next();if(n.getEdge()===t)return n}return null}},{key:\"addEdges\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this._edges.add(n);var i=new Je(n,!0),r=new Je(n,!1);i.setSym(r),r.setSym(i),this.add(i),this.add(r)}}},{key:\"add\",value:function(t){this._nodes.add(t),this._edgeEndList.add(t)}},{key:\"getNodes\",value:function(){return this._nodes.values()}},{key:\"findEdge\",value:function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(t.equals(r[0])&&e.equals(r[1]))return i}return null}}],[{key:\"constructor_\",value:function(){if(this._edges=new yt,this._nodes=null,this._edgeEndList=new yt,0===arguments.length)this._nodes=new je(new Qe);else if(1===arguments.length){var t=arguments[0];this._nodes=new je(t)}}},{key:\"linkResultDirectedEdges\",value:function(t){for(var e=t.iterator();e.hasNext();){e.next().getEdges().linkResultDirectedEdges()}}}]),e}(),tn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"sortShellsAndHoles\",value:function(t,e,n){for(var i=t.iterator();i.hasNext();){var r=i.next();r.isHole()?n.add(r):e.add(r)}}},{key:\"computePolygons\",value:function(t){for(var e=new yt,n=t.iterator();n.hasNext();){var i=n.next().toPolygon(this._geometryFactory);e.add(i)}return e}},{key:\"placeFreeHoles\",value:function(t,n){for(var i=n.iterator();i.hasNext();){var r=i.next();if(null===r.getShell()){var s=e.findEdgeRingContaining(r,t);if(null===s)throw new vt(\"unable to assign hole to a shell\",r.getCoordinate(0));r.setShell(s)}}}},{key:\"buildMinimalEdgeRings\",value:function(t,e,n){for(var i=new yt,r=t.iterator();r.hasNext();){var s=r.next();if(s.getMaxNodeDegree()>2){s.linkDirectedEdgesForMinimalEdgeRings();var a=s.buildMinimalRings(),o=this.findShell(a);null!==o?(this.placePolygonHoles(o,a),e.add(o)):n.addAll(a)}else i.add(s)}return i}},{key:\"buildMaximalEdgeRings\",value:function(t){for(var e=new yt,n=t.iterator();n.hasNext();){var i=n.next();if(i.isInResult()&&i.getLabel().isArea()&&null===i.getEdgeRing()){var r=new Ge(i,this._geometryFactory);e.add(r),r.setInResult()}}return e}},{key:\"placePolygonHoles\",value:function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();i.isHole()&&i.setShell(t)}}},{key:\"getPolygons\",value:function(){return this.computePolygons(this._shellList)}},{key:\"findShell\",value:function(t){for(var e=0,n=null,i=t.iterator();i.hasNext();){var r=i.next();r.isHole()||(n=r,e++)}return G.isTrue(e<=1,\"found two shells in MinimalEdgeRing list\"),n}},{key:\"add\",value:function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];$e.linkResultDirectedEdges(n);var i=this.buildMaximalEdgeRings(e),r=new yt,s=this.buildMinimalEdgeRings(i,this._shellList,r);this.sortShellsAndHoles(s,this._shellList,r),this.placeFreeHoles(this._shellList,r)}}}],[{key:\"constructor_\",value:function(){this._geometryFactory=null,this._shellList=new yt;var t=arguments[0];this._geometryFactory=t}},{key:\"findEdgeRingContaining\",value:function(t,e){for(var n=t.getLinearRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),s=null,a=null,o=e.iterator();o.hasNext();){var u=o.next(),l=u.getLinearRing(),h=l.getEnvelopeInternal();if(!h.equals(i)&&h.contains(i)){r=jt.ptNotInList(n.getCoordinates(),l.getCoordinates());var c=!1;Me.isInRing(r,l.getCoordinates())&&(c=!0),c&&(null===s||a.contains(h))&&(a=(s=u).getLinearRing().getEnvelopeInternal())}}return s}}]),e}(),en=function(){function e(){t(this,e)}return n(e,[{key:\"getBounds\",value:function(){}}]),e}(),nn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getItem\",value:function(){return this._item}},{key:\"getBounds\",value:function(){return this._bounds}},{key:\"interfaces_\",get:function(){return[en,E]}}],[{key:\"constructor_\",value:function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e}}]),e}(),rn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"poll\",value:function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t}},{key:\"size\",value:function(){return this._size}},{key:\"reorder\",value:function(t){for(var e=null,n=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(n)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,n)}},{key:\"clear\",value:function(){this._size=0,this._items.clear()}},{key:\"peek\",value:function(){return this.isEmpty()?null:this._items.get(1)}},{key:\"isEmpty\",value:function(){return 0===this._size}},{key:\"add\",value:function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)}}],[{key:\"constructor_\",value:function(){this._size=null,this._items=null,this._size=0,this._items=new yt,this._items.add(null)}}]),e}(),sn=function(){function e(){t(this,e)}return n(e,[{key:\"insert\",value:function(t,e){}},{key:\"remove\",value:function(t,e){}},{key:\"query\",value:function(){}}]),e}(),an=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getLevel\",value:function(){return this._level}},{key:\"size\",value:function(){return this._childBoundables.size()}},{key:\"getChildBoundables\",value:function(){return this._childBoundables}},{key:\"addChildBoundable\",value:function(t){G.isTrue(null===this._bounds),this._childBoundables.add(t)}},{key:\"isEmpty\",value:function(){return this._childBoundables.isEmpty()}},{key:\"getBounds\",value:function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds}},{key:\"interfaces_\",get:function(){return[en,E]}}],[{key:\"constructor_\",value:function(){if(this._childBoundables=new yt,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}}}]),e}(),on={reverseOrder:function(){return{compare:function(t,e){return e.compareTo(t)}}},min:function(t){return on.sort(t),t.get(0)},sort:function(t,e){var n=t.toArray();e?At.sort(n,e):At.sort(n);for(var i=t.iterator(),r=0,s=n.length;r<s;r++)i.next(),i.set(n[r])},singletonList:function(t){var e=new yt;return e.add(t),e}},un=function(){function e(){t(this,e)}return n(e,null,[{key:\"maxDistance\",value:function(t,n,i,r,s,a,o,u){var l=e.distance(t,n,s,a);return l=Math.max(l,e.distance(t,n,o,u)),l=Math.max(l,e.distance(i,r,s,a)),l=Math.max(l,e.distance(i,r,o,u))}},{key:\"distance\",value:function(t,e,n,i){var r=n-t,s=i-e;return Math.sqrt(r*r+s*s)}},{key:\"maximumDistance\",value:function(t,n){var i=Math.min(t.getMinX(),n.getMinX()),r=Math.min(t.getMinY(),n.getMinY()),s=Math.max(t.getMaxX(),n.getMaxX()),a=Math.max(t.getMaxY(),n.getMaxY());return e.distance(i,r,s,a)}},{key:\"minMaxDistance\",value:function(t,n){var i=t.getMinX(),r=t.getMinY(),s=t.getMaxX(),a=t.getMaxY(),o=n.getMinX(),u=n.getMinY(),l=n.getMaxX(),h=n.getMaxY(),c=e.maxDistance(i,r,i,a,o,u,o,h);return c=Math.min(c,e.maxDistance(i,r,i,a,o,u,l,u)),c=Math.min(c,e.maxDistance(i,r,i,a,l,h,o,h)),c=Math.min(c,e.maxDistance(i,r,i,a,l,h,l,u)),c=Math.min(c,e.maxDistance(i,r,s,r,o,u,o,h)),c=Math.min(c,e.maxDistance(i,r,s,r,o,u,l,u)),c=Math.min(c,e.maxDistance(i,r,s,r,l,h,o,h)),c=Math.min(c,e.maxDistance(i,r,s,r,l,h,l,u)),c=Math.min(c,e.maxDistance(s,a,i,a,o,u,o,h)),c=Math.min(c,e.maxDistance(s,a,i,a,o,u,l,u)),c=Math.min(c,e.maxDistance(s,a,i,a,l,h,o,h)),c=Math.min(c,e.maxDistance(s,a,i,a,l,h,l,u)),c=Math.min(c,e.maxDistance(s,a,s,r,o,u,o,h)),c=Math.min(c,e.maxDistance(s,a,s,r,o,u,l,u)),c=Math.min(c,e.maxDistance(s,a,s,r,l,h,o,h)),c=Math.min(c,e.maxDistance(s,a,s,r,l,h,l,u))}}]),e}(),ln=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"maximumDistance\",value:function(){return un.maximumDistance(this._boundable1.getBounds(),this._boundable2.getBounds())}},{key:\"expandToQueue\",value:function(t,n){var i=e.isComposite(this._boundable1),r=e.isComposite(this._boundable2);if(i&&r)return e.area(this._boundable1)>e.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,!1,t,n),null):(this.expand(this._boundable2,this._boundable1,!0,t,n),null);if(i)return this.expand(this._boundable1,this._boundable2,!1,t,n),null;if(r)return this.expand(this._boundable2,this._boundable1,!0,t,n),null;throw new m(\"neither boundable is composite\")}},{key:\"isLeaves\",value:function(){return!(e.isComposite(this._boundable1)||e.isComposite(this._boundable2))}},{key:\"compareTo\",value:function(t){var e=t;return this._distance<e._distance?-1:this._distance>e._distance?1:0}},{key:\"expand\",value:function(t,n,i,r,s){for(var a=t.getChildBoundables().iterator();a.hasNext();){var o=a.next(),u=null;(u=i?new e(n,o,this._itemDistance):new e(o,n,this._itemDistance)).getDistance()<s&&r.add(u)}}},{key:\"getBoundable\",value:function(t){return 0===t?this._boundable1:this._boundable2}},{key:\"getDistance\",value:function(){return this._distance}},{key:\"distance\",value:function(){return this.isLeaves()?this._itemDistance.distance(this._boundable1,this._boundable2):this._boundable1.getBounds().distance(this._boundable2.getBounds())}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._boundable1=null,this._boundable2=null,this._distance=null,this._itemDistance=null;var t=arguments[0],e=arguments[1],n=arguments[2];this._boundable1=t,this._boundable2=e,this._itemDistance=n,this._distance=this.distance()}},{key:\"area\",value:function(t){return t.getBounds().getArea()}},{key:\"isComposite\",value:function(t){return t instanceof an}}]),e}(),hn=function(){function e(){t(this,e)}return n(e,[{key:\"visitItem\",value:function(t){}}]),e}(),cn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"queryInternal\",value:function(){if(rt(arguments[2],hn)&&arguments[0]instanceof Object&&arguments[1]instanceof an)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=e.getChildBoundables(),r=0;r<i.size();r++){var s=i.get(r);this.getIntersectsOp().intersects(s.getBounds(),t)&&(s instanceof an?this.queryInternal(t,s,n):s instanceof nn?n.visitItem(s.getItem()):G.shouldNeverReachHere())}else if(rt(arguments[2],nt)&&arguments[0]instanceof Object&&arguments[1]instanceof an)for(var a=arguments[0],o=arguments[1],u=arguments[2],l=o.getChildBoundables(),h=0;h<l.size();h++){var c=l.get(h);this.getIntersectsOp().intersects(c.getBounds(),a)&&(c instanceof an?this.queryInternal(a,c,u):c instanceof nn?u.add(c.getItem()):G.shouldNeverReachHere())}}},{key:\"getNodeCapacity\",value:function(){return this._nodeCapacity}},{key:\"lastNode\",value:function(t){return t.get(t.size()-1)}},{key:\"size\",value:function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var t=arguments[0],e=0,n=t.getChildBoundables().iterator();n.hasNext();){var i=n.next();i instanceof an?e+=this.size(i):i instanceof nn&&(e+=1)}return e}}},{key:\"removeItem\",value:function(t,e){for(var n=null,i=t.getChildBoundables().iterator();i.hasNext();){var r=i.next();r instanceof nn&&r.getItem()===e&&(n=r)}return null!==n&&(t.getChildBoundables().remove(n),!0)}},{key:\"itemsTree\",value:function(){if(0===arguments.length){this.build();var t=this.itemsTree(this._root);return null===t?new yt:t}if(1===arguments.length){for(var e=arguments[0],n=new yt,i=e.getChildBoundables().iterator();i.hasNext();){var r=i.next();if(r instanceof an){var s=this.itemsTree(r);null!==s&&n.add(s)}else r instanceof nn?n.add(r.getItem()):G.shouldNeverReachHere()}return n.size()<=0?null:n}}},{key:\"insert\",value:function(t,e){G.isTrue(!this._built,\"Cannot insert items into an STR packed R-tree after it has been built.\"),this._itemBoundables.add(new nn(t,e))}},{key:\"boundablesAtLevel\",value:function(){if(1===arguments.length){var t=arguments[0],e=new yt;return this.boundablesAtLevel(t,this._root,e),e}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];if(G.isTrue(n>-2),i.getLevel()===n)return r.add(i),null;for(var s=i.getChildBoundables().iterator();s.hasNext();){var a=s.next();a instanceof an?this.boundablesAtLevel(n,a,r):(G.isTrue(a instanceof nn),-1===n&&r.add(a))}return null}}},{key:\"query\",value:function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new yt;return this.isEmpty()||this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.queryInternal(t,this._root,e),e}if(2===arguments.length){var n=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),n)&&this.queryInternal(n,this._root,i)}}},{key:\"build\",value:function(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0}},{key:\"getRoot\",value:function(){return this.build(),this._root}},{key:\"remove\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.remove(t,this._root,e)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=this.removeItem(i,r);if(s)return!0;for(var a=null,o=i.getChildBoundables().iterator();o.hasNext();){var u=o.next();if(this.getIntersectsOp().intersects(u.getBounds(),n)&&(u instanceof an&&(s=this.remove(n,u,r)))){a=u;break}}return null!==a&&a.getChildBoundables().isEmpty()&&i.getChildBoundables().remove(a),s}}},{key:\"createHigherLevels\",value:function(t,e){G.isTrue(!t.isEmpty());var n=this.createParentBoundables(t,e+1);return 1===n.size()?n.get(0):this.createHigherLevels(n,e+1)}},{key:\"depth\",value:function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(1===arguments.length){for(var t=arguments[0],e=0,n=t.getChildBoundables().iterator();n.hasNext();){var i=n.next();if(i instanceof an){var r=this.depth(i);r>e&&(e=r)}}return e+1}}},{key:\"createParentBoundables\",value:function(t,e){G.isTrue(!t.isEmpty());var n=new yt;n.add(this.createNode(e));var i=new yt(t);on.sort(i,this.getComparator());for(var r=i.iterator();r.hasNext();){var s=r.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(s)}return n}},{key:\"isEmpty\",value:function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){if(this._root=null,this._built=!1,this._itemBoundables=new yt,this._nodeCapacity=null,0===arguments.length)e.constructor_.call(this,e.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var t=arguments[0];G.isTrue(t>1,\"Node capacity must be greater than 1\"),this._nodeCapacity=t}}},{key:\"compareDoubles\",value:function(t,e){return t>e?1:t<e?-1:0}}]),e}();cn.IntersectsOp=function(){},cn.DEFAULT_NODE_CAPACITY=10;var fn=function(){function e(){t(this,e)}return n(e,[{key:\"distance\",value:function(t,e){}}]),e}(),vn=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"createParentBoundablesFromVerticalSlices\",value:function(t,e){G.isTrue(t.length>0);for(var n=new yt,i=0;i<t.length;i++)n.addAll(this.createParentBoundablesFromVerticalSlice(t[i],e));return n}},{key:\"nearestNeighbourK\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.nearestNeighbourK(t,A.POSITIVE_INFINITY,e)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=i,o=new rn;o.add(n);for(var u=new rn;!o.isEmpty()&&s>=0;){var l=o.poll(),h=l.getDistance();if(h>=s)break;if(l.isLeaves())if(u.size()<r)u.add(l);else{var c=u.peek();c.getDistance()>h&&(u.poll(),u.add(l));var f=u.peek();s=f.getDistance()}else l.expandToQueue(o,s)}return a.getItems(u)}}},{key:\"createNode\",value:function(t){return new gn(t)}},{key:\"size\",value:function(){return 0===arguments.length?f(r(a.prototype),\"size\",this).call(this):f(r(a.prototype),\"size\",this).apply(this,arguments)}},{key:\"insert\",value:function(){if(!(2===arguments.length&&arguments[1]instanceof Object&&arguments[0]instanceof U))return f(r(a.prototype),\"insert\",this).apply(this,arguments);var t=arguments[0],e=arguments[1];if(t.isNull())return null;f(r(a.prototype),\"insert\",this).call(this,t,e)}},{key:\"getIntersectsOp\",value:function(){return a.intersectsOp}},{key:\"verticalSlices\",value:function(t,e){for(var n=Math.trunc(Math.ceil(t.size()/e)),i=new Array(e).fill(null),r=t.iterator(),s=0;s<e;s++){i[s]=new yt;for(var a=0;r.hasNext()&&a<n;){var o=r.next();i[s].add(o),a++}}return i}},{key:\"query\",value:function(){if(1===arguments.length){var t=arguments[0];return f(r(a.prototype),\"query\",this).call(this,t)}if(2===arguments.length){var e=arguments[0],n=arguments[1];f(r(a.prototype),\"query\",this).call(this,e,n)}}},{key:\"getComparator\",value:function(){return a.yComparator}},{key:\"createParentBoundablesFromVerticalSlice\",value:function(t,e){return f(r(a.prototype),\"createParentBoundables\",this).call(this,t,e)}},{key:\"remove\",value:function(){if(2===arguments.length&&arguments[1]instanceof Object&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];return f(r(a.prototype),\"remove\",this).call(this,t,e)}return f(r(a.prototype),\"remove\",this).apply(this,arguments)}},{key:\"depth\",value:function(){return 0===arguments.length?f(r(a.prototype),\"depth\",this).call(this):f(r(a.prototype),\"depth\",this).apply(this,arguments)}},{key:\"createParentBoundables\",value:function(t,e){G.isTrue(!t.isEmpty());var n=Math.trunc(Math.ceil(t.size()/this.getNodeCapacity())),i=new yt(t);on.sort(i,a.xComparator);var r=this.verticalSlices(i,Math.trunc(Math.ceil(Math.sqrt(n))));return this.createParentBoundablesFromVerticalSlices(r,e)}},{key:\"nearestNeighbour\",value:function(){if(1===arguments.length){if(rt(arguments[0],fn)){var t=arguments[0];if(this.isEmpty())return null;var e=new ln(this.getRoot(),this.getRoot(),t);return this.nearestNeighbour(e)}if(arguments[0]instanceof ln){var n=arguments[0],i=A.POSITIVE_INFINITY,r=null,s=new rn;for(s.add(n);!s.isEmpty()&&i>0;){var a=s.poll(),o=a.getDistance();if(o>=i)break;a.isLeaves()?(i=o,r=a):a.expandToQueue(s,i)}return null===r?null:[r.getBoundable(0).getItem(),r.getBoundable(1).getItem()]}}else{if(2===arguments.length){var u=arguments[0],l=arguments[1];if(this.isEmpty()||u.isEmpty())return null;var h=new ln(this.getRoot(),u.getRoot(),l);return this.nearestNeighbour(h)}if(3===arguments.length){var c=arguments[0],f=arguments[1],v=arguments[2],g=new nn(c,f),y=new ln(this.getRoot(),g,v);return this.nearestNeighbour(y)[0]}if(4===arguments.length){var d=arguments[0],_=arguments[1],p=arguments[2],m=arguments[3],k=new nn(d,_),x=new ln(this.getRoot(),k,p);return this.nearestNeighbourK(x,m)}}}},{key:\"isWithinDistance\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=A.POSITIVE_INFINITY,i=new rn;for(i.add(t);!i.isEmpty();){var r=i.poll(),s=r.getDistance();if(s>e)return!1;if(r.maximumDistance()<=e)return!0;if(r.isLeaves()){if((n=s)<=e)return!0}else r.expandToQueue(i,n)}return!1}if(3===arguments.length){var a=arguments[0],o=arguments[1],u=arguments[2],l=new ln(this.getRoot(),a.getRoot(),o);return this.isWithinDistance(l,u)}}},{key:\"interfaces_\",get:function(){return[sn,E]}}],[{key:\"constructor_\",value:function(){if(0===arguments.length)a.constructor_.call(this,a.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var t=arguments[0];cn.constructor_.call(this,t)}}},{key:\"centreX\",value:function(t){return a.avg(t.getMinX(),t.getMaxX())}},{key:\"avg\",value:function(t,e){return(t+e)/2}},{key:\"getItems\",value:function(t){for(var e=new Array(t.size()).fill(null),n=0;!t.isEmpty();){var i=t.poll();e[n]=i.getBoundable(0).getItem(),n++}return e}},{key:\"centreY\",value:function(t){return a.avg(t.getMinY(),t.getMaxY())}}]),a}(cn),gn=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"computeBounds\",value:function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new U(n.getBounds()):t.expandToInclude(n.getBounds())}return t}}],[{key:\"constructor_\",value:function(){var t=arguments[0];an.constructor_.call(this,t)}}]),s}(an);vn.STRtreeNode=gn,vn.xComparator=new(function(){function e(){t(this,e)}return n(e,[{key:\"interfaces_\",get:function(){return[P]}},{key:\"compare\",value:function(t,e){return cn.compareDoubles(vn.centreX(t.getBounds()),vn.centreX(e.getBounds()))}}]),e}()),vn.yComparator=new(function(){function e(){t(this,e)}return n(e,[{key:\"interfaces_\",get:function(){return[P]}},{key:\"compare\",value:function(t,e){return cn.compareDoubles(vn.centreY(t.getBounds()),vn.centreY(e.getBounds()))}}]),e}()),vn.intersectsOp=new(function(){function e(){t(this,e)}return n(e,[{key:\"interfaces_\",get:function(){return[IntersectsOp]}},{key:\"intersects\",value:function(t,e){return t.intersects(e)}}]),e}()),vn.DEFAULT_NODE_CAPACITY=10;var yn=function(){function e(){t(this,e)}return n(e,null,[{key:\"relativeSign\",value:function(t,e){return t<e?-1:t>e?1:0}},{key:\"compare\",value:function(t,n,i){if(n.equals2D(i))return 0;var r=e.relativeSign(n.x,i.x),s=e.relativeSign(n.y,i.y);switch(t){case 0:return e.compareValue(r,s);case 1:return e.compareValue(s,r);case 2:return e.compareValue(s,-r);case 3:return e.compareValue(-r,s);case 4:return e.compareValue(-r,-s);case 5:return e.compareValue(-s,-r);case 6:return e.compareValue(-s,r);case 7:return e.compareValue(r,-s)}return G.shouldNeverReachHere(\"invalid octant value\"),0}},{key:\"compareValue\",value:function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0}}]),e}(),dn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinate\",value:function(){return this.coord}},{key:\"print\",value:function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex)}},{key:\"compareTo\",value:function(t){var e=t;return this.segmentIndex<e.segmentIndex?-1:this.segmentIndex>e.segmentIndex?1:this.coord.equals2D(e.coord)?0:this._isInterior?e._isInterior?yn.compare(this._segmentOctant,this.coord,e.coord):1:-1}},{key:\"isEndPoint\",value:function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t}},{key:\"toString\",value:function(){return this.segmentIndex+\":\"+this.coord.toString()}},{key:\"isInterior\",value:function(){return this._isInterior}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._segString=t,this.coord=new X(e),this.segmentIndex=n,this._segmentOctant=i,this._isInterior=!e.equals2D(t.getCoordinate(n))}}]),e}(),_n=function(){function e(){t(this,e)}return n(e,[{key:\"hasNext\",value:function(){}},{key:\"next\",value:function(){}},{key:\"remove\",value:function(){}}]),e}(),pn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getSplitCoordinates\",value:function(){var t=new Zt;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next();this.addEdgeCoordinates(n,i,t),n=i}return t.toCoordinateArray()}},{key:\"addCollapsedNodes\",value:function(){var t=new yt;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}}},{key:\"createSplitEdgePts\",value:function(t,e){var n=e.segmentIndex-t.segmentIndex+2;if(2===n)return[new X(t.coord),new X(e.coord)];var i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);r||n--;var s=new Array(n).fill(null),a=0;s[a++]=new X(t.coord);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)s[a++]=this._edge.getCoordinate(o);return r&&(s[a]=new X(e.coord)),s}},{key:\"print\",value:function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"findCollapsesFromExistingVertices\",value:function(t){for(var e=0;e<this._edge.size()-2;e++){var n=this._edge.getCoordinate(e);this._edge.getCoordinate(e+1);var i=this._edge.getCoordinate(e+2);n.equals2D(i)&&t.add(at.valueOf(e+1))}}},{key:\"addEdgeCoordinates\",value:function(t,e,n){var i=this.createSplitEdgePts(t,e);n.add(i,!1)}},{key:\"iterator\",value:function(){return this._nodeMap.values().iterator()}},{key:\"addSplitEdges\",value:function(t){this.addEndpoints(),this.addCollapsedNodes();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}}},{key:\"findCollapseIndex\",value:function(t,e,n){if(!t.coord.equals2D(e.coord))return!1;var i=e.segmentIndex-t.segmentIndex;return e.isInterior()||i--,1===i&&(n[0]=t.segmentIndex+1,!0)}},{key:\"findCollapsesFromInsertedNodes\",value:function(t){for(var e=new Array(1).fill(null),n=this.iterator(),i=n.next();n.hasNext();){var r=n.next();this.findCollapseIndex(i,r,e)&&t.add(at.valueOf(e[0])),i=r}}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"addEndpoints\",value:function(){var t=this._edge.size()-1;this.add(this._edge.getCoordinate(0),0),this.add(this._edge.getCoordinate(t),t)}},{key:\"createSplitEdge\",value:function(t,e){var n=this.createSplitEdgePts(t,e);return new In(n,this._edge.getData())}},{key:\"add\",value:function(t,e){var n=new dn(this._edge,t,e,this._edge.getSegmentOctant(e)),i=this._nodeMap.get(n);return null!==i?(G.isTrue(i.coord.equals2D(t),\"Found equal nodes with different coordinates\"),i):(this._nodeMap.put(n,n),n)}},{key:\"checkSplitEdgesCorrectness\",value:function(t){var e=this._edge.getCoordinates(),n=t.get(0).getCoordinate(0);if(!n.equals2D(e[0]))throw new D(\"bad split edge start point at \"+n);var i=t.get(t.size()-1).getCoordinates(),r=i[i.length-1];if(!r.equals2D(e[e.length-1]))throw new D(\"bad split edge end point at \"+r)}}],[{key:\"constructor_\",value:function(){this._nodeMap=new Ze,this._edge=null;var t=arguments[0];this._edge=t}}]),e}(),mn=function(){function e(){t(this,e)}return n(e,null,[{key:\"octant\",value:function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],n=arguments[1];if(0===t&&0===n)throw new m(\"Cannot compute the octant for point ( \"+t+\", \"+n+\" )\");var i=Math.abs(t),r=Math.abs(n);return t>=0?n>=0?i>=r?0:1:i>=r?7:6:n>=0?i>=r?3:2:i>=r?4:5}if(arguments[0]instanceof X&&arguments[1]instanceof X){var s=arguments[0],a=arguments[1],o=a.x-s.x,u=a.y-s.y;if(0===o&&0===u)throw new m(\"Cannot compute the octant for two identical points \"+s);return e.octant(o,u)}}}]),e}(),kn=function(){function e(){t(this,e)}return n(e,[{key:\"getCoordinates\",value:function(){}},{key:\"size\",value:function(){}},{key:\"getCoordinate\",value:function(t){}},{key:\"isClosed\",value:function(){}},{key:\"setData\",value:function(t){}},{key:\"getData\",value:function(){}}]),e}(),xn=function(){function e(){t(this,e)}return n(e,[{key:\"addIntersection\",value:function(t,e){}},{key:\"interfaces_\",get:function(){return[kn]}}]),e}(),In=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinates\",value:function(){return this._pts}},{key:\"size\",value:function(){return this._pts.length}},{key:\"getCoordinate\",value:function(t){return this._pts[t]}},{key:\"isClosed\",value:function(){return this._pts[0].equals(this._pts[this._pts.length-1])}},{key:\"getSegmentOctant\",value:function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))}},{key:\"setData\",value:function(t){this._data=t}},{key:\"safeOctant\",value:function(t,e){return t.equals2D(e)?0:mn.octant(t,e)}},{key:\"getData\",value:function(){return this._data}},{key:\"addIntersection\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[3],s=new X(n.getIntersection(r));this.addIntersection(s,i)}}},{key:\"toString\",value:function(){return Re.toLineString(new Qt(this._pts))}},{key:\"getNodeList\",value:function(){return this._nodeList}},{key:\"addIntersectionNode\",value:function(t,e){var n=e,i=n+1;if(i<this._pts.length){var r=this._pts[i];t.equals2D(r)&&(n=i)}return this._nodeList.add(t,n)}},{key:\"addIntersections\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)}},{key:\"interfaces_\",get:function(){return[xn]}}],[{key:\"constructor_\",value:function(){this._nodeList=new pn(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e}},{key:\"getNodedSubstrings\",value:function(){if(1===arguments.length){var t=arguments[0],n=new yt;return e.getNodedSubstrings(t,n),n}if(2===arguments.length)for(var i=arguments[0],r=arguments[1],s=i.iterator();s.hasNext();){var a=s.next();a.getNodeList().addSplitEdges(r)}}}]),e}(),En=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"minX\",value:function(){return Math.min(this.p0.x,this.p1.x)}},{key:\"orientationIndex\",value:function(){if(arguments[0]instanceof e){var t=arguments[0],n=ct.index(this.p0,this.p1,t.p0),i=ct.index(this.p0,this.p1,t.p1);return n>=0&&i>=0||n<=0&&i<=0?Math.max(n,i):0}if(arguments[0]instanceof X){var r=arguments[0];return ct.index(this.p0,this.p1,r)}}},{key:\"toGeometry\",value:function(t){return t.createLineString([this.p0,this.p1])}},{key:\"isVertical\",value:function(){return this.p0.x===this.p1.x}},{key:\"equals\",value:function(t){if(!(t instanceof e))return!1;var n=t;return this.p0.equals(n.p0)&&this.p1.equals(n.p1)}},{key:\"intersection\",value:function(t){var e=new Oe;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null}},{key:\"project\",value:function(){if(arguments[0]instanceof X){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new X(t);var n=this.projectionFactor(t),i=new X;return i.x=this.p0.x+n*(this.p1.x-this.p0.x),i.y=this.p0.y+n*(this.p1.y-this.p0.y),i}if(arguments[0]instanceof e){var r=arguments[0],s=this.projectionFactor(r.p0),a=this.projectionFactor(r.p1);if(s>=1&&a>=1)return null;if(s<=0&&a<=0)return null;var o=this.project(r.p0);s<0&&(o=this.p0),s>1&&(o=this.p1);var u=this.project(r.p1);return a<0&&(u=this.p0),a>1&&(u=this.p1),new e(o,u)}}},{key:\"normalize\",value:function(){this.p1.compareTo(this.p0)<0&&this.reverse()}},{key:\"angle\",value:function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)}},{key:\"getCoordinate\",value:function(t){return 0===t?this.p0:this.p1}},{key:\"distancePerpendicular\",value:function(t){return xt.pointToLinePerpendicular(t,this.p0,this.p1)}},{key:\"minY\",value:function(){return Math.min(this.p0.y,this.p1.y)}},{key:\"midPoint\",value:function(){return e.midPoint(this.p0,this.p1)}},{key:\"projectionFactor\",value:function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,i=e*e+n*n;return i<=0?A.NaN:((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/i}},{key:\"closestPoints\",value:function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),i=A.MAX_VALUE,r=null,s=this.closestPoint(t.p0);i=s.distance(t.p0),n[0]=s,n[1]=t.p0;var a=this.closestPoint(t.p1);(r=a.distance(t.p1))<i&&(i=r,n[0]=a,n[1]=t.p1);var o=t.closestPoint(this.p0);(r=o.distance(this.p0))<i&&(i=r,n[0]=this.p0,n[1]=o);var u=t.closestPoint(this.p1);return(r=u.distance(this.p1))<i&&(i=r,n[0]=this.p1,n[1]=u),n}},{key:\"closestPoint\",value:function(t){var e=this.projectionFactor(t);return e>0&&e<1?this.project(t):this.p0.distance(t)<this.p1.distance(t)?this.p0:this.p1}},{key:\"maxX\",value:function(){return Math.max(this.p0.x,this.p1.x)}},{key:\"getLength\",value:function(){return this.p0.distance(this.p1)}},{key:\"compareTo\",value:function(t){var e=t,n=this.p0.compareTo(e.p0);return 0!==n?n:this.p1.compareTo(e.p1)}},{key:\"reverse\",value:function(){var t=this.p0;this.p0=this.p1,this.p1=t}},{key:\"equalsTopo\",value:function(t){return this.p0.equals(t.p0)&&this.p1.equals(t.p1)||this.p0.equals(t.p1)&&this.p1.equals(t.p0)}},{key:\"lineIntersection\",value:function(t){return pt.intersection(this.p0,this.p1,t.p0,t.p1)}},{key:\"maxY\",value:function(){return Math.max(this.p0.y,this.p1.y)}},{key:\"pointAlongOffset\",value:function(t,e){var n=this.p0.x+t*(this.p1.x-this.p0.x),i=this.p0.y+t*(this.p1.y-this.p0.y),r=this.p1.x-this.p0.x,s=this.p1.y-this.p0.y,a=Math.sqrt(r*r+s*s),o=0,u=0;if(0!==e){if(a<=0)throw new IllegalStateException(\"Cannot compute offset from zero-length line segment\");o=e*r/a,u=e*s/a}return new X(n-u,i+o)}},{key:\"setCoordinates\",value:function(){if(1===arguments.length){var t=arguments[0];this.setCoordinates(t.p0,t.p1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p0.x=e.x,this.p0.y=e.y,this.p1.x=n.x,this.p1.y=n.y}}},{key:\"segmentFraction\",value:function(t){var e=this.projectionFactor(t);return e<0?e=0:(e>1||A.isNaN(e))&&(e=1),e}},{key:\"toString\",value:function(){return\"LINESTRING( \"+this.p0.x+\" \"+this.p0.y+\", \"+this.p1.x+\" \"+this.p1.y+\")\"}},{key:\"isHorizontal\",value:function(){return this.p0.y===this.p1.y}},{key:\"reflect\",value:function(t){var e=this.p1.getY()-this.p0.getY(),n=this.p0.getX()-this.p1.getX(),i=this.p0.getY()*(this.p1.getX()-this.p0.getX())-this.p0.getX()*(this.p1.getY()-this.p0.getY()),r=e*e+n*n,s=e*e-n*n,a=t.getX(),o=t.getY();return new X((-s*a-2*e*n*o-2*e*i)/r,(s*o-2*e*n*a-2*n*i)/r)}},{key:\"distance\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return xt.segmentToSegment(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof X){var n=arguments[0];return xt.pointToSegment(n,this.p0,this.p1)}}},{key:\"pointAlong\",value:function(t){var e=new X;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e}},{key:\"hashCode\",value:function(){var t=A.doubleToLongBits(this.p0.x);t^=31*A.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=A.doubleToLongBits(this.p1.x);return n^=31*A.doubleToLongBits(this.p1.y),e^(Math.trunc(n)^Math.trunc(n>>32))}},{key:\"interfaces_\",get:function(){return[x,E]}}],[{key:\"constructor_\",value:function(){if(this.p0=null,this.p1=null,0===arguments.length)e.constructor_.call(this,new X,new X);else if(1===arguments.length){var t=arguments[0];e.constructor_.call(this,t.p0,t.p1)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.p0=n,this.p1=i}else if(4===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3];e.constructor_.call(this,new X(r,s),new X(a,o))}}},{key:\"midPoint\",value:function(t,e){return new X((t.x+e.x)/2,(t.y+e.y)/2)}}]),e}(),Nn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"overlap\",value:function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];t.getLineSegment(e,this._overlapSeg1),n.getLineSegment(i,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}}}],[{key:\"constructor_\",value:function(){this._overlapSeg1=new En,this._overlapSeg2=new En}}]),e}(),Tn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getLineSegment\",value:function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]}},{key:\"computeSelect\",value:function(t,e,n,i){var r=this._pts[e],s=this._pts[n];if(n-e==1)return i.select(this,e),null;if(!t.intersects(r,s))return null;var a=Math.trunc((e+n)/2);e<a&&this.computeSelect(t,e,a,i),a<n&&this.computeSelect(t,a,n,i)}},{key:\"getCoordinates\",value:function(){for(var t=new Array(this._end-this._start+1).fill(null),e=0,n=this._start;n<=this._end;n++)t[e++]=this._pts[n];return t}},{key:\"computeOverlaps\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.computeOverlaps(this._start,this._end,t,t._start,t._end,e)}else if(6===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=arguments[3],a=arguments[4],o=arguments[5];if(i-n==1&&a-s==1)return o.overlap(this,n,r,s),null;if(!this.overlaps(n,i,r,s,a))return null;var u=Math.trunc((n+i)/2),l=Math.trunc((s+a)/2);n<u&&(s<l&&this.computeOverlaps(n,u,r,s,l,o),l<a&&this.computeOverlaps(n,u,r,l,a,o)),u<i&&(s<l&&this.computeOverlaps(u,i,r,s,l,o),l<a&&this.computeOverlaps(u,i,r,l,a,o))}}},{key:\"setId\",value:function(t){this._id=t}},{key:\"select\",value:function(t,e){this.computeSelect(t,this._start,this._end,e)}},{key:\"getEnvelope\",value:function(){if(null===this._env){var t=this._pts[this._start],e=this._pts[this._end];this._env=new U(t,e)}return this._env}},{key:\"overlaps\",value:function(t,e,n,i,r){return U.intersects(this._pts[t],this._pts[e],n._pts[i],n._pts[r])}},{key:\"getEndIndex\",value:function(){return this._end}},{key:\"getStartIndex\",value:function(){return this._start}},{key:\"getContext\",value:function(){return this._context}},{key:\"getId\",value:function(){return this._id}}],[{key:\"constructor_\",value:function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=i}}]),e}(),Sn=function(){function e(){t(this,e)}return n(e,null,[{key:\"findChainEnd\",value:function(t,e){for(var n=e;n<t.length-1&&t[n].equals2D(t[n+1]);)n++;if(n>=t.length-1)return t.length-1;for(var i=We.quadrant(t[n],t[n+1]),r=e+1;r<t.length;){if(!t[r-1].equals2D(t[r]))if(We.quadrant(t[r-1],t[r])!==i)break;r++}return r-1}},{key:\"getChains\",value:function(){if(1===arguments.length){var t=arguments[0];return e.getChains(t,null)}if(2===arguments.length){var n=arguments[0],i=arguments[1],r=new yt,s=0;do{var a=e.findChainEnd(n,s),o=new Tn(n,s,a,i);r.add(o),s=a}while(s<n.length-1);return r}}}]),e}(),Ln=function(){function e(){t(this,e)}return n(e,[{key:\"computeNodes\",value:function(t){}},{key:\"getNodedSubstrings\",value:function(){}}]),e}(),Cn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"setSegmentIntersector\",value:function(t){this._segInt=t}},{key:\"interfaces_\",get:function(){return[Ln]}}],[{key:\"constructor_\",value:function(){if(this._segInt=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setSegmentIntersector(t)}}}]),e}(),Rn=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"getMonotoneChains\",value:function(){return this._monoChains}},{key:\"getNodedSubstrings\",value:function(){return In.getNodedSubstrings(this._nodedSegStrings)}},{key:\"getIndex\",value:function(){return this._index}},{key:\"add\",value:function(t){for(var e=Sn.getChains(t.getCoordinates(),t).iterator();e.hasNext();){var n=e.next();n.setId(this._idCounter++),this._index.insert(n.getEnvelope(),n),this._monoChains.add(n)}}},{key:\"computeNodes\",value:function(t){this._nodedSegStrings=t;for(var e=t.iterator();e.hasNext();)this.add(e.next());this.intersectChains()}},{key:\"intersectChains\",value:function(){for(var t=new wn(this._segInt),e=this._monoChains.iterator();e.hasNext();)for(var n=e.next(),i=this._index.query(n.getEnvelope()).iterator();i.hasNext();){var r=i.next();if(r.getId()>n.getId()&&(n.computeOverlaps(r,t),this._nOverlaps++),this._segInt.isDone())return null}}}],[{key:\"constructor_\",value:function(){if(this._monoChains=new yt,this._index=new vn,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0,0===arguments.length);else if(1===arguments.length){var t=arguments[0];Cn.constructor_.call(this,t)}}}]),s}(Cn),wn=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"overlap\",value:function(){if(4!==arguments.length)return f(r(a.prototype),\"overlap\",this).apply(this,arguments);var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3],s=t.getContext(),o=n.getContext();this._si.processIntersections(s,e,o,i)}}],[{key:\"constructor_\",value:function(){this._si=null;var t=arguments[0];this._si=t}}]),a}(Nn);Rn.SegmentOverlapAction=wn;var On=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"isDeletable\",value:function(t,e,n,i){var r=this._inputLine[t],s=this._inputLine[e],a=this._inputLine[n];return!!this.isConcave(r,s,a)&&(!!this.isShallow(r,s,a,i)&&this.isShallowSampled(r,s,t,n,i))}},{key:\"deleteShallowConcavities\",value:function(){for(var t=1,n=this.findNextNonDeletedIndex(t),i=this.findNextNonDeletedIndex(n),r=!1;i<this._inputLine.length;){var s=!1;this.isDeletable(t,n,i,this._distanceTol)&&(this._isDeleted[n]=e.DELETE,s=!0,r=!0),t=s?i:n,n=this.findNextNonDeletedIndex(t),i=this.findNextNonDeletedIndex(n)}return r}},{key:\"isShallowConcavity\",value:function(t,e,n,i){return ct.index(t,e,n)===this._angleOrientation&&xt.pointToSegment(e,t,n)<i}},{key:\"isShallowSampled\",value:function(t,n,i,r,s){var a=Math.trunc((r-i)/e.NUM_PTS_TO_CHECK);a<=0&&(a=1);for(var o=i;o<r;o+=a)if(!this.isShallow(t,n,this._inputLine[o],s))return!1;return!0}},{key:\"isConcave\",value:function(t,e,n){var i=ct.index(t,e,n)===this._angleOrientation;return i}},{key:\"simplify\",value:function(t){this._distanceTol=Math.abs(t),t<0&&(this._angleOrientation=ct.CLOCKWISE),this._isDeleted=new Array(this._inputLine.length).fill(null);var e=!1;do{e=this.deleteShallowConcavities()}while(e);return this.collapseLine()}},{key:\"findNextNonDeletedIndex\",value:function(t){for(var n=t+1;n<this._inputLine.length&&this._isDeleted[n]===e.DELETE;)n++;return n}},{key:\"isShallow\",value:function(t,e,n,i){return xt.pointToSegment(e,t,n)<i}},{key:\"collapseLine\",value:function(){for(var t=new Zt,n=0;n<this._inputLine.length;n++)this._isDeleted[n]!==e.DELETE&&t.add(this._inputLine[n]);return t.toCoordinateArray()}}],[{key:\"constructor_\",value:function(){this._inputLine=null,this._distanceTol=null,this._isDeleted=null,this._angleOrientation=ct.COUNTERCLOCKWISE;var t=arguments[0];this._inputLine=t}},{key:\"simplify\",value:function(t,n){return new e(t).simplify(n)}}]),e}();On.INIT=0,On.DELETE=1,On.KEEP=1,On.NUM_PTS_TO_CHECK=10;var bn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinates\",value:function(){return this._ptList.toArray(e.COORDINATE_ARRAY_TYPE)}},{key:\"setPrecisionModel\",value:function(t){this._precisionModel=t}},{key:\"addPt\",value:function(t){var e=new X(t);if(this._precisionModel.makePrecise(e),this.isRedundant(e))return null;this._ptList.add(e)}},{key:\"reverse\",value:function(){}},{key:\"addPts\",value:function(t,e){if(e)for(var n=0;n<t.length;n++)this.addPt(t[n]);else for(var i=t.length-1;i>=0;i--)this.addPt(t[i])}},{key:\"isRedundant\",value:function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)<this._minimimVertexDistance}},{key:\"toString\",value:function(){return(new ae).createLineString(this.getCoordinates()).toString()}},{key:\"closeRing\",value:function(){if(this._ptList.size()<1)return null;var t=new X(this._ptList.get(0)),e=this._ptList.get(this._ptList.size()-1);if(t.equals(e))return null;this._ptList.add(t)}},{key:\"setMinimumVertexDistance\",value:function(t){this._minimimVertexDistance=t}}],[{key:\"constructor_\",value:function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new yt}}]),e}();bn.COORDINATE_ARRAY_TYPE=new Array(0).fill(null);var Mn=function(){function e(){t(this,e)}return n(e,null,[{key:\"toDegrees\",value:function(t){return 180*t/Math.PI}},{key:\"normalize\",value:function(t){for(;t>Math.PI;)t-=e.PI_TIMES_2;for(;t<=-Math.PI;)t+=e.PI_TIMES_2;return t}},{key:\"angle\",value:function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],i=n.x-e.x,r=n.y-e.y;return Math.atan2(r,i)}}},{key:\"isAcute\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)>0}},{key:\"isObtuse\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)<0}},{key:\"interiorAngle\",value:function(t,n,i){var r=e.angle(n,t),s=e.angle(n,i);return Math.abs(s-r)}},{key:\"normalizePositive\",value:function(t){if(t<0){for(;t<0;)t+=e.PI_TIMES_2;t>=e.PI_TIMES_2&&(t=0)}else{for(;t>=e.PI_TIMES_2;)t-=e.PI_TIMES_2;t<0&&(t=0)}return t}},{key:\"angleBetween\",value:function(t,n,i){var r=e.angle(n,t),s=e.angle(n,i);return e.diff(r,s)}},{key:\"diff\",value:function(t,e){var n=null;return(n=t<e?e-t:t-e)>Math.PI&&(n=2*Math.PI-n),n}},{key:\"toRadians\",value:function(t){return t*Math.PI/180}},{key:\"getTurn\",value:function(t,n){var i=Math.sin(n-t);return i>0?e.COUNTERCLOCKWISE:i<0?e.CLOCKWISE:e.NONE}},{key:\"angleBetweenOriented\",value:function(t,n,i){var r=e.angle(n,t),s=e.angle(n,i)-r;return s<=-Math.PI?s+e.PI_TIMES_2:s>Math.PI?s-e.PI_TIMES_2:s}}]),e}();Mn.PI_TIMES_2=2*Math.PI,Mn.PI_OVER_2=Math.PI/2,Mn.PI_OVER_4=Math.PI/4,Mn.COUNTERCLOCKWISE=ct.COUNTERCLOCKWISE,Mn.CLOCKWISE=ct.CLOCKWISE,Mn.NONE=ct.COLLINEAR;var An=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"addNextSegment\",value:function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=ct.index(this._s0,this._s1,this._s2),i=n===ct.CLOCKWISE&&this._side===$.LEFT||n===ct.COUNTERCLOCKWISE&&this._side===$.RIGHT;0===n?this.addCollinear(e):i?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)}},{key:\"addLineEndCap\",value:function(t,e){var n=new En(t,e),i=new En;this.computeOffsetSegment(n,$.LEFT,this._distance,i);var r=new En;this.computeOffsetSegment(n,$.RIGHT,this._distance,r);var s=e.x-t.x,a=e.y-t.y,o=Math.atan2(a,s);switch(this._bufParams.getEndCapStyle()){case _.CAP_ROUND:this._segList.addPt(i.p1),this.addDirectedFillet(e,o+Math.PI/2,o-Math.PI/2,ct.CLOCKWISE,this._distance),this._segList.addPt(r.p1);break;case _.CAP_FLAT:this._segList.addPt(i.p1),this._segList.addPt(r.p1);break;case _.CAP_SQUARE:var u=new X;u.x=Math.abs(this._distance)*Math.cos(o),u.y=Math.abs(this._distance)*Math.sin(o);var l=new X(i.p1.x+u.x,i.p1.y+u.y),h=new X(r.p1.x+u.x,r.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(h)}}},{key:\"getCoordinates\",value:function(){return this._segList.getCoordinates()}},{key:\"addMitreJoin\",value:function(t,e,n,i){var r=pt.intersection(e.p0,e.p1,n.p0,n.p1);if(null!==r&&(i<=0?1:r.distance(t)/Math.abs(i))<=this._bufParams.getMitreLimit())return this._segList.addPt(r),null;this.addLimitedMitreJoin(e,n,i,this._bufParams.getMitreLimit())}},{key:\"addOutsideTurn\",value:function(t,n){if(this._offset0.p1.distance(this._offset1.p0)<this._distance*e.OFFSET_SEGMENT_SEPARATION_FACTOR)return this._segList.addPt(this._offset0.p1),null;this._bufParams.getJoinStyle()===_.JOIN_MITRE?this.addMitreJoin(this._s1,this._offset0,this._offset1,this._distance):this._bufParams.getJoinStyle()===_.JOIN_BEVEL?this.addBevelJoin(this._offset0,this._offset1):(n&&this._segList.addPt(this._offset0.p1),this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,t,this._distance),this._segList.addPt(this._offset1.p0))}},{key:\"createSquare\",value:function(t){this._segList.addPt(new X(t.x+this._distance,t.y+this._distance)),this._segList.addPt(new X(t.x+this._distance,t.y-this._distance)),this._segList.addPt(new X(t.x-this._distance,t.y-this._distance)),this._segList.addPt(new X(t.x-this._distance,t.y+this._distance)),this._segList.closeRing()}},{key:\"addSegments\",value:function(t,e){this._segList.addPts(t,e)}},{key:\"addFirstSegment\",value:function(){this._segList.addPt(this._offset1.p0)}},{key:\"addCornerFillet\",value:function(t,e,n,i,r){var s=e.x-t.x,a=e.y-t.y,o=Math.atan2(a,s),u=n.x-t.x,l=n.y-t.y,h=Math.atan2(l,u);i===ct.CLOCKWISE?o<=h&&(o+=2*Math.PI):o>=h&&(o-=2*Math.PI),this._segList.addPt(e),this.addDirectedFillet(t,o,h,i,r),this._segList.addPt(n)}},{key:\"addLastSegment\",value:function(){this._segList.addPt(this._offset1.p1)}},{key:\"initSideSegments\",value:function(t,e,n){this._s1=t,this._s2=e,this._side=n,this._seg1.setCoordinates(t,e),this.computeOffsetSegment(this._seg1,n,this._distance,this._offset1)}},{key:\"addLimitedMitreJoin\",value:function(t,e,n,i){var r=this._seg0.p1,s=Mn.angle(r,this._seg0.p0),a=Mn.angleBetweenOriented(this._seg0.p0,r,this._seg1.p1)/2,o=Mn.normalize(s+a),u=Mn.normalize(o+Math.PI),l=i*n,h=n-l*Math.abs(Math.sin(a)),c=r.x+l*Math.cos(u),f=r.y+l*Math.sin(u),v=new X(c,f),g=new En(r,v),y=g.pointAlongOffset(1,h),d=g.pointAlongOffset(1,-h);this._side===$.LEFT?(this._segList.addPt(y),this._segList.addPt(d)):(this._segList.addPt(d),this._segList.addPt(y))}},{key:\"addDirectedFillet\",value:function(t,e,n,i,r){var s=i===ct.CLOCKWISE?-1:1,a=Math.abs(e-n),o=Math.trunc(a/this._filletAngleQuantum+.5);if(o<1)return null;for(var u=a/o,l=new X,h=0;h<o;h++){var c=e+s*h*u;l.x=t.x+r*Math.cos(c),l.y=t.y+r*Math.sin(c),this._segList.addPt(l)}}},{key:\"computeOffsetSegment\",value:function(t,e,n,i){var r=e===$.LEFT?1:-1,s=t.p1.x-t.p0.x,a=t.p1.y-t.p0.y,o=Math.sqrt(s*s+a*a),u=r*n*s/o,l=r*n*a/o;i.p0.x=t.p0.x-l,i.p0.y=t.p0.y+u,i.p1.x=t.p1.x-l,i.p1.y=t.p1.y+u}},{key:\"addInsideTurn\",value:function(t,n){if(this._li.computeIntersection(this._offset0.p0,this._offset0.p1,this._offset1.p0,this._offset1.p1),this._li.hasIntersection())this._segList.addPt(this._li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this._offset0.p1.distance(this._offset1.p0)<this._distance*e.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR)this._segList.addPt(this._offset0.p1);else{if(this._segList.addPt(this._offset0.p1),this._closingSegLengthFactor>0){var i=new X((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(i);var r=new X((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(r)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}}},{key:\"createCircle\",value:function(t){var e=new X(t.x+this._distance,t.y);this._segList.addPt(e),this.addDirectedFillet(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()}},{key:\"addBevelJoin\",value:function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)}},{key:\"init\",value:function(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new bn,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*e.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)}},{key:\"addCollinear\",value:function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2),this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===_.JOIN_BEVEL||this._bufParams.getJoinStyle()===_.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,ct.CLOCKWISE,this._distance))}},{key:\"closeRing\",value:function(){this._segList.closeRing()}},{key:\"hasNarrowConcaveAngle\",value:function(){return this._hasNarrowConcaveAngle}}],[{key:\"constructor_\",value:function(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new En,this._seg1=new En,this._offset0=new En,this._offset1=new En,this._side=0,this._hasNarrowConcaveAngle=!1;var t=arguments[0],n=arguments[1],i=arguments[2];this._precisionModel=t,this._bufParams=n,this._li=new Oe,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===_.JOIN_ROUND&&(this._closingSegLengthFactor=e.MAX_CLOSING_SEG_LEN_FACTOR),this.init(i)}}]),e}();An.OFFSET_SEGMENT_SEPARATION_FACTOR=.001,An.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR=.001,An.CURVE_VERTEX_SNAP_DISTANCE_FACTOR=1e-6,An.MAX_CLOSING_SEG_LEN_FACTOR=80;var Pn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getOffsetCurve\",value:function(t,e){if(this._distance=e,0===e)return null;var n=e<0,i=Math.abs(e),r=this.getSegGen(i);t.length<=1?this.computePointCurve(t[0],r):this.computeOffsetCurve(t,n,r);var s=r.getCoordinates();return n&&jt.reverse(s),s}},{key:\"computeSingleSidedBufferCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var r=On.simplify(t,-i),s=r.length-1;n.initSideSegments(r[s],r[s-1],$.LEFT),n.addFirstSegment();for(var a=s-2;a>=0;a--)n.addNextSegment(r[a],!0)}else{n.addSegments(t,!1);var o=On.simplify(t,i),u=o.length-1;n.initSideSegments(o[0],o[1],$.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(o[l],!0)}n.addLastSegment(),n.closeRing()}},{key:\"computeRingBufferCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);e===$.RIGHT&&(i=-i);var r=On.simplify(t,i),s=r.length-1;n.initSideSegments(r[s-1],r[0],e);for(var a=1;a<=s;a++){var o=1!==a;n.addNextSegment(r[a],o)}n.closeRing()}},{key:\"computeLineBufferCurve\",value:function(t,e){var n=this.simplifyTolerance(this._distance),i=On.simplify(t,n),r=i.length-1;e.initSideSegments(i[0],i[1],$.LEFT);for(var s=2;s<=r;s++)e.addNextSegment(i[s],!0);e.addLastSegment(),e.addLineEndCap(i[r-1],i[r]);var a=On.simplify(t,-n),o=a.length-1;e.initSideSegments(a[o],a[o-1],$.LEFT);for(var u=o-2;u>=0;u--)e.addNextSegment(a[u],!0);e.addLastSegment(),e.addLineEndCap(a[1],a[0]),e.closeRing()}},{key:\"computePointCurve\",value:function(t,e){switch(this._bufParams.getEndCapStyle()){case _.CAP_ROUND:e.createCircle(t);break;case _.CAP_SQUARE:e.createSquare(t)}}},{key:\"getLineCurve\",value:function(t,e){if(this._distance=e,this.isLineOffsetEmpty(e))return null;var n=Math.abs(e),i=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],i);else if(this._bufParams.isSingleSided()){var r=e<0;this.computeSingleSidedBufferCurve(t,r,i)}else this.computeLineBufferCurve(t,i);return i.getCoordinates()}},{key:\"getBufferParameters\",value:function(){return this._bufParams}},{key:\"simplifyTolerance\",value:function(t){return t*this._bufParams.getSimplifyFactor()}},{key:\"getRingCurve\",value:function(t,n,i){if(this._distance=i,t.length<=2)return this.getLineCurve(t,i);if(0===i)return e.copyCoordinates(t);var r=this.getSegGen(i);return this.computeRingBufferCurve(t,n,r),r.getCoordinates()}},{key:\"computeOffsetCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){var r=On.simplify(t,-i),s=r.length-1;n.initSideSegments(r[s],r[s-1],$.LEFT),n.addFirstSegment();for(var a=s-2;a>=0;a--)n.addNextSegment(r[a],!0)}else{var o=On.simplify(t,i),u=o.length-1;n.initSideSegments(o[0],o[1],$.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(o[l],!0)}n.addLastSegment()}},{key:\"isLineOffsetEmpty\",value:function(t){return 0===t||t<0&&!this._bufParams.isSingleSided()}},{key:\"getSegGen\",value:function(t){return new An(this._precisionModel,this._bufParams,t)}}],[{key:\"constructor_\",value:function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e}},{key:\"copyCoordinates\",value:function(t){for(var e=new Array(t.length).fill(null),n=0;n<e.length;n++)e[n]=new X(t[n]);return e}}]),e}(),Dn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"findStabbedSegments\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=new yt,n=this._subgraphs.iterator();n.hasNext();){var i=n.next(),r=i.getEnvelope();t.y<r.getMinY()||t.y>r.getMaxY()||this.findStabbedSegments(t,i.getDirectedEdges(),e)}return e}if(3===arguments.length)if(rt(arguments[2],nt)&&arguments[0]instanceof X&&arguments[1]instanceof Je)for(var s=arguments[0],a=arguments[1],o=arguments[2],u=a.getEdge().getCoordinates(),l=0;l<u.length-1;l++){this._seg.p0=u[l],this._seg.p1=u[l+1],this._seg.p0.y>this._seg.p1.y&&this._seg.reverse();var h=Math.max(this._seg.p0.x,this._seg.p1.x);if(!(h<s.x)&&!(this._seg.isHorizontal()||s.y<this._seg.p0.y||s.y>this._seg.p1.y||ct.index(this._seg.p0,this._seg.p1,s)===ct.RIGHT)){var c=a.getDepth($.LEFT);this._seg.p0.equals(u[l])||(c=a.getDepth($.RIGHT));var f=new Fn(this._seg,c);o.add(f)}}else if(rt(arguments[2],nt)&&arguments[0]instanceof X&&rt(arguments[1],nt))for(var v=arguments[0],g=arguments[1],y=arguments[2],d=g.iterator();d.hasNext();){var _=d.next();_.isForward()&&this.findStabbedSegments(v,_,y)}}},{key:\"getDepth\",value:function(t){var e=this.findStabbedSegments(t);return 0===e.size()?0:on.min(e)._leftDepth}}],[{key:\"constructor_\",value:function(){this._subgraphs=null,this._seg=new En;var t=arguments[0];this._subgraphs=t}}]),e}(),Fn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"compareTo\",value:function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n||0!==(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)}},{key:\"compareX\",value:function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)}},{key:\"toString\",value:function(){return this._upwardSeg.toString()}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new En(t),this._leftDepth=e}}]),e}();Dn.DepthSegment=Fn;var Gn=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,null,[{key:\"constructor_\",value:function(){p.constructor_.call(this,\"Projective point not representable on the Cartesian plane.\")}}]),s}(p),qn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getY\",value:function(){var t=this.y/this.w;if(A.isNaN(t)||A.isInfinite(t))throw new Gn;return t}},{key:\"getX\",value:function(){var t=this.x/this.w;if(A.isNaN(t)||A.isInfinite(t))throw new Gn;return t}},{key:\"getCoordinate\",value:function(){var t=new X;return t.x=this.getX(),t.y=this.getY(),t}}],[{key:\"constructor_\",value:function(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){var t=arguments[0];this.x=t.x,this.y=t.y,this.w=1}else if(2===arguments.length){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];this.x=n,this.y=i,this.w=1}else if(arguments[0]instanceof e&&arguments[1]instanceof e){var r=arguments[0],s=arguments[1];this.x=r.y*s.w-s.y*r.w,this.y=s.x*r.w-r.x*s.w,this.w=r.x*s.y-s.x*r.y}else if(arguments[0]instanceof X&&arguments[1]instanceof X){var a=arguments[0],o=arguments[1];this.x=a.y-o.y,this.y=o.x-a.x,this.w=a.x*o.y-o.x*a.y}}else if(3===arguments.length){var u=arguments[0],l=arguments[1],h=arguments[2];this.x=u,this.y=l,this.w=h}else if(4===arguments.length){var c=arguments[0],f=arguments[1],v=arguments[2],g=arguments[3],y=c.y-f.y,d=f.x-c.x,_=c.x*f.y-f.x*c.y,p=v.y-g.y,m=g.x-v.x,k=v.x*g.y-g.x*v.y;this.x=d*k-m*_,this.y=p*_-y*k,this.w=y*m-p*d}}}]),e}(),Yn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"area\",value:function(){return e.area(this.p0,this.p1,this.p2)}},{key:\"signedArea\",value:function(){return e.signedArea(this.p0,this.p1,this.p2)}},{key:\"interpolateZ\",value:function(t){if(null===t)throw new m(\"Supplied point is null.\");return e.interpolateZ(t,this.p0,this.p1,this.p2)}},{key:\"longestSideLength\",value:function(){return e.longestSideLength(this.p0,this.p1,this.p2)}},{key:\"isAcute\",value:function(){return e.isAcute(this.p0,this.p1,this.p2)}},{key:\"circumcentre\",value:function(){return e.circumcentre(this.p0,this.p1,this.p2)}},{key:\"area3D\",value:function(){return e.area3D(this.p0,this.p1,this.p2)}},{key:\"centroid\",value:function(){return e.centroid(this.p0,this.p1,this.p2)}},{key:\"inCentre\",value:function(){return e.inCentre(this.p0,this.p1,this.p2)}}],[{key:\"constructor_\",value:function(){this.p0=null,this.p1=null,this.p2=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.p0=t,this.p1=e,this.p2=n}},{key:\"area\",value:function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)}},{key:\"signedArea\",value:function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2}},{key:\"det\",value:function(t,e,n,i){return t*i-e*n}},{key:\"interpolateZ\",value:function(t,e,n,i){var r=e.x,s=e.y,a=n.x-r,o=i.x-r,u=n.y-s,l=i.y-s,h=a*l-o*u,c=t.x-r,f=t.y-s,v=(l*c-o*f)/h,g=(-u*c+a*f)/h;return e.getZ()+v*(n.getZ()-e.getZ())+g*(i.getZ()-e.getZ())}},{key:\"longestSideLength\",value:function(t,e,n){var i=t.distance(e),r=e.distance(n),s=n.distance(t),a=i;return r>a&&(a=r),s>a&&(a=s),a}},{key:\"circumcentreDD\",value:function(t,e,n){var i=ut.valueOf(t.x).subtract(n.x),r=ut.valueOf(t.y).subtract(n.y),s=ut.valueOf(e.x).subtract(n.x),a=ut.valueOf(e.y).subtract(n.y),o=ut.determinant(i,r,s,a).multiply(2),u=i.sqr().add(r.sqr()),l=s.sqr().add(a.sqr()),h=ut.determinant(r,u,a,l),c=ut.determinant(i,u,s,l),f=ut.valueOf(n.x).subtract(h.divide(o)).doubleValue(),v=ut.valueOf(n.y).add(c.divide(o)).doubleValue();return new X(f,v)}},{key:\"isAcute\",value:function(t,e,n){return!!Mn.isAcute(t,e,n)&&(!!Mn.isAcute(e,n,t)&&!!Mn.isAcute(n,t,e))}},{key:\"circumcentre\",value:function(t,n,i){var r=i.x,s=i.y,a=t.x-r,o=t.y-s,u=n.x-r,l=n.y-s,h=2*e.det(a,o,u,l),c=e.det(o,a*a+o*o,l,u*u+l*l),f=e.det(a,a*a+o*o,u,u*u+l*l);return new X(r-c/h,s+f/h)}},{key:\"perpendicularBisector\",value:function(t,e){var n=e.x-t.x,i=e.y-t.y,r=new qn(t.x+n/2,t.y+i/2,1),s=new qn(t.x-i+n/2,t.y+n+i/2,1);return new qn(r,s)}},{key:\"angleBisector\",value:function(t,e,n){var i=e.distance(t),r=i/(i+e.distance(n)),s=n.x-t.x,a=n.y-t.y;return new X(t.x+r*s,t.y+r*a)}},{key:\"area3D\",value:function(t,e,n){var i=e.x-t.x,r=e.y-t.y,s=e.getZ()-t.getZ(),a=n.x-t.x,o=n.y-t.y,u=n.getZ()-t.getZ(),l=r*u-s*o,h=s*a-i*u,c=i*o-r*a,f=l*l+h*h+c*c,v=Math.sqrt(f)/2;return v}},{key:\"centroid\",value:function(t,e,n){var i=(t.x+e.x+n.x)/3,r=(t.y+e.y+n.y)/3;return new X(i,r)}},{key:\"inCentre\",value:function(t,e,n){var i=e.distance(n),r=t.distance(n),s=t.distance(e),a=i+r+s,o=(i*t.x+r*e.x+s*n.x)/a,u=(i*t.y+r*e.y+s*n.y)/a;return new X(o,u)}}]),e}(),zn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"addRingSide\",value:function(t,e,n,i,r){if(0===e&&t.length<Xt.MINIMUM_VALID_SIZE)return null;var s=i,a=r;t.length>=Xt.MINIMUM_VALID_SIZE&&ct.isCCW(t)&&(s=r,a=i,n=$.opposite(n));var o=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(o,s,a)}},{key:\"addRingBothSides\",value:function(t,e){this.addRingSide(t,e,$.LEFT,H.EXTERIOR,H.INTERIOR),this.addRingSide(t,e,$.RIGHT,H.INTERIOR,H.EXTERIOR)}},{key:\"addPoint\",value:function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,H.EXTERIOR,H.INTERIOR)}},{key:\"addPolygon\",value:function(t){var e=this._distance,n=$.LEFT;this._distance<0&&(e=-this._distance,n=$.RIGHT);var i=t.getExteriorRing(),r=jt.removeRepeatedPoints(i.getCoordinates());if(this._distance<0&&this.isErodedCompletely(i,this._distance))return null;if(this._distance<=0&&r.length<3)return null;this.addRingSide(r,e,n,H.EXTERIOR,H.INTERIOR);for(var s=0;s<t.getNumInteriorRing();s++){var a=t.getInteriorRingN(s),o=jt.removeRepeatedPoints(a.getCoordinates());this._distance>0&&this.isErodedCompletely(a,-this._distance)||this.addRingSide(o,e,$.opposite(n),H.INTERIOR,H.EXTERIOR)}}},{key:\"isTriangleErodedCompletely\",value:function(t,e){var n=new Yn(t[0],t[1],t[2]),i=n.inCentre();return xt.pointToSegment(i,n.p0,n.p1)<Math.abs(e)}},{key:\"addLineString\",value:function(t){if(this._curveBuilder.isLineOffsetEmpty(this._distance))return null;var e=jt.removeRepeatedPoints(t.getCoordinates());if(jt.isRing(e)&&!this._curveBuilder.getBufferParameters().isSingleSided())this.addRingBothSides(e,this._distance);else{var n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,H.EXTERIOR,H.INTERIOR)}}},{key:\"addCurve\",value:function(t,e,n){if(null===t||t.length<2)return null;var i=new In(t,new Pe(0,H.BOUNDARY,e,n));this._curveList.add(i)}},{key:\"getCurves\",value:function(){return this.add(this._inputGeom),this._curveList}},{key:\"add\",value:function(t){if(t.isEmpty())return null;if(t instanceof Dt)this.addPolygon(t);else if(t instanceof wt)this.addLineString(t);else if(t instanceof bt)this.addPoint(t);else if(t instanceof zt)this.addCollection(t);else if(t instanceof se)this.addCollection(t);else if(t instanceof te)this.addCollection(t);else{if(!(t instanceof Yt))throw new W(t.getGeometryType());this.addCollection(t)}}},{key:\"isErodedCompletely\",value:function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var i=t.getEnvelopeInternal(),r=Math.min(i.getHeight(),i.getWidth());return e<0&&2*Math.abs(e)>r}},{key:\"addCollection\",value:function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}}}],[{key:\"constructor_\",value:function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new yt;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n}}]),e}(),Xn=function(){function e(){t(this,e)}return n(e,[{key:\"locate\",value:function(t){}}]),e}(),Bn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"next\",value:function(){if(this._atStart)return this._atStart=!1,e.isAtomic(this._parent)&&this._index++,this._parent;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return this._subcollectionIterator.next();this._subcollectionIterator=null}if(this._index>=this._max)throw new j;var t=this._parent.getGeometryN(this._index++);return t instanceof Yt?(this._subcollectionIterator=new e(t),this._subcollectionIterator.next()):t}},{key:\"remove\",value:function(){throw new W(this.getClass().getName())}},{key:\"hasNext\",value:function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)}},{key:\"interfaces_\",get:function(){return[_n]}}],[{key:\"constructor_\",value:function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;var t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()}},{key:\"isAtomic\",value:function(t){return!(t instanceof Yt)}}]),e}(),Un=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"locate\",value:function(t){return e.locate(t,this._geom)}},{key:\"interfaces_\",get:function(){return[Xn]}}],[{key:\"constructor_\",value:function(){this._geom=null;var t=arguments[0];this._geom=t}},{key:\"locatePointInPolygon\",value:function(t,n){if(n.isEmpty())return H.EXTERIOR;var i=n.getExteriorRing(),r=e.locatePointInRing(t,i);if(r!==H.INTERIOR)return r;for(var s=0;s<n.getNumInteriorRing();s++){var a=n.getInteriorRingN(s),o=e.locatePointInRing(t,a);if(o===H.BOUNDARY)return H.BOUNDARY;if(o===H.INTERIOR)return H.EXTERIOR}return H.INTERIOR}},{key:\"locatePointInRing\",value:function(t,e){return e.getEnvelopeInternal().intersects(t)?Me.locateInRing(t,e.getCoordinates()):H.EXTERIOR}},{key:\"containsPointInPolygon\",value:function(t,n){return H.EXTERIOR!==e.locatePointInPolygon(t,n)}},{key:\"locateInGeometry\",value:function(t,n){if(n instanceof Dt)return e.locatePointInPolygon(t,n);if(n instanceof Yt)for(var i=new Bn(n);i.hasNext();){var r=i.next();if(r!==n){var s=e.locateInGeometry(t,r);if(s!==H.EXTERIOR)return s}}return H.EXTERIOR}},{key:\"isContained\",value:function(t,n){return H.EXTERIOR!==e.locate(t,n)}},{key:\"locate\",value:function(t,n){return n.isEmpty()?H.EXTERIOR:n.getEnvelopeInternal().intersects(t)?e.locateInGeometry(t,n):H.EXTERIOR}}]),e}(),Vn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getNextCW\",value:function(t){this.getEdges();var e=this._edgeList.indexOf(t),n=e-1;return 0===e&&(n=this._edgeList.size()-1),this._edgeList.get(n)}},{key:\"propagateSideLabels\",value:function(t){for(var e=H.NONE,n=this.iterator();n.hasNext();){var i=n.next().getLabel();i.isArea(t)&&i.getLocation(t,$.LEFT)!==H.NONE&&(e=i.getLocation(t,$.LEFT))}if(e===H.NONE)return null;for(var r=e,s=this.iterator();s.hasNext();){var a=s.next(),o=a.getLabel();if(o.getLocation(t,$.ON)===H.NONE&&o.setLocation(t,$.ON,r),o.isArea(t)){var u=o.getLocation(t,$.LEFT),l=o.getLocation(t,$.RIGHT);if(l!==H.NONE){if(l!==r)throw new vt(\"side location conflict\",a.getCoordinate());u===H.NONE&&G.shouldNeverReachHere(\"found single null side (at \"+a.getCoordinate()+\")\"),r=u}else G.isTrue(o.getLocation(t,$.LEFT)===H.NONE,\"found single null side\"),o.setLocation(t,$.RIGHT,r),o.setLocation(t,$.LEFT,r)}}}},{key:\"getCoordinate\",value:function(){var t=this.iterator();return t.hasNext()?t.next().getCoordinate():null}},{key:\"print\",value:function(t){mt.out.println(\"EdgeEndStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"isAreaLabelsConsistent\",value:function(t){return this.computeEdgeEndLabels(t.getBoundaryNodeRule()),this.checkAreaLabelsConsistent(0)}},{key:\"checkAreaLabelsConsistent\",value:function(t){var e=this.getEdges();if(e.size()<=0)return!0;var n=e.size()-1,i=e.get(n).getLabel().getLocation(t,$.LEFT);G.isTrue(i!==H.NONE,\"Found unlabelled area edge\");for(var r=i,s=this.iterator();s.hasNext();){var a=s.next().getLabel();G.isTrue(a.isArea(t),\"Found non-area edge\");var o=a.getLocation(t,$.LEFT),u=a.getLocation(t,$.RIGHT);if(o===u)return!1;if(u!==r)return!1;r=o}return!0}},{key:\"findIndex\",value:function(t){this.iterator();for(var e=0;e<this._edgeList.size();e++){if(this._edgeList.get(e)===t)return e}return-1}},{key:\"iterator\",value:function(){return this.getEdges().iterator()}},{key:\"getEdges\",value:function(){return null===this._edgeList&&(this._edgeList=new yt(this._edgeMap.values())),this._edgeList}},{key:\"getLocation\",value:function(t,e,n){return this._ptInAreaLocation[t]===H.NONE&&(this._ptInAreaLocation[t]=Un.locate(e,n[t].getGeometry())),this._ptInAreaLocation[t]}},{key:\"toString\",value:function(){var t=new st;t.append(\"EdgeEndStar: \"+this.getCoordinate()),t.append(\"\\n\");for(var e=this.iterator();e.hasNext();){var n=e.next();t.append(n),t.append(\"\\n\")}return t.toString()}},{key:\"computeEdgeEndLabels\",value:function(t){for(var e=this.iterator();e.hasNext();){e.next().computeLabel(t)}}},{key:\"computeLabelling\",value:function(t){this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()),this.propagateSideLabels(0),this.propagateSideLabels(1);for(var e=[!1,!1],n=this.iterator();n.hasNext();)for(var i=n.next().getLabel(),r=0;r<2;r++)i.isLine(r)&&i.getLocation(r)===H.BOUNDARY&&(e[r]=!0);for(var s=this.iterator();s.hasNext();)for(var a=s.next(),o=a.getLabel(),u=0;u<2;u++)if(o.isAnyNull(u)){var l=H.NONE;if(e[u])l=H.EXTERIOR;else{var h=a.getCoordinate();l=this.getLocation(u,h,t)}o.setAllLocationsIfNull(u,l)}}},{key:\"getDegree\",value:function(){return this._edgeMap.size()}},{key:\"insertEdgeEnd\",value:function(t,e){this._edgeMap.put(t,e),this._edgeList=null}}],[{key:\"constructor_\",value:function(){this._edgeMap=new Ze,this._edgeList=null,this._ptInAreaLocation=[H.NONE,H.NONE]}}]),e}(),Hn=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"linkResultDirectedEdges\",value:function(){this.getResultAreaEdges();for(var t=null,e=null,n=this._SCANNING_FOR_INCOMING,i=0;i<this._resultAreaEdgeList.size();i++){var r=this._resultAreaEdgeList.get(i),s=r.getSym();if(r.getLabel().isArea())switch(null===t&&r.isInResult()&&(t=r),n){case this._SCANNING_FOR_INCOMING:if(!s.isInResult())continue;e=s,n=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(!r.isInResult())continue;e.setNext(r),n=this._SCANNING_FOR_INCOMING}}if(n===this._LINKING_TO_OUTGOING){if(null===t)throw new vt(\"no outgoing dirEdge found\",this.getCoordinate());G.isTrue(t.isInResult(),\"unable to link last incoming dirEdge\"),e.setNext(t)}}},{key:\"insert\",value:function(t){var e=t;this.insertEdgeEnd(e,e)}},{key:\"getRightmostEdge\",value:function(){var t=this.getEdges(),e=t.size();if(e<1)return null;var n=t.get(0);if(1===e)return n;var i=t.get(e-1),r=n.getQuadrant(),s=i.getQuadrant();return We.isNorthern(r)&&We.isNorthern(s)?n:We.isNorthern(r)||We.isNorthern(s)?0!==n.getDy()?n:0!==i.getDy()?i:(G.shouldNeverReachHere(\"found two horizontal edges incident on node\"),null):i}},{key:\"print\",value:function(t){mt.out.println(\"DirectedEdgeStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){var n=e.next();t.print(\"out \"),n.print(t),t.println(),t.print(\"in \"),n.getSym().print(t),t.println()}}},{key:\"getResultAreaEdges\",value:function(){if(null!==this._resultAreaEdgeList)return this._resultAreaEdgeList;this._resultAreaEdgeList=new yt;for(var t=this.iterator();t.hasNext();){var e=t.next();(e.isInResult()||e.getSym().isInResult())&&this._resultAreaEdgeList.add(e)}return this._resultAreaEdgeList}},{key:\"updateLabelling\",value:function(t){for(var e=this.iterator();e.hasNext();){var n=e.next().getLabel();n.setAllLocationsIfNull(0,t.getLocation(0)),n.setAllLocationsIfNull(1,t.getLocation(1))}}},{key:\"linkAllDirectedEdges\",value:function(){this.getEdges();for(var t=null,e=null,n=this._edgeList.size()-1;n>=0;n--){var i=this._edgeList.get(n),r=i.getSym();null===e&&(e=r),null!==t&&r.setNext(t),t=i}e.setNext(t)}},{key:\"computeDepths\",value:function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=t.getDepth($.LEFT),i=t.getDepth($.RIGHT),r=this.computeDepths(e+1,this._edgeList.size(),n),s=this.computeDepths(0,e,r);if(s!==i)throw new vt(\"depth mismatch at \"+t.getCoordinate())}else if(3===arguments.length){for(var a=arguments[0],o=arguments[1],u=arguments[2],l=u,h=a;h<o;h++){var c=this._edgeList.get(h);c.setEdgeDepths($.RIGHT,l),l=c.getDepth($.LEFT)}return l}}},{key:\"mergeSymLabels\",value:function(){for(var t=this.iterator();t.hasNext();){var e=t.next();e.getLabel().merge(e.getSym().getLabel())}}},{key:\"linkMinimalDirectedEdges\",value:function(t){for(var e=null,n=null,i=this._SCANNING_FOR_INCOMING,r=this._resultAreaEdgeList.size()-1;r>=0;r--){var s=this._resultAreaEdgeList.get(r),a=s.getSym();switch(null===e&&s.getEdgeRing()===t&&(e=s),i){case this._SCANNING_FOR_INCOMING:if(a.getEdgeRing()!==t)continue;n=a,i=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(s.getEdgeRing()!==t)continue;n.setNextMin(s),i=this._SCANNING_FOR_INCOMING}}i===this._LINKING_TO_OUTGOING&&(G.isTrue(null!==e,\"found null for first outgoing dirEdge\"),G.isTrue(e.getEdgeRing()===t,\"unable to link last incoming dirEdge\"),n.setNextMin(e))}},{key:\"getOutgoingDegree\",value:function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){var n=e.next();n.isInResult()&&t++}return t}if(1===arguments.length){for(var i=arguments[0],r=0,s=this.iterator();s.hasNext();){var a=s.next();a.getEdgeRing()===i&&r++}return r}}},{key:\"getLabel\",value:function(){return this._label}},{key:\"findCoveredLineEdges\",value:function(){for(var t=H.NONE,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=H.INTERIOR;break}if(i.isInResult()){t=H.EXTERIOR;break}}}if(t===H.NONE)return null;for(var r=t,s=this.iterator();s.hasNext();){var a=s.next(),o=a.getSym();a.isLineEdge()?a.getEdge().setCovered(r===H.INTERIOR):(a.isInResult()&&(r=H.EXTERIOR),o.isInResult()&&(r=H.INTERIOR))}}},{key:\"computeLabelling\",value:function(t){f(r(a.prototype),\"computeLabelling\",this).call(this,t),this._label=new Pe(H.NONE);for(var e=this.iterator();e.hasNext();)for(var n=e.next().getEdge().getLabel(),i=0;i<2;i++){var s=n.getLocation(i);s!==H.INTERIOR&&s!==H.BOUNDARY||this._label.setLocation(i,H.INTERIOR)}}}],[{key:\"constructor_\",value:function(){this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2}}]),a}(Vn),Zn=function(e){i(s,e);var r=c(s);function s(){return t(this,s),r.call(this)}return n(s,[{key:\"createNode\",value:function(t){return new Ye(t,new Hn)}}]),s}(Qe),jn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"compareTo\",value:function(t){var n=t;return e.compareOriented(this._pts,this._orientation,n._pts,n._orientation)}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._pts=null,this._orientation=null;var t=arguments[0];this._pts=t,this._orientation=e.orientation(t)}},{key:\"orientation\",value:function(t){return 1===jt.increasingDirection(t)}},{key:\"compareOriented\",value:function(t,e,n,i){for(var r=e?1:-1,s=i?1:-1,a=e?t.length:-1,o=i?n.length:-1,u=e?0:t.length-1,l=i?0:n.length-1;;){var h=t[u].compareTo(n[l]);if(0!==h)return h;var c=(u+=r)===a,f=(l+=s)===o;if(c&&!f)return-1;if(!c&&f)return 1;if(c&&f)return 0}}}]),e}(),Wn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"print\",value:function(t){t.print(\"MULTILINESTRING ( \");for(var e=0;e<this._edges.size();e++){var n=this._edges.get(e);e>0&&t.print(\",\"),t.print(\"(\");for(var i=n.getCoordinates(),r=0;r<i.length;r++)r>0&&t.print(\",\"),t.print(i[r].x+\" \"+i[r].y);t.println(\")\")}t.print(\") \")}},{key:\"addAll\",value:function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())}},{key:\"findEdgeIndex\",value:function(t){for(var e=0;e<this._edges.size();e++)if(this._edges.get(e).equals(t))return e;return-1}},{key:\"iterator\",value:function(){return this._edges.iterator()}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"get\",value:function(t){return this._edges.get(t)}},{key:\"findEqualEdge\",value:function(t){var e=new jn(t.getCoordinates());return this._ocaMap.get(e)}},{key:\"add\",value:function(t){this._edges.add(t);var e=new jn(t.getCoordinates());this._ocaMap.put(e,t)}}],[{key:\"constructor_\",value:function(){this._edges=new yt,this._ocaMap=new Ze}}]),e}(),Kn=function(){function e(){t(this,e)}return n(e,[{key:\"processIntersections\",value:function(t,e,n,i){}},{key:\"isDone\",value:function(){}}]),e}(),Jn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"isTrivialIntersection\",value:function(t,n,i,r){if(t===i&&1===this._li.getIntersectionNum()){if(e.isAdjacentSegments(n,r))return!0;if(t.isClosed()){var s=t.size()-1;if(0===n&&r===s||0===r&&n===s)return!0}}return!1}},{key:\"getProperIntersectionPoint\",value:function(){return this._properIntersectionPoint}},{key:\"hasProperInteriorIntersection\",value:function(){return this._hasProperInterior}},{key:\"getLineIntersector\",value:function(){return this._li}},{key:\"hasProperIntersection\",value:function(){return this._hasProper}},{key:\"processIntersections\",value:function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],s=t.getCoordinates()[e+1],a=n.getCoordinates()[i],o=n.getCoordinates()[i+1];this._li.computeIntersection(r,s,a,o),this._li.hasIntersection()&&(this.numIntersections++,this._li.isInteriorIntersection()&&(this.numInteriorIntersections++,this._hasInterior=!0),this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1),this._li.isProper()&&(this.numProperIntersections++,this._hasProper=!0,this._hasProperInterior=!0)))}},{key:\"hasIntersection\",value:function(){return this._hasIntersection}},{key:\"isDone\",value:function(){return!1}},{key:\"hasInteriorIntersection\",value:function(){return this._hasInterior}},{key:\"interfaces_\",get:function(){return[Kn]}}],[{key:\"constructor_\",value:function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._hasInterior=!1,this._properIntersectionPoint=null,this._li=null,this._isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var t=arguments[0];this._li=t}},{key:\"isAdjacentSegments\",value:function(t,e){return 1===Math.abs(t-e)}}]),e}(),Qn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getSegmentIndex\",value:function(){return this.segmentIndex}},{key:\"getCoordinate\",value:function(){return this.coord}},{key:\"print\",value:function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex),t.println(\" dist = \"+this.dist)}},{key:\"compareTo\",value:function(t){var e=t;return this.compare(e.segmentIndex,e.dist)}},{key:\"isEndPoint\",value:function(t){return 0===this.segmentIndex&&0===this.dist||this.segmentIndex===t}},{key:\"toString\",value:function(){return this.coord+\" seg # = \"+this.segmentIndex+\" dist = \"+this.dist}},{key:\"getDistance\",value:function(){return this.dist}},{key:\"compare\",value:function(t,e){return this.segmentIndex<t?-1:this.segmentIndex>t?1:this.dist<e?-1:this.dist>e?1:0}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this.coord=null,this.segmentIndex=null,this.dist=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.coord=new X(t),this.segmentIndex=e,this.dist=n}}]),e}(),$n=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"print\",value:function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"iterator\",value:function(){return this._nodeMap.values().iterator()}},{key:\"addSplitEdges\",value:function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}}},{key:\"addEndpoints\",value:function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)}},{key:\"createSplitEdge\",value:function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this.edge.pts[e.segmentIndex],r=e.dist>0||!e.coord.equals2D(i);r||n--;var s=new Array(n).fill(null),a=0;s[a++]=new X(t.coord);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)s[a++]=this.edge.pts[o];return r&&(s[a]=e.coord),new si(s,new Pe(this.edge._label))}},{key:\"add\",value:function(t,e,n){var i=new Qn(t,e,n),r=this._nodeMap.get(i);return null!==r?r:(this._nodeMap.put(i,i),i)}},{key:\"isIntersection\",value:function(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1}}],[{key:\"constructor_\",value:function(){this._nodeMap=new Ze,this.edge=null;var t=arguments[0];this.edge=t}}]),e}(),ti=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"isIntersects\",value:function(){return!this.isDisjoint()}},{key:\"isCovers\",value:function(){return(e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])||e.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||e.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||e.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY]))&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE}},{key:\"isCoveredBy\",value:function(){return(e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])||e.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||e.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||e.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY]))&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE}},{key:\"set\",value:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<t.length;e++){var n=Math.trunc(e/3),i=e%3;this._matrix[n][i]=Lt.toDimensionValue(t.charAt(e))}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this._matrix[r][s]=a}}},{key:\"isContains\",value:function(){return e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE}},{key:\"setAtLeast\",value:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<t.length;e++){var n=Math.trunc(e/3),i=e%3;this.setAtLeast(n,i,Lt.toDimensionValue(t.charAt(e)))}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this._matrix[r][s]<a&&(this._matrix[r][s]=a)}}},{key:\"setAtLeastIfValid\",value:function(t,e,n){t>=0&&e>=0&&this.setAtLeast(t,e,n)}},{key:\"isWithin\",value:function(){return e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE}},{key:\"isTouches\",value:function(t,n){return t>n?this.isTouches(n,t):(t===Lt.A&&n===Lt.A||t===Lt.L&&n===Lt.L||t===Lt.L&&n===Lt.A||t===Lt.P&&n===Lt.A||t===Lt.P&&n===Lt.L)&&(this._matrix[H.INTERIOR][H.INTERIOR]===Lt.FALSE&&(e.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||e.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||e.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY])))}},{key:\"isOverlaps\",value:function(t,n){return t===Lt.P&&n===Lt.P||t===Lt.A&&n===Lt.A?e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&e.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR])&&e.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]):t===Lt.L&&n===Lt.L&&(1===this._matrix[H.INTERIOR][H.INTERIOR]&&e.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR])&&e.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]))}},{key:\"isEquals\",value:function(t,n){return t===n&&(e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE)}},{key:\"toString\",value:function(){for(var t=new Jt(\"123456789\"),e=0;e<3;e++)for(var n=0;n<3;n++)t.setCharAt(3*e+n,Lt.toDimensionSymbol(this._matrix[e][n]));return t.toString()}},{key:\"setAll\",value:function(t){for(var e=0;e<3;e++)for(var n=0;n<3;n++)this._matrix[e][n]=t}},{key:\"get\",value:function(t,e){return this._matrix[t][e]}},{key:\"transpose\",value:function(){var t=this._matrix[1][0];return this._matrix[1][0]=this._matrix[0][1],this._matrix[0][1]=t,t=this._matrix[2][0],this._matrix[2][0]=this._matrix[0][2],this._matrix[0][2]=t,t=this._matrix[2][1],this._matrix[2][1]=this._matrix[1][2],this._matrix[1][2]=t,this}},{key:\"matches\",value:function(t){if(9!==t.length)throw new m(\"Should be length 9: \"+t);for(var n=0;n<3;n++)for(var i=0;i<3;i++)if(!e.matches(this._matrix[n][i],t.charAt(3*n+i)))return!1;return!0}},{key:\"add\",value:function(t){for(var e=0;e<3;e++)for(var n=0;n<3;n++)this.setAtLeast(e,n,t.get(e,n))}},{key:\"isDisjoint\",value:function(){return this._matrix[H.INTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.INTERIOR][H.BOUNDARY]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.INTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.BOUNDARY]===Lt.FALSE}},{key:\"isCrosses\",value:function(t,n){return t===Lt.P&&n===Lt.L||t===Lt.P&&n===Lt.A||t===Lt.L&&n===Lt.A?e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&e.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR]):t===Lt.L&&n===Lt.P||t===Lt.A&&n===Lt.P||t===Lt.A&&n===Lt.L?e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&e.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]):t===Lt.L&&n===Lt.L&&0===this._matrix[H.INTERIOR][H.INTERIOR]}},{key:\"interfaces_\",get:function(){return[I]}}],[{key:\"constructor_\",value:function(){if(this._matrix=null,0===arguments.length)this._matrix=Array(3).fill().map((function(){return Array(3)})),this.setAll(Lt.FALSE);else if(1===arguments.length)if(\"string\"==typeof arguments[0]){var t=arguments[0];e.constructor_.call(this),this.set(t)}else if(arguments[0]instanceof e){var n=arguments[0];e.constructor_.call(this),this._matrix[H.INTERIOR][H.INTERIOR]=n._matrix[H.INTERIOR][H.INTERIOR],this._matrix[H.INTERIOR][H.BOUNDARY]=n._matrix[H.INTERIOR][H.BOUNDARY],this._matrix[H.INTERIOR][H.EXTERIOR]=n._matrix[H.INTERIOR][H.EXTERIOR],this._matrix[H.BOUNDARY][H.INTERIOR]=n._matrix[H.BOUNDARY][H.INTERIOR],this._matrix[H.BOUNDARY][H.BOUNDARY]=n._matrix[H.BOUNDARY][H.BOUNDARY],this._matrix[H.BOUNDARY][H.EXTERIOR]=n._matrix[H.BOUNDARY][H.EXTERIOR],this._matrix[H.EXTERIOR][H.INTERIOR]=n._matrix[H.EXTERIOR][H.INTERIOR],this._matrix[H.EXTERIOR][H.BOUNDARY]=n._matrix[H.EXTERIOR][H.BOUNDARY],this._matrix[H.EXTERIOR][H.EXTERIOR]=n._matrix[H.EXTERIOR][H.EXTERIOR]}}},{key:\"matches\",value:function(){if(Number.isInteger(arguments[0])&&\"string\"==typeof arguments[1]){var t=arguments[0],n=arguments[1];return n===Lt.SYM_DONTCARE||(n===Lt.SYM_TRUE&&(t>=0||t===Lt.TRUE)||(n===Lt.SYM_FALSE&&t===Lt.FALSE||(n===Lt.SYM_P&&t===Lt.P||(n===Lt.SYM_L&&t===Lt.L||n===Lt.SYM_A&&t===Lt.A))))}if(\"string\"==typeof arguments[0]&&\"string\"==typeof arguments[1]){var i=arguments[0],r=arguments[1],s=new e(i);return s.matches(r)}}},{key:\"isTrue\",value:function(t){return t>=0||t===Lt.TRUE}}]),e}(),ei=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"size\",value:function(){return this._size}},{key:\"addAll\",value:function(t){return null===t||0===t.length?null:(this.ensureCapacity(this._size+t.length),mt.arraycopy(t,0,this._data,this._size,t.length),void(this._size+=t.length))}},{key:\"ensureCapacity\",value:function(t){if(t<=this._data.length)return null;var e=Math.max(t,2*this._data.length);this._data=At.copyOf(this._data,e)}},{key:\"toArray\",value:function(){var t=new Array(this._size).fill(null);return mt.arraycopy(this._data,0,t,0,this._size),t}},{key:\"add\",value:function(t){this.ensureCapacity(this._size+1),this._data[this._size]=t,++this._size}}],[{key:\"constructor_\",value:function(){if(this._data=null,this._size=0,0===arguments.length)e.constructor_.call(this,10);else if(1===arguments.length){var t=arguments[0];this._data=new Array(t).fill(null)}}}]),e}(),ni=function(){function e(){t(this,e)}return n(e,[{key:\"getChainStartIndices\",value:function(t){var e=0,n=new ei(Math.trunc(t.length/2));n.add(e);do{var i=this.findChainEnd(t,e);n.add(i),e=i}while(e<t.length-1);return n.toArray()}},{key:\"findChainEnd\",value:function(t,e){for(var n=We.quadrant(t[e],t[e+1]),i=e+1;i<t.length;){if(We.quadrant(t[i-1],t[i])!==n)break;i++}return i-1}},{key:\"OLDgetChainStartIndices\",value:function(t){var n=0,i=new yt;i.add(n);do{var r=this.findChainEnd(t,n);i.add(r),n=r}while(n<t.length-1);return e.toIntArray(i)}}],[{key:\"toIntArray\",value:function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e}}]),e}(),ii=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinates\",value:function(){return this.pts}},{key:\"getMaxX\",value:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e>n?e:n}},{key:\"getMinX\",value:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e<n?e:n}},{key:\"computeIntersectsForChain\",value:function(){if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.computeIntersectsForChain(this.startIndex[t],this.startIndex[t+1],e,e.startIndex[n],e.startIndex[n+1],i)}else if(6===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3],u=arguments[4],l=arguments[5];if(s-r==1&&u-o==1)return l.addIntersections(this.e,r,a.e,o),null;if(!this.overlaps(r,s,a,o,u))return null;var h=Math.trunc((r+s)/2),c=Math.trunc((o+u)/2);r<h&&(o<c&&this.computeIntersectsForChain(r,h,a,o,c,l),c<u&&this.computeIntersectsForChain(r,h,a,c,u,l)),h<s&&(o<c&&this.computeIntersectsForChain(h,s,a,o,c,l),c<u&&this.computeIntersectsForChain(h,s,a,c,u,l))}}},{key:\"overlaps\",value:function(t,e,n,i,r){return U.intersects(this.pts[t],this.pts[e],n.pts[i],n.pts[r])}},{key:\"getStartIndexes\",value:function(){return this.startIndex}},{key:\"computeIntersects\",value:function(t,e){for(var n=0;n<this.startIndex.length-1;n++)for(var i=0;i<t.startIndex.length-1;i++)this.computeIntersectsForChain(n,t,i,e)}}],[{key:\"constructor_\",value:function(){this.e=null,this.pts=null,this.startIndex=null;var t=arguments[0];this.e=t,this.pts=t.getCoordinates();var e=new ni;this.startIndex=e.getChainStartIndices(this.pts)}}]),e}(),ri=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getDepth\",value:function(t,e){return this._depth[t][e]}},{key:\"setDepth\",value:function(t,e,n){this._depth[t][e]=n}},{key:\"isNull\",value:function(){if(0===arguments.length){for(var t=0;t<2;t++)for(var n=0;n<3;n++)if(this._depth[t][n]!==e.NULL_VALUE)return!1;return!0}if(1===arguments.length){var i=arguments[0];return this._depth[i][1]===e.NULL_VALUE}if(2===arguments.length){var r=arguments[0],s=arguments[1];return this._depth[r][s]===e.NULL_VALUE}}},{key:\"normalize\",value:function(){for(var t=0;t<2;t++)if(!this.isNull(t)){var e=this._depth[t][1];this._depth[t][2]<e&&(e=this._depth[t][2]),e<0&&(e=0);for(var n=1;n<3;n++){var i=0;this._depth[t][n]>e&&(i=1),this._depth[t][n]=i}}}},{key:\"getDelta\",value:function(t){return this._depth[t][$.RIGHT]-this._depth[t][$.LEFT]}},{key:\"getLocation\",value:function(t,e){return this._depth[t][e]<=0?H.EXTERIOR:H.INTERIOR}},{key:\"toString\",value:function(){return\"A: \"+this._depth[0][1]+\",\"+this._depth[0][2]+\" B: \"+this._depth[1][1]+\",\"+this._depth[1][2]}},{key:\"add\",value:function(){if(1===arguments.length)for(var t=arguments[0],n=0;n<2;n++)for(var i=1;i<3;i++){var r=t.getLocation(n,i);r!==H.EXTERIOR&&r!==H.INTERIOR||(this.isNull(n,i)?this._depth[n][i]=e.depthAtLocation(r):this._depth[n][i]+=e.depthAtLocation(r))}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];o===H.INTERIOR&&this._depth[s][a]++}}}],[{key:\"constructor_\",value:function(){this._depth=Array(2).fill().map((function(){return Array(3)}));for(var t=0;t<2;t++)for(var n=0;n<3;n++)this._depth[t][n]=e.NULL_VALUE}},{key:\"depthAtLocation\",value:function(t){return t===H.EXTERIOR?0:t===H.INTERIOR?1:e.NULL_VALUE}}]),e}();ri.NULL_VALUE=-1;var si=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"getDepth\",value:function(){return this._depth}},{key:\"getCollapsedEdge\",value:function(){var t=new Array(2).fill(null);return t[0]=this.pts[0],t[1]=this.pts[1],new a(t,Pe.toLineLabel(this._label))}},{key:\"isIsolated\",value:function(){return this._isIsolated}},{key:\"getCoordinates\",value:function(){return this.pts}},{key:\"setIsolated\",value:function(t){this._isIsolated=t}},{key:\"setName\",value:function(t){this._name=t}},{key:\"equals\",value:function(t){if(!(t instanceof a))return!1;var e=t;if(this.pts.length!==e.pts.length)return!1;for(var n=!0,i=!0,r=this.pts.length,s=0;s<this.pts.length;s++)if(this.pts[s].equals2D(e.pts[s])||(n=!1),this.pts[s].equals2D(e.pts[--r])||(i=!1),!n&&!i)return!1;return!0}},{key:\"getCoordinate\",value:function(){if(0===arguments.length)return this.pts.length>0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}}},{key:\"print\",value:function(t){t.print(\"edge \"+this._name+\": \"),t.print(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.print(\",\"),t.print(this.pts[e].x+\" \"+this.pts[e].y);t.print(\") \"+this._label+\" \"+this._depthDelta)}},{key:\"computeIM\",value:function(t){a.updateIM(this._label,t)}},{key:\"isCollapsed\",value:function(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))}},{key:\"isClosed\",value:function(){return this.pts[0].equals(this.pts[this.pts.length-1])}},{key:\"getMaximumSegmentIndex\",value:function(){return this.pts.length-1}},{key:\"getDepthDelta\",value:function(){return this._depthDelta}},{key:\"getNumPoints\",value:function(){return this.pts.length}},{key:\"printReverse\",value:function(t){t.print(\"edge \"+this._name+\": \");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+\" \");t.println(\"\")}},{key:\"getMonotoneChainEdge\",value:function(){return null===this._mce&&(this._mce=new ii(this)),this._mce}},{key:\"getEnvelope\",value:function(){if(null===this._env){this._env=new U;for(var t=0;t<this.pts.length;t++)this._env.expandToInclude(this.pts[t])}return this._env}},{key:\"addIntersection\",value:function(t,e,n,i){var r=new X(t.getIntersection(i)),s=e,a=t.getEdgeDistance(n,i),o=s+1;if(o<this.pts.length){var u=this.pts[o];r.equals2D(u)&&(s=o,a=0)}this.eiList.add(r,s,a)}},{key:\"toString\",value:function(){var t=new Jt;t.append(\"edge \"+this._name+\": \"),t.append(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.append(\",\"),t.append(this.pts[e].x+\" \"+this.pts[e].y);return t.append(\") \"+this._label+\" \"+this._depthDelta),t.toString()}},{key:\"isPointwiseEqual\",value:function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e<this.pts.length;e++)if(!this.pts[e].equals2D(t.pts[e]))return!1;return!0}},{key:\"setDepthDelta\",value:function(t){this._depthDelta=t}},{key:\"getEdgeIntersectionList\",value:function(){return this.eiList}},{key:\"addIntersections\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)}}],[{key:\"constructor_\",value:function(){if(this.pts=null,this._env=null,this.eiList=new $n(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new ri,this._depthDelta=0,1===arguments.length){var t=arguments[0];a.constructor_.call(this,t,null)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.pts=e,this._label=n}}},{key:\"updateIM\",value:function(){if(!(2===arguments.length&&arguments[1]instanceof ti&&arguments[0]instanceof Pe))return f(r(a),\"updateIM\",this).apply(this,arguments);var t=arguments[0],e=arguments[1];e.setAtLeastIfValid(t.getLocation(0,$.ON),t.getLocation(1,$.ON),1),t.isArea()&&(e.setAtLeastIfValid(t.getLocation(0,$.LEFT),t.getLocation(1,$.LEFT),2),e.setAtLeastIfValid(t.getLocation(0,$.RIGHT),t.getLocation(1,$.RIGHT),2))}}]),a}(qe),ai=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"setWorkingPrecisionModel\",value:function(t){this._workingPrecisionModel=t}},{key:\"insertUniqueEdge\",value:function(t){var n=this._edgeList.findEqualEdge(t);if(null!==n){var i=n.getLabel(),r=t.getLabel();n.isPointwiseEqual(t)||(r=new Pe(t.getLabel())).flip(),i.merge(r);var s=e.depthDelta(r),a=n.getDepthDelta()+s;n.setDepthDelta(a)}else this._edgeList.add(t),t.setDepthDelta(e.depthDelta(t.getLabel()))}},{key:\"buildSubgraphs\",value:function(t,e){for(var n=new yt,i=t.iterator();i.hasNext();){var r=i.next(),s=r.getRightmostCoordinate(),a=new Dn(n).getDepth(s);r.computeDepth(a),r.findResultEdges(),n.add(r),e.add(r.getDirectedEdges(),r.getNodes())}}},{key:\"createSubgraphs\",value:function(t){for(var e=new yt,n=t.getNodes().iterator();n.hasNext();){var i=n.next();if(!i.isVisited()){var r=new _t;r.create(i),e.add(r)}}return on.sort(e,on.reverseOrder()),e}},{key:\"createEmptyResultGeometry\",value:function(){return this._geomFact.createPolygon()}},{key:\"getNoder\",value:function(t){if(null!==this._workingNoder)return this._workingNoder;var e=new Rn,n=new Oe;return n.setPrecisionModel(t),e.setSegmentIntersector(new Jn(n)),e}},{key:\"buffer\",value:function(t,e){var n=this._workingPrecisionModel;null===n&&(n=t.getPrecisionModel()),this._geomFact=t.getFactory();var i=new Pn(n,this._bufParams),r=new zn(t,e,i).getCurves();if(r.size()<=0)return this.createEmptyResultGeometry();this.computeNodedEdges(r,n),this._graph=new $e(new Zn),this._graph.addEdges(this._edgeList.getEdges());var s=this.createSubgraphs(this._graph),a=new tn(this._geomFact);this.buildSubgraphs(s,a);var o=a.getPolygons();return o.size()<=0?this.createEmptyResultGeometry():this._geomFact.buildGeometry(o)}},{key:\"computeNodedEdges\",value:function(t,e){var n=this.getNoder(e);n.computeNodes(t);for(var i=n.getNodedSubstrings().iterator();i.hasNext();){var r=i.next(),s=r.getCoordinates();if(2!==s.length||!s[0].equals2D(s[1])){var a=r.getData(),o=new si(r.getCoordinates(),new Pe(a));this.insertUniqueEdge(o)}}}},{key:\"setNoder\",value:function(t){this._workingNoder=t}}],[{key:\"constructor_\",value:function(){this._bufParams=null,this._workingPrecisionModel=null,this._workingNoder=null,this._geomFact=null,this._graph=null,this._edgeList=new Wn;var t=arguments[0];this._bufParams=t}},{key:\"depthDelta\",value:function(t){var e=t.getLocation(0,$.LEFT),n=t.getLocation(0,$.RIGHT);return e===H.INTERIOR&&n===H.EXTERIOR?1:e===H.EXTERIOR&&n===H.INTERIOR?-1:0}},{key:\"convertSegStrings\",value:function(t){for(var e=new ae,n=new yt;t.hasNext();){var i=t.next(),r=e.createLineString(i.getCoordinates());n.add(r)}return e.buildGeometry(n)}}]),e}(),oi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"rescale\",value:function(){if(rt(arguments[0],Z))for(var t=arguments[0],e=t.iterator();e.hasNext();){var n=e.next();this.rescale(n.getCoordinates())}else if(arguments[0]instanceof Array){for(var i=arguments[0],r=0;r<i.length;r++)i[r].x=i[r].x/this._scaleFactor+this._offsetX,i[r].y=i[r].y/this._scaleFactor+this._offsetY;2===i.length&&i[0].equals2D(i[1])&&mt.out.println(i)}}},{key:\"scale\",value:function(){if(rt(arguments[0],Z)){for(var t=arguments[0],e=new yt(t.size()),n=t.iterator();n.hasNext();){var i=n.next();e.add(new In(this.scale(i.getCoordinates()),i.getData()))}return e}if(arguments[0]instanceof Array){for(var r=arguments[0],s=new Array(r.length).fill(null),a=0;a<r.length;a++)s[a]=new X(Math.round((r[a].x-this._offsetX)*this._scaleFactor),Math.round((r[a].y-this._offsetY)*this._scaleFactor),r[a].getZ());var o=jt.removeRepeatedPoints(s);return o}}},{key:\"isIntegerPrecision\",value:function(){return 1===this._scaleFactor}},{key:\"getNodedSubstrings\",value:function(){var t=this._noder.getNodedSubstrings();return this._isScaled&&this.rescale(t),t}},{key:\"computeNodes\",value:function(t){var e=t;this._isScaled&&(e=this.scale(t)),this._noder.computeNodes(e)}},{key:\"interfaces_\",get:function(){return[Ln]}}],[{key:\"constructor_\",value:function(){if(this._noder=null,this._scaleFactor=null,this._offsetX=null,this._offsetY=null,this._isScaled=!1,2===arguments.length){var t=arguments[0],n=arguments[1];e.constructor_.call(this,t,n,0,0)}else if(4===arguments.length){var i=arguments[0],r=arguments[1];this._noder=i,this._scaleFactor=r,this._isScaled=!this.isIntegerPrecision()}}}]),e}(),ui=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"checkEndPtVertexIntersections\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next(),n=e.getCoordinates();this.checkEndPtVertexIntersections(n[0],this._segStrings),this.checkEndPtVertexIntersections(n[n.length-1],this._segStrings)}else if(2===arguments.length)for(var i=arguments[0],r=arguments[1],s=r.iterator();s.hasNext();)for(var a=s.next(),o=a.getCoordinates(),u=1;u<o.length-1;u++)if(o[u].equals(i))throw new D(\"found endpt/interior pt intersection at index \"+u+\" :pt \"+i)}},{key:\"checkInteriorIntersections\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();)for(var e=t.next(),n=this._segStrings.iterator();n.hasNext();){var i=n.next();this.checkInteriorIntersections(e,i)}else if(2===arguments.length)for(var r=arguments[0],s=arguments[1],a=r.getCoordinates(),o=s.getCoordinates(),u=0;u<a.length-1;u++)for(var l=0;l<o.length-1;l++)this.checkInteriorIntersections(r,u,s,l);else if(4===arguments.length){var h=arguments[0],c=arguments[1],f=arguments[2],v=arguments[3];if(h===f&&c===v)return null;var g=h.getCoordinates()[c],y=h.getCoordinates()[c+1],d=f.getCoordinates()[v],_=f.getCoordinates()[v+1];if(this._li.computeIntersection(g,y,d,_),this._li.hasIntersection()&&(this._li.isProper()||this.hasInteriorIntersection(this._li,g,y)||this.hasInteriorIntersection(this._li,d,_)))throw new D(\"found non-noded intersection at \"+g+\"-\"+y+\" and \"+d+\"-\"+_)}}},{key:\"checkValid\",value:function(){this.checkEndPtVertexIntersections(),this.checkInteriorIntersections(),this.checkCollapses()}},{key:\"checkCollapses\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next();this.checkCollapses(e)}else if(1===arguments.length)for(var n=arguments[0],i=n.getCoordinates(),r=0;r<i.length-2;r++)this.checkCollapse(i[r],i[r+1],i[r+2])}},{key:\"hasInteriorIntersection\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++){var r=t.getIntersection(i);if(!r.equals(e)&&!r.equals(n))return!0}return!1}},{key:\"checkCollapse\",value:function(t,n,i){if(t.equals(i))throw new D(\"found non-noded collapse at \"+e.fact.createLineString([t,n,i]))}}],[{key:\"constructor_\",value:function(){this._li=new Oe,this._segStrings=null;var t=arguments[0];this._segStrings=t}}]),e}();ui.fact=new ae;var li=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"intersectsScaled\",value:function(t,e){var n=Math.min(t.x,e.x),i=Math.max(t.x,e.x),r=Math.min(t.y,e.y),s=Math.max(t.y,e.y),a=this._maxx<n||this._minx>i||this._maxy<r||this._miny>s;if(a)return!1;var o=this.intersectsToleranceSquare(t,e);return G.isTrue(!(a&&o),\"Found bad envelope test\"),o}},{key:\"initCorners\",value:function(t){var e=.5;this._minx=t.x-e,this._maxx=t.x+e,this._miny=t.y-e,this._maxy=t.y+e,this._corner[0]=new X(this._maxx,this._maxy),this._corner[1]=new X(this._minx,this._maxy),this._corner[2]=new X(this._minx,this._miny),this._corner[3]=new X(this._maxx,this._miny)}},{key:\"intersects\",value:function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))}},{key:\"scale\",value:function(t){return Math.round(t*this._scaleFactor)}},{key:\"getCoordinate\",value:function(){return this._originalPt}},{key:\"copyScaled\",value:function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)}},{key:\"getSafeEnvelope\",value:function(){if(null===this._safeEnv){var t=e.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new U(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv}},{key:\"intersectsPixelClosure\",value:function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))}},{key:\"intersectsToleranceSquare\",value:function(t,e){var n=!1,i=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(i=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.isProper()||(!(!n||!i)||(!!t.equals(this._pt)||!!e.equals(this._pt))))))}},{key:\"addSnappedNode\",value:function(t,e){var n=t.getCoordinate(e),i=t.getCoordinate(e+1);return!!this.intersects(n,i)&&(t.addIntersection(this.getCoordinate(),e),!0)}}],[{key:\"constructor_\",value:function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(this._originalPt=t,this._pt=t,this._scaleFactor=e,this._li=n,e<=0)throw new m(\"Scale factor must be non-zero\");1!==e&&(this._pt=new X(this.scale(t.x),this.scale(t.y)),this._p0Scaled=new X,this._p1Scaled=new X),this.initCorners(this._pt)}}]),e}();li.SAFE_ENV_EXPANSION_FACTOR=.75;var hi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"select\",value:function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];t.getLineSegment(e,this.selectedSegment),this.select(this.selectedSegment)}}}],[{key:\"constructor_\",value:function(){this.selectedSegment=new En}}]),e}(),ci=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"snap\",value:function(){if(1===arguments.length){var e=arguments[0];return this.snap(e,null,-1)}if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2],a=i.getSafeEnvelope(),o=new fi(i,r,s);return this._index.query(a,new(function(){function e(){t(this,e)}return n(e,[{key:\"interfaces_\",get:function(){return[hn]}},{key:\"visitItem\",value:function(t){t.select(a,o)}}]),e}())),o.isNodeAdded()}}}],[{key:\"constructor_\",value:function(){this._index=null;var t=arguments[0];this._index=t}}]),e}(),fi=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"isNodeAdded\",value:function(){return this._isNodeAdded}},{key:\"select\",value:function(){if(!(2===arguments.length&&Number.isInteger(arguments[1])&&arguments[0]instanceof Tn))return f(r(a.prototype),\"select\",this).apply(this,arguments);var t=arguments[0],e=arguments[1],n=t.getContext();if(this._parentEdge===n&&(e===this._hotPixelVertexIndex||e+1===this._hotPixelVertexIndex))return null;this._isNodeAdded|=this._hotPixel.addSnappedNode(n,e)}}],[{key:\"constructor_\",value:function(){this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._hotPixel=t,this._parentEdge=e,this._hotPixelVertexIndex=n}}]),a}(hi);ci.HotPixelSnapAction=fi;var vi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"processIntersections\",value:function(t,e,n,i){if(t===n&&e===i)return null;var r=t.getCoordinates()[e],s=t.getCoordinates()[e+1],a=n.getCoordinates()[i],o=n.getCoordinates()[i+1];if(this._li.computeIntersection(r,s,a,o),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u<this._li.getIntersectionNum();u++)this._interiorIntersections.add(this._li.getIntersection(u));t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)}}},{key:\"isDone\",value:function(){return!1}},{key:\"getInteriorIntersections\",value:function(){return this._interiorIntersections}},{key:\"interfaces_\",get:function(){return[Kn]}}],[{key:\"constructor_\",value:function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new yt}}]),e}(),gi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"checkCorrectness\",value:function(t){var e=In.getNodedSubstrings(t),n=new ui(e);try{n.checkValid()}catch(t){if(!(t instanceof p))throw t;t.printStackTrace()}}},{key:\"getNodedSubstrings\",value:function(){return In.getNodedSubstrings(this._nodedSegStrings)}},{key:\"snapRound\",value:function(t,e){var n=this.findInteriorIntersections(t,e);this.computeIntersectionSnaps(n),this.computeVertexSnaps(t)}},{key:\"findInteriorIntersections\",value:function(t,e){var n=new vi(e);return this._noder.setSegmentIntersector(n),this._noder.computeNodes(t),n.getInteriorIntersections()}},{key:\"computeVertexSnaps\",value:function(){if(rt(arguments[0],Z))for(var t=arguments[0],e=t.iterator();e.hasNext();){var n=e.next();this.computeVertexSnaps(n)}else if(arguments[0]instanceof In)for(var i=arguments[0],r=i.getCoordinates(),s=0;s<r.length;s++){var a=new li(r[s],this._scaleFactor,this._li),o=this._pointSnapper.snap(a,i,s);o&&i.addIntersection(r[s],s)}}},{key:\"computeNodes\",value:function(t){this._nodedSegStrings=t,this._noder=new Rn,this._pointSnapper=new ci(this._noder.getIndex()),this.snapRound(t,this._li)}},{key:\"computeIntersectionSnaps\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=new li(n,this._scaleFactor,this._li);this._pointSnapper.snap(i)}}},{key:\"interfaces_\",get:function(){return[Ln]}}],[{key:\"constructor_\",value:function(){this._pm=null,this._li=null,this._scaleFactor=null,this._noder=null,this._pointSnapper=null,this._nodedSegStrings=null;var t=arguments[0];this._pm=t,this._li=new Oe,this._li.setPrecisionModel(t),this._scaleFactor=t.getScale()}}]),e}(),yi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"bufferFixedPrecision\",value:function(t){var e=new oi(new gi(new ie(1)),t.getScale()),n=new ai(this._bufParams);n.setWorkingPrecisionModel(t),n.setNoder(e),this._resultGeometry=n.buffer(this._argGeom,this._distance)}},{key:\"bufferReducedPrecision\",value:function(){if(0===arguments.length){for(var t=e.MAX_PRECISION_DIGITS;t>=0;t--){try{this.bufferReducedPrecision(t)}catch(t){if(!(t instanceof vt))throw t;this._saveException=t}if(null!==this._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],i=e.precisionScaleFactor(this._argGeom,this._distance,n),r=new ie(i);this.bufferFixedPrecision(r)}}},{key:\"computeGeometry\",value:function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===ie.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()}},{key:\"setQuadrantSegments\",value:function(t){this._bufParams.setQuadrantSegments(t)}},{key:\"bufferOriginalPrecision\",value:function(){try{var t=new ai(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof D))throw t;this._saveException=t}}},{key:\"getResultGeometry\",value:function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry}},{key:\"setEndCapStyle\",value:function(t){this._bufParams.setEndCapStyle(t)}}],[{key:\"constructor_\",value:function(){if(this._argGeom=null,this._distance=null,this._bufParams=new _,this._resultGeometry=null,this._saveException=null,1===arguments.length){var t=arguments[0];this._argGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._argGeom=e,this._bufParams=n}}},{key:\"bufferOp\",value:function(){if(2===arguments.length){var t=arguments[0],n=arguments[1],i=new e(t),r=i.getResultGeometry(n);return r}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof V&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1],o=arguments[2],u=new e(s);u.setQuadrantSegments(o);var l=u.getResultGeometry(a);return l}if(arguments[2]instanceof _&&arguments[0]instanceof V&&\"number\"==typeof arguments[1]){var h=arguments[0],c=arguments[1],f=arguments[2],v=new e(h,f),g=v.getResultGeometry(c);return g}}else if(4===arguments.length){var y=arguments[0],d=arguments[1],p=arguments[2],m=arguments[3],k=new e(y);k.setQuadrantSegments(p),k.setEndCapStyle(m);var x=k.getResultGeometry(d);return x}}},{key:\"precisionScaleFactor\",value:function(t,e,n){var i=t.getEnvelopeInternal(),r=kt.max(Math.abs(i.getMaxX()),Math.abs(i.getMaxY()),Math.abs(i.getMinX()),Math.abs(i.getMinY()))+2*(e>0?e:0),s=n-Math.trunc(Math.log(r)/Math.log(10)+1);return Math.pow(10,s)}}]),e}();yi.CAP_ROUND=_.CAP_ROUND,yi.CAP_BUTT=_.CAP_FLAT,yi.CAP_FLAT=_.CAP_FLAT,yi.CAP_SQUARE=_.CAP_SQUARE,yi.MAX_PRECISION_DIGITS=12;var di=[\"Point\",\"MultiPoint\",\"LineString\",\"MultiLineString\",\"Polygon\",\"MultiPolygon\"],_i=function(){function e(n){t(this,e),this.geometryFactory=n||new ae}return n(e,[{key:\"read\",value:function(t){var e,n=(e=\"string\"==typeof t?JSON.parse(t):t).type;if(!pi[n])throw new Error(\"Unknown GeoJSON type: \"+e.type);return-1!==di.indexOf(n)?pi[n].call(this,e.coordinates):\"GeometryCollection\"===n?pi[n].call(this,e.geometries):pi[n].call(this,e)}},{key:\"write\",value:function(t){var e=t.getGeometryType();if(!mi[e])throw new Error(\"Geometry is not supported\");return mi[e].call(this,t)}}]),e}(),pi={Feature:function(t){var e={};for(var n in t)e[n]=t[n];if(t.geometry){var i=t.geometry.type;if(!pi[i])throw new Error(\"Unknown GeoJSON type: \"+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=pi.bbox.call(this,t.bbox)),e},FeatureCollection:function(t){var e={};if(t.features){e.features=[];for(var n=0;n<t.features.length;++n)e.features.push(this.read(t.features[n]))}return t.bbox&&(e.bbox=this.parse.bbox.call(this,t.bbox)),e},coordinates:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(o(X,v(i)))}return e},bbox:function(t){return this.geometryFactory.createLinearRing([new X(t[0],t[1]),new X(t[2],t[1]),new X(t[2],t[3]),new X(t[0],t[3]),new X(t[0],t[1])])},Point:function(t){var e=o(X,v(t));return this.geometryFactory.createPoint(e)},MultiPoint:function(t){for(var e=[],n=0;n<t.length;++n)e.push(pi.Point.call(this,t[n]));return this.geometryFactory.createMultiPoint(e)},LineString:function(t){var e=pi.coordinates.call(this,t);return this.geometryFactory.createLineString(e)},MultiLineString:function(t){for(var e=[],n=0;n<t.length;++n)e.push(pi.LineString.call(this,t[n]));return this.geometryFactory.createMultiLineString(e)},Polygon:function(t){for(var e=pi.coordinates.call(this,t[0]),n=this.geometryFactory.createLinearRing(e),i=[],r=1;r<t.length;++r){var s=t[r],a=pi.coordinates.call(this,s),o=this.geometryFactory.createLinearRing(a);i.push(o)}return this.geometryFactory.createPolygon(n,i)},MultiPolygon:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(pi.Polygon.call(this,i))}return this.geometryFactory.createMultiPolygon(e)},GeometryCollection:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(this.read(i))}return this.geometryFactory.createGeometryCollection(e)}},mi={coordinate:function(t){var e=[t.x,t.y];return t.z&&e.push(t.z),t.m&&e.push(t.m),e},Point:function(t){return{type:\"Point\",coordinates:mi.coordinate.call(this,t.getCoordinate())}},MultiPoint:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=mi.Point.call(this,i);e.push(r.coordinates)}return{type:\"MultiPoint\",coordinates:e}},LineString:function(t){for(var e=[],n=t.getCoordinates(),i=0;i<n.length;++i){var r=n[i];e.push(mi.coordinate.call(this,r))}return{type:\"LineString\",coordinates:e}},MultiLineString:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=mi.LineString.call(this,i);e.push(r.coordinates)}return{type:\"MultiLineString\",coordinates:e}},Polygon:function(t){var e=[],n=mi.LineString.call(this,t._shell);e.push(n.coordinates);for(var i=0;i<t._holes.length;++i){var r=t._holes[i],s=mi.LineString.call(this,r);e.push(s.coordinates)}return{type:\"Polygon\",coordinates:e}},MultiPolygon:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=mi.Polygon.call(this,i);e.push(r.coordinates)}return{type:\"MultiPolygon\",coordinates:e}},GeometryCollection:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=i.getGeometryType();e.push(mi[r].call(this,i))}return{type:\"GeometryCollection\",geometries:e}}};return{BufferOp:yi,GeoJSONReader:function(){function e(n){t(this,e),this.parser=new _i(n||new ae)}return n(e,[{key:\"read\",value:function(t){return this.parser.read(t)}}]),e}(),GeoJSONWriter:function(){function e(){t(this,e),this.parser=new _i(this.geometryFactory)}return n(e,[{key:\"write\",value:function(t){return this.parser.write(t)}}]),e}()}}));\n//# sourceMappingURL=jsts.min.js.map\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipPolygon from \"./polygon\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport function clipExtent(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipPolygon(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n var lambda = point[0],\n phi = point[1],\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = point0[0],\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = point1[0],\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","import clipBuffer from \"./buffer\";\nimport clipPolygon from \"./polygon\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(rotate, sink) {\n var line = clipLine(sink),\n rotatedStart = rotate.invert(start[0], start[1]),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, rotatedStart);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n var point = rotate(lambda, phi);\n if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n var point = rotate(lambda, phi);\n line.point(point[0], point[1]);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n var point = rotate(lambda, phi);\n ringSink.point(point[0], point[1]);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius, delta) {\n var cr = cos(radius),\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nexport function fitExtent(projection, extent, object) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n clip = projection.clipExtent && projection.clipExtent();\n\n projection\n .scale(150)\n .translate([0, 0]);\n\n if (clip != null) projection.clipExtent(null);\n\n geoStream(object, projection.stream(boundsStream));\n\n var b = boundsStream.result(),\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n\n if (clip != null) projection.clipExtent(clip);\n\n return projection\n .scale(k * 150)\n .translate([x, y]);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport {clipExtent} from \"../clip/extent\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {degrees, radians, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n dx, dy, lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n theta = null, preclip = clipAntimeridian, // clip angle\n x0 = null, y0, x1, y1, postclip = identity, // clip extent\n delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n cache,\n cacheStream;\n\n function projection(point) {\n point = projectRotate(point[0] * radians, point[1] * radians);\n return [point[0] * k + dx, dy - point[1] * k];\n }\n\n function invert(point) {\n point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n function projectTransform(x, y) {\n return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n function recenter() {\n projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n var center = project(lambda, phi);\n dx = x - center[0] * k;\n dy = y + center[1] * k;\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","// index.js\nimport { center } from \"@turf/center\";\nimport jsts from \"@turf/jsts\";\nimport { geomEach, featureEach } from \"@turf/meta\";\nimport { geoAzimuthalEquidistant } from \"d3-geo\";\nimport {\n feature,\n featureCollection,\n radiansToLength,\n lengthToRadians,\n earthRadius\n} from \"@turf/helpers\";\nvar { BufferOp, GeoJSONReader, GeoJSONWriter } = jsts;\nfunction buffer(geojson, radius, options) {\n options = options || {};\n var units = options.units || \"kilometers\";\n var steps = options.steps || 8;\n if (!geojson)\n throw new Error(\"geojson is required\");\n if (typeof options !== \"object\")\n throw new Error(\"options must be an object\");\n if (typeof steps !== \"number\")\n throw new Error(\"steps must be an number\");\n if (radius === void 0)\n throw new Error(\"radius is required\");\n if (steps <= 0)\n throw new Error(\"steps must be greater than 0\");\n var results = [];\n switch (geojson.type) {\n case \"GeometryCollection\":\n geomEach(geojson, function(geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered)\n results.push(buffered);\n });\n return featureCollection(results);\n case \"FeatureCollection\":\n featureEach(geojson, function(feature2) {\n var multiBuffered = bufferFeature(feature2, radius, units, steps);\n if (multiBuffered) {\n featureEach(multiBuffered, function(buffered) {\n if (buffered)\n results.push(buffered);\n });\n }\n });\n return featureCollection(results);\n }\n return bufferFeature(geojson, radius, units, steps);\n}\nfunction bufferFeature(geojson, radius, units, steps) {\n var properties = geojson.properties || {};\n var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n if (geometry.type === \"GeometryCollection\") {\n var results = [];\n geomEach(geojson, function(geometry2) {\n var buffered2 = bufferFeature(geometry2, radius, units, steps);\n if (buffered2)\n results.push(buffered2);\n });\n return featureCollection(results);\n }\n var projection = defineProjection(geometry);\n var projected = {\n type: geometry.type,\n coordinates: projectCoords(geometry.coordinates, projection)\n };\n var reader = new GeoJSONReader();\n var geom = reader.read(projected);\n var distance = radiansToLength(lengthToRadians(radius, units), \"meters\");\n var buffered = BufferOp.bufferOp(geom, distance, steps);\n var writer = new GeoJSONWriter();\n buffered = writer.write(buffered);\n if (coordsIsNaN(buffered.coordinates))\n return void 0;\n var result = {\n type: buffered.type,\n coordinates: unprojectCoords(buffered.coordinates, projection)\n };\n return feature(result, properties);\n}\nfunction coordsIsNaN(coords) {\n if (Array.isArray(coords[0]))\n return coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\nfunction projectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\")\n return proj(coords);\n return coords.map(function(coord) {\n return projectCoords(coord, proj);\n });\n}\nfunction unprojectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\")\n return proj.invert(coords);\n return coords.map(function(coord) {\n return unprojectCoords(coord, proj);\n });\n}\nfunction defineProjection(geojson) {\n var coords = center(geojson).geometry.coordinates;\n var rotation = [-coords[0], -coords[1]];\n return geoAzimuthalEquidistant().rotate(rotation).scale(earthRadius);\n}\nvar turf_buffer_default = buffer;\nexport {\n buffer,\n turf_buffer_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport polygonClipping from \"polygon-clipping\";\nimport { polygon, multiPolygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction difference(features) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least two features\");\n }\n const properties = features.features[0].properties || {};\n const differenced = polygonClipping.difference(geoms[0], ...geoms.slice(1));\n if (differenced.length === 0)\n return null;\n if (differenced.length === 1)\n return polygon(differenced[0], properties);\n return multiPolygon(differenced, properties);\n}\nvar turf_difference_default = difference;\nexport {\n turf_difference_default as default,\n difference\n};\n//# sourceMappingURL=index.js.map","import buffer from \"@turf/buffer\";\nimport difference from \"@turf/difference\";\nimport { featureCollection, polygon } from \"@turf/helpers\";\nimport type {\n Feature,\n FeatureCollection,\n MultiPolygon,\n Polygon,\n Position,\n} from \"geojson\";\n\n// see https://maplibre.org/maplibre-gl-js-docs/example/line-across-180th-meridian/\nfunction fixRing(ring: Position[]) {\n let prev: Position | undefined = undefined;\n\n for (const c of ring) {\n if (prev && c[0] - prev[0] >= 180) {\n c[0] -= 360;\n } else if (prev && c[0] - prev[0] < -180) {\n c[0] += 360;\n }\n\n prev = c;\n }\n}\n\nexport function setMask(\n picked: Feature<Polygon | MultiPolygon>,\n setData: (data: FeatureCollection<Polygon | MultiPolygon>) => void,\n) {\n const diff = difference(\n featureCollection([\n polygon([\n [\n [180, 90],\n [-180, 90],\n [-180, -90],\n [180, -90],\n [180, 90],\n ],\n ]),\n picked,\n ]),\n );\n\n if (!diff) {\n return;\n }\n\n diff.properties = { isMask: \"y\" };\n\n const fixed = buffer(picked, 0);\n\n if (!fixed) {\n return;\n }\n\n if (fixed.geometry.type === \"Polygon\") {\n for (const ring of fixed.geometry.coordinates) {\n fixRing(ring);\n }\n } else {\n for (const poly of fixed.geometry.coordinates) {\n for (const ring of poly) {\n fixRing(ring);\n }\n }\n }\n\n setData(featureCollection([fixed, diff]));\n}\n","import { feature, featureCollection } from \"@turf/helpers\";\nimport union from \"@turf/union\";\nimport type {\n GeoJSON,\n LineString,\n MultiLineString,\n MultiPolygon,\n Polygon,\n} from \"geojson\";\nimport type * as maplibregl from \"maplibre-gl\";\nimport type {\n FillLayerSpecification,\n FitBoundsOptions,\n FlyToOptions,\n GeoJSONSource,\n LineLayerSpecification,\n Map,\n MapMouseEvent,\n Marker,\n} from \"maplibre-gl\";\nimport MarkerIcon from \"./MarkerIcon.svelte\";\nimport { setMask } from \"./mask\";\nimport type { BBox, Position } from \"./types\";\nimport type { Feature, MapController, MapEvent } from \"./types.js\";\n\ntype MapLibreGL = Pick<typeof maplibregl, \"Marker\" | \"Popup\">;\n\nconst emptyGeojson = featureCollection([]);\n\nexport function createMapLibreGlMapController(\n map: Map,\n maplibregl?: MapLibreGL | undefined,\n marker: boolean | maplibregl.MarkerOptions = true,\n showResultMarkers: boolean | maplibregl.MarkerOptions = true,\n flyToOptions: FlyToOptions = {},\n fitBoundsOptions: FitBoundsOptions = {},\n fullGeometryStyle:\n | undefined\n | {\n fill?: Pick<FillLayerSpecification, \"layout\" | \"paint\" | \"filter\">;\n line?: Pick<LineLayerSpecification, \"layout\" | \"paint\" | \"filter\">;\n } = {\n fill: {\n paint: {\n \"fill-color\": \"#000\",\n \"fill-opacity\": 0.1,\n },\n filter: [\"all\", [\"==\", [\"geometry-type\"], \"Polygon\"], [\"has\", \"isMask\"]],\n },\n line: {\n layout: {\n \"line-cap\": \"square\",\n },\n paint: {\n \"line-width\": [\"case\", [\"==\", [\"geometry-type\"], \"Polygon\"], 2, 3],\n \"line-dasharray\": [1, 1],\n \"line-color\": \"#3170fe\",\n },\n filter: [\"!\", [\"has\", \"isMask\"]],\n },\n },\n) {\n let eventHandler: ((e: MapEvent) => void) | undefined;\n\n const markers: Marker[] = [];\n\n let selectedMarker: maplibregl.Marker | undefined;\n\n let reverseMarker: maplibregl.Marker | undefined;\n\n let savedData: GeoJSON; // used to restore features on style switch\n\n function addFullGeometryLayer() {\n if (\n !map.getSource(\"full-geom\") &&\n (fullGeometryStyle?.fill || fullGeometryStyle?.line)\n ) {\n map.addSource(\"full-geom\", {\n type: \"geojson\",\n data: emptyGeojson,\n });\n }\n\n if (!map.getLayer(\"full-geom-fill\") && fullGeometryStyle?.fill) {\n map.addLayer({\n ...fullGeometryStyle?.fill,\n id: \"full-geom-fill\",\n type: \"fill\",\n source: \"full-geom\",\n });\n }\n\n if (!map.getLayer(\"full-geom-line\") && fullGeometryStyle?.line) {\n map.addLayer({\n ...fullGeometryStyle?.line,\n id: \"full-geom-line\",\n type: \"line\",\n source: \"full-geom\",\n });\n }\n\n if (savedData) {\n setData(savedData);\n }\n }\n\n if (map.loaded()) {\n addFullGeometryLayer();\n } else {\n map.once(\"load\", () => {\n addFullGeometryLayer();\n });\n }\n\n map.on(\"styledata\", () => {\n addFullGeometryLayer();\n });\n\n const handleMapClick = (e: MapMouseEvent) => {\n eventHandler?.({\n type: \"mapClick\",\n coordinates: [e.lngLat.lng, e.lngLat.lat],\n });\n };\n\n function createMarker(interactive = false) {\n if (!maplibregl) {\n throw new Error();\n }\n\n const element = document.createElement(\"div\");\n\n if (interactive) {\n element.classList.add(\"marker-interactive\");\n }\n\n new MarkerIcon({\n props: { displayIn: \"maplibre\" },\n target: element,\n });\n\n return new maplibregl.Marker({ element, offset: [1, -13] });\n }\n\n function setData(data: GeoJSON) {\n savedData = data;\n\n (map.getSource(\"full-geom\") as GeoJSONSource)?.setData(data);\n }\n\n return {\n setEventHandler(handler: undefined | ((e: MapEvent) => void)): void {\n if (handler) {\n eventHandler = handler;\n\n map.on(\"click\", handleMapClick);\n } else {\n eventHandler = undefined;\n\n map.off(\"click\", handleMapClick);\n }\n },\n\n flyTo(center: Position, zoom: number): void {\n map.flyTo({ center, zoom, ...flyToOptions });\n },\n\n fitBounds(bbox: BBox, padding: number, maxZoom: number): void {\n map.fitBounds(\n [\n [bbox[0], bbox[1]],\n [bbox[2], bbox[3]],\n ],\n { padding, maxZoom, ...fitBoundsOptions },\n );\n },\n\n indicateReverse(reverse: boolean): void {\n map.getCanvasContainer().style.cursor = reverse ? \"crosshair\" : \"\";\n },\n\n setReverseMarker(coordinates?: Position) {\n if (!maplibregl || !marker) {\n return;\n }\n\n if (reverseMarker) {\n if (!coordinates) {\n reverseMarker.remove();\n\n reverseMarker = undefined;\n } else {\n reverseMarker.setLngLat(coordinates);\n }\n } else if (coordinates) {\n reverseMarker = (\n typeof marker === \"object\"\n ? new maplibregl.Marker(marker)\n : createMarker()\n )\n .setLngLat(coordinates)\n .addTo(map);\n\n reverseMarker.getElement().classList.add(\"marker-reverse\");\n }\n },\n\n setMarkers(\n markedFeatures: Feature[] | undefined,\n picked: Feature | undefined,\n ): void {\n if (!marker) {\n return;\n }\n\n for (const marker of markers) {\n marker.remove();\n }\n\n markers.length = 0;\n\n setData(emptyGeojson);\n\n if (!maplibregl) {\n return;\n }\n\n if (picked) {\n let handled = false;\n\n if (picked.geometry.type === \"GeometryCollection\") {\n const geoms = picked.geometry.geometries.filter(\n (geometry): geometry is Polygon | MultiPolygon =>\n geometry.type === \"Polygon\" || geometry.type === \"MultiPolygon\",\n );\n\n ok: if (geoms.length > 0) {\n const unioned = union(\n featureCollection(geoms.map((geom) => feature(geom))),\n );\n\n if (!unioned) {\n break ok;\n }\n\n setMask(\n {\n ...picked,\n geometry: unioned.geometry,\n },\n setData,\n );\n\n handled = true;\n } else {\n const geometries = picked.geometry.geometries.filter(\n (geometry): geometry is LineString | MultiLineString =>\n geometry.type === \"LineString\" ||\n geometry.type === \"MultiLineString\",\n );\n\n if (geometries.length > 0) {\n setData({\n ...picked,\n geometry: { type: \"GeometryCollection\", geometries },\n });\n\n handled = true;\n }\n }\n }\n\n if (handled) {\n // nothing\n } else if (\n picked.geometry.type === \"Polygon\" ||\n picked.geometry.type === \"MultiPolygon\"\n ) {\n setMask(picked as Feature<Polygon | MultiPolygon>, setData);\n } else if (\n picked.geometry.type === \"LineString\" ||\n picked.geometry.type === \"MultiLineString\"\n ) {\n setData(picked);\n\n return; // no pin for (multi)linestrings\n }\n\n if (marker) {\n markers.push(\n (typeof marker === \"object\"\n ? new maplibregl.Marker(marker)\n : createMarker()\n )\n .setLngLat(picked.center)\n .addTo(map),\n );\n }\n }\n\n if (showResultMarkers) {\n for (const feature of markedFeatures ?? []) {\n if (feature === picked) {\n continue;\n }\n\n const marker = (\n typeof showResultMarkers === \"object\"\n ? new maplibregl.Marker(showResultMarkers)\n : createMarker(true)\n )\n .setLngLat(feature.center)\n .setPopup(\n new maplibregl.Popup({\n offset: [1, -27],\n closeButton: false,\n closeOnMove: true,\n className: \"maptiler-gc-popup\",\n }).setText(\n feature.place_type[0] === \"reverse\"\n ? feature.place_name\n : feature.place_name.replace(/,.*/, \"\"),\n ),\n )\n .addTo(map);\n\n const element = marker.getElement();\n\n element.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n\n eventHandler?.({ type: \"markerClick\", id: feature.id });\n });\n\n element.addEventListener(\"mouseenter\", () => {\n eventHandler?.({ type: \"markerMouseEnter\", id: feature.id });\n\n marker.togglePopup();\n });\n\n element.addEventListener(\"mouseleave\", () => {\n eventHandler?.({ type: \"markerMouseLeave\", id: feature.id });\n\n marker.togglePopup();\n });\n\n // element.classList.toggle(\"marker-fuzzy\", !!feature.matching_text);\n\n markers.push(marker);\n }\n }\n },\n\n setSelectedMarker(index: number): void {\n if (selectedMarker) {\n selectedMarker.getElement().classList.toggle(\"marker-selected\", false);\n }\n\n selectedMarker = index > -1 ? markers[index] : undefined;\n\n selectedMarker?.getElement().classList.toggle(\"marker-selected\", true);\n },\n\n getCenterAndZoom() {\n const c = map.getCenter();\n\n return [map.getZoom(), c.lng, c.lat];\n },\n } satisfies MapController;\n}\n"],"names":["earthRadius","factors","feature","geom","properties","options","feat","point","coordinates","isNumber","polygon","ring","j","featureCollection","features","fc","multiPolygon","radiansToLength","radians","units","factor","lengthToRadians","distance","num","__generator","thisArg","body","_","t","y","g","verb","n","v","step","op","e","Node","key","data","DEFAULT_COMPARE","a","b","splay","i","comparator","N","l","r","cmp","insert","node","split","left","right","merge","printRow","root","prefix","isTail","out","printNode","indent","Tree","x","current","compare","visitor","ctx","Q","done","low","high","fn","keys","_a","values","index","d","successor","predecessor","toList","presort","size","sort","loadRecursive","mergedList","mergeLists","createList","sortedListToBST","newKey","newData","start","end","middle","head","p","list","l1","l2","p1","p2","pivot","tmp","epsilon","splitter","resulterrbound","sum","elen","flen","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","B","C1","C2","D","u","orient2dadapt","ax","ay","bx","by","cx","cy","detsum","acxtail","acytail","bcxtail","bcytail","c","ahi","alo","bhi","blo","_i","_j","_0","s1","s0","t1","t0","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","isInBbox","bbox","getBboxOverlap","b1","b2","lowerX","upperX","lowerY","upperY","EPSILON_SQ","ab","PtRounder","CoordRounder","SplayTree","coord","prevNode","nextNode","rounder","crossProduct","dotProduct","compareVectorAngles","basePt","endPt1","endPt2","res","length","sineOfAngle","pShared","pBase","pAngle","vBase","vAngle","cosineOfAngle","horizontalIntersection","pt","verticalIntersection","intersection$1","pt1","v1","pt2","v2","kross","ve","d1","d2","x1","x2","y1","y2","SweepEvent","ptCmp","Segment","aPt","bPt","isLeft","other","otherEvents","iMax","evt","numEvents","evt1","evt2","events","baseEvent","cache","fillCache","linkedEvent","nextEvent","asine","acosine","bsine","bcosine","segmentId","alx","blx","arx","brx","aly","bly","ary","bry","aCmpBLeft","bCmpARight","bCmpALeft","aCmpBRight","leftSE","rightSE","rings","windings","leftPt","rightPt","winding","cmpPts","newRightSE","lPt","rPt","yDist","xFromYDist","xDist","yFromXDist","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","newEvents","alreadyLinked","newLeftSE","oldRightSE","newSeg","tmpEvt","consumer","consumee","seg","beforeState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","poly","mp","mpsBefore","operation","noBefores","noAfters","least","most","diff","isJustSubject","mps","RingIn","geomRing","isExterior","firstPoint","prevPoint","sweepEvents","segment","PolyIn","geomPoly","multiPoly","ringSweepEvents","jMax","MultiPolyIn","isSubject","polySweepEvents","RingOut","allSegments","ringsOut","prevEvent","event","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","intersectionLE","ringEvents","prevPt","points","nextPt","iStart","iEnd","orderedPoints","enclosing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","exteriorRing","ringGeom","MultiPolyOut","polyGeom","polys","enclosingRing","SweepLine","queue","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","nextMySplitter","nextInter","mySplitter","inter","POLYGON_CLIPPING_MAX_QUEUE_SIZE","POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS","Operation","type","moreGeoms","multipolys","subject","mpA","sweepLine","prevQueueSize","union","_len","_key","intersection","_len2","_key2","xor","_len3","_key3","difference","subjectGeom","_len4","clippingGeoms","_key4","coordEach","geojson","callback","excludeWrapCoord","k","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","featureEach","geomEach","featureProperties","featureBBox","featureId","geoms","unioned","polygonClipping","turf_union_default","noop","run","blank_object","run_all","fns","is_function","thing","safe_not_equal","is_empty","obj","append","target","anchor","detach","svg_element","name","attr","attribute","value","children","element","toggle_class","toggle","current_component","set_current_component","component","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","flush","add_render_callback","seen_callbacks","flushidx","saved_component","update","$$","dirty","flush_render_callbacks","filtered","targets","outroing","transition_in","block","local","mount_component","fragment","after_update","new_on_destroy","destroy_component","detaching","make_dirty","init","instance","create_fragment","not_equal","props","append_styles","parent_component","ready","ret","rest","nodes","SvelteComponent","__publicField","callbacks","PUBLIC_VERSION","svg","svg_width_value","path","displayIn","$$props","result","center","ext","module","this","s","o","h","f","m","I","E","T","S","L","C","R","w","O","M","A","P","F","G","q","Y","z","X","U","V","H","Z","W","K","J","$","tt","et","nt","it","rt","st","at","ot","ut","lt","ht","ct","ft","vt","gt","yt","dt","_t","mt","kt","xt","It","Et","Nt","Tt","St","Lt","Ct","Rt","wt","Ot","bt","Mt","At","Pt","Dt","Ft","Gt","qt","Yt","zt","Xt","Bt","Ut","Vt","Ht","Zt","jt","Wt","Kt","Jt","Qt","$t","te","ee","ne","ie","re","se","ae","oe","ue","le","he","ce","fe","ge","ye","de","_e","pe","ke","xe","Ie","Ee","Ne","Te","Se","Le","Ce","Re","we","Oe","be","Me","Ae","Pe","De","Fe","Ge","qe","Ye","ze","Xe","Be","Ue","Ve","He","je","We","Ke","Je","Qe","$e","tn","en","nn","rn","sn","an","on","un","ln","hn","cn","vn","gn","yn","dn","_n","pn","In","mn","kn","xn","En","Nn","Tn","Sn","Ln","Cn","Rn","wn","On","bn","Mn","An","Pn","Dn","Fn","Gn","qn","Yn","zn","Xn","Bn","Un","Vn","Hn","Zn","jn","Wn","Kn","Jn","Qn","$n","si","ti","ei","ni","ii","ri","ai","oi","ui","li","hi","ci","fi","vi","gi","yi","di","pi","mi","adder","Adder","add","temp","bv","av","halfPi","quarterPi","tau","degrees","abs","atan","atan2","cos","sin","sqrt","acos","asin","streamGeometry","stream","streamGeometryType","streamObjectType","object","streamLine","streamPolygon","geometries","closed","coordinate","geoStream","spherical","cartesian","lambda","phi","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","circleStream","radius","delta","direction","cosRadius","sinRadius","circleRadius","clipBuffer","lines","line","clipLine","x0","y0","dx","dy","pointEqual","Intersection","entry","clipPolygon","segments","compareIntersection","startInside","interpolate","clip","p0","link","array","ascending","bisector","ascendingComparator","lo","mid","arrays","merged","clipMax","clipMin","clipExtent","visible","from","to","a1","corner","comparePoint","ca","cb","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","first","clean","clipStream","lineStart","lineEnd","polygonStart","polygonEnd","polygonInside","a0","b0","cleanInside","linePoint","polygonContains","normal","angle","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","sign","absDelta","antimeridian","arc","phiArc","identity","boundsStream","boundsPoint","bounds","pointVisible","rotate","sink","rotatedStart","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","pointLine","ringSegments","validSegment","clipAntimeridian","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","clipCircle","cr","smallRadius","notHemisphere","c0","v0","v00","point2","code","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","t2","polar","meridian","q1","transformer","methods","TransformStream","fitExtent","projection","extent","fitSize","maxDepth","cosMinDistance","resample","project","delta2","resampleNone","resampleLineTo","depth","phi2","lambda2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","transformRadians","projectionMutator","projectAt","projectRotate","theta","preclip","postclip","projectResample","projectTransform","cacheStream","invert","reset","recenter","azimuthalRaw","scale","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","geoAzimuthalEquidistant","equirectangularRaw","BufferOp","GeoJSONReader","GeoJSONWriter","jsts","buffer","steps","results","buffered","bufferFeature","feature2","multiBuffered","geometry2","buffered2","defineProjection","projected","projectCoords","reader","writer","coordsIsNaN","unprojectCoords","proj","turf_buffer_default","differenced","turf_difference_default","fixRing","prev","setMask","picked","setData","fixed","emptyGeojson","createMapLibreGlMapController","map","maplibregl","marker","showResultMarkers","flyToOptions","fitBoundsOptions","fullGeometryStyle","eventHandler","markers","selectedMarker","reverseMarker","savedData","addFullGeometryLayer","handleMapClick","createMarker","interactive","MarkerIcon","handler","zoom","padding","maxZoom","reverse","markedFeatures","handled","ok"],"mappings":";;;AACA,IAAIA,KAAc,aACdC,KAAU;AAAA,EACZ,aAAaD,KAAc;AAAA,EAC3B,aAAaA,KAAc;AAAA,EAC3B,SAAS,OAAO,IAAI,KAAK;AAAA,EACzB,MAAMA,KAAc;AAAA,EACpB,QAAQA,KAAc;AAAA,EACtB,YAAYA,KAAc;AAAA,EAC1B,YAAYA,KAAc;AAAA,EAC1B,QAAQA;AAAA,EACR,QAAQA;AAAA,EACR,OAAOA,KAAc;AAAA,EACrB,aAAaA,KAAc;AAAA,EAC3B,aAAaA,KAAc;AAAA,EAC3B,eAAeA,KAAc;AAAA,EAC7B,SAAS;AAAA,EACT,OAAOA,KAAc;AACvB;AAkBA,SAASE,GAAQC,GAAMC,GAAYC,IAAU,CAAA,GAAI;AAC/C,QAAMC,IAAO,EAAE,MAAM;AACrB,UAAID,EAAQ,OAAO,KAAKA,EAAQ,QAC9BC,EAAK,KAAKD,EAAQ,KAEhBA,EAAQ,SACVC,EAAK,OAAOD,EAAQ,OAEtBC,EAAK,aAAaF,KAAc,IAChCE,EAAK,WAAWH,GACTG;AACT;AAmBA,SAASC,GAAMC,GAAaJ,GAAYC,IAAU,CAAA,GAAI;AACpD,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,yBAAyB;AAE3C,MAAI,CAAC,MAAM,QAAQA,CAAW;AAC5B,UAAM,IAAI,MAAM,8BAA8B;AAEhD,MAAIA,EAAY,SAAS;AACvB,UAAM,IAAI,MAAM,6CAA6C;AAE/D,MAAI,CAACC,GAASD,EAAY,CAAC,CAAC,KAAK,CAACC,GAASD,EAAY,CAAC,CAAC;AACvD,UAAM,IAAI,MAAM,kCAAkC;AAMpD,SAAON,GAJM;AAAA,IACX,MAAM;AAAA,IACN,aAAAM;AAAA,EACJ,GACuBJ,GAAYC,CAAO;AAC1C;AASA,SAASK,GAAQF,GAAaJ,GAAYC,IAAU,CAAA,GAAI;AACtD,aAAWM,KAAQH,GAAa;AAC9B,QAAIG,EAAK,SAAS;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACR;AAEI,QAAIA,EAAKA,EAAK,SAAS,CAAC,EAAE,WAAWA,EAAK,CAAC,EAAE;AAC3C,YAAM,IAAI,MAAM,6CAA6C;AAE/D,aAASC,IAAI,GAAGA,IAAID,EAAKA,EAAK,SAAS,CAAC,EAAE,QAAQC;AAChD,UAAID,EAAKA,EAAK,SAAS,CAAC,EAAEC,CAAC,MAAMD,EAAK,CAAC,EAAEC,CAAC;AACxC,cAAM,IAAI,MAAM,6CAA6C;AAAA,EAGlE;AAKD,SAAOV,GAJM;AAAA,IACX,MAAM;AAAA,IACN,aAAAM;AAAA,EACJ,GACuBJ,GAAYC,CAAO;AAC1C;AA2BA,SAASQ,GAAkBC,GAAUT,IAAU,IAAI;AACjD,QAAMU,IAAK,EAAE,MAAM;AACnB,SAAIV,EAAQ,OACVU,EAAG,KAAKV,EAAQ,KAEdA,EAAQ,SACVU,EAAG,OAAOV,EAAQ,OAEpBU,EAAG,WAAWD,GACPC;AACT;AAeA,SAASC,GAAaR,GAAaJ,GAAYC,IAAU,CAAA,GAAI;AAK3D,SAAOH,GAJM;AAAA,IACX,MAAM;AAAA,IACN,aAAAM;AAAA,EACJ,GACuBJ,GAAYC,CAAO;AAC1C;AAeA,SAASY,GAAgBC,GAASC,IAAQ,cAAc;AACtD,QAAMC,IAASnB,GAAQkB,CAAK;AAC5B,MAAI,CAACC;AACH,UAAM,IAAI,MAAMD,IAAQ,mBAAmB;AAE7C,SAAOD,IAAUE;AACnB;AACA,SAASC,GAAgBC,GAAUH,IAAQ,cAAc;AACvD,QAAMC,IAASnB,GAAQkB,CAAK;AAC5B,MAAI,CAACC;AACH,UAAM,IAAI,MAAMD,IAAQ,mBAAmB;AAE7C,SAAOG,IAAWF;AACpB;AA6CA,SAASX,GAASc,GAAK;AACrB,SAAO,CAAC,MAAMA,CAAG,KAAKA,MAAQ,QAAQ,CAAC,MAAM,QAAQA,CAAG;AAC1D;ACvPA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,SAASC,GAAYC,GAASC,GAAM;AAChC,MAAIC,IAAI,EAAE,OAAO,GAAG,MAAM,WAAW;AAAE,QAAIC,EAAE,CAAC,IAAI,EAAG,OAAMA,EAAE,CAAC;AAAG,WAAOA,EAAE,CAAC;AAAA,EAAI,GAAE,MAAM,CAAE,GAAE,KAAK,CAAA,EAAI,GAAE,GAAGC,GAAGD,GAAGE;AAC/G,SAAOA,IAAI,EAAE,MAAMC,EAAK,CAAC,GAAG,OAASA,EAAK,CAAC,GAAG,QAAUA,EAAK,CAAC,EAAG,GAAE,OAAO,UAAW,eAAeD,EAAE,OAAO,QAAQ,IAAI,WAAW;AAAE,WAAO;AAAA,EAAO,IAAGA;AACvJ,WAASC,EAAKC,GAAG;AAAE,WAAO,SAAUC,GAAG;AAAE,aAAOC,EAAK,CAACF,GAAGC,CAAC,CAAC;AAAA,IAAI;AAAA,EAAG;AAClE,WAASC,EAAKC,GAAI;AACd,QAAI,EAAG,OAAM,IAAI,UAAU,iCAAiC;AAC5D,WAAOR,IAAG,KAAI;AACV,UAAI,IAAI,GAAGE,MAAMD,IAAIO,EAAG,CAAC,IAAI,IAAIN,EAAE,SAAYM,EAAG,CAAC,IAAIN,EAAE,WAAcD,IAAIC,EAAE,WAAcD,EAAE,KAAKC,CAAC,GAAG,KAAKA,EAAE,SAAS,EAAED,IAAIA,EAAE,KAAKC,GAAGM,EAAG,CAAC,CAAC,GAAG,KAAM,QAAOP;AAE3J,cADIC,IAAI,GAAGD,MAAGO,IAAK,CAACA,EAAG,CAAC,IAAI,GAAGP,EAAE,KAAK,IAC9BO,EAAG,CAAC,GAAC;AAAA,QACT,KAAK;AAAA,QAAG,KAAK;AAAG,UAAAP,IAAIO;AAAI;AAAA,QACxB,KAAK;AAAG,iBAAAR,EAAE,SAAgB,EAAE,OAAOQ,EAAG,CAAC,GAAG,MAAM,GAAK;AAAA,QACrD,KAAK;AAAG,UAAAR,EAAE,SAASE,IAAIM,EAAG,CAAC,GAAGA,IAAK,CAAC,CAAC;AAAG;AAAA,QACxC,KAAK;AAAG,UAAAA,IAAKR,EAAE,IAAI,OAAOA,EAAE,KAAK,IAAG;AAAI;AAAA,QACxC;AACI,cAAMC,IAAID,EAAE,MAAM,EAAAC,IAAIA,EAAE,SAAS,KAAKA,EAAEA,EAAE,SAAS,CAAC,OAAOO,EAAG,CAAC,MAAM,KAAKA,EAAG,CAAC,MAAM,IAAI;AAAE,YAAAR,IAAI;AAAG;AAAA,UAAW;AAC5G,cAAIQ,EAAG,CAAC,MAAM,MAAM,CAACP,KAAMO,EAAG,CAAC,IAAIP,EAAE,CAAC,KAAKO,EAAG,CAAC,IAAIP,EAAE,CAAC,IAAK;AAAE,YAAAD,EAAE,QAAQQ,EAAG,CAAC;AAAG;AAAA,UAAQ;AACtF,cAAIA,EAAG,CAAC,MAAM,KAAKR,EAAE,QAAQC,EAAE,CAAC,GAAG;AAAE,YAAAD,EAAE,QAAQC,EAAE,CAAC,GAAGA,IAAIO;AAAI;AAAA,UAAQ;AACrE,cAAIP,KAAKD,EAAE,QAAQC,EAAE,CAAC,GAAG;AAAE,YAAAD,EAAE,QAAQC,EAAE,CAAC,GAAGD,EAAE,IAAI,KAAKQ,CAAE;AAAG;AAAA,UAAQ;AACnE,UAAIP,EAAE,CAAC,KAAGD,EAAE,IAAI,IAAG,GACnBA,EAAE,KAAK,IAAK;AAAE;AAAA,MACrB;AACD,MAAAQ,IAAKT,EAAK,KAAKD,GAASE,CAAC;AAAA,IAC5B,SAAQS,GAAG;AAAE,MAAAD,IAAK,CAAC,GAAGC,CAAC,GAAGP,IAAI;AAAA,IAAE,UAAW;AAAE,UAAID,IAAI;AAAA,IAAI;AAC1D,QAAIO,EAAG,CAAC,IAAI,EAAG,OAAMA,EAAG,CAAC;AAAG,WAAO,EAAE,OAAOA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAAI,QAAQ,MAAM;EAC7E;AACL;AAEA,IAAIE;AAAA;AAAA,EAAsB,2BAAY;AAClC,aAASA,EAAKC,GAAKC,GAAM;AACrB,WAAK,OAAO,MACZ,KAAK,MAAMD,GACX,KAAK,OAAOC,GACZ,KAAK,OAAO,MACZ,KAAK,QAAQ;AAAA,IAChB;AACD,WAAOF;AAAA,EACX,EAAC;AAAA;AAKD,SAASG,GAAgBC,GAAGC,GAAG;AAC3B,SAAOD,IAAIC,IAAI,IAAID,IAAIC,IAAI,KAAK;AACpC;AAIA,SAASC,GAAMC,GAAGhB,GAAGiB,GAAY;AAI7B,WAHIC,IAAI,IAAIT,GAAK,MAAM,IAAI,GACvBU,IAAID,GACJE,IAAIF,OACK;AACT,QAAIG,IAAMJ,EAAWD,GAAGhB,EAAE,GAAG;AAE7B,QAAIqB,IAAM,GAAG;AACT,UAAIrB,EAAE,SAAS;AACX;AAEJ,UAAIiB,EAAWD,GAAGhB,EAAE,KAAK,GAAG,IAAI,GAAG;AAC/B,YAAIC,IAAID,EAAE;AAIV,YAHAA,EAAE,OAAOC,EAAE,OACXA,EAAE,QAAQD,GACVA,IAAIC,GACAD,EAAE,SAAS;AACX;AAAA,MACP;AACD,MAAAoB,EAAE,OAAOpB,GACToB,IAAIpB,GACJA,IAAIA,EAAE;AAAA,IAET,WACQqB,IAAM,GAAG;AACd,UAAIrB,EAAE,UAAU;AACZ;AAEJ,UAAIiB,EAAWD,GAAGhB,EAAE,MAAM,GAAG,IAAI,GAAG;AAChC,YAAIC,IAAID,EAAE;AAIV,YAHAA,EAAE,QAAQC,EAAE,MACZA,EAAE,OAAOD,GACTA,IAAIC,GACAD,EAAE,UAAU;AACZ;AAAA,MACP;AACD,MAAAmB,EAAE,QAAQnB,GACVmB,IAAInB,GACJA,IAAIA,EAAE;AAAA,IACT;AAEG;AAAA,EACP;AAED,SAAAmB,EAAE,QAAQnB,EAAE,MACZoB,EAAE,OAAOpB,EAAE,OACXA,EAAE,OAAOkB,EAAE,OACXlB,EAAE,QAAQkB,EAAE,MACLlB;AACX;AACA,SAASsB,GAAON,GAAGL,GAAMX,GAAGiB,GAAY;AACpC,MAAIM,IAAO,IAAId,GAAKO,GAAGL,CAAI;AAC3B,MAAIX,MAAM;AACN,WAAAuB,EAAK,OAAOA,EAAK,QAAQ,MAClBA;AAEX,EAAAvB,IAAIe,GAAMC,GAAGhB,GAAGiB,CAAU;AAC1B,MAAII,IAAMJ,EAAWD,GAAGhB,EAAE,GAAG;AAC7B,SAAIqB,IAAM,KACNE,EAAK,OAAOvB,EAAE,MACduB,EAAK,QAAQvB,GACbA,EAAE,OAAO,QAEJqB,KAAO,MACZE,EAAK,QAAQvB,EAAE,OACfuB,EAAK,OAAOvB,GACZA,EAAE,QAAQ,OAEPuB;AACX;AACA,SAASC,GAAMd,GAAKL,GAAGY,GAAY;AAC/B,MAAIQ,IAAO,MACPC,IAAQ;AACZ,MAAIrB,GAAG;AACH,IAAAA,IAAIU,GAAML,GAAKL,GAAGY,CAAU;AAC5B,QAAII,IAAMJ,EAAWZ,EAAE,KAAKK,CAAG;AAC/B,IAAIW,MAAQ,KACRI,IAAOpB,EAAE,MACTqB,IAAQrB,EAAE,SAELgB,IAAM,KACXK,IAAQrB,EAAE,OACVA,EAAE,QAAQ,MACVoB,IAAOpB,MAGPoB,IAAOpB,EAAE,MACTA,EAAE,OAAO,MACTqB,IAAQrB;AAAA,EAEf;AACD,SAAO,EAAE,MAAMoB,GAAM,OAAOC,EAAK;AACrC;AACA,SAASC,GAAMF,GAAMC,GAAOT,GAAY;AACpC,SAAIS,MAAU,OACHD,KACPA,MAAS,SAEbC,IAAQX,GAAMU,EAAK,KAAKC,GAAOT,CAAU,GACzCS,EAAM,OAAOD,IACNC;AACX;AAIA,SAASE,GAASC,GAAMC,GAAQC,GAAQC,GAAKC,GAAW;AACpD,MAAIJ,GAAM;AACN,IAAAG,EAAI,KAAKF,KAAUC,IAAS,SAAS,UAAUE,EAAUJ,CAAI,IAAI;AAAA,CAAI;AACrE,QAAIK,IAASJ,KAAUC,IAAS,SAAS;AACzC,IAAIF,EAAK,QACLD,GAASC,EAAK,MAAMK,GAAQ,IAAOF,GAAKC,CAAS,GACjDJ,EAAK,SACLD,GAASC,EAAK,OAAOK,GAAQ,IAAMF,GAAKC,CAAS;AAAA,EACxD;AACL;AACA,IAAIE;AAAA;AAAA,EAAsB,WAAY;AAClC,aAASA,EAAKlB,GAAY;AACtB,MAAIA,MAAe,WAAUA,IAAaL,KAC1C,KAAK,QAAQ,MACb,KAAK,QAAQ,GACb,KAAK,cAAcK;AAAA,IACtB;AAID,WAAAkB,EAAK,UAAU,SAAS,SAAUzB,GAAKC,GAAM;AACzC,kBAAK,SACE,KAAK,QAAQW,GAAOZ,GAAKC,GAAM,KAAK,OAAO,KAAK,WAAW;AAAA,IAC1E,GAIIwB,EAAK,UAAU,MAAM,SAAUzB,GAAKC,GAAM;AACtC,UAAIY,IAAO,IAAId,GAAKC,GAAKC,CAAI;AAC7B,MAAI,KAAK,UAAU,SACfY,EAAK,OAAOA,EAAK,QAAQ,MACzB,KAAK,SACL,KAAK,QAAQA;AAEjB,UAAIN,IAAa,KAAK,aAClBjB,IAAIe,GAAML,GAAK,KAAK,OAAOO,CAAU,GACrCI,IAAMJ,EAAWP,GAAKV,EAAE,GAAG;AAC/B,aAAIqB,MAAQ,IACR,KAAK,QAAQrB,KAETqB,IAAM,KACNE,EAAK,OAAOvB,EAAE,MACduB,EAAK,QAAQvB,GACbA,EAAE,OAAO,QAEJqB,IAAM,MACXE,EAAK,QAAQvB,EAAE,OACfuB,EAAK,OAAOvB,GACZA,EAAE,QAAQ,OAEd,KAAK,SACL,KAAK,QAAQuB,IAEV,KAAK;AAAA,IACpB,GAKIY,EAAK,UAAU,SAAS,SAAUzB,GAAK;AACnC,WAAK,QAAQ,KAAK,QAAQA,GAAK,KAAK,OAAO,KAAK,WAAW;AAAA,IACnE,GAIIyB,EAAK,UAAU,UAAU,SAAUnB,GAAGhB,GAAGiB,GAAY;AACjD,UAAImB;AACJ,UAAIpC,MAAM;AACN,eAAO;AACX,MAAAA,IAAIe,GAAMC,GAAGhB,GAAGiB,CAAU;AAC1B,UAAII,IAAMJ,EAAWD,GAAGhB,EAAE,GAAG;AAC7B,aAAIqB,MAAQ,KACJrB,EAAE,SAAS,OACXoC,IAAIpC,EAAE,SAGNoC,IAAIrB,GAAMC,GAAGhB,EAAE,MAAMiB,CAAU,GAC/BmB,EAAE,QAAQpC,EAAE,QAEhB,KAAK,SACEoC,KAEJpC;AAAA,IACf,GAIImC,EAAK,UAAU,MAAM,WAAY;AAC7B,UAAIZ,IAAO,KAAK;AAChB,UAAIA,GAAM;AACN,eAAOA,EAAK;AACR,UAAAA,IAAOA,EAAK;AAChB,oBAAK,QAAQR,GAAMQ,EAAK,KAAK,KAAK,OAAO,KAAK,WAAW,GACzD,KAAK,QAAQ,KAAK,QAAQA,EAAK,KAAK,KAAK,OAAO,KAAK,WAAW,GACzD,EAAE,KAAKA,EAAK,KAAK,MAAMA,EAAK;MACtC;AACD,aAAO;AAAA,IACf,GAIIY,EAAK,UAAU,aAAa,SAAUzB,GAAK;AAGvC,eAFI2B,IAAU,KAAK,OACfC,IAAU,KAAK,aACZD,KAAS;AACZ,YAAIhB,IAAMiB,EAAQ5B,GAAK2B,EAAQ,GAAG;AAClC,YAAIhB,MAAQ;AACR,iBAAOgB;AACN,QAAIhB,IAAM,IACXgB,IAAUA,EAAQ,OAElBA,IAAUA,EAAQ;AAAA,MACzB;AACD,aAAO;AAAA,IACf,GACIF,EAAK,UAAU,OAAO,SAAUzB,GAAK;AACjC,aAAI,KAAK,UACL,KAAK,QAAQK,GAAML,GAAK,KAAK,OAAO,KAAK,WAAW,GAChD,KAAK,YAAYA,GAAK,KAAK,MAAM,GAAG,MAAM,KACnC,OAER,KAAK;AAAA,IACpB,GACIyB,EAAK,UAAU,WAAW,SAAUzB,GAAK;AAGrC,eAFI2B,IAAU,KAAK,OACfC,IAAU,KAAK,aACZD,KAAS;AACZ,YAAIhB,IAAMiB,EAAQ5B,GAAK2B,EAAQ,GAAG;AAClC,YAAIhB,MAAQ;AACR,iBAAO;AACN,QAAIA,IAAM,IACXgB,IAAUA,EAAQ,OAElBA,IAAUA,EAAQ;AAAA,MACzB;AACD,aAAO;AAAA,IACf,GACIF,EAAK,UAAU,UAAU,SAAUI,GAASC,GAAK;AAI7C,eAHIH,IAAU,KAAK,OACfI,IAAI,CAAA,GACJC,IAAO,IACJ,CAACA;AACJ,QAAIL,MAAY,QACZI,EAAE,KAAKJ,CAAO,GACdA,IAAUA,EAAQ,QAGdI,EAAE,WAAW,KACbJ,IAAUI,EAAE,OACZF,EAAQ,KAAKC,GAAKH,CAAO,GACzBA,IAAUA,EAAQ,SAGlBK,IAAO;AAGnB,aAAO;AAAA,IACf,GAIIP,EAAK,UAAU,QAAQ,SAAUQ,GAAKC,GAAMC,GAAIL,GAAK;AAKjD,eAJIC,IAAI,CAAA,GACJH,IAAU,KAAK,aACff,IAAO,KAAK,OACZF,GACGoB,EAAE,WAAW,KAAKlB;AACrB,YAAIA;AACA,UAAAkB,EAAE,KAAKlB,CAAI,GACXA,IAAOA,EAAK;AAAA,aAEX;AAGD,cAFAA,IAAOkB,EAAE,OACTpB,IAAMiB,EAAQf,EAAK,KAAKqB,CAAI,GACxBvB,IAAM;AACN;AAEC,cAAIiB,EAAQf,EAAK,KAAKoB,CAAG,KAAK,KAC3BE,EAAG,KAAKL,GAAKjB,CAAI;AACjB,mBAAO;AAEf,UAAAA,IAAOA,EAAK;AAAA,QACf;AAEL,aAAO;AAAA,IACf,GAIIY,EAAK,UAAU,OAAO,WAAY;AAC9B,UAAIW,IAAO,CAAA;AACX,kBAAK,QAAQ,SAAUC,GAAI;AACvB,YAAIrC,IAAMqC,EAAG;AACb,eAAOD,EAAK,KAAKpC,CAAG;AAAA,MAChC,CAAS,GACMoC;AAAA,IACf,GAIIX,EAAK,UAAU,SAAS,WAAY;AAChC,UAAIa,IAAS,CAAA;AACb,kBAAK,QAAQ,SAAUD,GAAI;AACvB,YAAIpC,IAAOoC,EAAG;AACd,eAAOC,EAAO,KAAKrC,CAAI;AAAA,MACnC,CAAS,GACMqC;AAAA,IACf,GACIb,EAAK,UAAU,MAAM,WAAY;AAC7B,aAAI,KAAK,QACE,KAAK,QAAQ,KAAK,KAAK,EAAE,MAC7B;AAAA,IACf,GACIA,EAAK,UAAU,MAAM,WAAY;AAC7B,aAAI,KAAK,QACE,KAAK,QAAQ,KAAK,KAAK,EAAE,MAC7B;AAAA,IACf,GACIA,EAAK,UAAU,UAAU,SAAUnC,GAAG;AAElC,UADIA,MAAM,WAAUA,IAAI,KAAK,QACzBA;AACA,eAAOA,EAAE;AACL,UAAAA,IAAIA,EAAE;AACd,aAAOA;AAAA,IACf,GACImC,EAAK,UAAU,UAAU,SAAUnC,GAAG;AAElC,UADIA,MAAM,WAAUA,IAAI,KAAK,QACzBA;AACA,eAAOA,EAAE;AACL,UAAAA,IAAIA,EAAE;AACd,aAAOA;AAAA,IACf,GAIImC,EAAK,UAAU,KAAK,SAAUc,GAAO;AAKjC,eAJIZ,IAAU,KAAK,OACfK,IAAO,IACP1B,IAAI,GACJyB,IAAI,CAAA,GACD,CAACC;AACJ,YAAIL;AACA,UAAAI,EAAE,KAAKJ,CAAO,GACdA,IAAUA,EAAQ;AAAA,iBAGdI,EAAE,SAAS,GAAG;AAEd,cADAJ,IAAUI,EAAE,OACRzB,MAAMiC;AACN,mBAAOZ;AACX,UAAArB,KACAqB,IAAUA,EAAQ;AAAA,QACrB;AAEG,UAAAK,IAAO;AAGnB,aAAO;AAAA,IACf,GACIP,EAAK,UAAU,OAAO,SAAUe,GAAG;AAC/B,UAAIrB,IAAO,KAAK,OACZsB,IAAY;AAChB,UAAID,EAAE,OAAO;AAET,aADAC,IAAYD,EAAE,OACPC,EAAU;AACb,UAAAA,IAAYA,EAAU;AAC1B,eAAOA;AAAA,MACV;AAED,eADIlC,IAAa,KAAK,aACfY,KAAM;AACT,YAAIR,IAAMJ,EAAWiC,EAAE,KAAKrB,EAAK,GAAG;AACpC,YAAIR,MAAQ;AACR;AACC,QAAIA,IAAM,KACX8B,IAAYtB,GACZA,IAAOA,EAAK,QAGZA,IAAOA,EAAK;AAAA,MACnB;AACD,aAAOsB;AAAA,IACf,GACIhB,EAAK,UAAU,OAAO,SAAUe,GAAG;AAC/B,UAAIrB,IAAO,KAAK,OACZuB,IAAc;AAClB,UAAIF,EAAE,SAAS,MAAM;AAEjB,aADAE,IAAcF,EAAE,MACTE,EAAY;AACf,UAAAA,IAAcA,EAAY;AAC9B,eAAOA;AAAA,MACV;AAED,eADInC,IAAa,KAAK,aACfY,KAAM;AACT,YAAIR,IAAMJ,EAAWiC,EAAE,KAAKrB,EAAK,GAAG;AACpC,YAAIR,MAAQ;AACR;AACC,QAAIA,IAAM,IACXQ,IAAOA,EAAK,QAEZuB,IAAcvB,GACdA,IAAOA,EAAK;AAAA,MAEnB;AACD,aAAOuB;AAAA,IACf,GACIjB,EAAK,UAAU,QAAQ,WAAY;AAC/B,kBAAK,QAAQ,MACb,KAAK,QAAQ,GACN;AAAA,IACf,GACIA,EAAK,UAAU,SAAS,WAAY;AAChC,aAAOkB,GAAO,KAAK,KAAK;AAAA,IAChC,GAIIlB,EAAK,UAAU,OAAO,SAAUW,GAAME,GAAQM,GAAS;AACnD,MAAIN,MAAW,WAAUA,IAAS,CAAE,IAChCM,MAAY,WAAUA,IAAU;AACpC,UAAIC,IAAOT,EAAK,QACZ7B,IAAa,KAAK;AAItB,UAFIqC,KACAE,GAAKV,GAAME,GAAQ,GAAGO,IAAO,GAAGtC,CAAU,GAC1C,KAAK,UAAU;AACf,aAAK,QAAQwC,GAAcX,GAAME,GAAQ,GAAGO,CAAI,GAChD,KAAK,QAAQA;AAAA,WAEZ;AACD,YAAIG,IAAaC,GAAW,KAAK,OAAM,GAAIC,GAAWd,GAAME,CAAM,GAAG/B,CAAU;AAC/E,QAAAsC,IAAO,KAAK,QAAQA,GACpB,KAAK,QAAQM,GAAgB,EAAE,MAAMH,KAAc,GAAGH,CAAI;AAAA,MAC7D;AACD,aAAO;AAAA,IACf,GACIpB,EAAK,UAAU,UAAU,WAAY;AAAE,aAAO,KAAK,UAAU;AAAA,OAC7D,OAAO,eAAeA,EAAK,WAAW,QAAQ;AAAA,MAC1C,KAAK,WAAY;AAAE,eAAO,KAAK;AAAA,MAAQ;AAAA,MACvC,YAAY;AAAA,MACZ,cAAc;AAAA,IACtB,CAAK,GACD,OAAO,eAAeA,EAAK,WAAW,QAAQ;AAAA,MAC1C,KAAK,WAAY;AAAE,eAAO,KAAK;AAAA,MAAQ;AAAA,MACvC,YAAY;AAAA,MACZ,cAAc;AAAA,IACtB,CAAK,GACDA,EAAK,UAAU,WAAW,SAAUF,GAAW;AAC3C,MAAIA,MAAc,WAAUA,IAAY,SAAU7B,GAAG;AAAE,eAAO,OAAOA,EAAE,GAAG;AAAA,MAAI;AAC9E,UAAI4B,IAAM,CAAA;AACV,aAAAJ,GAAS,KAAK,OAAO,IAAI,IAAM,SAAUvB,GAAG;AAAE,eAAO2B,EAAI,KAAK3B,CAAC;AAAA,MAAI,GAAE4B,CAAS,GACvED,EAAI,KAAK,EAAE;AAAA,IAC1B,GACIG,EAAK,UAAU,SAAS,SAAUzB,GAAKoD,GAAQC,GAAS;AACpD,UAAI9C,IAAa,KAAK,aAClB8B,IAAKvB,GAAMd,GAAK,KAAK,OAAOO,CAAU,GAAGQ,IAAOsB,EAAG,MAAMrB,IAAQqB,EAAG;AACxE,MAAI9B,EAAWP,GAAKoD,CAAM,IAAI,IAC1BpC,IAAQJ,GAAOwC,GAAQC,GAASrC,GAAOT,CAAU,IAGjDQ,IAAOH,GAAOwC,GAAQC,GAAStC,GAAMR,CAAU,GAEnD,KAAK,QAAQU,GAAMF,GAAMC,GAAOT,CAAU;AAAA,IAClD,GACIkB,EAAK,UAAU,QAAQ,SAAUzB,GAAK;AAClC,aAAOc,GAAMd,GAAK,KAAK,OAAO,KAAK,WAAW;AAAA,IACtD,GACIyB,EAAK,UAAU,OAAO,QAAQ,IAAI,WAAY;AAC1C,UAAIE,GAASI,GAAGC;AAChB,aAAO9C,GAAY,MAAM,SAAUmD,GAAI;AACnC,gBAAQA,EAAG,OAAK;AAAA,UACZ,KAAK;AACD,YAAAV,IAAU,KAAK,OACfI,IAAI,CAAA,GACJC,IAAO,IACPK,EAAG,QAAQ;AAAA,UACf,KAAK;AACD,mBAAML,IAAa,CAAC,GAAa,CAAC,IAC5BL,MAAY,OAAc,CAAC,GAAa,CAAC,KAC/CI,EAAE,KAAKJ,CAAO,GACdA,IAAUA,EAAQ,MACX,CAAC,GAAa,CAAC;AAAA,UAC1B,KAAK;AACD,mBAAMI,EAAE,WAAW,IAAW,CAAC,GAAa,CAAC,KAC7CJ,IAAUI,EAAE,OACL,CAAC,GAAaJ,CAAO;AAAA,UAChC,KAAK;AACD,mBAAAU,EAAG,KAAI,GACPV,IAAUA,EAAQ,OACX,CAAC,GAAa,CAAC;AAAA,UAC1B,KAAK;AACD,YAAAK,IAAO,IACPK,EAAG,QAAQ;AAAA,UACf,KAAK;AAAG,mBAAO,CAAC,GAAa,CAAC;AAAA,UAC9B,KAAK;AAAG,mBAAO;AAAA,cAAC;AAAA;AAAA;QACnB;AAAA,MACb,CAAS;AAAA,IACT,GACWZ;AAAA,EACX,EAAC;AAAA;AACD,SAASsB,GAAcX,GAAME,GAAQgB,GAAOC,GAAK;AAC7C,MAAIV,IAAOU,IAAMD;AACjB,MAAIT,IAAO,GAAG;AACV,QAAIW,IAASF,IAAQ,KAAK,MAAMT,IAAO,CAAC,GACpC7C,IAAMoC,EAAKoB,CAAM,GACjBvD,IAAOqC,EAAOkB,CAAM,GACpB3C,IAAO,IAAId,GAAKC,GAAKC,CAAI;AAC7B,WAAAY,EAAK,OAAOkC,GAAcX,GAAME,GAAQgB,GAAOE,CAAM,GACrD3C,EAAK,QAAQkC,GAAcX,GAAME,GAAQkB,IAAS,GAAGD,CAAG,GACjD1C;AAAA,EACV;AACD,SAAO;AACX;AACA,SAASqC,GAAWd,GAAME,GAAQ;AAG9B,WAFImB,IAAO,IAAI1D,GAAK,MAAM,IAAI,GAC1B2D,IAAID,GACCnD,IAAI,GAAGA,IAAI8B,EAAK,QAAQ9B;AAC7B,IAAAoD,IAAIA,EAAE,OAAO,IAAI3D,GAAKqC,EAAK9B,CAAC,GAAGgC,EAAOhC,CAAC,CAAC;AAE5C,SAAAoD,EAAE,OAAO,MACFD,EAAK;AAChB;AACA,SAASd,GAAOxB,GAAM;AAMlB,WALIQ,IAAUR,GACVY,IAAI,CAAA,GACJC,IAAO,IACPyB,IAAO,IAAI1D,GAAK,MAAM,IAAI,GAC1B2D,IAAID,GACD,CAACzB;AACJ,IAAIL,KACAI,EAAE,KAAKJ,CAAO,GACdA,IAAUA,EAAQ,QAGdI,EAAE,SAAS,KACXJ,IAAU+B,IAAIA,EAAE,OAAO3B,EAAE,IAAG,GAC5BJ,IAAUA,EAAQ,SAGlBK,IAAO;AAGnB,SAAA0B,EAAE,OAAO,MACFD,EAAK;AAChB;AACA,SAASN,GAAgBQ,GAAML,GAAOC,GAAK;AACvC,MAAIV,IAAOU,IAAMD;AACjB,MAAIT,IAAO,GAAG;AACV,QAAIW,IAASF,IAAQ,KAAK,MAAMT,IAAO,CAAC,GACpC9B,IAAOoC,GAAgBQ,GAAML,GAAOE,CAAM,GAC1CrC,IAAOwC,EAAK;AAChB,WAAAxC,EAAK,OAAOJ,GACZ4C,EAAK,OAAOA,EAAK,KAAK,MACtBxC,EAAK,QAAQgC,GAAgBQ,GAAMH,IAAS,GAAGD,CAAG,GAC3CpC;AAAA,EACV;AACD,SAAO;AACX;AACA,SAAS8B,GAAWW,GAAIC,GAAIjC,GAAS;AAKjC,WAJI6B,IAAO,IAAI1D,GAAK,MAAM,IAAI,GAC1B2D,IAAID,GACJK,IAAKF,GACLG,IAAKF,GACFC,MAAO,QAAQC,MAAO;AACzB,IAAInC,EAAQkC,EAAG,KAAKC,EAAG,GAAG,IAAI,KAC1BL,EAAE,OAAOI,GACTA,IAAKA,EAAG,SAGRJ,EAAE,OAAOK,GACTA,IAAKA,EAAG,OAEZL,IAAIA,EAAE;AAEV,SAAII,MAAO,OACPJ,EAAE,OAAOI,IAEJC,MAAO,SACZL,EAAE,OAAOK,IAENN,EAAK;AAChB;AACA,SAASX,GAAKV,GAAME,GAAQvB,GAAMC,GAAOY,GAAS;AAC9C,MAAI,EAAAb,KAAQC,IAKZ;AAAA,aAHIgD,IAAQ5B,EAAMrB,IAAOC,KAAU,CAAC,GAChCV,IAAIS,IAAO,GACXzC,IAAI0C,IAAQ,OACH;AACT;AACI,QAAAV;AAAA,aACGsB,EAAQQ,EAAK9B,CAAC,GAAG0D,CAAK,IAAI;AACjC;AACI,QAAA1F;AAAA,aACGsD,EAAQQ,EAAK9D,CAAC,GAAG0F,CAAK,IAAI;AACjC,UAAI1D,KAAKhC;AACL;AACJ,UAAI2F,IAAM7B,EAAK9B,CAAC;AAChB,MAAA8B,EAAK9B,CAAC,IAAI8B,EAAK9D,CAAC,GAChB8D,EAAK9D,CAAC,IAAI2F,GACVA,IAAM3B,EAAOhC,CAAC,GACdgC,EAAOhC,CAAC,IAAIgC,EAAOhE,CAAC,GACpBgE,EAAOhE,CAAC,IAAI2F;AAAA,IACf;AACD,IAAAnB,GAAKV,GAAME,GAAQvB,GAAMzC,GAAGsD,CAAO,GACnCkB,GAAKV,GAAME,GAAQhE,IAAI,GAAG0C,GAAOY,CAAO;AAAA;AAC5C;AC1qBO,MAAMsC,KAAU,uBACVC,KAAW,WACXC,MAAkB,IAAI,IAAIF,MAAWA;AAG3C,SAASG,GAAIC,GAAMxE,GAAGyE,GAAM,GAAG,GAAG;AACrC,MAAIxC,GAAGyC,GAAMC,GAAIC,GACbC,IAAO7E,EAAE,CAAC,GACV8E,IAAO,EAAE,CAAC,GACVC,IAAS,GACTC,IAAS;AACb,EAAKF,IAAOD,KAAWC,IAAO,CAACD,KAC3B5C,IAAI4C,GACJA,IAAO7E,EAAE,EAAE+E,CAAM,MAEjB9C,IAAI6C,GACJA,IAAO,EAAE,EAAEE,CAAM;AAErB,MAAIC,IAAS;AACb,MAAIF,IAASP,KAAQQ,IAASP;AAc1B,SAbKK,IAAOD,KAAWC,IAAO,CAACD,KAC3BH,IAAOG,IAAO5C,GACd0C,IAAK1C,KAAKyC,IAAOG,IACjBA,IAAO7E,EAAE,EAAE+E,CAAM,MAEjBL,IAAOI,IAAO7C,GACd0C,IAAK1C,KAAKyC,IAAOI,IACjBA,IAAO,EAAE,EAAEE,CAAM,IAErB/C,IAAIyC,GACAC,MAAO,MACP,EAAEM,GAAQ,IAAIN,IAEXI,IAASP,KAAQQ,IAASP;AAC7B,MAAKK,IAAOD,KAAWC,IAAO,CAACD,KAC3BH,IAAOzC,IAAI4C,GACXD,IAAQF,IAAOzC,GACf0C,IAAK1C,KAAKyC,IAAOE,MAAUC,IAAOD,IAClCC,IAAO7E,EAAE,EAAE+E,CAAM,MAEjBL,IAAOzC,IAAI6C,GACXF,IAAQF,IAAOzC,GACf0C,IAAK1C,KAAKyC,IAAOE,MAAUE,IAAOF,IAClCE,IAAO,EAAE,EAAEE,CAAM,IAErB/C,IAAIyC,GACAC,MAAO,MACP,EAAEM,GAAQ,IAAIN;AAI1B,SAAOI,IAASP;AACZ,IAAAE,IAAOzC,IAAI4C,GACXD,IAAQF,IAAOzC,GACf0C,IAAK1C,KAAKyC,IAAOE,MAAUC,IAAOD,IAClCC,IAAO7E,EAAE,EAAE+E,CAAM,GACjB9C,IAAIyC,GACAC,MAAO,MACP,EAAEM,GAAQ,IAAIN;AAGtB,SAAOK,IAASP;AACZ,IAAAC,IAAOzC,IAAI6C,GACXF,IAAQF,IAAOzC,GACf0C,IAAK1C,KAAKyC,IAAOE,MAAUE,IAAOF,IAClCE,IAAO,EAAE,EAAEE,CAAM,GACjB/C,IAAIyC,GACAC,MAAO,MACP,EAAEM,GAAQ,IAAIN;AAGtB,UAAI1C,MAAM,KAAKgD,MAAW,OACtB,EAAEA,GAAQ,IAAIhD,IAEXgD;AACX;AAsDO,SAASC,GAASV,GAAMxE,GAAG;AAC9B,MAAIiC,IAAIjC,EAAE,CAAC;AACX,WAASQ,IAAI,GAAGA,IAAIgE,GAAMhE,IAAK,CAAAyB,KAAKjC,EAAEQ,CAAC;AACvC,SAAOyB;AACX;AAEO,SAASkD,GAAIvF,GAAG;AACnB,SAAO,IAAI,aAAaA,CAAC;AAC7B;ACvIA,MAAMwF,MAAgB,IAAI,KAAKhB,MAAWA,IACpCiB,MAAgB,IAAI,KAAKjB,MAAWA,IACpCkB,MAAgB,IAAI,KAAKlB,MAAWA,KAAUA,IAE9CmB,KAAIJ,GAAI,CAAC,GACTK,KAAKL,GAAI,CAAC,GACVM,KAAKN,GAAI,EAAE,GACXO,KAAIP,GAAI,EAAE,GACVQ,KAAIR,GAAI,CAAC;AAEf,SAASS,GAAcC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAQ;AACnD,MAAIC,GAASC,GAASC,GAASC,GAC3B3B,GAAO4B,GAAGC,GAAKC,GAAKC,GAAKC,GAAKC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC;AAE9D,QAAMC,IAAMxB,IAAKI,GACXqB,KAAMvB,IAAKE,GACXsB,KAAMzB,IAAKI,GACXsB,KAAMxB,IAAKE;AAEjB,EAAAc,IAAKK,IAAMG,IACXhB,IAAInC,KAAWgD,GACfZ,IAAMD,KAAKA,IAAIa,IACfX,IAAMW,IAAMZ,GACZD,IAAInC,KAAWmD,IACfb,IAAMH,KAAKA,IAAIgB,KACfZ,IAAMY,KAAMb,GACZM,IAAKP,IAAME,KAAOI,IAAKP,IAAME,IAAMD,IAAMC,IAAMF,IAAMG,IACrDM,IAAKK,KAAMD,IACXd,IAAInC,KAAWkD,IACfd,IAAMD,KAAKA,IAAIe,KACfb,IAAMa,KAAMd,GACZD,IAAInC,KAAWiD,IACfX,IAAMH,KAAKA,IAAIc,KACfV,IAAMU,KAAMX,GACZQ,IAAKT,IAAME,KAAOM,IAAKT,IAAME,IAAMD,IAAMC,IAAMF,IAAMG,IACrDC,IAAKI,IAAKE,GACVvC,IAAQqC,IAAKJ,GACbtB,GAAE,CAAC,IAAI0B,KAAMJ,IAAKjC,MAAUA,IAAQuC,IACpCL,IAAKE,IAAKH,GACVjC,IAAQkC,IAAKE,GACbD,IAAKC,KAAMF,IAAKlC,MAAUiC,IAAKjC,IAC/BiC,IAAKE,IAAKG,GACVtC,IAAQmC,IAAKF,GACbtB,GAAE,CAAC,IAAIwB,KAAMF,IAAKjC,MAAUA,IAAQsC,IACpCE,IAAKN,IAAKD,GACVjC,IAAQwC,IAAKN,GACbvB,GAAE,CAAC,IAAIuB,KAAMM,IAAKxC,MAAUiC,IAAKjC,IACjCW,GAAE,CAAC,IAAI6B;AAEP,MAAIK,KAAMvC,GAAS,GAAGK,EAAC,GACnBmC,IAAWrC,KAAec;AAoB9B,MAnBIsB,MAAOC,KAAY,CAACD,MAAOC,MAI/B9C,IAAQiB,IAAKwB,GACbjB,IAAUP,KAAMwB,IAAMzC,MAAUA,IAAQqB,IACxCrB,IAAQmB,IAAKuB,IACbhB,IAAUP,KAAMuB,KAAM1C,MAAUA,IAAQqB,IACxCrB,IAAQkB,IAAKyB,IACblB,IAAUP,KAAMyB,KAAM3C,MAAUA,IAAQsB,IACxCtB,IAAQoB,IAAKwB,IACbjB,IAAUP,KAAMwB,KAAM5C,MAAUA,IAAQsB,IAEpCE,MAAY,KAAKC,MAAY,KAAKC,MAAY,KAAKC,MAAY,OAInEmB,IAAWpC,KAAea,IAAS7B,KAAiB,KAAK,IAAImD,EAAG,GAChEA,MAAQJ,IAAMd,IAAUiB,KAAMpB,KAAYmB,KAAMjB,IAAUgB,KAAMjB,IAC5DoB,MAAOC,KAAY,CAACD,MAAOC,GAAU,QAAOD;AAEhD,EAAAT,IAAKZ,IAAUoB,IACfhB,IAAInC,KAAW+B,GACfK,IAAMD,KAAKA,IAAIJ,IACfM,IAAMN,IAAUK,GAChBD,IAAInC,KAAWmD,IACfb,IAAMH,KAAKA,IAAIgB,KACfZ,IAAMY,KAAMb,GACZM,IAAKP,IAAME,KAAOI,IAAKP,IAAME,IAAMD,IAAMC,IAAMF,IAAMG,IACrDM,IAAKb,IAAUiB,IACfd,IAAInC,KAAWgC,GACfI,IAAMD,KAAKA,IAAIH,IACfK,IAAML,IAAUI,GAChBD,IAAInC,KAAWiD,IACfX,IAAMH,KAAKA,IAAIc,KACfV,IAAMU,KAAMX,GACZQ,IAAKT,IAAME,KAAOM,IAAKT,IAAME,IAAMD,IAAMC,IAAMF,IAAMG,IACrDC,IAAKI,IAAKE,GACVvC,IAAQqC,IAAKJ,GACblB,GAAE,CAAC,IAAIsB,KAAMJ,IAAKjC,MAAUA,IAAQuC,IACpCL,IAAKE,IAAKH,GACVjC,IAAQkC,IAAKE,GACbD,IAAKC,KAAMF,IAAKlC,MAAUiC,IAAKjC,IAC/BiC,IAAKE,IAAKG,GACVtC,IAAQmC,IAAKF,GACblB,GAAE,CAAC,IAAIoB,KAAMF,IAAKjC,MAAUA,IAAQsC,IACpCE,IAAKN,IAAKD,GACVjC,IAAQwC,IAAKN,GACbnB,GAAE,CAAC,IAAImB,KAAMM,IAAKxC,MAAUiC,IAAKjC,IACjCe,GAAE,CAAC,IAAIyB;AACP,QAAMO,KAAQpD,GAAI,GAAGgB,IAAG,GAAGI,IAAGH,EAAE;AAEhC,EAAAwB,IAAKK,IAAMd,GACXC,IAAInC,KAAWgD,GACfZ,IAAMD,KAAKA,IAAIa,IACfX,IAAMW,IAAMZ,GACZD,IAAInC,KAAWkC,GACfI,IAAMH,KAAKA,IAAID,IACfK,IAAML,IAAUI,GAChBM,IAAKP,IAAME,KAAOI,IAAKP,IAAME,IAAMD,IAAMC,IAAMF,IAAMG,IACrDM,IAAKK,KAAMjB,GACXE,IAAInC,KAAWkD,IACfd,IAAMD,KAAKA,IAAIe,KACfb,IAAMa,KAAMd,GACZD,IAAInC,KAAWiC,GACfK,IAAMH,KAAKA,IAAIF,IACfM,IAAMN,IAAUK,GAChBQ,IAAKT,IAAME,KAAOM,IAAKT,IAAME,IAAMD,IAAMC,IAAMF,IAAMG,IACrDC,IAAKI,IAAKE,GACVvC,IAAQqC,IAAKJ,GACblB,GAAE,CAAC,IAAIsB,KAAMJ,IAAKjC,MAAUA,IAAQuC,IACpCL,IAAKE,IAAKH,GACVjC,IAAQkC,IAAKE,GACbD,IAAKC,KAAMF,IAAKlC,MAAUiC,IAAKjC,IAC/BiC,IAAKE,IAAKG,GACVtC,IAAQmC,IAAKF,GACblB,GAAE,CAAC,IAAIoB,KAAMF,IAAKjC,MAAUA,IAAQsC,IACpCE,IAAKN,IAAKD,GACVjC,IAAQwC,IAAKN,GACbnB,GAAE,CAAC,IAAImB,KAAMM,IAAKxC,MAAUiC,IAAKjC,IACjCe,GAAE,CAAC,IAAIyB;AACP,QAAMQ,KAAQrD,GAAIoD,IAAOnC,IAAI,GAAGG,IAAGF,EAAE;AAErC,EAAAuB,IAAKZ,IAAUG,GACfC,IAAInC,KAAW+B,GACfK,IAAMD,KAAKA,IAAIJ,IACfM,IAAMN,IAAUK,GAChBD,IAAInC,KAAWkC,GACfI,IAAMH,KAAKA,IAAID,IACfK,IAAML,IAAUI,GAChBM,IAAKP,IAAME,KAAOI,IAAKP,IAAME,IAAMD,IAAMC,IAAMF,IAAMG,IACrDM,IAAKb,IAAUC,GACfE,IAAInC,KAAWgC,GACfI,IAAMD,KAAKA,IAAIH,IACfK,IAAML,IAAUI,GAChBD,IAAInC,KAAWiC,GACfK,IAAMH,KAAKA,IAAIF,IACfM,IAAMN,IAAUK,GAChBQ,IAAKT,IAAME,KAAOM,IAAKT,IAAME,IAAMD,IAAMC,IAAMF,IAAMG,IACrDC,IAAKI,IAAKE,GACVvC,IAAQqC,IAAKJ,GACblB,GAAE,CAAC,IAAIsB,KAAMJ,IAAKjC,MAAUA,IAAQuC,IACpCL,IAAKE,IAAKH,GACVjC,IAAQkC,IAAKE,GACbD,IAAKC,KAAMF,IAAKlC,MAAUiC,IAAKjC,IAC/BiC,IAAKE,IAAKG,GACVtC,IAAQmC,IAAKF,GACblB,GAAE,CAAC,IAAIoB,KAAMF,IAAKjC,MAAUA,IAAQsC,IACpCE,IAAKN,IAAKD,GACVjC,IAAQwC,IAAKN,GACbnB,GAAE,CAAC,IAAImB,KAAMM,IAAKxC,MAAUiC,IAAKjC,IACjCe,GAAE,CAAC,IAAIyB;AACP,QAAMS,KAAOtD,GAAIqD,IAAOnC,IAAI,GAAGE,IAAGD,EAAC;AAEnC,SAAOA,GAAEmC,KAAO,CAAC;AACrB;AAEO,SAASC,GAASjC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAI;AAC7C,QAAM6B,KAAWjC,IAAKI,MAAOH,IAAKE,IAC5B+B,KAAYnC,IAAKI,MAAOD,IAAKE,IAC7BuB,IAAMM,IAAUC,GAEhB7B,IAAS,KAAK,IAAI4B,IAAUC,CAAQ;AAC1C,SAAI,KAAK,IAAIP,CAAG,KAAKrC,KAAee,IAAesB,IAE5C,CAAC7B,GAAcC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,CAAM;AACxD;ACzKA,MAAM8B,KAAW,CAACC,GAAM/J,MACf+J,EAAK,GAAG,KAAK/J,EAAM,KAAKA,EAAM,KAAK+J,EAAK,GAAG,KAAKA,EAAK,GAAG,KAAK/J,EAAM,KAAKA,EAAM,KAAK+J,EAAK,GAAG,GAM9FC,KAAiB,CAACC,GAAIC,MAAO;AAEjC,MAAIA,EAAG,GAAG,IAAID,EAAG,GAAG,KAAKA,EAAG,GAAG,IAAIC,EAAG,GAAG,KAAKA,EAAG,GAAG,IAAID,EAAG,GAAG,KAAKA,EAAG,GAAG,IAAIC,EAAG,GAAG,EAAG,QAAO;AAG7F,QAAMC,IAASF,EAAG,GAAG,IAAIC,EAAG,GAAG,IAAIA,EAAG,GAAG,IAAID,EAAG,GAAG,GAC7CG,IAASH,EAAG,GAAG,IAAIC,EAAG,GAAG,IAAID,EAAG,GAAG,IAAIC,EAAG,GAAG,GAG7CG,IAASJ,EAAG,GAAG,IAAIC,EAAG,GAAG,IAAIA,EAAG,GAAG,IAAID,EAAG,GAAG,GAC7CK,IAASL,EAAG,GAAG,IAAIC,EAAG,GAAG,IAAID,EAAG,GAAG,IAAIC,EAAG,GAAG;AAGnD,SAAO;AAAA,IACL,IAAI;AAAA,MACF,GAAGC;AAAA,MACH,GAAGE;AAAA,IACJ;AAAA,IACD,IAAI;AAAA,MACF,GAAGD;AAAA,MACH,GAAGE;AAAA,IACJ;AAAA,EACL;AACA;AAQA,IAAIrE,KAAU,OAAO;AAGjBA,OAAY,WAAWA,KAAU,KAAK,IAAI,GAAG,GAAG;AACpD,MAAMsE,KAAatE,KAAUA,IAGvBvD,KAAM,CAACR,GAAGC,MAAM;AAEpB,MAAI,CAAC8D,KAAU/D,KAAKA,IAAI+D,MAClB,CAACA,KAAU9D,KAAKA,IAAI8D;AACtB,WAAO;AAKX,QAAMuE,IAAKtI,IAAIC;AACf,SAAIqI,IAAKA,IAAKD,KAAarI,IAAIC,IACtB,IAIFD,IAAIC,IAAI,KAAK;AACtB;AAeA,MAAMsI,GAAU;AAAA,EACd,cAAc;AACZ,SAAK,MAAK;AAAA,EACX;AAAA,EACD,QAAQ;AACN,SAAK,WAAW,IAAIC,MACpB,KAAK,WAAW,IAAIA;EACrB;AAAA,EACD,MAAMjH,GAAGnC,GAAG;AACV,WAAO;AAAA,MACL,GAAG,KAAK,SAAS,MAAMmC,CAAC;AAAA,MACxB,GAAG,KAAK,SAAS,MAAMnC,CAAC;AAAA,IAC9B;AAAA,EACG;AACH;AACA,MAAMoJ,GAAa;AAAA,EACjB,cAAc;AACZ,SAAK,OAAO,IAAIC,MAEhB,KAAK,MAAM,CAAC;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,MAAMC,GAAO;AACX,UAAMhI,IAAO,KAAK,KAAK,IAAIgI,CAAK,GAC1BC,IAAW,KAAK,KAAK,KAAKjI,CAAI;AACpC,QAAIiI,MAAa,QAAQnI,GAAIE,EAAK,KAAKiI,EAAS,GAAG,MAAM;AACvD,kBAAK,KAAK,OAAOD,CAAK,GACfC,EAAS;AAElB,UAAMC,IAAW,KAAK,KAAK,KAAKlI,CAAI;AACpC,WAAIkI,MAAa,QAAQpI,GAAIE,EAAK,KAAKkI,EAAS,GAAG,MAAM,KACvD,KAAK,KAAK,OAAOF,CAAK,GACfE,EAAS,OAEXF;AAAA,EACR;AACH;AAGA,MAAMG,KAAU,IAAIN,MAGdO,KAAe,CAAC9I,GAAGC,MAAMD,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,GAG7C8I,KAAa,CAAC/I,GAAGC,MAAMD,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,GAG3C+I,KAAsB,CAACC,GAAQC,GAAQC,MAAW;AACtD,QAAMC,IAAM3B,GAASwB,EAAO,GAAGA,EAAO,GAAGC,EAAO,GAAGA,EAAO,GAAGC,EAAO,GAAGA,EAAO,CAAC;AAC/E,SAAIC,IAAM,IAAU,KAChBA,IAAM,IAAU,IACb;AACT,GACMC,KAAS,CAAA7J,MAAK,KAAK,KAAKuJ,GAAWvJ,GAAGA,CAAC,CAAC,GAGxC8J,KAAc,CAACC,GAASC,GAAOC,MAAW;AAC9C,QAAMC,IAAQ;AAAA,IACZ,GAAGF,EAAM,IAAID,EAAQ;AAAA,IACrB,GAAGC,EAAM,IAAID,EAAQ;AAAA,EACzB,GACQI,IAAS;AAAA,IACb,GAAGF,EAAO,IAAIF,EAAQ;AAAA,IACtB,GAAGE,EAAO,IAAIF,EAAQ;AAAA,EAC1B;AACE,SAAOT,GAAaa,GAAQD,CAAK,IAAIL,GAAOM,CAAM,IAAIN,GAAOK,CAAK;AACpE,GAGME,KAAgB,CAACL,GAASC,GAAOC,MAAW;AAChD,QAAMC,IAAQ;AAAA,IACZ,GAAGF,EAAM,IAAID,EAAQ;AAAA,IACrB,GAAGC,EAAM,IAAID,EAAQ;AAAA,EACzB,GACQI,IAAS;AAAA,IACb,GAAGF,EAAO,IAAIF,EAAQ;AAAA,IACtB,GAAGE,EAAO,IAAIF,EAAQ;AAAA,EAC1B;AACE,SAAOR,GAAWY,GAAQD,CAAK,IAAIL,GAAOM,CAAM,IAAIN,GAAOK,CAAK;AAClE,GAKMG,KAAyB,CAACC,GAAItK,GAAGJ,MACjCI,EAAE,MAAM,IAAU,OACf;AAAA,EACL,GAAGsK,EAAG,IAAItK,EAAE,IAAIA,EAAE,KAAKJ,IAAI0K,EAAG;AAAA,EAC9B,GAAG1K;AACP,GAMM2K,KAAuB,CAACD,GAAItK,GAAG+B,MAC/B/B,EAAE,MAAM,IAAU,OACf;AAAA,EACL,GAAG+B;AAAA,EACH,GAAGuI,EAAG,IAAItK,EAAE,IAAIA,EAAE,KAAK+B,IAAIuI,EAAG;AAClC,GAKME,KAAiB,CAACC,GAAKC,GAAIC,GAAKC,MAAO;AAI3C,MAAIF,EAAG,MAAM,EAAG,QAAOH,GAAqBI,GAAKC,GAAIH,EAAI,CAAC;AAC1D,MAAIG,EAAG,MAAM,EAAG,QAAOL,GAAqBE,GAAKC,GAAIC,EAAI,CAAC;AAC1D,MAAID,EAAG,MAAM,EAAG,QAAOL,GAAuBM,GAAKC,GAAIH,EAAI,CAAC;AAC5D,MAAIG,EAAG,MAAM,EAAG,QAAOP,GAAuBI,GAAKC,GAAIC,EAAI,CAAC;AAM5D,QAAME,IAAQvB,GAAaoB,GAAIE,CAAE;AACjC,MAAIC,KAAS,EAAG,QAAO;AACvB,QAAMC,IAAK;AAAA,IACT,GAAGH,EAAI,IAAIF,EAAI;AAAA,IACf,GAAGE,EAAI,IAAIF,EAAI;AAAA,EACnB,GACQM,IAAKzB,GAAawB,GAAIJ,CAAE,IAAIG,GAC5BG,IAAK1B,GAAawB,GAAIF,CAAE,IAAIC,GAG5BI,IAAKR,EAAI,IAAIO,IAAKN,EAAG,GACzBQ,IAAKP,EAAI,IAAII,IAAKH,EAAG,GACjBO,IAAKV,EAAI,IAAIO,IAAKN,EAAG,GACzBU,IAAKT,EAAI,IAAII,IAAKH,EAAG,GACjB7I,KAAKkJ,IAAKC,KAAM,GAChBtL,KAAKuL,IAAKC,KAAM;AACtB,SAAO;AAAA,IACL,GAAGrJ;AAAA,IACH,GAAGnC;AAAA,EACP;AACA;AAEA,MAAMyL,GAAW;AAAA;AAAA,EAEf,OAAO,QAAQ7K,GAAGC,GAAG;AAEnB,UAAM6K,IAAQD,GAAW,cAAc7K,EAAE,OAAOC,EAAE,KAAK;AACvD,WAAI6K,MAAU,IAAUA,KAGpB9K,EAAE,UAAUC,EAAE,SAAOD,EAAE,KAAKC,CAAC,GAG7BD,EAAE,WAAWC,EAAE,SAAeD,EAAE,SAAS,IAAI,KAI1C+K,GAAQ,QAAQ/K,EAAE,SAASC,EAAE,OAAO;AAAA,EAC5C;AAAA;AAAA,EAGD,OAAO,cAAc+K,GAAKC,GAAK;AAC7B,WAAID,EAAI,IAAIC,EAAI,IAAU,KACtBD,EAAI,IAAIC,EAAI,IAAU,IACtBD,EAAI,IAAIC,EAAI,IAAU,KACtBD,EAAI,IAAIC,EAAI,IAAU,IACnB;AAAA,EACR;AAAA;AAAA,EAGD,YAAYnN,GAAOoN,GAAQ;AACzB,IAAIpN,EAAM,WAAW,SAAWA,EAAM,SAAS,CAAC,IAAI,IAAOA,EAAM,OAAO,KAAK,IAAI,GACjF,KAAK,QAAQA,GACb,KAAK,SAASoN;AAAA,EAEf;AAAA,EACD,KAAKC,GAAO;AACV,QAAIA,EAAM,UAAU,KAAK;AACvB,YAAM,IAAI,MAAM,qCAAqC;AAEvD,UAAMC,IAAcD,EAAM,MAAM;AAChC,aAAShL,IAAI,GAAGkL,IAAOD,EAAY,QAAQjL,IAAIkL,GAAMlL,KAAK;AACxD,YAAMmL,IAAMF,EAAYjL,CAAC;AACzB,WAAK,MAAM,OAAO,KAAKmL,CAAG,GAC1BA,EAAI,QAAQ,KAAK;AAAA,IAClB;AACD,SAAK,kBAAiB;AAAA,EACvB;AAAA;AAAA;AAAA,EAID,oBAAoB;AAOlB,UAAMC,IAAY,KAAK,MAAM,OAAO;AACpC,aAASpL,IAAI,GAAGA,IAAIoL,GAAWpL,KAAK;AAClC,YAAMqL,IAAO,KAAK,MAAM,OAAOrL,CAAC;AAChC,UAAIqL,EAAK,QAAQ,eAAe;AAChC,iBAASrN,IAAIgC,IAAI,GAAGhC,IAAIoN,GAAWpN,KAAK;AACtC,gBAAMsN,IAAO,KAAK,MAAM,OAAOtN,CAAC;AAChC,UAAIsN,EAAK,eAAe,UACpBD,EAAK,QAAQ,MAAM,WAAWC,EAAK,QAAQ,MAAM,UACrDD,EAAK,QAAQ,QAAQC,EAAK,OAAO;AAAA,QAClC;AAAA,IACF;AAAA,EACF;AAAA,EACD,2BAA2B;AAEzB,UAAMC,IAAS,CAAA;AACf,aAASvL,IAAI,GAAGkL,IAAO,KAAK,MAAM,OAAO,QAAQlL,IAAIkL,GAAMlL,KAAK;AAC9D,YAAMmL,IAAM,KAAK,MAAM,OAAOnL,CAAC;AAC/B,MAAImL,MAAQ,QAAQ,CAACA,EAAI,QAAQ,WAAWA,EAAI,QAAQ,gBACtDI,EAAO,KAAKJ,CAAG;AAAA,IAElB;AACD,WAAOI;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYD,sBAAsBC,GAAW;AAC/B,UAAMC,IAAQ,oBAAI,OACZC,IAAY,CAAAC,MAAe;AAC/B,YAAMC,IAAYD,EAAY;AAC9B,MAAAF,EAAM,IAAIE,GAAa;AAAA,QACrB,MAAMxC,GAAY,KAAK,OAAOqC,EAAU,OAAOI,EAAU,KAAK;AAAA,QAC9D,QAAQnC,GAAc,KAAK,OAAO+B,EAAU,OAAOI,EAAU,KAAK;AAAA,MAC1E,CAAO;AAAA,IACP;AACI,WAAO,CAAC/L,GAAGC,MAAM;AACf,MAAK2L,EAAM,IAAI5L,CAAC,KAAG6L,EAAU7L,CAAC,GACzB4L,EAAM,IAAI3L,CAAC,KAAG4L,EAAU5L,CAAC;AAC9B,YAAM;AAAA,QACJ,MAAM+L;AAAA,QACN,QAAQC;AAAA,MAChB,IAAUL,EAAM,IAAI5L,CAAC,GACT;AAAA,QACJ,MAAMkM;AAAA,QACN,QAAQC;AAAA,MAChB,IAAUP,EAAM,IAAI3L,CAAC;AAGf,aAAI+L,KAAS,KAAKE,KAAS,IACrBD,IAAUE,IAAgB,IAC1BF,IAAUE,IAAgB,KACvB,IAILH,IAAQ,KAAKE,IAAQ,IACnBD,IAAUE,IAAgB,KAC1BF,IAAUE,IAAgB,IACvB,IAILD,IAAQF,IAAc,KACtBE,IAAQF,IAAc,IACnB;AAAA,IACb;AAAA,EACG;AACH;AAIA,IAAII,KAAY;AAChB,MAAMrB,GAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcZ,OAAO,QAAQ/K,GAAGC,GAAG;AACnB,UAAMoM,IAAMrM,EAAE,OAAO,MAAM,GACrBsM,IAAMrM,EAAE,OAAO,MAAM,GACrBsM,IAAMvM,EAAE,QAAQ,MAAM,GACtBwM,IAAMvM,EAAE,QAAQ,MAAM;AAG5B,QAAIuM,IAAMH,EAAK,QAAO;AACtB,QAAIE,IAAMD,EAAK,QAAO;AACtB,UAAMG,IAAMzM,EAAE,OAAO,MAAM,GACrB0M,IAAMzM,EAAE,OAAO,MAAM,GACrB0M,IAAM3M,EAAE,QAAQ,MAAM,GACtB4M,IAAM3M,EAAE,QAAQ,MAAM;AAG5B,QAAIoM,IAAMC,GAAK;AAEb,UAAII,IAAMD,KAAOC,IAAMC,EAAK,QAAO;AACnC,UAAID,IAAMD,KAAOC,IAAMC,EAAK,QAAO;AAGnC,YAAME,IAAY7M,EAAE,aAAaC,EAAE,OAAO,KAAK;AAC/C,UAAI4M,IAAY,EAAG,QAAO;AAC1B,UAAIA,IAAY,EAAG,QAAO;AAG1B,YAAMC,IAAa7M,EAAE,aAAaD,EAAE,QAAQ,KAAK;AACjD,aAAI8M,MAAe,IAAUA,IAItB;AAAA,IACR;AAGD,QAAIT,IAAMC,GAAK;AACb,UAAIG,IAAMC,KAAOD,IAAMG,EAAK,QAAO;AACnC,UAAIH,IAAMC,KAAOD,IAAMG,EAAK,QAAO;AAGnC,YAAMG,IAAY9M,EAAE,aAAaD,EAAE,OAAO,KAAK;AAC/C,UAAI+M,MAAc,EAAG,QAAOA;AAG5B,YAAMC,IAAahN,EAAE,aAAaC,EAAE,QAAQ,KAAK;AACjD,aAAI+M,IAAa,IAAU,IACvBA,IAAa,IAAU,KAIpB;AAAA,IACR;AAMD,QAAIP,IAAMC,EAAK,QAAO;AACtB,QAAID,IAAMC,EAAK,QAAO;AAMtB,QAAIH,IAAMC,GAAK;AACb,YAAMM,IAAa7M,EAAE,aAAaD,EAAE,QAAQ,KAAK;AACjD,UAAI8M,MAAe,EAAG,QAAOA;AAAA,IAC9B;AAGD,QAAIP,IAAMC,GAAK;AACb,YAAMQ,IAAahN,EAAE,aAAaC,EAAE,QAAQ,KAAK;AACjD,UAAI+M,IAAa,EAAG,QAAO;AAC3B,UAAIA,IAAa,EAAG,QAAO;AAAA,IAC5B;AACD,QAAIT,MAAQC,GAAK;AAGf,YAAM/G,IAAKkH,IAAMF,GACXjH,IAAK+G,IAAMF,GACX1G,IAAKiH,IAAMF,GACXhH,IAAK8G,IAAMF;AACjB,UAAI7G,IAAKD,KAAMG,IAAKD,EAAI,QAAO;AAC/B,UAAID,IAAKD,KAAMG,IAAKD,EAAI,QAAO;AAAA,IAChC;AAID,WAAI6G,IAAMC,IAAY,IAClBD,IAAMC,KAMNG,IAAMC,IAAY,KAClBD,IAAMC,IAAY,IAIlB5M,EAAE,KAAKC,EAAE,KAAW,KACpBD,EAAE,KAAKC,EAAE,KAAW,IAGjB;AAAA,EACR;AAAA;AAAA;AAAA,EAID,YAAYgN,GAAQC,GAASC,GAAOC,GAAU;AAC5C,SAAK,KAAK,EAAEhB,IACZ,KAAK,SAASa,GACdA,EAAO,UAAU,MACjBA,EAAO,UAAUC,GACjB,KAAK,UAAUA,GACfA,EAAQ,UAAU,MAClBA,EAAQ,UAAUD,GAClB,KAAK,QAAQE,GACb,KAAK,WAAWC;AAAA,EAGjB;AAAA,EACD,OAAO,SAASnD,GAAKE,GAAKjM,GAAM;AAC9B,QAAImP,GAAQC,GAASC;AAGrB,UAAMC,IAAS3C,GAAW,cAAcZ,GAAKE,CAAG;AAChD,QAAIqD,IAAS;AACX,MAAAH,IAASpD,GACTqD,IAAUnD,GACVoD,IAAU;AAAA,aACDC,IAAS;AAClB,MAAAH,IAASlD,GACTmD,IAAUrD,GACVsD,IAAU;AAAA,QACL,OAAM,IAAI,MAAM,0CAA0CtD,EAAI,CAAC,KAAKA,EAAI,CAAC,GAAG;AACnF,UAAMgD,IAAS,IAAIpC,GAAWwC,GAAQ,EAAI,GACpCH,IAAU,IAAIrC,GAAWyC,GAAS,EAAK;AAC7C,WAAO,IAAIvC,GAAQkC,GAAQC,GAAS,CAAChP,CAAI,GAAG,CAACqP,CAAO,CAAC;AAAA,EACtD;AAAA;AAAA,EAGD,eAAeE,GAAY;AACzB,SAAK,UAAUA,GACf,KAAK,QAAQ,UAAU,MACvB,KAAK,QAAQ,UAAU,KAAK,QAC5B,KAAK,OAAO,UAAU,KAAK;AAAA,EAC5B;AAAA,EACD,OAAO;AACL,UAAM9C,IAAK,KAAK,OAAO,MAAM,GACvBC,IAAK,KAAK,QAAQ,MAAM;AAC9B,WAAO;AAAA,MACL,IAAI;AAAA,QACF,GAAG,KAAK,OAAO,MAAM;AAAA,QACrB,GAAGD,IAAKC,IAAKD,IAAKC;AAAA,MACnB;AAAA,MACD,IAAI;AAAA,QACF,GAAG,KAAK,QAAQ,MAAM;AAAA,QACtB,GAAGD,IAAKC,IAAKD,IAAKC;AAAA,MACnB;AAAA,IACP;AAAA,EACG;AAAA;AAAA,EAGD,SAAS;AACP,WAAO;AAAA,MACL,GAAG,KAAK,QAAQ,MAAM,IAAI,KAAK,OAAO,MAAM;AAAA,MAC5C,GAAG,KAAK,QAAQ,MAAM,IAAI,KAAK,OAAO,MAAM;AAAA,IAClD;AAAA,EACG;AAAA,EACD,aAAad,GAAI;AACf,WAAOA,EAAG,MAAM,KAAK,OAAO,MAAM,KAAKA,EAAG,MAAM,KAAK,OAAO,MAAM,KAAKA,EAAG,MAAM,KAAK,QAAQ,MAAM,KAAKA,EAAG,MAAM,KAAK,QAAQ,MAAM;AAAA,EACrI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeD,aAAahM,GAAO;AAClB,QAAI,KAAK,aAAaA,CAAK,EAAG,QAAO;AACrC,UAAM4P,IAAM,KAAK,OAAO,OAClBC,IAAM,KAAK,QAAQ,OACnBnO,IAAI,KAAK;AAGf,QAAIkO,EAAI,MAAMC,EAAI;AAChB,aAAI7P,EAAM,MAAM4P,EAAI,IAAU,IACvB5P,EAAM,IAAI4P,EAAI,IAAI,IAAI;AAK/B,UAAME,KAAS9P,EAAM,IAAI4P,EAAI,KAAKlO,EAAE,GAC9BqO,IAAaH,EAAI,IAAIE,IAAQpO,EAAE;AACrC,QAAI1B,EAAM,MAAM+P,EAAY,QAAO;AAInC,UAAMC,KAAShQ,EAAM,IAAI4P,EAAI,KAAKlO,EAAE,GAC9BuO,IAAaL,EAAI,IAAII,IAAQtO,EAAE;AACrC,WAAI1B,EAAM,MAAMiQ,IAAmB,IAC5BjQ,EAAM,IAAIiQ,IAAa,KAAK;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBD,gBAAgB5C,GAAO;AAErB,UAAM6C,IAAQ,KAAK,QACbC,IAAQ9C,EAAM,QACd+C,IAAcpG,GAAekG,GAAOC,CAAK;AAC/C,QAAIC,MAAgB,KAAM,QAAO;AAMjC,UAAMC,IAAM,KAAK,OAAO,OAClBC,IAAM,KAAK,QAAQ,OACnBC,IAAMlD,EAAM,OAAO,OACnBmD,IAAMnD,EAAM,QAAQ,OAKpBoD,IAAkB3G,GAASoG,GAAOK,CAAG,KAAK,KAAK,aAAaA,CAAG,MAAM,GACrEG,IAAiB5G,GAASqG,GAAOE,CAAG,KAAKhD,EAAM,aAAagD,CAAG,MAAM,GACrEM,IAAkB7G,GAASoG,GAAOM,CAAG,KAAK,KAAK,aAAaA,CAAG,MAAM,GACrEI,IAAiB9G,GAASqG,GAAOG,CAAG,KAAKjD,EAAM,aAAaiD,CAAG,MAAM;AAG3E,QAAII,KAAkBD;AAGpB,aAAIG,KAAkB,CAACD,IAAwBL,IAC3C,CAACM,KAAkBD,IAAwBH,IAGxC;AAIT,QAAIE;AAEF,aAAIC,KACEN,EAAI,MAAMG,EAAI,KAAKH,EAAI,MAAMG,EAAI,IAAU,OAG1CH;AAIT,QAAII;AAEF,aAAIG,KACEN,EAAI,MAAMC,EAAI,KAAKD,EAAI,MAAMC,EAAI,IAAU,OAG1CA;AAIT,QAAIK,KAAkBD,EAAiB,QAAO;AAG9C,QAAIC,EAAgB,QAAON;AAC3B,QAAIK,EAAiB,QAAOH;AAI5B,UAAMxE,IAAKE,GAAemE,GAAK,KAAK,OAAQ,GAAEE,GAAKlD,EAAM,OAAM,CAAE;AAOjE,WAHIrB,MAAO,QAGP,CAAClC,GAASsG,GAAapE,CAAE,IAAU,OAGhCjB,GAAQ,MAAMiB,EAAG,GAAGA,EAAG,CAAC;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcD,MAAMhM,GAAO;AACX,UAAM6Q,IAAY,CAAA,GACZC,IAAgB9Q,EAAM,WAAW,QACjC+Q,IAAY,IAAIhE,GAAW/M,GAAO,EAAI,GACtC2P,IAAa,IAAI5C,GAAW/M,GAAO,EAAK,GACxCgR,IAAa,KAAK;AACxB,SAAK,eAAerB,CAAU,GAC9BkB,EAAU,KAAKlB,CAAU,GACzBkB,EAAU,KAAKE,CAAS;AACxB,UAAME,IAAS,IAAIhE,GAAQ8D,GAAWC,GAAY,KAAK,MAAM,MAAO,GAAE,KAAK,SAAS,MAAO,CAAA;AAK3F,WAAIjE,GAAW,cAAckE,EAAO,OAAO,OAAOA,EAAO,QAAQ,KAAK,IAAI,KACxEA,EAAO,WAAU,GAEflE,GAAW,cAAc,KAAK,OAAO,OAAO,KAAK,QAAQ,KAAK,IAAI,KACpE,KAAK,WAAU,GAMb+D,MACFC,EAAU,kBAAiB,GAC3BpB,EAAW,kBAAiB,IAEvBkB;AAAA,EACR;AAAA;AAAA,EAGD,aAAa;AACX,UAAMK,IAAS,KAAK;AACpB,SAAK,UAAU,KAAK,QACpB,KAAK,SAASA,GACd,KAAK,OAAO,SAAS,IACrB,KAAK,QAAQ,SAAS;AACtB,aAAS7O,IAAI,GAAGkL,IAAO,KAAK,SAAS,QAAQlL,IAAIkL,GAAMlL;AACrD,WAAK,SAASA,CAAC,KAAK;AAAA,EAEvB;AAAA;AAAA;AAAA,EAID,QAAQgL,GAAO;AACb,QAAI8D,IAAW,MACXC,IAAW/D;AACf,WAAO8D,EAAS,aAAY,CAAAA,IAAWA,EAAS;AAChD,WAAOC,EAAS,aAAY,CAAAA,IAAWA,EAAS;AAChD,UAAM1O,IAAMuK,GAAQ,QAAQkE,GAAUC,CAAQ;AAC9C,QAAI1O,MAAQ,GAGZ;AAAA,UAAIA,IAAM,GAAG;AACX,cAAMsD,IAAMmL;AACZ,QAAAA,IAAWC,GACXA,IAAWpL;AAAA,MACZ;AAGD,UAAImL,EAAS,SAASC,GAAU;AAC9B,cAAMpL,IAAMmL;AACZ,QAAAA,IAAWC,GACXA,IAAWpL;AAAA,MACZ;AACD,eAAS3D,IAAI,GAAGkL,IAAO6D,EAAS,MAAM,QAAQ/O,IAAIkL,GAAMlL,KAAK;AAC3D,cAAMjC,IAAOgR,EAAS,MAAM/O,CAAC,GACvBoN,IAAU2B,EAAS,SAAS/O,CAAC,GAC7BiC,IAAQ6M,EAAS,MAAM,QAAQ/Q,CAAI;AACzC,QAAIkE,MAAU,MACZ6M,EAAS,MAAM,KAAK/Q,CAAI,GACxB+Q,EAAS,SAAS,KAAK1B,CAAO,KACzB0B,EAAS,SAAS7M,CAAK,KAAKmL;AAAA,MACpC;AACD,MAAA2B,EAAS,QAAQ,MACjBA,EAAS,WAAW,MACpBA,EAAS,aAAaD,GAGtBC,EAAS,OAAO,aAAaD,EAAS,QACtCC,EAAS,QAAQ,aAAaD,EAAS;AAAA;AAAA,EACxC;AAAA;AAAA,EAGD,eAAe;AACb,WAAI,KAAK,kBAAkB,SAAkB,KAAK,iBAC7C,KAAK,OAAyC,KAAK,KAAK,WAAU,IAAI,KAAK,gBAAgB,KAAK,OAAU,KAAK,gBAAgB,KAAK,KAAK,iBAA9H,KAAK,gBAAgB,MAC9B,KAAK;AAAA,EACb;AAAA,EACD,cAAc;AACZ,QAAI,KAAK,iBAAiB,OAAW,QAAO,KAAK;AACjD,QAAI,CAAC,KAAK,KAAM,MAAK,eAAe;AAAA,MAClC,OAAO,CAAE;AAAA,MACT,UAAU,CAAE;AAAA,MACZ,YAAY,CAAE;AAAA,IACpB;AAAA,SAAW;AACL,YAAME,IAAM,KAAK,KAAK,cAAc,KAAK;AACzC,WAAK,eAAeA,EAAI;IACzB;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,aAAa;AACX,QAAI,KAAK,gBAAgB,OAAW,QAAO,KAAK;AAChD,UAAMC,IAAc,KAAK;AACzB,SAAK,cAAc;AAAA,MACjB,OAAOA,EAAY,MAAM,MAAM,CAAC;AAAA,MAChC,UAAUA,EAAY,SAAS,MAAM,CAAC;AAAA,MACtC,YAAY,CAAE;AAAA,IACpB;AACI,UAAMC,IAAa,KAAK,YAAY,OAC9BC,IAAgB,KAAK,YAAY,UACjCC,IAAW,KAAK,YAAY;AAGlC,aAASpP,IAAI,GAAGkL,IAAO,KAAK,MAAM,QAAQlL,IAAIkL,GAAMlL,KAAK;AACvD,YAAMjC,IAAO,KAAK,MAAMiC,CAAC,GACnBoN,IAAU,KAAK,SAASpN,CAAC,GACzBiC,IAAQiN,EAAW,QAAQnR,CAAI;AACrC,MAAIkE,MAAU,MACZiN,EAAW,KAAKnR,CAAI,GACpBoR,EAAc,KAAK/B,CAAO,KACrB+B,EAAclN,CAAK,KAAKmL;AAAA,IAChC;AAGD,UAAMiC,IAAa,CAAA,GACbC,IAAe,CAAA;AACrB,aAAStP,IAAI,GAAGkL,IAAOgE,EAAW,QAAQlP,IAAIkL,GAAMlL,KAAK;AACvD,UAAImP,EAAcnP,CAAC,MAAM,EAAG;AAC5B,YAAMjC,IAAOmR,EAAWlP,CAAC,GACnBuP,IAAOxR,EAAK;AAClB,UAAIuR,EAAa,QAAQC,CAAI,MAAM;AACnC,YAAIxR,EAAK,WAAY,CAAAsR,EAAW,KAAKE,CAAI;AAAA,aAAO;AAC9C,UAAID,EAAa,QAAQC,CAAI,MAAM,MAAID,EAAa,KAAKC,CAAI;AAC7D,gBAAMtN,IAAQoN,EAAW,QAAQtR,EAAK,IAAI;AAC1C,UAAIkE,MAAU,MAAIoN,EAAW,OAAOpN,GAAO,CAAC;AAAA,QAC7C;AAAA,IACF;AAGD,aAASjC,IAAI,GAAGkL,IAAOmE,EAAW,QAAQrP,IAAIkL,GAAMlL,KAAK;AACvD,YAAMwP,IAAKH,EAAWrP,CAAC,EAAE;AACzB,MAAIoP,EAAS,QAAQI,CAAE,MAAM,MAAIJ,EAAS,KAAKI,CAAE;AAAA,IAClD;AACD,WAAO,KAAK;AAAA,EACb;AAAA;AAAA,EAGD,aAAa;AAEX,QAAI,KAAK,WAAY,QAAO;AAC5B,QAAI,KAAK,gBAAgB,OAAW,QAAO,KAAK;AAChD,UAAMC,IAAY,KAAK,YAAW,EAAG,YAC/BL,IAAW,KAAK,WAAU,EAAG;AACnC,YAAQM,GAAU,MAAI;AAAA,MACpB,KAAK,SACH;AAIE,cAAMC,IAAYF,EAAU,WAAW,GACjCG,IAAWR,EAAS,WAAW;AACrC,aAAK,cAAcO,MAAcC;AACjC;AAAA,MACD;AAAA,MACH,KAAK,gBACH;AAKE,YAAIC,GACAC;AACJ,QAAIL,EAAU,SAASL,EAAS,UAC9BS,IAAQJ,EAAU,QAClBK,IAAOV,EAAS,WAEhBS,IAAQT,EAAS,QACjBU,IAAOL,EAAU,SAEnB,KAAK,cAAcK,MAASJ,GAAU,iBAAiBG,IAAQC;AAC/D;AAAA,MACD;AAAA,MACH,KAAK,OACH;AAIE,cAAMC,IAAO,KAAK,IAAIN,EAAU,SAASL,EAAS,MAAM;AACxD,aAAK,cAAcW,IAAO,MAAM;AAChC;AAAA,MACD;AAAA,MACH,KAAK,cACH;AAGE,cAAMC,IAAgB,CAAAC,MAAOA,EAAI,WAAW,KAAKA,EAAI,CAAC,EAAE;AACxD,aAAK,cAAcD,EAAcP,CAAS,MAAMO,EAAcZ,CAAQ;AACtE;AAAA,MACD;AAAA,MACH;AACE,cAAM,IAAI,MAAM,qCAAqCM,GAAU,IAAI,EAAE;AAAA,IACxE;AACD,WAAO,KAAK;AAAA,EACb;AACH;AAEA,MAAMQ,GAAO;AAAA,EACX,YAAYC,GAAUZ,GAAMa,GAAY;AACtC,QAAI,CAAC,MAAM,QAAQD,CAAQ,KAAKA,EAAS,WAAW;AAClD,YAAM,IAAI,MAAM,uDAAuD;AAKzE,QAHA,KAAK,OAAOZ,GACZ,KAAK,aAAaa,GAClB,KAAK,WAAW,IACZ,OAAOD,EAAS,CAAC,EAAE,CAAC,KAAM,YAAY,OAAOA,EAAS,CAAC,EAAE,CAAC,KAAM;AAClE,YAAM,IAAI,MAAM,uDAAuD;AAEzE,UAAME,IAAa3H,GAAQ,MAAMyH,EAAS,CAAC,EAAE,CAAC,GAAGA,EAAS,CAAC,EAAE,CAAC,CAAC;AAC/D,SAAK,OAAO;AAAA,MACV,IAAI;AAAA,QACF,GAAGE,EAAW;AAAA,QACd,GAAGA,EAAW;AAAA,MACf;AAAA,MACD,IAAI;AAAA,QACF,GAAGA,EAAW;AAAA,QACd,GAAGA,EAAW;AAAA,MACf;AAAA,IACP;AACI,QAAIC,IAAYD;AAChB,aAASrQ,IAAI,GAAGkL,IAAOiF,EAAS,QAAQnQ,IAAIkL,GAAMlL,KAAK;AACrD,UAAI,OAAOmQ,EAASnQ,CAAC,EAAE,CAAC,KAAM,YAAY,OAAOmQ,EAASnQ,CAAC,EAAE,CAAC,KAAM;AAClE,cAAM,IAAI,MAAM,uDAAuD;AAEzE,UAAIrC,IAAQ+K,GAAQ,MAAMyH,EAASnQ,CAAC,EAAE,CAAC,GAAGmQ,EAASnQ,CAAC,EAAE,CAAC,CAAC;AAExD,MAAIrC,EAAM,MAAM2S,EAAU,KAAK3S,EAAM,MAAM2S,EAAU,MACrD,KAAK,SAAS,KAAK1F,GAAQ,SAAS0F,GAAW3S,GAAO,IAAI,CAAC,GACvDA,EAAM,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAM,IACjDA,EAAM,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAM,IACjDA,EAAM,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAM,IACjDA,EAAM,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAM,IACrD2S,IAAY3S;AAAA,IACb;AAED,KAAI0S,EAAW,MAAMC,EAAU,KAAKD,EAAW,MAAMC,EAAU,MAC7D,KAAK,SAAS,KAAK1F,GAAQ,SAAS0F,GAAWD,GAAY,IAAI,CAAC;AAAA,EAEnE;AAAA,EACD,iBAAiB;AACf,UAAME,IAAc,CAAA;AACpB,aAASvQ,IAAI,GAAGkL,IAAO,KAAK,SAAS,QAAQlL,IAAIkL,GAAMlL,KAAK;AAC1D,YAAMwQ,IAAU,KAAK,SAASxQ,CAAC;AAC/B,MAAAuQ,EAAY,KAAKC,EAAQ,MAAM,GAC/BD,EAAY,KAAKC,EAAQ,OAAO;AAAA,IACjC;AACD,WAAOD;AAAA,EACR;AACH;AACA,MAAME,GAAO;AAAA,EACX,YAAYC,GAAUC,GAAW;AAC/B,QAAI,CAAC,MAAM,QAAQD,CAAQ;AACzB,YAAM,IAAI,MAAM,uDAAuD;AAEzE,SAAK,eAAe,IAAIR,GAAOQ,EAAS,CAAC,GAAG,MAAM,EAAI,GAEtD,KAAK,OAAO;AAAA,MACV,IAAI;AAAA,QACF,GAAG,KAAK,aAAa,KAAK,GAAG;AAAA,QAC7B,GAAG,KAAK,aAAa,KAAK,GAAG;AAAA,MAC9B;AAAA,MACD,IAAI;AAAA,QACF,GAAG,KAAK,aAAa,KAAK,GAAG;AAAA,QAC7B,GAAG,KAAK,aAAa,KAAK,GAAG;AAAA,MAC9B;AAAA,IACP,GACI,KAAK,gBAAgB;AACrB,aAAS1Q,IAAI,GAAGkL,IAAOwF,EAAS,QAAQ1Q,IAAIkL,GAAMlL,KAAK;AACrD,YAAMjC,IAAO,IAAImS,GAAOQ,EAAS1Q,CAAC,GAAG,MAAM,EAAK;AAChD,MAAIjC,EAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAK,KAAK,GAAG,IAC/DA,EAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAK,KAAK,GAAG,IAC/DA,EAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAK,KAAK,GAAG,IAC/DA,EAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAK,KAAK,GAAG,IACnE,KAAK,cAAc,KAAKA,CAAI;AAAA,IAC7B;AACD,SAAK,YAAY4S;AAAA,EAClB;AAAA,EACD,iBAAiB;AACf,UAAMJ,IAAc,KAAK,aAAa,eAAc;AACpD,aAASvQ,IAAI,GAAGkL,IAAO,KAAK,cAAc,QAAQlL,IAAIkL,GAAMlL,KAAK;AAC/D,YAAM4Q,IAAkB,KAAK,cAAc5Q,CAAC,EAAE,eAAc;AAC5D,eAAShC,IAAI,GAAG6S,IAAOD,EAAgB,QAAQ5S,IAAI6S,GAAM7S;AACvD,QAAAuS,EAAY,KAAKK,EAAgB5S,CAAC,CAAC;AAAA,IAEtC;AACD,WAAOuS;AAAA,EACR;AACH;AACA,MAAMO,GAAY;AAAA,EAChB,YAAYvT,GAAMwT,GAAW;AAC3B,QAAI,CAAC,MAAM,QAAQxT,CAAI;AACrB,YAAM,IAAI,MAAM,uDAAuD;AAEzE,QAAI;AAEF,MAAI,OAAOA,EAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAM,aAAUA,IAAO,CAACA,CAAI;AAAA,IACpD,QAAY;AAAA,IAGZ;AACD,SAAK,QAAQ,IACb,KAAK,OAAO;AAAA,MACV,IAAI;AAAA,QACF,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,MACX;AAAA,MACD,IAAI;AAAA,QACF,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,MACX;AAAA,IACP;AACI,aAASyC,IAAI,GAAGkL,IAAO3N,EAAK,QAAQyC,IAAIkL,GAAMlL,KAAK;AACjD,YAAMuP,IAAO,IAAIkB,GAAOlT,EAAKyC,CAAC,GAAG,IAAI;AACrC,MAAIuP,EAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAK,KAAK,GAAG,IAC/DA,EAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAK,KAAK,GAAG,IAC/DA,EAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAK,KAAK,GAAG,IAC/DA,EAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,MAAG,KAAK,KAAK,GAAG,IAAIA,EAAK,KAAK,GAAG,IACnE,KAAK,MAAM,KAAKA,CAAI;AAAA,IACrB;AACD,SAAK,YAAYwB;AAAA,EAClB;AAAA,EACD,iBAAiB;AACf,UAAMR,IAAc,CAAA;AACpB,aAASvQ,IAAI,GAAGkL,IAAO,KAAK,MAAM,QAAQlL,IAAIkL,GAAMlL,KAAK;AACvD,YAAMgR,IAAkB,KAAK,MAAMhR,CAAC,EAAE,eAAc;AACpD,eAAShC,IAAI,GAAG6S,IAAOG,EAAgB,QAAQhT,IAAI6S,GAAM7S;AACvD,QAAAuS,EAAY,KAAKS,EAAgBhT,CAAC,CAAC;AAAA,IAEtC;AACD,WAAOuS;AAAA,EACR;AACH;AAEA,MAAMU,GAAQ;AAAA;AAAA;AAAA,EAGZ,OAAO,QAAQC,GAAa;AAC1B,UAAMC,IAAW,CAAA;AACjB,aAASnR,IAAI,GAAGkL,IAAOgG,EAAY,QAAQlR,IAAIkL,GAAMlL,KAAK;AACxD,YAAMwQ,IAAUU,EAAYlR,CAAC;AAC7B,UAAI,CAACwQ,EAAQ,WAAY,KAAIA,EAAQ,QAAS;AAC9C,UAAIY,IAAY,MACZC,IAAQb,EAAQ,QAChB5E,IAAY4E,EAAQ;AACxB,YAAMjF,IAAS,CAAC8F,CAAK,GACfC,IAAgBD,EAAM,OACtBE,IAAkB,CAAA;AAGxB,aACEH,IAAYC,GACZA,IAAQzF,GACRL,EAAO,KAAK8F,CAAK,GAGbA,EAAM,UAAUC;AACpB,mBAAa;AACX,gBAAME,IAAeH,EAAM;AAI3B,cAAIG,EAAa,WAAW,GAAG;AAC7B,kBAAMC,IAAUlG,EAAO,CAAC,EAAE,OACpBmG,IAASnG,EAAOA,EAAO,SAAS,CAAC,EAAE;AACzC,kBAAM,IAAI,MAAM,+CAA+CkG,EAAQ,CAAC,KAAUA,EAAQ,CAAC,2CAAgDC,EAAO,CAAC,KAAKA,EAAO,CAAC,IAAI;AAAA,UACrK;AAGD,cAAIF,EAAa,WAAW,GAAG;AAC7B,YAAA5F,IAAY4F,EAAa,CAAC,EAAE;AAC5B;AAAA,UACD;AAGD,cAAIG,IAAU;AACd,mBAAS3T,IAAI,GAAG6S,IAAOU,EAAgB,QAAQvT,IAAI6S,GAAM7S;AACvD,gBAAIuT,EAAgBvT,CAAC,EAAE,UAAUqT,EAAM,OAAO;AAC5C,cAAAM,IAAU3T;AACV;AAAA,YACD;AAGH,cAAI2T,MAAY,MAAM;AACpB,kBAAMC,IAAiBL,EAAgB,OAAOI,CAAO,EAAE,CAAC,GAClDE,IAAatG,EAAO,OAAOqG,EAAe,KAAK;AACrD,YAAAC,EAAW,QAAQA,EAAW,CAAC,EAAE,OAAO,GACxCV,EAAS,KAAK,IAAIF,GAAQY,EAAW,QAAS,CAAA,CAAC;AAC/C;AAAA,UACD;AAED,UAAAN,EAAgB,KAAK;AAAA,YACnB,OAAOhG,EAAO;AAAA,YACd,OAAO8F,EAAM;AAAA,UACzB,CAAW;AAED,gBAAMpR,IAAaoR,EAAM,sBAAsBD,CAAS;AACxD,UAAAxF,IAAY4F,EAAa,KAAKvR,CAAU,EAAE,CAAC,EAAE;AAC7C;AAAA,QACD;AAEH,MAAAkR,EAAS,KAAK,IAAIF,GAAQ1F,CAAM,CAAC;AAAA,IAClC;AACD,WAAO4F;AAAA,EACR;AAAA,EACD,YAAY5F,GAAQ;AAClB,SAAK,SAASA;AACd,aAASvL,IAAI,GAAGkL,IAAOK,EAAO,QAAQvL,IAAIkL,GAAMlL;AAC9C,MAAAuL,EAAOvL,CAAC,EAAE,QAAQ,UAAU;AAE9B,SAAK,OAAO;AAAA,EACb;AAAA,EACD,UAAU;AAER,QAAI8R,IAAS,KAAK,OAAO,CAAC,EAAE;AAC5B,UAAMC,IAAS,CAACD,CAAM;AACtB,aAAS9R,IAAI,GAAGkL,IAAO,KAAK,OAAO,SAAS,GAAGlL,IAAIkL,GAAMlL,KAAK;AAC5D,YAAM2J,IAAK,KAAK,OAAO3J,CAAC,EAAE,OACpBgS,IAAS,KAAK,OAAOhS,IAAI,CAAC,EAAE;AAClC,MAAI6I,GAAoBc,GAAImI,GAAQE,CAAM,MAAM,MAChDD,EAAO,KAAKpI,CAAE,GACdmI,IAASnI;AAAA,IACV;AAGD,QAAIoI,EAAO,WAAW,EAAG,QAAO;AAGhC,UAAMpI,IAAKoI,EAAO,CAAC,GACbC,IAASD,EAAO,CAAC;AACvB,IAAIlJ,GAAoBc,GAAImI,GAAQE,CAAM,MAAM,KAAGD,EAAO,SAC1DA,EAAO,KAAKA,EAAO,CAAC,CAAC;AACrB,UAAMzS,IAAO,KAAK,eAAgB,IAAG,IAAI,IACnC2S,IAAS,KAAK,eAAc,IAAK,IAAIF,EAAO,SAAS,GACrDG,IAAO,KAAK,eAAc,IAAKH,EAAO,SAAS,IAC/CI,IAAgB,CAAA;AACtB,aAASnS,IAAIiS,GAAQjS,KAAKkS,GAAMlS,KAAKV,EAAM,CAAA6S,EAAc,KAAK,CAACJ,EAAO/R,CAAC,EAAE,GAAG+R,EAAO/R,CAAC,EAAE,CAAC,CAAC;AACxF,WAAOmS;AAAA,EACR;AAAA,EACD,iBAAiB;AACf,QAAI,KAAK,oBAAoB,QAAW;AACtC,YAAMC,IAAY,KAAK;AACvB,WAAK,kBAAkBA,IAAY,CAACA,EAAU,eAAgB,IAAG;AAAA,IAClE;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,gBAAgB;AACd,WAAI,KAAK,mBAAmB,WAC1B,KAAK,iBAAiB,KAAK,uBAEtB,KAAK;AAAA,EACb;AAAA;AAAA,EAGD,qBAAqB;AAGnB,QAAIC,IAAc,KAAK,OAAO,CAAC;AAC/B,aAASrS,IAAI,GAAGkL,IAAO,KAAK,OAAO,QAAQlL,IAAIkL,GAAMlL,KAAK;AACxD,YAAMmL,IAAM,KAAK,OAAOnL,CAAC;AACzB,MAAI0K,GAAW,QAAQ2H,GAAalH,CAAG,IAAI,MAAGkH,IAAclH;AAAA,IAC7D;AACD,QAAImH,IAAUD,EAAY,QAAQ,aAAY,GAC1CE,IAAcD,IAAUA,EAAQ,aAAY,IAAK;AACrD,eAAa;AAEX,UAAI,CAACA,EAAS,QAAO;AAIrB,UAAI,CAACC,EAAa,QAAOD,EAAQ;AAKjC,UAAIC,EAAY,YAAYD,EAAQ;AAClC,eAAIC,EAAY,QAAQ,cAAa,MAAOD,EAAQ,UAC3CA,EAAQ,UACHA,EAAQ,QAAQ;AAKhC,MAAAA,IAAUC,EAAY,gBACtBA,IAAcD,IAAUA,EAAQ,aAAY,IAAK;AAAA,IAClD;AAAA,EACF;AACH;AACA,MAAME,GAAQ;AAAA,EACZ,YAAYC,GAAc;AACxB,SAAK,eAAeA,GACpBA,EAAa,OAAO,MACpB,KAAK,gBAAgB;EACtB;AAAA,EACD,YAAY1U,GAAM;AAChB,SAAK,cAAc,KAAKA,CAAI,GAC5BA,EAAK,OAAO;AAAA,EACb;AAAA,EACD,UAAU;AACR,UAAMR,IAAO,CAAC,KAAK,aAAa,QAAS,CAAA;AAEzC,QAAIA,EAAK,CAAC,MAAM,KAAM,QAAO;AAC7B,aAASyC,IAAI,GAAGkL,IAAO,KAAK,cAAc,QAAQlL,IAAIkL,GAAMlL,KAAK;AAC/D,YAAM0S,IAAW,KAAK,cAAc1S,CAAC,EAAE,QAAO;AAE9C,MAAI0S,MAAa,QACjBnV,EAAK,KAAKmV,CAAQ;AAAA,IACnB;AACD,WAAOnV;AAAA,EACR;AACH;AACA,MAAMoV,GAAa;AAAA,EACjB,YAAY3F,GAAO;AACjB,SAAK,QAAQA,GACb,KAAK,QAAQ,KAAK,cAAcA,CAAK;AAAA,EACtC;AAAA,EACD,UAAU;AACR,UAAMzP,IAAO,CAAA;AACb,aAASyC,IAAI,GAAGkL,IAAO,KAAK,MAAM,QAAQlL,IAAIkL,GAAMlL,KAAK;AACvD,YAAM4S,IAAW,KAAK,MAAM5S,CAAC,EAAE,QAAO;AAEtC,MAAI4S,MAAa,QACjBrV,EAAK,KAAKqV,CAAQ;AAAA,IACnB;AACD,WAAOrV;AAAA,EACR;AAAA,EACD,cAAcyP,GAAO;AACnB,UAAM6F,IAAQ,CAAA;AACd,aAAS7S,IAAI,GAAGkL,IAAO8B,EAAM,QAAQhN,IAAIkL,GAAMlL,KAAK;AAClD,YAAMjC,IAAOiP,EAAMhN,CAAC;AACpB,UAAI,CAAAjC,EAAK;AACT,YAAIA,EAAK,eAAc,EAAI,CAAA8U,EAAM,KAAK,IAAIL,GAAQzU,CAAI,CAAC;AAAA,aAAO;AAC5D,gBAAM+U,IAAgB/U,EAAK;AAC3B,UAAK+U,EAAc,QAAMD,EAAM,KAAK,IAAIL,GAAQM,CAAa,CAAC,GAC9DA,EAAc,KAAK,YAAY/U,CAAI;AAAA,QACpC;AAAA,IACF;AACD,WAAO8U;AAAA,EACR;AACH;AAaA,MAAME,GAAU;AAAA,EACd,YAAYC,GAAO;AACjB,QAAI/S,IAAa,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI2K,GAAQ;AAC7F,SAAK,QAAQoI,GACb,KAAK,OAAO,IAAI1K,GAAUrI,CAAU,GACpC,KAAK,WAAW;EACjB;AAAA,EACD,QAAQoR,GAAO;AACb,UAAMb,IAAUa,EAAM,SAChB7C,IAAY,CAAA;AAIlB,QAAI6C,EAAM;AACR,aAAIA,EAAM,SAAQ,KAAK,MAAM,OAAOA,EAAM,OAAO,IAAO,KAAK,KAAK,OAAOb,CAAO,GACzEhC;AAET,UAAMjO,IAAO8Q,EAAM,SAAS,KAAK,KAAK,IAAIb,CAAO,IAAI,KAAK,KAAK,KAAKA,CAAO;AAC3E,QAAI,CAACjQ,EAAM,OAAM,IAAI,MAAM,2BAA2BiQ,EAAQ,EAAE,KAAUA,EAAQ,OAAO,MAAM,CAAC,KAAKA,EAAQ,OAAO,MAAM,CAAC,SAAcA,EAAQ,QAAQ,MAAM,CAAC,KAAKA,EAAQ,QAAQ,MAAM,CAAC,sBAA2B;AACvN,QAAIhI,IAAWjI,GACXkI,IAAWlI,GACX+R,GACAW;AAGJ,WAAOX,MAAY;AACjB,MAAA9J,IAAW,KAAK,KAAK,KAAKA,CAAQ,GAC9BA,MAAa,OAAM8J,IAAU,OAAc9J,EAAS,IAAI,eAAe,WAAW8J,IAAU9J,EAAS;AAI3G,WAAOyK,MAAY;AACjB,MAAAxK,IAAW,KAAK,KAAK,KAAKA,CAAQ,GAC9BA,MAAa,OAAMwK,IAAU,OAAcxK,EAAS,IAAI,eAAe,WAAWwK,IAAUxK,EAAS;AAE3G,QAAI4I,EAAM,QAAQ;AAEhB,UAAI6B,IAAiB;AACrB,UAAIZ,GAAS;AACX,cAAMa,IAAYb,EAAQ,gBAAgB9B,CAAO;AACjD,YAAI2C,MAAc,SACX3C,EAAQ,aAAa2C,CAAS,MAAGD,IAAiBC,IACnD,CAACb,EAAQ,aAAaa,CAAS,IAAG;AACpC,gBAAMC,IAAqB,KAAK,aAAad,GAASa,CAAS;AAC/D,mBAASnT,IAAI,GAAGkL,IAAOkI,EAAmB,QAAQpT,IAAIkL,GAAMlL;AAC1D,YAAAwO,EAAU,KAAK4E,EAAmBpT,CAAC,CAAC;AAAA,QAEvC;AAAA,MAEJ;AAGD,UAAIqT,IAAiB;AACrB,UAAIJ,GAAS;AACX,cAAMK,IAAYL,EAAQ,gBAAgBzC,CAAO;AACjD,YAAI8C,MAAc,SACX9C,EAAQ,aAAa8C,CAAS,MAAGD,IAAiBC,IACnD,CAACL,EAAQ,aAAaK,CAAS,IAAG;AACpC,gBAAMF,IAAqB,KAAK,aAAaH,GAASK,CAAS;AAC/D,mBAAStT,IAAI,GAAGkL,IAAOkI,EAAmB,QAAQpT,IAAIkL,GAAMlL;AAC1D,YAAAwO,EAAU,KAAK4E,EAAmBpT,CAAC,CAAC;AAAA,QAEvC;AAAA,MAEJ;AAKD,UAAIkT,MAAmB,QAAQG,MAAmB,MAAM;AACtD,YAAIE,IAAa;AACjB,QAAIL,MAAmB,OAAMK,IAAaF,IAAwBA,MAAmB,OAAME,IAAaL,IAEtGK,IADqB7I,GAAW,cAAcwI,GAAgBG,CAAc,KAC/C,IAAIH,IAAiBG,GAKpD,KAAK,MAAM,OAAO7C,EAAQ,OAAO,GACjChC,EAAU,KAAKgC,EAAQ,OAAO;AAC9B,cAAM4C,IAAqB5C,EAAQ,MAAM+C,CAAU;AACnD,iBAASvT,IAAI,GAAGkL,IAAOkI,EAAmB,QAAQpT,IAAIkL,GAAMlL;AAC1D,UAAAwO,EAAU,KAAK4E,EAAmBpT,CAAC,CAAC;AAAA,MAEvC;AACD,MAAIwO,EAAU,SAAS,KAIrB,KAAK,KAAK,OAAOgC,CAAO,GACxBhC,EAAU,KAAK6C,CAAK,MAGpB,KAAK,SAAS,KAAKb,CAAO,GAC1BA,EAAQ,OAAO8B;AAAA,IAEvB,OAAW;AAKL,UAAIA,KAAWW,GAAS;AACtB,cAAMO,IAAQlB,EAAQ,gBAAgBW,CAAO;AAC7C,YAAIO,MAAU,MAAM;AAClB,cAAI,CAAClB,EAAQ,aAAakB,CAAK,GAAG;AAChC,kBAAMJ,IAAqB,KAAK,aAAad,GAASkB,CAAK;AAC3D,qBAASxT,IAAI,GAAGkL,IAAOkI,EAAmB,QAAQpT,IAAIkL,GAAMlL;AAC1D,cAAAwO,EAAU,KAAK4E,EAAmBpT,CAAC,CAAC;AAAA,UAEvC;AACD,cAAI,CAACiT,EAAQ,aAAaO,CAAK,GAAG;AAChC,kBAAMJ,IAAqB,KAAK,aAAaH,GAASO,CAAK;AAC3D,qBAASxT,IAAI,GAAGkL,IAAOkI,EAAmB,QAAQpT,IAAIkL,GAAMlL;AAC1D,cAAAwO,EAAU,KAAK4E,EAAmBpT,CAAC,CAAC;AAAA,UAEvC;AAAA,QACF;AAAA,MACF;AACD,WAAK,KAAK,OAAOwQ,CAAO;AAAA,IACzB;AACD,WAAOhC;AAAA,EACR;AAAA;AAAA;AAAA,EAID,aAAaQ,GAAKrF,GAAI;AAKpB,SAAK,KAAK,OAAOqF,CAAG;AACpB,UAAMjC,IAAUiC,EAAI;AACpB,SAAK,MAAM,OAAOjC,CAAO;AACzB,UAAMyB,IAAYQ,EAAI,MAAMrF,CAAE;AAC9B,WAAA6E,EAAU,KAAKzB,CAAO,GAElBiC,EAAI,eAAe,UAAW,KAAK,KAAK,IAAIA,CAAG,GAC5CR;AAAA,EACR;AACH;AAGA,MAAMiF,KAAkC,OAAO,UAAY,OAAe,QAAQ,IAAI,mCAAmC,KACnHC,KAA0C,OAAO,UAAY,OAAe,QAAQ,IAAI,2CAA2C;AACzI,MAAMC,GAAU;AAAA,EACd,IAAIC,GAAMrW,GAAMsW,GAAW;AACzB,IAAAnE,GAAU,OAAOkE,GACjBlL,GAAQ,MAAK;AAGb,UAAMoL,IAAa,CAAC,IAAIhD,GAAYvT,GAAM,EAAI,CAAC;AAC/C,aAASyC,IAAI,GAAGkL,IAAO2I,EAAU,QAAQ7T,IAAIkL,GAAMlL;AACjD,MAAA8T,EAAW,KAAK,IAAIhD,GAAY+C,EAAU7T,CAAC,GAAG,EAAK,CAAC;AAQtD,QANA0P,GAAU,gBAAgBoE,EAAW,QAMjCpE,GAAU,SAAS,cAAc;AAEnC,YAAMqE,IAAUD,EAAW,CAAC;AAC5B,UAAI9T,IAAI;AACR,aAAOA,IAAI8T,EAAW;AACpB,QAAInM,GAAemM,EAAW9T,CAAC,EAAE,MAAM+T,EAAQ,IAAI,MAAM,OAAM/T,MAAS8T,EAAW,OAAO9T,GAAG,CAAC;AAAA,IAEjG;AAKD,QAAI0P,GAAU,SAAS;AAGrB,eAAS1P,IAAI,GAAGkL,IAAO4I,EAAW,QAAQ9T,IAAIkL,GAAMlL,KAAK;AACvD,cAAMgU,IAAMF,EAAW9T,CAAC;AACxB,iBAAShC,IAAIgC,IAAI,GAAG6Q,IAAOiD,EAAW,QAAQ9V,IAAI6S,GAAM7S;AACtD,cAAI2J,GAAeqM,EAAI,MAAMF,EAAW9V,CAAC,EAAE,IAAI,MAAM,KAAM,QAAO;MAErE;AAIH,UAAMgV,IAAQ,IAAI1K,GAAUoC,GAAW,OAAO;AAC9C,aAAS1K,IAAI,GAAGkL,IAAO4I,EAAW,QAAQ9T,IAAIkL,GAAMlL,KAAK;AACvD,YAAMuQ,IAAcuD,EAAW9T,CAAC,EAAE,eAAc;AAChD,eAAShC,IAAI,GAAG6S,IAAON,EAAY,QAAQvS,IAAI6S,GAAM7S;AAEnD,YADAgV,EAAM,OAAOzC,EAAYvS,CAAC,CAAC,GACvBgV,EAAM,OAAOS;AAEf,gBAAM,IAAI,MAAM,wFAA6F;AAAA,IAGlH;AAGD,UAAMQ,IAAY,IAAIlB,GAAUC,CAAK;AACrC,QAAIkB,IAAgBlB,EAAM,MACtBzS,IAAOyS,EAAM;AACjB,WAAOzS,KAAM;AACX,YAAM4K,IAAM5K,EAAK;AACjB,UAAIyS,EAAM,SAASkB,GAAe;AAEhC,cAAMlF,IAAM7D,EAAI;AAChB,cAAM,IAAI,MAAM,mBAAmBA,EAAI,SAAS,SAAS,OAAO,gBAAqBA,EAAI,MAAM,CAAC,KAAKA,EAAI,MAAM,CAAC,mBAAmB6D,EAAI,EAAE,KAAUA,EAAI,OAAO,MAAM,CAAC,KAAKA,EAAI,OAAO,MAAM,CAAC,SAAcA,EAAI,QAAQ,MAAM,CAAC,KAAKA,EAAI,QAAQ,MAAM,CAAC,eAAe;AAAA,MACrQ;AACD,UAAIgE,EAAM,OAAOS;AAEf,cAAM,IAAI,MAAM,4EAAiF;AAEnG,UAAIQ,EAAU,SAAS,SAASP;AAE9B,cAAM,IAAI,MAAM,sFAA2F;AAE7G,YAAMlF,IAAYyF,EAAU,QAAQ9I,CAAG;AACvC,eAASnL,IAAI,GAAGkL,IAAOsD,EAAU,QAAQxO,IAAIkL,GAAMlL,KAAK;AACtD,cAAMmL,IAAMqD,EAAUxO,CAAC;AACvB,QAAImL,EAAI,eAAe,UAAW6H,EAAM,OAAO7H,CAAG;AAAA,MACnD;AACD,MAAA+I,IAAgBlB,EAAM,MACtBzS,IAAOyS,EAAM;IACd;AAGD,IAAAtK,GAAQ,MAAK;AAGb,UAAMyI,IAAWF,GAAQ,QAAQgD,EAAU,QAAQ;AAEnD,WADe,IAAItB,GAAaxB,CAAQ,EAC1B;EACf;AACH;AAGA,MAAMzB,KAAY,IAAIiE,MAEhBQ,KAAQ,SAAU5W,GAAM;AAC5B,WAAS6W,IAAO,UAAU,QAAQP,IAAY,IAAI,MAAMO,IAAO,IAAIA,IAAO,IAAI,CAAC,GAAGC,IAAO,GAAGA,IAAOD,GAAMC;AACvG,IAAAR,EAAUQ,IAAO,CAAC,IAAI,UAAUA,CAAI;AAEtC,SAAO3E,GAAU,IAAI,SAASnS,GAAMsW,CAAS;AAC/C,GACMS,KAAe,SAAU/W,GAAM;AACnC,WAASgX,IAAQ,UAAU,QAAQV,IAAY,IAAI,MAAMU,IAAQ,IAAIA,IAAQ,IAAI,CAAC,GAAGC,IAAQ,GAAGA,IAAQD,GAAOC;AAC7G,IAAAX,EAAUW,IAAQ,CAAC,IAAI,UAAUA,CAAK;AAExC,SAAO9E,GAAU,IAAI,gBAAgBnS,GAAMsW,CAAS;AACtD,GACMY,KAAM,SAAUlX,GAAM;AAC1B,WAASmX,IAAQ,UAAU,QAAQb,IAAY,IAAI,MAAMa,IAAQ,IAAIA,IAAQ,IAAI,CAAC,GAAGC,IAAQ,GAAGA,IAAQD,GAAOC;AAC7G,IAAAd,EAAUc,IAAQ,CAAC,IAAI,UAAUA,CAAK;AAExC,SAAOjF,GAAU,IAAI,OAAOnS,GAAMsW,CAAS;AAC7C,GACMe,KAAa,SAAUC,GAAa;AACxC,WAASC,IAAQ,UAAU,QAAQC,IAAgB,IAAI,MAAMD,IAAQ,IAAIA,IAAQ,IAAI,CAAC,GAAGE,IAAQ,GAAGA,IAAQF,GAAOE;AACjH,IAAAD,EAAcC,IAAQ,CAAC,IAAI,UAAUA,CAAK;AAE5C,SAAOtF,GAAU,IAAI,cAAcmF,GAAaE,CAAa;AAC/D;AACA,IAAI9S,KAAQ;AAAA,EACV,OAAOkS;AAAAA,EACP,cAAcG;AAAA,EACd,KAAKG;AAAA,EACL,YAAYG;AACd;ACv/CA,SAASK,GAAUC,GAASC,GAAUC,GAAkB;AACtD,MAAIF,MAAY;AAGhB,aADIlX,GAAGqX,GAAGlV,GAAGmV,GAAUC,GAAOC,GAAQC,GAAyBC,IAAa,GAAGC,IAAa,GAAGC,GAAsBhC,IAAOsB,EAAQ,MAAMW,IAAsBjC,MAAS,qBAAqBkC,IAAYlC,MAAS,WAAWmC,IAAOF,IAAsBX,EAAQ,SAAS,SAAS,GAC5Qc,IAAe,GAAGA,IAAeD,GAAMC,KAAgB;AAC9D,MAAAP,IAA0BI,IAAsBX,EAAQ,SAASc,CAAY,EAAE,WAAWF,IAAYZ,EAAQ,WAAWA,GACzHU,IAAuBH,IAA0BA,EAAwB,SAAS,uBAAuB,IACzGF,IAAQK,IAAuBH,EAAwB,WAAW,SAAS;AAC3E,eAASQ,IAAY,GAAGA,IAAYV,GAAOU,KAAa;AACtD,YAAIC,IAAoB,GACpBC,IAAgB;AAEpB,YADAb,IAAWM,IAAuBH,EAAwB,WAAWQ,CAAS,IAAIR,GAC9EH,MAAa,MAEjB;AAAA,UAAAE,IAASF,EAAS;AAClB,cAAIc,IAAWd,EAAS;AAExB,kBADAI,IAA+F,GACvFU,GAAQ;AAAA,YACd,KAAK;AACH;AAAA,YACF,KAAK;AACH,kBAAIjB;AAAA,gBACFK;AAAA,gBACAG;AAAA,gBACAK;AAAA,gBACAE;AAAA,gBACAC;AAAA,cACZ,MAAgB;AACJ,uBAAO;AACT,cAAAR,KACAO;AACA;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,mBAAKlY,IAAI,GAAGA,IAAIwX,EAAO,QAAQxX,KAAK;AAClC,oBAAImX;AAAA,kBACFK,EAAOxX,CAAC;AAAA,kBACR2X;AAAA,kBACAK;AAAA,kBACAE;AAAA,kBACAC;AAAA,gBACd,MAAkB;AACJ,yBAAO;AACT,gBAAAR,KACIS,MAAa,gBACfF;AAAA,cACH;AACD,cAAIE,MAAa,gBACfF;AACF;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,mBAAKlY,IAAI,GAAGA,IAAIwX,EAAO,QAAQxX,KAAK;AAClC,qBAAKqX,IAAI,GAAGA,IAAIG,EAAOxX,CAAC,EAAE,SAAS0X,GAAYL,KAAK;AAClD,sBAAIF;AAAA,oBACFK,EAAOxX,CAAC,EAAEqX,CAAC;AAAA,oBACXM;AAAA,oBACAK;AAAA,oBACAE;AAAA,oBACAC;AAAA,kBAChB,MAAoB;AACJ,2BAAO;AACT,kBAAAR;AAAA,gBACD;AACD,gBAAIS,MAAa,qBACfF,KACEE,MAAa,aACfD;AAAA,cACH;AACD,cAAIC,MAAa,aACfF;AACF;AAAA,YACF,KAAK;AACH,mBAAKlY,IAAI,GAAGA,IAAIwX,EAAO,QAAQxX,KAAK;AAElC,qBADAmY,IAAgB,GACXd,IAAI,GAAGA,IAAIG,EAAOxX,CAAC,EAAE,QAAQqX,KAAK;AACrC,uBAAKlV,IAAI,GAAGA,IAAIqV,EAAOxX,CAAC,EAAEqX,CAAC,EAAE,SAASK,GAAYvV,KAAK;AACrD,wBAAIgV;AAAA,sBACFK,EAAOxX,CAAC,EAAEqX,CAAC,EAAElV,CAAC;AAAA,sBACdwV;AAAA,sBACAK;AAAA,sBACAE;AAAA,sBACAC;AAAA,oBAClB,MAAsB;AACJ,6BAAO;AACT,oBAAAR;AAAA,kBACD;AACD,kBAAAQ;AAAA,gBACD;AACD,gBAAAD;AAAA,cACD;AACD;AAAA,YACF,KAAK;AACH,mBAAKlY,IAAI,GAAGA,IAAIsX,EAAS,WAAW,QAAQtX;AAC1C,oBAAIiX,GAAUK,EAAS,WAAWtX,CAAC,GAAGmX,CAA0B,MAAM;AACpE,yBAAO;AACX;AAAA,YACF;AACE,oBAAM,IAAI,MAAM,uBAAuB;AAAA,UAC1C;AAAA;AAAA,MACF;AAAA,IACF;AACH;AA8CA,SAASkB,GAAYnB,GAASC,GAAU;AACtC,MAAID,EAAQ,SAAS;AACnB,IAAAC,EAASD,GAAS,CAAC;AAAA,WACVA,EAAQ,SAAS;AAC1B,aAASlV,IAAI,GAAGA,IAAIkV,EAAQ,SAAS,UAC/BC,EAASD,EAAQ,SAASlV,CAAC,GAAGA,CAAC,MAAM,IADEA;AAC3C;AAIN;AAkBA,SAASsW,GAASpB,GAASC,GAAU;AACnC,MAAInV,GAAGhC,GAAGkB,GAAGoW,GAAUC,GAAOE,GAAyBG,GAAsBW,GAAmBC,GAAaC,GAAWT,IAAe,GAAGH,IAAsBX,EAAQ,SAAS,qBAAqBY,IAAYZ,EAAQ,SAAS,WAAWa,IAAOF,IAAsBX,EAAQ,SAAS,SAAS;AACrS,OAAKlV,IAAI,GAAGA,IAAI+V,GAAM/V,KAAK;AAOzB,SANAyV,IAA0BI,IAAsBX,EAAQ,SAASlV,CAAC,EAAE,WAAW8V,IAAYZ,EAAQ,WAAWA,GAC9GqB,IAAoBV,IAAsBX,EAAQ,SAASlV,CAAC,EAAE,aAAa8V,IAAYZ,EAAQ,aAAa,IAC5GsB,IAAcX,IAAsBX,EAAQ,SAASlV,CAAC,EAAE,OAAO8V,IAAYZ,EAAQ,OAAO,QAC1FuB,IAAYZ,IAAsBX,EAAQ,SAASlV,CAAC,EAAE,KAAK8V,IAAYZ,EAAQ,KAAK,QACpFU,IAAuBH,IAA0BA,EAAwB,SAAS,uBAAuB,IACzGF,IAAQK,IAAuBH,EAAwB,WAAW,SAAS,GACtEvW,IAAI,GAAGA,IAAIqW,GAAOrW,KAAK;AAE1B,UADAoW,IAAWM,IAAuBH,EAAwB,WAAWvW,CAAC,IAAIuW,GACtEH,MAAa,MAAM;AACrB,YAAIH;AAAA,UACF;AAAA,UACAa;AAAA,UACAO;AAAA,UACAC;AAAA,UACAC;AAAA,QACV,MAAc;AACJ,iBAAO;AACT;AAAA,MACD;AACD,cAAQnB,EAAS,MAAI;AAAA,QACnB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,gBAAgB;AACnB,cAAIH;AAAA,YACFG;AAAA,YACAU;AAAA,YACAO;AAAA,YACAC;AAAA,YACAC;AAAA,UACZ,MAAgB;AACJ,mBAAO;AACT;AAAA,QACD;AAAA,QACD,KAAK,sBAAsB;AACzB,eAAKzY,IAAI,GAAGA,IAAIsX,EAAS,WAAW,QAAQtX;AAC1C,gBAAImX;AAAA,cACFG,EAAS,WAAWtX,CAAC;AAAA,cACrBgY;AAAA,cACAO;AAAA,cACAC;AAAA,cACAC;AAAA,YACd,MAAkB;AACJ,qBAAO;AAEX;AAAA,QACD;AAAA,QACD;AACE,gBAAM,IAAI,MAAM,uBAAuB;AAAA,MAC1C;AAAA,IACF;AACD,IAAAT;AAAA,EACD;AACH;ACvOA,SAAS7B,GAAMjW,GAAUT,IAAU,IAAI;AACrC,QAAMiZ,IAAQ,CAAA;AAId,MAHAJ,GAASpY,GAAU,CAACX,MAAS;AAC3B,IAAAmZ,EAAM,KAAKnZ,EAAK,WAAW;AAAA,EAC/B,CAAG,GACGmZ,EAAM,SAAS;AACjB,UAAM,IAAI,MAAM,iCAAiC;AAEnD,QAAMC,IAAUC,GAAgB,MAAMF,EAAM,CAAC,GAAG,GAAGA,EAAM,MAAM,CAAC,CAAC;AACjE,SAAIC,EAAQ,WAAW,IACd,OACLA,EAAQ,WAAW,IACd7Y,GAAQ6Y,EAAQ,CAAC,GAAGlZ,EAAQ,UAAU,IAEtCW,GAAauY,GAASlZ,EAAQ,UAAU;AACnD;AACA,IAAIoZ,KAAqB1C;ACnBlB,SAAS2C,KAAO;AAAE;AAsClB,SAASC,GAAIlV,GAAI;AACvB,SAAOA,EAAE;AACV;AAEO,SAASmV,KAAe;AAC9B,SAAO,uBAAO,OAAO,IAAI;AAC1B;AAMO,SAASC,GAAQC,GAAK;AAC5B,EAAAA,EAAI,QAAQH,EAAG;AAChB;AAMO,SAASI,GAAYC,GAAO;AAClC,SAAO,OAAOA,KAAU;AACzB;AAGO,SAASC,GAAexX,GAAGC,GAAG;AACpC,SAAOD,KAAKA,IAAIC,KAAKA,IAAID,MAAMC,KAAMD,KAAK,OAAOA,KAAM,YAAa,OAAOA,KAAM;AAClF;AAsDO,SAASyX,GAASC,GAAK;AAC7B,SAAO,OAAO,KAAKA,CAAG,EAAE,WAAW;AACpC;ACoBO,SAASC,GAAOC,GAAQlX,GAAM;AACpC,EAAAkX,EAAO,YAAYlX,CAAI;AACxB;AA8FO,SAASD,GAAOmX,GAAQlX,GAAMmX,GAAQ;AAC5C,EAAAD,EAAO,aAAalX,GAAMmX,KAAU,IAAI;AACzC;AAoBO,SAASC,GAAOpX,GAAM;AAC5B,EAAIA,EAAK,cACRA,EAAK,WAAW,YAAYA,CAAI;AAElC;AAwDO,SAASqX,GAAYC,GAAM;AACjC,SAAO,SAAS,gBAAgB,8BAA8BA,CAAI;AACnE;AAgGO,SAASC,GAAKvX,GAAMwX,GAAWC,GAAO;AAC5C,EAAIA,KAAS,OAAMzX,EAAK,gBAAgBwX,CAAS,IACxCxX,EAAK,aAAawX,CAAS,MAAMC,KAAOzX,EAAK,aAAawX,GAAWC,CAAK;AACpF;AAgMO,SAASC,GAASC,GAAS;AACjC,SAAO,MAAM,KAAKA,EAAQ,UAAU;AACrC;AAkYO,SAASC,GAAaD,GAASL,GAAMO,GAAQ;AAEnD,EAAAF,EAAQ,UAAU,OAAOL,GAAM,CAAC,CAACO,CAAM;AACxC;AC1+BO,IAAIC;AAGJ,SAASC,GAAsBC,GAAW;AAChD,EAAAF,KAAoBE;AACrB;ACJO,MAAMC,KAAmB,CAAA,GAEnBC,KAAoB,CAAA;AAEjC,IAAIC,KAAmB,CAAA;AAEvB,MAAMC,KAAkB,CAAA,GAElBC,KAAmC,wBAAQ;AAEjD,IAAIC,KAAmB;AAGhB,SAASC,KAAkB;AACjC,EAAKD,OACJA,KAAmB,IACnBD,GAAiB,KAAKG,EAAK;AAE7B;AASO,SAASC,GAAoBnX,GAAI;AACvC,EAAA6W,GAAiB,KAAK7W,CAAE;AACzB;AAyBA,MAAMoX,KAAiB,oBAAI;AAE3B,IAAIC,KAAW;AAGR,SAASH,KAAQ;AAIvB,MAAIG,OAAa;AAChB;AAED,QAAMC,IAAkBd;AACxB,KAAG;AAGF,QAAI;AACH,aAAOa,KAAWV,GAAiB,UAAQ;AAC1C,cAAMD,IAAYC,GAAiBU,EAAQ;AAC3C,QAAAA,MACAZ,GAAsBC,CAAS,GAC/Ba,GAAOb,EAAU,EAAE;AAAA,MACnB;AAAA,IACD,SAAQ/Y,GAAG;AAEX,YAAAgZ,GAAiB,SAAS,GAC1BU,KAAW,GACL1Z;AAAA,IACN;AAID,SAHA8Y,GAAsB,IAAI,GAC1BE,GAAiB,SAAS,GAC1BU,KAAW,GACJT,GAAkB,SAAQ,CAAAA,GAAkB,IAAK,EAAA;AAIxD,aAASzY,IAAI,GAAGA,IAAI0Y,GAAiB,QAAQ1Y,KAAK,GAAG;AACpD,YAAMmV,IAAWuD,GAAiB1Y,CAAC;AACnC,MAAKiZ,GAAe,IAAI9D,CAAQ,MAE/B8D,GAAe,IAAI9D,CAAQ,GAC3BA;IAED;AACD,IAAAuD,GAAiB,SAAS;AAAA,EAC5B,SAAUF,GAAiB;AAC1B,SAAOG,GAAgB;AACtB,IAAAA,GAAgB,IAAG;AAEpB,EAAAE,KAAmB,IACnBI,GAAe,MAAK,GACpBX,GAAsBa,CAAe;AACtC;AAGA,SAASC,GAAOC,GAAI;AACnB,MAAIA,EAAG,aAAa,MAAM;AACzB,IAAAA,EAAG,OAAM,GACTpC,GAAQoC,EAAG,aAAa;AACxB,UAAMC,IAAQD,EAAG;AACjB,IAAAA,EAAG,QAAQ,CAAC,EAAE,GACdA,EAAG,YAAYA,EAAG,SAAS,EAAEA,EAAG,KAAKC,CAAK,GAC1CD,EAAG,aAAa,QAAQL,EAAmB;AAAA,EAC3C;AACF;AAOO,SAASO,GAAuBrC,GAAK;AAC3C,QAAMsC,IAAW,CAAA,GACXC,IAAU,CAAA;AAChB,EAAAf,GAAiB,QAAQ,CAAC1S,MAAOkR,EAAI,QAAQlR,CAAC,MAAM,KAAKwT,EAAS,KAAKxT,CAAC,IAAIyT,EAAQ,KAAKzT,CAAC,CAAE,GAC5FyT,EAAQ,QAAQ,CAACzT,MAAMA,EAAG,CAAA,GAC1B0S,KAAmBc;AACpB;ACnGA,MAAME,KAAW,oBAAI;AA+Bd,SAASC,GAAcC,GAAOC,GAAO;AAC3C,EAAID,KAASA,EAAM,MAClBF,GAAS,OAAOE,CAAK,GACrBA,EAAM,EAAEC,CAAK;AAEf;AC9BO,SAASC,GAAgBvB,GAAWd,GAAQC,GAAQ;AAC1D,QAAM,EAAE,UAAAqC,GAAU,cAAAC,MAAiBzB,EAAU;AAC7C,EAAAwB,KAAYA,EAAS,EAAEtC,GAAQC,CAAM,GAErCsB,GAAoB,MAAM;AACzB,UAAMiB,IAAiB1B,EAAU,GAAG,SAAS,IAAIxB,EAAG,EAAE,OAAOI,EAAW;AAIxE,IAAIoB,EAAU,GAAG,aAChBA,EAAU,GAAG,WAAW,KAAK,GAAG0B,CAAc,IAI9ChD,GAAQgD,CAAc,GAEvB1B,EAAU,GAAG,WAAW;EAC1B,CAAE,GACDyB,EAAa,QAAQhB,EAAmB;AACzC;AAGO,SAASkB,GAAkB3B,GAAW4B,GAAW;AACvD,QAAMd,IAAKd,EAAU;AACrB,EAAIc,EAAG,aAAa,SACnBE,GAAuBF,EAAG,YAAY,GACtCpC,GAAQoC,EAAG,UAAU,GACrBA,EAAG,YAAYA,EAAG,SAAS,EAAEc,CAAS,GAGtCd,EAAG,aAAaA,EAAG,WAAW,MAC9BA,EAAG,MAAM;AAEX;AAGA,SAASe,GAAW7B,GAAWvY,GAAG;AACjC,EAAIuY,EAAU,GAAG,MAAM,CAAC,MAAM,OAC7BC,GAAiB,KAAKD,CAAS,GAC/BO,MACAP,EAAU,GAAG,MAAM,KAAK,CAAC,IAE1BA,EAAU,GAAG,MAAOvY,IAAI,KAAM,CAAC,KAAK,KAAKA,IAAI;AAC9C;AAaO,SAASqa,GACf9B,GACA9a,GACA6c,GACAC,GACAC,GACAC,GACAC,IAAgB,MAChBpB,IAAQ,CAAC,EAAE,GACV;AACD,QAAMqB,IAAmBtC;AACzB,EAAAC,GAAsBC,CAAS;AAE/B,QAAMc,IAAMd,EAAU,KAAK;AAAA,IAC1B,UAAU;AAAA,IACV,KAAK,CAAE;AAAA;AAAA,IAEP,OAAAkC;AAAA,IACA,QAAQ3D;AAAAA,IACR,WAAA0D;AAAA,IACA,OAAOxD,GAAc;AAAA;AAAA,IAErB,UAAU,CAAE;AAAA,IACZ,YAAY,CAAE;AAAA,IACd,eAAe,CAAE;AAAA,IACjB,eAAe,CAAE;AAAA,IACjB,cAAc,CAAE;AAAA,IAChB,SAAS,IAAI,IAAIvZ,EAAQ,YAAYkd,IAAmBA,EAAiB,GAAG,UAAU,CAAA,EAAG;AAAA;AAAA,IAEzF,WAAW3D,GAAc;AAAA,IACzB,OAAAsC;AAAA,IACA,YAAY;AAAA,IACZ,MAAM7b,EAAQ,UAAUkd,EAAiB,GAAG;AAAA,EAC9C;AACC,EAAAD,KAAiBA,EAAcrB,EAAG,IAAI;AACtC,MAAIuB,IAAQ;AAgBZ,MAfAvB,EAAG,MAAMiB,IACNA,EAAS/B,GAAW9a,EAAQ,SAAS,CAAE,GAAE,CAACuC,GAAG6a,MAAQC,MAAS;AAC9D,UAAM9C,IAAQ8C,EAAK,SAASA,EAAK,CAAC,IAAID;AACtC,WAAIxB,EAAG,OAAOmB,EAAUnB,EAAG,IAAIrZ,CAAC,GAAIqZ,EAAG,IAAIrZ,CAAC,IAAIgY,CAAK,MAChD,CAACqB,EAAG,cAAcA,EAAG,MAAMrZ,CAAC,KAAGqZ,EAAG,MAAMrZ,CAAC,EAAEgY,CAAK,GAChD4C,KAAOR,GAAW7B,GAAWvY,CAAC,IAE5B6a;AAAA,EACX,CAAK,IACD,IACHxB,EAAG,OAAM,GACTuB,IAAQ,IACR3D,GAAQoC,EAAG,aAAa,GAExBA,EAAG,WAAWkB,IAAkBA,EAAgBlB,EAAG,GAAG,IAAI,IACtD5b,EAAQ,QAAQ;AACnB,QAAIA,EAAQ,SAAS;AAIpB,YAAMsd,IAAQ9C,GAASxa,EAAQ,MAAM;AACrC,MAAA4b,EAAG,YAAYA,EAAG,SAAS,EAAE0B,CAAK,GAClCA,EAAM,QAAQpD,EAAM;AAAA,IACvB;AAEG,MAAA0B,EAAG,YAAYA,EAAG,SAAS,EAAC;AAE7B,IAAI5b,EAAQ,SAAOkc,GAAcpB,EAAU,GAAG,QAAQ,GACtDuB,GAAgBvB,GAAW9a,EAAQ,QAAQA,EAAQ,MAAM,GAEzDsb;EACA;AACD,EAAAT,GAAsBqC,CAAgB;AACvC;AAmSO,MAAMK,GAAgB;AAAA,EAAtB;AAQN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAC,GAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,GAAA;AAAA;AAAA;AAAA,EAGA,WAAW;AACV,IAAAf,GAAkB,MAAM,CAAC,GACzB,KAAK,WAAWpD;AAAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,IAAIlD,GAAMuB,GAAU;AACnB,QAAI,CAACgC,GAAYhC,CAAQ;AACxB,aAAO2B;AAER,UAAMoE,IAAY,KAAK,GAAG,UAAUtH,CAAI,MAAM,KAAK,GAAG,UAAUA,CAAI,IAAI,CAAE;AAC1E,WAAAsH,EAAU,KAAK/F,CAAQ,GAChB,MAAM;AACZ,YAAMlT,IAAQiZ,EAAU,QAAQ/F,CAAQ;AACxC,MAAIlT,MAAU,MAAIiZ,EAAU,OAAOjZ,GAAO,CAAC;AAAA,IAC9C;AAAA,EACE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,KAAKwY,GAAO;AACX,IAAI,KAAK,SAAS,CAACnD,GAASmD,CAAK,MAChC,KAAK,GAAG,aAAa,IACrB,KAAK,MAAMA,CAAK,GAChB,KAAK,GAAG,aAAa;AAAA,EAEtB;AACF;ACrfO,MAAMU,KAAiB;ACP1B,OAAO,SAAW,QAEpB,OAAO,aAAa,OAAO,WAAW,EAAE,GAAG,oBAAI,IAAK,EAAA,IAAK,EAAE,IAAIA,EAAc;;;;;kvBCCtErD,GAAAsD,GAAA,SAAAC;AAAA,MAAA7Z,EAAc,CAAA,MAAA,SAAS,KAAK,MAAS,0FAG9B2W;AAAA,QAAAiD;AAAA,QAAA;AAAA;AAAA,QAAA5Z,SAAc;AAAA,MAAM,GACjB2W;AAAA,QAAAiD;AAAA,QAAA;AAAA;AAAA,QAAA5Z,SAAc;AAAA,MAAM;AAAA;;AALvC,MAAAlB,GAWKmX,GAAA2D,GAAA1D,CAAA,GAJHF,GAGC4D,GAAAE,CAAA;AAAA;;AATM,MAAAhC;AAAA,MAAA,KAAA+B,OAAAA;AAAA,MAAA7Z,EAAc,CAAA,MAAA,SAAS,KAAK;WAGrB2W;AAAA,QAAAiD;AAAA,QAAA;AAAA;AAAA,QAAA5Z,SAAc;AAAA,MAAM;WACjB2W;AAAA,QAAAiD;AAAA,QAAA;AAAA;AAAA,QAAA5Z,SAAc;AAAA,MAAM;AAAA;;;;;;;;;QAR1B,WAAA+Z,EAA0C,IAAAC;;;;;;;;;;ACCvD,SAAS9T,GAAKwN,GAASzX,IAAU,IAAI;AACnC,MAAIyX,EAAQ,QAAQ,QAAiBzX,EAAQ,cAAjB;AAC1B,WAAOyX,EAAQ;AAEjB,QAAMuG,IAAS,CAAC,OAAU,OAAU,QAAW,MAAS;AACxD,SAAAxG,GAAUC,GAAS,CAAC3M,MAAU;AAC5B,IAAIkT,EAAO,CAAC,IAAIlT,EAAM,CAAC,MACrBkT,EAAO,CAAC,IAAIlT,EAAM,CAAC,IAEjBkT,EAAO,CAAC,IAAIlT,EAAM,CAAC,MACrBkT,EAAO,CAAC,IAAIlT,EAAM,CAAC,IAEjBkT,EAAO,CAAC,IAAIlT,EAAM,CAAC,MACrBkT,EAAO,CAAC,IAAIlT,EAAM,CAAC,IAEjBkT,EAAO,CAAC,IAAIlT,EAAM,CAAC,MACrBkT,EAAO,CAAC,IAAIlT,EAAM,CAAC;AAAA,EAEzB,CAAG,GACMkT;AACT;ACnBA,SAASC,GAAOxG,GAASzX,IAAU,IAAI;AACrC,QAAMke,IAAMjU,GAAKwN,CAAO,GAClB9T,KAAKua,EAAI,CAAC,IAAIA,EAAI,CAAC,KAAK,GACxB1c,KAAK0c,EAAI,CAAC,IAAIA,EAAI,CAAC,KAAK;AAC9B,SAAOhe,GAAM,CAACyD,GAAGnC,CAAC,GAAGxB,EAAQ,YAAYA,CAAO;AAClD;;;;;;;ACRA,GAAC,SAASuB,GAAEQ,GAAE;AAAsD,IAAAoc,EAAe,UAAApc,EAAC;AAAA,EAAiH,GAAEqc,IAAM,WAAU;AAAc,aAAS7c,EAAEA,GAAEQ,GAAE;AAAC,UAAG,EAAER,aAAaQ,GAAG,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAC;AAAC,aAASA,EAAER,GAAEQ,GAAE;AAAC,eAAQJ,IAAE,GAAEA,IAAEI,EAAE,QAAOJ,KAAI;AAAC,YAAIY,IAAER,EAAEJ,CAAC;AAAE,QAAAY,EAAE,aAAWA,EAAE,cAAY,IAAGA,EAAE,eAAa,IAAG,WAAUA,MAAIA,EAAE,WAAS,KAAI,OAAO,eAAehB,GAAEgB,EAAE,KAAIA,CAAC;AAAA,MAAC;AAAA,IAAC;AAAC,aAASZ,EAAEJ,GAAEI,GAAEY,GAAE;AAAC,aAAOZ,KAAGI,EAAER,EAAE,WAAUI,CAAC,GAAEY,KAAGR,EAAER,GAAEgB,CAAC,GAAEhB;AAAA,IAAC;AAAC,aAASgB,EAAEhB,GAAEQ,GAAE;AAAC,UAAe,OAAOA,KAAnB,cAA6BA,MAAP,KAAS,OAAM,IAAI,UAAU,oDAAoD;AAAE,MAAAR,EAAE,YAAU,OAAO,OAAOQ,KAAGA,EAAE,WAAU,EAAC,aAAY,EAAC,OAAMR,GAAE,UAAS,IAAG,cAAa,GAAE,EAAC,CAAC,GAAEQ,KAAGsc,EAAE9c,GAAEQ,CAAC;AAAA,IAAC;AAAC,aAASY,EAAEpB,GAAE;AAAC,aAAOoB,IAAE,OAAO,iBAAe,OAAO,iBAAe,SAAS,GAAE;AAAC,eAAO,EAAE,aAAW,OAAO,eAAe,CAAC;AAAA,MAAC,GAAEA,EAAEpB,CAAC;AAAA,IAAC;AAAC,aAAS8c,EAAE9c,GAAEQ,GAAE;AAAC,aAAOsc,IAAE,OAAO,kBAAgB,SAAS9c,GAAEQ,GAAE;AAAC,eAAOR,EAAE,YAAUQ,GAAER;AAAA,MAAC,GAAE8c,EAAE9c,GAAEQ,CAAC;AAAA,IAAC;AAAC,aAASK,IAAG;AAA6D,UAA5C,OAAO,UAApB,OAA6B,CAAC,QAAQ,aAAsB,QAAQ,UAAU,KAAK,QAAM;AAAG,UAAe,OAAO,SAAnB,WAAyB,QAAM;AAAG,UAAG;AAAC,eAAO,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAQ,IAAI,WAAU;AAAA,QAAE,CAAA,CAAE,GAAE;AAAA,MAAE,QAAS;AAAC,eAAM;AAAA,MAAE;AAAA,IAAC;AAAC,aAASkc,EAAE/c,GAAEQ,GAAEJ,GAAE;AAAC,aAAO2c,IAAElc,MAAI,QAAQ,YAAU,SAASb,GAAEQ,GAAEJ,GAAE;AAAC,YAAIY,IAAE,CAAC,IAAI;AAAE,QAAAA,EAAE,KAAK,MAAMA,GAAER,CAAC;AAAE,YAAIY,IAAE,KAAI,SAAS,KAAK,MAAMpB,GAAEgB,CAAC;AAAG,eAAOZ,KAAG0c,EAAE1b,GAAEhB,EAAE,SAAS,GAAEgB;AAAA,MAAC,GAAE2b,EAAE,MAAM,MAAK,SAAS;AAAA,IAAC;AAAC,aAAS5W,EAAEnG,GAAE;AAAC,UAAIQ,IAAc,OAAO,OAAnB,aAAuB,oBAAI,QAAI;AAAO,aAAO2F,IAAE,SAASnG,GAAE;AAAC,YAAUA,MAAP,SAAW,IAAEA,GAAO,SAAS,SAAS,KAAK,CAAC,EAAE,QAAQ,eAAe,MAAtD,IAAyD,QAAOA;AAAE,YAAI;AAAE,YAAe,OAAOA,KAAnB,WAAqB,OAAM,IAAI,UAAU,oDAAoD;AAAE,YAAYQ,MAAT,QAAW;AAAC,cAAGA,EAAE,IAAIR,CAAC,EAAE,QAAOQ,EAAE,IAAIR,CAAC;AAAE,UAAAQ,EAAE,IAAIR,GAAE,CAAC;AAAA,QAAC;AAAC,iBAAS,IAAG;AAAC,iBAAO+c,EAAE/c,GAAE,WAAUoB,EAAE,IAAI,EAAE,WAAW;AAAA,QAAC;AAAC,eAAO,EAAE,YAAU,OAAO,OAAOpB,EAAE,WAAU,EAAC,aAAY,EAAC,OAAM,GAAE,YAAW,IAAG,UAAS,IAAG,cAAa,GAAE,EAAC,CAAC,GAAE8c,EAAE,GAAE9c,CAAC;AAAA,MAAC,GAAEmG,EAAEnG,CAAC;AAAA,IAAC;AAAC,aAASmB,EAAEnB,GAAE;AAAC,UAAYA,MAAT,OAAW,OAAM,IAAI,eAAe,2DAA2D;AAAE,aAAOA;AAAA,IAAC;AAAC,aAASgd,EAAEhd,GAAEQ,GAAE;AAAC,UAAGA,MAAc,OAAOA,KAAjB,YAAgC,OAAOA,KAAnB,YAAsB,QAAOA;AAAE,UAAYA,MAAT,OAAW,OAAM,IAAI,UAAU,0DAA0D;AAAE,aAAOW,EAAEnB,CAAC;AAAA,IAAC;AAAC,aAASgH,EAAEhH,GAAE;AAAC,UAAIQ,IAAEK;AAAI,aAAO,WAAU;AAAC,YAAIT,GAAEY,IAAEI,EAAEpB,CAAC;AAAE,YAAGQ,GAAE;AAAC,cAAIsc,IAAE1b,EAAE,IAAI,EAAE;AAAY,UAAAhB,IAAE,QAAQ,UAAUY,GAAE,WAAU8b,CAAC;AAAA,QAAC,MAAM,CAAA1c,IAAEY,EAAE,MAAM,MAAK,SAAS;AAAE,eAAOgc,EAAE,MAAK5c,CAAC;AAAA,MAAC;AAAA,IAAC;AAAC,aAAS6c,EAAEjd,GAAEQ,GAAEJ,GAAE;AAAC,aAAO6c,IAAe,OAAO,UAApB,OAA6B,QAAQ,MAAI,QAAQ,MAAI,SAASjd,GAAEQ,GAAEJ,GAAE;AAAC,YAAIY,IAAE,SAAShB,GAAEQ,GAAE;AAAC,iBAAK,CAAC,OAAO,UAAU,eAAe,KAAKR,GAAEQ,CAAC,MAAWR,IAAEoB,EAAEpB,CAAC,OAAb,OAAiB;AAAC,iBAAOA;AAAA,QAAC,EAAEA,GAAEQ,CAAC;AAAE,YAAGQ,GAAE;AAAC,cAAI8b,IAAE,OAAO,yBAAyB9b,GAAER,CAAC;AAAE,iBAAOsc,EAAE,MAAIA,EAAE,IAAI,KAAK1c,CAAC,IAAE0c,EAAE;AAAA,QAAK;AAAA,MAAC,GAAEG,EAAEjd,GAAEQ,GAAEJ,KAAGJ,CAAC;AAAA,IAAC;AAAC,aAASK,EAAEL,GAAE;AAAC,aAAO,SAAS,GAAE;AAAC,YAAG,MAAM,QAAQ,CAAC,EAAE,QAAOC,EAAE,CAAC;AAAA,MAAC,EAAED,CAAC,KAAG,SAAS,GAAE;AAAC,YAAgB,OAAO,SAApB,OAAkC,EAAE,OAAO,QAAQ,KAAvB,QAAgC,EAAE,YAAY,KAApB,KAAsB,QAAO,MAAM,KAAK,CAAC;AAAA,MAAC,EAAEA,CAAC,KAAGE,EAAEF,CAAC,KAAG,WAAU;AAAC,cAAM,IAAI,UAAU;AAAA,mFAAsI;AAAA,MAAC,EAAC;AAAA,IAAE;AAAC,aAASE,EAAEF,GAAEQ,GAAE;AAAC,UAAGR,GAAE;AAAC,YAAa,OAAOA,KAAjB,SAAmB,QAAOC,EAAED,GAAEQ,CAAC;AAAE,YAAIJ,IAAE,OAAO,UAAU,SAAS,KAAKJ,CAAC,EAAE,MAAM,GAAE,EAAE;AAAE,eAAiBI,MAAX,YAAcJ,EAAE,gBAAcI,IAAEJ,EAAE,YAAY,OAAcI,MAAR,SAAmBA,MAAR,QAAU,MAAM,KAAKJ,CAAC,IAAgBI,MAAd,eAAiB,2CAA2C,KAAKA,CAAC,IAAEH,EAAED,GAAEQ,CAAC,IAAE;AAAA,MAAM;AAAA,IAAC;AAAC,aAASP,EAAED,GAAEQ,GAAE;AAAC,OAAOA,KAAN,QAASA,IAAER,EAAE,YAAUQ,IAAER,EAAE;AAAQ,eAAQI,IAAE,GAAEY,IAAE,IAAI,MAAMR,CAAC,GAAEJ,IAAEI,GAAEJ,IAAI,CAAAY,EAAEZ,CAAC,IAAEJ,EAAEI,CAAC;AAAE,aAAOY;AAAA,IAAC;AAAC,aAASkC,EAAElD,GAAEQ,GAAE;AAAC,UAAIJ,IAAe,OAAO,SAApB,OAA4BJ,EAAE,OAAO,QAAQ,KAAGA,EAAE,YAAY;AAAE,UAAG,CAACI,GAAE;AAAC,YAAG,MAAM,QAAQJ,CAAC,MAAII,IAAEF,EAAEF,CAAC,MAAIQ,GAAgC;AAAC,UAAAJ,MAAIJ,IAAEI;AAAG,cAAIY,IAAE,GAAEI,IAAE,WAAU;AAAA,UAAE;AAAC,iBAAM,EAAC,GAAEA,GAAE,GAAE,WAAU;AAAC,mBAAOJ,KAAGhB,EAAE,SAAO,EAAC,MAAK,GAAE,IAAE,EAAC,MAAK,IAAG,OAAMA,EAAEgB,GAAG,EAAC;AAAA,UAAC,GAAE,GAAE,SAAShB,GAAE;AAAC,kBAAMA;AAAA,UAAC,GAAE,GAAEoB,EAAC;AAAA,QAAC;AAAC,cAAM,IAAI,UAAU;AAAA,mFAAuI;AAAA,MAAC;AAAC,UAAI,GAAEP,IAAE,IAAGkc,IAAE;AAAG,aAAM,EAAC,GAAE,WAAU;AAAC,QAAA3c,IAAEA,EAAE,KAAKJ,CAAC;AAAA,MAAC,GAAE,GAAE,WAAU;AAAC,YAAIA,IAAEI,EAAE,KAAM;AAAC,eAAOS,IAAEb,EAAE,MAAKA;AAAA,MAAC,GAAE,GAAE,SAASA,GAAE;AAAC,QAAA+c,IAAE,IAAG,IAAE/c;AAAA,MAAC,GAAE,GAAE,WAAU;AAAC,YAAG;AAAC,UAAAa,KAAST,EAAE,UAAR,QAAgBA,EAAE,OAAM;AAAA,QAAE,UAAC;AAAQ,cAAG2c,EAAE,OAAM;AAAA,QAAC;AAAA,MAAC,EAAC;AAAA,IAAC;AAAC,QAAIhd,IAAE,WAAU;AAAC,eAASS,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAc,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE;AAAC,aAAK,oBAAkB,GAAM,KAAK,sBAAT,MAA6B,KAAK,aAAWA,EAAE,aAAY,KAAK,oBAAkB,MAAI,KAAK,aAAWA,EAAE,YAAW,KAAK,cAAY,KAAK,IAAI,KAAK,iBAAiB,IAAG,KAAG,MAAI,KAAK,oBAAkB,IAAG,KAAK,eAAaA,EAAE,eAAa,KAAK,oBAAkBA,EAAE;AAAA,MAA0B,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,aAAK,aAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,aAAK,kBAAgB,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAe,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAiB,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,aAAK,eAAa;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,aAAK,cAAY;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,aAAK,iBAAe;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,oBAAkBA,EAAE,2BAA0B,KAAK,eAAaA,EAAE,WAAU,KAAK,aAAWA,EAAE,YAAW,KAAK,cAAYA,EAAE,qBAAoB,KAAK,iBAAe,IAAG,KAAK,kBAAgBA,EAAE,yBAA4B,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,oBAAoB,CAAC;AAAA,UAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,gBAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC;AAAE,iBAAK,oBAAoBZ,CAAC,GAAE,KAAK,eAAeY,CAAC;AAAA,UAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,gBAAII,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,iBAAK,oBAAoB3b,CAAC,GAAE,KAAK,eAAe,CAAC,GAAE,KAAK,aAAaP,CAAC,GAAE,KAAK,cAAckc,CAAC;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,KAAG,IAAE;AAAE,eAAO,IAAE,KAAK,IAAI,IAAE,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEvc;AAAA,IAAC,EAAC;AAAG,IAAAT,EAAE,YAAU,GAAEA,EAAE,WAAS,GAAEA,EAAE,aAAW,GAAEA,EAAE,aAAW,GAAEA,EAAE,aAAW,GAAEA,EAAE,aAAW,GAAEA,EAAE,4BAA0B,GAAEA,EAAE,sBAAoB,GAAEA,EAAE,0BAAwB;AAAI,QAAIqE,IAAE,SAAS5D,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,EAAEtc,GAAE;AAAC,YAAIJ;AAAE,eAAOJ,EAAE,MAAK8c,CAAC,IAAG1c,IAAEgB,EAAE,KAAK,MAAKZ,CAAC,GAAG,OAAK,OAAO,KAAK,EAAC,WAAUsc,EAAC,CAAC,EAAE,CAAC,GAAE1c;AAAA,MAAC;AAAC,aAAOA,EAAE0c,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAO,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAE3W,EAAE,KAAK,CAAC,GAAE+W,IAAE,SAAS1c,GAAE;AAAC,MAAAQ,EAAEI,GAAEZ,CAAC;AAAE,UAAIJ,IAAE4G,EAAE5F,CAAC;AAAE,eAASA,EAAEZ,GAAE;AAAC,YAAI;AAAE,eAAOR,EAAE,MAAKoB,CAAC,IAAG,IAAEhB,EAAE,KAAK,MAAKI,CAAC,GAAG,OAAK,OAAO,KAAK,EAAC,0BAAyBY,EAAC,CAAC,EAAE,CAAC,GAAE;AAAA,MAAC;AAAC,aAAOA;AAAA,IAAC,EAAEgD,CAAC,GAAEiS,IAAE,WAAU;AAAC,eAAS7V,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAA,MAAE,EAAA,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG;AAAC,aAAS4B,IAAG;AAAA;AAAE,aAAS+a,IAAG;AAAA,IAAA;AAAE,aAASC,IAAG;AAAA,IAAE;AAAA,QAAIlc,IAAEmc,IAAEC,IAAEC,IAAEC,GAAEC,IAAEC,IAAEC,IAAE7c,KAAE,WAAU;AAAC,eAASN,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,eAAO,KAAK,IAAI,IAAE,CAAC,KAAG;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,GAAGod,KAAE,WAAU;AAAC,eAASpd,EAAEJ,GAAEY,GAAE;AAAC,QAAAhB,EAAE,MAAKQ,CAAC,GAAE,KAAK,MAAIQ,KAAG,GAAE,KAAK,OAAKZ,KAAG;AAAA,MAAC;AAAC,aAAOA,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,YAAI,GAAE,IAAE;AAAG,aAAI,IAAE,YAAW,IAAE,GAAE,OAAK,EAAE,OAAI,EAAE,OAAK,OAAK,IAAE,MAAI;AAAI,aAAI,IAAE,YAAW,IAAE,GAAE,OAAK,EAAE,OAAI,EAAE,MAAI,OAAK,IAAE,MAAI;AAAI,eAAO;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC;AAAG,aAASqd,IAAG;AAAA;AAAE,aAASC,KAAG;AAAA,IAAE;AAAA,IAAAD,EAAE,MAAI,KAAIA,EAAE,QAAM,SAAS7d,GAAE;AAAC,aAAO,OAAO,MAAMA,CAAC;AAAA,IAAC,GAAE6d,EAAE,aAAW,SAAS7d,GAAE;AAAC,aAAM,CAAC,OAAO,SAASA,CAAC;AAAA,IAAC,GAAE6d,EAAE,YAAU,OAAO,WAAUA,EAAE,oBAAkB,OAAO,mBAAkBA,EAAE,oBAAkB,OAAO,mBAA8B,OAAO,gBAAnB,cAA6C,OAAO,cAAnB,cAA+BJ,KAAE,YAAWC,KAAE,IAAI,aAAa,CAAC,GAAEC,KAAE,IAAI,WAAWD,GAAE,MAAM,GAAEG,EAAE,mBAAiB,SAAS7d,GAAE;AAAC,MAAA0d,GAAE,CAAC,IAAE1d;AAAE,UAAIQ,IAAE,IAAEmd,GAAE,CAAC,GAAEvd,IAAE,IAAEud,GAAE,CAAC;AAAE,cAAOvd,IAAEqd,QAAKA,MAAO,UAAQrd,KAAQI,MAAJ,MAAQA,IAAE,GAAEJ,IAAE,aAAY,IAAIwd,GAAExd,GAAEI,CAAC;AAAA,IAAC,GAAEqd,EAAE,mBAAiB,SAAS7d,GAAE;AAAC,aAAO2d,GAAE,CAAC,IAAE3d,EAAE,KAAI2d,GAAE,CAAC,IAAE3d,EAAE,MAAK0d,GAAE,CAAC;AAAA,IAAC,MAAIxc,KAAE,MAAKmc,KAAE,KAAK,MAAKC,KAAE,KAAK,OAAMC,KAAE,KAAK,KAAIC,IAAE,WAAU;AAAC,eAAQxd,IAAE,IAAGA,IAAE,GAAEA,KAAI;AAAC,YAAIQ,IAAE+c,GAAE,GAAEvd,CAAC,IAAE;AAAE,YAAGsd,GAAED,GAAE7c,CAAC,CAAC,IAAE,MAAIR,EAAE,QAAOQ;AAAA,MAAC;AAAC,aAAO;AAAA,IAAC,EAAC,GAAGqd,EAAE,mBAAiB,SAAS7d,GAAE;AAAC,UAAIQ,GAAEJ,GAAEY,GAAEI,GAAE,GAAEP,GAAEkc,GAAE5W,GAAEhF;AAAE,UAAGnB,IAAE,KAAG,IAAEA,MAAI,OAAO,qBAAmBa,IAAE,KAAG,IAAGb,IAAE,CAACA,KAAGa,IAAE,GAAMb,MAAJ,EAAM,QAAO,IAAI4d,GAAEzX,IAAEtF,GAAEM,IAAE,CAAC;AAAE,UAAGnB,MAAI,MAAI,QAAO,IAAI4d,GAAEzX,IAAE,aAAWtF,GAAEM,IAAE,CAAC;AAAE,UAAGnB,KAAGA,EAAE,QAAO,IAAI4d,GAAEzX,IAAE,YAAWhF,IAAE,CAAC;AAAE,UAAGC,IAAE,GAAED,IAAE,IAAGX,IAAE8c,GAAEtd,CAAC,KAAG,EAAE,KAAGQ,KAAGgd,EAAE,EAACpc,IAAEkc,GAAED,GAAE7c,CAAC,CAAC,MAAI,MAAIW,IAAE,GAAEgF,IAAE3F,KAAG,KAAGY,IAAE,YAAUD,IAAEX,KAAGJ,IAAEmd,GAAE,GAAEvc,IAAEI,IAAE,EAAE,MAAI,KAAGJ,GAAEmF,IAAE3F,IAAEJ,IAAE;AAAA,UAAc,MAAIY,IAAER,GAAEW,IAAE,IAAOH,IAAEsc,GAAEld,IAAEY,IAAE,CAAC,OAAd,IAAkB,CAAAI,KAAID,OAAK,GAAEA,MAAI,IAAEgF,MAAI,IAAGA,OAAK,GAAE/F,MAAIY,MAAImF,KAAG;AAAQ,UAAG4W,IAAE3b,IAAEF,IAAE,IAAMV,MAAJ,GAAMA,IAAER,IAAEQ,GAAEY,IAAE,MAAQZ,MAAJ,EAAM,MAAIQ,IAAE,OAAI;AAAC,aAAIZ,IAAE,IAAEI,MAAI,KAAGA,IAAEJ,IAAE,GAAE,KAAG2c,KAAI,IAAE,OAAK/b,MAAI,GAAEA,KAAG,GAAEI,SAAOZ,IAAEJ,GAAE,IAAK,EAAE2c,KAAL,MAAS3b,KAAI,IAAE,OAAKJ,MAAI,GAAEI,OAAWA,MAAL,GAAO,CAAA+E,KAAGnF,GAAEA,IAAE;AAAA,iBAAeI,MAAL,IAAO;AAAC,UAAAD,KAAGH;AAAE;AAAA,QAAK;AAAC,YAAOZ,MAAJ,GAAM;AAAC,UAAAgB,IAAE,KAAG+E,KAAGnF,KAAG,KAAGI,IAAEA,IAAE,OAAKD,KAAGH,KAAG,KAAGI;AAAG;AAAA,QAAK;AAAA,MAAC;AAAC,aAAO+E,KAAG4W,KAAG,IAAG,IAAIa,GAAEzX,KAAGtF,GAAEM,CAAC;AAAA,IAAC,GAAE0c,EAAE,mBAAiB,SAAS7d,GAAE;AAAC,UAAIQ,GAAEJ,GAAEY,GAAEI,GAAE,IAAEpB,EAAE,MAAKa,IAAEb,EAAE,KAAI+c,IAAE,IAAE,KAAG,KAAG,KAAG;AAAE,WAAI/b,MAAI,aAAW,MAAI,MAAIE,IAAEE,IAAE,GAAEhB,IAAE,KAAG,IAAGI,IAAE,GAAEA,KAAG,IAAGA,IAAI,KAAEJ,MAAIgB,KAAGmc,GAAE,GAAE,CAAC/c,CAAC,IAAGJ,OAAK;AAAE,WAAIA,IAAE,KAAG,IAAGI,IAAE,IAAGA,KAAG,IAAGA,IAAI,CAAAK,IAAET,MAAIgB,KAAGmc,GAAE,GAAE,CAAC/c,CAAC,IAAGJ,OAAK;AAAE,UAAWY,MAAR,OAAU;AAAC,YAAOI,MAAJ,EAAM,QAAO,IAAE2b;AAAE,QAAA/b,IAAE;AAAA,MAAK,OAAK;AAAC,YAAUA,MAAP,KAAS,QAAWI,MAAJ,IAAM2b,IAAE,IAAE;AAAI,QAAA3b,KAAG;AAAA,MAAC;AAAC,aAAO2b,IAAE3b,IAAEmc,GAAE,GAAEvc,CAAC;AAAA,IAAC;AAAG,QAAIkF,KAAE,SAAS1F,GAAE;AAAC,MAAAQ,EAAEI,GAAEZ,CAAC;AAAE,UAAIJ,IAAE4G,EAAE5F,CAAC;AAAE,eAASA,EAAEZ,GAAE;AAAC,YAAI;AAAE,eAAOR,EAAE,MAAKoB,CAAC,IAAG,IAAEhB,EAAE,KAAK,MAAKI,CAAC,GAAG,OAAK,OAAO,KAAK,EAAC,kBAAiBY,EAAC,CAAC,EAAE,CAAC,GAAE;AAAA,MAAC;AAAC,aAAOA;AAAA,IAAC,EAAEgD,CAAC,GAAE2Z,KAAE,SAASvd,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,MAAK,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,CAAA5W,GAAE,aAAa,KAAK,IAAI;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIlG,IAAE,UAAU,CAAC;AAAE,UAAAkG,GAAE,aAAa,KAAK,MAAKlG,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE8c;AAAA,IAAC,EAAE5W,EAAC,GAAE8X,KAAE,WAAU;AAAC,eAASxd,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,CAAAA,EAAE,qBAAqB,IAAI;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,gBAAM,IAAIud,GAAE,6BAAkC,MAAP,OAAS,OAAK,IAAE,GAAG;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,UAAAvd,EAAE,OAAO,GAAE,IAAI;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC;AAAE,cAAG,CAACZ,EAAE,OAAaY,MAAP,OAAS,IAAI+c,OAAE,IAAIA,GAAE/c,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEZ,IAAE,UAAU,CAAC;AAAE,UAAAI,EAAE,OAAO,GAAEJ,GAAE,IAAI;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,cAAG,CAACA,EAAE,OAAOJ,CAAC,EAAE,OAAM,IAAI+c,GAAE,cAAY/c,IAAE,sBAAoBI,KAAU,MAAP,OAAS,OAAK,IAAE,GAAG;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,EAAG,GAACyd,KAAE,IAAI,YAAY,CAAC,GAAEC,KAAE,IAAI,aAAaD,EAAC,GAAEE,KAAE,IAAI,WAAWF,EAAC,GAAEG,IAAE,WAAU;AAAC,eAAS5d,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAOqd,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAEzd,GAAE;AAAC,gBAAO,GAAC;AAAA,UAAE,KAAKI,EAAE;AAAE,iBAAK,IAAEJ;AAAE;AAAA,UAAM,KAAKI,EAAE;AAAE,iBAAK,IAAEJ;AAAE;AAAA,UAAM,KAAKI,EAAE;AAAE,iBAAK,KAAKJ,CAAC;AAAE;AAAA,UAAM;AAAQ,kBAAM,IAAI8c,EAAE,6BAA2B,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,MAAI,EAAE,KAAG,KAAK,MAAI,EAAE;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAM,CAAC,CAACpc,GAAE,oBAAoB,KAAK,GAAE,EAAE,GAAE,CAAC,KAAG,CAAC,CAACA,GAAE,oBAAoB,KAAK,GAAE,EAAE,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,cAAM,IAAIoc,EAAE,6BAA2B1c,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,gBAAO,GAAG;AAAA,UAAA,KAAKA,EAAE;AAAE,mBAAO,KAAK;AAAA,UAAE,KAAKA,EAAE;AAAE,mBAAO,KAAK;AAAA,UAAE,KAAKA,EAAE;AAAE,mBAAO,KAAK,KAAI;AAAA,QAAE;AAAC,cAAM,IAAI0c,EAAE,6BAA2B,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,MAAI,EAAE,KAAG,KAAK,MAAI,EAAE,MAAI,KAAK,KAAM,MAAG,EAAE,UAAQW,EAAE,MAAM,KAAK,KAAI,CAAE,KAAGA,EAAE,MAAM,EAAE,KAAI,CAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,eAAO,aAAard,KAAG,KAAK,SAAS,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE;AAAC,eAAOM,GAAE,oBAAoB,KAAK,KAAI,GAAG,EAAE,KAAM,GAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,aAAK,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,IAAE,EAAE,IAAE,KAAG,KAAK,IAAE,EAAE,IAAE,IAAE,KAAK,IAAE,EAAE,IAAE,KAAG,KAAK,IAAE,EAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,aAAK,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAG;AAAC,iBAAO;AAAA,QAAI,SAAO,GAAE;AAAC,cAAG,aAAa,2BAA2B,QAAOkd,GAAE,qBAAqB,uDAAuD,GAAE;AAAK,gBAAM;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,IAAIxd,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,MAAI,KAAK,IAAE,OAAK,KAAK,IAAE,OAAK,KAAK,KAAI,IAAG;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,IAAE,EAAE,GAAE,IAAE,KAAK,IAAE,EAAE,GAAE,IAAE,KAAK,KAAM,IAAC,EAAE,KAAM;AAAC,eAAO,KAAK,KAAK,IAAE,IAAE,IAAE,IAAE,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,aAAK,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,IAAE,EAAE,GAAE,IAAE,KAAK,IAAE,EAAE;AAAE,eAAO,KAAK,KAAK,IAAE,IAAE,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAE;AAAG,eAAO,IAAE,MAAI,IAAE,KAAG,IAAEA,EAAE,SAAS,KAAK,CAAC,KAAGA,EAAE,SAAS,KAAK,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,aAAK,IAAE,EAAE,GAAE,KAAK,IAAE,EAAE,GAAE,KAAK,IAAE,EAAE,KAAI;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC4B,GAAE+a,GAAEC,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,IAAE,MAAK,KAAK,IAAE,MAAK,KAAK,IAAE,MAAS,UAAU,WAAd,EAAqB,CAAA5c,EAAE,aAAa,KAAK,MAAK,GAAE,CAAC;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,aAAa,KAAK,MAAK,EAAE,GAAE,EAAE,GAAE,EAAE,KAAI,CAAE;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC;AAAE,UAAAR,EAAE,aAAa,KAAK,MAAKJ,GAAEY,GAAER,EAAE,aAAa;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC;AAAE,eAAK,IAAEO,GAAE,KAAK,IAAE,GAAE,KAAK,IAAEP;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAOqd,GAAE,CAAC,IAAE,GAAEC,GAAE,CAAC,IAAEA,GAAE,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE3d;AAAA,IAAC,EAAG,GAACuF,KAAE,WAAU;AAAC,eAASvF,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,SAAS,GAAEJ,GAAE;AAAC,YAAIY,IAAER,EAAE,QAAQ,EAAE,GAAEJ,EAAE,CAAC;AAAE,YAAOY,MAAJ,EAAM,QAAOA;AAAE,YAAII,IAAEZ,EAAE,QAAQ,EAAE,GAAEJ,EAAE,CAAC;AAAE,eAAWgB,MAAJ,IAAMA,IAAE,KAAK,qBAAmB,IAAE,IAAEZ,EAAE,QAAQ,EAAE,KAAM,GAACJ,EAAE,KAAM,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC0d,EAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,oBAAkB,GAAM,UAAU,WAAd,EAAqB,CAAAtd,EAAE,aAAa,KAAK,MAAK,CAAC;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,cAAO,MAAJ,KAAW,MAAJ,EAAM,OAAM,IAAI0c,EAAE,yCAAyC;AAAE,eAAK,oBAAkB;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,IAAE,IAAE,KAAG,IAAE,IAAE,IAAEW,EAAE,MAAM,CAAC,IAAEA,EAAE,MAAM,CAAC,IAAE,IAAE,KAAGA,EAAE,MAAM,CAAC,IAAE,IAAE;AAAA,MAAC,EAAC,CAAC,CAAC,GAAErd;AAAA,IAAC,EAAC;AAAG,IAAA4d,EAAE,wBAAsBrY,IAAEqY,EAAE,gBAAcP,EAAE,KAAIO,EAAE,IAAE,GAAEA,EAAE,IAAE,GAAEA,EAAE,IAAE,GAAEA,EAAE,IAAE;AAAE,QAAIC,KAAE,WAAU;AAAC,eAAS7d,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,SAAQ,IAAG,KAAK,UAAS;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,YAAG,EAAE,aAAaA,GAAG,QAAM;AAAG,YAAIJ,IAAE;AAAE,eAAO,KAAK,OAAQ,IAACA,EAAE,WAAS,KAAK,UAAQA,EAAE,QAAO,KAAI,KAAK,UAAQA,EAAE,QAAO,KAAI,KAAK,UAAQA,EAAE,QAAS,KAAE,KAAK,UAAQA,EAAE;MAAS,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,YAAG,KAAK,YAAU,EAAE,OAAM,KAAI,CAAC,KAAK,WAAW,CAAC,EAAE,QAAO,IAAII;AAAE,YAAIJ,IAAE,KAAK,QAAM,EAAE,QAAM,KAAK,QAAM,EAAE,OAAMY,IAAE,KAAK,QAAM,EAAE,QAAM,KAAK,QAAM,EAAE;AAAM,eAAO,IAAIR,EAAEJ,GAAE,KAAK,QAAM,EAAE,QAAM,KAAK,QAAM,EAAE,OAAMY,GAAE,KAAK,QAAM,EAAE,QAAM,KAAK,QAAM,EAAE,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK,QAAM,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAYod,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,OAAO,EAAE,GAAE,EAAE,CAAC;AAAA,UAAC;AAAC,cAAG,UAAU,CAAC,aAAY5d,GAAE;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,mBAAM,CAAC,KAAK,OAAQ,KAAE,CAACA,EAAE,OAAM,KAAKA,EAAE,QAAO,KAAI,KAAK,SAAOA,EAAE,QAAS,KAAE,KAAK,SAAOA,EAAE,QAAS,KAAE,KAAK,SAAOA,EAAE,aAAW,KAAK;AAAA,UAAM;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,iBAAM,CAAC,KAAK,OAAQ,KAAGJ,KAAG,KAAK,SAAOA,KAAG,KAAK,SAAOI,KAAG,KAAK,SAAOA,KAAG,KAAK;AAAA,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAYZ,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAM,CAAC,KAAK,OAAM,KAAI,CAAC,EAAE,OAAQ,KAAE,EAAE,EAAE,QAAM,KAAK,SAAO,EAAE,QAAM,KAAK,SAAO,EAAE,QAAM,KAAK,SAAO,EAAE,QAAM,KAAK;AAAA,UAAM;AAAC,cAAG,UAAU,CAAC,aAAY4d,GAAE;AAAC,gBAAIhe,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,WAAWA,EAAE,GAAEA,EAAE,CAAC;AAAA,UAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAYge,KAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,gBAAIpd,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,gBAAG,KAAK,OAAQ,EAAC,QAAM;AAAG,gBAAI,IAAEJ,EAAE,IAAEI,EAAE,IAAEJ,EAAE,IAAEI,EAAE;AAAE,gBAAG,IAAE,KAAK,MAAM,QAAM;AAAG,gBAAIP,IAAEG,EAAE,IAAEI,EAAE,IAAEJ,EAAE,IAAEI,EAAE;AAAE,gBAAGP,IAAE,KAAK,MAAM,QAAM;AAAG,gBAAIkc,IAAE/b,EAAE,IAAEI,EAAE,IAAEJ,EAAE,IAAEI,EAAE;AAAE,gBAAG2b,IAAE,KAAK,MAAM,QAAM;AAAG,gBAAI5W,IAAEnF,EAAE,IAAEI,EAAE,IAAEJ,EAAE,IAAEI,EAAE;AAAE,mBAAM,EAAE+E,IAAE,KAAK;AAAA,UAAM;AAAC,cAAa,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAIhF,IAAE,UAAU,CAAC,GAAE6b,IAAE,UAAU,CAAC;AAAE,mBAAM,CAAC,KAAK,OAAQ,KAAE,EAAE7b,IAAE,KAAK,SAAOA,IAAE,KAAK,SAAO6b,IAAE,KAAK,SAAOA,IAAE,KAAK;AAAA,UAAM;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAG,KAAK,OAAM,EAAG,QAAO;AAAE,YAAI,IAAE,KAAK,SAAQ,GAAG,IAAE,KAAK,UAAS;AAAG,eAAO,KAAK,KAAK,IAAE,IAAE,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAYoB,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,gBAAgB,EAAE,GAAE,EAAE,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAY5d,GAAE;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,gBAAGA,EAAE,OAAQ,EAAC,QAAO;AAAK,iBAAK,OAAQ,KAAE,KAAK,QAAMA,EAAE,QAAO,GAAG,KAAK,QAAMA,EAAE,QAAO,GAAG,KAAK,QAAMA,EAAE,QAAS,GAAC,KAAK,QAAMA,EAAE,QAAS,MAAGA,EAAE,QAAM,KAAK,UAAQ,KAAK,QAAMA,EAAE,QAAOA,EAAE,QAAM,KAAK,UAAQ,KAAK,QAAMA,EAAE,QAAOA,EAAE,QAAM,KAAK,UAAQ,KAAK,QAAMA,EAAE,QAAOA,EAAE,QAAM,KAAK,UAAQ,KAAK,QAAMA,EAAE;AAAA,UAAO;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,eAAK,OAAM,KAAI,KAAK,QAAMJ,GAAE,KAAK,QAAMA,GAAE,KAAK,QAAMI,GAAE,KAAK,QAAMA,MAAIJ,IAAE,KAAK,UAAQ,KAAK,QAAMA,IAAGA,IAAE,KAAK,UAAQ,KAAK,QAAMA,IAAGI,IAAE,KAAK,UAAQ,KAAK,QAAMA,IAAGA,IAAE,KAAK,UAAQ,KAAK,QAAMA;AAAA,QAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAG,KAAK,SAAS,QAAO;AAAE,YAAI,IAAE,KAAK,SAAU,GAAC,IAAE,KAAK,UAAW;AAAC,eAAO,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,OAAQ,IAAC,IAAE,KAAK,QAAM,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,WAAS,EAAE,OAAQ,IAAC,IAAE,KAAG,EAAE,OAAM,IAAG,IAAE,KAAK,QAAM,EAAE,QAAM,KAAG,KAAK,QAAM,EAAE,QAAM,IAAE,KAAK,QAAM,EAAE,QAAM,KAAG,KAAK,QAAM,EAAE,QAAM,IAAE,KAAK,QAAM,EAAE,QAAM,KAAG,KAAK,QAAM,EAAE,QAAM,IAAE,KAAK,QAAM,EAAE,QAAM,KAAG,KAAK,QAAM,EAAE,QAAM,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE;AAAC,YAAG,KAAK,OAAQ,EAAC,QAAO;AAAK,aAAK,KAAK,KAAK,YAAU,GAAE,KAAK,QAAS,IAAC,GAAE,KAAK,QAAS,IAAC,GAAE,KAAK,QAAO,IAAG,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,IAAIZ,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,SAAO,KAAK,QAAM,QAAM,KAAK,QAAM,OAAK,KAAK,QAAM,QAAM,KAAK,QAAM;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,aAAK,QAAM,GAAE,KAAK,QAAM,IAAG,KAAK,QAAM,GAAE,KAAK,QAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAM,EAAE,CAAC,KAAK,OAAM,KAAI,CAAC,EAAE,OAAQ,MAAI,EAAE,QAAM,KAAK,SAAO,EAAE,QAAM,KAAK,SAAO,EAAE,QAAM,KAAK,SAAO,EAAE,QAAM,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK,OAAQ,IAAC,IAAE,KAAK,QAAM,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAG,KAAK,OAAM,EAAG,QAAO;AAAE,YAAI,IAAE,KAAK,YAAW,IAAE,KAAK,UAAW;AAAC,eAAO,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,SAAS,GAAE,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,cAAG,KAAK,OAAQ,EAAC,QAAO;AAAK,eAAK,SAAO,GAAE,KAAK,SAAO,GAAE,KAAK,SAAO,GAAE,KAAK,SAAO,IAAG,KAAK,QAAM,KAAK,SAAO,KAAK,QAAM,KAAK,UAAQ,KAAK,UAAW;AAAA,QAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,OAAO,CAAC;AAAA,UAAC;AAAC,cAAG,UAAU,CAAC,aAAY4d,GAAE;AAAC,gBAAIhe,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,OAAOA,CAAC;AAAA,UAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,OAAOJ,GAAEI,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK,OAAM,IAAG,OAAK,IAAIgd,GAAG,KAAK,YAAU,KAAK,QAAS,KAAE,IAAG,KAAK,YAAU,KAAK,QAAS,KAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,MAAK,UAAW;AAAA,iBAAa,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,KAAK,EAAE,GAAE,EAAE,GAAE,EAAE,GAAE,EAAE,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAY5d,GAAE;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAK,QAAMA,EAAE,OAAM,KAAK,QAAMA,EAAE,OAAM,KAAK,QAAMA,EAAE,OAAM,KAAK,QAAMA,EAAE;AAAA,UAAK;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,eAAK,KAAKJ,EAAE,GAAEI,EAAE,GAAEJ,EAAE,GAAEI,EAAE,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC;AAAE,cAAEtF,KAAG,KAAK,QAAM,GAAE,KAAK,QAAMA,MAAI,KAAK,QAAMA,GAAE,KAAK,QAAM,IAAGkc,IAAE5W,KAAG,KAAK,QAAM4W,GAAE,KAAK,QAAM5W,MAAI,KAAK,QAAMA,GAAE,KAAK,QAAM4W;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,YAAG,KAAK,WAAW,CAAC,EAAE,QAAO;AAAE,YAAI,IAAE;AAAE,aAAK,QAAM,EAAE,QAAM,IAAE,EAAE,QAAM,KAAK,QAAM,KAAK,QAAM,EAAE,UAAQ,IAAE,KAAK,QAAM,EAAE;AAAO,YAAI,IAAE;AAAE,eAAO,KAAK,QAAM,EAAE,QAAM,IAAE,EAAE,QAAM,KAAK,QAAM,KAAK,QAAM,EAAE,UAAQ,IAAE,KAAK,QAAM,EAAE,QAAW,MAAJ,IAAM,IAAM,MAAJ,IAAM,IAAE,KAAK,KAAK,IAAE,IAAE,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAE;AAAG,eAAO,IAAE,MAAI,IAAE,MAAI,IAAE,MAAI,IAAE,KAAG,IAAEqB,EAAE,SAAS,KAAK,KAAK,KAAGA,EAAE,SAAS,KAAK,KAAK,KAAGA,EAAE,SAAS,KAAK,KAAK,KAAGA,EAAE,SAAS,KAAK,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAChc,GAAEgb,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,QAAM,MAAK,KAAK,QAAM,MAAK,KAAK,QAAM,MAAK,KAAK,QAAM,MAAS,UAAU,WAAd,EAAqB,MAAK,KAAM;AAAA,iBAAa,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAYgB,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,KAAK,EAAE,GAAE,EAAE,GAAE,EAAE,GAAE,EAAE,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAY5d,GAAE;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAK,KAAKA,CAAC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,eAAK,KAAKJ,EAAE,GAAEI,EAAE,GAAEJ,EAAE,GAAEI,EAAE,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC;AAAE,eAAK,KAAK,GAAEtF,GAAEkc,GAAE5W,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAO,EAAE,MAAI,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,MAAI,EAAE,MAAI,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,MAAI,EAAE,MAAI,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,MAAI,EAAE,MAAI,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE;AAAA,QAAE;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE/E,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAE,KAAK,IAAID,EAAE,GAAEjc,EAAE,CAAC,GAAEsF,IAAE,KAAK,IAAI2W,EAAE,GAAEjc,EAAE,CAAC,GAAEM,IAAE,KAAK,IAAI,EAAE,GAAEC,EAAE,CAAC,GAAE4b,IAAE,KAAK,IAAI,EAAE,GAAE5b,EAAE,CAAC;AAAE,iBAAM,EAAED,IAAEgF,MAAK,EAAE6W,IAAED,OAAKA,IAAE,KAAK,IAAID,EAAE,GAAEjc,EAAE,CAAC,GAAEsF,IAAE,KAAK,IAAI2W,EAAE,GAAEjc,EAAE,CAAC,GAAEM,IAAE,KAAK,IAAI,EAAE,GAAEC,EAAE,CAAC,GAAE4b,IAAE,KAAK,IAAI,EAAE,GAAE5b,EAAE,CAAC,GAAE,EAAED,IAAEgF,MAAI,EAAE6W,IAAED;AAAA,QAAI;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEvc;AAAA,IAAC,EAAG,GAAC8d,IAAE,WAAU;AAAC,eAAS9d,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAO,KAAK,YAAW,MAAKA,EAAE;AAAA,MAA2B,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,eAAO;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,eAAO,SAAO,KAAG,KAAK,YAAY,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,aAAK,MAAMA,EAAE,qBAAqB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,aAAK,YAAU;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,eAAc,MAAP,QAAU,KAAK,KAAI,EAAG,YAAY,EAAE,MAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAI;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAE,GAAE,KAAK,YAAW,MAAK,EAAE,YAAW,IAAG,KAAK,YAAa,IAAC,EAAE,gBAAc,KAAK,QAAO,KAAI,EAAE,QAAO,IAAG,IAAE,KAAK,QAAS,IAAC,KAAG,EAAE,QAAO,IAAG,IAAE,KAAK,mBAAmB,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAE,GAAE,KAAK,YAAW,MAAK,EAAE,YAAa,IAAC,KAAK,YAAW,IAAG,EAAE,YAAa,IAAC,KAAK,QAAS,KAAE,EAAE,QAAS,IAAC,IAAE,KAAK,QAAO,IAAG,KAAG,EAAE,YAAU,IAAE,KAAK,mBAAmB,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,WAAU,EAAG,WAAW,KAAK,qBAAqB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAAS,GAAE;AAAC,YAAG,EAAE,kBAAgBA,EAAE,4BAA4B,OAAM,IAAI0c,EAAE,2DAA2D;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,eAAW,MAAJ,IAAM,EAAE,OAAO,CAAC,IAAE,EAAE,SAAS,CAAC,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,KAAM;AAAC,eAAO,EAAE,UAAS,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,gBAAe;AAAG,eAAa,KAAK,YAAX,SAAsB,EAAE,WAAS,KAAK,SAAS,KAAI,IAAI,EAAE,QAAQ,KAAK,QAAS,CAAA,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK;AAAe,eAAO,EAAE,WAAe,KAAK,aAAX,OAAqB,OAAK,KAAK,UAAU,KAAI,GAAG,EAAE,QAAM,KAAK,OAAM,EAAE,YAAU,KAAK,WAAU;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,eAAO,KAAK,SAAS,kBAAiB;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,eAAc,KAAK,cAAZ,SAAwB,KAAK,YAAU,KAAK,wBAAyB,IAAE,IAAImB,GAAE,KAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,aAAK,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,aAAK,YAAU;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,EAAE,SAAQ,GAAG,IAAE,EAAE,SAAU,GAAC,EAAE,QAAS,KAAE,EAAE,aAAW;AAAC,cAAIjd,IAAE,EAAE,KAAI,GAAG0b,IAAE,EAAE,KAAM,GAACjc,IAAEO,EAAE,UAAU0b,CAAC;AAAE,cAAOjc,MAAJ,EAAM,QAAOA;AAAA,QAAC;AAAC,eAAO,EAAE,YAAU,IAAE,EAAE,YAAU,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,oBAAqB,EAAC,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,SAAQ,MAAK,EAAE,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,iCAAgC,OAAM,WAAU;AAAC,eAAO,KAAK,YAAW,MAAKL,EAAE,+BAA6B,KAAK,YAAa,MAAGA,EAAE,uBAAqB,KAAK,YAAa,MAAGA,EAAE,4BAA0B,KAAK,kBAAgBA,EAAE;AAAA,MAAqB,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC2c,GAAE/a,GAAEgb,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO5c;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,KAAG,CAAC,EAAE,CAAC,EAAE,UAAU,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,KAAU,EAAE,CAAC,MAAV,KAAY,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG;AAAC,IAAA8d,EAAE,eAAa,SAASte,GAAE;AAAC,MAAAA,MAAI,KAAK,YAAU,MAAK,KAAK,YAAU,MAAK,KAAK,WAASA,GAAE,KAAK,QAAMA,EAAE;IAAU,GAAEse,EAAE,iBAAe,GAAEA,EAAE,sBAAoB,GAAEA,EAAE,sBAAoB,GAAEA,EAAE,sBAAoB,GAAEA,EAAE,2BAAyB,GAAEA,EAAE,mBAAiB,GAAEA,EAAE,wBAAsB,GAAEA,EAAE,8BAA4B,GAAEA,EAAE,iBAAe,SAAQA,EAAE,sBAAoB,cAAaA,EAAE,sBAAoB,cAAaA,EAAE,sBAAoB,cAAaA,EAAE,2BAAyB,mBAAkBA,EAAE,mBAAiB,WAAUA,EAAE,wBAAsB,gBAAeA,EAAE,8BAA4B,sBAAqBA,EAAE,wBAAsB,EAAC,IAAI,cAAa;AAAC,aAAM,CAACjI,CAAC;AAAA,IAAC,GAAE,QAAO,SAASrW,GAAE;AAAC,MAAAA,EAAE,sBAAuB;AAAA,IAAA,EAAC;AAAE,QAAIue,IAAE,WAAU;AAAC,eAAS/d,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,gBAAO;UAAG,KAAKA,EAAE;AAAS,mBAAM;AAAA,UAAI,KAAKA,EAAE;AAAS,mBAAM;AAAA,UAAI,KAAKA,EAAE;AAAS,mBAAM;AAAA,UAAI,KAAKA,EAAE;AAAK,mBAAM;AAAA,QAAG;AAAC,cAAM,IAAI0c,EAAE,6BAA2B,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE1c;AAAA,IAAC;AAAI,IAAA+d,EAAE,WAAS,GAAEA,EAAE,WAAS,GAAEA,EAAE,WAAS,GAAEA,EAAE,OAAK;AAAG,QAAIC,KAAE,WAAU;AAAC,eAAShe,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,OAAM,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAA,QAAE,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAA,QAAE,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAA,MAAE,EAAA,CAAC,CAAC,GAAEA;AAAA,IAAC,KAAIxB,KAAE,SAASwB,GAAE;AAAC,MAAAQ,EAAEI,GAAEZ,CAAC;AAAE,UAAIJ,IAAE4G,EAAE5F,CAAC;AAAE,eAASA,EAAEZ,GAAE;AAAC,YAAI;AAAE,eAAOR,EAAE,MAAKoB,CAAC,IAAG,IAAEhB,EAAE,KAAK,MAAKI,CAAC,GAAG,OAAK,OAAO,KAAK,EAAC,wBAAuBY,EAAC,CAAC,EAAE,CAAC,GAAE;AAAA,MAAC;AAAC,aAAOA;AAAA,IAAC,EAAEgD,CAAC,GAAEqa,KAAE,SAASje,GAAE;AAAC,MAAAQ,EAAEI,GAAEZ,CAAC;AAAE,UAAIJ,IAAE4G,EAAE5F,CAAC;AAAE,eAASA,EAAEZ,GAAE;AAAC,YAAI;AAAE,eAAOR,EAAE,MAAKoB,CAAC,IAAG,IAAEhB,EAAE,KAAK,MAAKI,CAAC,GAAG,OAAK,OAAO,KAAK,EAAC,+BAA8BY,EAAC,CAAC,EAAE,CAAC,GAAE;AAAA,MAAC;AAAC,aAAOA;AAAA,IAAC,EAAEgD,CAAC,GAAEsa,KAAE,SAASle,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,eAAO9c,EAAE,MAAK8c,CAAC,GAAE1b,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOhB,EAAE0c,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,WAAU;AAAA,QAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAE0B,EAAC,GAAEG,KAAE,SAASne,GAAEY,GAAE;AAAC,MAAAJ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,EAAEL,GAAE;AAAC,YAAIJ;AAAE,eAAOJ,EAAE,MAAKa,CAAC,IAAGT,IAAE0c,EAAE,KAAK,IAAI,GAAG,MAAI,oBAAI,OAAItc,aAAage,MAAGpe,EAAE,OAAOI,CAAC,GAAEJ;AAAA,MAAC;AAAC,aAAOA,EAAES,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,SAASb,GAAE;AAAC,YAAIQ,IAAER,EAAE,WAASA,EAAE,aAAWA;AAAE,eAAM,CAAC,CAAC,KAAK,IAAI,IAAIQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASR,GAAE;AAAC,YAAIQ,IAAER,EAAE,WAASA,EAAE,aAAWA;AAAE,eAAM,CAAC,KAAK,IAAI,IAAIQ,CAAC,KAAG,CAAC,CAAC,KAAK,IAAI,IAAIA,GAAER,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASA,GAAE;AAAC,YAAIQ,GAAEJ,IAAE8C,EAAElD,CAAC;AAAE,YAAG;AAAC,eAAII,EAAE,EAAG,GAAC,EAAEI,IAAEJ,EAAE,EAAG,GAAE,QAAM;AAAC,gBAAIY,IAAER,EAAE;AAAM,iBAAK,IAAIQ,CAAC;AAAA,UAAC;AAAA,QAAC,SAAOhB,GAAE;AAAC,UAAAI,EAAE,EAAEJ,CAAC;AAAA,QAAC,UAAC;AAAQ,UAAAI,EAAE,EAAG;AAAA,QAAA;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,cAAM,IAAIqe;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAW,KAAK,IAAI,SAAb;AAAA,MAAiB,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,MAAM,KAAK,KAAK,IAAI,OAAQ,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,IAAIhc,GAAE,KAAK,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAIrB,GAAE,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,CAAC,CAAC,GAAEP;AAAA,IAAC,EAAE6d,IAAE,OAAO,QAAQ,GAAEjc,KAAE,WAAU;AAAC,eAASjC,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,WAASJ,EAAE;AAAS,YAAIY,IAAE,KAAK,SAAS,QAAOI,IAAEJ,EAAE,MAAK8b,IAAE9b,EAAE;AAAM,aAAK,OAAKI,GAAE,KAAK,QAAM0b;AAAA,MAAC;AAAC,aAAO1c,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAG,KAAK,KAAK,OAAM,IAAIxB;AAAE,YAAI,IAAE,KAAK,OAAM,IAAE,KAAK,SAAS,KAAI,GAAG,IAAE,EAAE,MAAK,IAAE,EAAE;AAAM,eAAO,KAAK,OAAK,GAAE,KAAK,QAAM,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAM,CAAC,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,cAAM,IAAIyf;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEje;AAAA,IAAC,EAAC,GAAGoe,IAAE,WAAU;AAAC,eAASpe,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAO,MAAIA,EAAE,OAAKA,EAAE,QAAM,MAAIA,EAAE,QAAMA,EAAE,OAAK;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC;AAAG,IAAAoe,EAAE,KAAG,GAAEA,EAAE,OAAK,GAAEA,EAAE,QAAM;AAAE,QAAIC,KAAG,SAASre,GAAE;AAAC,MAAAQ,EAAEI,GAAEZ,CAAC;AAAE,UAAIJ,IAAE4G,EAAE5F,CAAC;AAAE,eAASA,EAAEZ,GAAE;AAAC,YAAI;AAAE,eAAOR,EAAE,MAAKoB,CAAC,IAAG,IAAEhB,EAAE,KAAK,MAAKI,CAAC,GAAG,OAAK,OAAO,KAAK,EAAC,qBAAoBY,EAAC,CAAC,EAAE,CAAC,GAAE;AAAA,MAAC;AAAC,aAAOA;AAAA,IAAC,EAAEgD,CAAC,GAAE0a,KAAG,SAASte,GAAE;AAAC,MAAAQ,EAAEI,GAAEZ,CAAC;AAAE,UAAIJ,IAAE4G,EAAE5F,CAAC;AAAE,eAASA,EAAEZ,GAAE;AAAC,YAAI;AAAE,eAAOR,EAAE,MAAKoB,CAAC,IAAG,IAAEhB,EAAE,KAAK,MAAKI,CAAC,GAAG,OAAK,OAAO,KAAK,EAAC,2BAA0BY,EAAC,CAAC,EAAE,CAAC,GAAE;AAAA,MAAC;AAAC,aAAOA;AAAA,IAAC,EAAEgD,CAAC,GAAE2a,KAAG,SAASve,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,eAAO9c,EAAE,MAAK8c,CAAC,GAAE1b,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOhB,EAAE0c,GAAE,CAAC,EAAC,KAAI,OAAM,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAA,MAAE,EAAA,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAE0B,EAAC,GAAEQ,KAAG,SAASxe,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,IAAGtc,IAAEY,EAAE,KAAK,IAAI,GAAG,QAAM,CAAA,GAAGZ;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,OAAM,OAAM,SAAS9c,GAAE;AAAC,eAAO,KAAK,MAAM,KAAKA,CAAC,GAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASA,GAAE;AAAC,YAAGA,IAAE,KAAGA,KAAG,KAAK,KAAM,EAAC,OAAM,IAAI8e;AAAG,eAAO,KAAK,MAAM9e,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASA,GAAE;AAAC,eAAO,KAAK,MAAM,KAAKA,CAAC,GAAEA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,YAAO,KAAK,MAAM,WAAf,EAAsB,OAAM,IAAI6e;AAAG,eAAO,KAAK,MAAM,IAAK;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAO,KAAK,MAAM,WAAf,EAAsB,OAAM,IAAIA;AAAG,eAAO,KAAK,MAAM,KAAK,MAAM,SAAO,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAW,KAAK,MAAM,WAAf;AAAA,MAAqB,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,MAAO;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS7e,GAAE;AAAC,eAAO,KAAK,MAAM,QAAQA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM,MAAO;AAAA,MAAA,EAAC,CAAC,CAAC,GAAE8c;AAAA,IAAC,EAAEiC,EAAE;AAAE,aAASE,GAAGjf,GAAEQ,GAAE;AAAC,aAAOR,EAAE,eAAaA,EAAE,YAAY,QAAQQ,CAAC,IAAE;AAAA,IAAE;AAAC,QAAI0e,KAAG,WAAU;AAAC,eAAS1e,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,MAAIJ;AAAA,MAAC;AAAC,aAAOA,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,aAAK,OAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,MAAI,KAAK,IAAI,OAAO,GAAE,CAAC,IAAE,IAAE,KAAK,IAAI,OAAO,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAAC2e,KAAG,WAAU;AAAC,eAAS3e,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,QAAMJ;AAAA,MAAC;AAAC,aAAOA,EAAEI,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,QAAM,IAAE,KAAG,KAAK,QAAM,IAAE,IAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,IAAE,IAAE,KAAG,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,eAAO,OAAO,MAAM,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,eAAO,IAAIA,EAAE,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,KAAI4e,KAAG,WAAU;AAAC,eAAS5e,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,eAAO,KAAG,MAAI,KAAG,KAAS,MAAN;AAAA,MAAO,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,eAAO,EAAE,YAAa;AAAA,MAAA,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAAC6e,IAAG,WAAU;AAAC,eAAS7e,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,MAAK,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,MAAI,EAAE,OAAK,KAAK,QAAM,EAAE,OAAK,KAAK,OAAK,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAAS,GAAEJ,GAAE;AAAC,YAAIY,IAAE,KAAK,IAAK,GAACI,IAAEZ,EAAE,UAAUQ,EAAE,GAAG,GAAE,IAAER,EAAE,IAAI,IAAIY,CAAC;AAAE,SAACJ,IAAEA,EAAE,OAAO,CAAC,GAAG,GAAGR,EAAE,GAAG,KAAGQ,IAAEA,EAAE,OAAOR,EAAE,GAAG,GAAEY,KAAG,KAAGJ,EAAE,GAAGR,EAAE,GAAG,MAAIQ,IAAEA,EAAE,SAASR,EAAE,GAAG,GAAEY,KAAG;AAAG,iBAAQP,IAAEO,IAAE,GAAE2b,IAAE,IAAImC,MAAG/Y,IAAE3F,EAAE,mBAAiB,GAAEW,IAAE,GAAEA,KAAGgF,GAAEhF,KAAI;AAAC,eAAGA,MAAIN,KAAGkc,EAAE,OAAO,GAAG;AAAE,cAAIC,IAAE,KAAK,MAAMhc,EAAE,GAAG;AAAE,cAAGgc,IAAE,EAAE;AAAM,cAAIhW,IAAE,IAAGiW,IAAE;AAAE,UAAAD,IAAE,KAAGhW,IAAE,IAAGiW,IAAE,OAAKA,IAAE,MAAID,GAAED,EAAE,OAAOE,CAAC,GAAEjc,IAAEA,EAAE,SAASR,EAAE,QAAQwc,CAAC,CAAC,EAAE,SAASxc,EAAE,GAAG,GAAEwG,KAAGhG,EAAE,QAAQR,EAAE,GAAG;AAAE,cAAIH,IAAE,IAAGH,IAAEM,EAAE,UAAUQ,EAAE,GAAG;AAAE,cAAGd,IAAE,KAAG,KAAK,IAAIA,CAAC,KAAGiG,IAAEhF,MAAId,IAAE,KAAI,CAACA,EAAE;AAAA,QAAK;AAAC,eAAOD,EAAE,CAAC,IAAEgB,GAAE2b,EAAE,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,eAAO,KAAK,SAAS,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,MAAI,KAAK;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYvc,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,IAAI,EAAE,OAAM,CAAE;AAAA,QAAC;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,IAAI,CAACA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAsB,UAAU,CAAC,aAAYI,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,QAAM,EAAE,OAAK,KAAK,QAAM,EAAE;AAAA,QAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAW,KAAK,QAAT,KAAkB,KAAK,QAAT;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,MAAO,IAAC,OAAK,KAAK,QAAQ,CAAC,EAAE,KAAI,CAAC,EAAE,GAAG;AAAA,QAAC;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,MAAO,IAAC,OAAK,KAAK,QAAQ,CAACA,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,eAAO,KAAK,OAAM,IAAG,QAAM,KAAK,MAAK,IAAG,SAAO;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,GAAG,CAAC,IAAE,OAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAYI,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,WAAW,EAAE,KAAI,EAAE,GAAG;AAAA,UAAC;AAAC,cAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,WAAWA,GAAE,CAAC;AAAA,UAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE,IAAE,MAAKP,IAAE,MAAKkc,IAAE,MAAK5W,IAAE,MAAKhF,IAAE,MAAK6b,IAAE,MAAKhW,IAAE,MAAKiW,IAAE;AAAK,iBAAO9b,IAAE,KAAK,MAAIH,GAAEic,KAAG,KAAGD,IAAExc,EAAE,QAAMW,MAAI,IAAE6b,IAAE7b,OAAK4b,KAAGE,IAAEzc,EAAE,QAAMQ,MAAI+b,IAAEE,IAAEjc,OAAKgG,IAAE7F,IAAEH,KAAG,KAAGmF,IAAEnF,IAAE+b,MAAIlc,IAAEM,IAAE,KAAG4b,IAAElc,IAAEsF,GAAE8W,IAAE9b,KAAG6b,KAAG,KAAK,MAAIhW,IAAEiW,IAAE,KAAK,MAAI9b,IAAEC,KAAGJ,IAAG,KAAK,MAAIic,GAAE,KAAK,MAAI9b,IAAE8b,IAAED,GAAE;AAAA,QAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAM,QAAM,KAAK,MAAI,OAAK,KAAK,MAAI;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYxc,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEJ,IAAE,MAAKY,IAAE,MAAKI,IAAE,MAAK,IAAE,MAAKP,IAAE,MAAKkc,IAAE,MAAK5W,IAAE,MAAKhF,IAAE;AAAK,UAAAH,KAAGH,IAAE,KAAK,MAAI,EAAE,QAAMT,KAAG2c,IAAEvc,EAAE,QAAMK,MAAIT,IAAE2c,IAAElc,KAAIM,IAAEf,KAAGgB,KAAGD,IAAEX,EAAE,QAAM,EAAE,QAAMY,IAAED,IAAE,EAAE,SAAOgF,IAAEtF,IAAE,EAAE,OAAKT,KAAG,IAAE,EAAE,MAAIgB,KAAGJ,IAAEI,IAAEJ,IAAE;AAAE,cAAIgc,IAAE7b,IAAEN,KAAGkc,KAAG,KAAK,MAAI5W,IAAEhF,IAAE,KAAK,MAAIN,IAAE,EAAE,OAAK,EAAE,MAAKmG,IAAEnG,IAAEM,IAAE4b;AAAE,iBAAO,IAAIvc,EAAEwc,GAAEhW,CAAC;AAAA,QAAC;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAIiW,IAAE,UAAU,CAAC;AAAE,iBAAOY,EAAE,MAAMZ,CAAC,IAAEzc,EAAE,UAAW,IAACA,EAAE,KAAK,IAAI,EAAE,WAAWyc,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,MAAK,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,MAAI,EAAE,OAAK,KAAK,QAAM,EAAE,OAAK,KAAK,OAAK,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,YAAO,MAAJ,EAAM,QAAOzc,EAAE,QAAQ,CAAC;AAAE,YAAIJ,IAAE,IAAII,EAAE,IAAI,GAAEQ,IAAER,EAAE,QAAQ,CAAC,GAAEY,IAAE,KAAK,IAAI,CAAC;AAAE,YAAGA,IAAE,EAAE,QAAKA,IAAE,IAAG,CAAAA,IAAE,KAAG,KAAGJ,EAAE,aAAaZ,CAAC,IAAGgB,KAAG,KAAG,MAAIhB,IAAEA,EAAE,IAAG;AAAA,YAAS,CAAAY,IAAEZ;AAAE,eAAO,IAAE,IAAEY,EAAE,WAAU,IAAGA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAG,KAAK,MAAK,EAAG,QAAOR,EAAE;AAAI,YAAI,IAAE,KAAK,KAAK,KAAK,GAAG,GAAEJ,IAAE;AAAE,eAAO,MAAI,KAAK,QAAMA,IAAE,KAAK,KAAK,KAAK,GAAG,IAAG,IAAII,EAAE,GAAEJ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,MAAI,EAAE,MAAI,KAAG,KAAK,MAAI,EAAE,MAAI,IAAE,KAAK,MAAI,EAAE,MAAI,KAAG,KAAK,MAAI,EAAE,MAAI,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,MAAO,IAAC,OAAK,KAAK,IAAI,GAAE,EAAE;MAAO,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYI,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,KAAK,CAAC,GAAE;AAAA,QAAI;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,KAAKA,CAAC,GAAE;AAAA,QAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,GAAG,CAAC,IAAE,OAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAG,KAAK,OAAQ,EAAC,QAAOI,EAAE,QAAQ,CAAC;AAAE,YAAG,KAAK,WAAU,EAAG,QAAOA,EAAE;AAAI,YAAI,IAAE,IAAE,KAAK,KAAK,KAAK,GAAG,GAAEJ,IAAE,KAAK,MAAI,GAAEY,IAAER,EAAE,QAAQJ,CAAC,GAAEgB,IAAE,KAAK,SAASJ,EAAE,IAAK,CAAA,EAAE,OAAK,MAAG;AAAG,eAAOA,EAAE,IAAII,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAYZ,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,QAAQ,EAAE,KAAI,EAAE,GAAG;AAAA,UAAC;AAAC,cAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,MAAKI,IAAE,MAAK,IAAE,MAAKP,IAAE,MAAKkc,IAAE,MAAK5W,IAAE;AAAK,mBAAOtF,KAAG,IAAE,KAAK,MAAIT,MAAI2c,IAAE,IAAE,KAAK,MAAK3b,KAAG+E,KAAGtF,IAAET,IAAE2c,KAAG,KAAK,MAAIlc,MAAI,KAAK,QAAM,KAAGG,IAAE,IAAEmF,KAAI,KAAK,MAAInF,IAAEI,GAAE,KAAK,MAAIA,KAAGJ,IAAE,KAAK,MAAK;AAAA,UAAI;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIG,IAAE,UAAU,CAAC,GAAE6b,IAAE,UAAU,CAAC,GAAEhW,IAAE,MAAKiW,IAAE,MAAK5c,IAAE,MAAKH,IAAE,MAAKD,IAAE,MAAKiD,IAAE,MAAKnD,IAAE;AAAK,UAAAG,IAAE,KAAK,MAAIiB,GAAE8b,IAAE,KAAK,MAAID,GAAE/c,IAAEC,KAAGgD,IAAEhD,IAAE,KAAK,MAAKG,IAAE4c,KAAGld,IAAEkd,IAAE,KAAK;AAAK,cAAI7Y,MAAG4C,IAAE9G,KAAGgD,KAAGjD,IAAEkB,IAAE+B,KAAG,KAAK,MAAIjD,MAAIgd,OAAK/Z,KAAG7C,IAAE2c,IAAEjd,KAAG,KAAK,MAAIM,OAAK6C,KAAGhD,IAAE8G,MAAKkW,KAAEha,KAAG8D,IAAE5C;AAAG,iBAAO,KAAK,MAAIA,IAAE,KAAK,MAAI8Y,IAAE;AAAA,QAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAY1c,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,aAAa,EAAE,KAAI,EAAE,GAAG;AAAA,UAAC;AAAC,cAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,aAAaA,GAAE,CAAC;AAAA,UAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE,IAAE,MAAKP,IAAE,MAAKkc,IAAE,MAAK5W,IAAE,MAAKhF,IAAE,MAAK6b,IAAE;AAAK,eAAG7b,IAAEX,EAAE,QAAM,KAAK,OAAK,KAAK,KAAIwc,IAAExc,EAAE,QAAMQ,GAAE,IAAEG,IAAE,GAAEN,IAAE,KAAK,MAAI,GAAEkc,IAAEC,IAAEhc;AAAE,cAAIgG,KAAG7F,IAAE,KAAK,MAAIH,MAAIgc,IAAE,KAAGD,IAAEC,IAAED,KAAG5b,IAAE,KAAGgF,IAAEnF,IAAE+b,KAAGlc,IAAEkc,IAAElc,IAAEsF,KAAG,KAAK,MAAI/E,IAAE,KAAK,MAAIJ,KAAIic,IAAED,KAAG,IAAE7b,IAAE6F;AAAG,iBAAO,KAAK,MAAIA,GAAE,KAAK,MAAIiW,GAAE;AAAA,QAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,aAAa,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAG,KAAK,MAAK,EAAG,QAAOzc,EAAE;AAAI,YAAI,IAAE,KAAK,MAAM,KAAK,GAAG,GAAEJ,IAAE;AAAE,eAAO,MAAI,KAAK,QAAMA,IAAE,KAAK,MAAM,KAAK,GAAG,IAAG,IAAII,EAAE,GAAEJ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK,MAAK,IAAG,OAAK,IAAII,EAAE,CAAC,KAAK,KAAI,CAAC,KAAK,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAG;AAAC,iBAAO;AAAA,QAAI,SAAO,GAAE;AAAC,cAAG,aAAa,2BAA2B,QAAO;AAAK,gBAAM;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,EAAE,MAAK,IAAGA,EAAE,UAAW,IAACA,EAAE,KAAK,IAAI,EAAE,aAAa,CAAC;AAAA,QAAC;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAOyd,EAAE,MAAMzd,CAAC,IAAEI,EAAE,UAAS,IAAGA,EAAE,KAAK,IAAI,EAAE,aAAaJ,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAOyd,EAAE,MAAM,KAAK,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM,KAAK,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAErd,EAAE,UAAU,KAAK,GAAG;AAAE,eAAO,KAAG,MAAI,KAAG,KAAG,KAAK,mBAAkB,IAAG,KAAK,cAAe;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,uBAAsB;AAAG,YAAU,MAAP,KAAS,QAAO;AAAE,YAAIJ,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAEY,IAAE,KAAK,yBAAyB,IAAGZ,CAAC,GAAEgB,IAAEhB,EAAE,CAAC,IAAE,GAAE,IAAEY;AAAE,YAASA,EAAE,OAAO,CAAC,MAAhB,IAAkB,KAAE,MAAIA;AAAA,iBAAUI,IAAE,EAAE,KAAE,OAAKZ,EAAE,aAAa,KAAI,CAACY,CAAC,IAAEJ;AAAA,iBAAeA,EAAE,QAAQ,GAAG,MAAlB,IAAoB;AAAC,cAAIH,IAAEO,IAAEJ,EAAE;AAAO,cAAEA,IAAER,EAAE,aAAa,KAAIK,CAAC,IAAE;AAAA,QAAI;AAAC,eAAO,KAAK,WAAY,IAAC,MAAI,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,YAAI,GAAET,GAAEY,GAAEI,GAAE,IAAE,MAAKP,IAAE,MAAKkc,IAAE,MAAK5W,IAAE;AAAK,aAAGnF,IAAE,IAAE,KAAK,QAAM,KAAG+b,IAAEvc,EAAE,QAAMQ,MAAI,IAAE+b,IAAE/b,KAAIH,KAAGsF,IAAE3F,EAAE,QAAM,KAAK,OAAK,KAAK;AAAI,YAAIW,IAAEH,KAAG+b,KAAG,KAAG3b,IAAEJ,IAAE,KAAK,QAAMmF,IAAE,KAAGtF,IAAEsF,IAAEtF,KAAGO,IAAE,KAAGhB,IAAE,KAAK,MAAIS,KAAG,IAAEA,IAAE,IAAET,KAAGY,IAAE,KAAK,OAAK,KAAK;AAAK,eAAO,IAAIR,EAAEW,GAAEH,IAAEG,IAAE4b,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAG,KAAK,OAAM,EAAG,QAAOvc,EAAE;AAAa,YAAI,IAAE,KAAK,uBAAsB;AAAG,YAAU,MAAP,KAAS,QAAO;AAAE,YAAIJ,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAEY,IAAE,KAAK,yBAAyB,IAAGZ,CAAC,GAAEgB,IAAEZ,EAAE,wBAAsBJ,EAAE,CAAC;AAAE,YAASY,EAAE,OAAO,CAAC,MAAhB,IAAkB,OAAM,IAAI,sBAAsB,yBAAuBA,CAAC;AAAE,YAAI,IAAE;AAAG,QAAAA,EAAE,SAAO,MAAI,IAAEA,EAAE,UAAU,CAAC;AAAG,YAAIH,IAAEG,EAAE,OAAO,CAAC,IAAE,MAAI;AAAE,eAAO,KAAK,WAAU,IAAG,MAAIH,IAAEO,IAAEP,IAAEO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,eAAO,KAAK,UAAQZ,EAAE,MAAI,KAAK,WAAY,IAAC,KAAK,OAAQ,IAAC,IAAIA,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK,MAAI,KAAO,KAAK,QAAT,KAAc,KAAK,MAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,MAAK,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,MAAI,EAAE,OAAK,KAAK,QAAM,EAAE,OAAK,KAAK,MAAI,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAOA,EAAE,KAAK,IAAI,EAAE,QAAQ,CAAC;AAAA,QAAC;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAOI,EAAE,KAAK,IAAI,EAAE,QAAQJ,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd;AAAsB,cAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,MAAI,GAAE,KAAK,MAAI;AAAA,UAAC,WAAS,UAAU,CAAC,aAAYI,GAAE;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAK,MAAIA,EAAE,KAAI,KAAK,MAAIA,EAAE;AAAA,UAAG;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,eAAK,MAAIJ,GAAE,KAAK,MAAII;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,MAAK,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,MAAI,EAAE,OAAK,KAAK,QAAM,EAAE,OAAK,KAAK,MAAI,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK,MAAI,KAAO,KAAK,QAAT,KAAc,KAAK,MAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAO,KAAK,UAAQZ,EAAE,MAAI,KAAK,WAAU,IAAG,KAAK,MAAO,IAAC,KAAK;MAAM,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK,MAAI,IAAE,IAAE,KAAK,MAAI,IAAE,KAAG,KAAK,MAAI,IAAE,IAAE,KAAK,MAAI,IAAE,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC4c,GAAEhb,GAAE+a,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,MAAI,GAAE,KAAK,MAAI,GAAM,UAAU,WAAd,EAAqB,MAAK,KAAK,CAAC;AAAA,iBAAc,UAAU,WAAd;AAAsB,cAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,KAAK,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAY3c,GAAE;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAK,KAAKA,CAAC;AAAA,UAAC,WAAmB,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAIY,IAAE,UAAU,CAAC;AAAE,YAAAR,EAAE,aAAa,KAAK,MAAKA,EAAE,MAAMQ,CAAC,CAAC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAII,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,KAAKA,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEhB,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,iBAAOZ,EAAE,YAAYA,EAAE,QAAQ,CAAC,GAAEA,EAAE,QAAQJ,CAAC,GAAEI,EAAE,QAAQQ,CAAC,GAAER,EAAE,QAAQY,CAAC,CAAC;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAYZ,KAAG,UAAU,CAAC,aAAYA,KAAG,UAAU,CAAC,aAAYA,KAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEK,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAE,EAAE,SAASgF,CAAC,EAAE,aAAatF,EAAE,SAASkc,CAAC,CAAC;AAAE,iBAAO5b;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,eAAOX,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAOA,EAAE,MAAM,CAAC;AAAA,QAAC;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAII,EAAEJ,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAOI,EAAE,QAAQ,CAAC,EAAE,KAAI;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,iBAAQJ,IAAE,GAAEY,IAAE,EAAE,QAAOoe,GAAG,aAAa,EAAE,OAAOhf,CAAC,CAAC,IAAG,CAAAA;AAAI,YAAIgB,IAAE;AAAG,YAAGhB,IAAEY,GAAE;AAAC,cAAI,IAAE,EAAE,OAAOZ,CAAC;AAAE,UAAM,MAAN,OAAe,MAAN,QAAUA,KAAU,MAAN,QAAUgB,IAAE;AAAA,QAAI;AAAC,iBAAQP,IAAE,IAAIL,KAAEuc,IAAE,GAAE5W,IAAE,GAAEhF,IAAE,GAAE6b,IAAE,IAAG,EAAE5c,KAAGY,MAAI;AAAC,cAAIgG,IAAE,EAAE,OAAO5G,CAAC;AAAE,cAAGA,KAAIgf,GAAG,QAAQpY,CAAC,GAAE;AAAC,gBAAIiW,IAAEjW,IAAE;AAAI,YAAAnG,EAAE,aAAaL,EAAE,GAAG,GAAEK,EAAE,QAAQoc,CAAC,GAAEF;AAAA,UAAG,OAAK;AAAC,gBAAS/V,MAAN,KAAQ;AAAC,kBAASA,MAAN,OAAeA,MAAN,KAAQ;AAAC,oBAAI3G,IAAE,EAAE,UAAUD,CAAC;AAAE,oBAAG;AAAC,kBAAAe,IAAEge,GAAG,SAAS9e,CAAC;AAAA,gBAAC,SAAOG,IAAE;AAAC,wBAAMA,cAAa,wBAAsB,IAAI,sBAAsB,sBAAoBH,IAAE,gBAAc,CAAC,IAAEG;AAAA,gBAAC;AAAC;AAAA,cAAK;AAAC,oBAAM,IAAI,sBAAsB,2BAAyBwG,IAAE,mBAAiB5G,IAAE,gBAAc,CAAC;AAAA,YAAC;AAAC,YAAA+F,IAAE4W,GAAEC,IAAE;AAAA,UAAE;AAAA,QAAC;AAAC,YAAI9c,IAAEW;AAAE,QAAAmc,MAAI7W,IAAE4W;AAAG,YAAI9c,IAAE8c,IAAE5W,IAAEhF;AAAE,YAAOlB,MAAJ,EAAM,CAAAC,IAAEW;AAAA,iBAAUZ,IAAE,GAAE;AAAC,cAAIiD,IAAE1C,EAAE,IAAI,IAAIP,CAAC;AAAE,UAAAC,IAAEW,EAAE,OAAOqC,CAAC;AAAA,QAAC,WAASjD,IAAE,GAAE;AAAC,cAAIF,IAAES,EAAE,IAAI,IAAI,CAACP,CAAC;AAAE,UAAAC,IAAEW,EAAE,SAASd,CAAC;AAAA,QAAC;AAAC,eAAOqB,IAAElB,EAAE,OAAQ,IAACA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,IAAIM,EAAEqd,EAAE,KAAIA,EAAE,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,IAAIrd,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,IAAI,CAAC,GAAE,IAAE,KAAK,IAAI,CAAC,IAAE,KAAK,IAAI,EAAE,GAAE,IAAE,KAAK,MAAM,KAAK,MAAM,CAAC,CAAC;AAAE,eAAO,KAAG,KAAK,IAAI,IAAG,CAAC,KAAG,MAAI,KAAG,IAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,IAAI0e,MAAG,IAAE,GAAE,IAAE,GAAE,IAAI,GAAE,OAAO,CAAC;AAAE,eAAO,EAAE,SAAQ;AAAA,MAAE,EAAC,CAAC,CAAC,GAAE1e;AAAA,IAAC,EAAC;AAAG,IAAA6e,EAAG,KAAG,IAAIA,EAAG,mBAAkB,qBAAqB,GAAEA,EAAG,SAAO,IAAIA,EAAG,mBAAkB,qBAAqB,GAAEA,EAAG,OAAK,IAAIA,EAAG,oBAAmB,oBAAoB,GAAEA,EAAG,IAAE,IAAIA,EAAG,mBAAkB,qBAAqB,GAAEA,EAAG,MAAI,IAAIA,EAAGxB,EAAE,KAAIA,EAAE,GAAG,GAAEwB,EAAG,MAAI,qBAAoBA,EAAG,QAAM,WAAUA,EAAG,mBAAiB,IAAGA,EAAG,MAAIA,EAAG,QAAQ,EAAE,GAAEA,EAAG,MAAIA,EAAG,QAAQ,CAAC,GAAEA,EAAG,wBAAsB,KAAIA,EAAG,eAAa;AAAQ,QAAIC,KAAG,WAAU;AAAC,eAAS9e,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAEJ,GAAEY,GAAE;AAAC,YAAII,IAAEZ,EAAE,uBAAuB,GAAEJ,GAAEY,CAAC;AAAE,YAAGI,KAAG,EAAE,QAAOA;AAAE,YAAI,IAAEie,EAAG,QAAQjf,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAES,IAAEwe,EAAG,QAAQjf,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAE2c,IAAEsC,EAAG,QAAQre,EAAE,CAAC,EAAE,QAAQ,CAACZ,EAAE,CAAC,GAAE+F,IAAEkZ,EAAG,QAAQre,EAAE,CAAC,EAAE,QAAQ,CAACZ,EAAE,CAAC;AAAE,eAAO,EAAE,aAAa+F,CAAC,EAAE,aAAatF,EAAE,aAAakc,CAAC,CAAC,EAAE;MAAQ,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYsC,KAAI,UAAU,CAAC,aAAYA,KAAI,UAAU,CAAC,aAAYA,KAAI,UAAU,CAAC,aAAYA,GAAG;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAEje,IAAE,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAAE,iBAAOA,EAAE,OAAQ;AAAA,QAAA;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAI0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAEke,EAAG,QAAQvC,CAAC,GAAEE,IAAEqC,EAAG,QAAQxe,CAAC,GAAEmG,IAAEqY,EAAG,QAAQtC,CAAC,GAAEE,IAAEoC,EAAG,QAAQlZ,CAAC,GAAE9F,IAAEc,EAAE,SAAS8b,CAAC,EAAE,aAAaD,EAAE,SAAShW,CAAC,CAAC;AAAE,iBAAO3G,EAAE,OAAQ;AAAA,QAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAIe,IAAE,IAAIie,EAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,GAAEvC,IAAE,IAAIuC,EAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,GAAExe,IAAE,IAAIwe,EAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,IAAIA,EAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,GAAEtC,IAAE,IAAIsC,EAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,GAAElZ,IAAE,IAAIkZ,EAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,GAAEle,IAAE,IAAIke,EAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,IAAIA,EAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,GAAErC,IAAEF,EAAE,SAAS3b,CAAC,EAAE,aAAagF,EAAE,SAAStF,CAAC,CAAC,GAAEmG,IAAE+V,EAAE,SAASlc,CAAC,EAAE,aAAaO,EAAE,SAASD,CAAC,CAAC,GAAE8b,IAAE7b,EAAE,SAAS+E,CAAC,EAAE,aAAa4W,EAAE,SAASD,CAAC,CAAC,GAAEzc,IAAE2c,EAAE,WAAWC,CAAC,EAAE,eAAc/c,IAAE8G,EAAE,WAAWiW,CAAC,EAAE,YAAW;AAAG,eAAOY,EAAE,MAAMxd,CAAC,KAAGwd,EAAE,WAAWxd,CAAC,KAAGwd,EAAE,MAAM3d,CAAC,KAAG2d,EAAE,WAAW3d,CAAC,IAAE,OAAK,IAAIke,EAAE/d,GAAEH,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAEE,GAAEY,GAAE;AAAC,YAAII,IAAE,MAAK,KAAG,EAAE,IAAEJ,EAAE,MAAIZ,EAAE,IAAEY,EAAE,IAAGH,KAAG,EAAE,IAAEG,EAAE,MAAIZ,EAAE,IAAEY,EAAE,IAAG+b,IAAE,IAAElc;AAAE,YAAG,IAAE,GAAE;AAAC,cAAGA,KAAG,EAAE,QAAOL,EAAE,OAAOuc,CAAC;AAAE,UAAA3b,IAAE,IAAEP;AAAA,QAAC,OAAK;AAA8B,cAA1B,EAAE,IAAE,MAAyBA,KAAG,EAAE,QAAOL,EAAE,OAAOuc,CAAC;AAAE,UAAA3b,IAAE,CAAC,IAAEP;AAAA,QAAC;AAAC,YAAIsF,IAAE3F,EAAE,kBAAgBY;AAAE,eAAO2b,KAAG5W,KAAG,CAAC4W,KAAG5W,IAAE3F,EAAE,OAAOuc,CAAC,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,eAAO,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEvc;AAAA,IAAC;AAAI,IAAA8e,GAAG,kBAAgB;AAAM,QAAIC,KAAG,WAAU;AAAC,eAAS/e,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,YAAG,KAAK,QAAO;AAAC,cAAI,IAAE,KAAK,aAAc,IAAC,KAAK,YAAa;AAAC,iBAAO,KAAK,YAAY,GAAE,CAAC;AAAA,QAAC;AAAC,eAAOqd,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE,GAAE;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,SAAO,KAAK,YAAY,GAAE,CAAC,IAAEA,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,YAAa,IAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,aAAc,IAAC,KAAK,YAAa,IAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAA,QAAE,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACV,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE3c;AAAA,IAAC;AAAI,IAAA+e,GAAG,IAAE,GAAEA,GAAG,IAAE,GAAEA,GAAG,IAAE,GAAEA,GAAG,IAAE;AAAE,QAAIC,IAAG,WAAU;AAAC,eAAShf,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,eAAO8e,GAAG,iBAAiB,GAAE,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAY,OAAM;AAAC,cAAI,IAAE,UAAU,CAAC,GAAElf,IAAE,EAAE,SAAO;AAAE,cAAGA,IAAE,EAAE,OAAM,IAAI8c,EAAE,mEAAmE;AAAE,mBAAQlc,IAAE,EAAE,CAAC,GAAEI,IAAE,GAAE,IAAE,GAAE,KAAGhB,GAAE,KAAI;AAAC,gBAAIS,IAAE,EAAE,CAAC;AAAE,YAAAA,EAAE,IAAEG,EAAE,MAAIA,IAAEH,GAAEO,IAAE;AAAA,UAAE;AAAC,cAAI2b,IAAE3b;AAAE;AAAG,aAAC2b,KAAG,KAAG,MAAIA,IAAE3c;AAAA,iBAAS,EAAE2c,CAAC,EAAE,SAAS/b,CAAC,KAAG+b,MAAI3b;AAAG,cAAI+E,IAAE/E;AAAE;AAAG,YAAA+E,KAAGA,IAAE,KAAG/F;AAAA,iBAAQ,EAAE+F,CAAC,EAAE,SAASnF,CAAC,KAAGmF,MAAI/E;AAAG,cAAID,IAAE,EAAE4b,CAAC,GAAEC,IAAE,EAAE7W,CAAC;AAAE,cAAGhF,EAAE,SAASH,CAAC,KAAGgc,EAAE,SAAShc,CAAC,KAAGG,EAAE,SAAS6b,CAAC,EAAE,QAAM;AAAG,cAAIhW,IAAExG,EAAE,MAAMW,GAAEH,GAAEgc,CAAC,GAAEC,IAAE;AAAK,iBAAOA,IAAMjW,MAAJ,IAAM7F,EAAE,IAAE6b,EAAE,IAAEhW,IAAE,GAAEiW;AAAA,QAAC;AAAC,YAAGgC,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,cAAIlf,IAAE,UAAU,CAAC,GAAEH,IAAEG,EAAE,KAAI,IAAG;AAAE,cAAGH,IAAE,EAAE,OAAM,IAAIgd,EAAE,mEAAmE;AAAE,mBAAQjd,IAAEI,EAAE,cAAc,CAAC,GAAE6C,IAAE,GAAEnD,IAAE,GAAEA,KAAGG,GAAEH,KAAI;AAAC,gBAAIqE,KAAE/D,EAAE,cAAcN,CAAC;AAAE,YAAAqE,GAAE,IAAEnE,EAAE,MAAIA,IAAEmE,IAAElB,IAAEnD;AAAA,UAAE;AAAC,cAAIsW,KAAE,MAAKjU,KAAEc;AAAE;AAAG,aAACd,MAAG,KAAG,MAAIA,KAAElC,IAAGmW,KAAEhW,EAAE,cAAc+B,EAAC;AAAA,iBAAQiU,GAAE,SAASpW,CAAC,KAAGmC,OAAIc;AAAG,cAAIia,KAAE,MAAKC,KAAEla;AAAE;AAAG,YAAAka,MAAGA,KAAE,KAAGld,GAAEid,KAAE9c,EAAE,cAAc+c,EAAC;AAAA,iBAAQD,GAAE,SAASld,CAAC,KAAGmd,OAAIla;AAAG,cAAGmT,GAAE,SAASpW,CAAC,KAAGkd,GAAE,SAASld,CAAC,KAAGoW,GAAE,SAAS8G,EAAC,EAAE,QAAM;AAAG,cAAIjc,KAAEV,EAAE,MAAM6V,IAAEpW,GAAEkd,EAAC;AAAE,iBAAWjc,OAAJ,IAAMmV,GAAE,IAAE8G,GAAE,IAAEjc,KAAE;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEV;AAAA,IAAC,EAAG;AAAC,IAAAgf,EAAG,YAAU,IAAGA,EAAG,QAAMA,EAAG,WAAUA,EAAG,mBAAiB,GAAEA,EAAG,OAAKA,EAAG,kBAAiBA,EAAG,YAAU,GAAEA,EAAG,WAASA,EAAG;AAAU,QAAIC,KAAG,WAAU;AAAC,eAASjf,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,0BAA0B,GAAE,CAAC;AAAE,eAAO,IAAE,MAAI,IAAE,KAAK,0BAA0B,GAAE,IAAE,CAAC,IAAG,IAAE,MAAI,KAAK,YAAU,MAAK,KAAK,4BAA4B,CAAC,IAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,OAAO,QAAS,EAAC,eAAc;AAAG,QAAAwd,GAAE,OAAO,KAAK,YAAU,KAAG,KAAK,YAAU,EAAE,QAAO,wDAAwD;AAAE,YAAI,IAAE,EAAE,KAAK,YAAU,CAAC,GAAE,IAAE,EAAE,KAAK,YAAU,CAAC,GAAE,IAAEwB,EAAG,MAAM,KAAK,WAAU,GAAE,CAAC,GAAEpe,IAAE;AAAG,SAAC,EAAE,IAAE,KAAK,UAAU,KAAG,EAAE,IAAE,KAAK,UAAU,KAAG,MAAIoe,EAAG,oBAAkB,EAAE,IAAE,KAAK,UAAU,KAAG,EAAE,IAAE,KAAK,UAAU,KAAG,MAAIA,EAAG,eAAape,IAAE,KAAIA,MAAI,KAAK,YAAU,KAAK,YAAU;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,QAAO,EAAG,eAAc;AAAkC,YAA5B,IAAE,KAAG,IAAE,KAAG,EAAE,UAAmB,EAAE,CAAC,EAAE,MAAI,EAAE,IAAE,CAAC,EAAE,EAAE,QAAM;AAAG,YAAI,IAAEwd,EAAE;AAAK,eAAO,EAAE,CAAC,EAAE,IAAE,EAAE,IAAE,CAAC,EAAE,MAAI,IAAEA,EAAE,QAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,+BAA8B,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,EAAE,QAAS,EAAC,eAAgB,GAAC,IAAE,GAAE,IAAE,EAAE,SAAO,GAAE,IAAI,EAAQ,KAAK,cAAZ,QAAuB,EAAE,CAAC,EAAE,IAAE,KAAK,UAAU,OAAK,KAAK,SAAO,GAAE,KAAK,YAAU,GAAE,KAAK,YAAU,EAAE,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,OAAO,QAAS,EAAC,SAAU;AAAC,aAAK,SAAO,EAAE,oBAAmB,KAAK,OAAO,UAAW,MAAG,KAAK,SAAO,KAAK,OAAO,OAAM,GAAG,KAAK,YAAU,KAAK,OAAO,UAAU,iBAAiB,SAAO;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,EAAE,SAAQ,GAAG,EAAE,aAAW;AAAC,cAAI,IAAE,EAAE,KAAM;AAAC,YAAE,UAAW,KAAE,KAAK,4BAA4B,CAAC;AAAA,QAAC;AAAC,QAAAZ,GAAE,OAAW,KAAK,cAAT,KAAoB,KAAK,UAAU,OAAO,KAAK,OAAO,cAAa,CAAE,GAAE,uCAAuC,GAAM,KAAK,cAAT,IAAmB,KAAK,wBAAyB,IAAC,KAAK,0BAAyB,GAAG,KAAK,cAAY,KAAK,QAAO,KAAK,iBAAiB,KAAK,QAAO,KAAK,SAAS,MAAIY,EAAE,SAAO,KAAK,cAAY,KAAK,OAAO,OAAQ;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,YAAU,IAAG,KAAK,YAAU,MAAK,KAAK,SAAO,MAAK,KAAK,cAAY;AAAA,MAAI,EAAC,CAAC,CAAC,GAAEpe;AAAA,IAAC,EAAG,GAACkf,KAAG,SAASlf,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,EAAEtc,GAAEJ,GAAE;AAAC,YAAIY;AAAE,eAAOhB,EAAE,MAAK8c,CAAC,IAAG9b,IAAEI,EAAE,KAAK,MAAKhB,IAAEI,IAAE,QAAMJ,IAAE,OAAKI,CAAC,GAAG,KAAGJ,IAAE,IAAIge,EAAEhe,CAAC,IAAE,QAAOY,EAAE,OAAK,OAAO,KAAK,EAAC,mBAAkB8b,EAAC,CAAC,EAAE,CAAC,GAAE9b;AAAA,MAAC;AAAC,aAAOZ,EAAE0c,GAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAE,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAE5W,EAAC,GAAEyZ,KAAG,WAAU;AAAC,eAASnf,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAE,KAAK,QAAM,CAAA;AAAA,MAAE;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,aAAK,MAAM,KAAK,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM,MAAO;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAW,KAAK,MAAM,WAAf;AAAA,MAAqB,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,KAAIof,IAAG,SAASpf,GAAEY,GAAE;AAAC,MAAAJ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,EAAEL,GAAE;AAAC,YAAIJ;AAAE,eAAOJ,EAAE,MAAKa,CAAC,IAAGT,IAAE0c,EAAE,KAAK,IAAI,GAAG,QAAM,CAAA,GAAGtc,aAAage,MAAGpe,EAAE,OAAOI,CAAC,GAAEJ;AAAA,MAAC;AAAC,aAAOA,EAAES,GAAE,CAAC,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACke,IAAGP,EAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAA,QAAE,GAAE,EAAC,KAAI,OAAM,OAAM,SAASxe,GAAE;AAAC,eAAW,UAAU,WAAd,IAAqB,KAAK,MAAM,KAAKA,CAAC,IAAE,KAAK,MAAM,OAAO,UAAU,CAAC,GAAE,GAAE,UAAU,CAAC,CAAC,GAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,aAAK,QAAM,CAAA;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASA,GAAE;AAAC,YAAIQ,GAAEJ,IAAE8C,EAAElD,CAAC;AAAE,YAAG;AAAC,eAAII,EAAE,EAAG,GAAC,EAAEI,IAAEJ,EAAE,KAAK,QAAM;AAAC,gBAAIY,IAAER,EAAE;AAAM,iBAAK,MAAM,KAAKQ,CAAC;AAAA,UAAC;AAAA,QAAC,SAAOhB,GAAE;AAAC,UAAAI,EAAE,EAAEJ,CAAC;AAAA,QAAC,UAAC;AAAQ,UAAAI,EAAE;QAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASJ,GAAEQ,GAAE;AAAC,YAAIJ,IAAE,KAAK,MAAMJ,CAAC;AAAE,eAAO,KAAK,MAAMA,CAAC,IAAEQ,GAAEJ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,IAAIyf,GAAG,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS7f,GAAE;AAAC,YAAGA,IAAE,KAAGA,KAAG,KAAK,OAAO,OAAM,IAAI8e;AAAG,eAAO,KAAK,MAAM9e,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAW,KAAK,MAAM,WAAf;AAAA,MAAqB,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASA,GAAE;AAAC,QAAAA,IAAE,KAAK,MAAM,KAAM,SAASQ,GAAEJ,GAAE;AAAC,iBAAOJ,EAAE,QAAQQ,GAAEJ,CAAC;AAAA,QAAC,CAAC,IAAG,KAAK,MAAM;MAAM,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM,MAAO;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASJ,GAAE;AAAC,iBAAQQ,IAAE,GAAEJ,IAAE,KAAK,MAAM,QAAOI,IAAEJ,GAAEI,IAAI,KAAG,KAAK,MAAMA,CAAC,MAAIR,EAAE,QAAM,CAAC,CAAC,KAAK,MAAM,OAAOQ,GAAE,CAAC;AAAE,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAIY,GAAE,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM,OAAM;AAAA,MAAE,EAAC,CAAC,CAAC,GAAEP;AAAA,IAAC,EAAEke,IAAG,OAAO,QAAQ,GAAEc,KAAG,WAAU;AAAC,eAASrf,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,YAAUJ,GAAE,KAAK,WAAS;AAAA,MAAC;AAAC,aAAOA,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAG,KAAK,aAAW,KAAK,UAAU,OAAO,OAAM,IAAIxB;AAAE,eAAO,KAAK,UAAU,IAAI,KAAK,UAAU;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,WAAS,KAAK,UAAU,KAAM;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,UAAU,IAAI,KAAK,WAAS,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,aAAK,UAAU,OAAO,KAAK,UAAU,IAAI,KAAK,QAAQ,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEwB;AAAA,IAAC,KAAIsf,KAAG,WAAU;AAAC,eAAStf,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,iBAAQ,IAAE,KAAK,aAAa,YAAW,EAAE,QAAO;AAAK,YAAE,KAAM,EAAC,WAAW,EAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAe,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,MAAK,IAAE,EAAE,SAAU,EAAC,SAAU,GAAC,EAAE,aAAW;AAAC,cAAI,IAAE,EAAE,KAAI;AAAG,cAAG,EAAE,UAAS,KAAI,EAAE,SAAS,aAAY;AAAC,gBAAE;AAAE;AAAA,UAAK;AAAA,QAAC;AAAC,YAAU,MAAP,KAAS,OAAM,IAAIkf,GAAG,8CAA4C,EAAE,cAAe,CAAA;AAAE,UAAE,SAAU,EAAC,cAAc,CAAC;AAAE,iBAAQte,IAAE,EAAE,SAAQ,EAAG,SAAU,GAACA,EAAE,aAAW;AAAC,cAAI0b,IAAE1b,EAAE,KAAI;AAAG,UAAA0b,EAAE,WAAW,EAAE,GAAE,KAAK,cAAcA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,aAAK,kBAAmB;AAAC,YAAI,IAAE,KAAK,QAAQ,QAAS;AAAC,UAAE,QAAS,GAAC,EAAE,SAAU,GAAC,EAAE,cAAc8B,EAAE,OAAM,CAAC,GAAE,KAAK,cAAc,CAAC,GAAE,KAAK,cAAc,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,aAAK,aAAa,CAAC,GAAE,KAAK,QAAQ,SAAS,KAAK,YAAY,GAAE,KAAK,kBAAgB,KAAK,QAAQ;MAAe,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,iBAAQ,IAAE,KAAK,aAAa,SAAQ,GAAG,EAAE,QAAS,KAAE;AAAC,cAAI,IAAE,EAAE;AAAO,YAAE,SAASA,EAAE,KAAK,KAAG,KAAG,EAAE,SAASA,EAAE,IAAI,KAAG,KAAG,CAAC,EAAE,wBAAsB,EAAE,YAAY,EAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAID,MAAE,IAAE,IAAIgB,MAAG,IAAE,EAAE,QAAS;AAAC,aAAI,EAAE,QAAQ,CAAC,GAAE,EAAE,IAAI,CAAC,GAAE,EAAE,WAAW,EAAE,GAAE,CAAC,EAAE,QAAS,KAAE;AAAC,cAAIve,IAAE,EAAE;AAAc,YAAE,IAAIA,CAAC,GAAE,KAAK,iBAAiBA,CAAC;AAAE,mBAAQ0b,IAAE1b,EAAE,WAAW,YAAW0b,EAAE,QAAO,KAAI;AAAC,gBAAIjc,IAAEic,EAAE,KAAM,EAAC,OAAQ;AAAC,gBAAG,CAACjc,EAAE,UAAW,GAAC;AAAC,kBAAIkc,IAAElc,EAAE,QAAO;AAAG,gBAAE,SAASkc,CAAC,MAAI,EAAE,QAAQA,CAAC,GAAE,EAAE,IAAIA,CAAC;AAAA,YAAE;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,gBAAgB,IAAE,EAAE,gBAAgB,IAAE,KAAG,KAAK,gBAAgB,IAAE,EAAE,gBAAgB,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAU,KAAK,SAAZ,MAAiB;AAAC,mBAAQ,IAAE,IAAIsB,MAAE,IAAE,KAAK,aAAa,SAAU,GAAC,EAAE,QAAS,IAAE,UAAQ,IAAE,EAAE,KAAI,EAAG,QAAO,EAAG,eAAgB,GAAC,IAAE,GAAE,IAAE,EAAE,SAAO,GAAE,IAAI,GAAE,gBAAgB,EAAE,CAAC,CAAC;AAAE,eAAK,OAAK;AAAA,QAAC;AAAC,eAAO,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAIW;AAAG,aAAI,EAAE,IAAI,CAAC,GAAE,CAAC,EAAE,MAAK,KAAI;AAAC,cAAI,IAAE,EAAE,IAAK;AAAC,eAAK,IAAI,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,EAAE;AAAS,UAAE,SAASJ,EAAE,MAAK,EAAE,SAASA,EAAE,KAAK,CAAC,GAAE,EAAE,SAASA,EAAE,OAAM,EAAE,SAASA,EAAE,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE,GAAE;AAAC,UAAE,WAAW,EAAE,GAAE,KAAK,OAAO,IAAI,CAAC;AAAE,iBAAQ,IAAE,EAAE,WAAW,YAAW,EAAE,QAAS,KAAE;AAAC,cAAI,IAAE,EAAE,KAAM;AAAC,eAAK,aAAa,IAAI,CAAC;AAAE,cAAIxd,IAAE,EAAE,OAAQ,EAAC,QAAS;AAAC,UAAAA,EAAE,eAAa,EAAE,KAAKA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACgB,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,UAAQ,MAAK,KAAK,eAAa,IAAIwd,KAAG,KAAK,SAAO,IAAIA,KAAG,KAAK,kBAAgB,MAAK,KAAK,OAAK,MAAK,KAAK,UAAQ,IAAIH;AAAA,MAAE,EAAC,CAAC,CAAC,GAAEjf;AAAA,IAAC,EAAC,GAAGmK,KAAG,WAAU;AAAC,eAASnK,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAIY,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,GAAE0b,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,GAAEjc,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,GAAEkc,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,GAAE5W,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,GAAEhF,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,GAAE6b,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,GAAEhW,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,IAAE,EAAE,GAAEiW,MAAI7b,IAAE+E,IAAE/E,IAAE+E,MAAItF,IAAEmc,IAAEnc,IAAEmc,MAAI,GAAE3c,MAAIyc,IAAE3b,IAAE2b,IAAE3b,MAAI4b,IAAE/V,IAAE+V,IAAE/V,MAAI,GAAE9G,IAAE,EAAE,IAAE+c,GAAEhd,IAAE,EAAE,IAAEI,GAAE6C,IAAE,EAAE,IAAE+Z,GAAEld,KAAE,EAAE,IAAEM,GAAE+D,KAAE,EAAE,IAAE6Y,GAAEC,KAAE,EAAE,IAAE7c,GAAEgW,KAAE,EAAE,IAAE4G,GAAE7a,KAAE,EAAE,IAAE/B,GAAE8c,KAAEld,IAAEF,IAAEqd,KAAEla,IAAEhD,GAAEgB,KAAEhB,IAAEH,KAAEmD,IAAEjD,GAAEod,KAAEH,KAAE9a,IAAEkb,KAAEjH,KAAEjS,IAAEmZ,KAAEnZ,KAAEhC,KAAEiU,KAAE6G,IAAEM,KAAEL,KAAEG,KAAED,KAAED,IAAEK,MAAGL,KAAEG,KAAED,KAAEpc,MAAGsc,IAAEE,MAAGL,KAAEnc,KAAEic,KAAEI,MAAGC;AAAE,eAAOK,EAAE,MAAMJ,EAAC,KAAGI,EAAE,WAAWJ,EAAC,KAAGI,EAAE,MAAMH,EAAC,KAAGG,EAAE,WAAWH,EAAC,IAAE,OAAK,IAAIU,EAAEX,KAAER,GAAES,KAAErd,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEG;AAAA,IAAC,EAAG,GAACuf,KAAG,WAAU;AAAC,eAASvf,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE,GAAE,GAAEY,GAAE;AAAC,iBAAQ0b,IAAE,GAAEjc,IAAE,GAAEA,IAAE,IAAEO,GAAEP,IAAI,GAAE,IAAEic,CAAC,IAAE,EAAEjc,CAAC,GAAEic;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,eAAM,EAAC,kBAAiB;AAAA,EAAI,EAAE,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEtc;AAAA,IAAC,EAAG,GAACwf,KAAG,WAAU;AAAC,eAASxf,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,YAAIJ,IAAE,KAAK,IAAI,CAAC;AAAE,eAAOyd,EAAE,WAAWzd,CAAC,KAAGyd,EAAE,MAAMzd,CAAC,IAAEA,IAAEA,IAAEI,EAAE;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAIY,IAAE;AAAE,eAAO,IAAEA,MAAIA,IAAE,IAAG,IAAEA,MAAIA,IAAE,IAAG,IAAEA,MAAIA,IAAE,IAAGA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE;AAAA,QAAC;AAAC,YAAG,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEA,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAE1b,IAAEA,IAAE,IAAE0b,IAAEA,IAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,IAAE,IAAE,IAAG,CAAC,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE;AAAE,iBAAO,IAAE,MAAI,IAAE,IAAG,IAAE,MAAI,IAAE,IAAG;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI1b,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE/E;AAAE,iBAAO0b,IAAE3W,MAAIA,IAAE2W,IAAGjc,IAAEsF,MAAIA,IAAEtF,IAAGkc,IAAE5W,MAAIA,IAAE4W,IAAG5W;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,gBAAO,IAAE,KAAG;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE3F;AAAA,IAAC,EAAC;AAAG,IAAAwf,GAAG,SAAO,KAAK,IAAI,EAAE;AAAE,QAAIC,KAAG,WAAU;AAAC,eAASzf,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAEJ,GAAEY,GAAEI,GAAE;AAAC,YAAG,EAAE,OAAOhB,CAAC,EAAE,QAAOI,EAAE,eAAe,GAAEQ,GAAEI,CAAC;AAAE,YAAGJ,EAAE,OAAOI,CAAC,EAAE,QAAOZ,EAAE,eAAeY,GAAE,GAAEhB,CAAC;AAAE,YAAI,IAAE;AAAG,YAAGie,GAAE,WAAW,GAAEje,GAAEY,GAAEI,CAAC,GAAE;AAAC,cAAIP,KAAGT,EAAE,IAAE,EAAE,MAAIgB,EAAE,IAAEJ,EAAE,MAAIZ,EAAE,IAAE,EAAE,MAAIgB,EAAE,IAAEJ,EAAE;AAAG,cAAOH,MAAJ,EAAM,KAAE;AAAA,eAAO;AAAC,gBAAIkc,KAAG,EAAE,IAAE/b,EAAE,MAAII,EAAE,IAAEJ,EAAE,MAAI,EAAE,IAAEA,EAAE,MAAII,EAAE,IAAEJ,EAAE,IAAGmF,MAAI,EAAE,IAAEnF,EAAE,MAAIZ,EAAE,IAAE,EAAE,MAAI,EAAE,IAAEY,EAAE,MAAIZ,EAAE,IAAE,EAAE,MAAIS,GAAEM,IAAE4b,IAAElc;AAAE,aAACM,IAAE,KAAGA,IAAE,KAAGgF,IAAE,KAAGA,IAAE,OAAK,IAAE;AAAA,UAAG;AAAA,QAAC,MAAM,KAAE;AAAG,eAAO,IAAE6Z,GAAG,IAAIxf,EAAE,eAAe,GAAEQ,GAAEI,CAAC,GAAEZ,EAAE,eAAeJ,GAAEY,GAAEI,CAAC,GAAEZ,EAAE,eAAeQ,GAAE,GAAEZ,CAAC,GAAEI,EAAE,eAAeY,GAAE,GAAEhB,CAAC,CAAC,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAG,EAAE,MAAI,EAAE,KAAG,EAAE,MAAI,EAAE,EAAE,QAAO,EAAE,SAAS,CAAC;AAAE,YAAI,KAAG,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,IAAGgB,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI;AAAE,YAAGA,KAAG,EAAE,QAAO,EAAE,SAAS,CAAC;AAAE,YAAGA,KAAG,EAAE,QAAO,EAAE,SAAS,CAAC;AAAE,YAAI0b,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI;AAAE,eAAO,KAAK,IAAIA,CAAC,IAAE,KAAK,KAAK,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,KAAG,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,IAAG1b,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI;AAAE,eAAO,KAAK,IAAIA,CAAC,IAAE,KAAK,KAAK,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAEhB,GAAE;AAAC,YAAOA,EAAE,WAAN,EAAa,OAAM,IAAI8c,EAAE,6CAA6C;AAAE,iBAAQlc,IAAE,EAAE,SAASZ,EAAE,CAAC,CAAC,GAAEgB,IAAE,GAAEA,IAAEhB,EAAE,SAAO,GAAEgB,KAAI;AAAC,cAAI,IAAEZ,EAAE,eAAe,GAAEJ,EAAEgB,CAAC,GAAEhB,EAAEgB,IAAE,CAAC,CAAC;AAAE,cAAEJ,MAAIA,IAAE;AAAA,QAAE;AAAC,eAAOA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAER;AAAA,IAAC,KAAI0f,KAAG,WAAU;AAAC,eAAS1f,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,WAAU,CAAC,aAAY,SAAOye,GAAG,UAAU,CAAC,GAAEM,EAAE;AAAA,iBAAc,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,OAAO,GAAE,CAAC;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE/e;AAAA,IAAC,EAAC,GAAG2f,KAAG,WAAU;AAAC,eAAS3f,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAA,QAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,GAAG4f,KAAG,WAAU;AAAC,eAAS5f,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,EAAE;AAAO,YAAG,KAAG,EAAE,QAAO;AAAE,YAAI,IAAE,GAAE,IAAE,IAAI4d;AAAE,UAAE,cAAc,GAAE,CAAC;AAAE,iBAAQhd,IAAE,EAAE,GAAE0b,IAAE,EAAE,GAAEjc,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,YAAE,cAAcA,GAAE,CAAC;AAAE,cAAIkc,IAAE,EAAE,GAAE5W,IAAE,EAAE,GAAEhF,IAAE4b,IAAE3b,GAAE4b,IAAE7W,IAAE2W;AAAE,eAAG,KAAK,KAAK3b,IAAEA,IAAE6b,IAAEA,CAAC,GAAE5b,IAAE2b,GAAED,IAAE3W;AAAA,QAAC;AAAC,eAAO;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE3F;AAAA,IAAC,EAAG,GAAC6f,KAAG,SAAS7f,IAAG;AAAC,MAAAR,EAAE,MAAKQ,CAAC;AAAA,IAAC,GAAE8f,KAAG,WAAU;AAAC,eAAS9f,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,iBAAQY,IAAE,KAAK,IAAI,EAAE,aAAc,GAAC,EAAE,aAAY,CAAE,GAAE0b,IAAE,GAAEA,IAAE1b,GAAE0b,IAAI,GAAE,YAAY,GAAEA,GAAE,EAAE,YAAY,GAAEA,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,EAAE,KAAM;AAAC,eAAW,MAAJ,KAAO,EAAE,KAAG,MAAK,EAAE,YAAY,GAAEyC,GAAG,CAAC,MAAI,EAAE,YAAY,IAAE,GAAEA,GAAG,CAAC,KAAG,EAAE,YAAY,GAAEA,GAAG,CAAC,MAAI,EAAE,YAAY,IAAE,GAAEA,GAAG,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd;AAAsB,cAAGN,GAAG,UAAU,CAAC,GAAEM,EAAE,KAAG,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC,GAAEnf,IAAE,UAAU,CAAC;AAAE,YAAAI,EAAE,OAAO,GAAEJ,GAAEI,EAAE,OAAO,CAAC,CAAC;AAAA,UAAC,WAASye,GAAG,UAAU,CAAC,GAAEM,EAAE,KAAG,UAAU,CAAC,aAAYnB,GAAE;AAAC,gBAAIpd,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE,IAAEZ,EAAE,QAAQY,GAAEJ,CAAC;AAAE,gBAAG,KAAG,EAAE,QAAO;AAAK,YAAAR,EAAE,OAAOQ,GAAE,CAAC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIH,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAE4b;AAAE,cAAG5b,KAAG,EAAE,QAAO;AAAK,mBAAQ6b,IAAEnc,EAAE,QAAOmG,IAAEb,IAAEtF,EAAE,KAAM,IAAC,IAAEA,EAAE,QAAOoc,IAAE,GAAEA,IAAEjW,GAAEiW,IAAI,UAAQ5c,IAAE,GAAEA,IAAEQ,EAAE,aAAc,GAACR,IAAI,CAAAQ,EAAE,YAAYoc,GAAE5c,GAAE2c,EAAE,aAAaD,IAAEE,KAAGjW,GAAE3G,CAAC,CAAC;AAAE,cAAG8F,EAAE,UAAQjG,IAAE,GAAEA,IAAEW,EAAE,aAAc,GAACX,IAAI,CAAAW,EAAE,YAAYmG,GAAE9G,GAAEW,EAAE,YAAY,GAAEX,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,KAAI;AAAG,YAAG,MAAI,EAAE,KAAI,EAAG,QAAM;AAAG,iBAAQ,IAAE,KAAK,IAAI,EAAE,aAAc,GAAC,EAAE,aAAc,CAAA,GAAEkB,IAAE,GAAEA,IAAE,GAAEA,IAAI,UAAQ0b,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,cAAIjc,IAAE,EAAE,YAAYO,GAAE0b,CAAC,GAAEC,IAAE,EAAE,YAAY3b,GAAE0b,CAAC;AAAE,cAAG,EAAE,YAAY1b,GAAE0b,CAAC,MAAI,EAAE,YAAY1b,GAAE0b,CAAC,MAAI,CAACe,EAAE,MAAMhd,CAAC,KAAG,CAACgd,EAAE,MAAMd,CAAC,GAAG,QAAM;AAAA,QAAE;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAOvc,EAAE,mBAAmB,GAAE,GAAE,EAAE,SAAO,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE,IAAE,IAAGP,IAAE,MAAKkc,IAAE/b,GAAE+b,KAAG3b,GAAE2b,KAAI;AAAC,gBAAI5W,IAAE/F,EAAE,cAAc2c,CAAC;AAAE,aAAQlc,MAAP,QAAUA,EAAE,UAAUsF,CAAC,IAAE,OAAKtF,IAAEsF,GAAE,IAAE4W;AAAA,UAAE;AAAC,iBAAO;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE3c,GAAEY,GAAE;AAAC,YAAII,IAAE,EAAE,OAAOJ,GAAEZ,EAAE,aAAY,CAAE,GAAE,IAAEA,EAAE,KAAM;AAAC,YAAGI,EAAE,KAAKJ,GAAE,GAAEgB,GAAE,GAAE,CAAC,GAAE,IAAE,EAAE,UAAQP,IAAE,GAAEA,IAAEG,GAAEH,IAAI,CAAAL,EAAE,KAAKJ,GAAE,IAAE,GAAEgB,GAAEP,GAAE,CAAC;AAAE,eAAOO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,iBAAQhB,IAAE,EAAE,KAAI,IAAG,GAAEY,IAAE,KAAK,MAAMZ,IAAE,CAAC,GAAEgB,IAAE,GAAEA,KAAGJ,GAAEI,IAAI,CAAAZ,EAAE,KAAK,GAAEY,GAAEhB,IAAEgB,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAG,MAAI,EAAE,QAAO;AAAK,iBAAQ,IAAE,GAAE,IAAE,EAAE,aAAY,GAAG,KAAI;AAAC,cAAIA,IAAE,EAAE,YAAY,GAAE,CAAC;AAAE,YAAE,YAAY,GAAE,GAAE,EAAE,YAAY,GAAE,CAAC,CAAC,GAAE,EAAE,YAAY,GAAE,GAAEA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAEhB,GAAEY,GAAEI,GAAE,GAAE;AAAC,iBAAQP,IAAE,GAAEA,IAAE,GAAEA,IAAI,CAAAL,EAAE,UAAU,GAAEJ,IAAES,GAAEG,GAAEI,IAAEP,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAET,GAAE;AAAC,YAAIY,IAAEZ,EAAE;AAAO,eAAWY,MAAJ,IAAMZ,IAAEY,KAAG,IAAER,EAAE,iBAAiB,GAAEJ,GAAE,CAAC,IAAEA,EAAE,YAAY,GAAEmf,GAAG,CAAC,MAAInf,EAAE,YAAYY,IAAE,GAAEue,GAAG,CAAC,KAAGnf,EAAE,YAAY,GAAEmf,GAAG,CAAC,MAAInf,EAAE,YAAYY,IAAE,GAAEue,GAAG,CAAC,IAAEnf,IAAEI,EAAE,iBAAiB,GAAEJ,GAAEY,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,KAAI,GAAG,IAAI,KAAG,EAAE,MAAI,EAAE,YAAY,GAAEue,GAAG,CAAC,KAAG,EAAE,MAAI,EAAE,YAAY,GAAEA,GAAG,CAAC,EAAE,QAAO;AAAE,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAEnf,GAAEY,GAAE;AAAC,YAAII,IAAE,EAAE,OAAOJ,GAAEZ,EAAE,aAAc,CAAA,GAAE,IAAEA,EAAE,KAAM;AAAC,QAAAI,EAAE,KAAKJ,GAAE,GAAEgB,GAAE,GAAE,CAAC;AAAE,iBAAQP,IAAE,GAAEA,IAAEG,GAAEH,IAAI,CAAAL,EAAE,KAAKJ,GAAE,GAAEgB,GAAEP,GAAE,CAAC;AAAE,eAAOO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,MAAK,IAAE,GAAE,IAAE,EAAE,KAAI,GAAG,KAAI;AAAC,cAAI,IAAE,EAAE,cAAc,CAAC;AAAE,WAAQ,MAAP,QAAU,EAAE,UAAU,CAAC,IAAE,OAAK,IAAE;AAAA,QAAE;AAAC,eAAO;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,EAAG,GAAC+f,IAAG,WAAU;AAAC,eAAS/f,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,gBAAO;UAAG,KAAKA,EAAE;AAAM,mBAAOA,EAAE;AAAA,UAAU,KAAKA,EAAE;AAAK,mBAAOA,EAAE;AAAA,UAAS,KAAKA,EAAE;AAAS,mBAAOA,EAAE;AAAA,UAAa,KAAKA,EAAE;AAAE,mBAAOA,EAAE;AAAA,UAAM,KAAKA,EAAE;AAAE,mBAAOA,EAAE;AAAA,UAAM,KAAKA,EAAE;AAAE,mBAAOA,EAAE;AAAA,QAAK;AAAC,cAAM,IAAI0c,EAAE,8BAA4B,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,gBAAOkC,GAAG,YAAY,CAAC;UAAG,KAAK5e,EAAE;AAAU,mBAAOA,EAAE;AAAA,UAAM,KAAKA,EAAE;AAAS,mBAAOA,EAAE;AAAA,UAAK,KAAKA,EAAE;AAAa,mBAAOA,EAAE;AAAA,UAAS,KAAKA,EAAE;AAAM,mBAAOA,EAAE;AAAA,UAAE,KAAKA,EAAE;AAAM,mBAAOA,EAAE;AAAA,UAAE,KAAKA,EAAE;AAAM,mBAAOA,EAAE;AAAA,QAAC;AAAC,cAAM,IAAI0c,EAAE,+BAA6B,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE1c;AAAA,IAAC,EAAG;AAAC,IAAA+f,EAAG,IAAE,GAAEA,EAAG,IAAE,GAAEA,EAAG,IAAE,GAAEA,EAAG,QAAM,IAAGA,EAAG,OAAK,IAAGA,EAAG,WAAS,IAAGA,EAAG,YAAU,KAAIA,EAAG,WAAS,KAAIA,EAAG,eAAa,KAAIA,EAAG,QAAM,KAAIA,EAAG,QAAM,KAAIA,EAAG,QAAM;AAAI,QAAIC,KAAG,WAAU;AAAC,eAAShgB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAA,MAAA,EAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAACigB,KAAG,WAAU;AAAC,eAASjgB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE;AAAA,QAAE,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAA,MAAE,EAAA,CAAC,CAAC,GAAEA;AAAA,IAAC,KAAIkgB,KAAG,SAASlgB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,eAAO,KAAK,QAAS,IAAC,IAAIwd,OAAE,KAAK,QAAQ,eAAe,IAAIA,IAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK,SAAQ,KAAI,KAAK,SAAU;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK,QAAQ,kBAAiB;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,IAAIxd,EAAE,KAAK,QAAQ,QAAO,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAgC,OAAO,UAAU,CAAC,KAA5B,YAA+B,UAAU,CAAC,aAAYyd,GAAE;AAAC,cAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,cAAG,CAAC,KAAK,kBAAkBR,CAAC,EAAE,QAAM;AAAG,cAAII,IAAEJ;AAAE,cAAG,KAAK,QAAQ,KAAI,MAAKI,EAAE,QAAQ,KAAI,EAAG,QAAM;AAAG,mBAAQY,IAAE,GAAEA,IAAE,KAAK,QAAQ,KAAI,GAAGA,IAAI,KAAG,CAAC,KAAK,MAAM,KAAK,QAAQ,cAAcA,CAAC,GAAEZ,EAAE,QAAQ,cAAcY,CAAC,GAAER,CAAC,EAAE,QAAM;AAAG,iBAAM;AAAA,QAAE;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAQb,IAAE,GAAEA,IAAE,KAAK,MAAM,KAAK,QAAQ,KAAM,IAAC,CAAC,GAAEA,KAAI;AAAC,cAAIQ,IAAE,KAAK,QAAQ,KAAM,IAAC,IAAER;AAAE,cAAG,CAAC,KAAK,QAAQ,cAAcA,CAAC,EAAE,OAAO,KAAK,QAAQ,cAAcQ,CAAC,CAAC,GAAE;AAAC,gBAAG,KAAK,QAAQ,cAAcR,CAAC,EAAE,UAAU,KAAK,QAAQ,cAAcQ,CAAC,CAAC,IAAE,GAAE;AAAC,kBAAIJ,IAAE,KAAK,QAAQ,KAAM;AAAC,cAAAkgB,GAAG,QAAQlgB,CAAC,GAAE,KAAK,UAAQA;AAAA,YAAC;AAAC,mBAAO;AAAA,UAAI;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK,QAAO,IAAG,OAAK,KAAK,QAAQ,cAAc,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAO,KAAK,SAAU,IAACmgB,EAAG,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,CAAC,KAAK,QAAO,KAAI,KAAK,eAAe,CAAC,EAAE,SAAS,KAAK,eAAe,KAAK,aAAc,IAAC,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,YAAIvgB,IAAE,KAAK,QAAQ,KAAI;AAAG,eAAOsgB,GAAG,QAAQtgB,CAAC,GAAE,KAAK,WAAU,EAAG,iBAAiBA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,YAAU,OAAK,KAAK,UAAU,KAAK,aAAc,IAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOse,EAAE;AAAA,MAAmB,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO8B,GAAG,OAAO,KAAK,OAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,KAAK,QAAQ,KAAI;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQpgB,IAAE,UAAU,CAAC,GAAEQ,IAAER,GAAEI,IAAE,GAAEY,IAAE,GAAEZ,IAAE,KAAK,QAAQ,UAAQY,IAAER,EAAE,QAAQ,UAAQ;AAAC,gBAAIY,IAAE,KAAK,QAAQ,cAAchB,CAAC,EAAE,UAAUI,EAAE,QAAQ,cAAcQ,CAAC,CAAC;AAAE,gBAAOI,MAAJ,EAAM,QAAOA;AAAE,YAAAhB,KAAIY;AAAA,UAAG;AAAC,iBAAOZ,IAAE,KAAK,QAAQ,SAAO,IAAEY,IAAER,EAAE,QAAQ,KAAM,IAAC,KAAG;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIsc,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAED;AAAE,iBAAOjc,EAAE,QAAQ,KAAK,SAAQkc,EAAE,OAAO;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAGkC,GAAG,UAAU,CAAC,GAAEkB,EAAE,EAAE,UAAQngB,IAAE,UAAU,CAAC,GAAEQ,IAAE,GAAEA,IAAE,KAAK,QAAQ,KAAM,GAACA,IAAI,CAAAR,EAAE,OAAO,KAAK,QAAQ,cAAcQ,CAAC,CAAC;AAAA,iBAAUye,GAAG,UAAU,CAAC,GAAEwB,EAAE,GAAE;AAAC,cAAIrgB,IAAE,UAAU,CAAC;AAAE,cAAO,KAAK,QAAQ,KAAM,MAAvB,EAAwB,QAAO;AAAK,mBAAQY,IAAE,GAAEA,IAAE,KAAK,QAAQ,WAASZ,EAAE,OAAO,KAAK,SAAQY,CAAC,GAAE,CAACZ,EAAE,OAAQ,IAAEY,IAAI;AAAC,UAAAZ,EAAE,kBAAmB,KAAE,KAAK,gBAAiB;AAAA,QAAA,WAAS6e,GAAG,UAAU,CAAC,GAAEuB,EAAE,GAAE;AAAC,cAAIpf,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,OAAO,IAAI;AAAA,QAAC,WAAS6d,GAAG,UAAU,CAAC,GAAE5I,CAAC,GAAE;AAAC,cAAIyG,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,OAAO,IAAI;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAM,IAAI2B;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASze,GAAE;AAAC,eAAOA,aAAaa;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASb,GAAE;AAAC,eAAO,KAAK,QAAQ,cAAcA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOse,EAAE;AAAA,MAAmB,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAO,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAW,KAAK,QAAQ,WAAjB;AAAA,MAAuB,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASte,GAAE;AAAC,YAAUA,MAAP,SAAWA,IAAE,KAAK,WAAU,EAAG,6BAA4B,EAAG,OAAO,CAAA,CAAE,IAAOA,EAAE,KAAI,MAAV,EAAa,OAAM,IAAIkd,EAAE,mDAAiDld,EAAE,SAAO,uBAAuB;AAAE,aAAK,UAAQA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASA,GAAE;AAAC,iBAAQQ,IAAE,GAAEA,IAAE,KAAK,QAAQ,KAAM,GAACA,IAAI,KAAG,KAAK,QAAQ,cAAcA,CAAC,EAAE,OAAOR,CAAC,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK,QAAO,IAAG,OAAK,KAAK,UAAU,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASA,GAAE;AAAC,eAAO,KAAK,WAAU,EAAG,YAAY,KAAK,QAAQ,cAAcA,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACqgB,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,UAAQ,MAAS,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAIrgB,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,YAAA8d,EAAE,aAAa,KAAK,MAAK9d,CAAC,GAAE,KAAK,KAAKR,CAAC;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEa;AAAA,IAAC,EAAEyd,CAAC,GAAEqC,KAAG,SAASngB,IAAG;AAAC,MAAAR,EAAE,MAAKQ,CAAC;AAAA,IAAC,GAAEogB,KAAG,SAASpgB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,YAAG,KAAK,QAAS,EAAC,QAAO,IAAIwd;AAAE,YAAIre,IAAE,IAAIqe;AAAE,eAAOre,EAAE,gBAAgB,KAAK,aAAa,KAAK,CAAC,GAAE,KAAK,aAAa,KAAK,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK,QAAS,IAAC,CAAE,IAAC,CAAC,KAAK,cAAe,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,IAAIa,EAAE,KAAK,aAAa,KAAM,GAAC,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAgC,OAAO,UAAU,CAAC,KAA5B,YAA+B,UAAU,CAAC,aAAYyd,GAAE;AAAC,cAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,iBAAM,CAAC,CAAC,KAAK,kBAAkBR,CAAC,MAAI,EAAE,CAAC,KAAK,QAAS,KAAE,CAACA,EAAE,cAAY,KAAK,cAAYA,EAAE,QAAS,KAAE,KAAK,MAAMA,EAAE,cAAe,GAAC,KAAK,cAAa,GAAGQ,CAAC;AAAA,QAAE;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAW,KAAK,aAAa,KAAI,MAA1B,IAA6B,KAAK,aAAa,cAAc,CAAC,IAAE;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAO0f,EAAG;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK,WAAY,EAAC,YAAY,KAAK,aAAa,KAAM,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOjC,EAAE;AAAA,MAAc,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,KAAK,YAAU,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAU,KAAK,oBAAZ,KAA4B,OAAM,IAAI,sBAAsB,4BAA4B;AAAE,eAAO,KAAK,gBAAgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAER;AAAE,iBAAO,KAAK,gBAAgB,UAAUQ,EAAE,cAAe,CAAA;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAEI,IAAEhB;AAAE,iBAAOY,EAAE,QAAQ,KAAK,cAAaI,EAAE,YAAY;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAG6d,GAAG,UAAU,CAAC,GAAEkB,EAAE,GAAE;AAAC,cAAIngB,IAAE,UAAU,CAAC;AAAE,cAAG,KAAK,QAAS,EAAC,QAAO;AAAK,UAAAA,EAAE,OAAO,KAAK,cAAa,CAAE;AAAA,QAAC,WAASif,GAAG,UAAU,CAAC,GAAEwB,EAAE,GAAE;AAAC,cAAIjgB,IAAE,UAAU,CAAC;AAAE,cAAG,KAAK,QAAO,EAAG,QAAO;AAAK,UAAAA,EAAE,OAAO,KAAK,cAAa,CAAC,GAAEA,EAAE,uBAAqB,KAAK,gBAAe;AAAA,QAAE,WAASye,GAAG,UAAU,CAAC,GAAEuB,EAAE,GAAE;AAAC,cAAIpgB,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,OAAO,IAAI;AAAA,QAAC,WAAS6e,GAAG,UAAU,CAAC,GAAE5I,CAAC,GAAE;AAAC,cAAIrV,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,OAAO,IAAI;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,WAAY,EAAC,yBAA0B;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOsd,EAAE;AAAA,MAAc,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAU,KAAK,cAAe,MAA3B,KAA4B,OAAM,IAAI,sBAAsB,4BAA4B;AAAE,eAAO,KAAK,cAAe,EAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAW,KAAK,aAAa,KAAM,MAA5B;AAAA,MAA4B,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASte,GAAE;AAAC,QAAOA,MAAP,SAAWA,IAAE,KAAK,WAAU,EAAG,6BAA4B,EAAG,OAAO,CAAE,CAAA,IAAGge,GAAE,OAAOhe,EAAE,KAAM,KAAE,CAAC,GAAE,KAAK,eAAaA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC2gB,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,eAAa;AAAK,YAAI3gB,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAA8d,EAAE,aAAa,KAAK,MAAK9d,CAAC,GAAE,KAAK,KAAKR,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEa;AAAA,IAAC,EAAEyd,CAAC,GAAEuC,KAAG,WAAU;AAAC,eAASrgB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAY,OAAM;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,IAAIA,EAAE,aAAa,CAAC,CAAC;AAAA,QAAC;AAAC,YAAGye,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,cAAInf,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,IAAII,EAAE,aAAaJ,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAY,OAAM;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,cAAG,EAAE,SAAO,EAAE,QAAO;AAAE,mBAAQ,IAAE,GAAE,IAAE,EAAE,CAAC,EAAE,GAAE,IAAE,GAAE,IAAE,EAAE,SAAO,GAAE,KAAI;AAAC,gBAAIgB,IAAE,EAAE,CAAC,EAAE,IAAE,GAAE0b,IAAE,EAAE,IAAE,CAAC,EAAE,GAAEjc,IAAE,EAAE,IAAE,CAAC,EAAE;AAAE,iBAAGO,KAAGP,IAAEic;AAAA,UAAE;AAAC,iBAAO,IAAE;AAAA,QAAC;AAAC,YAAGmC,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,cAAIxC,IAAE,UAAU,CAAC,GAAE5W,IAAE4W,EAAE;AAAO,cAAG5W,IAAE,EAAE,QAAO;AAAE,cAAIhF,IAAE,IAAIid,KAAEpB,IAAE,IAAIoB,KAAEpX,IAAE,IAAIoX;AAAE,UAAArB,EAAE,cAAc,GAAEC,CAAC,GAAED,EAAE,cAAc,GAAE/V,CAAC;AAAE,cAAIiW,IAAED,EAAE;AAAE,UAAAhW,EAAE,KAAGiW;AAAE,mBAAQ5c,IAAE,GAAEH,IAAE,GAAEA,IAAEiG,IAAE,GAAEjG,IAAI,CAAAiB,EAAE,IAAE6b,EAAE,GAAEA,EAAE,IAAEhW,EAAE,GAAEgW,EAAE,IAAEhW,EAAE,GAAE+V,EAAE,cAAc7c,IAAE,GAAE8G,CAAC,GAAEA,EAAE,KAAGiW,GAAE5c,KAAG2c,EAAE,KAAG7b,EAAE,IAAE6F,EAAE;AAAG,iBAAO3G,IAAE;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEG;AAAA,IAAC,EAAG,GAACsgB,KAAG,WAAU;AAAC,eAAStgB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAI,IAAE,WAAU,IAAE,UAAU,CAAC;AAAE,YAAO,UAAU,WAAd,EAAqB,GAAE,KAAM,SAASR,GAAEQ,GAAE;AAAC,iBAAOR,EAAE,UAAUQ,CAAC;AAAA,QAAC,CAAG;AAAA,iBAAa,UAAU,WAAd,EAAqB,GAAE,KAAM,SAASA,GAAEJ,GAAE;AAAC,iBAAO,EAAE,CAAC,EAAE,QAAQI,GAAEJ,CAAC;AAAA,QAAC,CAAG;AAAA,iBAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,EAAE,MAAM,UAAU,CAAC,GAAE,UAAU,CAAC,CAAC;AAAE,YAAE,KAAM;AAAC,cAAI,IAAE,EAAE,MAAM,GAAE,UAAU,CAAC,CAAC,EAAE,OAAO,GAAE,EAAE,MAAM,UAAU,CAAC,GAAE,EAAE,MAAM,CAAC;AAAE,YAAE,OAAO,GAAE,EAAE,MAAM;AAAE,cAAIgB,GAAE0b,IAAE5Z,EAAE,CAAC;AAAE,cAAG;AAAC,iBAAI4Z,EAAE,EAAC,GAAG,EAAE1b,IAAE0b,EAAE,EAAG,GAAE,QAAM;AAAC,kBAAIjc,IAAEO,EAAE;AAAM,gBAAE,KAAKP,CAAC;AAAA,YAAC;AAAA,UAAC,SAAOb,GAAE;AAAC,YAAA8c,EAAE,EAAE9c,CAAC;AAAA,UAAC,UAAC;AAAQ,YAAA8c,EAAE,EAAC;AAAA,UAAE;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIC,IAAE,EAAE,MAAM,UAAU,CAAC,GAAE,UAAU,CAAC,CAAC;AAAE,UAAAA,EAAE,KAAM,SAASvc,GAAEJ,GAAE;AAAC,mBAAO,EAAE,CAAC,EAAE,QAAQI,GAAEJ,CAAC;AAAA,UAAC;AAAI,cAAI+F,IAAE,EAAE,MAAM,GAAE,UAAU,CAAC,CAAC,EAAE,OAAO4W,GAAE,EAAE,MAAM,UAAU,CAAC,GAAE,EAAE,MAAM,CAAC;AAAE,YAAE,OAAO,GAAE,EAAE,MAAM;AAAE,cAAI5b,GAAE6b,IAAE9Z,EAAEiD,CAAC;AAAE,cAAG;AAAC,iBAAI6W,EAAE,EAAG,GAAC,EAAE7b,IAAE6b,EAAE,EAAG,GAAE,QAAM;AAAC,kBAAIhW,IAAE7F,EAAE;AAAM,gBAAE,KAAK6F,CAAC;AAAA,YAAC;AAAA,UAAC,SAAOhH,GAAE;AAAC,YAAAgd,EAAE,EAAEhd,CAAC;AAAA,UAAC,UAAC;AAAQ,YAAAgd,EAAE,EAAG;AAAA,UAAA;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,YAAI,GAAE,IAAE,IAAI4C,KAAG,IAAE1c,EAAE,CAAC;AAAE,YAAG;AAAC,eAAI,EAAE,EAAG,GAAC,EAAE,IAAE,EAAE,KAAK,QAAM;AAAC,gBAAI9B,IAAE,EAAE;AAAM,cAAE,IAAIA,CAAC;AAAA,UAAC;AAAA,QAAC,SAAOpB,GAAE;AAAC,YAAE,EAAEA,CAAC;AAAA,QAAC,UAAC;AAAQ,YAAE,EAAC;AAAA,QAAE;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,EAAE,MAAM,GAAE,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEQ;AAAA,IAAC,EAAG,GAACugB,KAAG,SAASvgB,IAAG;AAAC,MAAAR,EAAE,MAAKQ,CAAC;AAAA,IAAC,GAAEwgB,KAAG,SAASxgB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,eAAO,KAAK,OAAO,oBAAqB;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,YAAG,KAAK,QAAO,EAAG,QAAM,CAAA;AAAG,iBAAQb,IAAE,IAAI,MAAM,KAAK,aAAY,CAAE,EAAE,KAAK,IAAI,GAAEQ,IAAE,IAAGJ,IAAE,KAAK,OAAO,eAAc,GAAGY,IAAE,GAAEA,IAAEZ,EAAE,QAAOY,IAAI,CAAAhB,EAAE,EAAEQ,CAAC,IAAEJ,EAAEY,CAAC;AAAE,iBAAQI,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,UAAQ0b,IAAE,KAAK,OAAO1b,CAAC,EAAE,eAAc,GAAGP,IAAE,GAAEA,IAAEic,EAAE,QAAOjc,IAAI,CAAAb,EAAE,EAAEQ,CAAC,IAAEsc,EAAEjc,CAAC;AAAE,eAAOb;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAIA,IAAE;AAAE,QAAAA,KAAG6gB,GAAG,OAAO,KAAK,OAAO,sBAAuB,CAAA;AAAE,iBAAQrgB,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,CAAAR,KAAG6gB,GAAG,OAAO,KAAK,OAAOrgB,CAAC,EAAE,sBAAuB,CAAA;AAAE,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQA,IAAE,KAAK,OAAO,KAAM,GAACQ,IAAE,IAAI,MAAM,KAAK,OAAO,MAAM,EAAE,KAAK,IAAI,GAAEJ,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,CAAAI,EAAEJ,CAAC,IAAE,KAAK,OAAOA,CAAC,EAAE,KAAI;AAAG,eAAO,IAAIS,EAAEb,GAAEQ,GAAE,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAA0E,YAAlE,KAAK,mBAAkB,MAA3B,KAAiD,KAAK,WAAZ,QAAmC,KAAK,OAAO,aAAc,MAA9B,EAA+B,QAAM;AAAG,iBAAQR,IAAE,KAAK,OAAO,yBAAwBQ,IAAE,KAAK,uBAAsBJ,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,cAAIY,IAAEhB,EAAE,KAAKI,CAAC;AAAE,cAAGY,MAAIR,EAAE,QAAS,KAAEQ,MAAIR,EAAE,QAAS,EAAC,QAAM;AAAG,cAAIY,IAAEpB,EAAE,KAAKI,CAAC;AAAE,cAAGgB,MAAIZ,EAAE,QAAS,KAAEY,MAAIZ,EAAE,QAAS,EAAC,QAAM;AAAA,QAAE;AAAC,iBAAQsc,IAAE9c,EAAE,KAAK,CAAC,GAAEa,IAAEb,EAAE,KAAK,CAAC,GAAE+c,IAAE,GAAEA,KAAG,GAAEA,KAAI;AAAC,cAAI5W,IAAEnG,EAAE,KAAK+c,CAAC,GAAE5b,IAAEnB,EAAE,KAAK+c,CAAC;AAAE,cAAG5W,MAAI2W,MAAK3b,MAAIN,GAAG,QAAM;AAAG,UAAAic,IAAE3W,GAAEtF,IAAEM;AAAA,QAAC;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAgC,OAAO,UAAU,CAAC,KAA5B,YAA+B,UAAU,CAAC,aAAYmd,GAAE;AAAC,cAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,cAAG,CAAC,KAAK,kBAAkBR,CAAC,EAAE,QAAM;AAAG,cAAII,IAAEJ,GAAEgB,IAAE,KAAK,QAAO8b,IAAE1c,EAAE;AAAuC,cAA7B,CAACY,EAAE,YAAY8b,GAAEtc,CAAC,KAAc,KAAK,OAAO,WAASJ,EAAE,OAAO,OAAO,QAAM;AAAG,mBAAQ2c,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,KAAG,CAAC,KAAK,OAAOA,CAAC,EAAE,YAAY3c,EAAE,OAAO2c,CAAC,GAAEvc,CAAC,EAAE,QAAM;AAAG,iBAAM;AAAA,QAAE;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,eAAK,SAAO,KAAK,WAAW,KAAK,QAAO,EAAE;AAAE,mBAAQb,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,MAAK,OAAOA,CAAC,IAAE,KAAK,WAAW,KAAK,OAAOA,CAAC,GAAE,EAAE;AAAE,UAAA8gB,GAAG,KAAK,KAAK,MAAM;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAItgB,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,cAAGI,EAAE,QAAO,EAAG,QAAO;AAAK,cAAIQ,IAAER,EAAE,sBAAqB,GAAGY,IAAEkf,GAAG,mBAAmBtf,GAAE,GAAEA,EAAE,KAAI,IAAG,CAAC;AAAE,UAAAsf,GAAG,OAAOtf,GAAEI,GAAE,EAAE,GAAEoe,EAAG,MAAMxe,CAAC,MAAIZ,KAAGkgB,GAAG,QAAQtf,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK,OAAO,cAAa;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,eAAO,KAAK,OAAO;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,iBAAQhB,IAAE,KAAK,gBAAe,EAAG,QAAO,GAAGQ,IAAE,IAAI,MAAM,KAAK,mBAAkB,CAAE,EAAE,KAAK,IAAI,GAAEJ,IAAE,GAAEA,IAAEI,EAAE,QAAOJ,IAAI,CAAAI,EAAEJ,CAAC,IAAE,KAAK,iBAAiBA,CAAC,EAAE,QAAS;AAAC,eAAO,KAAK,aAAa,cAAcJ,GAAEQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO8d,EAAE;AAAA,MAAgB,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAIte,IAAE;AAAE,QAAAA,KAAG,KAAK,OAAO,UAAS;AAAG,iBAAQQ,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,CAAAR,KAAG,KAAK,OAAOQ,CAAC,EAAE;AAAY,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQA,IAAE,KAAK,OAAO,aAAY,GAAGQ,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,CAAAR,KAAG,KAAK,OAAOQ,CAAC,EAAE;AAAe,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK,gBAAiB,EAAC,WAAU;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,GAAEQ,GAAE;AAAC,YAAIJ,IAAEJ,EAAE,KAAM;AAAC,eAAO,KAAK,UAAUI,GAAEI,CAAC,GAAEJ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEQ,IAAE,KAAK,QAAOJ,IAAEJ,EAAE;AAAO,iBAAOQ,EAAE,mBAAmBJ,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE0b,IAAE9b,GAAEH,IAAE,KAAK,QAAOkc,IAAED,EAAE,QAAO3W,IAAEtF,EAAE,mBAAmBkc,GAAE3b,CAAC;AAAE,cAAO+E,MAAJ,EAAM,QAAOA;AAAE,mBAAQhF,IAAE,KAAK,mBAAoB,GAAC6b,IAAEF,EAAE,mBAAoB,GAAC9V,IAAE,GAAEA,IAAE7F,KAAG6F,IAAEgW,KAAG;AAAC,gBAAIC,IAAE,KAAK,iBAAiBjW,CAAC,GAAE3G,IAAEyc,EAAE,iBAAiB9V,CAAC,GAAE9G,IAAE+c,EAAE,mBAAmB5c,GAAEe,CAAC;AAAE,gBAAOlB,MAAJ,EAAM,QAAOA;AAAE,YAAA8G;AAAA,UAAG;AAAC,iBAAOA,IAAE7F,IAAE,IAAE6F,IAAEgW,IAAE,KAAG;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAGiC,GAAG,UAAU,CAAC,GAAEkB,EAAE,GAAE;AAAC,cAAIngB,IAAE,UAAU,CAAC;AAAE,eAAK,OAAO,MAAMA,CAAC;AAAE,mBAAQQ,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,MAAK,OAAOA,CAAC,EAAE,MAAMR,CAAC;AAAA,QAAC,WAASif,GAAG,UAAU,CAAC,GAAEwB,EAAE,GAAE;AAAC,cAAIrgB,IAAE,UAAU,CAAC;AAAE,cAAG,KAAK,OAAO,MAAMA,CAAC,GAAE,CAACA,EAAE,SAAS,UAAQY,IAAE,GAAEA,IAAE,KAAK,OAAO,WAAS,KAAK,OAAOA,CAAC,EAAE,MAAMZ,CAAC,GAAE,CAACA,EAAE,WAAUY,IAAI;AAAC,UAAAZ,EAAE,kBAAiB,KAAI,KAAK,gBAAe;AAAA,QAAE,WAAS6e,GAAG,UAAU,CAAC,GAAEuB,EAAE,GAAE;AAAC,cAAIpf,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,OAAO,IAAI;AAAA,QAAC,WAAS6d,GAAG,UAAU,CAAC,GAAE5I,CAAC,GAAE;AAAC,cAAIyG,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,OAAO,IAAI,GAAE,KAAK,OAAO,MAAMA,CAAC;AAAE,mBAAQjc,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,MAAK,OAAOA,CAAC,EAAE,MAAMic,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAG,KAAK,QAAO,EAAG,QAAO,KAAK,aAAa;AAAwB,YAAI9c,IAAE,IAAI,MAAM,KAAK,OAAO,SAAO,CAAC,EAAE,KAAK,IAAI;AAAE,QAAAA,EAAE,CAAC,IAAE,KAAK;AAAO,iBAAQQ,IAAE,GAAEA,IAAE,KAAK,OAAO,QAAOA,IAAI,CAAAR,EAAEQ,IAAE,CAAC,IAAE,KAAK,OAAOA,CAAC;AAAE,eAAOR,EAAE,UAAQ,IAAE,KAAK,WAAY,EAAC,iBAAiBA,EAAE,CAAC,EAAE,sBAAuB,CAAA,IAAE,KAAK,WAAY,EAAC,sBAAsBA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOse,EAAE;AAAA,MAAgB,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,OAAO,QAAO;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASte,GAAE;AAAC,eAAO,KAAK,OAAOA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC+gB,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,SAAO,MAAK,KAAK,SAAO;AAAK,YAAI/gB,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,YAAGke,EAAE,aAAa,KAAK,MAAKle,CAAC,GAASJ,MAAP,SAAWA,IAAE,KAAK,WAAY,EAAC,iBAAkB,IAASQ,MAAP,SAAWA,IAAE,CAAA,IAAI8d,EAAE,gBAAgB9d,CAAC,EAAE,OAAM,IAAI0c,EAAE,sCAAsC;AAAE,YAAGld,EAAE,QAAO,KAAIse,EAAE,oBAAoB9d,CAAC,EAAE,OAAM,IAAI0c,EAAE,kCAAkC;AAAE,aAAK,SAAOld,GAAE,KAAK,SAAOQ;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEK;AAAA,IAAC,EAAEyd,CAAC,GAAE2C,KAAG,SAASzgB,GAAE;AAAC,MAAAQ,EAAEI,GAAEZ,CAAC;AAAE,UAAIJ,IAAE4G,EAAE5F,CAAC;AAAE,eAASA,IAAG;AAAC,eAAOpB,EAAE,MAAKoB,CAAC,GAAEhB,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOgB;AAAA,IAAC,EAAEsd,EAAC,GAAEwC,KAAG,SAAS1gB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,EAAEtc,GAAE;AAAC,YAAIJ;AAAE,eAAOJ,EAAE,MAAK8c,CAAC,IAAG1c,IAAEgB,EAAE,KAAK,IAAI,GAAG,QAAM,CAAA,GAAGZ,aAAage,MAAGpe,EAAE,OAAOI,CAAC,GAAEJ;AAAA,MAAC;AAAC,aAAOA,EAAE0c,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,SAAS9c,GAAE;AAAC,YAAIQ,GAAEJ,IAAE8C,EAAE,KAAK,KAAK;AAAE,YAAG;AAAC,eAAI9C,EAAE,EAAG,GAAC,EAAEI,IAAEJ,EAAE,EAAG,GAAE;AAAO,gBAAOI,EAAE,MAAM,UAAUR,CAAC,MAAvB,EAAyB,QAAM;AAAA,QAAG,SAAOA,GAAE;AAAC,UAAAI,EAAE,EAAEJ,CAAC;AAAA,QAAC,UAAC;AAAQ,UAAAI,EAAE;QAAG;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASJ,GAAE;AAAC,YAAG,KAAK,SAASA,CAAC,EAAE,QAAM;AAAG,iBAAQQ,IAAE,GAAEJ,IAAE,KAAK,MAAM,QAAOI,IAAEJ,GAAEI;AAAK,cAAO,KAAK,MAAMA,CAAC,EAAE,UAAUR,CAAC,MAA7B,EAA+B,QAAM,CAAC,CAAC,KAAK,MAAM,OAAOQ,GAAE,GAAER,CAAC;AAAE,eAAO,KAAK,MAAM,KAAKA,CAAC,GAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASA,GAAE;AAAC,YAAIQ,GAAEJ,IAAE8C,EAAElD,CAAC;AAAE,YAAG;AAAC,eAAII,EAAE,EAAC,GAAG,EAAEI,IAAEJ,EAAE,EAAG,GAAE,QAAM;AAAC,gBAAIY,IAAER,EAAE;AAAM,iBAAK,IAAIQ,CAAC;AAAA,UAAC;AAAA,QAAC,SAAOhB,GAAE;AAAC,UAAAI,EAAE,EAAEJ,CAAC;AAAA,QAAC,UAAC;AAAQ,UAAAI,EAAE,EAAG;AAAA,QAAA;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,cAAM,IAAIqe;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAW,KAAK,MAAM,WAAf;AAAA,MAAqB,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM,MAAO;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,IAAI0C,GAAG,KAAK,KAAK;AAAA,MAAC,EAAC,CAAC,CAAC,GAAErE;AAAA,IAAC,EAAEmE,EAAE,GAAEE,KAAG,WAAU;AAAC,eAAS3gB,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,QAAMJ,GAAE,KAAK,WAAS;AAAA,MAAC;AAAC,aAAOA,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAG,KAAK,aAAW,KAAK,MAAM,OAAO,OAAM,IAAIxB;AAAE,eAAO,KAAK,MAAM,KAAK,UAAU;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,WAAS,KAAK,MAAM;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,cAAM,IAAIyf;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEje;AAAA,IAAC,EAAC,GAAG4gB,KAAG,SAAS5gB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,iBAAQb,IAAE,IAAIqe,MAAE7d,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,CAAAR,EAAE,gBAAgB,KAAK,YAAYQ,CAAC,EAAE,oBAAmB,CAAE;AAAE,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASA,GAAE;AAAC,eAAO,KAAK,YAAYA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,iBAAQA,IAAE,IAAI,MAAM,KAAK,aAAc,CAAA,EAAE,KAAK,IAAI,GAAEQ,IAAE,IAAGJ,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,UAAQY,IAAE,KAAK,YAAYZ,CAAC,EAAE,eAAc,GAAGgB,IAAE,GAAEA,IAAEJ,EAAE,QAAOI,IAAI,CAAApB,EAAE,EAAEQ,CAAC,IAAEQ,EAAEI,CAAC;AAAE,eAAOpB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,iBAAQA,IAAE,GAAEQ,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,CAAAR,KAAG,KAAK,YAAYQ,CAAC,EAAE,QAAO;AAAG,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQA,IAAE,IAAI,MAAM,KAAK,YAAY,MAAM,EAAE,KAAK,IAAI,GAAEQ,IAAE,GAAEA,IAAER,EAAE,QAAOQ,IAAI,CAAAR,EAAEQ,CAAC,IAAE,KAAK,YAAYA,CAAC,EAAE,KAAM;AAAC,eAAO,IAAIK,EAAEb,GAAE,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAgC,OAAO,UAAU,CAAC,KAA5B,YAA+B,UAAU,CAAC,aAAYse,GAAE;AAAC,cAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,cAAG,CAAC,KAAK,kBAAkBR,CAAC,EAAE,QAAM;AAAG,cAAII,IAAEJ;AAAE,cAAG,KAAK,YAAY,WAASI,EAAE,YAAY,OAAO,QAAM;AAAG,mBAAQY,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,KAAG,CAAC,KAAK,YAAYA,CAAC,EAAE,YAAYZ,EAAE,YAAYY,CAAC,GAAER,CAAC,EAAE,QAAM;AAAG,iBAAM;AAAA,QAAE;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAQb,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,MAAK,YAAYA,CAAC,EAAE,UAAW;AAAC,QAAA8gB,GAAG,KAAK,KAAK,WAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK,QAAS,IAAC,OAAK,KAAK,YAAY,CAAC,EAAE,cAAa;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,iBAAQ9gB,IAAEugB,EAAG,OAAM/f,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,CAAAR,IAAE,KAAK,IAAIA,GAAE,KAAK,YAAYQ,CAAC,EAAE,qBAAsB,CAAA;AAAE,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,iBAAQA,IAAE,KAAK,YAAY,QAAOQ,IAAE,IAAIof,EAAG5f,CAAC,GAAEI,IAAE,GAAEA,IAAEJ,GAAEI,IAAI,CAAAI,EAAE,IAAI,KAAK,YAAYJ,CAAC,EAAE,QAAS,CAAA;AAAE,eAAO,KAAK,WAAY,EAAC,cAAcI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO8d,EAAE;AAAA,MAA2B,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQte,IAAEugB,EAAG,OAAM/f,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,CAAAR,IAAE,KAAK,IAAIA,GAAE,KAAK,YAAYQ,CAAC,EAAE,cAAc;AAAE,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAQA,IAAE,GAAEQ,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,CAAAR,KAAG,KAAK,YAAYQ,CAAC,EAAE;AAAY,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQA,IAAE,GAAEQ,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,CAAAR,KAAG,KAAK,YAAYQ,CAAC,EAAE,aAAc;AAAC,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,eAAO,KAAK,YAAY;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIA,IAAE,UAAU,CAAC,GAAEQ,IAAE,IAAI0gB,GAAGJ,GAAG,OAAO,KAAK,WAAW,CAAC,GAAE1gB,IAAE,IAAI8gB,GAAGJ,GAAG,OAAO9gB,EAAE,WAAW,CAAC;AAAE,iBAAO,KAAK,QAAQQ,GAAEJ,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE0b,IAAE9b,GAAEH,IAAE,KAAK,iBAAkB,GAACkc,IAAED,EAAE,iBAAkB,GAAC3W,IAAE,GAAEA,IAAEtF,KAAGsF,IAAE4W,KAAG;AAAC,gBAAI5b,IAAE,KAAK,aAAagF,CAAC,GAAE6W,IAAEF,EAAE,aAAa3W,CAAC,GAAEa,IAAE7F,EAAE,mBAAmB6b,GAAE5b,CAAC;AAAE,gBAAO4F,MAAJ,EAAM,QAAOA;AAAE,YAAAb;AAAA,UAAG;AAAC,iBAAOA,IAAEtF,IAAE,IAAEsF,IAAE4W,IAAE,KAAG;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAGkC,GAAG,UAAU,CAAC,GAAEkB,EAAE,EAAE,UAAQngB,IAAE,UAAU,CAAC,GAAEQ,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,MAAK,YAAYA,CAAC,EAAE,MAAMR,CAAC;AAAA,iBAAUif,GAAG,UAAU,CAAC,GAAEwB,EAAE,GAAE;AAAC,cAAIrgB,IAAE,UAAU,CAAC;AAAE,cAAO,KAAK,YAAY,WAArB,EAA4B,QAAO;AAAK,mBAAQY,IAAE,GAAEA,IAAE,KAAK,YAAY,WAAS,KAAK,YAAYA,CAAC,EAAE,MAAMZ,CAAC,GAAE,CAACA,EAAE,OAAM,IAAIY,IAAI;AAAC,UAAAZ,EAAE,kBAAmB,KAAE,KAAK,gBAAe;AAAA,QAAE,WAAS6e,GAAG,UAAU,CAAC,GAAEuB,EAAE,GAAE;AAAC,cAAIpf,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,OAAO,IAAI;AAAE,mBAAQ0b,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,MAAK,YAAYA,CAAC,EAAE,MAAM1b,CAAC;AAAA,QAAC,WAAS6d,GAAG,UAAU,CAAC,GAAE5I,CAAC,GAAE;AAAC,cAAIxV,IAAE,UAAU,CAAC;AAAE,UAAAA,EAAE,OAAO,IAAI;AAAE,mBAAQkc,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,MAAK,YAAYA,CAAC,EAAE,MAAMlc,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOyd,EAAE,2BAA2B,IAAI,GAAEN,GAAE,qBAAsB,GAAC;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOM,EAAE;AAAA,MAA2B,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,iBAAQte,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,KAAG,CAAC,KAAK,YAAYA,CAAC,EAAE,QAAO,EAAG,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,cAAY,MAAS,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAIA,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,gBAAG8d,EAAE,aAAa,KAAK,MAAK9d,CAAC,GAASR,MAAP,SAAWA,IAAE,CAAE,IAAEse,EAAE,gBAAgBte,CAAC,EAAE,OAAM,IAAIkd,EAAE,2CAA2C;AAAE,iBAAK,cAAYld;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEa;AAAA,IAAC,EAAEyd,CAAC,GAAE+C,KAAG,SAAS7gB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQb,IAAE,IAAI,MAAM,KAAK,YAAY,MAAM,EAAE,KAAK,IAAI,GAAEQ,IAAE,GAAEA,IAAER,EAAE,QAAOQ,IAAI,CAAAR,EAAEQ,CAAC,IAAE,KAAK,YAAYA,CAAC,EAAE,KAAM;AAAC,eAAO,IAAIK,EAAEb,GAAE,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAgC,OAAO,UAAU,CAAC,KAA5B,YAA+B,UAAU,CAAC,aAAYse,GAAE;AAAC,cAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,iBAAM,CAAC,CAAC,KAAK,kBAAkBR,CAAC,KAAGid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,KAAK,MAAKb,GAAEQ,CAAC;AAAA,QAAC;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAsB,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,cAAIb,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,YAAYA,CAAC,EAAE;QAAe;AAAC,eAAOid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,iBAAgB,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAO0f,EAAG;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOjC,EAAE;AAAA,MAAmB,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,WAAY,EAAC,yBAAwB;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOA,EAAE;AAAA,MAAmB,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACqC,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAI3gB,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAA4gB,GAAG,aAAa,KAAK,MAAKphB,GAAEQ,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEK;AAAA,IAAC,EAAEugB,EAAE,GAAEE,KAAG,SAAS9gB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,IAAIA,EAAE,KAAK,QAAQ,KAAI,GAAG,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAO0f,EAAG;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,CAAC,CAAC,KAAK,aAAWtD,EAAE7b,EAAEP,EAAE,SAAS,GAAE,YAAW,IAAI,EAAE,KAAK,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,YAAIb,IAAE,KAAK,QAAQ,KAAM;AAAC,eAAOsgB,GAAG,QAAQtgB,CAAC,GAAE,KAAK,WAAY,EAAC,iBAAiBA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOse,EAAE;AAAA,MAAmB,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,YAAG,CAAC,KAAK,QAAS,KAAE,CAACrB,EAAE7b,EAAEP,EAAE,SAAS,GAAE,YAAW,IAAI,EAAE,KAAK,IAAI,EAAE,OAAM,IAAIqc,EAAE,sDAAsD;AAAE,YAAG,KAAK,sBAAqB,EAAG,KAAM,KAAE,KAAG,KAAK,sBAAqB,EAAG,KAAI,IAAGrc,EAAE,mBAAmB,OAAM,IAAIqc,EAAE,mDAAiD,KAAK,sBAAuB,EAAC,KAAM,IAAC,uBAAuB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOoB,EAAE;AAAA,MAAmB,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAAkgB,GAAG,aAAa,KAAK,MAAK1gB,GAAEQ,CAAC,GAAE,KAAK,qBAAsB;AAAA,MAAA,EAAC,CAAC,CAAC,GAAEK;AAAA,IAAC,EAAE6f,EAAE;AAAE,IAAAY,GAAG,qBAAmB;AAAE,QAAIC,KAAG,SAAS/gB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,SAAS9c,GAAEQ,GAAE;AAAC,gBAAOR,GAAG;AAAA,UAAA,KAAK8c,EAAE;AAAE,iBAAK,IAAEtc;AAAE;AAAA,UAAM,KAAKsc,EAAE;AAAE,iBAAK,IAAEtc;AAAE;AAAA,UAAM;AAAQ,kBAAM,IAAI0c,EAAE,6BAA2Bld,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAOoe,EAAE;AAAA,MAAa,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASpe,GAAE;AAAC,gBAAOA,GAAG;AAAA,UAAA,KAAK8c,EAAE;AAAE,mBAAO,KAAK;AAAA,UAAE,KAAKA,EAAE;AAAE,mBAAO,KAAK;AAAA,QAAC;AAAC,cAAM,IAAII,EAAE,6BAA2Bld,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASA,GAAE;AAAC,cAAM,IAAIkd,EAAE,sDAAsD;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,IAAIJ,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,MAAI,KAAK,IAAE,OAAK,KAAK,IAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS9c,GAAE;AAAC,aAAK,IAAEA,EAAE,GAAE,KAAK,IAAEA,EAAE,GAAE,KAAK,IAAEA,EAAE,KAAM;AAAA,MAAA,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,CAAAoe,EAAE,aAAa,KAAK,IAAI;AAAA,iBAAc,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAYtB,GAAE;AAAC,gBAAI9c,IAAE,UAAU,CAAC;AAAE,YAAAoe,EAAE,aAAa,KAAK,MAAKpe,EAAE,GAAEA,EAAE,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAYoe,GAAE;AAAC,gBAAI5d,IAAE,UAAU,CAAC;AAAE,YAAA4d,EAAE,aAAa,KAAK,MAAK5d,EAAE,GAAEA,EAAE,CAAC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC;AAAE,UAAAod,EAAE,aAAa,KAAK,MAAKhe,GAAEY,GAAEod,EAAE,aAAa;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEtB;AAAA,IAAC,EAAEsB,CAAC;AAAE,IAAAmD,GAAG,IAAE,GAAEA,GAAG,IAAE,GAAEA,GAAG,IAAE,IAAGA,GAAG,IAAE;AAAG,QAAIC,KAAG,SAAShhB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS9c,GAAEQ,GAAE;AAAC,gBAAOR;UAAG,KAAK8c,EAAE;AAAE,iBAAK,IAAEtc;AAAE;AAAA,UAAM,KAAKsc,EAAE;AAAE,iBAAK,IAAEtc;AAAE;AAAA,UAAM,KAAKsc,EAAE;AAAE,iBAAK,KAAGtc;AAAE;AAAA,UAAM;AAAQ,kBAAM,IAAI0c,EAAE,6BAA2Bld,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASA,GAAE;AAAC,aAAK,KAAGA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAOoe,EAAE;AAAA,MAAa,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASpe,GAAE;AAAC,gBAAOA,GAAC;AAAA,UAAE,KAAK8c,EAAE;AAAE,mBAAO,KAAK;AAAA,UAAE,KAAKA,EAAE;AAAE,mBAAO,KAAK;AAAA,UAAE,KAAKA,EAAE;AAAE,mBAAO,KAAK;AAAA,QAAE;AAAC,cAAM,IAAII,EAAE,6BAA2Bld,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASA,GAAE;AAAC,cAAM,IAAIkd,EAAE,sDAAsD;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,IAAIJ,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,MAAI,KAAK,IAAE,OAAK,KAAK,IAAE,QAAM,KAAK,KAAM,IAAC;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS9c,GAAE;AAAC,aAAK,IAAEA,EAAE,GAAE,KAAK,IAAEA,EAAE,GAAE,KAAK,IAAEA,EAAE,KAAI,GAAG,KAAK,KAAGA,EAAE,KAAM;AAAA,MAAA,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,KAAG,MAAS,UAAU,WAAd,EAAqB,CAAAoe,EAAE,aAAa,KAAK,IAAI,GAAE,KAAK,KAAG;AAAA,iBAAc,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAYtB,GAAE;AAAC,gBAAI9c,IAAE,UAAU,CAAC;AAAE,YAAAoe,EAAE,aAAa,KAAK,MAAKpe,EAAE,GAAEA,EAAE,CAAC,GAAE,KAAK,KAAGA,EAAE;AAAA,UAAE,WAAS,UAAU,CAAC,aAAYoe,GAAE;AAAC,gBAAI5d,IAAE,UAAU,CAAC;AAAE,YAAA4d,EAAE,aAAa,KAAK,MAAK5d,EAAE,GAAEA,EAAE,CAAC,GAAE,KAAK,KAAG,KAAK,KAAI;AAAA,UAAE;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,UAAAgd,EAAE,aAAa,KAAK,MAAKhe,GAAEY,GAAEod,EAAE,aAAa,GAAE,KAAK,KAAGhd;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE0b;AAAA,IAAC,EAAEsB,CAAC;AAAE,IAAAoD,GAAG,IAAE,GAAEA,GAAG,IAAE,GAAEA,GAAG,IAAE,IAAGA,GAAG,IAAE;AAAE,QAAIC,KAAG,SAASjhB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS9c,GAAEQ,GAAE;AAAC,gBAAOR,GAAC;AAAA,UAAE,KAAKoe,EAAE;AAAE,iBAAK,IAAE5d;AAAE;AAAA,UAAM,KAAK4d,EAAE;AAAE,iBAAK,IAAE5d;AAAE;AAAA,UAAM,KAAK4d,EAAE;AAAE,iBAAK,IAAE5d;AAAE;AAAA,UAAM,KAAK4d,EAAE;AAAE,iBAAK,KAAG5d;AAAE;AAAA,UAAM;AAAQ,kBAAM,IAAI0c,EAAE,6BAA2Bld,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASA,GAAE;AAAC,aAAK,KAAGA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,GAAE;AAAC,gBAAOA,GAAC;AAAA,UAAE,KAAKoe,EAAE;AAAE,mBAAO,KAAK;AAAA,UAAE,KAAKA,EAAE;AAAE,mBAAO,KAAK;AAAA,UAAE,KAAKA,EAAE;AAAE,mBAAO,KAAK,KAAM;AAAA,UAAC,KAAKA,EAAE;AAAE,mBAAO,KAAK,KAAM;AAAA,QAAA;AAAC,cAAM,IAAIlB,EAAE,6BAA2Bld,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,IAAI8c,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,MAAI,KAAK,IAAE,OAAK,KAAK,IAAE,OAAK,KAAK,SAAO,QAAM,KAAK,KAAM,IAAC;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS9c,GAAE;AAAC,aAAK,IAAEA,EAAE,GAAE,KAAK,IAAEA,EAAE,GAAE,KAAK,IAAEA,EAAE,KAAM,GAAC,KAAK,KAAGA,EAAE,KAAI;AAAA,MAAE,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,KAAG,MAAS,UAAU,WAAd,EAAqB,CAAAoe,EAAE,aAAa,KAAK,IAAI,GAAE,KAAK,KAAG;AAAA,iBAAc,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAYtB,GAAE;AAAC,gBAAI9c,IAAE,UAAU,CAAC;AAAE,YAAAoe,EAAE,aAAa,KAAK,MAAKpe,CAAC,GAAE,KAAK,KAAGA,EAAE;AAAA,UAAE,WAAS,UAAU,CAAC,aAAYoe,GAAE;AAAC,gBAAI5d,IAAE,UAAU,CAAC;AAAE,YAAA4d,EAAE,aAAa,KAAK,MAAK5d,CAAC,GAAE,KAAK,KAAG,KAAK,KAAI;AAAA,UAAE;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC;AAAE,UAAAud,EAAE,aAAa,KAAK,MAAKhe,GAAEY,GAAEI,CAAC,GAAE,KAAK,KAAGP;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEic;AAAA,IAAC,EAAEsB,CAAC,GAAEsD,KAAG,WAAU;AAAC,eAASlhB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAO,aAAa+gB,KAAG,IAAE,aAAaC,MAAI,aAAaC,KAAG,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,eAAO,aAAaF,KAAG,IAAE,aAAaC,KAAG,IAAE,aAAaC,KAAG,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAOjhB,EAAE,OAAO,GAAE,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC;AAAE,iBAAWZ,MAAJ,IAAM,IAAImhB,OAAOnhB,MAAJ,KAAWY,MAAJ,IAAM,IAAIod,MAAMhe,MAAJ,KAAWY,MAAJ,IAAM,IAAIwgB,OAAOphB,MAAJ,KAAWY,MAAJ,IAAM,IAAIygB,OAAG,IAAIrD;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE5d;AAAA,IAAC,EAAC,GAAGmhB,KAAG,SAASnhB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,SAASb,GAAE;AAAC,eAAO,KAAK,IAAIA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAiC,OAAO,UAAU,CAAC,KAA7B,aAAgCif,GAAG,UAAU,CAAC,GAAET,EAAC,GAAE;AAAC,mBAAQxe,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,IAAGY,IAAEhB,EAAE,SAAU,GAACgB,EAAE,QAAO,IAAI,MAAK,IAAIA,EAAE,KAAI,GAAGR,CAAC,GAAEJ,IAAE;AAAG,iBAAOA;AAAA,QAAC;AAAC,eAAO6c,EAAE7b,EAAEP,EAAE,SAAS,GAAE,UAAS,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,iBAAQb,IAAEid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,SAAQ,IAAI,EAAE,KAAK,IAAI,GAAEL,IAAE,GAAEA,IAAE,KAAK,KAAI,GAAGA,IAAI,CAAAR,EAAE,IAAIQ,GAAE,KAAK,IAAIA,CAAC,EAAE,MAAO,CAAA;AAAE,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,QAAQa,EAAE,cAAc;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIb,IAAE,UAAU,CAAC;AAAE,cAAGA,EAAE,QAAO,KAAK,QAAQa,EAAE,cAAc;AAAE,mBAAQL,IAAE,KAAK,QAAOJ,IAAE,IAAI,MAAMI,CAAC,EAAE,KAAK,IAAI,GAAEQ,IAAE,GAAEA,IAAER,GAAEQ,IAAI,CAAAZ,EAAEY,CAAC,IAAE,KAAK,IAAIR,IAAEQ,IAAE,CAAC;AAAE,iBAAOZ;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAOid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,OAAM,IAAI,EAAE,KAAK,MAAKb,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAY,SAAkB,OAAO,UAAU,CAAC,KAA7B,WAA+B;AAAC,gBAAIQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,IAAII,GAAEJ,GAAE,EAAE,GAAE;AAAA,UAAE;AAAC,cAAG,UAAU,CAAC,aAAYge,KAAc,OAAO,UAAU,CAAC,KAA7B,WAA+B;AAAC,gBAAIpd,IAAE,UAAU,CAAC,GAAE8b,IAAE,UAAU,CAAC;AAAE,gBAAG,CAACA,KAAG,KAAK,KAAI,KAAI,GAAE;AAAC,kBAAIC,IAAE,KAAK,IAAI,KAAK,KAAM,IAAC,CAAC;AAAE,kBAAGA,EAAE,SAAS/b,CAAC,EAAE,QAAO;AAAA,YAAI;AAAC,YAAAic,EAAE7b,EAAEP,EAAE,SAAS,GAAE,OAAM,IAAI,EAAE,KAAK,MAAKG,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAY,UAAmB,OAAO,UAAU,CAAC,KAA7B,WAA+B;AAAC,gBAAImF,IAAE,UAAU,CAAC,GAAEhF,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,IAAIgF,GAAEhF,CAAC,GAAE;AAAA,UAAE;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAc,OAAO,UAAU,CAAC,KAA7B,aAAgC,UAAU,CAAC,aAAY,SAAkB,OAAO,UAAU,CAAC,KAA7B,WAA+B;AAAC,gBAAI6b,IAAE,UAAU,CAAC,GAAEhW,IAAE,UAAU,CAAC,GAAE3G,IAAE,UAAU,CAAC;AAAE,gBAAGA,EAAE,UAAQH,IAAE,GAAEA,IAAE8c,EAAE,QAAO9c,IAAI,MAAK,IAAI8c,EAAE9c,CAAC,GAAE8G,CAAC;AAAA,gBAAO,UAAQ/G,IAAE+c,EAAE,SAAO,GAAE/c,KAAG,GAAEA,IAAI,MAAK,IAAI+c,EAAE/c,CAAC,GAAE+G,CAAC;AAAE,mBAAM;AAAA,UAAE;AAAC,cAAc,OAAO,UAAU,CAAC,KAA7B,aAAgC,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,UAAU,CAAC,aAAYoX,GAAE;AAAC,gBAAIlb,IAAE,UAAU,CAAC,GAAEnD,IAAE,UAAU,CAAC,GAAEqE,KAAE,UAAU,CAAC;AAAE,gBAAG,CAACA,IAAE;AAAC,kBAAI8Y,KAAE,KAAK;AAAO,kBAAGA,KAAE,GAAE;AAAC,oBAAGha,IAAE,GAAE;AAAC,sBAAImT,KAAE,KAAK,IAAInT,IAAE,CAAC;AAAE,sBAAGmT,GAAE,SAAStW,CAAC,EAAE,QAAO;AAAA,gBAAI;AAAC,oBAAGmD,IAAEga,IAAE;AAAC,sBAAI9a,KAAE,KAAK,IAAIc,CAAC;AAAE,sBAAGd,GAAE,SAASrC,CAAC,EAAE,QAAO;AAAA,gBAAI;AAAA,cAAC;AAAA,YAAC;AAAC,YAAAkd,EAAE7b,EAAEP,EAAE,SAAS,GAAE,OAAM,IAAI,EAAE,KAAK,MAAKqC,GAAEnD,CAAC;AAAA,UAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIod,KAAE,UAAU,CAAC,GAAEC,KAAE,UAAU,CAAC,GAAElc,KAAE,UAAU,CAAC,GAAEmc,KAAE,UAAU,CAAC,GAAEC,KAAE;AAAE,UAAApc,KAAEmc,OAAIC,KAAE;AAAI,mBAAQC,KAAErc,IAAEqc,OAAIF,IAAEE,MAAGD,GAAE,MAAK,IAAIH,GAAEI,EAAC,GAAEH,EAAC;AAAE,iBAAM;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAG,KAAK,SAAO,GAAE;AAAC,cAAIpd,IAAE,KAAK,IAAI,CAAC,EAAE;AAAO,eAAK,IAAIA,GAAE,EAAE;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAIA,IAAE,UAAU,CAAC;AAAE,iBAAK,eAAeA,EAAE,MAAM,GAAE,KAAK,IAAIA,GAAE,EAAE;AAAA,UAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,gBAAIQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,iBAAK,eAAeI,EAAE,MAAM,GAAE,KAAK,IAAIA,GAAEJ,CAAC;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAES;AAAA,IAAC,EAAE+e,CAAE;AAAE,IAAA+B,GAAG,iBAAe,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAE,QAAIC,KAAG,WAAU;AAAC,eAASphB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,eAAM,EAAE,EAAE,SAAO,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,SAAO,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAEJ,GAAE;AAAC,iBAAQY,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,cAAII,IAAE,EAAEJ,CAAC;AAAE,cAAGR,EAAE,QAAQY,GAAEhB,CAAC,IAAE,EAAE,QAAOgB;AAAA,QAAC;AAAC,eAAO;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAEhB,GAAE;AAAC,YAAIY,IAAER,EAAE,QAAQJ,GAAE,CAAC;AAAE,YAAGY,IAAE,EAAE,QAAO;AAAK,YAAII,IAAE,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI;AAAE,QAAA2e,GAAG,UAAU,GAAE/e,GAAEI,GAAE,GAAE,EAAE,SAAOJ,CAAC,GAAE+e,GAAG,UAAU,GAAE,GAAE3e,GAAE,EAAE,SAAOJ,GAAEA,CAAC,GAAE+e,GAAG,UAAU3e,GAAE,GAAE,GAAE,GAAE,EAAE,MAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,cAAG,MAAI,EAAE,QAAM;AAAkC,cAArB,MAAP,QAAiB,MAAP,QAAqB,EAAE,WAAS,EAAE,OAAO,QAAM;AAAG,mBAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,KAAG,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,QAAM;AAAG,iBAAM;AAAA,QAAE;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEA,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC;AAAE,cAAG,MAAI1b,EAAE,QAAM;AAAkC,cAArB,MAAP,QAAiBA,MAAP,QAAqB,EAAE,WAASA,EAAE,OAAO,QAAM;AAAG,mBAAQP,IAAE,GAAEA,IAAE,EAAE,QAAOA,IAAI,KAAOic,EAAE,QAAQ,EAAEjc,CAAC,GAAEO,EAAEP,CAAC,CAAC,MAAvB,EAAyB,QAAM;AAAG,iBAAM;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,IAAI8gB,MAAG,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,GAAE,WAAW,EAAE,CAAC,CAAC,KAAG,EAAE,IAAI,EAAE,CAAC,GAAE,EAAE;AAAE,eAAO,EAAE,kBAAiB;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,YAAU,MAAP,QAAc,EAAE,WAAN,EAAa,QAAO;AAAE,YAAI,GAAE,IAAE,GAAE,IAAEze,EAAE,CAAC;AAAE,YAAG;AAAC,eAAI,EAAE,EAAG,GAAC,EAAE,IAAE,EAAE,EAAC,GAAI,QAAM;AAAC,gBAAI9B,IAAE,EAAE;AAAM,gBAAE,KAAK,IAAI,GAAEsgB,GAAG,SAAStgB,CAAC,CAAC;AAAA,UAAC;AAAA,QAAC,SAAOpB,GAAE;AAAC,YAAE,EAAEA,CAAC;AAAA,QAAC,UAAC;AAAQ,YAAE,EAAG;AAAA,QAAA;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,KAAG,EAAE,IAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE;AAAC,eAAOQ,EAAE,kBAAkB,CAAC,IAAE,IAAImhB,GAAG,GAAE,EAAE,EAAE,kBAAiB,IAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,EAAE,SAAO,GAAE,IAAE,KAAK,MAAM,IAAE,CAAC,GAAE,IAAE,GAAE,KAAG,GAAE,KAAI;AAAC,cAAIvgB,IAAE,EAAE,CAAC;AAAE,YAAE,CAAC,IAAE,EAAE,IAAE,CAAC,GAAE,EAAE,IAAE,CAAC,IAAEA;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,CAAO,EAAE,CAAC,MAAV,QAAa;AAAI,YAAI,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAE,YAAO,MAAJ,EAAM,QAAO;AAAE,iBAAQA,IAAE,GAAE0b,IAAE,GAAEA,IAAE,EAAE,QAAOA,IAAI,CAAO,EAAEA,CAAC,MAAV,SAAc,EAAE1b,GAAG,IAAE,EAAE0b,CAAC;AAAG,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,GAAE,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,GAAE,CAAC,IAAE,EAAE,CAAC,EAAE,KAAM;AAAC,iBAAO;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,EAAqB,UAAQ,IAAE,UAAU,CAAC,GAAE1b,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,GAAEA,IAAE4W,GAAE5W,IAAI,CAAA2W,EAAEjc,IAAEsF,CAAC,IAAE,EAAE/E,IAAE+E,CAAC,EAAE,KAAM;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,CAAC,GAAE/E,IAAE,EAAE,EAAE,SAAO,IAAE,CAAC;AAAE,cAAO,EAAE,UAAUA,CAAC,MAAjB,EAAmB,QAAM;AAAA,QAAE;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAIid,MAAE,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,GAAE,gBAAgB,EAAE,CAAC,CAAC;AAAE,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,eAAO,EAAE,QAAQ7d,EAAE,cAAc;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAU,MAAP,QAAc,EAAE,WAAN,EAAa,QAAO;AAAE,YAAI,GAAE,IAAE,GAAE,IAAE0C,EAAE,CAAC;AAAE,YAAG;AAAC,eAAI,EAAE,EAAC,GAAG,EAAE,IAAE,EAAE,EAAG,GAAE,QAAM;AAAC,gBAAI9B,IAAE,EAAE;AAAM,gBAAE,KAAK,IAAI,GAAEsgB,GAAG,UAAUtgB,CAAC,CAAC;AAAA,UAAC;AAAA,QAAC,SAAOpB,GAAE;AAAC,YAAE,EAAEA,CAAC;AAAA,QAAC,UAAC;AAAQ,YAAE,EAAG;AAAA,QAAA;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,EAAE,UAAQ,IAAE,IAAE,CAAA;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,KAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,QAAO;AAAE,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,MAAM,EAAE,SAAO,CAAC,GAAE,KAAI;AAAC,cAAI,IAAE,EAAE,SAAO,IAAE,GAAE,IAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AAAE,cAAO,MAAJ,EAAM,QAAO;AAAA,QAAC;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,UAAQ,IAAE,EAAE,UAAQ;AAAC,cAAI,IAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AAAE,cAAO,MAAJ,EAAM,QAAO;AAAE;AAAA,QAAG;AAAC,eAAO,IAAE,EAAE,SAAO,KAAG,IAAE,EAAE,SAAO,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,MAAK,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,EAAQ,MAAP,QAAU,EAAE,UAAU,EAAE,CAAC,CAAC,IAAE,OAAK,IAAE,EAAE,CAAC;AAAG,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAEggB,GAAG,MAAM,GAAE,GAAE,EAAE,MAAM;AAAE,YAAI,KAAG,IAAEA,GAAG,MAAM,GAAE,IAAG,EAAE,MAAM,KAAG,IAAE;AAAE,YAAE,MAAI,IAAE,IAAG,KAAG,EAAE,WAAS,IAAE,IAAG,IAAE,MAAI,IAAE;AAAG,YAAI5e,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAE,YAAO,MAAJ,EAAM,QAAOA;AAAE,iBAAQ0b,IAAE,GAAEjc,IAAE,GAAEA,KAAG,GAAEA,IAAI,CAAAO,EAAE0b,GAAG,IAAE,EAAEjc,CAAC;AAAE,eAAOO;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,KAAIqhB,KAAG,WAAU;AAAC,eAASrhB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,GAAE,IAAE;AAAE,eAAOohB,GAAG,QAAQ,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC9D,EAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEtd;AAAA,IAAC,KAAIshB,KAAG,WAAU;AAAC,eAASthB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,GAAE,IAAE;AAAE,YAAG,EAAE,SAAO,EAAE,OAAO,QAAM;AAAG,YAAG,EAAE,SAAO,EAAE,OAAO,QAAO;AAAE,YAAO,EAAE,WAAN,EAAa,QAAO;AAAE,YAAIY,IAAEwgB,GAAG,QAAQ,GAAE,CAAC;AAAE,eAAOA,GAAG,gBAAgB,GAAE,CAAC,IAAE,IAAExgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,GAAE,IAAE;AAAE,YAAG,EAAE,SAAO,EAAE,OAAO,QAAM;AAAG,YAAG,EAAE,SAAO,EAAE,OAAO,QAAO;AAAE,YAAO,EAAE,WAAN,EAAa,QAAO;AAAE,iBAAQA,IAAEwgB,GAAG,oBAAoB,CAAC,GAAE9E,IAAE8E,GAAG,oBAAoB,CAAC,GAAE/gB,IAAEO,IAAE,IAAE,IAAE,EAAE,SAAO,GAAE2b,IAAED,IAAE,IAAE,IAAE,EAAE,SAAO,GAAE3W,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,cAAIhF,IAAE,EAAEN,CAAC,EAAE,UAAU,EAAEkc,CAAC,CAAC;AAAE,cAAO5b,MAAJ,EAAM,QAAOA;AAAE,UAAAN,KAAGO,GAAE2b,KAAGD;AAAA,QAAC;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACgB,EAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEtd;AAAA,IAAC,EAAC;AAAG,IAAAohB,GAAG,oBAAkBC,IAAGD,GAAG,0BAAwBE,IAAGF,GAAG,iBAAe,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAE,QAAIG,KAAG,WAAU;AAAC,eAASvhB,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,MAAIJ;AAAA,MAAC;AAAC,aAAOA,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,aAAK,OAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,MAAI,KAAK,IAAI,OAAO,GAAE,CAAC,IAAE,IAAE,KAAK,IAAI,OAAO,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAACwhB,KAAG,WAAU;AAAC,eAASxhB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,KAAM,IAAC,KAAK,aAAa,CAAC,EAAE,KAAI,IAAGqd,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,gBAAO,GAAG;AAAA,UAAA,KAAK0B,GAAG;AAAE,iBAAK,aAAa,CAAC,EAAE,IAAE;AAAE;AAAA,UAAM,KAAKA,GAAG;AAAE,iBAAK,aAAa,CAAC,EAAE,IAAE;AAAE;AAAA,UAAM;AAAQ,iBAAK,aAAa,CAAC,EAAE,YAAY,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,KAAI,IAAG,KAAK,aAAa,CAAC,EAAE,KAAM,IAAC1B,EAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,aAAa;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE;AAAC,gBAAO,GAAG;AAAA,UAAA,KAAK0B,GAAG;AAAE,mBAAO,KAAK,aAAa,CAAC,EAAE;AAAA,UAAE,KAAKA,GAAG;AAAE,mBAAO,KAAK,aAAa,CAAC,EAAE;AAAA,UAAE;AAAQ,mBAAO,KAAK,aAAa,CAAC,EAAE,YAAY,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,aAAa,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,YAAE,cAAc,KAAK,aAAa,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,iBAAgB;AAAG,eAAO,EAAE,cAAc,KAAK,aAAa,CAAC,CAAC,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,eAAOmC,GAAG,OAAO,KAAK,gBAAe,KAAK,YAAW,CAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,aAAa,CAAC,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,aAAa,QAAO,IAAI,GAAE,gBAAgB,KAAK,aAAa,CAAC,CAAC;AAAE,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,iBAAQ,IAAE,IAAI,MAAM,KAAK,KAAI,CAAE,EAAE,KAAK,IAAI,GAAEthB,IAAE,GAAEA,IAAE,KAAK,aAAa,QAAOA,KAAI;AAAC,cAAIY,IAAE,KAAK;AAAmB,UAAAA,EAAE,cAAc,KAAK,aAAaZ,CAAC,CAAC,GAAE,EAAEA,CAAC,IAAEY;AAAA,QAAC;AAAC,eAAO,IAAIR,EAAE,GAAE,KAAK,YAAW,KAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAG,KAAK,aAAa,SAAO,GAAE;AAAC,cAAI,IAAE,IAAIuhB,GAAG,KAAG,KAAK,aAAa,MAAM;AAAE,YAAE,OAAO,GAAG,GAAE,EAAE,OAAO,KAAK,aAAa,CAAC,CAAC;AAAE,mBAAQ,IAAE,GAAE,IAAE,KAAK,aAAa,QAAO,IAAI,GAAE,OAAO,IAAI,GAAE,EAAE,OAAO,KAAK,aAAa,CAAC,CAAC;AAAE,iBAAO,EAAE,OAAO,GAAG,GAAE,EAAE,SAAQ;AAAA,QAAE;AAAC,eAAM;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,aAAa,CAAC,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACxC,IAAGnC,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,aAAW,GAAE,KAAK,YAAU,GAAE,KAAK,eAAa,MAAS,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAY,OAAM;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,YAAA5c,EAAE,aAAa,KAAK,MAAK,GAAEohB,GAAG,UAAU,CAAC,GAAEA,GAAG,SAAS,CAAC,CAAC;AAAA,UAAC,WAAS,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,gBAAIxhB,IAAE,UAAU,CAAC;AAAE,iBAAK,eAAa,IAAI,MAAMA,CAAC,EAAE,KAAK,IAAI;AAAE,qBAAQY,IAAE,GAAEA,IAAEZ,GAAEY,IAAI,MAAK,aAAaA,CAAC,IAAE,IAAIod;AAAA,UAAC,WAASa,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,gBAAIne,IAAE,UAAU,CAAC;AAAE,gBAAUA,MAAP,KAAS,QAAO,KAAK,eAAa,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAE;AAAK,iBAAK,aAAWA,EAAE,gBAAe,KAAK,YAAUA,EAAE,YAAW,GAAG,KAAK,eAAa,IAAI,MAAMA,EAAE,KAAM,CAAA,EAAE,KAAK,IAAI;AAAE,qBAAQ,IAAE,GAAE,IAAE,KAAK,aAAa,QAAO,IAAI,MAAK,aAAa,CAAC,IAAEA,EAAE,kBAAkB,CAAC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAY,SAAO,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,gBAAIP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,YAAAvc,EAAE,aAAa,KAAK,MAAKK,GAAEkc,GAAE6E,GAAG,SAAS/gB,CAAC,CAAC;AAAA,UAAC,WAAS,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,gBAAIsF,IAAE,UAAU,CAAC,GAAEhF,IAAE,UAAU,CAAC;AAAE,iBAAK,eAAa,IAAI,MAAMgF,CAAC,EAAE,KAAK,IAAI,GAAE,KAAK,aAAWhF;AAAE,qBAAQ6b,IAAE,GAAEA,IAAE7W,GAAE6W,IAAI,MAAK,aAAaA,CAAC,IAAE0E,GAAG,OAAOvgB,CAAC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd;AAAqB,cAAG,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,UAAU,CAAC,aAAY,SAAO,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,gBAAI6F,IAAE,UAAU,CAAC,GAAEiW,IAAE,UAAU,CAAC,GAAE5c,IAAE,UAAU,CAAC;AAAE,iBAAK,aAAW4c,GAAE,KAAK,YAAU5c,GAAE,KAAK,eAAoB2G,MAAP,OAAS,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,IAAEA;AAAA,UAAC,WAAS,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,gBAAI9G,IAAE,UAAU,CAAC,GAAED,IAAE,UAAU,CAAC,GAAEiD,IAAE,UAAU,CAAC;AAAE,iBAAK,eAAa,IAAI,MAAMhD,CAAC,EAAE,KAAK,IAAI,GAAE,KAAK,aAAWD,GAAE,KAAK,YAAUiD;AAAE,qBAAQnD,IAAE,GAAEA,IAAEG,GAAEH,IAAI,MAAK,aAAaA,CAAC,IAAE,KAAK,iBAAgB;AAAA,UAAE;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAES;AAAA,IAAC,EAAC,GAAGyhB,KAAG,WAAU;AAAC,eAASzhB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOA,EAAE,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAY,OAAM;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,IAAIwhB,GAAG,CAAC;AAAA,UAAC;AAAC,cAAG/C,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,IAAIyC,GAAG,CAAC;AAAA,UAAC;AAAA,QAAC,OAAK;AAAC,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,mBAAO,IAAE,MAAI,IAAE,IAAG,IAAE,MAAI,IAAE,IAAG,IAAIA,GAAG,GAAE,CAAC;AAAA,UAAC;AAAC,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI5gB,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAED,IAAEjc;AAAE,mBAAOA,IAAE,MAAIA,IAAE,IAAGkc,IAAE,MAAIA,IAAE,IAAGA,IAAE,MAAIA,IAAE,IAAG,IAAIiF,GAAG5gB,GAAE2b,IAAElc,GAAEA,CAAC;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACqf,IAAG9C,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO5c,EAAE;AAAA,MAAc,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC;AAAG,IAAAyhB,GAAG,iBAAe,IAAIA;AAAG,QAAIC,KAAG,SAAS1hB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQb,IAAE,IAAI,MAAM,KAAK,YAAY,MAAM,EAAE,KAAK,IAAI,GAAEQ,IAAE,GAAEA,IAAER,EAAE,QAAOQ,IAAI,CAAAR,EAAEQ,CAAC,IAAE,KAAK,YAAYA,CAAC,EAAE;AAAO,eAAO,IAAIK,EAAEb,GAAE,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAgC,OAAO,UAAU,CAAC,KAA5B,YAA+B,UAAU,CAAC,aAAYse,GAAE;AAAC,cAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,iBAAM,CAAC,CAAC,KAAK,kBAAkBR,CAAC,KAAGid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,KAAK,MAAKb,GAAEQ,CAAC;AAAA,QAAC;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOyd,EAAE;AAAA,MAAqB,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAG,KAAK,UAAU,QAAO,KAAK,aAAa,sBAAuB;AAAC,iBAAQte,IAAE,IAAI4f,KAAGpf,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,UAAQJ,IAAE,KAAK,YAAYI,CAAC,EAAE,eAAcQ,IAAE,GAAEA,IAAEZ,EAAE,iBAAkB,GAACY,IAAI,CAAAhB,EAAE,IAAII,EAAE,aAAaY,CAAC,CAAC;AAAE,YAAII,IAAE,IAAI,MAAMpB,EAAE,KAAM,CAAA,EAAE,KAAK,IAAI;AAAE,eAAO,KAAK,WAAY,EAAC,sBAAsBA,EAAE,QAAQoB,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOkd,EAAE;AAAA,MAAqB,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACyC,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAI/gB,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAA4gB,GAAG,aAAa,KAAK,MAAKphB,GAAEQ,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEK;AAAA,IAAC,EAAEugB,EAAE,GAAEe,KAAG,WAAU;AAAC,eAAS3hB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,OAAM,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAA,QAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,GAAG4hB,KAAG,SAAS5hB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,IAAGtc,IAAEY,EAAE,KAAK,IAAI,GAAG,MAAI,oBAAI,OAAIZ;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,OAAM,OAAM,SAAS9c,GAAE;AAAC,eAAO,KAAK,IAAI,IAAIA,CAAC,KAAG;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASA,GAAEQ,GAAE;AAAC,eAAO,KAAK,IAAI,IAAIR,GAAEQ,CAAC,GAAEA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,iBAAQR,IAAE,IAAI4f,KAAGpf,IAAE,KAAK,IAAI,UAASJ,IAAEI,EAAE,QAAO,CAACJ,EAAE,OAAM,CAAAJ,EAAE,IAAII,EAAE,KAAK,GAAEA,IAAEI,EAAE,KAAI;AAAG,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAIA,IAAE,IAAI2e;AAAE,eAAO,KAAK,IAAI,QAAO,EAAG,QAAS,SAASne,GAAE;AAAC,iBAAOR,EAAE,IAAIQ,CAAC;AAAA,QAAC,IAAIR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,KAAI;AAAA,MAAE,EAAC,CAAC,CAAC,GAAE8c;AAAA,IAAC,EAAEqF,EAAE,GAAEE,KAAG,WAAU;AAAC,eAAS7hB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,YAAG,EAAE,aAAaA,GAAG,QAAM;AAAG,YAAIJ,IAAE;AAAE,eAAO,KAAK,eAAaA,EAAE,cAAY,KAAK,WAASA,EAAE;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,GAAE,IAAE,KAAK,+BAA8B,IAAE,EAAE,4BAA2B;AAAG,eAAO+e,GAAG,QAAQ,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK,eAAa3e,EAAE,YAAU,KAAK,eAAaA,EAAE;AAAA,MAAe,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAE;AAAU,eAAO,KAAK,eAAaA,EAAE,WAAS,IAAE,aAAW,KAAK,eAAaA,EAAE,kBAAgB,IAAE,oBAAkB,KAAK,eAAaA,EAAE,UAAQ,IAAE,kBAAgB,KAAK,SAAQ,IAAG,MAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAI,IAAE,UAAU,CAAC;AAAyB,iBAApBqd,EAAE,MAAM,CAAC,KAAc,KAAK,eAAard,EAAE,kBAAwB,IAAS,KAAK,eAAaA,EAAE,QAAM,KAAK,MAAM,IAAE,KAAK,MAAM,IAAE,KAAK,SAAO;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAY4d,GAAE;AAAC,cAAIhe,IAAE,UAAU,CAAC;AAAE,cAAG,KAAK,eAAaI,EAAE,SAAS,QAAO;AAAK,UAAAJ,EAAE,IAAE,KAAK,YAAYA,EAAE,CAAC,GAAEA,EAAE,IAAE,KAAK,YAAYA,EAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,+BAA8B,OAAM,WAAU;AAAC,YAAI,IAAE;AAAG,eAAO,KAAK,eAAaI,EAAE,WAAS,IAAE,KAAG,KAAK,eAAaA,EAAE,kBAAgB,IAAE,IAAE,KAAK,eAAaA,EAAE,UAAQ,IAAE,IAAE,KAAK,MAAM,KAAK,KAAK,KAAK,IAAI,KAAK,SAAU,CAAA,IAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,aAAK,SAAO,KAAK,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC4c,GAAEhb,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,aAAW,MAAK,KAAK,SAAO,MAAS,UAAU,WAAd,EAAqB,MAAK,aAAW5B,EAAE;AAAA,iBAAqB,UAAU,WAAd;AAAqB,cAAG,UAAU,CAAC,aAAY8hB,IAAG;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,aAAW,GAAE,MAAI9hB,EAAE,SAAO,KAAK,SAAS,CAAC;AAAA,UAAC,WAAmB,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAK,aAAWI,EAAE,OAAM,KAAK,SAASJ,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAYI,GAAE;AAAC,gBAAIQ,IAAE,UAAU,CAAC;AAAE,iBAAK,aAAWA,EAAE,YAAW,KAAK,SAAOA,EAAE;AAAA,UAAM;AAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,EAAE,UAAU,CAAC,KAAG,IAAE,IAAE;AAAA,MAAC,EAAC,CAAC,CAAC,GAAER;AAAA,IAAC,EAAC,GAAG8hB,KAAG,WAAU;AAAC,eAAS9hB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOA,EAAE,cAAc,IAAI,KAAK,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC4c,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,QAAM;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,QAAM,GAAE5c,EAAE,cAAc,IAAI,GAAE,IAAI;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC;AAAG,IAAA8hB,GAAG,gBAAc,IAAIF,MAAGC,GAAG,OAAKC,IAAGD,GAAG,QAAM,IAAIC,GAAG,OAAO,GAAED,GAAG,WAAS,IAAIC,GAAG,UAAU,GAAED,GAAG,kBAAgB,IAAIC,GAAG,iBAAiB,GAAED,GAAG,sBAAoB;AAAqB,QAAAE,KAAG,SAAS/hB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQb,IAAE,IAAI,MAAM,KAAK,YAAY,MAAM,EAAE,KAAK,IAAI,GAAEQ,IAAE,GAAEA,IAAER,EAAE,QAAOQ,IAAI,CAAAR,EAAEQ,CAAC,IAAE,KAAK,YAAYA,CAAC,EAAE,KAAM;AAAC,eAAO,IAAIK,EAAEb,GAAE,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAgC,OAAO,UAAU,CAAC,KAA5B,YAA+B,UAAU,CAAC,aAAYse,GAAE;AAAC,cAAIte,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,iBAAM,CAAC,CAAC,KAAK,kBAAkBR,CAAC,KAAGid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,KAAK,MAAKb,GAAEQ,CAAC;AAAA,QAAC;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,eAAc,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAO,KAAK,SAAU,IAAC0f,EAAG,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAG,KAAK,QAAO,EAAG,QAAM;AAAG,iBAAQvgB,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAOA,IAAI,KAAG,CAAC,KAAK,YAAYA,CAAC,EAAE,SAAQ,EAAG,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAOse,EAAE;AAAA,MAAwB,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAM,IAAIG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOH,EAAE;AAAA,MAAwB,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC+B,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAIrgB,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAA4gB,GAAG,aAAa,KAAK,MAAKphB,GAAEQ,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEK;AAAA,IAAC,EAAEugB,EAAE,GAAEoB,KAAG,WAAU;AAAC,eAAShiB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,gBAAO,GAAG;AAAA,UAAA,KAAI;AAAG,mBAAO,KAAK;UAA2B,KAAK;AAAE,mBAAO,KAAK,YAAa;AAAA,UAAC,KAAK;AAAE,mBAAO,KAAK,iBAAgB;AAAA,UAAG,KAAK;AAAE,mBAAO,KAAK,cAAe;AAAA,UAAC;AAAQ,kBAAM,IAAI0c,EAAE,wBAAsB,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,eAAO,EAAE,OAAM,IAAG,KAAK,YAAa,IAAC,EAAE,cAAY,EAAE,QAAO,KAAI,EAAE,cAAY,EAAE,QAAO,IAAG,KAAK,YAAY,IAAIkB,EAAE,EAAE,QAAS,GAAC,EAAE,QAAS,CAAA,CAAC,IAAE,EAAE,cAAY,EAAE,QAAO,KAAI,EAAE,cAAY,EAAE,QAAO,IAAG,KAAK,iBAAiB,CAAC,IAAIA,EAAE,EAAE,QAAO,GAAG,EAAE,QAAO,CAAE,GAAE,IAAIA,EAAE,EAAE,WAAU,EAAE,QAAS,CAAA,CAAC,CAAC,IAAE,KAAK,cAAc,KAAK,iBAAiB,CAAC,IAAIA,EAAE,EAAE,QAAO,GAAG,EAAE,QAAO,CAAE,GAAE,IAAIA,EAAE,EAAE,WAAU,EAAE,QAAS,CAAA,GAAE,IAAIA,EAAE,EAAE,QAAS,GAAC,EAAE,QAAO,CAAE,GAAE,IAAIA,EAAE,EAAE,QAAO,GAAG,EAAE,SAAS,GAAE,IAAIA,EAAE,EAAE,QAAS,GAAC,EAAE,QAAS,CAAA,CAAC,CAAC,GAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,iBAAiB,KAAK,+BAA+B,OAAO,CAAE,CAAA,CAAC;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAY,OAAM;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,iBAAwB,MAAP,OAAS,KAAK,+BAA+B,OAAO,CAAC,IAAE,IAAI;AAAA,UAAC;AAAC,cAAGa,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,IAAImB,GAAG,GAAE,IAAI;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,IAAI6B,GAAG,MAAK,IAAI;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAIA,GAAG,GAAE,IAAI;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,iBAAQniB,IAAE,MAAKY,IAAE,IAAGI,IAAE,IAAG,IAAE,EAAE,SAAU,GAAC,EAAE,aAAW;AAAC,cAAIP,IAAE,EAAE,KAAI,GAAGkc,IAAElc,EAAE,YAAa;AAAC,UAAOT,MAAP,SAAWA,IAAE2c,IAAGA,MAAI3c,MAAIY,IAAE,KAAIH,aAAaugB,OAAKhgB,IAAE;AAAA,QAAG;AAAC,YAAUhB,MAAP,KAAS,QAAO,KAAK,yBAAwB;AAAG,YAAGY,KAAGI,EAAE,QAAO,KAAK,yBAAyBZ,EAAE,gBAAgB,CAAC,CAAC;AAAE,YAAI2F,IAAE,EAAE,SAAQ,EAAG;AAAO,YAAG,EAAE,SAAO,GAAE;AAAC,cAAGA,aAAa6a,GAAG,QAAO,KAAK,mBAAmBxgB,EAAE,eAAe,CAAC,CAAC;AAAE,cAAG2F,aAAaua,GAAG,QAAO,KAAK,sBAAsBlgB,EAAE,kBAAkB,CAAC,CAAC;AAAE,cAAG2F,aAAaya,GAAG,QAAO,KAAK,iBAAiBpgB,EAAE,aAAa,CAAC,CAAC;AAAE,UAAAwd,GAAE,qBAAqB,8BAA4B7X,EAAE,gBAAiB,CAAA;AAAA,QAAC;AAAC,eAAOA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,iBAAwB,MAAP,OAAS,KAAK,6BAA8B,EAAC,OAAO,CAAC,IAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,YAAY,KAAK,6BAA8B,EAAC,OAAO,CAAA,CAAE,CAAC;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAYiY,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,YAAmB,MAAP,OAAS,KAAK,6BAA4B,EAAG,OAAO,CAAC,CAAC,CAAC,IAAE,IAAI;AAAA,UAAC;AAAC,cAAGa,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,IAAIqB,GAAG,GAAE,IAAI;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAA0B,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,cAAc,MAAK,IAAI;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG3B,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,cAAc,KAAK,iBAAiB,CAAC,CAAC;AAAA,UAAC;AAAC,cAAG,UAAU,CAAC,aAAY,OAAM;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,cAAc,KAAK,iBAAiB,CAAC,CAAC;AAAA,UAAC;AAAC,cAAG,UAAU,CAAC,aAAY+B,IAAG;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,cAAc,GAAE,IAAI;AAAA,UAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAElgB,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAI4f,GAAG,GAAE5f,GAAE,IAAI;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,IAAIggB,GAAG,MAAK,IAAI;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAIA,GAAG,GAAE,IAAI;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAe,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,iBAAiB,KAAK,6BAA8B,EAAC,OAAO,CAAA,CAAE,CAAC;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAY,OAAM;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,KAAK,iBAAwB,MAAP,OAAS,KAAK,6BAA8B,EAAC,OAAO,CAAC,IAAE,IAAI;AAAA,UAAC;AAAC,cAAGnC,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,IAAI+B,GAAG,GAAE,IAAI;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,IAAIY,GAAG,MAAK,IAAI;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,IAAIA,GAAG,GAAE,IAAI;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,IAAIb,GAAG,MAAK,IAAI;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,UAAU,CAAC,aAAY,OAAM;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,mBAAO,IAAIA,GAAG,GAAE,IAAI;AAAA,UAAC;AAAC,cAAGpC,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,gBAAU,MAAP,KAAS,QAAO,KAAK,iBAAiB,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;AAAE,qBAAQ,IAAE,IAAI,MAAM,EAAE,KAAM,CAAA,EAAE,KAAK,IAAI,GAAE,IAAE,GAAE,IAAE,EAAE,KAAM,GAAC,KAAI;AAAC,kBAAIne,IAAE,KAAK,6BAA4B,EAAG,OAAO,GAAE,EAAE,gBAAe,EAAE,YAAa,CAAA;AAAE,cAAAkf,GAAG,KAAK,GAAE,GAAElf,GAAE,GAAE,CAAC,GAAE,EAAE,CAAC,IAAE,KAAK,YAAYA,CAAC;AAAA,YAAC;AAAC,mBAAO,KAAK,iBAAiB,CAAC;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACgc,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,kBAAgB,MAAK,KAAK,6BAA2B,MAAK,KAAK,QAAM,MAAS,UAAU,WAAd,EAAqB,CAAA5c,EAAE,aAAa,KAAK,MAAK,IAAI6hB,MAAG,CAAC;AAAA,iBAAc,UAAU,WAAd;AAAsB,cAAGpD,GAAG,UAAU,CAAC,GAAEiB,EAAE,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,YAAA1f,EAAE,aAAa,KAAK,MAAK,IAAI6hB,MAAG,GAAE,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAYA,IAAG;AAAC,gBAAIjiB,IAAE,UAAU,CAAC;AAAE,YAAAI,EAAE,aAAa,KAAK,MAAKJ,GAAE,GAAEI,EAAE,qCAAqC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIQ,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,UAAAZ,EAAE,aAAa,KAAK,MAAKQ,GAAEI,GAAEZ,EAAE,oCAAqC,CAAA;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEK,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,eAAK,kBAAgB,GAAE,KAAK,6BAA2BA,GAAE,KAAK,QAAMlc;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI,MAAM,EAAE,KAAM,CAAA,EAAE,KAAK,IAAI;AAAE,eAAO,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,YAAU,MAAP,KAAS,QAAO;AAAK,YAAI,IAAE,IAAI,MAAM,EAAE,KAAM,CAAA,EAAE,KAAK,IAAI;AAAE,eAAO,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uCAAsC,OAAM,WAAU;AAAC,eAAOohB,GAAG,SAAU;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI,MAAM,EAAE,KAAI,CAAE,EAAE,KAAK,IAAI;AAAE,eAAO,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI,MAAM,EAAE,KAAM,CAAA,EAAE,KAAK,IAAI;AAAE,eAAO,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI;AAAE,eAAO,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI,MAAM,EAAE,KAAI,CAAE,EAAE,KAAK,IAAI;AAAE,eAAO,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI,MAAM,EAAE,KAAM,CAAA,EAAE,KAAK,IAAI;AAAE,eAAO,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI,MAAM,EAAE,KAAM,CAAA,EAAE,KAAK,IAAI;AAAE,eAAO,EAAE,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,EAAE,kBAAmB,EAAC,YAAY,CAAC,GAAE,EAAE,WAAY,EAAC,YAAY,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEzhB;AAAA,IAAC,EAAG,GAACiiB,KAAG,MAAKC,KAAG,OAAMC,KAAG,OAAMC,KAAG,QAAOC,KAAG,EAAC,OAAM,SAAQ,aAAY,cAAa,aAAY,cAAa,SAAQ,WAAU,aAAY,cAAa,mBAAkB,mBAAkB,eAAc,gBAAe,qBAAoB,sBAAqB,QAAO,SAAQ,GAAEC,KAAG,SAAQ3X,KAAG,GAAE4X,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG;AAAQ,aAAQC,MAAMP,GAAU,CAAAA,GAAGO,EAAE,EAAE,YAAa;AAAC,QAAIC,KAAG,WAAU;AAAC,eAAS7iB,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,MAAIJ,GAAE,KAAK,SAAO;AAAA,MAAE;AAAC,aAAOA,EAAEI,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAO,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAG,OAAK,KAAG,OAAU,KAAL,OAAQ,EAAW,MAAT,UAAY;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,eAAW,KAAL,OAAc,KAAN,OAAe,KAAN,QAAe,KAAN;AAAA;AAAA,MAAO,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,OAAO,EAAE,KAAK,MAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAI,GAAE,IAAE,KAAK,aAAY,IAAE,KAAK,QAAO,IAAE;AAAE,YAAQ,KAAL,IAAO,KAAEuiB;AAAA,iBAAgB,KAAL,IAAO,KAAEG;AAAA,iBAAgB,KAAL,IAAO,KAAEF;AAAA,iBAAW,KAAK,WAAW,CAAC,KAAQ,KAAL,IAAO,KAAEC,IAAG,IAAE,KAAK,YAAa;AAAA,iBAAS,KAAK,SAAS,CAAC,EAAE,KAAE9X,IAAG,IAAE,KAAK,UAAS;AAAA,aAAO;AAAC,cAAG,KAAK,cAAc,CAAC,EAAE,QAAO,KAAK,UAAS;AAAG,cAAQ,MAAL,GAAO,OAAM,IAAI,MAAM,2BAAyB,CAAC;AAAE,cAAEgY;AAAA,QAAE;AAAC,eAAM,EAAC,UAAS,GAAE,OAAM,GAAE,MAAK,EAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAI,GAAE,IAAE,KAAK,QAAO,IAAE,IAAG,IAAE;AAAG;AAAG,UAAK,KAAL,MAAO,IAAE,KAAQ,KAAL,OAAa,KAAL,QAAS,IAAE,KAAI,IAAE,KAAK;eAAkB,KAAK,WAAW,GAAE,CAAC,KAAG,CAAC,MAAS,KAAL,OAAa,KAAL,QAAS,MAAS,KAAL,OAAa,KAAL;AAAS,eAAO,WAAW,KAAK,IAAI,UAAU,GAAE,KAAK,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAI,GAAE,IAAE,KAAK;AAAO;AAAG,cAAE,KAAK,UAAS;AAAA,eAAS,KAAK,SAAS,CAAC;AAAG,eAAO,KAAK,IAAI,UAAU,GAAE,KAAK,QAAQ,EAAE,YAAa;AAAA,MAAA,EAAC,CAAC,CAAC,GAAE3iB;AAAA,IAAC,EAAG,GAAC8iB,KAAG,WAAU;AAAC,eAAS9iB,EAAEJ,GAAEY,GAAE;AAAC,QAAAhB,EAAE,MAAKQ,CAAC,GAAE,KAAK,SAAOJ,GAAE,KAAK,QAAO,KAAK,UAAQqiB,IAAG,KAAK,UAAQzhB;AAAA,MAAC;AAAC,aAAOZ,EAAEI,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,aAAK,SAAO,KAAK,OAAO;MAAW,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,OAAO,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,YAAY,CAAC;AAAE,eAAO,KAAG,KAAK,SAAU,GAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAO,KAAK,YAAW,KAAK,eAAc;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,YAAI,IAAEiiB,IAAG,IAAE,KAAK;AAAO,YAAG,KAAK,YAAYtX,EAAE,GAAE;AAAC,cAAI,IAAE,EAAE;AAAM,UAAM,MAAN,MAAQ,IAAEuX,KAAS,MAAN,MAAQ,IAAEC,KAAU,MAAP,SAAW,IAAEC,KAAI,MAAIH,MAAI,KAAK;QAAU;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,WAAU;AAAC,YAAG,KAAK,MAAMM,EAAE,GAAE;AAAC,cAAI,IAAE,CAAA;AAAG;AAAG,cAAE,KAAK,KAAK,gBAAgB;AAAA,iBAAQ,KAAK,MAAMG,EAAE;AAAG,cAAG,KAAK,MAAMF,EAAE,EAAE,QAAO;AAAA,QAAC,WAAS,KAAK,iBAAkB,EAAC,QAAM,CAAE;AAAC,cAAM,IAAI,MAAM,KAAK,qBAAqB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,YAAG,KAAK,MAAMD,EAAE,GAAE;AAAC,cAAI,IAAE,KAAK;AAAc,cAAG,KAAK,MAAMC,EAAE,EAAE,QAAO;AAAA,QAAC,WAAS,KAAK,iBAAgB,EAAG,QAAO;AAAK,cAAM,IAAI,MAAM,KAAK,oBAAqB,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,YAAG,KAAK,MAAMD,EAAE,GAAE;AAAC,cAAI,IAAE,KAAK,gBAAe;AAAG,cAAG,KAAK,MAAMC,EAAE,EAAE,QAAO;AAAA,QAAC,WAAS,KAAK,iBAAgB,EAAG,QAAM,CAAA;AAAG,cAAM,IAAI,MAAM,KAAK,oBAAqB,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,YAAG,KAAK,MAAMD,EAAE,GAAE;AAAC,cAAI,IAAE,KAAK,yBAA0B;AAAC,cAAG,KAAK,MAAMC,EAAE,EAAE,QAAO;AAAA,QAAC,WAAS,KAAK,iBAAkB,EAAC,QAAM,CAAA;AAAG,cAAM,IAAI,MAAM,KAAK,oBAAmB,CAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,YAAI;AAAE,YAAG,KAAK,MAAMD,EAAE;AAAG,cAAG,IAAE,KAAK,OAAO,QAAMA,KAAG,KAAK,oBAAqB,IAAC,KAAK,gBAAiB,GAAC,KAAK,MAAMC,EAAE,EAAE,QAAO;AAAA,mBAAU,KAAK,iBAAgB,EAAG,QAAM,CAAA;AAAG,cAAM,IAAI,MAAM,KAAK,oBAAqB,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,WAAU;AAAC,YAAG,KAAK,MAAMD,EAAE,GAAE;AAAC,cAAI,IAAE,KAAK,yBAA0B;AAAC,cAAG,KAAK,MAAMC,EAAE,EAAE,QAAO;AAAA,QAAC,WAAS,KAAK,mBAAmB,QAAM;AAAG,cAAM,IAAI,MAAM,KAAK,oBAAmB,CAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,YAAG,KAAK,MAAMD,EAAE,GAAE;AAAC,cAAI,IAAE,KAAK,sBAAqB;AAAG,cAAG,KAAK,MAAMC,EAAE,EAAE,QAAO;AAAA,QAAC,WAAS,KAAK,iBAAkB,EAAC,QAAM,CAAA;AAAG,cAAM,IAAI,MAAM,KAAK,qBAAqB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,iBAAQ,IAAE,CAAE,GAAC,IAAE,KAAK,QAAQ,QAAO,IAAE,GAAE,IAAE,GAAE,EAAE,GAAE;AAAC,cAAI,IAAE,KAAK;AAAO,cAAG,CAAC,KAAK,MAAMC,EAAE,EAAE;AAAM,YAAE,KAAK,EAAE,KAAK;AAAA,QAAC;AAAC,YAAG,EAAE,UAAQ,EAAE,QAAO;AAAE,cAAM,IAAI,MAAM,KAAK,oBAAqB,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,iBAAQ,IAAE,CAAC,KAAK,YAAa,CAAA,GAAE,KAAK,MAAMC,EAAE,IAAG,GAAE,KAAK,KAAK,YAAa,CAAA;AAAE,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,iBAAQ,IAAE,CAAC,KAAK,gBAAiB,CAAA,GAAE,KAAK,MAAMA,EAAE,IAAG,GAAE,KAAK,KAAK,gBAAe,CAAE;AAAE,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,WAAU;AAAC,iBAAQ,IAAE,CAAC,KAAK,qBAAsB,CAAA,GAAE,KAAK,MAAMA,EAAE,IAAG,GAAE,KAAK,KAAK,qBAAoB,CAAE;AAAE,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,iBAAQ,IAAE,CAAC,KAAK,kBAAmB,CAAA,GAAE,KAAK,MAAMA,EAAE,IAAG,GAAE,KAAK,KAAK,kBAAiB,CAAE;AAAE,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,YAAY/X,EAAE,KAAG,KAAK,OAAO,SAAO2X;AAAG,eAAO,KAAG,KAAK,SAAQ,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,eAAM,iBAAe,KAAK,OAAO,QAAM,mBAAiB,KAAK,OAAO,WAAS,UAAQ,KAAK,OAAO,MAAI;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,SAAQ,IAAE,SAAS9iB,GAAE;AAAC,iBAAO+c,EAAEqB,GAAE/d,EAAEL,CAAC,CAAC;AAAA,QAAC,GAAE,IAAE,SAASI,GAAE;AAAC,cAAIY,IAAEZ,EAAE,IAAK,SAASA,IAAE;AAAC,mBAAO,EAAE,iBAAiBA,GAAE,IAAI,CAAC,CAAC;AAAA,UAAC,CAAC;AAAG,iBAAOY,EAAE,SAAO,IAAE,EAAE,cAAcA,EAAE,CAAC,GAAEA,EAAE,MAAM,CAAC,CAAC,IAAE,EAAE,cAAcA,EAAE,CAAC,CAAC;AAAA,QAAC,GAAE,IAAE,KAAK;AAAO,YAAG,KAAK,MAAMmK,EAAE,GAAE;AAAC,cAAI/J,IAAE,EAAE;AAAM,cAAG,KAAK,UAAQ,KAAK,qBAAsB,GAAuBA,KAAtB,sBAAwB;AAAC,gBAAI0b,IAAE,KAAK,6BAA8B;AAAC,mBAAO,EAAE,yBAAyBA,CAAC;AAAA,UAAC;AAAC,kBAAO1b;YAAG,KAAI;AAAQ,kBAAIP,IAAE,KAAK;AAAkB,qBAAOA,IAAE,EAAE,YAAYkc,EAAEqB,GAAE/d,EAAEQ,CAAC,CAAC,CAAC,IAAE,EAAE,YAAW;AAAA,YAAG,KAAI;AAAa,kBAAIsF,IAAE,KAAK,qBAAoB,EAAG,IAAI,CAAC;AAAE,qBAAO,EAAE,iBAAiBA,CAAC;AAAA,YAAE,KAAI;AAAa,kBAAIhF,IAAE,KAAK,uBAAuB,IAAI,CAAC;AAAE,qBAAO,EAAE,iBAAiBA,CAAC;AAAA,YAAE,KAAI;AAAU,kBAAI6b,IAAE,KAAK,kBAAmB;AAAC,qBAAOA,KAAOA,EAAE,WAAN,IAAa,EAAEA,CAAC,IAAE,EAAE,cAAa;AAAA,YAAG,KAAI;AAAa,kBAAIhW,IAAE,KAAK,qBAAoB;AAAG,kBAAG,CAACA,KAAOA,EAAE,WAAN,EAAa,QAAO,EAAE,iBAAkB;AAAC,kBAAIiW,IAAEjW,EAAE,IAAI,CAAC,EAAE,IAAK,SAASxG,GAAE;AAAC,uBAAO,EAAE,YAAYA,CAAC;AAAA,cAAC,CAAG;AAAC,qBAAO,EAAE,iBAAiByc,CAAC;AAAA,YAAE,KAAI;AAAkB,kBAAI/c,IAAE,KAAK,0BAA2B,EAAC,IAAK,SAASE,GAAE;AAAC,uBAAO,EAAE,iBAAiBA,EAAE,IAAI,CAAC,CAAC;AAAA,cAAC,CAAC;AAAG,qBAAO,EAAE,sBAAsBF,CAAC;AAAA,YAAE,KAAI;AAAe,kBAAID,IAAE,KAAK,uBAAsB;AAAG,kBAAG,CAACA,KAAOA,EAAE,WAAN,EAAa,QAAO,EAAE,mBAAkB;AAAG,kBAAIiD,IAAEjD,EAAE,IAAI,CAAC;AAAE,qBAAO,EAAE,mBAAmBiD,CAAC;AAAA,YAAE;AAAQ,oBAAM,IAAI,MAAM,4BAA0B9B,CAAC;AAAA,UAAC;AAAA,QAAC;AAAC,cAAM,IAAI,MAAM,KAAK,oBAAmB,CAAE;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,EAAG;AAAC,aAAS+iB,GAAGvjB,GAAE;AAAC,UAAGA,EAAE,UAAU,QAAM;AAAG,UAAIQ,IAAER,EAAE,cAAe,GAACI,IAAE,CAACI,EAAE,GAAEA,EAAE,CAAC;AAAE,aAAgBA,EAAE,MAAX,UAAc,OAAO,MAAMA,EAAE,CAAC,KAAGJ,EAAE,KAAKI,EAAE,CAAC,GAAWA,EAAE,MAAX,UAAc,OAAO,MAAMA,EAAE,CAAC,KAAGJ,EAAE,KAAKI,EAAE,CAAC,GAAEJ,EAAE,KAAK,GAAG;AAAA,IAAC;AAAC,aAASojB,GAAGxjB,GAAE;AAAC,eAAQQ,IAAER,EAAE,eAAc,EAAG,IAAK,SAASA,GAAE;AAAC,YAAIQ,IAAE,CAACR,EAAE,GAAEA,EAAE,CAAC;AAAE,eAAgBA,EAAE,MAAX,UAAc,OAAO,MAAMA,EAAE,CAAC,KAAGQ,EAAE,KAAKR,EAAE,CAAC,GAAWA,EAAE,MAAX,UAAc,OAAO,MAAMA,EAAE,CAAC,KAAGQ,EAAE,KAAKR,EAAE,CAAC,GAAEQ;AAAA,MAAC,CAAG,GAACJ,IAAE,CAAA,GAAGY,IAAE,GAAEI,IAAEZ,EAAE,QAAOQ,IAAEI,GAAE,EAAEJ,EAAE,CAAAZ,EAAE,KAAKI,EAAEQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAE,aAAOZ,EAAE,KAAK,IAAI;AAAA,IAAC;AAAC,aAASqjB,GAAGzjB,GAAE;AAAC,UAAIQ,IAAE,CAAA;AAAG,MAAAA,EAAE,KAAK,MAAIgjB,GAAGxjB,EAAE,gBAAe,CAAE,IAAE,GAAG;AAAE,eAAQI,IAAE,GAAEY,IAAEhB,EAAE,mBAAkB,GAAGI,IAAEY,GAAE,EAAEZ,EAAE,CAAAI,EAAE,KAAK,MAAIgjB,GAAGxjB,EAAE,iBAAiBI,CAAC,CAAC,IAAE,GAAG;AAAE,aAAOI,EAAE,KAAK,IAAI;AAAA,IAAC;AAAC,QAAIkjB,KAAG,EAAC,OAAMH,IAAG,YAAWC,IAAG,YAAWA,IAAG,SAAQC,IAAG,YAAW,SAASzjB,GAAE;AAAC,eAAQQ,IAAE,IAAGJ,IAAE,GAAEY,IAAEhB,EAAE,iBAAkB,GAACI,IAAEY,GAAE,EAAEZ,EAAE,CAAAI,EAAE,KAAK,MAAI+iB,GAAGvjB,EAAE,aAAaI,CAAC,CAAC,IAAE,GAAG;AAAE,aAAOI,EAAE,KAAK,IAAI;AAAA,IAAC,GAAE,iBAAgB,SAASR,GAAE;AAAC,eAAQQ,IAAE,IAAGJ,IAAE,GAAEY,IAAEhB,EAAE,iBAAgB,GAAGI,IAAEY,GAAE,EAAEZ,EAAE,CAAAI,EAAE,KAAK,MAAIgjB,GAAGxjB,EAAE,aAAaI,CAAC,CAAC,IAAE,GAAG;AAAE,aAAOI,EAAE,KAAK,IAAI;AAAA,IAAC,GAAE,cAAa,SAASR,GAAE;AAAC,eAAQQ,IAAE,IAAGJ,IAAE,GAAEY,IAAEhB,EAAE,iBAAkB,GAACI,IAAEY,GAAE,EAAEZ,EAAE,CAAAI,EAAE,KAAK,MAAIijB,GAAGzjB,EAAE,aAAaI,CAAC,CAAC,IAAE,GAAG;AAAE,aAAOI,EAAE,KAAK,IAAI;AAAA,IAAC,GAAE,oBAAmB,SAASR,GAAE;AAAC,eAAQQ,IAAE,IAAGJ,IAAE,GAAEY,IAAEhB,EAAE,iBAAkB,GAACI,IAAEY,GAAE,EAAEZ,EAAE,CAAAI,EAAE,KAAKmjB,GAAG3jB,EAAE,aAAaI,CAAC,CAAC,CAAC;AAAE,aAAOI,EAAE,KAAK,IAAI;AAAA,IAAC,EAAC;AAAE,aAASmjB,GAAG3jB,GAAE;AAAC,UAAIQ,IAAER,EAAE,gBAAiB,GAACI,IAAEsjB,GAAGljB,CAAC;AAAE,MAAAA,IAAEA,EAAE,YAAW;AAAG,UAAIQ,IAAE,SAAShB,GAAE;AAAC,YAAIQ,IAAE;AAAG,YAAGR,EAAE,QAAS,EAAC,QAAOQ;AAAE,YAAIJ,IAAEJ,EAAE,cAAa;AAAG,eAAgBI,EAAE,MAAX,UAAc,OAAO,MAAMA,EAAE,CAAC,MAAII,KAAG,MAAcJ,EAAE,MAAX,UAAc,OAAO,MAAMA,EAAE,CAAC,MAAII,KAAG,MAAKA;AAAA,MAAC,EAAER,CAAC;AAAE,aAAOgB,EAAE,SAAO,MAAIR,KAAG,MAAIQ,IAAGhB,EAAE,QAAO,IAAGQ,IAAE,MAAIsiB,KAAGtiB,IAAE,OAAKJ,EAAEJ,CAAC,IAAE;AAAA,IAAG;AAAC,QAAI4jB,KAAG,WAAU;AAAC,eAASpjB,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,kBAAgBJ,KAAG,IAAIoiB,MAAG,KAAK,iBAAe,KAAK,gBAAgB,kBAAiB;AAAA,MAAE;AAAC,aAAOpiB,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI6iB,GAAG,CAAC;AAAE,eAAO,IAAIC,GAAG,GAAE,KAAK,eAAe,EAAE,MAAO;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,eAAOK,GAAG,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEnjB;AAAA,IAAC,EAAC,GAAGqjB,KAAG,WAAU;AAAC,eAASrjB,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,SAAO,IAAIojB,GAAGxjB,CAAC;AAAA,MAAC;AAAC,aAAOA,EAAEI,GAAE,CAAC,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,OAAO,MAAM,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,YAAO,UAAU,WAAd,EAAqB,OAAM,IAAI,MAAM,iBAAiB;AAAE,eAAM,kBAAgB,EAAE,IAAE,MAAI,EAAE,IAAE,OAAK,EAAE,IAAE,MAAI,EAAE,IAAE;AAAA,MAAI,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAACsjB,KAAG,WAAU;AAAC,eAAStjB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,uBAAsB,KAAK,cAAc,CAAC,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAI,IAAE,IAAIuhB;AAAG,eAAO,KAAK,WAAY,KAAE,EAAE,OAAO,WAAW,GAAE,KAAK,aAAW,EAAE,OAAO,SAAS,GAAE,KAAK,YAAW,KAAI,EAAE,OAAO,YAAY,GAAE,EAAE,SAAU;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,aAAK,YAAY,CAAC,EAAE,CAAC,IAAE,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,IAAE,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,IAAE,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,IAAE,GAAE,KAAK,UAAQ,KAAK,iBAAiB,GAAE,GAAE,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAO,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,CAAO,KAAK,kBAAZ,SAA4B,KAAK,gBAAc,MAAM,CAAC,EAAE,KAAI,EAAG,IAAK,WAAU;AAAC,iBAAO,MAAM,CAAC;AAAA,QAAC,CAAG,GAAC,KAAK,oBAAoB,CAAC,GAAE,KAAK,oBAAoB,CAAC;AAAA,iBAAe,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,KAAK,gBAAgB,GAAE,CAAC,GAAE,IAAE,KAAK,gBAAgB,GAAE,CAAC;AAAE,cAAE,KAAG,KAAK,cAAc,CAAC,EAAE,CAAC,IAAE,GAAE,KAAK,cAAc,CAAC,EAAE,CAAC,IAAE,MAAI,KAAK,cAAc,CAAC,EAAE,CAAC,IAAE,GAAE,KAAK,cAAc,CAAC,EAAE,CAAC,IAAE;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,gBAAe,KAAI,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,aAAK,kBAAgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAM,CAAC,CAAC,KAAK,uBAAuB,CAAC,KAAG,CAAC,CAAC,KAAK,uBAAuB,CAAC;AAAE,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,GAAE,IAAE,KAAK,SAAQ,IAAI,KAAG,CAAC,KAAK,OAAO,CAAC,EAAE,SAAS,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,KAAK,OAAO,CAAC,EAAE,SAAS,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,QAAM;AAAG,iBAAM;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,OAAO,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK,qBAAmB,CAAC,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK,YAAUvhB,EAAE;AAAA,MAAe,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAEJ,GAAE;AAAC,eAAOI,EAAE,oBAAoB,KAAK,OAAOJ,CAAC,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,YAAUI,EAAE;AAAA,MAAsB,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAOqjB,GAAG,aAAa,KAAK,YAAY,CAAC,EAAE,CAAC,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,IAAE,QAAMA,GAAG,aAAa,KAAK,YAAY,CAAC,EAAE,CAAC,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,IAAE,KAAK,mBAAkB;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,YAAY,CAAC,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,SAAQ,IAAI,KAAG,KAAK,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,+BAA8B,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,oBAAmB,GAAG,KAAK,OAAO,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,UAAQ,MAAK,KAAK,cAAY,MAAM,CAAC,EAAE,KAAM,EAAC,IAAK,WAAU;AAAC,iBAAO,MAAM,CAAC;AAAA,QAAC,CAAC,GAAG,KAAK,SAAO,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAE,KAAK,gBAAc,MAAK,KAAK,YAAU,MAAK,KAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,kBAAgB,MAAK,KAAK,OAAO,CAAC,IAAE,IAAIzF,KAAE,KAAK,OAAO,CAAC,IAAE,IAAIA,KAAE,KAAK,MAAI,KAAK,OAAO,CAAC,GAAE,KAAK,MAAI,KAAK,OAAO,CAAC,GAAE,KAAK,UAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,IAAI,EAAE,IAAE,EAAE,CAAC,GAAEhd,IAAE,KAAK,IAAI,EAAE,IAAE,EAAE,CAAC,GAAE0b,IAAE;AAAG,YAAG,EAAE,OAAO,CAAC,EAAE,CAAAA,IAAE;AAAA,iBAAU,EAAE,OAAO,CAAC,EAAE,CAAAA,IAAE,IAAE1b,IAAE,IAAEA;AAAA,aAAM;AAAC,cAAIP,IAAE,KAAK,IAAI,EAAE,IAAE,EAAE,CAAC,GAAEkc,IAAE,KAAK,IAAI,EAAE,IAAE,EAAE,CAAC;AAAE,WAAKD,IAAE,IAAE1b,IAAEP,IAAEkc,OAAb,KAAiB,EAAE,OAAO,CAAC,MAAID,IAAE,KAAK,IAAIjc,GAAEkc,CAAC;AAAA,QAAE;AAAC,eAAOiB,GAAE,OAAO,EAAMlB,MAAJ,KAAO,CAAC,EAAE,OAAO,CAAC,IAAG,0BAA0B,GAAEA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,IAAE,EAAE,GAAE1b,IAAE,EAAE,IAAE,EAAE,GAAE0b,IAAE,KAAK,KAAK,IAAE,IAAE1b,IAAEA,CAAC;AAAE,eAAO4c,GAAE,OAAO,EAAMlB,MAAJ,KAAO,CAAC,EAAE,OAAO,CAAC,IAAG,8BAA8B,GAAEA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEtc;AAAA,IAAC,EAAC;AAAG,IAAAsjB,GAAG,iBAAe,GAAEA,GAAG,eAAa,GAAEA,GAAG,YAAU,GAAEA,GAAG,kBAAgB,GAAEA,GAAG,qBAAmB,GAAEA,GAAG,yBAAuB;AAAE,QAAIC,KAAG,SAASvjB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,eAAOb,EAAE,MAAKa,CAAC,GAAEic,EAAE,KAAK,IAAI;AAAA,MAAC;AAAC,aAAO1c,EAAES,GAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,SAASb,GAAE;AAAC,YAAIQ,IAAE,IAAI6d,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,GAAEje,IAAE,IAAIie,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,GAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;AAAE,eAAO7d,EAAE,SAASR,CAAC,KAAGI,EAAE,SAASJ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAOid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,uBAAsB,IAAI,EAAE,MAAM,MAAK,SAAS;AAAE,YAAIb,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,YAAG,KAAK,YAAU,IAAGie,GAAE,WAAW7d,GAAEJ,GAAEJ,CAAC,KAAOwf,EAAG,MAAMhf,GAAEJ,GAAEJ,CAAC,MAAlB,KAAyBwf,EAAG,MAAMpf,GAAEI,GAAER,CAAC,MAAlB,EAAoB,QAAO,KAAK,YAAU,KAAIA,EAAE,OAAOQ,CAAC,KAAGR,EAAE,OAAOI,CAAC,OAAK,KAAK,YAAU,KAAI,KAAK,UAAQ0jB,GAAG,oBAAmB;AAAK,aAAK,UAAQA,GAAG;AAAA,MAAe,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS9jB,GAAEQ,GAAEJ,GAAEY,GAAE;AAAC,YAAII,IAAE,KAAK,iBAAiBpB,GAAEQ,GAAEJ,GAAEY,CAAC;AAAE,eAAO,KAAK,qBAAqBI,CAAC,MAAIA,IAAE,IAAIgd,EAAEvd,EAAE,gBAAgBb,GAAEQ,GAAEJ,GAAEY,CAAC,CAAC,IAAU,KAAK,oBAAZ,QAA6B,KAAK,gBAAgB,YAAYI,CAAC,GAAEA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASpB,GAAEQ,GAAEJ,GAAEY,GAAEI,GAAE;AAAC,YAAI0b,IAAEwC,GAAG,aAAatf,GAAEQ,GAAEJ,GAAEY,CAAC,GAAEH,IAAE,KAAK,qBAAqBic,CAAC;AAAE,QAAAiD,GAAG,IAAI,QAAQ,iBAAelf,IAAE,6BAA2Bic,CAAC,GAAE1b,EAAE,SAAS0b,CAAC,IAAE,QAAMiD,GAAG,IAAI,QAAQ,gBAAc3e,EAAE,SAAS0b,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS9c,GAAEQ,GAAEJ,GAAEY,GAAE;AAAC,YAAII,IAAEuJ,GAAG,aAAa3K,GAAEQ,GAAEJ,GAAEY,CAAC;AAAE,eAAcI,MAAP,SAAWA,IAAEP,EAAE,gBAAgBb,GAAEQ,GAAEJ,GAAEY,CAAC,IAAGI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAASpB,GAAEQ,GAAEJ,GAAEY,GAAE;AAAC,YAAII,IAAEid,GAAE,WAAWre,GAAEQ,GAAEJ,CAAC,GAAE0c,IAAEuB,GAAE,WAAWre,GAAEQ,GAAEQ,CAAC,GAAEH,IAAEwd,GAAE,WAAWje,GAAEY,GAAEhB,CAAC,GAAE+c,IAAEsB,GAAE,WAAWje,GAAEY,GAAER,CAAC;AAAE,eAAOY,KAAG0b,KAAG,KAAK,OAAO,CAAC,IAAE1c,GAAE,KAAK,OAAO,CAAC,IAAEY,GAAE8iB,GAAG,0BAAwBjjB,KAAGkc,KAAG,KAAK,OAAO,CAAC,IAAE/c,GAAE,KAAK,OAAO,CAAC,IAAEQ,GAAEsjB,GAAG,0BAAwB1iB,KAAGP,KAAG,KAAK,OAAO,CAAC,IAAET,GAAE,KAAK,OAAO,CAAC,IAAEJ,GAAE,CAACI,EAAE,OAAOJ,CAAC,KAAG8c,KAAGC,IAAE+G,GAAG,yBAAuBA,GAAG,sBAAoB1iB,KAAG2b,KAAG,KAAK,OAAO,CAAC,IAAE3c,GAAE,KAAK,OAAO,CAAC,IAAEI,GAAE,CAACJ,EAAE,OAAOI,CAAC,KAAGsc,KAAGjc,IAAEijB,GAAG,yBAAuBA,GAAG,sBAAoBhH,KAAGjc,KAAG,KAAK,OAAO,CAAC,IAAEG,GAAE,KAAK,OAAO,CAAC,IAAEhB,GAAE,CAACgB,EAAE,OAAOhB,CAAC,KAAGoB,KAAG2b,IAAE+G,GAAG,yBAAuBA,GAAG,sBAAoBhH,KAAGC,KAAG,KAAK,OAAO,CAAC,IAAE/b,GAAE,KAAK,OAAO,CAAC,IAAER,GAAE,CAACQ,EAAE,OAAOR,CAAC,KAAGY,KAAGP,IAAEijB,GAAG,yBAAuBA,GAAG,sBAAoBA,GAAG;AAAA,MAAe,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS9jB,GAAEQ,GAAEJ,GAAEY,GAAE;AAAC,YAAG,KAAK,YAAU,IAAG,CAACqd,GAAE,WAAWre,GAAEQ,GAAEJ,GAAEY,CAAC,EAAE,QAAO8iB,GAAG;AAAgB,YAAI1iB,IAAEoe,EAAG,MAAMxf,GAAEQ,GAAEJ,CAAC,GAAE0c,IAAE0C,EAAG,MAAMxf,GAAEQ,GAAEQ,CAAC;AAAE,YAAGI,IAAE,KAAG0b,IAAE,KAAG1b,IAAE,KAAG0b,IAAE,EAAE,QAAOgH,GAAG;AAAgB,YAAIjjB,IAAE2e,EAAG,MAAMpf,GAAEY,GAAEhB,CAAC,GAAE+c,IAAEyC,EAAG,MAAMpf,GAAEY,GAAER,CAAC;AAAE,eAAOK,IAAE,KAAGkc,IAAE,KAAGlc,IAAE,KAAGkc,IAAE,IAAE+G,GAAG,kBAAoB1iB,MAAJ,KAAW0b,MAAJ,KAAWjc,MAAJ,KAAWkc,MAAJ,IAAM,KAAK,6BAA6B/c,GAAEQ,GAAEJ,GAAEY,CAAC,KAAOI,MAAJ,KAAW0b,MAAJ,KAAWjc,MAAJ,KAAWkc,MAAJ,KAAO,KAAK,YAAU,IAAG/c,EAAE,SAASI,CAAC,KAAGJ,EAAE,SAASgB,CAAC,IAAE,KAAK,OAAO,CAAC,IAAEhB,IAAEQ,EAAE,SAASJ,CAAC,KAAGI,EAAE,SAASQ,CAAC,IAAE,KAAK,OAAO,CAAC,IAAER,IAAMY,MAAJ,IAAM,KAAK,OAAO,CAAC,IAAE,IAAIgd,EAAEhe,CAAC,IAAM0c,MAAJ,IAAM,KAAK,OAAO,CAAC,IAAE,IAAIsB,EAAEpd,CAAC,IAAMH,MAAJ,IAAM,KAAK,OAAO,CAAC,IAAE,IAAIud,EAAEpe,CAAC,IAAM+c,MAAJ,MAAQ,KAAK,OAAO,CAAC,IAAE,IAAIqB,EAAE5d,CAAC,OAAK,KAAK,YAAU,IAAG,KAAK,OAAO,CAAC,IAAE,KAAK,aAAaR,GAAEQ,GAAEJ,GAAEY,CAAC,IAAG8iB,GAAG;AAAA,MAAmB,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,SAAS9jB,GAAEQ,GAAEJ,GAAEY,GAAE;AAAC,YAAII,IAAEpB,GAAE8c,IAAEmD,GAAG,eAAejgB,GAAEI,GAAEY,CAAC,GAAEH,IAAEof,GAAG,eAAezf,GAAEJ,GAAEY,CAAC;AAAE,eAAOH,IAAEic,MAAIA,IAAEjc,GAAEO,IAAEZ,KAAIK,IAAEof,GAAG,eAAe7f,GAAEJ,GAAEQ,CAAC,KAAGsc,MAAIA,IAAEjc,GAAEO,IAAEhB,KAAIS,IAAEof,GAAG,eAAejf,GAAEhB,GAAEQ,CAAC,KAAGsc,MAAIA,IAAEjc,GAAEO,IAAEJ,IAAGI;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEP;AAAA,IAAC,EAAEijB,EAAE,GAAEE,KAAG,WAAU;AAAC,eAASxjB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,YAAG,EAAE,IAAE,KAAK,GAAG,KAAG,EAAE,IAAE,KAAK,GAAG,EAAE,QAAO;AAAK,YAAG,KAAK,GAAG,MAAI,EAAE,KAAG,KAAK,GAAG,MAAI,EAAE,EAAE,QAAO,KAAK,oBAAkB,IAAG;AAAK,YAAG,EAAE,MAAI,KAAK,GAAG,KAAG,EAAE,MAAI,KAAK,GAAG,GAAE;AAAC,cAAI,IAAE,EAAE,GAAE,IAAE,EAAE;AAAE,iBAAO,IAAE,MAAI,IAAE,EAAE,GAAE,IAAE,EAAE,IAAG,KAAK,GAAG,KAAG,KAAG,KAAK,GAAG,KAAG,MAAI,KAAK,oBAAkB,KAAI;AAAA,QAAI;AAAC,YAAG,EAAE,IAAE,KAAK,GAAG,KAAG,EAAE,KAAG,KAAK,GAAG,KAAG,EAAE,IAAE,KAAK,GAAG,KAAG,EAAE,KAAG,KAAK,GAAG,GAAE;AAAC,cAAIY,IAAEoe,EAAG,MAAM,GAAE,GAAE,KAAK,EAAE;AAAE,cAAGpe,MAAIoe,EAAG,UAAU,QAAO,KAAK,oBAAkB,IAAG;AAAK,YAAE,IAAE,EAAE,MAAIpe,IAAE,CAACA,IAAGA,MAAIoe,EAAG,QAAM,KAAK;AAAA,QAAgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,eAAO,KAAK,YAAa,MAAGjB,EAAE;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,oBAAkBA,EAAE,WAAS,KAAK,iBAAe,KAAG,IAAEA,EAAE,WAASA,EAAE;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAiB,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,KAAG,MAAK,KAAK,iBAAe,GAAE,KAAK,oBAAkB;AAAG,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYH,KAAGa,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAEnf,IAAE,UAAU,CAAC,GAAEY,IAAE,IAAIR,EAAE,CAAC,GAAEY,IAAE,IAAIgd,KAAE,IAAE,IAAIA,KAAEvd,IAAE,GAAEA,IAAET,EAAE,QAAOS,IAAI,KAAGT,EAAE,cAAcS,GAAEO,CAAC,GAAEhB,EAAE,cAAcS,IAAE,GAAE,CAAC,GAAEG,EAAE,aAAaI,GAAE,CAAC,GAAEJ,EAAE,YAAW,EAAG,QAAOA,EAAE,YAAa;AAAC,iBAAOA,EAAE,YAAa;AAAA,QAAA;AAAC,YAAG,UAAU,CAAC,aAAYod,KAAG,UAAU,CAAC,aAAY,OAAM;AAAC,mBAAQrB,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAE,IAAIX,EAAEuc,CAAC,GAAEC,IAAE,GAAEA,IAAE7W,EAAE,QAAO6W,KAAI;AAAC,gBAAIhW,IAAEb,EAAE6W,CAAC,GAAEC,IAAE9W,EAAE6W,IAAE,CAAC;AAAE,gBAAG7b,EAAE,aAAa6F,GAAEiW,CAAC,GAAE9b,EAAE,YAAW,EAAG,QAAOA,EAAE,YAAW;AAAA,UAAE;AAAC,iBAAOA,EAAE,YAAa;AAAA,QAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEX;AAAA,IAAC,EAAG,GAACyjB,KAAG,WAAU;AAAC,eAASzjB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAY4d,KAAGa,GAAG,UAAU,CAAC,GAAEM,EAAE,GAAE;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,IAAIwE,MAAG,IAAE,IAAI3F,KAAEhd,IAAE,IAAIgd,KAAEtB,IAAE,EAAE,QAAOjc,IAAE,GAAEA,IAAEic,GAAEjc,IAAI,KAAG,EAAE,cAAcA,IAAE,GAAE,CAAC,GAAE,EAAE,cAAcA,GAAEO,CAAC,GAAE,EAAE,oBAAoB,GAAE,GAAEA,CAAC,GAAE,EAAE,gBAAe,EAAG,QAAM;AAAG,iBAAM;AAAA,QAAE;AAAC,YAAG,UAAU,CAAC,aAAYgd,KAAG,UAAU,CAAC,aAAY,OAAM;AAAC,mBAAQrB,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAE,IAAI4iB,MAAG/G,IAAE,GAAEA,IAAE7W,EAAE,QAAO6W,KAAI;AAAC,gBAAIhW,IAAEb,EAAE6W,IAAE,CAAC,GAAEC,IAAE9W,EAAE6W,CAAC;AAAE,gBAAG7b,EAAE,oBAAoB4b,GAAE/V,GAAEiW,CAAC,GAAE9b,EAAE,gBAAiB,EAAC,QAAM;AAAA,UAAE;AAAC,iBAAM;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO6iB,GAAG,kBAAkB,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE5jB,GAAE;AAAC,eAAOI,EAAE,aAAa,GAAEJ,CAAC,MAAIme,EAAE;AAAA,MAAQ,EAAC,CAAC,CAAC,GAAE/d;AAAA,IAAC,EAAG,GAAC0jB,KAAG,WAAU;AAAC,eAAS1jB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,SAAS,QAAO,IAAI,MAAK,SAAS,CAAC,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,SAAS,QAAO,IAAI,KAAG,KAAK,SAAS,CAAC,MAAI+d,EAAE,KAAK,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,SAAS,QAAO,IAAI,MAAK,SAAS,CAAC,MAAIA,EAAE,SAAO,KAAK,SAAS,CAAC,IAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAW,KAAK,SAAS,WAAlB;AAAA,MAAwB,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,YAAG,EAAE,SAAS,SAAO,KAAK,SAAS,QAAO;AAAC,cAAI,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAE,YAAEK,EAAE,EAAE,IAAE,KAAK,SAASA,EAAE,EAAE,GAAE,EAAEA,EAAE,IAAI,IAAEL,EAAE,MAAK,EAAEK,EAAE,KAAK,IAAEL,EAAE,MAAK,KAAK,WAAS;AAAA,QAAC;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,SAAS,QAAO,IAAI,MAAK,SAAS,CAAC,MAAIA,EAAE,QAAM,IAAE,EAAE,SAAS,WAAS,KAAK,SAAS,CAAC,IAAE,EAAE,SAAS,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAG,KAAK,SAAS,UAAQ,EAAE,QAAO;AAAK,YAAI,IAAE,KAAK,SAASK,EAAE,IAAI;AAAE,aAAK,SAASA,EAAE,IAAI,IAAE,KAAK,SAASA,EAAE,KAAK,GAAE,KAAK,SAASA,EAAE,KAAK,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAE,IAAIM;AAAG,eAAO,KAAK,SAAS,SAAO,KAAG,EAAE,OAAOX,EAAE,iBAAiB,KAAK,SAASK,EAAE,IAAI,CAAC,CAAC,GAAE,EAAE,OAAOL,EAAE,iBAAiB,KAAK,SAASK,EAAE,EAAE,CAAC,CAAC,GAAE,KAAK,SAAS,SAAO,KAAG,EAAE,OAAOL,EAAE,iBAAiB,KAAK,SAASK,EAAE,KAAK,CAAC,CAAC,GAAE,EAAE,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,aAAK,SAASA,EAAE,EAAE,IAAE,GAAE,KAAK,SAASA,EAAE,IAAI,IAAE,GAAE,KAAK,SAASA,EAAE,KAAK,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,eAAO,IAAE,KAAK,SAAS,SAAO,KAAK,SAAS,CAAC,IAAEL,EAAE;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK,SAAS,SAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,SAAS,QAAO,IAAI,KAAG,KAAK,SAAS,CAAC,MAAIA,EAAE,KAAK,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,YAAYK,EAAE,IAAG,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,SAAS,CAAC,IAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,aAAK,WAAS,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAE,KAAK,gBAAgBL,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,SAAS,CAAC,MAAI,EAAE,SAAS,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,SAAS,QAAO,IAAI,KAAG,KAAK,SAAS,CAAC,MAAI,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,WAAS,MAAS,UAAU,WAAd;AAAsB,cAAG,UAAU,CAAC,aAAY,OAAM;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,KAAK,EAAE,MAAM;AAAA,UAAC,WAAS,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,gBAAIne,IAAE,UAAU,CAAC;AAAE,iBAAK,KAAK,CAAC,GAAE,KAAK,SAASwe,EAAE,EAAE,IAAExe;AAAA,UAAC,WAAS,UAAU,CAAC,aAAYI,GAAE;AAAC,gBAAIQ,IAAE,UAAU,CAAC;AAAE,gBAAG,KAAK,KAAKA,EAAE,SAAS,MAAM,GAASA,MAAP,KAAS,UAAQI,IAAE,GAAEA,IAAE,KAAK,SAAS,QAAOA,IAAI,MAAK,SAASA,CAAC,IAAEJ,EAAE,SAASI,CAAC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,eAAK,KAAK,CAAC,GAAE,KAAK,SAAS6B,EAAE,EAAE,IAAE,GAAE,KAAK,SAASA,EAAE,IAAI,IAAE/d,GAAE,KAAK,SAAS+d,EAAE,KAAK,IAAE7B;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEvc;AAAA,IAAC,EAAC,GAAG2jB,KAAG,WAAU;AAAC,eAAS3jB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,IAAI,CAAC,EAAE,OAAQ,KAAE,KAAI,KAAK,IAAI,CAAC,EAAE,OAAQ,KAAE,KAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,IAAI,CAAC,EAAE,gBAAgB,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,IAAI,CAAC,EAAE,OAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,sBAAsB,GAAE,CAAC,GAAE,KAAK,sBAAsB,GAAE,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,IAAI,CAAC,EAAE,sBAAsB,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,IAAI,CAAC,EAAE,OAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,CAAO,KAAK,IAAI,CAAC,MAAjB,QAA2B,EAAE,IAAI,CAAC,MAAd,OAAgB,KAAK,IAAI,CAAC,IAAE,IAAI0jB,GAAG,EAAE,IAAI,CAAC,CAAC,IAAE,KAAK,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,aAAK,IAAI,CAAC,EAAE,KAAM,GAAC,KAAK,IAAI,CAAC,EAAE,KAAM;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,IAAI,CAAC,EAAE,IAAItF,EAAE,EAAE;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAE,IAAIM;AAAG,eAAc,KAAK,IAAI,CAAC,MAAjB,SAAqB,EAAE,OAAO,IAAI,GAAE,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE,SAAU,CAAA,IAAU,KAAK,IAAI,CAAC,MAAjB,SAAqB,EAAE,OAAO,KAAK,GAAE,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE,SAAU,CAAA,IAAG,EAAE,SAAU;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,IAAI,CAAC,EAAE,OAAM,KAAI,KAAK,IAAI,CAAC,EAAE,OAAM;AAAG,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,IAAI,CAAC,EAAE;QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,IAAI,CAAC,EAAE,UAAS;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,IAAI,CAAC,EAAE,YAAYN,EAAE,IAAG,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAExd,IAAE,UAAU,CAAC;AAAE,eAAK,IAAI,CAAC,EAAE,YAAY,GAAEA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,GAAE,CAAC,KAAG,KAAK,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,IAAI,CAAC,EAAE,kBAAkB,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,aAAK,IAAI,CAAC,EAAE,OAAQ,MAAG,KAAK,IAAI,CAAC,IAAE,IAAI8iB,GAAG,KAAK,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAAA,MAAE,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,MAAI,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAM,UAAU,WAAd;AAAsB,cAAG,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,IAAI,CAAC,IAAE,IAAIA,GAAG,CAAC,GAAE,KAAK,IAAI,CAAC,IAAE,IAAIA,GAAG,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAY1jB,GAAE;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,iBAAK,IAAI,CAAC,IAAE,IAAI8jB,GAAG9jB,EAAE,IAAI,CAAC,CAAC,GAAE,KAAK,IAAI,CAAC,IAAE,IAAI8jB,GAAG9jB,EAAE,IAAI,CAAC,CAAC;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,eAAK,IAAI,CAAC,IAAE,IAAI8iB,GAAG3F,EAAE,IAAI,GAAE,KAAK,IAAI,CAAC,IAAE,IAAI2F,GAAG3F,EAAE,IAAI,GAAE,KAAK,IAAIvd,CAAC,EAAE,YAAYI,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,eAAK,IAAI,CAAC,IAAE,IAAImH,GAAG,GAAErjB,GAAEkc,CAAC,GAAE,KAAK,IAAI,CAAC,IAAE,IAAImH,GAAG,GAAErjB,GAAEkc,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI5W,IAAE,UAAU,CAAC,GAAEhF,IAAE,UAAU,CAAC,GAAE6b,IAAE,UAAU,CAAC,GAAEhW,IAAE,UAAU,CAAC;AAAE,eAAK,IAAI,CAAC,IAAE,IAAIkd,GAAG3F,EAAE,MAAKA,EAAE,MAAKA,EAAE,IAAI,GAAE,KAAK,IAAI,CAAC,IAAE,IAAI2F,GAAG3F,EAAE,MAAKA,EAAE,MAAKA,EAAE,IAAI,GAAE,KAAK,IAAIpY,CAAC,EAAE,aAAahF,GAAE6b,GAAEhW,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,iBAAQ5G,IAAE,IAAII,EAAE+d,EAAE,IAAI,GAAEvd,IAAE,GAAEA,IAAE,GAAEA,IAAI,CAAAZ,EAAE,YAAYY,GAAE,EAAE,YAAYA,CAAC,CAAC;AAAE,eAAOZ;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEI;AAAA,IAAC,EAAG,GAAC4jB,KAAG,WAAU;AAAC,eAAS5jB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAU,KAAK,UAAZ,KAAkB,QAAO;AAAK,iBAAQ,IAAE,IAAI,MAAM,KAAK,KAAK,KAAM,CAAA,EAAE,KAAK,IAAI,GAAE,IAAE,GAAE,IAAE,KAAK,KAAK,KAAI,GAAG,IAAI,GAAE,CAAC,IAAE,KAAK,KAAK,IAAI,CAAC;AAAE,aAAK,QAAM,KAAK,iBAAiB,iBAAiB,CAAC,GAAE,KAAK,UAAQgf,EAAG,MAAM,KAAK,MAAM,eAAgB,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAW,KAAK,OAAO,iBAAgB,MAAhC;AAAA,MAAkC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,aAAK,WAAS;AAAE,YAAI,IAAE,GAAE,IAAE;AAAG,WAAE;AAAC,cAAU,MAAP,KAAS,OAAM,IAAIE,GAAG,yBAAyB;AAAE,cAAG,EAAE,YAAW,MAAK,KAAK,OAAM,IAAIA,GAAG,yDAAuD,EAAE,cAAa,CAAE;AAAE,eAAK,OAAO,IAAI,CAAC;AAAE,cAAI,IAAE,EAAE,SAAU;AAAC,UAAA1B,GAAE,OAAO,EAAE,QAAQ,GAAE,KAAK,WAAW,CAAC,GAAE,KAAK,UAAU,EAAE,QAAS,GAAC,EAAE,UAAS,GAAG,CAAC,GAAE,IAAE,IAAG,KAAK,YAAY,GAAE,IAAI,GAAE,IAAE,KAAK,QAAQ,CAAC;AAAA,QAAC,SAAO,MAAI,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,KAAK,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,aAAK,iBAAe;AAAE,YAAI,IAAE,KAAK;AAAS,WAAE;AAAC,cAAI,IAAE,EAAE,UAAU,WAAW,kBAAkB,IAAI;AAAE,cAAE,KAAK,mBAAiB,KAAK,iBAAe,IAAG,IAAE,KAAK,QAAQ,CAAC;AAAA,QAAC,SAAO,MAAI,KAAK;AAAU,aAAK,kBAAgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE;AAAiB,YAAG,GAAE;AAAC,cAAI5c,IAAE;AAAE,gBAAIA,IAAE;AAAG,mBAAQ0b,IAAE1b,GAAE0b,IAAE,EAAE,QAAOA,IAAI,MAAK,KAAK,IAAI,EAAEA,CAAC,CAAC;AAAA,QAAC,OAAK;AAAC,cAAIjc,IAAE,EAAE,SAAO;AAAE,gBAAIA,IAAE,EAAE,SAAO;AAAG,mBAAQkc,IAAElc,GAAEkc,KAAG,GAAEA,IAAI,MAAK,KAAK,IAAI,EAAEA,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAO,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK;AAAS;AAAG,YAAE,QAAO,EAAG,YAAY,EAAE,GAAE,IAAE,EAAE,QAAO;AAAA,eAAS,MAAI,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,cAAe;AAAkD,YAA9C,CAAC,EAAE,oBAAmB,EAAG,SAAS,CAAC,KAAc,CAACkH,GAAG,SAAS,GAAE,EAAE,eAAgB,CAAA,EAAE,QAAM;AAAG,iBAAQ,IAAE,KAAK,OAAO,SAAU,GAAC,EAAE,QAAS;AAAG,cAAG,EAAE,OAAO,cAAc,CAAC,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,aAAK,OAAO,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAc,KAAK,WAAZ;AAAA,MAAkB,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,eAAO,KAAK,iBAAe,KAAG,KAAK,qBAAoB,GAAG,KAAK;AAAA,MAAc,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,WAAW,GAAE,CAAC,GAAE,KAAK,WAAW,GAAE,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,EAAE,YAAY,GAAErF,EAAE,KAAK;AAAE,cAAG,MAAIL,EAAE,KAAK,QAAO;AAAK,cAAG,KAAK,OAAO,YAAY,CAAC,MAAIA,EAAE,KAAK,QAAO,KAAK,OAAO,YAAY,GAAE,CAAC,GAAE;AAAA,QAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,aAAK,SAAO,GAAS,MAAP,QAAU,EAAE,QAAQ,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAI,MAAM,KAAK,OAAO,KAAI,CAAE,EAAE,KAAK,IAAI,GAAE,IAAE,GAAE,IAAE,KAAK,OAAO,KAAI,GAAG,IAAI,GAAE,CAAC,IAAE,KAAK,OAAO,IAAI,CAAC,EAAE,cAAa;AAAG,eAAO,EAAE,cAAc,KAAK,cAAe,GAAC,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,WAAS,MAAK,KAAK,iBAAe,IAAG,KAAK,SAAO,IAAIqB,KAAG,KAAK,OAAK,IAAIA,KAAG,KAAK,SAAO,IAAIuE,GAAG5F,EAAE,IAAI,GAAE,KAAK,QAAM,MAAK,KAAK,UAAQ,MAAK,KAAK,SAAO,MAAK,KAAK,SAAO,IAAIqB,KAAG,KAAK,mBAAiB,MAAS,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAK,mBAAiB,GAAE,KAAK,cAAc,CAAC,GAAE,KAAK;UAAa;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEpf;AAAA,IAAC,EAAC,GAAG6jB,KAAG,SAAS7jB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,SAAS9c,GAAEQ,GAAE;AAAC,QAAAR,EAAE,eAAeQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASR,GAAE;AAAC,eAAOA,EAAE,WAAY;AAAA,MAAA,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAIA,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAA4jB,GAAG,aAAa,KAAK,MAAKpkB,GAAEQ,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEsc;AAAA,IAAC,EAAEsH,EAAE,GAAEE,KAAG,SAAS9jB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,YAAI9c,IAAE,IAAI4f,KAAGpf,IAAE,KAAK;AAAS,WAAE;AAAC,cAAUA,EAAE,eAAgB,MAAzB,MAA0B;AAAC,gBAAIJ,IAAE,IAAIikB,GAAG7jB,GAAE,KAAK,gBAAgB;AAAE,YAAAR,EAAE,IAAII,CAAC;AAAA,UAAC;AAAC,UAAAI,IAAEA,EAAE,QAAS;AAAA,QAAA,SAAOA,MAAI,KAAK;AAAU,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,GAAEQ,GAAE;AAAC,QAAAR,EAAE,YAAYQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wCAAuC,OAAM,WAAU;AAAC,YAAIR,IAAE,KAAK;AAAS;AAAG,UAAAA,EAAE,QAAS,EAAC,SAAU,EAAC,yBAAyB,IAAI,GAAEA,IAAEA,EAAE;eAAgBA,MAAI,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASA,GAAE;AAAC,eAAOA,EAAE,QAAO;AAAA,MAAE,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAIA,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAA4jB,GAAG,aAAa,KAAK,MAAKpkB,GAAEQ,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEsc;AAAA,IAAC,EAAEsH,EAAE,GAAEG,KAAG,WAAU;AAAC,eAAS/jB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,aAAK,aAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,aAAK,cAAY;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAa,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,aAAK,SAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,aAAK,aAAW,GAAE,KAAK,gBAAc;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,QAAAwd,GAAE,OAAO,KAAK,OAAO,iBAAgB,KAAI,GAAE,qBAAqB,GAAE,KAAK,UAAU,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,SAAO,MAAK,KAAK,cAAY,IAAG,KAAK,aAAW,IAAG,KAAK,gBAAc,IAAG,KAAK,aAAW,IAAO,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,SAAO;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAExd;AAAA,IAAC,EAAG,GAACgkB,KAAG,SAAShkB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,iBAAQb,IAAE,KAAK,SAAU,EAAC,SAAU,EAAC,SAAQ,GAAGA,EAAE,QAAO;AAAK,cAAGA,EAAE,KAAM,EAAC,QAAO,EAAG,WAAU,EAAG,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAW,KAAK,OAAO,iBAAgB,MAAhC;AAAA,MAAkC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASA,GAAE;AAAC,QAAAA,EAAE,QAAQ,UAAQ,KAAK,SAAO,WAAS,KAAK,MAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASA,GAAE;AAAA,QAAE,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASA,GAAEQ,GAAE;AAAC,YAAIJ,IAAEme,EAAE;AAAK,YAAGne,IAAE,KAAK,OAAO,YAAYI,CAAC,GAAE,CAACR,EAAE,OAAOQ,CAAC,GAAE;AAAC,cAAIQ,IAAEhB,EAAE,YAAYQ,CAAC;AAAE,UAAAJ,MAAIme,EAAE,aAAWne,IAAEY;AAAA,QAAE;AAAC,eAAOZ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAsB,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,EAAE,QAAO6c,EAAE7b,EAAEP,EAAE,SAAS,GAAE,YAAW,IAAI,EAAE,MAAM,MAAK,SAAS;AAAE,YAAIb,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAO,KAAK,WAAZ,OAAmB,KAAK,SAAO,IAAI2jB,GAAGnkB,GAAEQ,CAAC,IAAE,KAAK,OAAO,YAAYR,GAAEQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYK,GAAE;AAAC,cAAIb,IAAE,UAAU,CAAC;AAAE,eAAK,WAAWA,EAAE,MAAM;AAAA,QAAC,WAAS,UAAU,CAAC,aAAYmkB,GAAG,UAAQ3jB,IAAE,UAAU,CAAC,GAAEJ,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,cAAIY,IAAE,KAAK,sBAAsBR,GAAEJ,CAAC,GAAEgB,IAAE,KAAK,OAAO,YAAYhB,CAAC;AAAE,UAAAgB,MAAImd,EAAE,QAAM,KAAK,OAAO,YAAYne,GAAEY,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAShB,GAAE;AAAC,aAAK,OAAO,OAAOA,CAAC,GAAEA,EAAE,QAAQ,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,GAAE;AAAC,YAAU,KAAK,WAAZ,KAAmB,QAAO;AAAK,YAAIQ,IAAE+d,EAAE;AAAK,QAAO,KAAK,WAAZ,SAAqB/d,IAAE,KAAK,OAAO,YAAYR,CAAC;AAAG,YAAII,IAAE;AAAK,gBAAOI;UAAG,KAAK+d,EAAE;AAAS,YAAAne,IAAEme,EAAE;AAAS;AAAA,UAAM,KAAKA,EAAE;AAAA,UAAS;AAAQ,YAAAne,IAAEme,EAAE;AAAA,QAAQ;AAAC,aAAK,OAAO,YAAYve,GAAEI,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,SAAO,MAAK,KAAK,SAAO;AAAK,YAAIJ,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,aAAK,SAAOR,GAAE,KAAK,SAAOQ,GAAE,KAAK,SAAO,IAAI2jB,GAAG,GAAE5F,EAAE,IAAI;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE1d;AAAA,IAAC,EAAE0jB,EAAE,GAAEE,KAAG,SAASjkB,GAAE;AAAC,MAAAQ,EAAEI,GAAEZ,CAAC;AAAE,UAAIJ,IAAE4G,EAAE5F,CAAC;AAAE,eAASA,IAAG;AAAC,eAAOpB,EAAE,MAAKoB,CAAC,GAAEhB,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOgB;AAAA,IAAC,EAAE+gB,EAAE;AAAE,aAASuC,GAAG1kB,GAAE;AAAC,aAAaA,KAAN,OAAQ,IAAEA,EAAE;AAAA,IAAK;AAAC,aAAS2kB,GAAG3kB,GAAE;AAAC,aAAaA,KAAN,OAAQ,OAAKA,EAAE;AAAA,IAAM;AAAC,aAAS4kB,GAAG5kB,GAAEQ,GAAE;AAAC,MAAOR,MAAP,SAAWA,EAAE,QAAMQ;AAAA,IAAE;AAAC,aAASqkB,GAAG7kB,GAAE;AAAC,aAAaA,KAAN,OAAQ,OAAKA,EAAE;AAAA,IAAI;AAAC,aAAS8kB,GAAG9kB,GAAE;AAAC,aAAaA,KAAN,OAAQ,OAAKA,EAAE;AAAA,IAAK;AAAC,QAAI,KAAG,SAASQ,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,IAAGtc,IAAEY,EAAE,KAAK,IAAI,GAAG,QAAM,MAAKZ,EAAE,QAAM,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,OAAM,OAAM,SAAS9c,GAAE;AAAC,iBAAQQ,IAAE,KAAK,OAAaA,MAAP,QAAU;AAAC,cAAIJ,IAAEJ,EAAE,UAAUQ,EAAE,GAAG;AAAE,cAAGJ,IAAE,EAAE,CAAAI,IAAEA,EAAE;AAAA,eAAS;AAAC,gBAAG,EAAEJ,IAAE,GAAG,QAAOI,EAAE;AAAM,YAAAA,IAAEA,EAAE;AAAA,UAAK;AAAA,QAAC;AAAC,eAAO;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASR,GAAEQ,GAAE;AAAC,YAAU,KAAK,UAAZ,KAAkB,QAAO,KAAK,QAAM,EAAC,KAAIR,GAAE,OAAMQ,GAAE,MAAK,MAAK,OAAM,MAAK,QAAO,MAAK,OAAM,GAAE,UAAS,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAK,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAG,EAAC,GAAE,KAAK,QAAM,GAAE;AAAK,YAAIJ,GAAEY,GAAEI,IAAE,KAAK;AAAM;AAAG,cAAGhB,IAAEgB,IAAGJ,IAAEhB,EAAE,UAAUoB,EAAE,GAAG,KAAG,EAAE,CAAAA,IAAEA,EAAE;AAAA,eAAS;AAAC,gBAAG,EAAEJ,IAAE,IAAG;AAAC,kBAAI8b,IAAE1b,EAAE;AAAM,qBAAOA,EAAE,QAAMZ,GAAEsc;AAAA,YAAC;AAAC,YAAA1b,IAAEA,EAAE;AAAA,UAAK;AAAA,eAAeA,MAAP;AAAU,YAAIP,IAAE,EAAC,KAAIb,GAAE,MAAK,MAAK,OAAM,MAAK,OAAMQ,GAAE,QAAOJ,GAAE,OAAM,GAAE,UAAS,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAK,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAG,EAAC;AAAE,eAAOY,IAAE,IAAEZ,EAAE,OAAKS,IAAET,EAAE,QAAMS,GAAE,KAAK,kBAAkBA,CAAC,GAAE,KAAK,SAAQ;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASb,GAAE;AAAC,YAAIQ;AAAE,aAAIR,EAAE,QAAM,GAAQA,KAAN,QAASA,MAAI,KAAK,SAAWA,EAAE,OAAO,UAAb,IAAoB,CAAA2kB,GAAG3kB,CAAC,MAAI6kB,GAAGF,GAAGA,GAAG3kB,CAAC,CAAC,CAAC,IAAM0kB,GAAGlkB,IAAEskB,GAAGH,GAAGA,GAAG3kB,CAAC,CAAC,CAAC,CAAC,MAAtB,KAAyB4kB,GAAGD,GAAG3kB,CAAC,GAAE,CAAC,GAAE4kB,GAAGpkB,GAAE,CAAC,GAAEokB,GAAGD,GAAGA,GAAG3kB,CAAC,CAAC,GAAE,CAAC,GAAEA,IAAE2kB,GAAGA,GAAG3kB,CAAC,CAAC,MAAIA,MAAI8kB,GAAGH,GAAG3kB,CAAC,CAAC,MAAIA,IAAE2kB,GAAG3kB,CAAC,GAAE,KAAK,WAAWA,CAAC,IAAG4kB,GAAGD,GAAG3kB,CAAC,GAAE,CAAC,GAAE4kB,GAAGD,GAAGA,GAAG3kB,CAAC,CAAC,GAAE,CAAC,GAAE,KAAK,YAAY2kB,GAAGA,GAAG3kB,CAAC,CAAC,CAAC,KAAO0kB,GAAGlkB,IAAEqkB,GAAGF,GAAGA,GAAG3kB,CAAC,CAAC,CAAC,CAAC,MAAtB,KAAyB4kB,GAAGD,GAAG3kB,CAAC,GAAE,CAAC,GAAE4kB,GAAGpkB,GAAE,CAAC,GAAEokB,GAAGD,GAAGA,GAAG3kB,CAAC,CAAC,GAAE,CAAC,GAAEA,IAAE2kB,GAAGA,GAAG3kB,CAAC,CAAC,MAAIA,MAAI6kB,GAAGF,GAAG3kB,CAAC,CAAC,MAAIA,IAAE2kB,GAAG3kB,CAAC,GAAE,KAAK,YAAYA,CAAC,IAAG4kB,GAAGD,GAAG3kB,CAAC,GAAE,CAAC,GAAE4kB,GAAGD,GAAGA,GAAG3kB,CAAC,CAAC,GAAE,CAAC,GAAE,KAAK,WAAW2kB,GAAGA,GAAG3kB,CAAC,CAAC,CAAC;AAAG,aAAK,MAAM,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAIA,IAAE,IAAI4f,KAAGpf,IAAE,KAAK,cAAe;AAAC,YAAUA,MAAP,KAAS,MAAIR,EAAE,IAAIQ,EAAE,KAAK,IAAUA,IAAEsc,EAAE,UAAUtc,CAAC,OAAvB,OAA2B,CAAAR,EAAE,IAAIQ,EAAE,KAAK;AAAE,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAIA,IAAE,IAAI2e,MAAEne,IAAE,KAAK,cAAe;AAAC,YAAUA,MAAP,KAAS,MAAIR,EAAE,IAAIQ,CAAC,IAAUA,IAAEsc,EAAE,UAAUtc,CAAC,OAAvB,OAA2B,CAAAR,EAAE,IAAIQ,CAAC;AAAE,eAAOR;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,GAAE;AAAC,YAASA,KAAN,MAAQ;AAAC,cAAIQ,IAAER,EAAE;AAAM,UAAAA,EAAE,QAAMQ,EAAE,MAAWA,EAAE,QAAR,SAAeA,EAAE,KAAK,SAAOR,IAAGQ,EAAE,SAAOR,EAAE,QAAaA,EAAE,UAAR,OAAe,KAAK,QAAMQ,IAAER,EAAE,OAAO,SAAOA,IAAEA,EAAE,OAAO,OAAKQ,IAAER,EAAE,OAAO,QAAMQ,GAAEA,EAAE,OAAKR,GAAEA,EAAE,SAAOQ;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASR,GAAE;AAAC,YAASA,KAAN,MAAQ;AAAC,cAAIQ,IAAER,EAAE;AAAK,UAAAA,EAAE,OAAKQ,EAAE,OAAYA,EAAE,SAAR,SAAgBA,EAAE,MAAM,SAAOR,IAAGQ,EAAE,SAAOR,EAAE,QAAaA,EAAE,UAAR,OAAe,KAAK,QAAMQ,IAAER,EAAE,OAAO,UAAQA,IAAEA,EAAE,OAAO,QAAMQ,IAAER,EAAE,OAAO,OAAKQ,GAAEA,EAAE,QAAMR,GAAEA,EAAE,SAAOQ;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAIR,IAAE,KAAK;AAAM,YAASA,KAAN,KAAQ,QAAWA,EAAE,QAAR,OAAc,CAAAA,IAAEA,EAAE;AAAK,eAAOA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,GAAE;AAAC,iBAAQQ,IAAE,KAAK,OAAaA,MAAP,QAAU;AAAC,cAAIJ,IAAEJ,EAAE,UAAUQ,EAAE,GAAG;AAAE,cAAGJ,IAAE,EAAE,CAAAI,IAAEA,EAAE;AAAA,eAAS;AAAC,gBAAG,EAAEJ,IAAE,GAAG,QAAM;AAAG,YAAAI,IAAEA,EAAE;AAAA,UAAK;AAAA,QAAC;AAAC,eAAM;AAAA,MAAE,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,aAAY,OAAM,SAASR,GAAE;AAAC,YAAIQ;AAAE,YAAUR,MAAP,KAAS,QAAO;AAAK,YAAUA,EAAE,UAAT,MAAe;AAAC,eAAIQ,IAAER,EAAE,OAAaQ,EAAE,SAAT,OAAe,CAAAA,IAAEA,EAAE;AAAK,iBAAOA;AAAA,QAAC;AAAC,QAAAA,IAAER,EAAE;AAAO,iBAAQI,IAAEJ,GAASQ,MAAP,QAAUJ,MAAII,EAAE,QAAO,CAAAJ,IAAEI,GAAEA,IAAEA,EAAE;AAAO,eAAOA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEsc;AAAA,IAAC,EAAE2H,EAAE,GAAEM,KAAG,WAAU;AAAC,eAASvkB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,QAAQ,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAY4d,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,KAAK,QAAQ,IAAI,CAAC;AAAE,iBAAc,MAAP,SAAW,IAAE,KAAK,SAAS,WAAW,CAAC,GAAE,KAAK,QAAQ,IAAI,GAAE,CAAC,IAAG;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAYoG,IAAG;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,KAAK,QAAQ,IAAI,EAAE,eAAe;AAAE,iBAAc,MAAP,QAAU,KAAK,QAAQ,IAAI,EAAE,cAAe,GAAC,CAAC,GAAE,MAAI,EAAE,WAAW,CAAC,GAAE;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,KAAK,YAAW,EAAE,QAAO;AAAK,YAAE,KAAM,EAAC,MAAM,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,QAAQ,SAAS;MAAU,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK,QAAQ,OAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAI5E,KAAG,IAAE,KAAK,SAAU,GAAC,EAAE,aAAW;AAAC,cAAI,IAAE,EAAE,KAAI;AAAG,YAAE,SAAU,EAAC,YAAY,CAAC,MAAIrB,EAAE,YAAU,EAAE,IAAI,CAAC;AAAA,QAAC;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,EAAE,cAAa;AAAG,aAAK,QAAQ,CAAC,EAAE,IAAI,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,UAAQ,IAAI,MAAG,KAAK,WAAS;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,WAAS;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE/d;AAAA,IAAC,KAAIwkB,KAAG,WAAU;AAAC,eAASxkB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,eAAO,MAAIA,EAAE,MAAI,MAAIA,EAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,MAAI,MAAQ,IAAE,IAAE,KAAG,MAAZ;AAAA,MAAa,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAG,MAAI,EAAE,QAAO;AAAE,aAAQ,IAAE,IAAE,KAAG,MAAZ,EAAc,QAAM;AAAG,YAAI,IAAE,IAAE,IAAE,IAAE;AAAE,eAAW,MAAJ,MAAY,IAAE,IAAE,IAAE,OAAX,IAAc,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAEJ,GAAE;AAAC,eAAOA,MAAII,EAAE,KAAG,MAAIA,EAAE,MAAI,MAAIA,EAAE,KAAG,MAAIJ,KAAG,MAAIA,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEA,IAAE,UAAU,CAAC;AAAE,cAAO,MAAJ,KAAWA,MAAJ,EAAM,OAAM,IAAI8c,EAAE,6CAA2C,IAAE,OAAK9c,IAAE,IAAI;AAAE,iBAAO,KAAG,IAAEA,KAAG,IAAEI,EAAE,KAAGA,EAAE,KAAGJ,KAAG,IAAEI,EAAE,KAAGA,EAAE;AAAA,QAAE;AAAC,YAAG,UAAU,CAAC,aAAY4d,KAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,cAAIpd,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,cAAGA,EAAE,MAAIJ,EAAE,KAAGI,EAAE,MAAIJ,EAAE,EAAE,OAAM,IAAIkc,EAAE,0DAAwDlc,CAAC;AAAE,iBAAOI,EAAE,KAAGJ,EAAE,IAAEI,EAAE,KAAGJ,EAAE,IAAER,EAAE,KAAGA,EAAE,KAAGY,EAAE,KAAGJ,EAAE,IAAER,EAAE,KAAGA,EAAE;AAAA,QAAE;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG;AAAC,IAAAwkB,GAAG,KAAG,GAAEA,GAAG,KAAG,GAAEA,GAAG,KAAG,GAAEA,GAAG,KAAG;AAAE,QAAIC,KAAG,WAAU;AAAC,eAASzkB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,QAAM,EAAE,OAAK,KAAK,QAAM,EAAE,MAAI,IAAE,KAAK,YAAU,EAAE,YAAU,IAAE,KAAK,YAAU,EAAE,YAAU,KAAGgf,EAAG,MAAM,EAAE,KAAI,EAAE,KAAI,KAAK,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,aAAK,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,MAAM,KAAK,KAAI,KAAK,GAAG,GAAE,IAAE,KAAK,SAAQ,EAAG,QAAO,GAAG,IAAE,EAAE,YAAY,GAAG,GAAEpe,IAAE,EAAE,UAAU,IAAE,CAAC;AAAE,UAAE,MAAM,OAAKA,IAAE,OAAK,KAAK,MAAI,QAAM,KAAK,MAAI,MAAI,KAAK,YAAU,MAAI,IAAE,QAAM,KAAK,MAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,iBAAiB,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,MAAM,KAAK,KAAI,KAAK,GAAG,GAAE,IAAE,KAAK,SAAQ,EAAG,QAAS,GAAC,IAAE,EAAE,YAAY,GAAG;AAAE,eAAM,OAAK,EAAE,UAAU,IAAE,CAAC,IAAE,OAAK,KAAK,MAAI,QAAM,KAAK,MAAI,MAAI,KAAK,YAAU,MAAI,IAAE,QAAM,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,MAAI,GAAE,KAAK,MAAI,GAAE,KAAK,MAAI,EAAE,IAAE,EAAE,GAAE,KAAK,MAAI,EAAE,IAAE,EAAE,GAAE,KAAK,YAAU4jB,GAAG,SAAS,KAAK,KAAI,KAAK,GAAG,GAAEhH,GAAE,OAAO,EAAM,KAAK,QAAT,KAAkB,KAAK,QAAT,IAAc,wCAAwC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC5b,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,QAAM,MAAK,KAAK,SAAO,MAAK,KAAK,QAAM,MAAK,KAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,YAAU,MAAS,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,QAAM;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIhC,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,UAAAZ,EAAE,aAAa,KAAK,MAAKJ,GAAEY,GAAEI,GAAE,IAAI;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC;AAAE,UAAA3F,EAAE,aAAa,KAAK,MAAK,CAAC,GAAE,KAAK,KAAKK,GAAEkc,CAAC,GAAE,KAAK,SAAO5W;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE3F;AAAA,IAAC,KAAI0kB,KAAG,SAAS1kB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASb,GAAE;AAAC,eAAO,KAAK,OAAOA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,GAAE;AAAC,aAAK,aAAWA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,aAAK,SAAO,IAAImkB,GAAG,KAAK,MAAM,SAAQ,CAAE,GAAE,KAAK,cAAY,KAAK,OAAO,KAAM;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASnkB,GAAEQ,GAAE;AAAC,YAAU,KAAK,OAAOR,CAAC,MAApB,QAAuB,KAAK,OAAOA,CAAC,MAAIQ,EAAE,OAAM,IAAIkf,GAAG,gCAA+B,KAAK,eAAe;AAAE,aAAK,OAAO1f,CAAC,IAAEQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,iBAAQR,IAAE,IAAGQ,IAAE,GAAEA,IAAE,GAAEA,IAAI,MAAK,OAAO,OAAOA,CAAC,KAAG,KAAK,OAAO,YAAYA,GAAEoe,EAAE,IAAI,MAAIL,EAAE,YAAU,KAAK,OAAO,YAAY/d,GAAEoe,EAAE,KAAK,MAAIL,EAAE,aAAWve,IAAE;AAAI,eAAOA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,GAAE;AAAC,aAAK,WAASA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASA,GAAE;AAAC,QAAAid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,SAAQ,IAAI,EAAE,KAAK,MAAKb,CAAC,GAAEA,EAAE,MAAM,MAAI,KAAK,OAAO4e,EAAE,IAAI,IAAE,MAAI,KAAK,OAAOA,EAAE,KAAK,CAAC,GAAE5e,EAAE,MAAM,OAAK,KAAK,cAAe,IAAC,GAAG,GAAE,KAAK,eAAaA,EAAE,MAAM,WAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASA,GAAE;AAAC,aAAK,eAAaA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,YAAIA,IAAE,KAAK,OAAO,OAAO,CAAC,KAAG,KAAK,OAAO,OAAO,CAAC,GAAEQ,IAAE,CAAC,KAAK,OAAO,OAAO,CAAC,KAAG,KAAK,OAAO,kBAAkB,GAAE+d,EAAE,QAAQ,GAAEne,IAAE,CAAC,KAAK,OAAO,OAAO,CAAC,KAAG,KAAK,OAAO,kBAAkB,GAAEme,EAAE,QAAQ;AAAE,eAAOve,KAAGQ,KAAGJ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASJ,GAAE;AAAC,aAAK,YAAUA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAIA,IAAE,KAAK,MAAM,cAAe;AAAC,eAAO,KAAK,eAAaA,IAAE,CAACA,IAAGA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,GAAE;AAAC,aAAK,cAAYA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASA,GAAE;AAAC,aAAK,MAAMA,CAAC,GAAEA,EAAE,MAAM,GAAG,GAAE,KAAK,aAAW,KAAK,MAAM,MAAMA,CAAC,IAAE,KAAK,MAAM,aAAaA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASA,GAAE;AAAC,aAAK,OAAKA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASA,GAAE;AAAC,aAAK,WAAWA,CAAC,GAAE,KAAK,KAAK,WAAWA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASA,GAAEQ,GAAE;AAAC,YAAIJ,IAAE,KAAK,QAAS,EAAC,cAAa;AAAG,aAAK,eAAaA,IAAE,CAACA;AAAG,YAAIY,IAAE;AAAE,QAAAhB,MAAI4e,EAAE,SAAO5d,IAAE;AAAI,YAAII,IAAEwd,EAAE,SAAS5e,CAAC,GAAE8c,IAAEtc,IAAEJ,IAAEY;AAAE,aAAK,SAAShB,GAAEQ,CAAC,GAAE,KAAK,SAASY,GAAE0b,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS9c,GAAE;AAAC,aAAK,QAAMA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,aAAW,MAAK,KAAK,cAAY,IAAG,KAAK,aAAW,IAAG,KAAK,OAAK,MAAK,KAAK,QAAM,MAAK,KAAK,WAAS,MAAK,KAAK,YAAU,MAAK,KAAK,eAAa,MAAK,KAAK,SAAO,CAAC,GAAE,MAAK,IAAI;AAAE,YAAIA,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,YAAGykB,GAAG,aAAa,KAAK,MAAKjlB,CAAC,GAAE,KAAK,aAAWQ,GAAEA,EAAE,MAAK,KAAKR,EAAE,cAAc,CAAC,GAAEA,EAAE,cAAc,CAAC,CAAC;AAAA,aAAM;AAAC,cAAII,IAAEJ,EAAE,aAAc,IAAC;AAAE,eAAK,KAAKA,EAAE,cAAcI,CAAC,GAAEJ,EAAE,cAAcI,IAAE,CAAC,CAAC;AAAA,QAAC;AAAC,aAAK;MAAsB,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASJ,GAAEQ,GAAE;AAAC,eAAOR,MAAIue,EAAE,YAAU/d,MAAI+d,EAAE,WAAS,IAAEve,MAAIue,EAAE,YAAU/d,MAAI+d,EAAE,WAAS,KAAG;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE1d;AAAA,IAAC,EAAEokB,EAAE,GAAEE,KAAG,WAAU;AAAC,eAAS3kB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,eAAO,IAAIgkB,GAAG,GAAE,IAAI;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEhkB;AAAA,IAAC,KAAI4kB,KAAG,WAAU;AAAC,eAAS5kB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,UAAE,QAAQ,QAAQ;AAAE,iBAAQ,IAAE,GAAE,IAAE,KAAK,OAAO,QAAO,KAAI;AAAC,YAAE,QAAQ,UAAQ,IAAE,GAAG;AAAE,cAAI,IAAE,KAAK,OAAO,IAAI,CAAC;AAAE,YAAE,MAAM,CAAC,GAAE,EAAE,OAAO,MAAM,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,OAAO,KAAK,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYgkB,IAAG;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,OAAO,QAAQ,CAAC;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAYpG,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,OAAO,QAAQ,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK,OAAO;MAAU,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,iBAAQ,IAAE,KAAK,OAAO,SAAU,GAAC,EAAE,QAAS;AAAG,YAAE,KAAM,EAAC,SAAQ,EAAG;MAA0B,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,QAAA2B,GAAG,IAAI,QAAQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,OAAO,KAAK,CAAC;AAAE,YAAU,MAAP,KAAS,QAAM;AAAG,YAAI,IAAE,EAAE,SAAQ;AAAG,eAAc,MAAP,QAAU,EAAE,YAAY,CAAC,MAAIxB,EAAE;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,iBAAQ,IAAE,KAAK,OAAO,SAAU,GAAC,EAAE;AAAY,YAAE,KAAI,EAAG,SAAQ,EAAG,qBAAoB;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,eAAM,CAAC,CAAC,EAAE,OAAO,CAAC,KAAIiB,EAAG,MAAM,GAAE,GAAE,CAAC,MAAIA,EAAG,aAAWwF,GAAG,SAAS,GAAE,CAAC,MAAIA,GAAG,SAAS,GAAE,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,QAAAjF,GAAG,IAAI,MAAM,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK,OAAO,SAAU;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,OAAO,QAAO,KAAI;AAAC,cAAI,IAAE,KAAK,OAAO,IAAI,CAAC,GAAE3e,IAAE,EAAE,eAAc;AAAwD,cAAlD,KAAK,qBAAqB,GAAE,GAAEA,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,KAAc,KAAK,qBAAqB,GAAE,GAAEA,EAAEA,EAAE,SAAO,CAAC,GAAEA,EAAEA,EAAE,SAAO,CAAC,CAAC,EAAE,QAAO;AAAA,QAAC;AAAC,eAAO;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,aAAK,OAAO,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,KAAK,YAAW,EAAG,SAAU,GAAC,EAAE,aAAW;AAAC,cAAI,IAAE,EAAE,KAAI;AAAG,cAAG,EAAE,QAAO,MAAK,EAAE,QAAO;AAAA,QAAC;AAAC,eAAO;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,EAAE,SAAU,GAAC,EAAE,QAAS,KAAE;AAAC,cAAI,IAAE,EAAE,KAAI;AAAG,eAAK,OAAO,IAAI,CAAC;AAAE,cAAI,IAAE,IAAI8jB,GAAG,GAAE,EAAE,GAAE9jB,IAAE,IAAI8jB,GAAG,GAAE,EAAE;AAAE,YAAE,OAAO9jB,CAAC,GAAEA,EAAE,OAAO,CAAC,GAAE,KAAK,IAAI,CAAC,GAAE,KAAK,IAAIA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,aAAK,OAAO,IAAI,CAAC,GAAE,KAAK,aAAa,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,OAAO,OAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,OAAO,KAAM,GAAC,KAAI;AAAC,cAAI,IAAE,KAAK,OAAO,IAAI,CAAC,GAAEA,IAAE,EAAE;AAAiB,cAAG,EAAE,OAAOA,EAAE,CAAC,CAAC,KAAG,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAE,QAAO;AAAA,QAAC;AAAC,eAAO;AAAA,MAAI,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,SAAO,IAAIwe,KAAG,KAAK,SAAO,MAAK,KAAK,eAAa,IAAIA,KAAO,UAAU,WAAd,EAAqB,MAAK,SAAO,IAAImF,GAAG,IAAII,IAAE;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,SAAO,IAAIJ,GAAG,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,EAAE,SAAQ,GAAG,EAAE,QAAO;AAAK,YAAE,OAAO,WAAW,wBAAyB;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEvkB;AAAA,IAAC,EAAC,GAAG6kB,KAAG,WAAU;AAAC,eAAS7kB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,sBAAqB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,iBAAQ,IAAE,EAAE,SAAU,GAAC,EAAE,QAAS,KAAE;AAAC,cAAIY,IAAE,EAAE,KAAI;AAAG,UAAAA,EAAE,OAAM,IAAG,EAAE,IAAIA,CAAC,IAAE,EAAE,IAAIA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAIwe,KAAG,IAAE,EAAE,SAAQ,GAAG,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,OAAO,UAAU,KAAK,gBAAgB;AAAE,YAAE,IAAI,CAAC;AAAA,QAAC;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAExf,GAAE;AAAC,iBAAQY,IAAEZ,EAAE,SAAQ,GAAGY,EAAE,aAAW;AAAC,cAAII,IAAEJ,EAAE,KAAM;AAAC,cAAUI,EAAE,SAAU,MAAnB,MAAoB;AAAC,gBAAI,IAAEZ,EAAE,uBAAuBY,GAAE,CAAC;AAAE,gBAAU,MAAP,KAAS,OAAM,IAAIse,GAAG,oCAAmCte,EAAE,cAAc,CAAC,CAAC;AAAE,YAAAA,EAAE,SAAS,CAAC;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,iBAAQ,IAAE,IAAIwe,KAAGxe,IAAE,EAAE,SAAU,GAACA,EAAE,aAAW;AAAC,cAAI0b,IAAE1b,EAAE,KAAI;AAAG,cAAG0b,EAAE,iBAAgB,IAAG,GAAE;AAAC,YAAAA,EAAE;AAAuC,gBAAIjc,IAAEic,EAAE,kBAAiB,GAAGC,IAAE,KAAK,UAAUlc,CAAC;AAAE,YAAOkc,MAAP,QAAU,KAAK,kBAAkBA,GAAElc,CAAC,GAAE,EAAE,IAAIkc,CAAC,KAAG,EAAE,OAAOlc,CAAC;AAAA,UAAC,MAAM,GAAE,IAAIic,CAAC;AAAA,QAAC;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAI8C,KAAG,IAAE,EAAE,SAAQ,GAAG,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE;AAAO,cAAG,EAAE,WAAU,KAAI,EAAE,SAAU,EAAC,OAAQ,KAAS,EAAE,YAAa,MAAtB,MAAuB;AAAC,gBAAIxe,IAAE,IAAIkjB,GAAG,GAAE,KAAK,gBAAgB;AAAE,cAAE,IAAIljB,CAAC,GAAEA,EAAE,YAAa;AAAA,UAAA;AAAA,QAAC;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,EAAE,YAAW,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,KAAM;AAAC,YAAE,OAAQ,KAAE,EAAE,SAAS,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK,gBAAgB,KAAK,UAAU;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,MAAK,IAAE,EAAE,YAAW,EAAE,QAAO,KAAI;AAAC,cAAIA,IAAE,EAAE,KAAM;AAAC,UAAAA,EAAE,aAAW,IAAEA,GAAE;AAAA,QAAI;AAAC,eAAO4c,GAAE,OAAO,KAAG,GAAE,0CAA0C,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,IAAI,EAAE,eAAc,EAAE,SAAQ,CAAE;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,UAAAoH,GAAG,wBAAwB,CAAC;AAAE,cAAI,IAAE,KAAK,sBAAsB,CAAC,GAAEhkB,IAAE,IAAIwe,KAAG9C,IAAE,KAAK,sBAAsB,GAAE,KAAK,YAAW1b,CAAC;AAAE,eAAK,mBAAmB0b,GAAE,KAAK,YAAW1b,CAAC,GAAE,KAAK,eAAe,KAAK,YAAWA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,mBAAiB,MAAK,KAAK,aAAW,IAAIwe;AAAG,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,mBAAiB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,EAAE,cAAe,GAAC,IAAE,EAAE,oBAAqB,GAACxe,IAAE,EAAE,eAAe,CAAC,GAAE0b,IAAE,MAAKjc,IAAE,MAAKkc,IAAE,EAAE,SAAU,GAACA,EAAE,QAAS,KAAE;AAAC,cAAI5W,IAAE4W,EAAE,KAAI,GAAG5b,IAAEgF,EAAE,cAAe,GAAC6W,IAAE7b,EAAE,oBAAqB;AAAC,cAAG,CAAC6b,EAAE,OAAO,CAAC,KAAGA,EAAE,SAAS,CAAC,GAAE;AAAC,YAAA5b,IAAEwgB,GAAG,YAAY,EAAE,kBAAiBzgB,EAAE,eAAc,CAAE;AAAE,gBAAI6F,IAAE;AAAG,YAAAid,GAAG,SAAS7iB,GAAED,EAAE,eAAc,CAAE,MAAI6F,IAAE,KAAIA,MAAW8V,MAAP,QAAUjc,EAAE,SAASmc,CAAC,OAAKnc,KAAGic,IAAE3W,GAAG,cAAa,EAAG,oBAAmB;AAAA,UAAG;AAAA,QAAC;AAAC,eAAO2W;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEtc;AAAA,IAAC,EAAC,GAAG8kB,KAAG,WAAU;AAAC,eAAS9kB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,aAAY,OAAM,WAAU;AAAA,MAAA,EAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAAC+kB,KAAG,WAAU;AAAC,eAAS/kB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAO,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC8kB,IAAGlI,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,UAAQ,MAAK,KAAK,QAAM;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,UAAQ,GAAE,KAAK,QAAM;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE5c;AAAA,IAAC,EAAG,GAACglB,KAAG,WAAU;AAAC,eAAShlB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAG,KAAK,QAAS,EAAC,QAAO;AAAK,YAAI,IAAE,KAAK,OAAO,IAAI,CAAC;AAAE,eAAO,KAAK,OAAO,IAAI,GAAE,KAAK,OAAO,IAAI,KAAK,KAAK,CAAC,GAAE,KAAK,SAAO,GAAE,KAAK,QAAQ,CAAC,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,MAAK,IAAE,KAAK,OAAO,IAAI,CAAC,GAAE,IAAE,KAAG,KAAK,WAAS,IAAE,IAAE,OAAK,KAAK,SAAO,KAAK,OAAO,IAAI,IAAE,CAAC,EAAE,UAAU,KAAK,OAAO,IAAI,CAAC,CAAC,IAAE,KAAG,KAAI,KAAK,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,IAAE,IAAG,IAAE,EAAE,MAAK,OAAO,IAAI,GAAE,KAAK,OAAO,IAAI,CAAC,CAAC;AAAE,aAAK,OAAO,IAAI,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,aAAK,QAAM,GAAE,KAAK,OAAO,MAAO;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,QAAO,IAAG,OAAK,KAAK,OAAO,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAW,KAAK,UAAT;AAAA,MAAc,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,aAAK,OAAO,IAAI,IAAI,GAAE,KAAK,SAAO;AAAE,YAAI,IAAE,KAAK;AAAM,aAAI,KAAK,OAAO,IAAI,GAAE,CAAC,GAAE,EAAE,UAAU,KAAK,OAAO,IAAI,KAAK,MAAM,IAAE,CAAC,CAAC,CAAC,IAAE,GAAE,KAAG,EAAE,MAAK,OAAO,IAAI,GAAE,KAAK,OAAO,IAAI,KAAK,MAAM,IAAE,CAAC,CAAC,CAAC;AAAE,aAAK,OAAO,IAAI,GAAE,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,QAAM,MAAK,KAAK,SAAO,MAAK,KAAK,QAAM,GAAE,KAAK,SAAO,IAAIof,KAAG,KAAK,OAAO,IAAI,IAAI;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEpf;AAAA,IAAC,EAAG,GAACilB,KAAG,WAAU;AAAC,eAASjlB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAA,MAAA,EAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,GAAGklB,KAAG,WAAU;AAAC,eAASllB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,iBAAiB,KAAI;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAgB,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,QAAAwd,GAAE,OAAc,KAAK,YAAZ,IAAmB,GAAE,KAAK,iBAAiB,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,iBAAiB,QAAO;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAc,KAAK,YAAZ,SAAsB,KAAK,UAAQ,KAAK,kBAAiB,KAAK;AAAA,MAAO,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACsH,IAAGlI,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,mBAAiB,IAAIwC,KAAG,KAAK,UAAQ,MAAK,KAAK,SAAO,MAAS,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,SAAO;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEpf;AAAA,IAAC,EAAC,GAAGmlB,KAAG,EAAC,cAAa,WAAU;AAAC,aAAM,EAAC,SAAQ,SAAS3lB,GAAEQ,GAAE;AAAC,eAAOA,EAAE,UAAUR,CAAC;AAAA,MAAC,EAAC;AAAA,IAAC,GAAE,KAAI,SAASA,GAAE;AAAC,aAAO2lB,GAAG,KAAK3lB,CAAC,GAAEA,EAAE,IAAI,CAAC;AAAA,IAAC,GAAE,MAAK,SAASA,GAAEQ,GAAE;AAAC,UAAIJ,IAAEJ,EAAE,QAAS;AAAC,MAAAQ,IAAEsgB,GAAG,KAAK1gB,GAAEI,CAAC,IAAEsgB,GAAG,KAAK1gB,CAAC;AAAE,eAAQY,IAAEhB,EAAE,SAAQ,GAAGoB,IAAE,GAAE,IAAEhB,EAAE,QAAOgB,IAAE,GAAEA,IAAI,CAAAJ,EAAE,KAAM,GAACA,EAAE,IAAIZ,EAAEgB,CAAC,CAAC;AAAA,IAAC,GAAE,eAAc,SAASpB,GAAE;AAAC,UAAIQ,IAAE,IAAIof;AAAG,aAAOpf,EAAE,IAAIR,CAAC,GAAEQ;AAAA,IAAC,EAAC,GAAEolB,KAAG,WAAU;AAAC,eAASplB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,eAAc,OAAM,SAAS,GAAEJ,GAAEY,GAAEI,GAAE,GAAEP,GAAEkc,GAAE5W,GAAE;AAAC,YAAIhF,IAAEX,EAAE,SAAS,GAAEJ,GAAE,GAAES,CAAC;AAAE,eAAOM,IAAE,KAAK,IAAIA,GAAEX,EAAE,SAAS,GAAEJ,GAAE2c,GAAE5W,CAAC,CAAC,GAAEhF,IAAE,KAAK,IAAIA,GAAEX,EAAE,SAASQ,GAAEI,GAAE,GAAEP,CAAC,CAAC,GAAEM,IAAE,KAAK,IAAIA,GAAEX,EAAE,SAASQ,GAAEI,GAAE2b,GAAE5W,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAI/E,IAAE,IAAE,GAAE0b,IAAE,IAAE;AAAE,eAAO,KAAK,KAAK1b,IAAEA,IAAE0b,IAAEA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE1c,GAAE;AAAC,YAAIY,IAAE,KAAK,IAAI,EAAE,QAAO,GAAGZ,EAAE,QAAS,CAAA,GAAEgB,IAAE,KAAK,IAAI,EAAE,WAAUhB,EAAE,QAAS,CAAA,GAAE,IAAE,KAAK,IAAI,EAAE,QAAO,GAAGA,EAAE,QAAO,CAAE,GAAES,IAAE,KAAK,IAAI,EAAE,QAAS,GAACT,EAAE,SAAS;AAAE,eAAOI,EAAE,SAASQ,GAAEI,GAAE,GAAEP,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAET,GAAE;AAAC,YAAIY,IAAE,EAAE,QAAO,GAAGI,IAAE,EAAE,QAAO,GAAG,IAAE,EAAE,WAAUP,IAAE,EAAE,WAAUkc,IAAE3c,EAAE,QAAS,GAAC+F,IAAE/F,EAAE,QAAS,GAACe,IAAEf,EAAE,QAAO,GAAG4c,IAAE5c,EAAE,QAAO,GAAG4G,IAAExG,EAAE,YAAYQ,GAAEI,GAAEJ,GAAEH,GAAEkc,GAAE5W,GAAE4W,GAAEC,CAAC;AAAE,eAAOhW,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAYQ,GAAEI,GAAEJ,GAAEH,GAAEkc,GAAE5W,GAAEhF,GAAEgF,CAAC,CAAC,GAAEa,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAYQ,GAAEI,GAAEJ,GAAEH,GAAEM,GAAE6b,GAAED,GAAEC,CAAC,CAAC,GAAEhW,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAYQ,GAAEI,GAAEJ,GAAEH,GAAEM,GAAE6b,GAAE7b,GAAEgF,CAAC,CAAC,GAAEa,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAYQ,GAAEI,GAAE,GAAEA,GAAE2b,GAAE5W,GAAE4W,GAAEC,CAAC,CAAC,GAAEhW,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAYQ,GAAEI,GAAE,GAAEA,GAAE2b,GAAE5W,GAAEhF,GAAEgF,CAAC,CAAC,GAAEa,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAYQ,GAAEI,GAAE,GAAEA,GAAED,GAAE6b,GAAED,GAAEC,CAAC,CAAC,GAAEhW,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAYQ,GAAEI,GAAE,GAAEA,GAAED,GAAE6b,GAAE7b,GAAEgF,CAAC,CAAC,GAAEa,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAY,GAAEK,GAAEG,GAAEH,GAAEkc,GAAE5W,GAAE4W,GAAEC,CAAC,CAAC,GAAEhW,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAY,GAAEK,GAAEG,GAAEH,GAAEkc,GAAE5W,GAAEhF,GAAEgF,CAAC,CAAC,GAAEa,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAY,GAAEK,GAAEG,GAAEH,GAAEM,GAAE6b,GAAED,GAAEC,CAAC,CAAC,GAAEhW,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAY,GAAEK,GAAEG,GAAEH,GAAEM,GAAE6b,GAAE7b,GAAEgF,CAAC,CAAC,GAAEa,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAY,GAAEK,GAAE,GAAEO,GAAE2b,GAAE5W,GAAE4W,GAAEC,CAAC,CAAC,GAAEhW,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAY,GAAEK,GAAE,GAAEO,GAAE2b,GAAE5W,GAAEhF,GAAEgF,CAAC,CAAC,GAAEa,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAY,GAAEK,GAAE,GAAEO,GAAED,GAAE6b,GAAED,GAAEC,CAAC,CAAC,GAAEhW,IAAE,KAAK,IAAIA,GAAExG,EAAE,YAAY,GAAEK,GAAE,GAAEO,GAAED,GAAE6b,GAAE7b,GAAEgF,CAAC,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE3F;AAAA,IAAC,EAAC,GAAGqlB,KAAG,WAAU;AAAC,eAASrlB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOolB,GAAG,gBAAgB,KAAK,YAAY,aAAY,KAAK,YAAY,WAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAExlB,GAAE;AAAC,YAAIY,IAAER,EAAE,YAAY,KAAK,WAAW,GAAEY,IAAEZ,EAAE,YAAY,KAAK,WAAW;AAAE,YAAGQ,KAAGI,EAAE,QAAOZ,EAAE,KAAK,KAAK,WAAW,IAAEA,EAAE,KAAK,KAAK,WAAW,KAAG,KAAK,OAAO,KAAK,aAAY,KAAK,aAAY,IAAG,GAAEJ,CAAC,GAAE,SAAO,KAAK,OAAO,KAAK,aAAY,KAAK,aAAY,IAAG,GAAEA,CAAC,GAAE;AAAM,YAAGY,EAAE,QAAO,KAAK,OAAO,KAAK,aAAY,KAAK,aAAY,IAAG,GAAEZ,CAAC,GAAE;AAAK,YAAGgB,EAAE,QAAO,KAAK,OAAO,KAAK,aAAY,KAAK,aAAY,IAAG,GAAEhB,CAAC,GAAE;AAAK,cAAM,IAAI8c,EAAE,gCAAgC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,EAAE1c,EAAE,YAAY,KAAK,WAAW,KAAGA,EAAE,YAAY,KAAK,WAAW;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,YAAU,EAAE,YAAU,KAAG,KAAK,YAAU,EAAE,YAAU,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAEJ,GAAEY,GAAEI,GAAE,GAAE;AAAC,iBAAQP,IAAE,EAAE,mBAAkB,EAAG,SAAQ,GAAGA,EAAE,QAAS,KAAE;AAAC,cAAIkc,IAAElc,EAAE,QAAOsF,IAAE;AAAK,WAACA,IAAEnF,IAAE,IAAIR,EAAEJ,GAAE2c,GAAE,KAAK,aAAa,IAAE,IAAIvc,EAAEuc,GAAE3c,GAAE,KAAK,aAAa,GAAG,YAAa,IAAC,KAAGgB,EAAE,IAAI+E,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,eAAW,MAAJ,IAAM,KAAK,cAAY,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,SAAQ,IAAG,KAAK,cAAc,SAAS,KAAK,aAAY,KAAK,WAAW,IAAE,KAAK,YAAY,UAAW,EAAC,SAAS,KAAK,YAAY,UAAS,CAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC/D,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,cAAY,MAAK,KAAK,cAAY,MAAK,KAAK,YAAU,MAAK,KAAK,gBAAc;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,cAAY,GAAE,KAAK,cAAY,GAAE,KAAK,gBAAc,GAAE,KAAK,YAAU,KAAK,SAAU;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,EAAE,UAAS,EAAG,QAAO;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,eAAO,aAAasjB;AAAA,MAAE,EAAC,CAAC,CAAC,GAAEllB;AAAA,IAAC,EAAC,GAAGslB,KAAG,WAAU;AAAC,eAAStlB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAA,MAAA,EAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,KAAIulB,KAAG,WAAU;AAAC,eAASvlB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAGye,GAAG,UAAU,CAAC,GAAE6G,EAAE,KAAG,UAAU,CAAC,aAAY,UAAQ,UAAU,CAAC,aAAYJ,GAAG,UAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,EAAE,mBAAoB,GAACtkB,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,cAAI0b,IAAE,EAAE,IAAI1b,CAAC;AAAE,eAAK,kBAAkB,WAAW0b,EAAE,UAAS,GAAG,CAAC,MAAIA,aAAa4I,KAAG,KAAK,cAAc,GAAE5I,GAAE,CAAC,IAAEA,aAAayI,KAAG,EAAE,UAAUzI,EAAE,QAAO,CAAE,IAAEkB,GAAE,qBAAoB;AAAA,QAAG;AAAA,iBAASiB,GAAG,UAAU,CAAC,GAAEF,EAAE,KAAG,UAAU,CAAC,aAAY,UAAQ,UAAU,CAAC,aAAY2G,GAAG,UAAQ7kB,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAE4b,EAAE,sBAAqBC,IAAE,GAAEA,IAAE7b,EAAE,KAAM,GAAC6b,KAAI;AAAC,cAAIhW,IAAE7F,EAAE,IAAI6b,CAAC;AAAE,eAAK,gBAAiB,EAAC,WAAWhW,EAAE,UAAW,GAACnG,CAAC,MAAImG,aAAa0e,KAAG,KAAK,cAAc7kB,GAAEmG,GAAEb,CAAC,IAAEa,aAAaue,KAAGpf,EAAE,IAAIa,EAAE,SAAS,IAAEgX,GAAE,qBAAsB;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAa,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAO,EAAE,IAAI,EAAE,KAAI,IAAG,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,YAAU,KAAG,KAAK,MAAO,GAAC,KAAK,KAAK,KAAK,KAAK;AAAG,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,GAAE,IAAE,EAAE,qBAAqB,SAAU,GAAC,EAAE,QAAS,KAAE;AAAC,gBAAI,IAAE,EAAE,KAAI;AAAG,yBAAa0H,KAAG,KAAG,KAAK,KAAK,CAAC,IAAE,aAAaH,OAAK,KAAG;AAAA,UAAE;AAAC,iBAAO;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,MAAK,IAAE,EAAE,mBAAkB,EAAG,SAAQ,GAAG,EAAE,QAAS,KAAE;AAAC,cAAInkB,IAAE,EAAE;AAAO,UAAAA,aAAamkB,MAAInkB,EAAE,QAAO,MAAK,MAAI,IAAEA;AAAA,QAAE;AAAC,eAAc,MAAP,SAAW,EAAE,mBAAoB,EAAC,OAAO,CAAC,GAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,eAAK,MAAO;AAAC,cAAI,IAAE,KAAK,UAAU,KAAK,KAAK;AAAE,iBAAc,MAAP,OAAS,IAAIwe,MAAG;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,IAAIA,KAAG,IAAE,EAAE,mBAAkB,EAAG,YAAW,EAAE,QAAO,KAAI;AAAC,gBAAIxe,IAAE,EAAE,KAAM;AAAC,gBAAGA,aAAaskB,IAAG;AAAC,kBAAI5I,IAAE,KAAK,UAAU1b,CAAC;AAAE,cAAO0b,MAAP,QAAU,EAAE,IAAIA,CAAC;AAAA,YAAC,MAAM,CAAA1b,aAAamkB,KAAG,EAAE,IAAInkB,EAAE,SAAS,IAAE4c,GAAE,qBAAsB;AAAA,UAAA;AAAC,iBAAO,EAAE,KAAI,KAAI,IAAE,OAAK;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE;AAAC,QAAAA,GAAE,OAAO,CAAC,KAAK,QAAO,wEAAwE,GAAE,KAAK,gBAAgB,IAAI,IAAIuH,GAAG,GAAE,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,IAAI3F;AAAG,iBAAO,KAAK,kBAAkB,GAAE,KAAK,OAAM,CAAC,GAAE;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAExe,IAAE,UAAU,CAAC;AAAE,cAAG4c,GAAE,OAAO,IAAE,EAAE,GAAE,EAAE,SAAQ,MAAK,EAAE,QAAO5c,EAAE,IAAI,CAAC,GAAE;AAAK,mBAAQ0b,IAAE,EAAE,mBAAkB,EAAG,YAAWA,EAAE,QAAO,KAAI;AAAC,gBAAIjc,IAAEic,EAAE,KAAM;AAAC,YAAAjc,aAAa6kB,KAAG,KAAK,kBAAkB,GAAE7kB,GAAEO,CAAC,KAAG4c,GAAE,OAAOnd,aAAa0kB,EAAE,GAAO,MAAL,MAAQnkB,EAAE,IAAIP,CAAC;AAAA,UAAE;AAAC,iBAAO;AAAA,QAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK;AAAQ,cAAI,IAAE,IAAI+e;AAAG,iBAAO,KAAK,QAAS,KAAE,KAAK,gBAAiB,EAAC,WAAW,KAAK,MAAM,UAAS,GAAG,CAAC,KAAG,KAAK,cAAc,GAAE,KAAK,OAAM,CAAC,GAAE;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,cAAG,KAAK,MAAK,GAAG,KAAK,QAAO,EAAG,QAAO;AAAK,eAAK,gBAAe,EAAG,WAAW,KAAK,MAAM,UAAW,GAAC,CAAC,KAAG,KAAK,cAAc,GAAE,KAAK,OAAM,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAG,KAAK,OAAO,QAAO;AAAK,aAAK,QAAM,KAAK,gBAAgB,QAAS,IAAC,KAAK,WAAW,CAAC,IAAE,KAAK,mBAAmB,KAAK,iBAAgB,EAAE,GAAE,KAAK,kBAAgB,MAAK,KAAK,SAAO;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,SAAQ,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,MAAK,GAAG,CAAC,CAAC,KAAK,kBAAkB,WAAW,KAAK,MAAM,UAAS,GAAG,CAAC,KAAG,KAAK,OAAO,GAAE,KAAK,OAAM,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAExe,IAAE,UAAU,CAAC,GAAE0b,IAAE,KAAK,WAAW,GAAE1b,CAAC;AAAE,cAAG0b,EAAE,QAAM;AAAG,mBAAQjc,IAAE,MAAKkc,IAAE,EAAE,mBAAoB,EAAC,SAAU,GAACA,EAAE,QAAS,KAAE;AAAC,gBAAI5W,IAAE4W,EAAE,KAAI;AAAG,gBAAG,KAAK,gBAAiB,EAAC,WAAW5W,EAAE,UAAS,GAAG,CAAC,KAAIA,aAAauf,OAAK5I,IAAE,KAAK,OAAO,GAAE3W,GAAE/E,CAAC,IAAI;AAAC,cAAAP,IAAEsF;AAAE;AAAA,YAAK;AAAA,UAAC;AAAC,iBAActF,MAAP,QAAUA,EAAE,qBAAqB,QAAS,KAAE,EAAE,mBAAoB,EAAC,OAAOA,CAAC,GAAEic;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAAS,GAAE,GAAE;AAAC,QAAAkB,GAAE,OAAO,CAAC,EAAE,QAAS,CAAA;AAAE,YAAI,IAAE,KAAK,uBAAuB,GAAE,IAAE,CAAC;AAAE,eAAW,EAAE,WAAN,IAAa,EAAE,IAAI,CAAC,IAAE,KAAK,mBAAmB,GAAE,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,QAAS,IAAC,KAAG,KAAK,SAAQ,KAAK,MAAM,KAAK,KAAK;AAAG,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,GAAE,IAAE,EAAE,mBAAkB,EAAG,SAAQ,GAAG,EAAE,QAAO,KAAI;AAAC,gBAAI,IAAE,EAAE;AAAO,gBAAG,aAAa0H,IAAG;AAAC,kBAAItkB,IAAE,KAAK,MAAM,CAAC;AAAE,cAAAA,IAAE,MAAI,IAAEA;AAAA,YAAE;AAAA,UAAC;AAAC,iBAAO,IAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAE,GAAE;AAAC,QAAA4c,GAAE,OAAO,CAAC,EAAE,QAAS,CAAA;AAAE,YAAI,IAAE,IAAI4B;AAAG,UAAE,IAAI,KAAK,WAAW,CAAC,CAAC;AAAE,YAAI,IAAE,IAAIA,EAAG,CAAC;AAAE,QAAA+F,GAAG,KAAK,GAAE,KAAK,cAAe,CAAA;AAAE,iBAAQvkB,IAAE,EAAE,SAAQ,GAAGA,EAAE,aAAW;AAAC,cAAI0b,IAAE1b,EAAE,KAAM;AAAC,eAAK,SAAS,CAAC,EAAE,qBAAqB,KAAM,MAAG,KAAK,gBAAiB,KAAE,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,GAAE,KAAK,SAAS,CAAC,EAAE,kBAAkB0b,CAAC;AAAA,QAAC;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK,SAAO,KAAK,MAAM,QAAO,IAAG,KAAK,gBAAgB;MAAS,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACM,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,QAAM,MAAK,KAAK,SAAO,IAAG,KAAK,kBAAgB,IAAIwC,KAAG,KAAK,gBAAc,MAAS,UAAU,WAAd,EAAqB,CAAApf,EAAE,aAAa,KAAK,MAAKA,EAAE,qBAAqB;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,UAAAwd,GAAE,OAAO,IAAE,GAAE,sCAAsC,GAAE,KAAK,gBAAc;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG;AAAA,MAAC,EAAC,CAAC,CAAC,GAAExd;AAAA,IAAC;AAAI,IAAAulB,GAAG,eAAa,WAAU;AAAA,IAAE,GAACA,GAAG,wBAAsB;AAAG,QAAIljB,KAAG,WAAU;AAAC,eAASrC,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE;AAAA,MAAA,EAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAACwlB,KAAG,SAASxlB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,4CAA2C,OAAM,SAASb,GAAEQ,GAAE;AAAC,QAAAwd,GAAE,OAAOhe,EAAE,SAAO,CAAC;AAAE,iBAAQI,IAAE,IAAIwf,KAAG5e,IAAE,GAAEA,IAAEhB,EAAE,QAAOgB,IAAI,CAAAZ,EAAE,OAAO,KAAK,wCAAwCJ,EAAEgB,CAAC,GAAER,CAAC,CAAC;AAAE,eAAOJ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,kBAAkBR,GAAE6d,EAAE,mBAAkBrd,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE0b,IAAE9b,GAAE+b,IAAE,IAAIyI;AAAG,UAAAzI,EAAE,IAAI3c,CAAC;AAAE,mBAAQ+F,IAAE,IAAIqf,MAAG,CAACzI,EAAE,QAAS,KAAED,KAAG,KAAG;AAAC,gBAAI3b,IAAE4b,EAAE,KAAM,GAACC,IAAE7b,EAAE;AAAc,gBAAG6b,KAAGF,EAAE;AAAM,gBAAG3b,EAAE,SAAQ,EAAG,KAAGgF,EAAE,KAAI,IAAG/E,EAAE,CAAA+E,EAAE,IAAIhF,CAAC;AAAA,iBAAM;AAAC,kBAAI6F,IAAEb,EAAE,KAAI;AAAG,cAAAa,EAAE,YAAa,IAACgW,MAAI7W,EAAE,KAAM,GAACA,EAAE,IAAIhF,CAAC;AAAG,kBAAI8b,IAAE9W,EAAE,KAAM;AAAC,cAAA2W,IAAEG,EAAE,YAAa;AAAA,YAAA;AAAA,gBAAM,CAAA9b,EAAE,cAAc4b,GAAED,CAAC;AAAA,UAAC;AAAC,iBAAOjc,EAAE,SAASsF,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASnG,GAAE;AAAC,eAAO,IAAIimB,GAAGjmB,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAW,UAAU,WAAd,IAAqBid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,QAAO,IAAI,EAAE,KAAK,IAAI,IAAEoc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,QAAO,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAG,EAAM,UAAU,WAAd,KAAsB,UAAU,CAAC,aAAY,UAAQ,UAAU,CAAC,aAAYwd,IAAG,QAAOpB,EAAE7b,EAAEP,EAAE,SAAS,GAAE,UAAS,IAAI,EAAE,MAAM,MAAK,SAAS;AAAE,YAAIb,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,YAAGR,EAAE,SAAS,QAAO;AAAK,QAAAid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,UAAS,IAAI,EAAE,KAAK,MAAKb,GAAEQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAOK,EAAE;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASb,GAAEQ,GAAE;AAAC,iBAAQJ,IAAE,KAAK,MAAM,KAAK,KAAKJ,EAAE,KAAI,IAAGQ,CAAC,CAAC,GAAEQ,IAAE,IAAI,MAAMR,CAAC,EAAE,KAAK,IAAI,GAAEY,IAAEpB,EAAE,SAAQ,GAAG8c,IAAE,GAAEA,IAAEtc,GAAEsc,KAAI;AAAC,UAAA9b,EAAE8b,CAAC,IAAE,IAAI8C;AAAG,mBAAQ/e,IAAE,GAAEO,EAAE,QAAO,KAAIP,IAAET,KAAG;AAAC,gBAAI2c,IAAE3b,EAAE,KAAI;AAAG,YAAAJ,EAAE8b,CAAC,EAAE,IAAIC,CAAC,GAAElc;AAAA,UAAG;AAAA,QAAC;AAAC,eAAOG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIhB,IAAE,UAAU,CAAC;AAAE,iBAAOid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,SAAQ,IAAI,EAAE,KAAK,MAAKb,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,UAAA6c,EAAE7b,EAAEP,EAAE,SAAS,GAAE,SAAQ,IAAI,EAAE,KAAK,MAAKL,GAAEJ,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAOS,EAAE;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,2CAA0C,OAAM,SAASb,GAAEQ,GAAE;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,0BAAyB,IAAI,EAAE,KAAK,MAAKb,GAAEQ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,KAAsB,UAAU,CAAC,aAAY,UAAQ,UAAU,CAAC,aAAY6d,IAAE;AAAC,cAAIre,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,iBAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,UAAS,IAAI,EAAE,KAAK,MAAKb,GAAEQ,CAAC;AAAA,QAAC;AAAC,eAAOyc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,UAAS,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAW,UAAU,WAAd,IAAqBoc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,SAAQ,IAAI,EAAE,KAAK,IAAI,IAAEoc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,SAAQ,IAAI,EAAE,MAAM,MAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASb,GAAEQ,GAAE;AAAC,QAAAwd,GAAE,OAAO,CAAChe,EAAE,QAAS,CAAA;AAAE,YAAII,IAAE,KAAK,MAAM,KAAK,KAAKJ,EAAE,KAAI,IAAG,KAAK,gBAAiB,CAAA,CAAC,GAAEgB,IAAE,IAAI4e,EAAG5f,CAAC;AAAE,QAAA2lB,GAAG,KAAK3kB,GAAEH,EAAE,WAAW;AAAE,YAAIO,IAAE,KAAK,eAAeJ,GAAE,KAAK,MAAM,KAAK,KAAK,KAAK,KAAKZ,CAAC,CAAC,CAAC,CAAC;AAAE,eAAO,KAAK,yCAAyCgB,GAAEZ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAGye,GAAG,UAAU,CAAC,GAAEpc,EAAE,GAAE;AAAC,gBAAI7C,IAAE,UAAU,CAAC;AAAE,gBAAG,KAAK,QAAS,EAAC,QAAO;AAAK,gBAAIQ,IAAE,IAAIqlB,GAAG,KAAK,QAAO,GAAG,KAAK,WAAU7lB,CAAC;AAAE,mBAAO,KAAK,iBAAiBQ,CAAC;AAAA,UAAC;AAAC,cAAG,UAAU,CAAC,aAAYqlB,IAAG;AAAC,gBAAIzlB,IAAE,UAAU,CAAC,GAAEY,IAAE6c,EAAE,mBAAkBzc,IAAE,MAAK0b,IAAE,IAAI0I;AAAG,iBAAI1I,EAAE,IAAI1c,CAAC,GAAE,CAAC0c,EAAE,QAAO,KAAI9b,IAAE,KAAG;AAAC,kBAAIH,IAAEic,EAAE,KAAI,GAAGC,IAAElc,EAAE,YAAW;AAAG,kBAAGkc,KAAG/b,EAAE;AAAM,cAAAH,EAAE,SAAQ,KAAIG,IAAE+b,GAAE3b,IAAEP,KAAGA,EAAE,cAAcic,GAAE9b,CAAC;AAAA,YAAC;AAAC,mBAAcI,MAAP,OAAS,OAAK,CAACA,EAAE,aAAa,CAAC,EAAE,WAAUA,EAAE,aAAa,CAAC,EAAE,SAAS;AAAA,UAAC;AAAA,QAAC,OAAK;AAAC,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI+E,IAAE,UAAU,CAAC,GAAEhF,IAAE,UAAU,CAAC;AAAE,gBAAG,KAAK,QAAO,KAAIgF,EAAE,QAAO,EAAG,QAAO;AAAK,gBAAI6W,IAAE,IAAI6I,GAAG,KAAK,WAAU1f,EAAE,QAAO,GAAGhF,CAAC;AAAE,mBAAO,KAAK,iBAAiB6b,CAAC;AAAA,UAAC;AAAC,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAIhW,IAAE,UAAU,CAAC,GAAEiW,IAAE,UAAU,CAAC,GAAE5c,IAAE,UAAU,CAAC,GAAEH,IAAE,IAAIqlB,GAAGve,GAAEiW,CAAC,GAAEhd,KAAE,IAAI4lB,GAAG,KAAK,QAAS,GAAC3lB,GAAEG,CAAC;AAAE,mBAAO,KAAK,iBAAiBJ,EAAC,EAAE,CAAC;AAAA,UAAC;AAAC,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAIiD,KAAE,UAAU,CAAC,GAAEnD,KAAE,UAAU,CAAC,GAAEqE,KAAE,UAAU,CAAC,GAAE8Y,KAAE,UAAU,CAAC,GAAE7G,KAAE,IAAIkP,GAAGriB,IAAEnD,EAAC,GAAEqC,KAAE,IAAIyjB,GAAG,KAAK,QAAO,GAAGxP,IAAEjS,EAAC;AAAE,mBAAO,KAAK,kBAAkBhC,IAAE8a,EAAC;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIld,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC,GAAEJ,IAAEyd,EAAE,mBAAkB7c,IAAE,IAAIwkB;AAAG,eAAIxkB,EAAE,IAAIhB,CAAC,GAAE,CAACgB,EAAE,QAAS,KAAE;AAAC,gBAAII,IAAEJ,EAAE,KAAM,GAAC8b,IAAE1b,EAAE,YAAa;AAAC,gBAAG0b,IAAEtc,EAAE,QAAM;AAAG,gBAAGY,EAAE,qBAAmBZ,EAAE,QAAM;AAAG,gBAAGY,EAAE,SAAQ;AAAI,mBAAIhB,IAAE0c,MAAItc,EAAE,QAAM;AAAA,kBAAQ,CAAAY,EAAE,cAAcJ,GAAEZ,CAAC;AAAA,UAAC;AAAC,iBAAM;AAAA,QAAE;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIS,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAE,IAAI0kB,GAAG,KAAK,QAAS,GAAChlB,EAAE,QAAS,GAACkc,CAAC;AAAE,iBAAO,KAAK,iBAAiB5b,GAAEgF,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACsf,IAAGrI,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,CAAAvc,EAAE,aAAa,KAAK,MAAKA,EAAE,qBAAqB;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIb,IAAE,UAAU,CAAC;AAAE,UAAA+lB,GAAG,aAAa,KAAK,MAAK/lB,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASA,GAAE;AAAC,eAAOa,EAAE,IAAIb,EAAE,QAAO,GAAGA,EAAE,QAAO,CAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASA,GAAEQ,GAAE;AAAC,gBAAOR,IAAEQ,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASR,GAAE;AAAC,iBAAQQ,IAAE,IAAI,MAAMR,EAAE,KAAI,CAAE,EAAE,KAAK,IAAI,GAAEI,IAAE,GAAE,CAACJ,EAAE,QAAO,KAAI;AAAC,cAAIgB,IAAEhB,EAAE,KAAM;AAAC,UAAAQ,EAAEJ,CAAC,IAAEY,EAAE,aAAa,CAAC,EAAE,WAAUZ;AAAA,QAAG;AAAC,eAAOI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASR,GAAE;AAAC,eAAOa,EAAE,IAAIb,EAAE,WAAUA,EAAE,QAAO,CAAE;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEa;AAAA,IAAC,EAAEklB,EAAE,GAAEE,KAAG,SAASzlB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,iBAAQ9c,IAAE,MAAKQ,IAAE,KAAK,mBAAkB,EAAG,SAAQ,GAAGA,EAAE,aAAW;AAAC,cAAIJ,IAAEI,EAAE,KAAM;AAAC,UAAOR,MAAP,OAASA,IAAE,IAAIqe,GAAEje,EAAE,UAAS,CAAE,IAAEJ,EAAE,gBAAgBI,EAAE,UAAW,CAAA;AAAA,QAAC;AAAC,eAAOJ;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAIA,IAAE,UAAU,CAAC;AAAE,QAAA0lB,GAAG,aAAa,KAAK,MAAK1lB,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE8c;AAAA,IAAC,EAAE4I,EAAE;AAAE,IAAAM,GAAG,cAAYC,IAAGD,GAAG,cAAY,KAAI,WAAU;AAAC,eAASxlB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACsd,EAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,eAAOiI,GAAG,eAAeC,GAAG,QAAQ,EAAE,UAAW,CAAA,GAAEA,GAAG,QAAQ,EAAE,WAAW,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAExlB;AAAA,IAAC,QAAKwlB,GAAG,cAAY,KAAI,WAAU;AAAC,eAASxlB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACsd,EAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,eAAOiI,GAAG,eAAeC,GAAG,QAAQ,EAAE,WAAW,GAAEA,GAAG,QAAQ,EAAE,WAAW,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAExlB;AAAA,IAAC,QAAKwlB,GAAG,eAAa,KAAI,WAAU;AAAC,eAASxlB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC,YAAY;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,EAAE,WAAW,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,MAAIwlB,GAAG,wBAAsB;AAAG,QAAIE,KAAG,WAAU;AAAC,eAAS1lB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,IAAE,IAAE,KAAG,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAEJ,GAAEY,GAAE;AAAC,YAAGZ,EAAE,SAASY,CAAC,EAAE,QAAO;AAAE,YAAII,IAAEZ,EAAE,aAAaJ,EAAE,GAAEY,EAAE,CAAC,GAAE,IAAER,EAAE,aAAaJ,EAAE,GAAEY,EAAE,CAAC;AAAE,gBAAO,GAAC;AAAA,UAAE,KAAK;AAAE,mBAAOR,EAAE,aAAaY,GAAE,CAAC;AAAA,UAAE,KAAK;AAAE,mBAAOZ,EAAE,aAAa,GAAEY,CAAC;AAAA,UAAE,KAAK;AAAE,mBAAOZ,EAAE,aAAa,GAAE,CAACY,CAAC;AAAA,UAAE,KAAK;AAAE,mBAAOZ,EAAE,aAAa,CAACY,GAAE,CAAC;AAAA,UAAE,KAAK;AAAE,mBAAOZ,EAAE,aAAa,CAACY,GAAE,CAAC,CAAC;AAAA,UAAE,KAAK;AAAE,mBAAOZ,EAAE,aAAa,CAAC,GAAE,CAACY,CAAC;AAAA,UAAE,KAAK;AAAE,mBAAOZ,EAAE,aAAa,CAAC,GAAEY,CAAC;AAAA,UAAE,KAAK;AAAE,mBAAOZ,EAAE,aAAaY,GAAE,CAAC,CAAC;AAAA,QAAC;AAAC,eAAO4c,GAAE,qBAAqB,sBAAsB,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,IAAE,IAAE,KAAG,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,CAAC,CAAC,GAAExd;AAAA,IAAC,EAAG,GAAC2lB,KAAG,WAAU;AAAC,eAAS3lB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,UAAE,MAAM,KAAK,KAAK,GAAE,EAAE,MAAM,cAAY,KAAK,YAAY;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,eAAa,EAAE,eAAa,KAAG,KAAK,eAAa,EAAE,eAAa,IAAE,KAAK,MAAM,SAAS,EAAE,KAAK,IAAE,IAAE,KAAK,cAAY,EAAE,cAAY0lB,GAAG,QAAQ,KAAK,gBAAe,KAAK,OAAM,EAAE,KAAK,IAAE,IAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,eAAW,KAAK,iBAAT,KAAuB,CAAC,KAAK,eAAa,KAAK,iBAAe;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,eAAa,MAAI,KAAK,MAAM,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC9jB,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,aAAW,MAAK,KAAK,QAAM,MAAK,KAAK,eAAa,MAAK,KAAK,iBAAe,MAAK,KAAK,cAAY;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,aAAW,GAAE,KAAK,QAAM,IAAIgc,EAAE,CAAC,GAAE,KAAK,eAAa,GAAE,KAAK,iBAAe,GAAE,KAAK,cAAY,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE5d;AAAA,IAAC,KAAI4lB,KAAG,WAAU;AAAC,eAAS5lB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAA,QAAE,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAA,MAAE,EAAA,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAAC6lB,KAAG,WAAU;AAAC,eAAS7lB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,YAAI,IAAE,IAAImhB;AAAG,aAAK,aAAc;AAAC,iBAAQ,IAAE,KAAK,SAAU,GAAC,IAAE,EAAE,KAAM,GAAC,EAAE,aAAW;AAAC,cAAI,IAAE,EAAE,KAAI;AAAG,eAAK,mBAAmB,GAAE,GAAE,CAAC,GAAE,IAAE;AAAA,QAAC;AAAC,eAAO,EAAE,kBAAiB;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,YAAI,IAAE,IAAI/B;AAAG,aAAK,+BAA+B,CAAC,GAAE,KAAK,kCAAkC,CAAC;AAAE,iBAAQ,IAAE,EAAE,SAAQ,GAAG,EAAE,QAAS,KAAE;AAAC,cAAI,IAAE,EAAE,OAAO;AAAW,eAAK,IAAI,KAAK,MAAM,cAAc,CAAC,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,eAAa,EAAE,eAAa;AAAE,YAAO,MAAJ,EAAM,QAAM,CAAC,IAAIxB,EAAE,EAAE,KAAK,GAAE,IAAIA,EAAE,EAAE,KAAK,CAAC;AAAE,YAAI,IAAE,KAAK,MAAM,cAAc,EAAE,YAAY,GAAEhd,IAAE,EAAE,WAAU,KAAI,CAAC,EAAE,MAAM,SAAS,CAAC;AAAE,QAAAA,KAAG;AAAI,YAAI0b,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAEjc,IAAE;AAAE,QAAAic,EAAEjc,GAAG,IAAE,IAAIud,EAAE,EAAE,KAAK;AAAE,iBAAQrB,IAAE,EAAE,eAAa,GAAEA,KAAG,EAAE,cAAaA,IAAI,CAAAD,EAAEjc,GAAG,IAAE,KAAK,MAAM,cAAckc,CAAC;AAAE,eAAO3b,MAAI0b,EAAEjc,CAAC,IAAE,IAAIud,EAAE,EAAE,KAAK,IAAGtB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,UAAE,QAAQ,gBAAgB;AAAE,iBAAQ,IAAE,KAAK,SAAQ,GAAG,EAAE,QAAS;AAAG,YAAE,OAAO,MAAM,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,qCAAoC,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,MAAM,KAAI,IAAG,GAAE,KAAI;AAAC,cAAI,IAAE,KAAK,MAAM,cAAc,CAAC;AAAE,eAAK,MAAM,cAAc,IAAE,CAAC;AAAE,cAAI,IAAE,KAAK,MAAM,cAAc,IAAE,CAAC;AAAE,YAAE,SAAS,CAAC,KAAG,EAAE,IAAIqC,GAAG,QAAQ,IAAE,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,mBAAmB,GAAE,CAAC;AAAE,UAAE,IAAI,GAAE,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,SAAS,OAAM,EAAG,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,aAAK,aAAY,GAAG,KAAK,kBAAiB;AAAG,iBAAQ,IAAE,KAAK,SAAU,GAAC,IAAE,EAAE,KAAI,GAAG,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,QAAO/d,IAAE,KAAK,gBAAgB,GAAE,CAAC;AAAE,YAAE,IAAIA,CAAC,GAAE,IAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAG,CAAC,EAAE,MAAM,SAAS,EAAE,KAAK,EAAE,QAAM;AAAG,YAAI,IAAE,EAAE,eAAa,EAAE;AAAa,eAAO,EAAE,WAAU,KAAI,KAAQ,MAAJ,MAAQ,EAAE,CAAC,IAAE,EAAE,eAAa,GAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,kCAAiC,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAE,IAAE,KAAK,SAAU,GAAC,IAAE,EAAE,KAAM,GAAC,EAAE,aAAW;AAAC,cAAIA,IAAE,EAAE,KAAI;AAAG,eAAK,kBAAkB,GAAEA,GAAE,CAAC,KAAG,EAAE,IAAI+d,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAE,IAAE/d;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,MAAM,KAAI,IAAG;AAAE,aAAK,IAAI,KAAK,MAAM,cAAc,CAAC,GAAE,CAAC,GAAE,KAAK,IAAI,KAAK,MAAM,cAAc,CAAC,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,mBAAmB,GAAE,CAAC;AAAE,eAAO,IAAIklB,GAAG,GAAE,KAAK,MAAM,QAAS,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,IAAIH,GAAG,KAAK,OAAM,GAAE,GAAE,KAAK,MAAM,iBAAiB,CAAC,CAAC,GAAE,IAAE,KAAK,SAAS,IAAI,CAAC;AAAE,eAAc,MAAP,QAAUnI,GAAE,OAAO,EAAE,MAAM,SAAS,CAAC,GAAE,8CAA8C,GAAE,MAAI,KAAK,SAAS,IAAI,GAAE,CAAC,GAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,MAAM,eAAgB,GAAC,IAAE,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC;AAAE,YAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAM,IAAI9X,GAAE,mCAAiC,CAAC;AAAE,YAAI,IAAE,EAAE,IAAI,EAAE,KAAM,IAAC,CAAC,EAAE,eAAc,GAAG9E,IAAE,EAAE,EAAE,SAAO,CAAC;AAAE,YAAG,CAACA,EAAE,SAAS,EAAE,EAAE,SAAO,CAAC,CAAC,EAAE,OAAM,IAAI8E,GAAE,iCAA+B9E,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,WAAS,IAAI,MAAG,KAAK,QAAM;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,QAAM;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,KAAI+lB,KAAG,WAAU;AAAC,eAAS/lB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,cAAO,MAAJ,KAAWA,MAAJ,EAAM,OAAM,IAAI8c,EAAE,2CAAyC,IAAE,OAAK9c,IAAE,IAAI;AAAE,cAAIY,IAAE,KAAK,IAAI,CAAC,GAAEI,IAAE,KAAK,IAAIhB,CAAC;AAAE,iBAAO,KAAG,IAAEA,KAAG,IAAEY,KAAGI,IAAE,IAAE,IAAEJ,KAAGI,IAAE,IAAE,IAAEhB,KAAG,IAAEY,KAAGI,IAAE,IAAE,IAAEJ,KAAGI,IAAE,IAAE;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAYgd,KAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEvd,IAAE,UAAU,CAAC,GAAEkc,IAAElc,EAAE,IAAE,EAAE,GAAEsF,IAAEtF,EAAE,IAAE,EAAE;AAAE,cAAOkc,MAAJ,KAAW5W,MAAJ,EAAM,OAAM,IAAI+W,EAAE,wDAAsD,CAAC;AAAE,iBAAO1c,EAAE,OAAOuc,GAAE5W,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE3F;AAAA,IAAC,EAAC,GAAGgmB,KAAG,WAAU;AAAC,eAAShmB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAA,QAAE,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAA,QAAE,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAA,MAAE,EAAA,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,GAAGimB,KAAG,WAAU;AAAC,eAASjmB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE,GAAE;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACgmB,EAAE;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEhmB;AAAA,IAAC,EAAG,GAAC8lB,KAAG,WAAU;AAAC,eAAS9lB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,KAAK,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,KAAK,CAAC,EAAE,OAAO,KAAK,KAAK,KAAK,KAAK,SAAO,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,eAAO,MAAI,KAAK,KAAK,SAAO,IAAE,KAAG,KAAK,WAAW,KAAK,cAAc,CAAC,GAAE,KAAK,cAAc,IAAE,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,aAAK,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,EAAE,SAAS,CAAC,IAAE,IAAE+lB,GAAG,OAAO,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,oBAAoB,GAAE,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAEnlB,IAAE,UAAU,CAAC,GAAE0b,IAAE,IAAIsB,EAAE,EAAE,gBAAgBhd,CAAC,CAAC;AAAE,eAAK,gBAAgB0b,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO+G,GAAG,aAAa,IAAI7B,GAAG,KAAK,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,GAAE,IAAE,IAAE;AAAE,YAAG,IAAE,KAAK,KAAK,QAAO;AAAC,cAAI5gB,IAAE,KAAK,KAAK,CAAC;AAAE,YAAE,SAASA,CAAC,MAAI,IAAE;AAAA,QAAE;AAAC,eAAO,KAAK,UAAU,IAAI,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,mBAAoB,GAAC,IAAI,MAAK,gBAAgB,GAAE,GAAE,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACqlB,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,YAAU,IAAIJ,GAAG,IAAI,GAAE,KAAK,OAAK,MAAK,KAAK,QAAM;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,OAAK,GAAE,KAAK,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEjmB,IAAE,IAAIwf;AAAG,iBAAOpf,EAAE,mBAAmB,GAAEJ,CAAC,GAAEA;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,EAAqB,UAAQY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE,IAAEJ,EAAE,YAAW,EAAE,QAAO,KAAI;AAAC,cAAIH,IAAE,EAAE,KAAI;AAAG,UAAAA,EAAE,cAAc,cAAcO,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,EAAG,GAACkmB,KAAG,WAAU;AAAC,eAASlmB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,KAAK,GAAG,GAAE,KAAK,GAAG,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEJ,IAAEof,EAAG,MAAM,KAAK,IAAG,KAAK,IAAG,EAAE,EAAE,GAAExe,IAAEwe,EAAG,MAAM,KAAK,IAAG,KAAK,IAAG,EAAE,EAAE;AAAE,iBAAOpf,KAAG,KAAGY,KAAG,KAAGZ,KAAG,KAAGY,KAAG,IAAE,KAAK,IAAIZ,GAAEY,CAAC,IAAE;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAYod,GAAE;AAAC,cAAIhd,IAAE,UAAU,CAAC;AAAE,iBAAOoe,EAAG,MAAM,KAAK,IAAG,KAAK,IAAGpe,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,eAAO,EAAE,iBAAiB,CAAC,KAAK,IAAG,KAAK,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK,GAAG,MAAI,KAAK,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,YAAG,EAAE,aAAaZ,GAAG,QAAM;AAAG,YAAIJ,IAAE;AAAE,eAAO,KAAK,GAAG,OAAOA,EAAE,EAAE,KAAG,KAAK,GAAG,OAAOA,EAAE,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI2jB;AAAG,eAAO,EAAE,oBAAoB,KAAK,IAAG,KAAK,IAAG,EAAE,IAAG,EAAE,EAAE,GAAE,EAAE,gBAAiB,IAAC,EAAE,gBAAgB,CAAC,IAAE;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAY3F,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,cAAG,EAAE,OAAO,KAAK,EAAE,KAAG,EAAE,OAAO,KAAK,EAAE,EAAE,QAAO,IAAIA,EAAE,CAAC;AAAE,cAAIhe,IAAE,KAAK,iBAAiB,CAAC,GAAEY,IAAE,IAAIod;AAAE,iBAAOpd,EAAE,IAAE,KAAK,GAAG,IAAEZ,KAAG,KAAK,GAAG,IAAE,KAAK,GAAG,IAAGY,EAAE,IAAE,KAAK,GAAG,IAAEZ,KAAG,KAAK,GAAG,IAAE,KAAK,GAAG,IAAGY;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAYR,GAAE;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAE,IAAE,KAAK,iBAAiBA,EAAE,EAAE,GAAEP,IAAE,KAAK,iBAAiBO,EAAE,EAAE;AAA4B,cAAvB,KAAG,KAAGP,KAAG,KAAiB,KAAG,KAAGA,KAAG,EAAE,QAAO;AAAK,cAAIkc,IAAE,KAAK,QAAQ3b,EAAE,EAAE;AAAE,cAAE,MAAI2b,IAAE,KAAK,KAAI,IAAE,MAAIA,IAAE,KAAK;AAAI,cAAI5W,IAAE,KAAK,QAAQ/E,EAAE,EAAE;AAAE,iBAAOP,IAAE,MAAIsF,IAAE,KAAK,KAAItF,IAAE,MAAIsF,IAAE,KAAK,KAAI,IAAI3F,EAAEuc,GAAE5W,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,aAAK,GAAG,UAAU,KAAK,EAAE,IAAE,KAAG,KAAK,QAAO;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAO,KAAK,MAAM,KAAK,GAAG,IAAE,KAAK,GAAG,GAAE,KAAK,GAAG,IAAE,KAAK,GAAG,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,eAAW,MAAJ,IAAM,KAAK,KAAG,KAAK;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAAS,GAAE;AAAC,eAAO8Z,GAAG,yBAAyB,GAAE,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,KAAK,GAAG,GAAE,KAAK,GAAG,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAOzf,EAAE,SAAS,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,YAAG,EAAE,OAAO,KAAK,EAAE,EAAE,QAAO;AAAE,YAAG,EAAE,OAAO,KAAK,EAAE,EAAE,QAAO;AAAE,YAAI,IAAE,KAAK,GAAG,IAAE,KAAK,GAAG,GAAE,IAAE,KAAK,GAAG,IAAE,KAAK,GAAG,GAAE,IAAE,IAAE,IAAE,IAAE;AAAE,eAAO,KAAG,IAAEqd,EAAE,QAAM,EAAE,IAAE,KAAK,GAAG,KAAG,KAAG,EAAE,IAAE,KAAK,GAAG,KAAG,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,aAAa,CAAC;AAAE,YAAU,MAAP,KAAS,QAAM,CAAC,GAAE,CAAC;AAAE,YAAI,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAE,IAAEA,EAAE,WAAUzc,IAAE,MAAK0b,IAAE,KAAK,aAAa,EAAE,EAAE;AAAE,YAAEA,EAAE,SAAS,EAAE,EAAE,GAAE,EAAE,CAAC,IAAEA,GAAE,EAAE,CAAC,IAAE,EAAE;AAAG,YAAIjc,IAAE,KAAK,aAAa,EAAE,EAAE;AAAE,SAACO,IAAEP,EAAE,SAAS,EAAE,EAAE,KAAG,MAAI,IAAEO,GAAE,EAAE,CAAC,IAAEP,GAAE,EAAE,CAAC,IAAE,EAAE;AAAI,YAAIkc,IAAE,EAAE,aAAa,KAAK,EAAE;AAAE,SAAC3b,IAAE2b,EAAE,SAAS,KAAK,EAAE,KAAG,MAAI,IAAE3b,GAAE,EAAE,CAAC,IAAE,KAAK,IAAG,EAAE,CAAC,IAAE2b;AAAG,YAAI5W,IAAE,EAAE,aAAa,KAAK,EAAE;AAAE,gBAAO/E,IAAE+E,EAAE,SAAS,KAAK,EAAE,KAAG,MAAI,IAAE/E,GAAE,EAAE,CAAC,IAAE,KAAK,IAAG,EAAE,CAAC,IAAE+E,IAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,iBAAiB,CAAC;AAAE,eAAO,IAAE,KAAG,IAAE,IAAE,KAAK,QAAQ,CAAC,IAAE,KAAK,GAAG,SAAS,CAAC,IAAE,KAAK,GAAG,SAAS,CAAC,IAAE,KAAK,KAAG,KAAK;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,KAAK,GAAG,GAAE,KAAK,GAAG,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK,GAAG,SAAS,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,GAAE,IAAE,KAAK,GAAG,UAAU,EAAE,EAAE;AAAE,eAAW,MAAJ,IAAM,IAAE,KAAK,GAAG,UAAU,EAAE,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK;AAAG,aAAK,KAAG,KAAK,IAAG,KAAK,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,GAAG,OAAO,EAAE,EAAE,KAAG,KAAK,GAAG,OAAO,EAAE,EAAE,KAAG,KAAK,GAAG,OAAO,EAAE,EAAE,KAAG,KAAK,GAAG,OAAO,EAAE,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,eAAOwE,GAAG,aAAa,KAAK,IAAG,KAAK,IAAG,EAAE,IAAG,EAAE,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,KAAK,GAAG,GAAE,KAAK,GAAG,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,GAAG,IAAE,KAAG,KAAK,GAAG,IAAE,KAAK,GAAG,IAAG,IAAE,KAAK,GAAG,IAAE,KAAG,KAAK,GAAG,IAAE,KAAK,GAAG,IAAGvJ,IAAE,KAAK,GAAG,IAAE,KAAK,GAAG,GAAE0b,IAAE,KAAK,GAAG,IAAE,KAAK,GAAG,GAAEjc,IAAE,KAAK,KAAKO,IAAEA,IAAE0b,IAAEA,CAAC,GAAEC,IAAE,GAAE5W,IAAE;AAAE,YAAO,MAAJ,GAAM;AAAC,cAAGtF,KAAG,EAAE,OAAM,IAAI,sBAAsB,qDAAqD;AAAE,UAAAkc,IAAE,IAAE3b,IAAEP,GAAEsF,IAAE,IAAE2W,IAAEjc;AAAA,QAAC;AAAC,eAAO,IAAIud,EAAE,IAAEjY,GAAE,IAAE4W,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,eAAe,EAAE,IAAG,EAAE,EAAE;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,GAAG,IAAE,EAAE,GAAE,KAAK,GAAG,IAAE,EAAE,GAAE,KAAK,GAAG,IAAE,EAAE,GAAE,KAAK,GAAG,IAAE,EAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,iBAAiB,CAAC;AAAE,eAAO,IAAE,IAAE,IAAE,KAAG,IAAE,KAAGc,EAAE,MAAM,CAAC,OAAK,IAAE,IAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,iBAAe,KAAK,GAAG,IAAE,MAAI,KAAK,GAAG,IAAE,OAAK,KAAK,GAAG,IAAE,MAAI,KAAK,GAAG,IAAE;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,KAAK,GAAG,MAAI,KAAK,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,GAAG,KAAI,IAAG,KAAK,GAAG,KAAM,GAAC,IAAE,KAAK,GAAG,SAAO,KAAK,GAAG,KAAM,GAAC,IAAE,KAAK,GAAG,UAAQ,KAAK,GAAG,KAAI,IAAG,KAAK,GAAG,KAAM,KAAE,KAAK,GAAG,KAAI,KAAI,KAAK,GAAG,SAAO,KAAK,GAAG,SAAQzc,IAAE,IAAE,IAAE,IAAE,GAAE0b,IAAE,IAAE,IAAE,IAAE,GAAEjc,IAAE,EAAE,KAAI,GAAGkc,IAAE,EAAE,KAAM;AAAC,eAAO,IAAIqB,GAAG,CAACtB,IAAEjc,IAAE,IAAE,IAAE,IAAEkc,IAAE,IAAE,IAAE,KAAG3b,IAAG0b,IAAEC,IAAE,IAAE,IAAE,IAAElc,IAAE,IAAE,IAAE,KAAGO,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAG,UAAU,CAAC,aAAYZ,GAAE;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAOyf,GAAG,iBAAiB,KAAK,IAAG,KAAK,IAAG,EAAE,IAAG,EAAE,EAAE;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAY7B,GAAE;AAAC,cAAIhe,IAAE,UAAU,CAAC;AAAE,iBAAO6f,GAAG,eAAe7f,GAAE,KAAK,IAAG,KAAK,EAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAIge;AAAE,eAAO,EAAE,IAAE,KAAK,GAAG,IAAE,KAAG,KAAK,GAAG,IAAE,KAAK,GAAG,IAAG,EAAE,IAAE,KAAK,GAAG,IAAE,KAAG,KAAK,GAAG,IAAE,KAAK,GAAG,IAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAEP,EAAE,iBAAiB,KAAK,GAAG,CAAC;AAAE,aAAG,KAAGA,EAAE,iBAAiB,KAAK,GAAG,CAAC;AAAE,YAAI,IAAE,KAAK,MAAM,CAAC,IAAE,KAAK,MAAM,KAAG,EAAE,GAAE,IAAEA,EAAE,iBAAiB,KAAK,GAAG,CAAC;AAAE,eAAO,KAAG,KAAGA,EAAE,iBAAiB,KAAK,GAAG,CAAC,GAAE,KAAG,KAAK,MAAM,CAAC,IAAE,KAAK,MAAM,KAAG,EAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACzb,GAAEgb,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,KAAG,MAAK,KAAK,KAAG,MAAS,UAAU,WAAd,EAAqB,CAAA5c,EAAE,aAAa,KAAK,MAAK,IAAI4d,KAAE,IAAIA,GAAC;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,UAAA5d,EAAE,aAAa,KAAK,MAAK,EAAE,IAAG,EAAE,EAAE;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC;AAAE,eAAK,KAAGZ,GAAE,KAAK,KAAGY;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAII,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,UAAAvc,EAAE,aAAa,KAAK,MAAK,IAAI4d,EAAEhd,GAAE,CAAC,GAAE,IAAIgd,EAAEvd,GAAEkc,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,IAAIqB,GAAG,EAAE,IAAE,EAAE,KAAG,IAAG,EAAE,IAAE,EAAE,KAAG,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE5d;AAAA,IAAC,KAAImmB,KAAG,WAAU;AAAC,eAASnmB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,cAAE,eAAe,GAAE,KAAK,YAAY,GAAE,EAAE,eAAe,GAAE,KAAK,YAAY,GAAE,KAAK,QAAQ,KAAK,cAAa,KAAK,YAAY;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,eAAa,IAAIkmB,MAAG,KAAK,eAAa,IAAIA;AAAA,MAAE,EAAC,CAAC,CAAC,GAAElmB;AAAA,IAAC,EAAC,GAAGomB,KAAG,WAAU;AAAC,eAASpmB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE;AAAC,UAAE,KAAG,KAAK,KAAK,CAAC,GAAE,EAAE,KAAG,KAAK,KAAK,IAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAIY,IAAE,KAAK,KAAK,CAAC,GAAE0b,IAAE,KAAK,KAAK,CAAC;AAAE,YAAG,IAAE,KAAG,EAAE,QAAO,EAAE,OAAO,MAAK,CAAC,GAAE;AAAK,YAAG,CAAC,EAAE,WAAW1b,GAAE0b,CAAC,EAAE,QAAO;AAAK,YAAIjc,IAAE,KAAK,OAAO,IAAE,KAAG,CAAC;AAAE,YAAEA,KAAG,KAAK,cAAc,GAAE,GAAEA,GAAE,CAAC,GAAEA,IAAE,KAAG,KAAK,cAAc,GAAEA,GAAE,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,iBAAQ,IAAE,IAAI,MAAM,KAAK,OAAK,KAAK,SAAO,CAAC,EAAE,KAAK,IAAI,GAAE,IAAE,GAAE,IAAE,KAAK,QAAO,KAAG,KAAK,MAAK,IAAI,GAAE,GAAG,IAAE,KAAK,KAAK,CAAC;AAAE,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,gBAAgB,KAAK,QAAO,KAAK,MAAK,GAAE,EAAE,QAAO,EAAE,MAAK,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAEO,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,cAAG,IAAE,KAAG,KAAGlc,IAAEic,KAAG,EAAE,QAAOC,EAAE,QAAQ,MAAK,GAAE3b,GAAE0b,CAAC,GAAE;AAAK,cAAG,CAAC,KAAK,SAAS,GAAE,GAAE1b,GAAE0b,GAAEjc,CAAC,EAAE,QAAO;AAAK,cAAIsF,IAAE,KAAK,OAAO,IAAE,KAAG,CAAC,GAAEhF,IAAE,KAAK,OAAO2b,IAAEjc,KAAG,CAAC;AAAE,cAAEsF,MAAI2W,IAAE3b,KAAG,KAAK,gBAAgB,GAAEgF,GAAE/E,GAAE0b,GAAE3b,GAAE4b,CAAC,GAAE5b,IAAEN,KAAG,KAAK,gBAAgB,GAAEsF,GAAE/E,GAAED,GAAEN,GAAEkc,CAAC,IAAG5W,IAAE,MAAI2W,IAAE3b,KAAG,KAAK,gBAAgBgF,GAAE,GAAE/E,GAAE0b,GAAE3b,GAAE4b,CAAC,GAAE5b,IAAEN,KAAG,KAAK,gBAAgBsF,GAAE,GAAE/E,GAAED,GAAEN,GAAEkc,CAAC;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,aAAK,MAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,cAAc,GAAE,KAAK,QAAO,KAAK,MAAK,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAU,KAAK,SAAZ,MAAiB;AAAC,cAAI,IAAE,KAAK,KAAK,KAAK,MAAM,GAAE,IAAE,KAAK,KAAK,KAAK,IAAI;AAAE,eAAK,OAAK,IAAIsB,GAAE,GAAE,CAAC;AAAA,QAAC;AAAC,eAAO,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE,GAAE,GAAEjd,GAAE;AAAC,eAAOid,GAAE,WAAW,KAAK,KAAK,CAAC,GAAE,KAAK,KAAK,CAAC,GAAE,EAAE,KAAK,CAAC,GAAE,EAAE,KAAKjd,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,OAAK,MAAK,KAAK,SAAO,MAAK,KAAK,OAAK,MAAK,KAAK,OAAK,MAAK,KAAK,WAAS,MAAK,KAAK,MAAI;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,OAAK,GAAE,KAAK,SAAO,GAAE,KAAK,OAAK,GAAE,KAAK,WAAS;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,EAAC,GAAGqmB,KAAG,WAAU;AAAC,eAASrmB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,SAAO,KAAG,EAAE,CAAC,EAAE,SAAS,EAAE,IAAE,CAAC,CAAC,IAAG;AAAI,YAAG,KAAG,EAAE,SAAO,EAAE,QAAO,EAAE,SAAO;AAAE,iBAAQ,IAAEwkB,GAAG,SAAS,EAAE,CAAC,GAAE,EAAE,IAAE,CAAC,CAAC,GAAE5jB,IAAE,IAAE,GAAEA,IAAE,EAAE,UAAY,GAAC,EAAEA,IAAE,CAAC,EAAE,SAAS,EAAEA,CAAC,CAAC,KAAK4jB,GAAG,SAAS,EAAE5jB,IAAE,CAAC,GAAE,EAAEA,CAAC,CAAC,MAAI;AAAQ,UAAAA;AAAI,eAAOA,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAOZ,EAAE,UAAU,GAAE,IAAI;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAEI,IAAE,IAAIwe,KAAG,IAAE;AAAE,aAAE;AAAC,gBAAI/e,IAAEL,EAAE,aAAaJ,GAAE,CAAC,GAAE2c,IAAE,IAAI6J,GAAGxmB,GAAE,GAAES,GAAEG,CAAC;AAAE,YAAAI,EAAE,IAAI2b,CAAC,GAAE,IAAElc;AAAA,UAAC,SAAO,IAAET,EAAE,SAAO;AAAG,iBAAOgB;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,EAAC,GAAGsmB,KAAG,WAAU;AAAC,eAAStmB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAA,MAAE,EAAA,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAA,QAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,GAAGumB,KAAG,WAAU;AAAC,eAASvmB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,yBAAwB,OAAM,SAAS,GAAE;AAAC,aAAK,UAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACsmB,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,UAAQ,MAAS,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,iBAAK,sBAAsB,CAAC;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEtmB;AAAA,IAAC,EAAC,GAAGwmB,KAAG,SAASxmB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,eAAOwJ,GAAG,mBAAmB,KAAK,gBAAgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAStmB,GAAE;AAAC,iBAAQQ,IAAEqmB,GAAG,UAAU7mB,EAAE,eAAgB,GAACA,CAAC,EAAE,YAAWQ,EAAE,QAAO,KAAI;AAAC,cAAIJ,IAAEI,EAAE,KAAM;AAAC,UAAAJ,EAAE,MAAM,KAAK,YAAY,GAAE,KAAK,OAAO,OAAOA,EAAE,YAAa,GAACA,CAAC,GAAE,KAAK,YAAY,IAAIA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASJ,GAAE;AAAC,aAAK,mBAAiBA;AAAE,iBAAQQ,IAAER,EAAE,SAAU,GAACQ,EAAE,YAAW,MAAK,IAAIA,EAAE,KAAI,CAAE;AAAE,aAAK,gBAAe;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,iBAAQR,IAAE,IAAIinB,GAAG,KAAK,OAAO,GAAEzmB,IAAE,KAAK,YAAY,SAAU,GAACA,EAAE,YAAW,UAAQJ,IAAEI,EAAE,KAAI,GAAGQ,IAAE,KAAK,OAAO,MAAMZ,EAAE,YAAW,CAAE,EAAE,YAAWY,EAAE,QAAO,KAAI;AAAC,cAAII,IAAEJ,EAAE,KAAM;AAAC,cAAGI,EAAE,MAAK,IAAGhB,EAAE,MAAK,MAAKA,EAAE,gBAAgBgB,GAAEpB,CAAC,GAAE,KAAK,eAAc,KAAK,QAAQ,OAAQ,EAAC,QAAO;AAAA,QAAI;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,cAAY,IAAI4f,KAAG,KAAK,SAAO,IAAIoG,MAAG,KAAK,aAAW,GAAE,KAAK,mBAAiB,MAAK,KAAK,aAAW,GAAM,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAIhmB,IAAE,UAAU,CAAC;AAAE,YAAA+mB,GAAG,aAAa,KAAK,MAAK/mB,CAAC;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE8c;AAAA,IAAC,EAAEiK,EAAE,GAAEE,KAAG,SAASzmB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAOoc,EAAE7b,EAAEP,EAAE,SAAS,GAAE,WAAU,IAAI,EAAE,MAAM,MAAK,SAAS;AAAE,YAAIb,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAE8b,IAAE9c,EAAE,WAAU,GAAG+c,IAAE3c,EAAE,WAAY;AAAC,aAAK,IAAI,qBAAqB0c,GAAEtc,GAAEuc,GAAE/b,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,MAAI;AAAK,YAAIhB,IAAE,UAAU,CAAC;AAAE,aAAK,MAAIA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEa;AAAA,IAAC,EAAE8lB,EAAE;AAAE,IAAAK,GAAG,uBAAqBC;AAAG,QAAIC,KAAG,WAAU;AAAC,eAAS1mB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAIY,IAAE,KAAK,WAAW,CAAC,GAAE0b,IAAE,KAAK,WAAW,CAAC,GAAEjc,IAAE,KAAK,WAAW,CAAC;AAAE,eAAM,CAAC,CAAC,KAAK,UAAUO,GAAE0b,GAAEjc,CAAC,KAAI,CAAC,CAAC,KAAK,UAAUO,GAAE0b,GAAEjc,GAAE,CAAC,KAAG,KAAK,iBAAiBO,GAAE0b,GAAE,GAAE,GAAE,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,WAAU;AAAC,iBAAQ,IAAE,GAAE1c,IAAE,KAAK,wBAAwB,CAAC,GAAEY,IAAE,KAAK,wBAAwBZ,CAAC,GAAEgB,IAAE,IAAGJ,IAAE,KAAK,WAAW,UAAQ;AAAC,cAAI,IAAE;AAAG,eAAK,YAAY,GAAEZ,GAAEY,GAAE,KAAK,YAAY,MAAI,KAAK,WAAWZ,CAAC,IAAEI,EAAE,QAAO,IAAE,IAAGY,IAAE,KAAI,IAAE,IAAEJ,IAAEZ,GAAEA,IAAE,KAAK,wBAAwB,CAAC,GAAEY,IAAE,KAAK,wBAAwBZ,CAAC;AAAA,QAAC;AAAC,eAAOgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,eAAOoe,EAAG,MAAM,GAAE,GAAE,CAAC,MAAI,KAAK,qBAAmBS,GAAG,eAAe,GAAE,GAAE,CAAC,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE7f,GAAEY,GAAEI,GAAE,GAAE;AAAC,YAAIP,IAAE,KAAK,OAAOO,IAAEJ,KAAGR,EAAE,gBAAgB;AAAE,QAAAK,KAAG,MAAIA,IAAE;AAAG,iBAAQkc,IAAE/b,GAAE+b,IAAE3b,GAAE2b,KAAGlc,EAAE,KAAG,CAAC,KAAK,UAAU,GAAET,GAAE,KAAK,WAAW2c,CAAC,GAAE,CAAC,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAEyC,EAAG,MAAM,GAAE,GAAE,CAAC,MAAI,KAAK;AAAkB,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,aAAK,eAAa,KAAK,IAAI,CAAC,GAAE,IAAE,MAAI,KAAK,oBAAkBA,EAAG,YAAW,KAAK,aAAW,IAAI,MAAM,KAAK,WAAW,MAAM,EAAE,KAAK,IAAI;AAAE,YAAI,IAAE;AAAG;AAAG,cAAE,KAAK;eAAiC;AAAG,eAAO,KAAK,aAAY;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAAS,GAAE;AAAC,iBAAQpf,IAAE,IAAE,GAAEA,IAAE,KAAK,WAAW,UAAQ,KAAK,WAAWA,CAAC,MAAII,EAAE,SAAQ,CAAAJ;AAAI,eAAOA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,eAAO6f,GAAG,eAAe,GAAE,GAAE,CAAC,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAQ,IAAE,IAAI0B,MAAGvhB,IAAE,GAAEA,IAAE,KAAK,WAAW,QAAOA,IAAI,MAAK,WAAWA,CAAC,MAAII,EAAE,UAAQ,EAAE,IAAI,KAAK,WAAWJ,CAAC,CAAC;AAAE,eAAO,EAAE;MAAmB,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,aAAW,MAAK,KAAK,eAAa,MAAK,KAAK,aAAW,MAAK,KAAK,oBAAkBof,EAAG;AAAiB,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,aAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAEpf,GAAE;AAAC,eAAO,IAAII,EAAE,CAAC,EAAE,SAASJ,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEI;AAAA,IAAC,EAAG;AAAC,IAAA0mB,GAAG,OAAK,GAAEA,GAAG,SAAO,GAAEA,GAAG,OAAK,GAAEA,GAAG,mBAAiB;AAAG,QAAIC,KAAG,WAAU;AAAC,eAAS3mB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK,QAAQ,QAAQA,EAAE,qBAAqB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,aAAK,kBAAgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI4d,EAAE,CAAC;AAAE,YAAG,KAAK,gBAAgB,YAAY,CAAC,GAAE,KAAK,YAAY,CAAC,EAAE,QAAO;AAAK,aAAK,QAAQ,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAA,QAAE,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE;AAAC,YAAG,EAAE,UAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,MAAK,MAAM,EAAE,CAAC,CAAC;AAAA,YAAO,UAAQ,IAAE,EAAE,SAAO,GAAE,KAAG,GAAE,IAAI,MAAK,MAAM,EAAE,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,YAAG,KAAK,QAAQ,SAAO,EAAE,QAAM;AAAG,YAAI,IAAE,KAAK,QAAQ,IAAI,KAAK,QAAQ,KAAI,IAAG,CAAC;AAAE,eAAO,EAAE,SAAS,CAAC,IAAE,KAAK;AAAA,MAAsB,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,IAAIoE,KAAI,iBAAiB,KAAK,eAAgB,CAAA,EAAE,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAG,KAAK,QAAQ,KAAI,IAAG,EAAE,QAAO;AAAK,YAAI,IAAE,IAAIpE,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAE,IAAE,KAAK,QAAQ,IAAI,KAAK,QAAQ,SAAO,CAAC;AAAE,YAAG,EAAE,OAAO,CAAC,EAAE,QAAO;AAAK,aAAK,QAAQ,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAAS,GAAE;AAAC,aAAK,yBAAuB;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,UAAQ,MAAK,KAAK,kBAAgB,MAAK,KAAK,yBAAuB,GAAE,KAAK,UAAQ,IAAIwB;AAAA,MAAE,EAAC,CAAC,CAAC,GAAEpf;AAAA,IAAC;AAAI,IAAA2mB,GAAG,wBAAsB,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAE,QAAIC,KAAG,WAAU;AAAC,eAAS5mB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,MAAK,CAAC,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,eAAO,MAAI,IAAE,KAAK;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,eAAK,IAAE,KAAK,KAAI,MAAGA,EAAE;AAAW,eAAK,KAAG,CAAC,KAAK,KAAI,MAAGA,EAAE;AAAW,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,MAAM,EAAE,GAAE,EAAE,CAAC;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,EAAE,IAAE,EAAE,GAAEY,IAAE,EAAE,IAAE,EAAE;AAAE,iBAAO,KAAK,MAAMA,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,IAAE,EAAE,GAAEA,IAAE,EAAE,IAAE,EAAE;AAAE,eAAO,KAAG,EAAE,IAAE,EAAE,KAAGA,KAAG,EAAE,IAAE,EAAE,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,IAAE,EAAE,GAAEA,IAAE,EAAE,IAAE,EAAE;AAAE,eAAO,KAAG,EAAE,IAAE,EAAE,KAAGA,KAAG,EAAE,IAAE,EAAE,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAEhB,GAAEY,GAAE;AAAC,YAAII,IAAEZ,EAAE,MAAMJ,GAAE,CAAC,GAAE,IAAEI,EAAE,MAAMJ,GAAEY,CAAC;AAAE,eAAO,KAAK,IAAI,IAAEI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,YAAG,IAAE,GAAE;AAAC,iBAAK,IAAE,IAAG,MAAGZ,EAAE;AAAW,eAAGA,EAAE,eAAa,IAAE;AAAA,QAAE,OAAK;AAAC,iBAAK,KAAGA,EAAE,aAAY,MAAGA,EAAE;AAAW,cAAE,MAAI,IAAE;AAAA,QAAE;AAAC,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAEJ,GAAEY,GAAE;AAAC,YAAII,IAAEZ,EAAE,MAAMJ,GAAE,CAAC,GAAE,IAAEI,EAAE,MAAMJ,GAAEY,CAAC;AAAE,eAAOR,EAAE,KAAKY,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE;AAAK,gBAAO,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,KAAG,KAAK,OAAK,IAAE,IAAE,KAAK,KAAG,IAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,eAAO,IAAE,KAAK,KAAG;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAEhB,GAAE;AAAC,YAAIY,IAAE,KAAK,IAAIZ,IAAE,CAAC;AAAE,eAAOY,IAAE,IAAER,EAAE,mBAAiBQ,IAAE,IAAER,EAAE,YAAUA,EAAE;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAEJ,GAAEY,GAAE;AAAC,YAAII,IAAEZ,EAAE,MAAMJ,GAAE,CAAC,GAAE,IAAEI,EAAE,MAAMJ,GAAEY,CAAC,IAAEI;AAAE,eAAO,KAAG,CAAC,KAAK,KAAG,IAAEZ,EAAE,aAAW,IAAE,KAAK,KAAG,IAAEA,EAAE,aAAW;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC;AAAG,IAAA4mB,GAAG,aAAW,IAAE,KAAK,IAAGA,GAAG,YAAU,KAAK,KAAG,GAAEA,GAAG,YAAU,KAAK,KAAG,GAAEA,GAAG,mBAAiB5H,EAAG,kBAAiB4H,GAAG,YAAU5H,EAAG,WAAU4H,GAAG,OAAK5H,EAAG;AAAU,QAAI6H,KAAG,WAAU;AAAC,eAAS7mB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAG,KAAK,MAAI,KAAK,KAAI,KAAK,MAAI,KAAK,KAAI,KAAK,MAAI,GAAE,KAAK,MAAM,eAAe,KAAK,KAAI,KAAK,GAAG,GAAE,KAAK,qBAAqB,KAAK,OAAM,KAAK,OAAM,KAAK,WAAU,KAAK,QAAQ,GAAE,KAAK,MAAM,eAAe,KAAK,KAAI,KAAK,GAAG,GAAE,KAAK,qBAAqB,KAAK,OAAM,KAAK,OAAM,KAAK,WAAU,KAAK,QAAQ,GAAE,KAAK,IAAI,OAAO,KAAK,GAAG,EAAE,QAAO;AAAK,YAAI,IAAEgf,EAAG,MAAM,KAAK,KAAI,KAAK,KAAI,KAAK,GAAG,GAAE,IAAE,MAAIA,EAAG,aAAW,KAAK,UAAQZ,EAAE,QAAM,MAAIY,EAAG,oBAAkB,KAAK,UAAQZ,EAAE;AAAM,QAAI,MAAJ,IAAM,KAAK,aAAa,CAAC,IAAE,IAAE,KAAK,eAAe,GAAE,CAAC,IAAE,KAAK,cAAc,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,IAAI8H,GAAG,GAAE,CAAC,GAAE,IAAE,IAAIA;AAAG,aAAK,qBAAqB,GAAE9H,EAAE,MAAK,KAAK,WAAU,CAAC;AAAE,YAAIxd,IAAE,IAAIslB;AAAG,aAAK,qBAAqB,GAAE9H,EAAE,OAAM,KAAK,WAAUxd,CAAC;AAAE,YAAI0b,IAAE,EAAE,IAAE,EAAE,GAAEjc,IAAE,EAAE,IAAE,EAAE,GAAEkc,IAAE,KAAK,MAAMlc,GAAEic,CAAC;AAAE,gBAAO,KAAK,WAAW,eAAgB,GAAA;AAAA,UAAE,KAAK/c,EAAE;AAAU,iBAAK,SAAS,MAAM,EAAE,EAAE,GAAE,KAAK,kBAAkB,GAAEgd,IAAE,KAAK,KAAG,GAAEA,IAAE,KAAK,KAAG,GAAEyC,EAAG,WAAU,KAAK,SAAS,GAAE,KAAK,SAAS,MAAMpe,EAAE,EAAE;AAAE;AAAA,UAAM,KAAKrB,EAAE;AAAS,iBAAK,SAAS,MAAM,EAAE,EAAE,GAAE,KAAK,SAAS,MAAMqB,EAAE,EAAE;AAAE;AAAA,UAAM,KAAKrB,EAAE;AAAW,gBAAIoG,IAAE,IAAIiY;AAAE,YAAAjY,EAAE,IAAE,KAAK,IAAI,KAAK,SAAS,IAAE,KAAK,IAAI4W,CAAC,GAAE5W,EAAE,IAAE,KAAK,IAAI,KAAK,SAAS,IAAE,KAAK,IAAI4W,CAAC;AAAE,gBAAI5b,IAAE,IAAIid,EAAE,EAAE,GAAG,IAAEjY,EAAE,GAAE,EAAE,GAAG,IAAEA,EAAE,CAAC,GAAE6W,IAAE,IAAIoB,EAAEhd,EAAE,GAAG,IAAE+E,EAAE,GAAE/E,EAAE,GAAG,IAAE+E,EAAE,CAAC;AAAE,iBAAK,SAAS,MAAMhF,CAAC,GAAE,KAAK,SAAS,MAAM6b,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK,SAAS;MAAgB,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAI5b,IAAEuJ,GAAG,aAAa,EAAE,IAAG,EAAE,IAAG,EAAE,IAAG,EAAE,EAAE;AAAE,YAAUvJ,MAAP,SAAW,KAAG,IAAE,IAAEA,EAAE,SAAS,CAAC,IAAE,KAAK,IAAI,CAAC,MAAI,KAAK,WAAW,cAAa,EAAG,QAAO,KAAK,SAAS,MAAMA,CAAC,GAAE;AAAK,aAAK,oBAAoB,GAAE,GAAE,GAAE,KAAK,WAAW,cAAa,CAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAEhB,GAAE;AAAC,YAAG,KAAK,SAAS,GAAG,SAAS,KAAK,SAAS,EAAE,IAAE,KAAK,YAAUI,EAAE,iCAAiC,QAAO,KAAK,SAAS,MAAM,KAAK,SAAS,EAAE,GAAE;AAAK,aAAK,WAAW,mBAAiBT,EAAE,aAAW,KAAK,aAAa,KAAK,KAAI,KAAK,UAAS,KAAK,UAAS,KAAK,SAAS,IAAE,KAAK,WAAW,aAAc,MAAGA,EAAE,aAAW,KAAK,aAAa,KAAK,UAAS,KAAK,QAAQ,KAAGK,KAAG,KAAK,SAAS,MAAM,KAAK,SAAS,EAAE,GAAE,KAAK,gBAAgB,KAAK,KAAI,KAAK,SAAS,IAAG,KAAK,SAAS,IAAG,GAAE,KAAK,SAAS,GAAE,KAAK,SAAS,MAAM,KAAK,SAAS,EAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,aAAK,SAAS,MAAM,IAAIge,EAAE,EAAE,IAAE,KAAK,WAAU,EAAE,IAAE,KAAK,SAAS,CAAC,GAAE,KAAK,SAAS,MAAM,IAAIA,EAAE,EAAE,IAAE,KAAK,WAAU,EAAE,IAAE,KAAK,SAAS,CAAC,GAAE,KAAK,SAAS,MAAM,IAAIA,EAAE,EAAE,IAAE,KAAK,WAAU,EAAE,IAAE,KAAK,SAAS,CAAC,GAAE,KAAK,SAAS,MAAM,IAAIA,EAAE,EAAE,IAAE,KAAK,WAAU,EAAE,IAAE,KAAK,SAAS,CAAC,GAAE,KAAK,SAAS;MAAW,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,SAAS,OAAO,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,aAAK,SAAS,MAAM,KAAK,SAAS,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAEhd,GAAE;AAAC,YAAI0b,IAAE,EAAE,IAAE,EAAE,GAAEjc,IAAE,EAAE,IAAE,EAAE,GAAEkc,IAAE,KAAK,MAAMlc,GAAEic,CAAC,GAAE3W,IAAE,EAAE,IAAE,EAAE,GAAEhF,IAAE,EAAE,IAAE,EAAE,GAAE6b,IAAE,KAAK,MAAM7b,GAAEgF,CAAC;AAAE,cAAIqZ,EAAG,YAAUzC,KAAGC,MAAID,KAAG,IAAE,KAAK,MAAIA,KAAGC,MAAID,KAAG,IAAE,KAAK,KAAI,KAAK,SAAS,MAAM,CAAC,GAAE,KAAK,kBAAkB,GAAEA,GAAEC,GAAE,GAAE5b,CAAC,GAAE,KAAK,SAAS,MAAM,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,aAAK,SAAS,MAAM,KAAK,SAAS,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,aAAK,MAAI,GAAE,KAAK,MAAI,GAAE,KAAK,QAAM,GAAE,KAAK,MAAM,eAAe,GAAE,CAAC,GAAE,KAAK,qBAAqB,KAAK,OAAM,GAAE,KAAK,WAAU,KAAK,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAIA,IAAE,KAAK,MAAM,IAAG0b,IAAEsK,GAAG,MAAMhmB,GAAE,KAAK,MAAM,EAAE,GAAEP,IAAEumB,GAAG,qBAAqB,KAAK,MAAM,IAAGhmB,GAAE,KAAK,MAAM,EAAE,IAAE,GAAE2b,IAAEqK,GAAG,UAAUtK,IAAEjc,CAAC,GAAEsF,IAAEihB,GAAG,UAAUrK,IAAE,KAAK,EAAE,GAAE5b,IAAE,IAAE,GAAE6b,IAAE,IAAE7b,IAAE,KAAK,IAAI,KAAK,IAAIN,CAAC,CAAC,GAAEmG,IAAE5F,EAAE,IAAED,IAAE,KAAK,IAAIgF,CAAC,GAAE8W,IAAE7b,EAAE,IAAED,IAAE,KAAK,IAAIgF,CAAC,GAAE9F,IAAE,IAAI+d,EAAEpX,GAAEiW,CAAC,GAAE/c,IAAE,IAAIwmB,GAAGtlB,GAAEf,CAAC,GAAEJ,IAAEC,EAAE,iBAAiB,GAAE8c,CAAC,GAAE9Z,IAAEhD,EAAE,iBAAiB,GAAE,CAAC8c,CAAC;AAAE,aAAK,UAAQ4B,EAAE,QAAM,KAAK,SAAS,MAAM3e,CAAC,GAAE,KAAK,SAAS,MAAMiD,CAAC,MAAI,KAAK,SAAS,MAAMA,CAAC,GAAE,KAAK,SAAS,MAAMjD,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAEmB,GAAE;AAAC,YAAI0b,IAAE,MAAI0C,EAAG,YAAU,KAAG,GAAE3e,IAAE,KAAK,IAAI,IAAE,CAAC,GAAEkc,IAAE,KAAK,MAAMlc,IAAE,KAAK,sBAAoB,GAAE;AAAE,YAAGkc,IAAE,EAAE,QAAO;AAAK,iBAAQ5W,IAAEtF,IAAEkc,GAAE5b,IAAE,IAAIid,KAAEpB,IAAE,GAAEA,IAAED,GAAEC,KAAI;AAAC,cAAIhW,IAAE,IAAE8V,IAAEE,IAAE7W;AAAE,UAAAhF,EAAE,IAAE,EAAE,IAAEC,IAAE,KAAK,IAAI4F,CAAC,GAAE7F,EAAE,IAAE,EAAE,IAAEC,IAAE,KAAK,IAAI4F,CAAC,GAAE,KAAK,SAAS,MAAM7F,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAIC,IAAE,MAAIwd,EAAE,OAAK,IAAE,IAAG9B,IAAE,EAAE,GAAG,IAAE,EAAE,GAAG,GAAEjc,IAAE,EAAE,GAAG,IAAE,EAAE,GAAG,GAAEkc,IAAE,KAAK,KAAKD,IAAEA,IAAEjc,IAAEA,CAAC,GAAEsF,IAAE/E,IAAE,IAAE0b,IAAEC,GAAE5b,IAAEC,IAAE,IAAEP,IAAEkc;AAAE,UAAE,GAAG,IAAE,EAAE,GAAG,IAAE5b,GAAE,EAAE,GAAG,IAAE,EAAE,GAAG,IAAEgF,GAAE,EAAE,GAAG,IAAE,EAAE,GAAG,IAAEhF,GAAE,EAAE,GAAG,IAAE,EAAE,GAAG,IAAEgF;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE/F,GAAE;AAAC,YAAG,KAAK,IAAI,oBAAoB,KAAK,SAAS,IAAG,KAAK,SAAS,IAAG,KAAK,SAAS,IAAG,KAAK,SAAS,EAAE,GAAE,KAAK,IAAI,gBAAe,EAAG,MAAK,SAAS,MAAM,KAAK,IAAI,gBAAgB,CAAC,CAAC;AAAA,iBAAU,KAAK,yBAAuB,IAAG,KAAK,SAAS,GAAG,SAAS,KAAK,SAAS,EAAE,IAAE,KAAK,YAAUI,EAAE,wCAAwC,MAAK,SAAS,MAAM,KAAK,SAAS,EAAE;AAAA,aAAM;AAAC,cAAG,KAAK,SAAS,MAAM,KAAK,SAAS,EAAE,GAAE,KAAK,0BAAwB,GAAE;AAAC,gBAAIQ,IAAE,IAAIod,GAAG,KAAK,0BAAwB,KAAK,SAAS,GAAG,IAAE,KAAK,IAAI,MAAI,KAAK,0BAAwB,KAAI,KAAK,0BAAwB,KAAK,SAAS,GAAG,IAAE,KAAK,IAAI,MAAI,KAAK,0BAAwB,EAAE;AAAE,iBAAK,SAAS,MAAMpd,CAAC;AAAE,gBAAII,IAAE,IAAIgd,GAAG,KAAK,0BAAwB,KAAK,SAAS,GAAG,IAAE,KAAK,IAAI,MAAI,KAAK,0BAAwB,KAAI,KAAK,0BAAwB,KAAK,SAAS,GAAG,IAAE,KAAK,IAAI,MAAI,KAAK,0BAAwB,EAAE;AAAE,iBAAK,SAAS,MAAMhd,CAAC;AAAA,UAAC,MAAM,MAAK,SAAS,MAAM,KAAK,GAAG;AAAE,eAAK,SAAS,MAAM,KAAK,SAAS,EAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAIgd,EAAE,EAAE,IAAE,KAAK,WAAU,EAAE,CAAC;AAAE,aAAK,SAAS,MAAM,CAAC,GAAE,KAAK,kBAAkB,GAAE,GAAE,IAAE,KAAK,IAAG,IAAG,KAAK,SAAS,GAAE,KAAK,SAAS,UAAS;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,SAAS,MAAM,EAAE,EAAE,GAAE,KAAK,SAAS,MAAM,EAAE,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,aAAK,YAAU,GAAE,KAAK,wBAAsB,KAAG,IAAE,KAAK,IAAI,KAAK,sBAAoB,CAAC,IAAG,KAAK,WAAS,IAAI+I,MAAG,KAAK,SAAS,kBAAkB,KAAK,eAAe,GAAE,KAAK,SAAS,yBAAyB,IAAE3mB,EAAE,iCAAiC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,aAAK,IAAI,oBAAoB,KAAK,KAAI,KAAK,KAAI,KAAK,KAAI,KAAK,GAAG,GAAE,KAAK,IAAI,mBAAkB,KAAI,MAAI,KAAK,WAAW,mBAAiBT,EAAE,cAAY,KAAK,WAAW,aAAc,MAAGA,EAAE,cAAY,KAAG,KAAK,SAAS,MAAM,KAAK,SAAS,EAAE,GAAE,KAAK,SAAS,MAAM,KAAK,SAAS,EAAE,KAAG,KAAK,gBAAgB,KAAK,KAAI,KAAK,SAAS,IAAG,KAAK,SAAS,IAAGyf,EAAG,WAAU,KAAK,SAAS;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,aAAK,SAAS;MAAW,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAsB,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,wBAAsB,GAAE,KAAK,sBAAoB,MAAK,KAAK,0BAAwB,GAAE,KAAK,WAAS,MAAK,KAAK,YAAU,GAAE,KAAK,kBAAgB,MAAK,KAAK,aAAW,MAAK,KAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,QAAM,IAAIkH,MAAG,KAAK,QAAM,IAAIA,MAAG,KAAK,WAAS,IAAIA,MAAG,KAAK,WAAS,IAAIA,MAAG,KAAK,QAAM,GAAE,KAAK,yBAAuB;AAAG,YAAI,IAAE,UAAU,CAAC,GAAEtmB,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC;AAAE,aAAK,kBAAgB,GAAE,KAAK,aAAWZ,GAAE,KAAK,MAAI,IAAI2jB,MAAG,KAAK,sBAAoB,KAAK,KAAG,IAAE3jB,EAAE,oBAAqB,GAACA,EAAE,oBAAqB,KAAE,KAAGA,EAAE,mBAAiBL,EAAE,eAAa,KAAK,0BAAwBS,EAAE,6BAA4B,KAAK,KAAKQ,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAER;AAAA,IAAC,EAAC;AAAG,IAAA6mB,GAAG,mCAAiC,MAAKA,GAAG,0CAAwC,MAAKA,GAAG,oCAAkC,MAAKA,GAAG,6BAA2B;AAAG,QAAIC,KAAG,WAAU;AAAC,eAAS9mB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAG,KAAK,YAAU,GAAM,MAAJ,EAAM,QAAO;AAAK,YAAI,IAAE,IAAE,GAAE,IAAE,KAAK,IAAI,CAAC,GAAEY,IAAE,KAAK,UAAU,CAAC;AAAE,UAAE,UAAQ,IAAE,KAAK,kBAAkB,EAAE,CAAC,GAAEA,CAAC,IAAE,KAAK,mBAAmB,GAAE,GAAEA,CAAC;AAAE,YAAI0b,IAAE1b,EAAE,eAAc;AAAG,eAAO,KAAGwgB,GAAG,QAAQ9E,CAAC,GAAEA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iCAAgC,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,kBAAkB,KAAK,SAAS;AAAE,YAAG,GAAE;AAAC,YAAE,YAAY,GAAE,EAAE;AAAE,cAAI1b,IAAE8lB,GAAG,SAAS,GAAE,CAAC,CAAC,GAAEpK,IAAE1b,EAAE,SAAO;AAAE,YAAE,iBAAiBA,EAAE0b,CAAC,GAAE1b,EAAE0b,IAAE,CAAC,GAAE8B,EAAE,IAAI,GAAE,EAAE,gBAAiB;AAAC,mBAAQ/d,IAAEic,IAAE,GAAEjc,KAAG,GAAEA,IAAI,GAAE,eAAeO,EAAEP,CAAC,GAAE,EAAE;AAAA,QAAC,OAAK;AAAC,YAAE,YAAY,GAAE,EAAE;AAAE,cAAIkc,IAAEmK,GAAG,SAAS,GAAE,CAAC,GAAE/gB,IAAE4W,EAAE,SAAO;AAAE,YAAE,iBAAiBA,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE6B,EAAE,IAAI,GAAE,EAAE;AAAkB,mBAAQzd,IAAE,GAAEA,KAAGgF,GAAEhF,IAAI,GAAE,eAAe4b,EAAE5b,CAAC,GAAE,EAAE;AAAA,QAAC;AAAC,UAAE,eAAc,GAAG,EAAE,UAAS;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,kBAAkB,KAAK,SAAS;AAAE,cAAIyd,EAAE,UAAQ,IAAE,CAAC;AAAG,YAAIxd,IAAE8lB,GAAG,SAAS,GAAE,CAAC,GAAEpK,IAAE1b,EAAE,SAAO;AAAE,UAAE,iBAAiBA,EAAE0b,IAAE,CAAC,GAAE1b,EAAE,CAAC,GAAE,CAAC;AAAE,iBAAQP,IAAE,GAAEA,KAAGic,GAAEjc,KAAI;AAAC,cAAIkc,IAAMlc,MAAJ;AAAM,YAAE,eAAeO,EAAEP,CAAC,GAAEkc,CAAC;AAAA,QAAC;AAAC,UAAE,UAAS;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,kBAAkB,KAAK,SAAS,GAAE,IAAEmK,GAAG,SAAS,GAAE,CAAC,GAAE9lB,IAAE,EAAE,SAAO;AAAE,UAAE,iBAAiB,EAAE,CAAC,GAAE,EAAE,CAAC,GAAEwd,EAAE,IAAI;AAAE,iBAAQ9B,IAAE,GAAEA,KAAG1b,GAAE0b,IAAI,GAAE,eAAe,EAAEA,CAAC,GAAE,EAAE;AAAE,UAAE,eAAgB,GAAC,EAAE,cAAc,EAAE1b,IAAE,CAAC,GAAE,EAAEA,CAAC,CAAC;AAAE,YAAIP,IAAEqmB,GAAG,SAAS,GAAE,CAAC,CAAC,GAAEnK,IAAElc,EAAE,SAAO;AAAE,UAAE,iBAAiBA,EAAEkc,CAAC,GAAElc,EAAEkc,IAAE,CAAC,GAAE6B,EAAE,IAAI;AAAE,iBAAQzY,IAAE4W,IAAE,GAAE5W,KAAG,GAAEA,IAAI,GAAE,eAAetF,EAAEsF,CAAC,GAAE,EAAE;AAAE,UAAE,kBAAiB,EAAE,cAActF,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,GAAE,EAAE;MAAW,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE;AAAC,gBAAO,KAAK,WAAW,eAAc,GAAI;AAAA,UAAA,KAAKd,EAAE;AAAU,cAAE,aAAa,CAAC;AAAE;AAAA,UAAM,KAAKA,EAAE;AAAW,cAAE,aAAa,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,YAAG,KAAK,YAAU,GAAE,KAAK,kBAAkB,CAAC,EAAE,QAAO;AAAK,YAAI,IAAE,KAAK,IAAI,CAAC,GAAE,IAAE,KAAK,UAAU,CAAC;AAAE,YAAG,EAAE,UAAQ,EAAE,MAAK,kBAAkB,EAAE,CAAC,GAAE,CAAC;AAAA,iBAAU,KAAK,WAAW,cAAe,GAAC;AAAC,cAAIqB,IAAE,IAAE;AAAE,eAAK,8BAA8B,GAAEA,GAAE,CAAC;AAAA,QAAC,MAAM,MAAK,uBAAuB,GAAE,CAAC;AAAE,eAAO,EAAE,eAAgB;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,eAAO,IAAE,KAAK,WAAW,kBAAmB;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAEhB,GAAEY,GAAE;AAAC,YAAG,KAAK,YAAUA,GAAE,EAAE,UAAQ,EAAE,QAAO,KAAK,aAAa,GAAEA,CAAC;AAAE,YAAOA,MAAJ,EAAM,QAAOR,EAAE,gBAAgB,CAAC;AAAE,YAAIY,IAAE,KAAK,UAAUJ,CAAC;AAAE,eAAO,KAAK,uBAAuB,GAAEZ,GAAEgB,CAAC,GAAEA,EAAE,eAAgB;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,kBAAkB,KAAK,SAAS;AAAE,YAAG,GAAE;AAAC,cAAIA,IAAE8lB,GAAG,SAAS,GAAE,CAAC,CAAC,GAAEpK,IAAE1b,EAAE,SAAO;AAAE,YAAE,iBAAiBA,EAAE0b,CAAC,GAAE1b,EAAE0b,IAAE,CAAC,GAAE8B,EAAE,IAAI,GAAE,EAAE,gBAAe;AAAG,mBAAQ/d,IAAEic,IAAE,GAAEjc,KAAG,GAAEA,IAAI,GAAE,eAAeO,EAAEP,CAAC,GAAE,EAAE;AAAA,QAAC,OAAK;AAAC,cAAIkc,IAAEmK,GAAG,SAAS,GAAE,CAAC,GAAE/gB,IAAE4W,EAAE,SAAO;AAAE,YAAE,iBAAiBA,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE6B,EAAE,IAAI,GAAE,EAAE,gBAAe;AAAG,mBAAQzd,IAAE,GAAEA,KAAGgF,GAAEhF,IAAI,GAAE,eAAe4b,EAAE5b,CAAC,GAAE,EAAE;AAAA,QAAC;AAAC,UAAE;MAAgB,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,eAAW,MAAJ,KAAO,IAAE,KAAG,CAAC,KAAK,WAAW,cAAe;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,eAAO,IAAIkmB,GAAG,KAAK,iBAAgB,KAAK,YAAW,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,YAAU,GAAE,KAAK,kBAAgB,MAAK,KAAK,aAAW;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,kBAAgB,GAAE,KAAK,aAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,GAAE,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,GAAE,CAAC,IAAE,IAAIjJ,EAAE,EAAE,CAAC,CAAC;AAAE,eAAO;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE5d;AAAA,IAAC,KAAI+mB,KAAG,WAAU;AAAC,eAAS/mB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,IAAIof,KAAG,IAAE,KAAK,WAAW,SAAQ,GAAG,EAAE,QAAO,KAAI;AAAC,gBAAI,IAAE,EAAE,KAAM,GAACxe,IAAE,EAAE,YAAW;AAAG,cAAE,IAAEA,EAAE,QAAS,KAAE,EAAE,IAAEA,EAAE,QAAS,KAAE,KAAK,oBAAoB,GAAE,EAAE,iBAAkB,GAAC,CAAC;AAAA,UAAC;AAAC,iBAAO;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd;AAAqB,cAAG6d,GAAG,UAAU,CAAC,GAAEF,EAAE,KAAG,UAAU,CAAC,aAAYX,KAAG,UAAU,CAAC,aAAY8G,GAAG,UAAQpI,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAEtF,EAAE,QAAO,EAAG,eAAc,GAAGM,IAAE,GAAEA,IAAEgF,EAAE,SAAO,GAAEhF,KAAI;AAAC,iBAAK,KAAK,KAAGgF,EAAEhF,CAAC,GAAE,KAAK,KAAK,KAAGgF,EAAEhF,IAAE,CAAC,GAAE,KAAK,KAAK,GAAG,IAAE,KAAK,KAAK,GAAG,KAAG,KAAK,KAAK;AAAU,gBAAI6b,IAAE,KAAK,IAAI,KAAK,KAAK,GAAG,GAAE,KAAK,KAAK,GAAG,CAAC;AAAE,gBAAG,EAAEA,IAAEF,EAAE,MAAI,EAAE,KAAK,KAAK,aAAY,KAAIA,EAAE,IAAE,KAAK,KAAK,GAAG,KAAGA,EAAE,IAAE,KAAK,KAAK,GAAG,KAAG0C,EAAG,MAAM,KAAK,KAAK,IAAG,KAAK,KAAK,IAAG1C,CAAC,MAAI0C,EAAG,QAAO;AAAC,kBAAIxY,IAAEnG,EAAE,SAAS+d,EAAE,IAAI;AAAE,mBAAK,KAAK,GAAG,OAAOzY,EAAEhF,CAAC,CAAC,MAAI6F,IAAEnG,EAAE,SAAS+d,EAAE,KAAK;AAAG,kBAAI3B,IAAE,IAAIuK,GAAG,KAAK,MAAKxgB,CAAC;AAAE,cAAA+V,EAAE,IAAIE,CAAC;AAAA,YAAC;AAAA,UAAC;AAAA,mBAASgC,GAAG,UAAU,CAAC,GAAEF,EAAE,KAAG,UAAU,CAAC,aAAYX,KAAGa,GAAG,UAAU,CAAC,GAAEF,EAAE,EAAE,UAAQ1e,IAAE,UAAU,CAAC,GAAEH,IAAE,UAAU,CAAC,GAAED,IAAE,UAAU,CAAC,GAAEiD,IAAEhD,EAAE,YAAWgD,EAAE,QAAO,KAAI;AAAC,gBAAInD,KAAEmD,EAAE,KAAM;AAAC,YAAAnD,GAAE,eAAa,KAAK,oBAAoBM,GAAEN,IAAEE,CAAC;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,oBAAoB,CAAC;AAAE,eAAW,EAAE,KAAM,MAAZ,IAAa,IAAE0lB,GAAG,IAAI,CAAC,EAAE;AAAA,MAAU,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,aAAW,MAAK,KAAK,OAAK,IAAIe;AAAG,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,aAAW;AAAA,MAAC,EAAC,CAAC,CAAC,GAAElmB;AAAA,IAAC,EAAC,GAAGgnB,KAAG,WAAU;AAAC,eAAShnB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,YAAG,KAAK,WAAW,KAAM,KAAE,EAAE,WAAW,OAAO,QAAO;AAAE,YAAG,KAAK,WAAW,KAAM,KAAE,EAAE,WAAW,KAAI,EAAG,QAAM;AAAG,YAAI,IAAE,KAAK,WAAW,iBAAiB,EAAE,UAAU;AAAE,eAAW,MAAJ,MAAY,IAAE,KAAG,EAAE,WAAW,iBAAiB,KAAK,UAAU,OAAvD,IAA0D,IAAE,KAAK,WAAW,UAAU,EAAE,UAAU;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,GAAG,UAAU,EAAE,EAAE;AAAE,eAAW,MAAJ,IAAM,IAAE,EAAE,GAAG,UAAU,EAAE,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,WAAW;MAAU,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC4B,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,aAAW,MAAK,KAAK,aAAW;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,aAAW,IAAIskB,GAAG,CAAC,GAAE,KAAK,aAAW;AAAA,MAAC,EAAC,CAAC,CAAC,GAAElmB;AAAA,IAAC,EAAC;AAAG,IAAA+mB,GAAG,eAAaC;AAAG,QAAIC,KAAG,SAASjnB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,YAAItc;AAAE,eAAOR,EAAE,MAAK8c,CAAC,GAAEtc,IAAEY,EAAE,KAAK,IAAI,GAAE0b,EAAE,aAAa,MAAM3b,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAE0c,GAAE,MAAK,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,QAAA1Y,EAAE,aAAa,KAAK,MAAK,4DAA4D;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE0Y;AAAA,IAAC,EAAE1Y,CAAC,GAAEsjB,KAAG,WAAU;AAAC,eAASlnB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,IAAE,KAAK;AAAE,YAAGqd,EAAE,MAAM,CAAC,KAAGA,EAAE,WAAW,CAAC,EAAE,OAAM,IAAI4J;AAAG,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,IAAE,KAAK;AAAE,YAAG5J,EAAE,MAAM,CAAC,KAAGA,EAAE,WAAW,CAAC,EAAE,OAAM,IAAI4J;AAAG,eAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAI,IAAE,IAAIrJ;AAAE,eAAO,EAAE,IAAE,KAAK,KAAM,GAAC,EAAE,IAAE,KAAK,QAAO;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,IAAE,MAAK,KAAK,IAAE,MAAK,KAAK,IAAE,MAAS,UAAU,WAAd,EAAqB,MAAK,IAAE,GAAE,KAAK,IAAE,GAAE,KAAK,IAAE;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,IAAE,EAAE,GAAE,KAAK,IAAE,EAAE,GAAE,KAAK,IAAE;AAAA,QAAC,WAAa,UAAU,WAAd;AAAsB,cAAa,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAIhe,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC;AAAE,iBAAK,IAAEZ,GAAE,KAAK,IAAEY,GAAE,KAAK,IAAE;AAAA,UAAC,WAAS,UAAU,CAAC,aAAYR,KAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,gBAAIY,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAK,IAAEA,EAAE,IAAE,EAAE,IAAE,EAAE,IAAEA,EAAE,GAAE,KAAK,IAAE,EAAE,IAAEA,EAAE,IAAEA,EAAE,IAAE,EAAE,GAAE,KAAK,IAAEA,EAAE,IAAE,EAAE,IAAE,EAAE,IAAEA,EAAE;AAAA,UAAC,WAAS,UAAU,CAAC,aAAYgd,KAAG,UAAU,CAAC,aAAYA,GAAE;AAAC,gBAAIvd,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,iBAAK,IAAElc,EAAE,IAAEkc,EAAE,GAAE,KAAK,IAAEA,EAAE,IAAElc,EAAE,GAAE,KAAK,IAAEA,EAAE,IAAEkc,EAAE,IAAEA,EAAE,IAAElc,EAAE;AAAA,UAAC;AAAA,mBAAc,UAAU,WAAd,GAAqB;AAAC,cAAIsF,IAAE,UAAU,CAAC,GAAEhF,IAAE,UAAU,CAAC,GAAE6b,IAAE,UAAU,CAAC;AAAE,eAAK,IAAE7W,GAAE,KAAK,IAAEhF,GAAE,KAAK,IAAE6b;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIhW,IAAE,UAAU,CAAC,GAAEiW,IAAE,UAAU,CAAC,GAAE5c,IAAE,UAAU,CAAC,GAAEH,IAAE,UAAU,CAAC,GAAED,IAAE+G,EAAE,IAAEiW,EAAE,GAAE/Z,IAAE+Z,EAAE,IAAEjW,EAAE,GAAEjH,IAAEiH,EAAE,IAAEiW,EAAE,IAAEA,EAAE,IAAEjW,EAAE,GAAE5C,KAAE/D,EAAE,IAAEH,EAAE,GAAEgd,KAAEhd,EAAE,IAAEG,EAAE,GAAEgW,KAAEhW,EAAE,IAAEH,EAAE,IAAEA,EAAE,IAAEG,EAAE;AAAE,eAAK,IAAE6C,IAAEmT,KAAE6G,KAAEnd,GAAE,KAAK,IAAEqE,KAAErE,IAAEE,IAAEoW,IAAE,KAAK,IAAEpW,IAAEid,KAAE9Y,KAAElB;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE1C;AAAA,IAAC,KAAImnB,KAAG,WAAU;AAAC,eAASnnB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAOA,EAAE,KAAK,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAOA,EAAE,WAAW,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,YAAU,MAAP,KAAS,OAAM,IAAI0c,EAAE,yBAAyB;AAAE,eAAO1c,EAAE,aAAa,GAAE,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,eAAOA,EAAE,kBAAkB,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAOA,EAAE,QAAQ,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAOA,EAAE,aAAa,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAOA,EAAE,OAAO,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAOA,EAAE,SAAS,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAOA,EAAE,SAAS,KAAK,IAAG,KAAK,IAAG,KAAK,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,KAAG,MAAK,KAAK,KAAG,MAAK,KAAK,KAAG;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,KAAG,GAAE,KAAK,KAAG,GAAE,KAAK,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,eAAO,KAAK,MAAM,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,iBAAQ,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI,EAAE,IAAE,EAAE,MAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,eAAO,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAIY,IAAE,EAAE,GAAE0b,IAAE,EAAE,GAAEjc,IAAE,EAAE,IAAEO,GAAE2b,IAAE,EAAE,IAAE3b,GAAE+E,IAAE,EAAE,IAAE2W,GAAE3b,IAAE,EAAE,IAAE2b,GAAEE,IAAEnc,IAAEM,IAAE4b,IAAE5W,GAAEa,IAAE,EAAE,IAAE5F,GAAE6b,IAAE,EAAE,IAAEH,GAAEzc,KAAGc,IAAE6F,IAAE+V,IAAEE,KAAGD,GAAE9c,KAAG,CAACiG,IAAEa,IAAEnG,IAAEoc,KAAGD;AAAE,eAAO,EAAE,SAAO3c,KAAG,EAAE,SAAO,EAAE,KAAI,KAAIH,KAAG,EAAE,SAAO,EAAE,KAAI;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,SAAS,CAAC,GAAEkB,IAAE,EAAE,SAAS,CAAC,GAAE0b,IAAE,EAAE,SAAS,CAAC,GAAEjc,IAAE;AAAE,eAAOO,IAAEP,MAAIA,IAAEO,IAAG0b,IAAEjc,MAAIA,IAAEic,IAAGjc;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAEwe,EAAG,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAEje,IAAEie,EAAG,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAEvC,IAAEuC,EAAG,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAExe,IAAEwe,EAAG,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAEtC,IAAEsC,EAAG,YAAY,GAAEje,GAAE0b,GAAEjc,CAAC,EAAE,SAAS,CAAC,GAAEsF,IAAE,EAAE,IAAG,EAAG,IAAI/E,EAAE,KAAK,GAAED,IAAE2b,EAAE,IAAK,EAAC,IAAIjc,EAAE,IAAG,CAAE,GAAEmc,IAAEqC,EAAG,YAAYje,GAAE+E,GAAEtF,GAAEM,CAAC,GAAE6F,IAAEqY,EAAG,YAAY,GAAElZ,GAAE2W,GAAE3b,CAAC,GAAE8b,IAAEoC,EAAG,QAAQ,EAAE,CAAC,EAAE,SAASrC,EAAE,OAAOD,CAAC,CAAC,EAAE,YAAW,GAAG1c,IAAEgf,EAAG,QAAQ,EAAE,CAAC,EAAE,IAAIrY,EAAE,OAAO+V,CAAC,CAAC,EAAE,YAAW;AAAG,eAAO,IAAIqB,EAAEnB,GAAE5c,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,eAAM,CAAC,CAAC+mB,GAAG,QAAQ,GAAE,GAAE,CAAC,KAAI,CAAC,CAACA,GAAG,QAAQ,GAAE,GAAE,CAAC,KAAG,CAAC,CAACA,GAAG,QAAQ,GAAE,GAAE,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAEhnB,GAAEY,GAAE;AAAC,YAAII,IAAEJ,EAAE,GAAE,IAAEA,EAAE,GAAEH,IAAE,EAAE,IAAEO,GAAE2b,IAAE,EAAE,IAAE,GAAE5W,IAAE/F,EAAE,IAAEgB,GAAED,IAAEf,EAAE,IAAE,GAAE4c,IAAE,IAAExc,EAAE,IAAIK,GAAEkc,GAAE5W,GAAEhF,CAAC,GAAE6F,IAAExG,EAAE,IAAIuc,GAAElc,IAAEA,IAAEkc,IAAEA,GAAE5b,GAAEgF,IAAEA,IAAEhF,IAAEA,CAAC,GAAE8b,IAAEzc,EAAE,IAAIK,GAAEA,IAAEA,IAAEkc,IAAEA,GAAE5W,GAAEA,IAAEA,IAAEhF,IAAEA,CAAC;AAAE,eAAO,IAAIid,EAAEhd,IAAE4F,IAAEgW,GAAE,IAAEC,IAAED,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,IAAE,EAAE,GAAE,IAAE,EAAE,IAAE,EAAE,GAAE5b,IAAE,IAAIsmB,GAAG,EAAE,IAAE,IAAE,GAAE,EAAE,IAAE,IAAE,GAAE,CAAC,GAAE5K,IAAE,IAAI4K,GAAG,EAAE,IAAE,IAAE,IAAE,GAAE,EAAE,IAAE,IAAE,IAAE,GAAE,CAAC;AAAE,eAAO,IAAIA,GAAGtmB,GAAE0b,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,SAAS,CAAC,GAAE1b,IAAE,KAAG,IAAE,EAAE,SAAS,CAAC,IAAG0b,IAAE,EAAE,IAAE,EAAE,GAAEjc,IAAE,EAAE,IAAE,EAAE;AAAE,eAAO,IAAIud,EAAE,EAAE,IAAEhd,IAAE0b,GAAE,EAAE,IAAE1b,IAAEP,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,IAAE,EAAE,GAAEO,IAAE,EAAE,IAAE,EAAE,GAAE0b,IAAE,EAAE,KAAI,IAAG,EAAE,KAAI,GAAGjc,IAAE,EAAE,IAAE,EAAE,GAAEkc,IAAE,EAAE,IAAE,EAAE,GAAE5W,IAAE,EAAE,SAAO,EAAE,KAAI,GAAGhF,IAAEC,IAAE+E,IAAE2W,IAAEC,GAAEC,IAAEF,IAAEjc,IAAE,IAAEsF,GAAEa,IAAE,IAAE+V,IAAE3b,IAAEP,GAAEoc,IAAE9b,IAAEA,IAAE6b,IAAEA,IAAEhW,IAAEA,GAAE3G,IAAE,KAAK,KAAK4c,CAAC,IAAE;AAAE,eAAO5c;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,KAAG,EAAE,IAAE,EAAE,IAAE,EAAE,KAAG,GAAEe,KAAG,EAAE,IAAE,EAAE,IAAE,EAAE,KAAG;AAAE,eAAO,IAAIgd,EAAE,GAAEhd,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,SAAS,CAAC,GAAEA,IAAE,EAAE,SAAS,CAAC,GAAE0b,IAAE,EAAE,SAAS,CAAC,GAAEjc,IAAE,IAAEO,IAAE0b,GAAEC,KAAG,IAAE,EAAE,IAAE3b,IAAE,EAAE,IAAE0b,IAAE,EAAE,KAAGjc,GAAEsF,KAAG,IAAE,EAAE,IAAE/E,IAAE,EAAE,IAAE0b,IAAE,EAAE,KAAGjc;AAAE,eAAO,IAAIud,EAAErB,GAAE5W,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE3F;AAAA,IAAC,EAAC,GAAGonB,KAAG,WAAU;AAAC,eAASpnB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE,GAAE,GAAEY,GAAE;AAAC,YAAO,MAAJ,KAAO,EAAE,SAAOkgB,GAAG,mBAAmB,QAAO;AAAK,YAAIxE,IAAE,GAAEjc,IAAEO;AAAE,UAAE,UAAQkgB,GAAG,sBAAoB9B,EAAG,MAAM,CAAC,MAAI1C,IAAE1b,GAAEP,IAAE,GAAE,IAAE+d,EAAE,SAAS,CAAC;AAAG,YAAI7B,IAAE,KAAK,cAAc,aAAa,GAAE,GAAE,CAAC;AAAE,aAAK,SAASA,GAAED,GAAEjc,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,YAAY,GAAE,GAAE+d,EAAE,MAAKL,EAAE,UAASA,EAAE,QAAQ,GAAE,KAAK,YAAY,GAAE,GAAEK,EAAE,OAAML,EAAE,UAASA,EAAE,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,YAAG,KAAK,aAAW,EAAE,QAAO;AAAK,YAAI,IAAE,EAAE,eAAgB,GAAC,IAAE,KAAK,cAAc,aAAa,GAAE,KAAK,SAAS;AAAE,aAAK,SAAS,GAAEA,EAAE,UAASA,EAAE,QAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,WAAU,IAAEK,EAAE;AAAK,aAAK,YAAU,MAAI,IAAE,CAAC,KAAK,WAAU,IAAEA,EAAE;AAAO,YAAI,IAAE,EAAE,gBAAiB,GAACxd,IAAEwgB,GAAG,qBAAqB,EAAE,eAAc,CAAE;AAA6E,YAAxE,KAAK,YAAU,KAAG,KAAK,mBAAmB,GAAE,KAAK,SAAS,KAAiB,KAAK,aAAW,KAAGxgB,EAAE,SAAO,EAAE,QAAO;AAAK,aAAK,YAAYA,GAAE,GAAE,GAAEmd,EAAE,UAASA,EAAE,QAAQ;AAAE,iBAAQzB,IAAE,GAAEA,IAAE,EAAE,mBAAkB,GAAGA,KAAI;AAAC,cAAIjc,IAAE,EAAE,iBAAiBic,CAAC,GAAEC,IAAE6E,GAAG,qBAAqB/gB,EAAE,eAAgB,CAAA;AAAE,eAAK,YAAU,KAAG,KAAK,mBAAmBA,GAAE,CAAC,KAAK,SAAS,KAAG,KAAK,YAAYkc,GAAE,GAAE6B,EAAE,SAAS,CAAC,GAAEL,EAAE,UAASA,EAAE,QAAQ;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,IAAIoJ,GAAG,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,CAAC,CAAC,GAAE,IAAE,EAAE;AAAW,eAAO1H,GAAG,eAAe,GAAE,EAAE,IAAG,EAAE,EAAE,IAAE,KAAK,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,YAAG,KAAK,cAAc,kBAAkB,KAAK,SAAS,EAAE,QAAO;AAAK,YAAI,IAAE2B,GAAG,qBAAqB,EAAE,eAAc,CAAE;AAAE,YAAGA,GAAG,OAAO,CAAC,KAAG,CAAC,KAAK,cAAc,oBAAqB,EAAC,cAAa,EAAG,MAAK,iBAAiB,GAAE,KAAK,SAAS;AAAA,aAAM;AAAC,cAAI,IAAE,KAAK,cAAc,aAAa,GAAE,KAAK,SAAS;AAAE,eAAK,SAAS,GAAErD,EAAE,UAASA,EAAE,QAAQ;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAU,MAAP,QAAU,EAAE,SAAO,EAAE,QAAO;AAAK,YAAI,IAAE,IAAI+H,GAAG,GAAE,IAAInC,GAAG,GAAE5F,EAAE,UAAS,GAAE,CAAC,CAAC;AAAE,aAAK,WAAW,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,KAAK,UAAU,GAAE,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,YAAG,EAAE,QAAS,EAAC,QAAO;AAAK,YAAG,aAAayC,GAAG,MAAK,WAAW,CAAC;AAAA,iBAAU,aAAaN,GAAG,MAAK,cAAc,CAAC;AAAA,iBAAU,aAAaE,GAAG,MAAK,SAAS,CAAC;AAAA,iBAAU,aAAaS,GAAG,MAAK,cAAc,CAAC;AAAA,iBAAU,aAAakB,GAAG,MAAK,cAAc,CAAC;AAAA,iBAAU,aAAaL,GAAG,MAAK,cAAc,CAAC;AAAA,aAAM;AAAC,cAAG,EAAE,aAAad,IAAI,OAAM,IAAI3C,GAAE,EAAE,iBAAiB;AAAE,eAAK,cAAc,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,eAAgB;AAAC,YAAG,EAAE,SAAO,EAAE,QAAO,IAAE;AAAE,YAAO,EAAE,WAAN,EAAa,QAAO,KAAK,2BAA2B,GAAE,CAAC;AAAE,YAAI,IAAE,EAAE,oBAAqB,GAACrd,IAAE,KAAK,IAAI,EAAE,UAAS,GAAG,EAAE,SAAU,CAAA;AAAE,eAAO,IAAE,KAAG,IAAE,KAAK,IAAI,CAAC,IAAEA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,iBAAgB,GAAG,KAAI;AAAC,cAAI,IAAE,EAAE,aAAa,CAAC;AAAE,eAAK,IAAI,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,aAAW,MAAK,KAAK,YAAU,MAAK,KAAK,gBAAc,MAAK,KAAK,aAAW,IAAIwe;AAAG,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,aAAW,GAAE,KAAK,YAAU,GAAE,KAAK,gBAAc;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEpf;AAAA,IAAC,KAAIqnB,KAAG,WAAU;AAAC,eAASrnB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAA,QAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,GAACsnB,KAAG,WAAU;AAAC,eAAStnB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAG,KAAK,SAAS,QAAO,KAAK,WAAS,IAAGA,EAAE,SAAS,KAAK,OAAO,KAAG,KAAK,UAAS,KAAK;AAAQ,YAAU,KAAK,2BAAZ,MAAmC;AAAC,cAAG,KAAK,uBAAuB,QAAS,EAAC,QAAO,KAAK,uBAAuB,KAAI;AAAG,eAAK,yBAAuB;AAAA,QAAI;AAAC,YAAG,KAAK,UAAQ,KAAK,KAAK,OAAM,IAAIxB;AAAE,YAAI,IAAE,KAAK,QAAQ,aAAa,KAAK,QAAQ;AAAE,eAAO,aAAaoiB,MAAI,KAAK,yBAAuB,IAAI5gB,EAAE,CAAC,GAAE,KAAK,uBAAuB,UAAQ;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,cAAM,IAAIie,GAAE,KAAK,SAAQ,EAAG,QAAO,CAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAG,KAAK,SAAS,QAAM;AAAG,YAAU,KAAK,2BAAZ,MAAmC;AAAC,cAAG,KAAK,uBAAuB,UAAU,QAAM;AAAG,eAAK,yBAAuB;AAAA,QAAI;AAAC,eAAM,EAAE,KAAK,UAAQ,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC2H,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,UAAQ,MAAK,KAAK,WAAS,MAAK,KAAK,OAAK,MAAK,KAAK,SAAO,MAAK,KAAK,yBAAuB;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,UAAQ,GAAE,KAAK,WAAS,IAAG,KAAK,SAAO,GAAE,KAAK,OAAK,EAAE;MAAkB,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAM,EAAE,aAAahF;AAAA,MAAG,EAAC,CAAC,CAAC,GAAE5gB;AAAA,IAAC,EAAC,GAAGunB,KAAG,WAAU;AAAC,eAASvnB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,eAAOA,EAAE,OAAO,GAAE,KAAK,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACqnB,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,QAAM;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,QAAM;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAEznB,GAAE;AAAC,YAAGA,EAAE,QAAS,EAAC,QAAOme,EAAE;AAAS,YAAIvd,IAAEZ,EAAE,gBAAiB,GAACgB,IAAEZ,EAAE,kBAAkB,GAAEQ,CAAC;AAAE,YAAGI,MAAImd,EAAE,SAAS,QAAOnd;AAAE,iBAAQ,IAAE,GAAE,IAAEhB,EAAE,sBAAqB,KAAI;AAAC,cAAIS,IAAET,EAAE,iBAAiB,CAAC,GAAE2c,IAAEvc,EAAE,kBAAkB,GAAEK,CAAC;AAAE,cAAGkc,MAAIwB,EAAE,SAAS,QAAOA,EAAE;AAAS,cAAGxB,MAAIwB,EAAE,SAAS,QAAOA,EAAE;AAAA,QAAQ;AAAC,eAAOA,EAAE;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,EAAE,sBAAsB,WAAW,CAAC,IAAE0F,GAAG,aAAa,GAAE,EAAE,gBAAgB,IAAE1F,EAAE;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAEne,GAAE;AAAC,eAAOme,EAAE,aAAW/d,EAAE,qBAAqB,GAAEJ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAEA,GAAE;AAAC,YAAGA,aAAa4gB,GAAG,QAAOxgB,EAAE,qBAAqB,GAAEJ,CAAC;AAAE,YAAGA,aAAaghB,GAAG,UAAQpgB,IAAE,IAAI8mB,GAAG1nB,CAAC,GAAEY,EAAE,aAAW;AAAC,cAAII,IAAEJ,EAAE,KAAM;AAAC,cAAGI,MAAIhB,GAAE;AAAC,gBAAI,IAAEI,EAAE,iBAAiB,GAAEY,CAAC;AAAE,gBAAG,MAAImd,EAAE,SAAS,QAAO;AAAA,UAAC;AAAA,QAAC;AAAC,eAAOA,EAAE;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAEne,GAAE;AAAC,eAAOme,EAAE,aAAW/d,EAAE,OAAO,GAAEJ,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAEA,GAAE;AAAC,eAAOA,EAAE,QAAO,IAAGme,EAAE,WAASne,EAAE,oBAAqB,EAAC,WAAW,CAAC,IAAEI,EAAE,iBAAiB,GAAEJ,CAAC,IAAEme,EAAE;AAAA,MAAQ,EAAC,CAAC,CAAC,GAAE/d;AAAA,IAAC,EAAG,GAACwnB,KAAG,WAAU;AAAC,eAASxnB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,aAAK,SAAU;AAAC,YAAI,IAAE,KAAK,UAAU,QAAQ,CAAC,GAAE,IAAE,IAAE;AAAE,eAAW,MAAJ,MAAQ,IAAE,KAAK,UAAU,SAAO,IAAG,KAAK,UAAU,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE+d,EAAE,MAAK,IAAE,KAAK,SAAU,GAAC,EAAE,aAAW;AAAC,cAAI,IAAE,EAAE,KAAI,EAAG,SAAQ;AAAG,YAAE,OAAO,CAAC,KAAG,EAAE,YAAY,GAAEK,EAAE,IAAI,MAAIL,EAAE,SAAO,IAAE,EAAE,YAAY,GAAEK,EAAE,IAAI;AAAA,QAAE;AAAC,YAAG,MAAIL,EAAE,KAAK,QAAO;AAAK,iBAAQnd,IAAE,GAAE0b,IAAE,KAAK,SAAQ,GAAGA,EAAE,QAAS,KAAE;AAAC,cAAIjc,IAAEic,EAAE,QAAOC,IAAElc,EAAE,SAAU;AAAC,cAAGkc,EAAE,YAAY,GAAE6B,EAAE,EAAE,MAAIL,EAAE,QAAMxB,EAAE,YAAY,GAAE6B,EAAE,IAAGxd,CAAC,GAAE2b,EAAE,OAAO,CAAC,GAAE;AAAC,gBAAI5W,IAAE4W,EAAE,YAAY,GAAE6B,EAAE,IAAI,GAAEzd,IAAE4b,EAAE,YAAY,GAAE6B,EAAE,KAAK;AAAE,gBAAGzd,MAAIod,EAAE,MAAK;AAAC,kBAAGpd,MAAIC,EAAE,OAAM,IAAIse,GAAG,0BAAyB7e,EAAE,cAAa,CAAE;AAAE,cAAAsF,MAAIoY,EAAE,QAAMP,GAAE,qBAAqB,gCAA8Bnd,EAAE,cAAa,IAAG,GAAG,GAAEO,IAAE+E;AAAA,YAAC,MAAM,CAAA6X,GAAE,OAAOjB,EAAE,YAAY,GAAE6B,EAAE,IAAI,MAAIL,EAAE,MAAK,wBAAwB,GAAExB,EAAE,YAAY,GAAE6B,EAAE,OAAMxd,CAAC,GAAE2b,EAAE,YAAY,GAAE6B,EAAE,MAAKxd,CAAC;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,SAAU;AAAC,eAAO,EAAE,QAAO,IAAG,EAAE,KAAM,EAAC,cAAa,IAAG;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,QAAA2e,GAAG,IAAI,QAAQ,oBAAkB,KAAK,eAAe;AAAE,iBAAQ,IAAE,KAAK,SAAQ,GAAG,EAAE,QAAO;AAAK,YAAE,KAAI,EAAG,MAAM,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,qBAAqB,EAAE,oBAAqB,CAAA,GAAE,KAAK,0BAA0B,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,SAAU;AAAC,YAAG,EAAE,KAAM,KAAE,EAAE,QAAM;AAAG,YAAI,IAAE,EAAE,KAAI,IAAG,GAAE,IAAE,EAAE,IAAI,CAAC,EAAE,SAAU,EAAC,YAAY,GAAEnB,EAAE,IAAI;AAAE,QAAAZ,GAAE,OAAO,MAAIO,EAAE,MAAK,4BAA4B;AAAE,iBAAQnd,IAAE,GAAE0b,IAAE,KAAK,SAAQ,GAAGA,EAAE,QAAO,KAAI;AAAC,cAAIjc,IAAEic,EAAE,OAAO,SAAU;AAAC,UAAAkB,GAAE,OAAOnd,EAAE,OAAO,CAAC,GAAE,qBAAqB;AAAE,cAAIkc,IAAElc,EAAE,YAAY,GAAE+d,EAAE,IAAI,GAAEzY,IAAEtF,EAAE,YAAY,GAAE+d,EAAE,KAAK;AAAoB,cAAf7B,MAAI5W,KAAcA,MAAI/E,EAAE,QAAM;AAAG,UAAAA,IAAE2b;AAAA,QAAC;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,aAAK,SAAU;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,UAAU,QAAO;AAAK,cAAG,KAAK,UAAU,IAAI,CAAC,MAAI,EAAE,QAAO;AAAE,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,SAAU,EAAC,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAc,KAAK,cAAZ,SAAwB,KAAK,YAAU,IAAI6C,EAAG,KAAK,SAAS,QAAQ,IAAG,KAAK;AAAA,MAAS,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,eAAO,KAAK,kBAAkB,CAAC,MAAIrB,EAAE,SAAO,KAAK,kBAAkB,CAAC,IAAEwJ,GAAG,OAAO,GAAE,EAAE,CAAC,EAAE,YAAa,CAAA,IAAG,KAAK,kBAAkB,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAI,IAAE,IAAI7I;AAAG,UAAE,OAAO,oBAAkB,KAAK,cAAa,CAAE,GAAE,EAAE,OAAO;AAAA,CAAI;AAAE,iBAAQ,IAAE,KAAK,SAAU,GAAC,EAAE,QAAS,KAAE;AAAC,cAAI,IAAE,EAAE,KAAI;AAAG,YAAE,OAAO,CAAC,GAAE,EAAE,OAAO;AAAA,CAAI;AAAA,QAAC;AAAC,eAAO,EAAE,SAAU;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,KAAK,YAAW,EAAE,QAAO;AAAK,YAAE,KAAM,EAAC,aAAa,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,aAAK,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,GAAE,KAAK,oBAAoB,CAAC,GAAE,KAAK,oBAAoB,CAAC;AAAE,iBAAQ,IAAE,CAAC,IAAG,EAAE,GAAE,IAAE,KAAK,SAAU,GAAC,EAAE,YAAW,UAAQ,IAAE,EAAE,KAAI,EAAG,SAAQ,GAAG9d,IAAE,GAAEA,IAAE,GAAEA,IAAI,GAAE,OAAOA,CAAC,KAAG,EAAE,YAAYA,CAAC,MAAImd,EAAE,aAAW,EAAEnd,CAAC,IAAE;AAAI,iBAAQ0b,IAAE,KAAK,SAAU,GAACA,EAAE,YAAW,UAAQjc,IAAEic,EAAE,KAAI,GAAGC,IAAElc,EAAE,YAAWsF,IAAE,GAAEA,IAAE,GAAEA,IAAI,KAAG4W,EAAE,UAAU5W,CAAC,GAAE;AAAC,cAAIhF,IAAEod,EAAE;AAAK,cAAG,EAAEpY,CAAC,EAAE,CAAAhF,IAAEod,EAAE;AAAA,eAAa;AAAC,gBAAIvB,IAAEnc,EAAE;AAAgB,YAAAM,IAAE,KAAK,YAAYgF,GAAE6W,GAAE,CAAC;AAAA,UAAC;AAAC,UAAAD,EAAE,sBAAsB5W,GAAEhF,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAO,KAAK,SAAS;MAAM,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE,GAAE;AAAC,aAAK,SAAS,IAAI,GAAE,CAAC,GAAE,KAAK,YAAU;AAAA,MAAI,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,WAAS,IAAI,MAAG,KAAK,YAAU,MAAK,KAAK,oBAAkB,CAACod,EAAE,MAAKA,EAAE,IAAI;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE/d;AAAA,IAAC,EAAG,GAACynB,KAAG,SAASznB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,aAAK,mBAAkB;AAAG,iBAAQb,IAAE,MAAKQ,IAAE,MAAKJ,IAAE,KAAK,wBAAuBY,IAAE,GAAEA,IAAE,KAAK,oBAAoB,KAAI,GAAGA,KAAI;AAAC,cAAII,IAAE,KAAK,oBAAoB,IAAIJ,CAAC,GAAE8b,IAAE1b,EAAE,OAAM;AAAG,cAAGA,EAAE,SAAQ,EAAG,OAAM,EAAG,SAAcpB,MAAP,QAAUoB,EAAE,WAAU,MAAKpB,IAAEoB,IAAGhB;YAAG,KAAK,KAAK;AAAuB,kBAAG,CAAC0c,EAAE,WAAY,EAAC;AAAS,cAAAtc,IAAEsc,GAAE1c,IAAE,KAAK;AAAqB;AAAA,YAAM,KAAK,KAAK;AAAqB,kBAAG,CAACgB,EAAE,WAAU,EAAG;AAAS,cAAAZ,EAAE,QAAQY,CAAC,GAAEhB,IAAE,KAAK;AAAA,UAAsB;AAAA,QAAC;AAAC,YAAGA,MAAI,KAAK,sBAAqB;AAAC,cAAUJ,MAAP,KAAS,OAAM,IAAI0f,GAAG,6BAA4B,KAAK,cAAa,CAAE;AAAE,UAAA1B,GAAE,OAAOhe,EAAE,WAAY,GAAC,sCAAsC,GAAEQ,EAAE,QAAQR,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASA,GAAE;AAAC,YAAIQ,IAAER;AAAE,aAAK,cAAcQ,GAAEA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAIR,IAAE,KAAK,SAAQ,GAAGQ,IAAER,EAAE;AAAO,YAAGQ,IAAE,EAAE,QAAO;AAAK,YAAIJ,IAAEJ,EAAE,IAAI,CAAC;AAAE,YAAOQ,MAAJ,EAAM,QAAOJ;AAAE,YAAIY,IAAEhB,EAAE,IAAIQ,IAAE,CAAC,GAAEY,IAAEhB,EAAE,YAAW,GAAG0c,IAAE9b,EAAE;AAAc,eAAOgkB,GAAG,WAAW5jB,CAAC,KAAG4jB,GAAG,WAAWlI,CAAC,IAAE1c,IAAE4kB,GAAG,WAAW5jB,CAAC,KAAG4jB,GAAG,WAAWlI,CAAC,IAAM1c,EAAE,MAAK,MAAX,IAAcA,IAAMY,EAAE,MAAO,MAAb,IAAcA,KAAGgd,GAAE,qBAAqB,6CAA6C,GAAE,QAAMhd;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAShB,GAAE;AAAC,QAAA+f,GAAG,IAAI,QAAQ,uBAAqB,KAAK,cAAa,CAAE;AAAE,iBAAQvf,IAAE,KAAK,SAAQ,GAAGA,EAAE,QAAS,KAAE;AAAC,cAAIJ,IAAEI,EAAE;AAAO,UAAAR,EAAE,MAAM,MAAM,GAAEI,EAAE,MAAMJ,CAAC,GAAEA,EAAE,WAAUA,EAAE,MAAM,KAAK,GAAEI,EAAE,OAAM,EAAG,MAAMJ,CAAC,GAAEA,EAAE,QAAO;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAU,KAAK,wBAAZ,KAAgC,QAAO,KAAK;AAAoB,aAAK,sBAAoB,IAAI4f;AAAG,iBAAQ5f,IAAE,KAAK,YAAWA,EAAE,QAAO,KAAI;AAAC,cAAIQ,IAAER,EAAE,KAAM;AAAC,WAACQ,EAAE,WAAU,KAAIA,EAAE,OAAM,EAAG,WAAU,MAAK,KAAK,oBAAoB,IAAIA,CAAC;AAAA,QAAC;AAAC,eAAO,KAAK;AAAA,MAAmB,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASR,GAAE;AAAC,iBAAQQ,IAAE,KAAK,YAAWA,EAAE,QAAO,KAAI;AAAC,cAAIJ,IAAEI,EAAE,KAAM,EAAC,SAAU;AAAC,UAAAJ,EAAE,sBAAsB,GAAEJ,EAAE,YAAY,CAAC,CAAC,GAAEI,EAAE,sBAAsB,GAAEJ,EAAE,YAAY,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,aAAK;AAAW,iBAAQA,IAAE,MAAKQ,IAAE,MAAKJ,IAAE,KAAK,UAAU,SAAO,GAAEA,KAAG,GAAEA,KAAI;AAAC,cAAIY,IAAE,KAAK,UAAU,IAAIZ,CAAC,GAAEgB,IAAEJ,EAAE,OAAQ;AAAC,UAAOR,MAAP,SAAWA,IAAEY,IAAUpB,MAAP,QAAUoB,EAAE,QAAQpB,CAAC,GAAEA,IAAEgB;AAAA,QAAC;AAAC,QAAAR,EAAE,QAAQR,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIA,IAAE,UAAU,CAAC,GAAEQ,IAAE,KAAK,UAAUR,CAAC,GAAEI,IAAEJ,EAAE,SAAS4e,EAAE,IAAI,GAAE5d,IAAEhB,EAAE,SAAS4e,EAAE,KAAK,GAAExd,IAAE,KAAK,cAAcZ,IAAE,GAAE,KAAK,UAAU,KAAI,GAAGJ,CAAC,GAAE0c,IAAE,KAAK,cAAc,GAAEtc,GAAEY,CAAC;AAAE,cAAG0b,MAAI9b,EAAE,OAAM,IAAI0e,GAAG,uBAAqB1f,EAAE,cAAa,CAAE;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,mBAAQa,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAEgF,GAAE6W,IAAEnc,GAAEmc,IAAED,GAAEC,KAAI;AAAC,gBAAIhW,IAAE,KAAK,UAAU,IAAIgW,CAAC;AAAE,YAAAhW,EAAE,cAAc4X,EAAE,OAAMzd,CAAC,GAAEA,IAAE6F,EAAE,SAAS4X,EAAE,IAAI;AAAA,UAAC;AAAC,iBAAOzd;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,iBAAQnB,IAAE,KAAK,SAAQ,GAAGA,EAAE,aAAW;AAAC,cAAIQ,IAAER,EAAE,KAAM;AAAC,UAAAQ,EAAE,SAAU,EAAC,MAAMA,EAAE,OAAM,EAAG,SAAU,CAAA;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASR,GAAE;AAAC,iBAAQQ,IAAE,MAAKJ,IAAE,MAAKY,IAAE,KAAK,wBAAuBI,IAAE,KAAK,oBAAoB,SAAO,GAAEA,KAAG,GAAEA,KAAI;AAAC,cAAI0b,IAAE,KAAK,oBAAoB,IAAI1b,CAAC,GAAEP,IAAEic,EAAE;AAAS,kBAActc,MAAP,QAAUsc,EAAE,kBAAgB9c,MAAIQ,IAAEsc,IAAG9b,GAAC;AAAA,YAAE,KAAK,KAAK;AAAuB,kBAAGH,EAAE,YAAa,MAAGb,EAAE;AAAS,cAAAI,IAAES,GAAEG,IAAE,KAAK;AAAqB;AAAA,YAAM,KAAK,KAAK;AAAqB,kBAAG8b,EAAE,kBAAgB9c,EAAE;AAAS,cAAAI,EAAE,WAAW0c,CAAC,GAAE9b,IAAE,KAAK;AAAA,UAAsB;AAAA,QAAC;AAAC,QAAAA,MAAI,KAAK,yBAAuBgd,GAAE,OAAcxd,MAAP,MAAS,uCAAuC,GAAEwd,GAAE,OAAOxd,EAAE,YAAW,MAAKR,GAAE,sCAAsC,GAAEI,EAAE,WAAWI,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQR,IAAE,GAAEQ,IAAE,KAAK,YAAWA,EAAE,QAAO,KAAI;AAAC,gBAAIJ,IAAEI,EAAE,KAAM;AAAC,YAAAJ,EAAE,WAAY,KAAEJ;AAAA,UAAG;AAAC,iBAAOA;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQgB,IAAE,UAAU,CAAC,GAAEI,IAAE,GAAE0b,IAAE,KAAK,SAAU,GAACA,EAAE,QAAS,KAAE;AAAC,gBAAIjc,IAAEic,EAAE,KAAI;AAAG,YAAAjc,EAAE,YAAW,MAAKG,KAAGI;AAAA,UAAG;AAAC,iBAAOA;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,iBAAQpB,IAAEue,EAAE,MAAK/d,IAAE,KAAK,SAAU,GAACA,EAAE,QAAS,KAAE;AAAC,cAAIJ,IAAEI,EAAE,KAAI,GAAGQ,IAAEZ,EAAE,OAAQ;AAAC,cAAG,CAACA,EAAE,WAAY,GAAC;AAAC,gBAAGA,EAAE,WAAU,GAAG;AAAC,cAAAJ,IAAEue,EAAE;AAAS;AAAA,YAAK;AAAC,gBAAGvd,EAAE,WAAY,GAAC;AAAC,cAAAhB,IAAEue,EAAE;AAAS;AAAA,YAAK;AAAA,UAAC;AAAA,QAAC;AAAC,YAAGve,MAAIue,EAAE,KAAK,QAAO;AAAK,iBAAQnd,IAAEpB,GAAE8c,IAAE,KAAK,SAAQ,GAAGA,EAAE,QAAS,KAAE;AAAC,cAAIjc,IAAEic,EAAE,KAAM,GAACC,IAAElc,EAAE,OAAQ;AAAC,UAAAA,EAAE,eAAaA,EAAE,QAAO,EAAG,WAAWO,MAAImd,EAAE,QAAQ,KAAG1d,EAAE,WAAY,MAAGO,IAAEmd,EAAE,WAAUxB,EAAE,WAAU,MAAK3b,IAAEmd,EAAE;AAAA,QAAU;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASve,GAAE;AAAC,QAAAid,EAAE7b,EAAEP,EAAE,SAAS,GAAE,oBAAmB,IAAI,EAAE,KAAK,MAAKb,CAAC,GAAE,KAAK,SAAO,IAAImkB,GAAG5F,EAAE,IAAI;AAAE,iBAAQ/d,IAAE,KAAK,SAAU,GAACA,EAAE,QAAO,IAAI,UAAQJ,IAAEI,EAAE,KAAI,EAAG,QAAS,EAAC,SAAU,GAACQ,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,cAAI8b,IAAE1c,EAAE,YAAYY,CAAC;AAAE,UAAA8b,MAAIyB,EAAE,YAAUzB,MAAIyB,EAAE,YAAU,KAAK,OAAO,YAAYvd,GAAEud,EAAE,QAAQ;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,sBAAoB,MAAK,KAAK,SAAO,MAAK,KAAK,yBAAuB,GAAE,KAAK,uBAAqB;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE1d;AAAA,IAAC,EAAEmnB,EAAE,GAAEE,KAAG,SAAS1nB,GAAE;AAAC,MAAAQ,EAAE8b,GAAEtc,CAAC;AAAE,UAAIY,IAAE4F,EAAE8V,CAAC;AAAE,eAASA,IAAG;AAAC,eAAO9c,EAAE,MAAK8c,CAAC,GAAE1b,EAAE,KAAK,IAAI;AAAA,MAAC;AAAC,aAAOhB,EAAE0c,GAAE,CAAC,EAAC,KAAI,cAAa,OAAM,SAAS9c,GAAE;AAAC,eAAO,IAAIwkB,GAAGxkB,GAAE,IAAIioB,IAAE;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEnL;AAAA,IAAC,EAAEqI,EAAE,GAAEgD,KAAG,WAAU;AAAC,eAAS3nB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAIJ,IAAE;AAAE,eAAOI,EAAE,gBAAgB,KAAK,MAAK,KAAK,cAAaJ,EAAE,MAAKA,EAAE,YAAY;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACgC,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,OAAK,MAAK,KAAK,eAAa;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,OAAK,GAAE,KAAK,eAAa5B,EAAE,YAAY,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,eAAWohB,GAAG,oBAAoB,CAAC,MAA5B;AAAA,MAA6B,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,iBAAQxgB,IAAE,IAAE,IAAE,IAAG0b,IAAE,IAAE,IAAE,IAAGjc,IAAE,IAAE,EAAE,SAAO,IAAGkc,IAAE,IAAE,EAAE,SAAO,IAAG5W,IAAE,IAAE,IAAE,EAAE,SAAO,GAAEhF,IAAE,IAAE,IAAE,EAAE,SAAO,OAAI;AAAC,cAAI6b,IAAE,EAAE7W,CAAC,EAAE,UAAU,EAAEhF,CAAC,CAAC;AAAE,cAAO6b,MAAJ,EAAM,QAAOA;AAAE,cAAIhW,KAAGb,KAAG/E,OAAKP,GAAEoc,KAAG9b,KAAG2b,OAAKC;AAAE,cAAG/V,KAAG,CAACiW,EAAE,QAAM;AAAG,cAAG,CAACjW,KAAGiW,EAAE,QAAO;AAAE,cAAGjW,KAAGiW,EAAE,QAAO;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEzc;AAAA,IAAC,EAAC,GAAG4nB,KAAG,WAAU;AAAC,eAAS5nB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,UAAE,MAAM,oBAAoB;AAAE,iBAAQ,IAAE,GAAE,IAAE,KAAK,OAAO,KAAI,GAAG,KAAI;AAAC,cAAI,IAAE,KAAK,OAAO,IAAI,CAAC;AAAE,cAAE,KAAG,EAAE,MAAM,GAAG,GAAE,EAAE,MAAM,GAAG;AAAE,mBAAQ,IAAE,EAAE,eAAgB,GAACY,IAAE,GAAEA,IAAE,EAAE,QAAOA,IAAI,CAAAA,IAAE,KAAG,EAAE,MAAM,GAAG,GAAE,EAAE,MAAM,EAAEA,CAAC,EAAE,IAAE,MAAI,EAAEA,CAAC,EAAE,CAAC;AAAE,YAAE,QAAQ,GAAG;AAAA,QAAC;AAAC,UAAE,MAAM,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,EAAE,SAAQ,GAAG,EAAE,QAAS,IAAE,MAAK,IAAI,EAAE,KAAM,CAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,OAAO,KAAM,GAAC,IAAI,KAAG,KAAK,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,QAAO;AAAE,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,OAAO,SAAU;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,OAAO,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAI+mB,GAAG,EAAE,eAAgB,CAAA;AAAE,eAAO,KAAK,QAAQ,IAAI,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,aAAK,OAAO,IAAI,CAAC;AAAE,YAAI,IAAE,IAAIA,GAAG,EAAE,eAAc,CAAE;AAAE,aAAK,QAAQ,IAAI,GAAE,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,SAAO,IAAIvI,KAAG,KAAK,UAAQ,IAAI;AAAA,MAAE,EAAC,CAAC,CAAC,GAAEpf;AAAA,IAAC,EAAC,GAAG6nB,KAAG,WAAU;AAAC,eAAS7nB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAA,MAAA,EAAE,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAA,QAAE,CAAC,CAAC,GAAEA;AAAA,IAAC,KAAI8nB,KAAG,WAAU;AAAC,eAAS9nB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,yBAAwB,OAAM,SAAS,GAAEJ,GAAEY,GAAEI,GAAE;AAAC,YAAG,MAAIJ,KAAO,KAAK,IAAI,mBAAoB,MAAjC,GAAkC;AAAC,cAAGR,EAAE,mBAAmBJ,GAAEgB,CAAC,EAAE,QAAM;AAAG,cAAG,EAAE,YAAW;AAAC,gBAAI,IAAE,EAAE,KAAI,IAAG;AAAE,gBAAOhB,MAAJ,KAAOgB,MAAI,KAAOA,MAAJ,KAAOhB,MAAI,EAAE,QAAM;AAAA,UAAE;AAAA,QAAC;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAwB,EAAC,GAAE,EAAC,KAAI,iCAAgC,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAkB,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAG,MAAI,KAAG,MAAI,EAAE,QAAO;AAAK,aAAK;AAAW,YAAIgB,IAAE,EAAE,eAAgB,EAAC,CAAC,GAAE0b,IAAE,EAAE,iBAAiB,IAAE,CAAC,GAAEjc,IAAE,EAAE,eAAc,EAAG,CAAC,GAAEkc,IAAE,EAAE,eAAc,EAAG,IAAE,CAAC;AAAE,aAAK,IAAI,oBAAoB3b,GAAE0b,GAAEjc,GAAEkc,CAAC,GAAE,KAAK,IAAI,sBAAoB,KAAK,oBAAmB,KAAK,IAAI,uBAAsB,MAAK,KAAK,4BAA2B,KAAK,eAAa,KAAI,KAAK,sBAAsB,GAAE,GAAE,GAAE,CAAC,MAAI,KAAK,mBAAiB,IAAG,EAAE,iBAAiB,KAAK,KAAI,GAAE,CAAC,GAAE,EAAE,iBAAiB,KAAK,KAAI,GAAE,CAAC,GAAE,KAAK,IAAI,eAAa,KAAK,0BAAyB,KAAK,aAAW,IAAG,KAAK,qBAAmB;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAgB,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACsL,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,mBAAiB,IAAG,KAAK,aAAW,IAAG,KAAK,qBAAmB,IAAG,KAAK,eAAa,IAAG,KAAK,2BAAyB,MAAK,KAAK,MAAI,MAAK,KAAK,sBAAoB,MAAK,KAAK,mBAAiB,GAAE,KAAK,2BAAyB,GAAE,KAAK,yBAAuB,GAAE,KAAK,WAAS;AAAE,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,MAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAAS,GAAE,GAAE;AAAC,eAAW,KAAK,IAAI,IAAE,CAAC,MAAhB;AAAA,MAAiB,EAAC,CAAC,CAAC,GAAE7nB;AAAA,IAAC,KAAI+nB,KAAG,WAAU;AAAC,eAAS/nB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,UAAE,MAAM,KAAK,KAAK,GAAE,EAAE,MAAM,cAAY,KAAK,YAAY,GAAE,EAAE,QAAQ,aAAW,KAAK,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,eAAO,KAAK,QAAQ,EAAE,cAAa,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,eAAW,KAAK,iBAAT,KAA2B,KAAK,SAAT,KAAe,KAAK,iBAAe;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,QAAM,cAAY,KAAK,eAAa,aAAW,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,eAAa,IAAE,KAAG,KAAK,eAAa,IAAE,IAAE,KAAK,OAAK,IAAE,KAAG,KAAK,OAAK,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC4B,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,QAAM,MAAK,KAAK,eAAa,MAAK,KAAK,OAAK;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,aAAK,QAAM,IAAIgc,EAAE,CAAC,GAAE,KAAK,eAAa,GAAE,KAAK,OAAK;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE5d;AAAA,IAAC,EAAC,GAAGgoB,KAAG,WAAU;AAAC,eAAShoB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,UAAE,QAAQ,gBAAgB;AAAE,iBAAQ,IAAE,KAAK,SAAQ,GAAG,EAAE,QAAO;AAAK,YAAE,KAAI,EAAG,MAAM,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,SAAS,OAAQ,EAAC,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAE;AAAC,aAAK,aAAY;AAAG,iBAAQ,IAAE,KAAK,SAAU,GAAC,IAAE,EAAE,KAAI,GAAG,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,QAAOY,IAAE,KAAK,gBAAgB,GAAE,CAAC;AAAE,YAAE,IAAIA,CAAC,GAAE,IAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,KAAK,IAAI,SAAO;AAAE,aAAK,IAAI,KAAK,KAAK,IAAI,CAAC,GAAE,GAAE,CAAC,GAAE,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,GAAE,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,eAAa,EAAE,eAAa,GAAE,IAAE,KAAK,KAAK,IAAI,EAAE,YAAY,GAAEA,IAAE,EAAE,OAAK,KAAG,CAAC,EAAE,MAAM,SAAS,CAAC;AAAE,QAAAA,KAAG;AAAI,YAAI0b,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAEjc,IAAE;AAAE,QAAAic,EAAEjc,GAAG,IAAE,IAAIud,EAAE,EAAE,KAAK;AAAE,iBAAQrB,IAAE,EAAE,eAAa,GAAEA,KAAG,EAAE,cAAaA,IAAI,CAAAD,EAAEjc,GAAG,IAAE,KAAK,KAAK,IAAIkc,CAAC;AAAE,eAAO3b,MAAI0b,EAAEjc,CAAC,IAAE,EAAE,QAAO,IAAI4nB,GAAG3L,GAAE,IAAIqH,GAAG,KAAK,KAAK,MAAM,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,IAAIoE,GAAG,GAAE,GAAE,CAAC,GAAEnnB,IAAE,KAAK,SAAS,IAAI,CAAC;AAAE,eAAcA,MAAP,OAASA,KAAG,KAAK,SAAS,IAAI,GAAE,CAAC,GAAE;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,KAAK,SAAQ,GAAG,EAAE;AAAY,cAAG,EAAE,KAAM,EAAC,MAAM,OAAO,CAAC,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,WAAS,IAAI,MAAG,KAAK,OAAK;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,OAAK;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,EAAC,GAAGkoB,KAAG,WAAU;AAAC,eAASloB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAM,CAAC,KAAK,WAAY;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,gBAAOA,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,MAAI,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,gBAAO/f,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,MAAI,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,UAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,GAAE,IAAE,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,KAAK,MAAM,IAAE,CAAC,GAAE,IAAE,IAAE;AAAE,eAAK,QAAQ,CAAC,EAAE,CAAC,IAAEA,EAAG,iBAAiB,EAAE,OAAO,CAAC,CAAC;AAAA,QAAC;AAAA,iBAAa,UAAU,WAAd,GAAqB;AAAC,cAAInf,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC;AAAE,eAAK,QAAQO,CAAC,EAAE0b,CAAC,IAAEjc;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAOL,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,UAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,GAAE,IAAE,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,KAAK,MAAM,IAAE,CAAC,GAAE,IAAE,IAAE;AAAE,eAAK,WAAW,GAAE,GAAEA,EAAG,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;AAAA,QAAC;AAAA,iBAAa,UAAU,WAAd,GAAqB;AAAC,cAAInf,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC;AAAE,eAAK,QAAQO,CAAC,EAAE0b,CAAC,IAAEjc,MAAI,KAAK,QAAQO,CAAC,EAAE0b,CAAC,IAAEjc;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,aAAG,KAAG,KAAG,KAAG,KAAK,WAAW,GAAE,GAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAOL,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAEngB,GAAE;AAAC,eAAO,IAAEA,IAAE,KAAK,UAAUA,GAAE,CAAC,KAAG,MAAImgB,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,MAAK,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,UAAQ/f,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAEne,GAAE;AAAC,eAAO,MAAImgB,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,IAAE/f,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,IAAE,MAAIgC,EAAG,KAAGngB,MAAImgB,EAAG,KAAQ,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAvC,KAA0C/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAEne,GAAE;AAAC,eAAO,MAAIA,KAAII,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,iBAAQ,IAAE,IAAIwB,GAAG,WAAW,GAAE,IAAE,GAAE,IAAE,GAAE,IAAI,UAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,GAAE,UAAU,IAAE,IAAE,GAAExB,EAAG,kBAAkB,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAAE,eAAO,EAAE,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,UAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,MAAK,QAAQ,CAAC,EAAE,CAAC,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;AAAE,eAAO,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAE,GAAE,IAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAE,GAAE,IAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAE,GAAE;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,YAAO,EAAE,WAAN,EAAa,OAAM,IAAIrD,EAAE,yBAAuB,CAAC;AAAE,iBAAQ9c,IAAE,GAAEA,IAAE,GAAEA,IAAI,UAAQY,IAAE,GAAEA,IAAE,GAAEA,IAAI,KAAG,CAACR,EAAE,QAAQ,KAAK,QAAQJ,CAAC,EAAEY,CAAC,GAAE,EAAE,OAAO,IAAEZ,IAAEY,CAAC,CAAC,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,UAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,MAAK,WAAW,GAAE,GAAE,EAAE,IAAI,GAAE,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK,QAAQud,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG,SAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAIgC,EAAG;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAEngB,GAAE;AAAC,eAAO,MAAImgB,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,IAAE/f,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,IAAE,MAAIgC,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,KAAG,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,IAAE/f,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,KAAG/d,EAAE,OAAO,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,CAAC,IAAE,MAAIgC,EAAG,KAAGngB,MAAImgB,EAAG,KAAO,KAAK,QAAQhC,EAAE,QAAQ,EAAEA,EAAE,QAAQ,MAAvC;AAAA,MAAwC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACpB,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,UAAQ,MAAS,UAAU,WAAd,EAAqB,MAAK,UAAQ,MAAM,CAAC,EAAE,KAAI,EAAG,IAAK,WAAU;AAAC,iBAAO,MAAM,CAAC;AAAA,QAAC,CAAG,GAAC,KAAK,OAAOoD,EAAG,KAAK;AAAA,iBAAc,UAAU,WAAd;AAAqB,cAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAI,IAAE,UAAU,CAAC;AAAE,YAAA/f,EAAE,aAAa,KAAK,IAAI,GAAE,KAAK,IAAI,CAAC;AAAA,UAAC,WAAS,UAAU,CAAC,aAAYA,GAAE;AAAC,gBAAIJ,IAAE,UAAU,CAAC;AAAE,YAAAI,EAAE,aAAa,KAAK,IAAI,GAAE,KAAK,QAAQ+d,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ,GAAE,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ,GAAE,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ,GAAE,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ,GAAE,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ,GAAE,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ,GAAE,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ,GAAE,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ,GAAE,KAAK,QAAQA,EAAE,QAAQ,EAAEA,EAAE,QAAQ,IAAEne,EAAE,QAAQme,EAAE,QAAQ,EAAEA,EAAE,QAAQ;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAG,OAAO,UAAU,UAAU,CAAC,CAAC,KAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEne,IAAE,UAAU,CAAC;AAAE,iBAAOA,MAAImgB,EAAG,gBAAengB,MAAImgB,EAAG,aAAW,KAAG,KAAG,MAAIA,EAAG,SAAQngB,MAAImgB,EAAG,aAAW,MAAIA,EAAG,SAAQngB,MAAImgB,EAAG,SAAO,MAAIA,EAAG,KAAIngB,MAAImgB,EAAG,SAAO,MAAIA,EAAG,KAAGngB,MAAImgB,EAAG,SAAO,MAAIA,EAAG;AAAA,QAAK;AAAC,YAAa,OAAO,UAAU,CAAC,KAA5B,YAAyC,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,cAAIvf,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE,IAAE,IAAIZ,EAAEQ,CAAC;AAAE,iBAAO,EAAE,QAAQI,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,eAAO,KAAG,KAAG,MAAImf,EAAG;AAAA,MAAI,EAAC,CAAC,CAAC,GAAE/f;AAAA,IAAC,EAAG,GAACmoB,KAAG,WAAU;AAAC,eAASnoB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE;AAAC,eAAc,MAAP,QAAc,EAAE,WAAN,IAAa,QAAM,KAAK,eAAe,KAAK,QAAM,EAAE,MAAM,GAAEuf,GAAG,UAAU,GAAE,GAAE,KAAK,OAAM,KAAK,OAAM,EAAE,MAAM,GAAE,MAAK,KAAK,SAAO,EAAE;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,YAAG,KAAG,KAAK,MAAM,OAAO,QAAO;AAAK,YAAI,IAAE,KAAK,IAAI,GAAE,IAAE,KAAK,MAAM,MAAM;AAAE,aAAK,QAAMe,GAAG,OAAO,KAAK,OAAM,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAI,IAAE,IAAI,MAAM,KAAK,KAAK,EAAE,KAAK,IAAI;AAAE,eAAOf,GAAG,UAAU,KAAK,OAAM,GAAE,GAAE,GAAE,KAAK,KAAK,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAAS,GAAE;AAAC,aAAK,eAAe,KAAK,QAAM,CAAC,GAAE,KAAK,MAAM,KAAK,KAAK,IAAE,GAAE,EAAE,KAAK;AAAA,MAAK,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,QAAM,MAAK,KAAK,QAAM,GAAM,UAAU,WAAd,EAAqB,CAAAvf,EAAE,aAAa,KAAK,MAAK,EAAE;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,QAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAA,QAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,KAAIooB,KAAG,WAAU;AAAC,eAASpoB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,GAAE,IAAE,IAAImoB,GAAG,KAAK,MAAM,EAAE,SAAO,CAAC,CAAC;AAAE,UAAE,IAAI,CAAC;AAAE,WAAE;AAAC,cAAI,IAAE,KAAK,aAAa,GAAE,CAAC;AAAE,YAAE,IAAI,CAAC,GAAE,IAAE;AAAA,QAAC,SAAO,IAAE,EAAE,SAAO;AAAG,eAAO,EAAE;MAAS,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE3D,GAAG,SAAS,EAAE,CAAC,GAAE,EAAE,IAAE,CAAC,CAAC,GAAE,IAAE,IAAE,GAAE,IAAE,EAAE,UAAYA,GAAG,SAAS,EAAE,IAAE,CAAC,GAAE,EAAE,CAAC,CAAC,MAAI;AAAQ;AAAI,eAAO,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAAS,GAAE;AAAC,YAAI5kB,IAAE,GAAEY,IAAE,IAAI4e;AAAG,QAAA5e,EAAE,IAAIZ,CAAC;AAAE,WAAE;AAAC,cAAIgB,IAAE,KAAK,aAAa,GAAEhB,CAAC;AAAE,UAAAY,EAAE,IAAII,CAAC,GAAEhB,IAAEgB;AAAA,QAAC,SAAOhB,IAAE,EAAE,SAAO;AAAG,eAAOI,EAAE,WAAWQ,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAI,MAAM,EAAE,KAAI,CAAE,EAAE,KAAK,IAAI,GAAE,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,GAAE,CAAC,IAAE,EAAE,IAAI,CAAC,EAAE;AAAW,eAAO;AAAA,MAAC,EAAC,CAAC,CAAC,GAAER;AAAA,IAAC,EAAG,GAACqoB,KAAG,WAAU;AAAC,eAASroB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,IAAI,KAAK,WAAW,CAAC,CAAC,EAAE,GAAE,IAAE,KAAK,IAAI,KAAK,WAAW,IAAE,CAAC,CAAC,EAAE;AAAE,eAAO,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,KAAK,IAAI,KAAK,WAAW,CAAC,CAAC,EAAE,GAAE,IAAE,KAAK,IAAI,KAAK,WAAW,IAAE,CAAC,CAAC,EAAE;AAAE,eAAO,IAAE,IAAE,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,0BAA0B,KAAK,WAAW,CAAC,GAAE,KAAK,WAAW,IAAE,CAAC,GAAE,GAAE,EAAE,WAAW,CAAC,GAAE,EAAE,WAAW,IAAE,CAAC,GAAE,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,UAAU,CAAC,GAAEhF,IAAE,UAAU,CAAC;AAAE,cAAG2b,IAAE1b,KAAG,KAAG+E,IAAE4W,KAAG,EAAE,QAAO5b,EAAE,iBAAiB,KAAK,GAAEC,GAAEP,EAAE,GAAEkc,CAAC,GAAE;AAAK,cAAG,CAAC,KAAK,SAAS3b,GAAE0b,GAAEjc,GAAEkc,GAAE5W,CAAC,EAAE,QAAO;AAAK,cAAI6W,IAAE,KAAK,OAAO5b,IAAE0b,KAAG,CAAC,GAAE9V,IAAE,KAAK,OAAO+V,IAAE5W,KAAG,CAAC;AAAE,UAAA/E,IAAE4b,MAAID,IAAE/V,KAAG,KAAK,0BAA0B5F,GAAE4b,GAAEnc,GAAEkc,GAAE/V,GAAE7F,CAAC,GAAE6F,IAAEb,KAAG,KAAK,0BAA0B/E,GAAE4b,GAAEnc,GAAEmG,GAAEb,GAAEhF,CAAC,IAAG6b,IAAEF,MAAIC,IAAE/V,KAAG,KAAK,0BAA0BgW,GAAEF,GAAEjc,GAAEkc,GAAE/V,GAAE7F,CAAC,GAAE6F,IAAEb,KAAG,KAAK,0BAA0B6W,GAAEF,GAAEjc,GAAEmG,GAAEb,GAAEhF,CAAC;AAAA,QAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE,GAAE,GAAEC,GAAE;AAAC,eAAOid,GAAE,WAAW,KAAK,IAAI,CAAC,GAAE,KAAK,IAAI,CAAC,GAAE,EAAE,IAAI,CAAC,GAAE,EAAE,IAAIjd,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,KAAK,WAAW,SAAO,GAAE,IAAI,UAAQ,IAAE,GAAE,IAAE,EAAE,WAAW,SAAO,GAAE,IAAI,MAAK,0BAA0B,GAAE,GAAE,GAAE,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,IAAE,MAAK,KAAK,MAAI,MAAK,KAAK,aAAW;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,IAAE,GAAE,KAAK,MAAI,EAAE,eAAc;AAAG,YAAI,IAAE,IAAIwnB;AAAG,aAAK,aAAW,EAAE,qBAAqB,KAAK,GAAG;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEpoB;AAAA,IAAC,EAAG,GAACsoB,KAAG,WAAU;AAAC,eAAStoB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,OAAO,CAAC,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,aAAK,OAAO,CAAC,EAAE,CAAC,IAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,UAAQJ,IAAE,GAAEA,IAAE,GAAEA,IAAI,KAAG,KAAK,OAAO,CAAC,EAAEA,CAAC,MAAII,EAAE,WAAW,QAAM;AAAG,iBAAM;AAAA,QAAE;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIQ,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,OAAOA,CAAC,EAAE,CAAC,MAAIR,EAAE;AAAA,QAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,OAAOA,CAAC,EAAE,CAAC,MAAIZ,EAAE;AAAA,QAAU;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,KAAG,CAAC,KAAK,OAAO,CAAC,GAAE;AAAC,cAAI,IAAE,KAAK,OAAO,CAAC,EAAE,CAAC;AAAE,eAAK,OAAO,CAAC,EAAE,CAAC,IAAE,MAAI,IAAE,KAAK,OAAO,CAAC,EAAE,CAAC,IAAG,IAAE,MAAI,IAAE;AAAG,mBAAQ,IAAE,GAAE,IAAE,GAAE,KAAI;AAAC,gBAAI,IAAE;AAAE,iBAAK,OAAO,CAAC,EAAE,CAAC,IAAE,MAAI,IAAE,IAAG,KAAK,OAAO,CAAC,EAAE,CAAC,IAAE;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,OAAO,CAAC,EAAEoe,EAAE,KAAK,IAAE,KAAK,OAAO,CAAC,EAAEA,EAAE,IAAI;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,OAAO,CAAC,EAAE,CAAC,KAAG,IAAEL,EAAE,WAASA,EAAE;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAM,QAAM,KAAK,OAAO,CAAC,EAAE,CAAC,IAAE,MAAI,KAAK,OAAO,CAAC,EAAE,CAAC,IAAE,SAAO,KAAK,OAAO,CAAC,EAAE,CAAC,IAAE,MAAI,KAAK,OAAO,CAAC,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,UAAQ,IAAE,UAAU,CAAC,GAAEne,IAAE,GAAEA,IAAE,GAAEA,IAAI,UAAQY,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,cAAII,IAAE,EAAE,YAAYhB,GAAEY,CAAC;AAAE,UAAAI,MAAImd,EAAE,YAAUnd,MAAImd,EAAE,aAAW,KAAK,OAAOne,GAAEY,CAAC,IAAE,KAAK,OAAOZ,CAAC,EAAEY,CAAC,IAAER,EAAE,gBAAgBY,CAAC,IAAE,KAAK,OAAOhB,CAAC,EAAEY,CAAC,KAAGR,EAAE,gBAAgBY,CAAC;AAAA,QAAE;AAAA,iBAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEP,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC;AAAE,UAAAA,MAAIwB,EAAE,YAAU,KAAK,OAAO,CAAC,EAAE1d,CAAC;AAAA,QAAG;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,SAAO,MAAM,CAAC,EAAE,KAAM,EAAC,IAAK,WAAU;AAAC,iBAAO,MAAM,CAAC;AAAA,QAAC;AAAI,iBAAQ,IAAE,GAAE,IAAE,GAAE,IAAI,UAAQT,IAAE,GAAEA,IAAE,GAAEA,IAAI,MAAK,OAAO,CAAC,EAAEA,CAAC,IAAEI,EAAE;AAAA,MAAU,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,eAAO,MAAI+d,EAAE,WAAS,IAAE,MAAIA,EAAE,WAAS,IAAE/d,EAAE;AAAA,MAAU,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC;AAAG,IAAAsoB,GAAG,aAAW;AAAG,QAAIL,KAAG,SAASjoB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,YAAIb,IAAE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAE,eAAOA,EAAE,CAAC,IAAE,KAAK,IAAI,CAAC,GAAEA,EAAE,CAAC,IAAE,KAAK,IAAI,CAAC,GAAE,IAAIa,EAAEb,GAAEmkB,GAAG,YAAY,KAAK,MAAM,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAG,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASnkB,GAAE;AAAC,aAAK,cAAYA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASA,GAAE;AAAC,aAAK,QAAMA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASA,GAAE;AAAC,YAAG,EAAEA,aAAaa,GAAG,QAAM;AAAG,YAAIL,IAAER;AAAE,YAAG,KAAK,IAAI,WAASQ,EAAE,IAAI,OAAO,QAAM;AAAG,iBAAQJ,IAAE,IAAGY,IAAE,IAAGI,IAAE,KAAK,IAAI,QAAO0b,IAAE,GAAEA,IAAE,KAAK,IAAI,QAAOA,IAAI,KAAG,KAAK,IAAIA,CAAC,EAAE,SAAStc,EAAE,IAAIsc,CAAC,CAAC,MAAI1c,IAAE,KAAI,KAAK,IAAI0c,CAAC,EAAE,SAAStc,EAAE,IAAI,EAAEY,CAAC,CAAC,MAAIJ,IAAE,KAAI,CAACZ,KAAG,CAACY,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,QAAO,KAAK,IAAI,SAAO,IAAE,KAAK,IAAI,CAAC,IAAE;AAAK,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIhB,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,IAAIA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASA,GAAE;AAAC,QAAAA,EAAE,MAAM,UAAQ,KAAK,QAAM,IAAI,GAAEA,EAAE,MAAM,cAAc;AAAE,iBAAQQ,IAAE,GAAEA,IAAE,KAAK,IAAI,QAAOA,IAAI,CAAAA,IAAE,KAAGR,EAAE,MAAM,GAAG,GAAEA,EAAE,MAAM,KAAK,IAAIQ,CAAC,EAAE,IAAE,MAAI,KAAK,IAAIA,CAAC,EAAE,CAAC;AAAE,QAAAR,EAAE,MAAM,QAAM,KAAK,SAAO,MAAI,KAAK,WAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASA,GAAE;AAAC,QAAAa,EAAE,SAAS,KAAK,QAAOb,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAM,CAAC,CAAC,KAAK,OAAO,YAAe,KAAK,IAAI,WAAb,KAAqB,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,SAAO,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI,SAAO;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,eAAO,KAAK,IAAI;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASA,GAAE;AAAC,QAAAA,EAAE,MAAM,UAAQ,KAAK,QAAM,IAAI;AAAE,iBAAQQ,IAAE,KAAK,IAAI,SAAO,GAAEA,KAAG,GAAEA,IAAI,CAAAR,EAAE,MAAM,KAAK,IAAIQ,CAAC,IAAE,GAAG;AAAE,QAAAR,EAAE,QAAQ,EAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,eAAc,KAAK,SAAZ,SAAmB,KAAK,OAAK,IAAI6oB,GAAG,IAAI,IAAG,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,YAAU,KAAK,SAAZ,MAAiB;AAAC,eAAK,OAAK,IAAIxK;AAAE,mBAAQre,IAAE,GAAEA,IAAE,KAAK,IAAI,QAAOA,IAAI,MAAK,KAAK,gBAAgB,KAAK,IAAIA,CAAC,CAAC;AAAA,QAAC;AAAC,eAAO,KAAK;AAAA,MAAI,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASA,GAAEQ,GAAEJ,GAAEY,GAAE;AAAC,YAAII,IAAE,IAAIgd,EAAEpe,EAAE,gBAAgBgB,CAAC,CAAC,GAAE8b,IAAEtc,GAAEK,IAAEb,EAAE,gBAAgBI,GAAEY,CAAC,GAAE+b,IAAED,IAAE;AAAE,YAAGC,IAAE,KAAK,IAAI,QAAO;AAAC,cAAI5W,IAAE,KAAK,IAAI4W,CAAC;AAAE,UAAA3b,EAAE,SAAS+E,CAAC,MAAI2W,IAAEC,GAAElc,IAAE;AAAA,QAAE;AAAC,aAAK,OAAO,IAAIO,GAAE0b,GAAEjc,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAIb,IAAE,IAAI+hB;AAAG,QAAA/hB,EAAE,OAAO,UAAQ,KAAK,QAAM,IAAI,GAAEA,EAAE,OAAO,cAAc;AAAE,iBAAQQ,IAAE,GAAEA,IAAE,KAAK,IAAI,QAAOA,IAAI,CAAAA,IAAE,KAAGR,EAAE,OAAO,GAAG,GAAEA,EAAE,OAAO,KAAK,IAAIQ,CAAC,EAAE,IAAE,MAAI,KAAK,IAAIA,CAAC,EAAE,CAAC;AAAE,eAAOR,EAAE,OAAO,QAAM,KAAK,SAAO,MAAI,KAAK,WAAW,GAAEA,EAAE,SAAQ;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,GAAE;AAAC,YAAG,KAAK,IAAI,WAASA,EAAE,IAAI,OAAO,QAAM;AAAG,iBAAQQ,IAAE,GAAEA,IAAE,KAAK,IAAI,QAAOA,IAAI,KAAG,CAAC,KAAK,IAAIA,CAAC,EAAE,SAASR,EAAE,IAAIQ,CAAC,CAAC,EAAE,QAAM;AAAG,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASR,GAAE;AAAC,aAAK,cAAYA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,GAAEQ,GAAEJ,GAAE;AAAC,iBAAQY,IAAE,GAAEA,IAAEhB,EAAE,mBAAoB,GAACgB,IAAI,MAAK,gBAAgBhB,GAAEQ,GAAEJ,GAAEY,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,MAAI,MAAK,KAAK,OAAK,MAAK,KAAK,SAAO,IAAIwnB,GAAG,IAAI,GAAE,KAAK,QAAM,MAAK,KAAK,OAAK,MAAK,KAAK,cAAY,IAAG,KAAK,SAAO,IAAIM,MAAG,KAAK,cAAY,GAAM,UAAU,WAAd,GAAqB;AAAC,cAAI9oB,IAAE,UAAU,CAAC;AAAE,UAAAa,EAAE,aAAa,KAAK,MAAKb,GAAE,IAAI;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,eAAK,MAAII,GAAE,KAAK,SAAOJ;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAG,EAAM,UAAU,WAAd,KAAsB,UAAU,CAAC,aAAYsoB,MAAI,UAAU,CAAC,aAAYvE,IAAI,QAAOlH,EAAE7b,EAAEP,CAAC,GAAE,YAAW,IAAI,EAAE,MAAM,MAAK,SAAS;AAAE,YAAIb,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC;AAAE,QAAAA,EAAE,kBAAkBR,EAAE,YAAY,GAAE4e,EAAE,EAAE,GAAE5e,EAAE,YAAY,GAAE4e,EAAE,EAAE,GAAE,CAAC,GAAE5e,EAAE,OAAM,MAAKQ,EAAE,kBAAkBR,EAAE,YAAY,GAAE4e,EAAE,IAAI,GAAE5e,EAAE,YAAY,GAAE4e,EAAE,IAAI,GAAE,CAAC,GAAEpe,EAAE,kBAAkBR,EAAE,YAAY,GAAE4e,EAAE,KAAK,GAAE5e,EAAE,YAAY,GAAE4e,EAAE,KAAK,GAAE,CAAC;AAAA,MAAE,EAAC,CAAC,CAAC,GAAE/d;AAAA,IAAC,EAAE0jB,EAAE,GAAEwE,KAAG,WAAU;AAAC,eAASvoB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,4BAA2B,OAAM,SAAS,GAAE;AAAC,aAAK,yBAAuB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,YAAIJ,IAAE,KAAK,UAAU,cAAc,CAAC;AAAE,YAAUA,MAAP,MAAS;AAAC,cAAIY,IAAEZ,EAAE,SAAU,GAACgB,IAAE,EAAE;AAAW,UAAAhB,EAAE,iBAAiB,CAAC,MAAIgB,IAAE,IAAI+iB,GAAG,EAAE,SAAQ,CAAE,GAAG,KAAI,GAAGnjB,EAAE,MAAMI,CAAC;AAAE,cAAI,IAAEZ,EAAE,WAAWY,CAAC,GAAEP,IAAET,EAAE,cAAa,IAAG;AAAE,UAAAA,EAAE,cAAcS,CAAC;AAAA,QAAC,MAAM,MAAK,UAAU,IAAI,CAAC,GAAE,EAAE,cAAcL,EAAE,WAAW,EAAE,UAAU,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE;AAAC,iBAAQ,IAAE,IAAIof,KAAG,IAAE,EAAE,SAAQ,GAAG,EAAE,aAAW;AAAC,cAAIxe,IAAE,EAAE,KAAM,GAAC0b,IAAE1b,EAAE,0BAAyBP,IAAE,IAAI0mB,GAAG,CAAC,EAAE,SAASzK,CAAC;AAAE,UAAA1b,EAAE,aAAaP,CAAC,GAAEO,EAAE,gBAAe,GAAG,EAAE,IAAIA,CAAC,GAAE,EAAE,IAAIA,EAAE,iBAAgB,GAAGA,EAAE,SAAQ,CAAE;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAIwe,KAAG,IAAE,EAAE,WAAW,YAAW,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,KAAM;AAAC,cAAG,CAAC,EAAE,UAAW,GAAC;AAAC,gBAAIxe,IAAE,IAAI0e;AAAG,YAAA1e,EAAE,OAAO,CAAC,GAAE,EAAE,IAAIA,CAAC;AAAA,UAAC;AAAA,QAAC;AAAC,eAAOukB,GAAG,KAAK,GAAEA,GAAG,aAAc,CAAA,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,WAAU;AAAC,eAAO,KAAK,UAAU;MAAe,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,YAAU,KAAK,kBAAZ,KAA0B,QAAO,KAAK;AAAc,YAAI,IAAE,IAAIqB,MAAG,IAAE,IAAIjD;AAAG,eAAO,EAAE,kBAAkB,CAAC,GAAE,EAAE,sBAAsB,IAAIuE,GAAG,CAAC,CAAC,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK;AAAuB,QAAO,MAAP,SAAW,IAAE,EAAE,kBAAiB,IAAI,KAAK,YAAU,EAAE,WAAU;AAAG,YAAI,IAAE,IAAIhB,GAAG,GAAE,KAAK,UAAU,GAAElmB,IAAE,IAAIwmB,GAAG,GAAE,GAAE,CAAC,EAAE,UAAW;AAAC,YAAGxmB,EAAE,KAAM,KAAE,EAAE,QAAO,KAAK,0BAAyB;AAAG,aAAK,kBAAkBA,GAAE,CAAC,GAAE,KAAK,SAAO,IAAIgkB,GAAG,IAAI8C,IAAE,GAAE,KAAK,OAAO,SAAS,KAAK,UAAU,SAAQ,CAAE;AAAE,YAAIpL,IAAE,KAAK,gBAAgB,KAAK,MAAM,GAAEjc,IAAE,IAAIwkB,GAAG,KAAK,SAAS;AAAE,aAAK,eAAevI,GAAEjc,CAAC;AAAE,YAAIkc,IAAElc,EAAE,YAAa;AAAC,eAAOkc,EAAE,KAAM,KAAE,IAAE,KAAK,0BAA2B,IAAC,KAAK,UAAU,cAAcA,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,SAAS,CAAC;AAAE,UAAE,aAAa,CAAC;AAAE,iBAAQ,IAAE,EAAE,mBAAoB,EAAC,SAAQ,GAAG,EAAE,QAAS,KAAE;AAAC,cAAI3b,IAAE,EAAE,QAAO0b,IAAE1b,EAAE,eAAgB;AAAC,cAAO0b,EAAE,WAAN,KAAc,CAACA,EAAE,CAAC,EAAE,SAASA,EAAE,CAAC,CAAC,GAAE;AAAC,gBAAIjc,IAAEO,EAAE,QAAS,GAAC2b,IAAE,IAAI0L,GAAGrnB,EAAE,eAAc,GAAG,IAAI+iB,GAAGtjB,CAAC,CAAC;AAAE,iBAAK,iBAAiBkc,CAAC;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS,GAAE;AAAC,aAAK,gBAAc;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,aAAW,MAAK,KAAK,yBAAuB,MAAK,KAAK,gBAAc,MAAK,KAAK,YAAU,MAAK,KAAK,SAAO,MAAK,KAAK,YAAU,IAAIqL;AAAG,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,aAAW;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,EAAE,YAAY,GAAExJ,EAAE,IAAI,GAAE,IAAE,EAAE,YAAY,GAAEA,EAAE,KAAK;AAAE,eAAO,MAAIL,EAAE,YAAU,MAAIA,EAAE,WAAS,IAAE,MAAIA,EAAE,YAAU,MAAIA,EAAE,WAAS,KAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,IAAIiE,MAAG,IAAE,IAAI5C,KAAG,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,KAAM,GAACxe,IAAE,EAAE,iBAAiB,EAAE,eAAgB,CAAA;AAAE,YAAE,IAAIA,CAAC;AAAA,QAAC;AAAC,eAAO,EAAE,cAAc,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,EAAG,GAACwoB,KAAG,WAAU;AAAC,eAASxoB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,YAAGye,GAAG,UAAU,CAAC,GAAET,EAAC,EAAE,UAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,EAAE,SAAQ,GAAG,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,KAAM;AAAC,eAAK,QAAQ,EAAE,eAAgB,CAAA;AAAA,QAAC;AAAA,iBAAS,UAAU,CAAC,aAAY,OAAM;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAEpd,IAAE,GAAEA,IAAE,EAAE,QAAOA,IAAI,GAAEA,CAAC,EAAE,IAAE,EAAEA,CAAC,EAAE,IAAE,KAAK,eAAa,KAAK,UAAS,EAAEA,CAAC,EAAE,IAAE,EAAEA,CAAC,EAAE,IAAE,KAAK,eAAa,KAAK;AAAS,UAAI,EAAE,WAAN,KAAc,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,KAAG2e,GAAG,IAAI,QAAQ,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,YAAGd,GAAG,UAAU,CAAC,GAAET,EAAC,GAAE;AAAC,mBAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,IAAIoB,EAAG,EAAE,MAAM,GAAE,IAAE,EAAE,SAAQ,GAAG,EAAE,aAAW;AAAC,gBAAI,IAAE,EAAE,KAAM;AAAC,cAAE,IAAI,IAAI0G,GAAG,KAAK,MAAM,EAAE,eAAc,CAAE,GAAE,EAAE,QAAO,CAAE,CAAC;AAAA,UAAC;AAAC,iBAAO;AAAA,QAAC;AAAC,YAAG,UAAU,CAAC,aAAY,OAAM;AAAC,mBAAQllB,IAAE,UAAU,CAAC,GAAE0b,IAAE,IAAI,MAAM1b,EAAE,MAAM,EAAE,KAAK,IAAI,GAAEP,IAAE,GAAEA,IAAEO,EAAE,QAAOP,IAAI,CAAAic,EAAEjc,CAAC,IAAE,IAAIud,EAAE,KAAK,OAAOhd,EAAEP,CAAC,EAAE,IAAE,KAAK,YAAU,KAAK,YAAY,GAAE,KAAK,OAAOO,EAAEP,CAAC,EAAE,IAAE,KAAK,YAAU,KAAK,YAAY,GAAEO,EAAEP,CAAC,EAAE,KAAI,CAAE;AAAE,cAAIkc,IAAE6E,GAAG,qBAAqB9E,CAAC;AAAE,iBAAOC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,eAAW,KAAK,iBAAT;AAAA,MAAqB,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAI,IAAE,KAAK,OAAO;AAAqB,eAAO,KAAK,aAAW,KAAK,QAAQ,CAAC,GAAE;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAE,aAAK,cAAY,IAAE,KAAK,MAAM,CAAC,IAAG,KAAK,OAAO,aAAa,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAAC+J,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,SAAO,MAAK,KAAK,eAAa,MAAK,KAAK,WAAS,MAAK,KAAK,WAAS,MAAK,KAAK,YAAU,IAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE1mB,IAAE,UAAU,CAAC;AAAE,UAAAI,EAAE,aAAa,KAAK,MAAK,GAAEJ,GAAE,GAAE,CAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAIY,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC;AAAE,eAAK,SAAOJ,GAAE,KAAK,eAAaI,GAAE,KAAK,YAAU,CAAC,KAAK,mBAAoB;AAAA,QAAA;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEZ;AAAA,IAAC,KAAIyoB,KAAG,WAAU;AAAC,eAASzoB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,iCAAgC,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,UAAQ,IAAE,KAAK,YAAY,SAAQ,GAAG,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,KAAM,GAAC,IAAE,EAAE,eAAc;AAAG,eAAK,8BAA8B,EAAE,CAAC,GAAE,KAAK,WAAW,GAAE,KAAK,8BAA8B,EAAE,EAAE,SAAO,CAAC,GAAE,KAAK,WAAW;AAAA,QAAC;AAAA,iBAAa,UAAU,WAAd;AAAqB,mBAAQ,IAAE,UAAU,CAAC,GAAEY,IAAE,UAAU,CAAC,GAAE0b,IAAE1b,EAAE,YAAW0b,EAAE,QAAO,IAAI,UAAQjc,IAAEic,EAAE,KAAM,GAACC,IAAElc,EAAE,eAAgB,GAACsF,IAAE,GAAEA,IAAE4W,EAAE,SAAO,GAAE5W,IAAI,KAAG4W,EAAE5W,CAAC,EAAE,OAAO,CAAC,EAAE,OAAM,IAAID,GAAE,mDAAiDC,IAAE,UAAQ,CAAC;AAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,UAAQ,IAAE,KAAK,YAAY,SAAU,GAAC,EAAE,YAAW,UAAQ,IAAE,EAAE,KAAI,GAAG,IAAE,KAAK,YAAY,SAAU,GAAC,EAAE,aAAW;AAAC,cAAI,IAAE,EAAE,KAAI;AAAG,eAAK,2BAA2B,GAAE,CAAC;AAAA,QAAC;AAAA,iBAAa,UAAU,WAAd,EAAqB,UAAQ/E,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAEO,EAAE,kBAAiB2b,IAAED,EAAE,eAAgB,GAAC3W,IAAE,GAAEA,IAAEtF,EAAE,SAAO,GAAEsF,IAAI,UAAQhF,IAAE,GAAEA,IAAE4b,EAAE,SAAO,GAAE5b,IAAI,MAAK,2BAA2BC,GAAE+E,GAAE2W,GAAE3b,CAAC;AAAA,iBAAc,UAAU,WAAd,GAAqB;AAAC,cAAI6b,IAAE,UAAU,CAAC,GAAEhW,IAAE,UAAU,CAAC,GAAEiW,IAAE,UAAU,CAAC,GAAE5c,IAAE,UAAU,CAAC;AAAE,cAAG2c,MAAIC,KAAGjW,MAAI3G,EAAE,QAAO;AAAK,cAAIH,IAAE8c,EAAE,eAAgB,EAAChW,CAAC,GAAE/G,IAAE+c,EAAE,eAAgB,EAAChW,IAAE,CAAC,GAAE9D,IAAE+Z,EAAE,iBAAiB5c,CAAC,GAAEN,KAAEkd,EAAE,iBAAiB5c,IAAE,CAAC;AAAE,cAAG,KAAK,IAAI,oBAAoBH,GAAED,GAAEiD,GAAEnD,EAAC,GAAE,KAAK,IAAI,gBAAe,MAAK,KAAK,IAAI,SAAU,KAAE,KAAK,wBAAwB,KAAK,KAAIG,GAAED,CAAC,KAAG,KAAK,wBAAwB,KAAK,KAAIiD,GAAEnD,EAAC,GAAG,OAAM,IAAImG,GAAE,qCAAmChG,IAAE,MAAID,IAAE,UAAQiD,IAAE,MAAInD,EAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,aAAK,8BAA+B,GAAC,KAAK,2BAA4B,GAAC,KAAK;MAAgB,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,EAAqB,UAAQ,IAAE,KAAK,YAAY,SAAQ,GAAG,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,KAAM;AAAC,eAAK,eAAe,CAAC;AAAA,QAAC;AAAA,iBAAa,UAAU,WAAd,EAAqB,UAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,EAAE,kBAAiBqB,IAAE,GAAEA,IAAE,EAAE,SAAO,GAAEA,IAAI,MAAK,cAAc,EAAEA,CAAC,GAAE,EAAEA,IAAE,CAAC,GAAE,EAAEA,IAAE,CAAC,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,iBAAQ,IAAE,GAAE,IAAE,EAAE,mBAAoB,GAAC,KAAI;AAAC,cAAIA,IAAE,EAAE,gBAAgB,CAAC;AAAE,cAAG,CAACA,EAAE,OAAO,CAAC,KAAG,CAACA,EAAE,OAAO,CAAC,EAAE,QAAM;AAAA,QAAE;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAS,GAAEhB,GAAEY,GAAE;AAAC,YAAG,EAAE,OAAOA,CAAC,EAAE,OAAM,IAAIkF,GAAE,iCAA+B1F,EAAE,KAAK,iBAAiB,CAAC,GAAEJ,GAAEY,CAAC,CAAC,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,MAAI,IAAI+iB,MAAG,KAAK,cAAY;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,cAAY;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEvjB;AAAA,IAAC,EAAC;AAAG,IAAAyoB,GAAG,OAAK,IAAIzG;AAAG,QAAI0G,KAAG,WAAU;AAAC,eAAS1oB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,IAAI,EAAE,GAAE,EAAE,CAAC,GAAE,IAAE,KAAK,IAAI,EAAE,GAAE,EAAE,CAAC,GAAEY,IAAE,KAAK,IAAI,EAAE,GAAE,EAAE,CAAC,GAAE0b,IAAE,KAAK,IAAI,EAAE,GAAE,EAAE,CAAC,GAAEjc,IAAE,KAAK,QAAM,KAAG,KAAK,QAAM,KAAG,KAAK,QAAMO,KAAG,KAAK,QAAM0b;AAAE,YAAGjc,EAAE,QAAM;AAAG,YAAIkc,IAAE,KAAK,0BAA0B,GAAE,CAAC;AAAE,eAAOiB,GAAE,OAAO,EAAEnd,KAAGkc,IAAG,yBAAyB,GAAEA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE;AAAG,aAAK,QAAM,EAAE,IAAE,GAAE,KAAK,QAAM,EAAE,IAAE,GAAE,KAAK,QAAM,EAAE,IAAE,GAAE,KAAK,QAAM,EAAE,IAAE,GAAE,KAAK,QAAQ,CAAC,IAAE,IAAIqB,EAAE,KAAK,OAAM,KAAK,KAAK,GAAE,KAAK,QAAQ,CAAC,IAAE,IAAIA,EAAE,KAAK,OAAM,KAAK,KAAK,GAAE,KAAK,QAAQ,CAAC,IAAE,IAAIA,EAAE,KAAK,OAAM,KAAK,KAAK,GAAE,KAAK,QAAQ,CAAC,IAAE,IAAIA,EAAE,KAAK,OAAM,KAAK,KAAK;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE;AAAC,eAAW,KAAK,iBAAT,IAAsB,KAAK,iBAAiB,GAAE,CAAC,KAAG,KAAK,WAAW,GAAE,KAAK,SAAS,GAAE,KAAK,WAAW,GAAE,KAAK,SAAS,GAAE,KAAK,iBAAiB,KAAK,WAAU,KAAK,SAAS;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,MAAM,IAAE,KAAK,YAAY;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAW,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAS,GAAE,GAAE;AAAC,UAAE,IAAE,KAAK,MAAM,EAAE,CAAC,GAAE,EAAE,IAAE,KAAK,MAAM,EAAE,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,YAAU,KAAK,aAAZ,MAAqB;AAAC,cAAI,IAAE5d,EAAE,4BAA0B,KAAK;AAAa,eAAK,WAAS,IAAI6d,GAAE,KAAK,YAAY,IAAE,GAAE,KAAK,YAAY,IAAE,GAAE,KAAK,YAAY,IAAE,GAAE,KAAK,YAAY,IAAE,CAAC;AAAA,QAAC;AAAC,eAAO,KAAK;AAAA,MAAQ,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAS,GAAE,GAAE;AAAC,eAAO,KAAK,IAAI,oBAAoB,GAAE,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,QAAQ,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,gBAAe,MAAK,KAAK,IAAI,oBAAoB,GAAE,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,QAAQ,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,gBAAiB,MAAG,KAAK,IAAI,oBAAoB,GAAE,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,QAAQ,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,gBAAe,MAAK,KAAK,IAAI,oBAAoB,GAAE,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,QAAQ,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,gBAAe;AAAA,MAAK,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,IAAG,IAAE;AAAG,eAAO,KAAK,IAAI,oBAAoB,GAAE,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,QAAQ,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,SAAU,MAAG,KAAK,IAAI,oBAAoB,GAAE,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,QAAQ,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,SAAQ,MAAK,KAAK,IAAI,gBAAe,MAAK,IAAE,KAAI,KAAK,IAAI,oBAAoB,GAAE,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,QAAQ,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,eAAa,KAAK,IAAI,gBAAiB,MAAG,IAAE,KAAI,KAAK,IAAI,oBAAoB,GAAE,GAAE,KAAK,QAAQ,CAAC,GAAE,KAAK,QAAQ,CAAC,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,SAAQ,KAAK,EAAE,CAAC,KAAG,CAAC,MAAK,CAAC,CAAC,EAAE,OAAO,KAAK,GAAG,KAAG,CAAC,CAAC,EAAE,OAAO,KAAK,GAAG;AAAA,MAAM,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,cAAc,CAAC,GAAE,IAAE,EAAE,cAAc,IAAE,CAAC;AAAE,eAAM,CAAC,CAAC,KAAK,WAAW,GAAE,CAAC,MAAI,EAAE,gBAAgB,KAAK,cAAe,GAAC,CAAC,GAAE;AAAA,MAAG,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,cAAY,MAAK,KAAK,YAAU,MAAK,KAAK,YAAU,MAAK,KAAK,YAAU,MAAK,KAAK,eAAa,MAAK,KAAK,QAAM,MAAK,KAAK,QAAM,MAAK,KAAK,QAAM,MAAK,KAAK,QAAM,MAAK,KAAK,UAAQ,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,GAAE,KAAK,WAAS;AAAK,YAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,YAAG,KAAK,cAAY,GAAE,KAAK,MAAI,GAAE,KAAK,eAAa,GAAE,KAAK,MAAI,GAAE,KAAG,EAAE,OAAM,IAAInB,EAAE,+BAA+B;AAAE,QAAI,MAAJ,MAAQ,KAAK,MAAI,IAAIkB,EAAE,KAAK,MAAM,EAAE,CAAC,GAAE,KAAK,MAAM,EAAE,CAAC,CAAC,GAAE,KAAK,YAAU,IAAIA,KAAE,KAAK,YAAU,IAAIA,MAAG,KAAK,YAAY,KAAK,GAAG;AAAA,MAAC,EAAC,CAAC,CAAC,GAAE5d;AAAA,IAAC;AAAI,IAAA0oB,GAAG,4BAA0B;AAAI,QAAIC,KAAG,WAAU;AAAC,eAAS3oB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd;AAA2B,cAAO,UAAU,WAAd,GAAqB;AAAC,gBAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,cAAE,eAAe,GAAE,KAAK,eAAe,GAAE,KAAK,OAAO,KAAK,eAAe;AAAA,UAAC;AAAA;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,kBAAgB,IAAIkmB;AAAA,MAAE,EAAC,CAAC,CAAC,GAAElmB;AAAA,IAAC,EAAC,GAAG4oB,KAAG,WAAU;AAAC,eAAS5oB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIA,IAAE,UAAU,CAAC;AAAE,iBAAO,KAAK,KAAKA,GAAE,MAAK,EAAE;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAIQ,IAAE,UAAU,CAAC,GAAEI,IAAE,UAAU,CAAC,GAAE0b,IAAE,UAAU,CAAC,GAAEjc,IAAEG,EAAE,mBAAkB,IAAE,IAAIqoB,GAAGroB,GAAEI,GAAE0b,CAAC;AAAE,iBAAO,KAAK,OAAO,MAAMjc,GAAE,KAAI,WAAU;AAAC,qBAASL,IAAG;AAAC,cAAAR,EAAE,MAAKQ,CAAC;AAAA,YAAC;AAAC,mBAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,qBAAM,CAACslB,EAAE;AAAA,YAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS9lB,GAAE;AAAC,cAAAA,EAAE,OAAOa,GAAE,CAAC;AAAA,YAAC,EAAC,CAAC,CAAC,GAAEL;AAAA,UAAC,MAAI,GAAE,EAAE,YAAa;AAAA,QAAA;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,SAAO;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,SAAO;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,GAAG6oB,KAAG,SAAS7oB,GAAE;AAAC,MAAAQ,EAAEH,GAAEL,CAAC;AAAE,UAAIsc,IAAE9V,EAAEnG,CAAC;AAAE,eAASA,IAAG;AAAC,YAAIL;AAAE,eAAOR,EAAE,MAAKa,CAAC,GAAEL,IAAEsc,EAAE,KAAK,IAAI,GAAEjc,EAAE,aAAa,MAAMM,EAAEX,CAAC,GAAE,SAAS,GAAEA;AAAA,MAAC;AAAC,aAAOJ,EAAES,GAAE,CAAC,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAY,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,YAAG,EAAM,UAAU,WAAd,KAAsB,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,UAAU,CAAC,aAAY+lB,IAAI,QAAO3J,EAAE7b,EAAEP,EAAE,SAAS,GAAE,UAAS,IAAI,EAAE,MAAM,MAAK,SAAS;AAAE,YAAIb,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC,GAAEJ,IAAEJ,EAAE,WAAY;AAAC,YAAG,KAAK,gBAAcI,MAAII,MAAI,KAAK,wBAAsBA,IAAE,MAAI,KAAK,sBAAsB,QAAO;AAAK,aAAK,gBAAc,KAAK,UAAU,eAAeJ,GAAEI,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,YAAU,MAAK,KAAK,cAAY,MAAK,KAAK,uBAAqB,MAAK,KAAK,eAAa;AAAG,YAAIR,IAAE,UAAU,CAAC,GAAEQ,IAAE,UAAU,CAAC,GAAEJ,IAAE,UAAU,CAAC;AAAE,aAAK,YAAUJ,GAAE,KAAK,cAAYQ,GAAE,KAAK,uBAAqBJ;AAAA,MAAC,EAAC,CAAC,CAAC,GAAES;AAAA,IAAC,EAAEsoB,EAAE;AAAE,IAAAC,GAAG,qBAAmBC;AAAG,QAAIC,KAAG,WAAU;AAAC,eAAS9oB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAG,MAAI,KAAG,MAAI,EAAE,QAAO;AAAK,YAAIY,IAAE,EAAE,iBAAiB,CAAC,GAAE0b,IAAE,EAAE,eAAc,EAAG,IAAE,CAAC,GAAEjc,IAAE,EAAE,eAAgB,EAAC,CAAC,GAAEkc,IAAE,EAAE,iBAAiB,IAAE,CAAC;AAAE,YAAG,KAAK,IAAI,oBAAoB3b,GAAE0b,GAAEjc,GAAEkc,CAAC,GAAE,KAAK,IAAI,gBAAe,KAAI,KAAK,IAAI,uBAAsB,GAAG;AAAC,mBAAQ5W,IAAE,GAAEA,IAAE,KAAK,IAAI,mBAAkB,GAAGA,IAAI,MAAK,uBAAuB,IAAI,KAAK,IAAI,gBAAgBA,CAAC,CAAC;AAAE,YAAE,iBAAiB,KAAK,KAAI,GAAE,CAAC,GAAE,EAAE,iBAAiB,KAAK,KAAI,GAAE,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,eAAM;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,WAAU;AAAC,eAAO,KAAK;AAAA,MAAsB,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACkiB,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,MAAI,MAAK,KAAK,yBAAuB;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,MAAI,GAAE,KAAK,yBAAuB,IAAIzI;AAAA,MAAE,EAAC,CAAC,CAAC,GAAEpf;AAAA,IAAC,EAAC,GAAG+oB,KAAG,WAAU;AAAC,eAAS/oB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE8lB,GAAG,mBAAmB,CAAC,GAAE,IAAE,IAAI2C,GAAG,CAAC;AAAE,YAAG;AAAC,YAAE,WAAY;AAAA,QAAA,SAAOjpB,GAAE;AAAC,cAAG,EAAEA,aAAaoE,GAAG,OAAMpE;AAAE,UAAAA,EAAE,gBAAiB;AAAA,QAAA;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,eAAOsmB,GAAG,mBAAmB,KAAK,gBAAgB;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,KAAK,0BAA0B,GAAE,CAAC;AAAE,aAAK,yBAAyB,CAAC,GAAE,KAAK,mBAAmB,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAAS,GAAE,GAAE;AAAC,YAAI,IAAE,IAAIgD,GAAG,CAAC;AAAE,eAAO,KAAK,OAAO,sBAAsB,CAAC,GAAE,KAAK,OAAO,aAAa,CAAC,GAAE,EAAE,yBAA0B;AAAA,MAAA,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,YAAGrK,GAAG,UAAU,CAAC,GAAET,EAAC,EAAE,UAAQ,IAAE,UAAU,CAAC,GAAE,IAAE,EAAE,YAAW,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,KAAM;AAAC,eAAK,mBAAmB,CAAC;AAAA,QAAC;AAAA,iBAAS,UAAU,CAAC,aAAY8H,GAAG,UAAQ,IAAE,UAAU,CAAC,GAAEllB,IAAE,EAAE,eAAc,GAAG0b,IAAE,GAAEA,IAAE1b,EAAE,QAAO0b,KAAI;AAAC,cAAIjc,IAAE,IAAIqoB,GAAG9nB,EAAE0b,CAAC,GAAE,KAAK,cAAa,KAAK,GAAG,GAAEC,IAAE,KAAK,cAAc,KAAKlc,GAAE,GAAEic,CAAC;AAAE,UAAAC,KAAG,EAAE,gBAAgB3b,EAAE0b,CAAC,GAAEA,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAS,GAAE;AAAC,aAAK,mBAAiB,GAAE,KAAK,SAAO,IAAIkK,MAAG,KAAK,gBAAc,IAAIoC,GAAG,KAAK,OAAO,SAAQ,CAAE,GAAE,KAAK,UAAU,GAAE,KAAK,GAAG;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAAS,GAAE;AAAC,iBAAQ,IAAE,EAAE,YAAW,EAAE,QAAO,KAAI;AAAC,cAAI,IAAE,EAAE,KAAM,GAAC,IAAE,IAAIF,GAAG,GAAE,KAAK,cAAa,KAAK,GAAG;AAAE,eAAK,cAAc,KAAK,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,eAAc,KAAI,WAAU;AAAC,eAAM,CAACpC,EAAE;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,aAAK,MAAI,MAAK,KAAK,MAAI,MAAK,KAAK,eAAa,MAAK,KAAK,SAAO,MAAK,KAAK,gBAAc,MAAK,KAAK,mBAAiB;AAAK,YAAI,IAAE,UAAU,CAAC;AAAE,aAAK,MAAI,GAAE,KAAK,MAAI,IAAI/C,MAAG,KAAK,IAAI,kBAAkB,CAAC,GAAE,KAAK,eAAa,EAAE,SAAU;AAAA,MAAA,EAAC,CAAC,CAAC,GAAEvjB;AAAA,IAAC,EAAC,GAAGgpB,KAAG,WAAU;AAAC,eAAShpB,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAEA,EAAE,aAAa,MAAM,MAAK,SAAS;AAAA,MAAC;AAAC,aAAOJ,EAAEI,GAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,IAAIwoB,GAAG,IAAIO,GAAG,IAAIlH,GAAG,CAAC,CAAC,GAAE,EAAE,SAAU,CAAA,GAAE,IAAE,IAAI0G,GAAG,KAAK,UAAU;AAAE,UAAE,yBAAyB,CAAC,GAAE,EAAE,SAAS,CAAC,GAAE,KAAK,kBAAgB,EAAE,OAAO,KAAK,UAAS,KAAK,SAAS;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,mBAAQ,IAAEvoB,EAAE,sBAAqB,KAAG,GAAE,KAAI;AAAC,gBAAG;AAAC,mBAAK,uBAAuB,CAAC;AAAA,YAAC,SAAOR,GAAE;AAAC,kBAAG,EAAEA,aAAa0f,IAAI,OAAM1f;AAAE,mBAAK,iBAAeA;AAAA,YAAC;AAAC,gBAAU,KAAK,oBAAZ,KAA4B,QAAO;AAAA,UAAI;AAAC,gBAAM,KAAK;AAAA,QAAc;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAII,IAAE,UAAU,CAAC,GAAEY,IAAER,EAAE,qBAAqB,KAAK,UAAS,KAAK,WAAUJ,CAAC,GAAEgB,IAAE,IAAIihB,GAAGrhB,CAAC;AAAE,eAAK,qBAAqBI,CAAC;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,YAAG,KAAK,wBAAyB,GAAQ,KAAK,oBAAZ,KAA4B,QAAO;AAAK,YAAI,IAAE,KAAK,SAAS,WAAU,EAAG;AAAoB,UAAE,QAAO,MAAKihB,GAAG,QAAM,KAAK,qBAAqB,CAAC,IAAE,KAAK,uBAAsB;AAAA,MAAE,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAS,GAAE;AAAC,aAAK,WAAW,oBAAoB,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,YAAG;AAAC,cAAI,IAAE,IAAI0G,GAAG,KAAK,UAAU;AAAE,eAAK,kBAAgB,EAAE,OAAO,KAAK,UAAS,KAAK,SAAS;AAAA,QAAC,SAAO/oB,GAAE;AAAC,cAAG,EAAEA,aAAakG,IAAG,OAAMlG;AAAE,eAAK,iBAAeA;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,YAAU,GAAE,KAAK,gBAAiB,GAAC,KAAK;AAAA,MAAe,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAS,GAAE;AAAC,aAAK,WAAW,eAAe,CAAC;AAAA,MAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,YAAG,KAAK,WAAS,MAAK,KAAK,YAAU,MAAK,KAAK,aAAW,IAAID,KAAE,KAAK,kBAAgB,MAAK,KAAK,iBAAe,MAAS,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC;AAAE,eAAK,WAAS;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAE,IAAE,UAAU,CAAC;AAAE,eAAK,WAAS,GAAE,KAAK,aAAW;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAI,IAAE,UAAU,CAAC,GAAEK,IAAE,UAAU,CAAC,GAAEY,IAAE,IAAIR,EAAE,CAAC,GAAEY,IAAEJ,EAAE,kBAAkBZ,CAAC;AAAE,iBAAOgB;AAAA,QAAC;AAAC,YAAO,UAAU,WAAd,GAAqB;AAAC,cAAG,OAAO,UAAU,UAAU,CAAC,CAAC,KAAG,UAAU,CAAC,aAAYkd,KAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAI,IAAE,UAAU,CAAC,GAAEzd,IAAE,UAAU,CAAC,GAAEkc,IAAE,UAAU,CAAC,GAAE5W,IAAE,IAAI3F,EAAE,CAAC;AAAE,YAAA2F,EAAE,oBAAoB4W,CAAC;AAAE,gBAAI5b,IAAEgF,EAAE,kBAAkBtF,CAAC;AAAE,mBAAOM;AAAA,UAAC;AAAC,cAAG,UAAU,CAAC,aAAYpB,KAAG,UAAU,CAAC,aAAYue,KAAa,OAAO,UAAU,CAAC,KAA5B,UAA8B;AAAC,gBAAItB,IAAE,UAAU,CAAC,GAAEhW,IAAE,UAAU,CAAC,GAAEiW,IAAE,UAAU,CAAC,GAAE5c,IAAE,IAAIG,EAAEwc,GAAEC,CAAC,GAAE/c,IAAEG,EAAE,kBAAkB2G,CAAC;AAAE,mBAAO9G;AAAA,UAAC;AAAA,QAAC,WAAa,UAAU,WAAd,GAAqB;AAAC,cAAID,IAAE,UAAU,CAAC,GAAEiD,IAAE,UAAU,CAAC,GAAEkB,IAAE,UAAU,CAAC,GAAE8Y,KAAE,UAAU,CAAC,GAAE7G,KAAE,IAAI7V,EAAEP,CAAC;AAAE,UAAAoW,GAAE,oBAAoBjS,CAAC,GAAEiS,GAAE,eAAe6G,EAAC;AAAE,cAAI9a,KAAEiU,GAAE,kBAAkBnT,CAAC;AAAE,iBAAOd;AAAA,QAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE,oBAAqB,GAAChB,IAAE4e,GAAG,IAAI,KAAK,IAAI,EAAE,QAAS,CAAA,GAAE,KAAK,IAAI,EAAE,QAAO,CAAE,GAAE,KAAK,IAAI,EAAE,QAAO,CAAE,GAAE,KAAK,IAAI,EAAE,QAAO,CAAE,CAAC,IAAE,KAAG,IAAE,IAAE,IAAE,IAAGlD,IAAE,IAAE,KAAK,MAAM,KAAK,IAAI1b,CAAC,IAAE,KAAK,IAAI,EAAE,IAAE,CAAC;AAAE,eAAO,KAAK,IAAI,IAAG0b,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEtc;AAAA,IAAC;AAAI,IAAAgpB,GAAG,YAAUzpB,EAAE,WAAUypB,GAAG,WAASzpB,EAAE,UAASypB,GAAG,WAASzpB,EAAE,UAASypB,GAAG,aAAWzpB,EAAE,YAAWypB,GAAG,uBAAqB;AAAG,QAAIC,KAAG,CAAC,SAAQ,cAAa,cAAa,mBAAkB,WAAU,cAAc,GAAEpiB,KAAG,WAAU;AAAC,eAAS7G,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,kBAAgBJ,KAAG,IAAIoiB;AAAA,MAAE;AAAC,aAAOpiB,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,YAAI,GAAE,KAAG,IAAY,OAAO,KAAjB,WAAmB,KAAK,MAAM,CAAC,IAAE,GAAG;AAAK,YAAG,CAACkpB,GAAG,CAAC,EAAE,OAAM,IAAI,MAAM,2BAAyB,EAAE,IAAI;AAAE,eAAWD,GAAG,QAAQ,CAAC,MAAjB,KAAmBC,GAAG,CAAC,EAAE,KAAK,MAAK,EAAE,WAAW,IAAyB,MAAvB,uBAAyBA,GAAG,CAAC,EAAE,KAAK,MAAK,EAAE,UAAU,IAAEA,GAAG,CAAC,EAAE,KAAK,MAAK,CAAC;AAAA,MAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,YAAI,IAAE,EAAE;AAAkB,YAAG,CAACC,GAAG,CAAC,EAAE,OAAM,IAAI,MAAM,2BAA2B;AAAE,eAAOA,GAAG,CAAC,EAAE,KAAK,MAAK,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEnpB;AAAA,IAAC,EAAC,GAAGkpB,KAAG,EAAC,SAAQ,SAAS1pB,GAAE;AAAC,UAAIQ,IAAE;AAAG,eAAQJ,KAAKJ,EAAE,CAAAQ,EAAEJ,CAAC,IAAEJ,EAAEI,CAAC;AAAE,UAAGJ,EAAE,UAAS;AAAC,YAAIgB,IAAEhB,EAAE,SAAS;AAAK,YAAG,CAAC0pB,GAAG1oB,CAAC,EAAE,OAAM,IAAI,MAAM,2BAAyBhB,EAAE,IAAI;AAAE,QAAAQ,EAAE,WAAS,KAAK,KAAKR,EAAE,QAAQ;AAAA,MAAC;AAAC,aAAOA,EAAE,SAAOQ,EAAE,OAAKkpB,GAAG,KAAK,KAAK,MAAK1pB,EAAE,IAAI,IAAGQ;AAAA,IAAC,GAAE,mBAAkB,SAASR,GAAE;AAAC,UAAIQ,IAAE,CAAA;AAAG,UAAGR,EAAE,UAAS;AAAC,QAAAQ,EAAE,WAAS,CAAE;AAAC,iBAAQJ,IAAE,GAAEA,IAAEJ,EAAE,SAAS,QAAO,EAAEI,EAAE,CAAAI,EAAE,SAAS,KAAK,KAAK,KAAKR,EAAE,SAASI,CAAC,CAAC,CAAC;AAAA,MAAC;AAAC,aAAOJ,EAAE,SAAOQ,EAAE,OAAK,KAAK,MAAM,KAAK,KAAK,MAAKR,EAAE,IAAI,IAAGQ;AAAA,IAAC,GAAE,aAAY,SAASR,GAAE;AAAC,eAAQQ,IAAE,IAAGJ,IAAE,GAAEA,IAAEJ,EAAE,QAAO,EAAEI,GAAE;AAAC,YAAIY,IAAEhB,EAAEI,CAAC;AAAE,QAAAI,EAAE,KAAKuc,EAAEqB,GAAE/d,EAAEW,CAAC,CAAC,CAAC;AAAA,MAAC;AAAC,aAAOR;AAAA,IAAC,GAAE,MAAK,SAASR,GAAE;AAAC,aAAO,KAAK,gBAAgB,iBAAiB,CAAC,IAAIoe,EAAEpe,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,GAAE,IAAIoe,EAAEpe,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,GAAE,IAAIoe,EAAEpe,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,GAAE,IAAIoe,EAAEpe,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,GAAE,IAAIoe,EAAEpe,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,CAAC,CAAC;AAAA,IAAC,GAAE,OAAM,SAASA,GAAE;AAAC,UAAIQ,IAAEuc,EAAEqB,GAAE/d,EAAEL,CAAC,CAAC;AAAE,aAAO,KAAK,gBAAgB,YAAYQ,CAAC;AAAA,IAAC,GAAE,YAAW,SAASR,GAAE;AAAC,eAAQQ,IAAE,CAAE,GAACJ,IAAE,GAAEA,IAAEJ,EAAE,QAAO,EAAEI,EAAE,CAAAI,EAAE,KAAKkpB,GAAG,MAAM,KAAK,MAAK1pB,EAAEI,CAAC,CAAC,CAAC;AAAE,aAAO,KAAK,gBAAgB,iBAAiBI,CAAC;AAAA,IAAC,GAAE,YAAW,SAASR,GAAE;AAAC,UAAIQ,IAAEkpB,GAAG,YAAY,KAAK,MAAK1pB,CAAC;AAAE,aAAO,KAAK,gBAAgB,iBAAiBQ,CAAC;AAAA,IAAC,GAAE,iBAAgB,SAASR,GAAE;AAAC,eAAQQ,IAAE,CAAA,GAAGJ,IAAE,GAAEA,IAAEJ,EAAE,QAAO,EAAEI,EAAE,CAAAI,EAAE,KAAKkpB,GAAG,WAAW,KAAK,MAAK1pB,EAAEI,CAAC,CAAC,CAAC;AAAE,aAAO,KAAK,gBAAgB,sBAAsBI,CAAC;AAAA,IAAC,GAAE,SAAQ,SAASR,GAAE;AAAC,eAAQQ,IAAEkpB,GAAG,YAAY,KAAK,MAAK1pB,EAAE,CAAC,CAAC,GAAEI,IAAE,KAAK,gBAAgB,iBAAiBI,CAAC,GAAEQ,IAAE,IAAGI,IAAE,GAAEA,IAAEpB,EAAE,QAAO,EAAEoB,GAAE;AAAC,YAAI,IAAEpB,EAAEoB,CAAC,GAAEP,IAAE6oB,GAAG,YAAY,KAAK,MAAK,CAAC,GAAE3M,IAAE,KAAK,gBAAgB,iBAAiBlc,CAAC;AAAE,QAAAG,EAAE,KAAK+b,CAAC;AAAA,MAAC;AAAC,aAAO,KAAK,gBAAgB,cAAc3c,GAAEY,CAAC;AAAA,IAAC,GAAE,cAAa,SAAShB,GAAE;AAAC,eAAQQ,IAAE,CAAE,GAACJ,IAAE,GAAEA,IAAEJ,EAAE,QAAO,EAAEI,GAAE;AAAC,YAAIY,IAAEhB,EAAEI,CAAC;AAAE,QAAAI,EAAE,KAAKkpB,GAAG,QAAQ,KAAK,MAAK1oB,CAAC,CAAC;AAAA,MAAC;AAAC,aAAO,KAAK,gBAAgB,mBAAmBR,CAAC;AAAA,IAAC,GAAE,oBAAmB,SAASR,GAAE;AAAC,eAAQQ,IAAE,IAAGJ,IAAE,GAAEA,IAAEJ,EAAE,QAAO,EAAEI,GAAE;AAAC,YAAIY,IAAEhB,EAAEI,CAAC;AAAE,QAAAI,EAAE,KAAK,KAAK,KAAKQ,CAAC,CAAC;AAAA,MAAC;AAAC,aAAO,KAAK,gBAAgB,yBAAyBR,CAAC;AAAA,IAAC,EAAC,GAAEmpB,KAAG,EAAC,YAAW,SAAS3pB,GAAE;AAAC,UAAIQ,IAAE,CAACR,EAAE,GAAEA,EAAE,CAAC;AAAE,aAAOA,EAAE,KAAGQ,EAAE,KAAKR,EAAE,CAAC,GAAEA,EAAE,KAAGQ,EAAE,KAAKR,EAAE,CAAC,GAAEQ;AAAA,IAAC,GAAE,OAAM,SAASR,GAAE;AAAC,aAAM,EAAC,MAAK,SAAQ,aAAY2pB,GAAG,WAAW,KAAK,MAAK3pB,EAAE,cAAe,CAAA,EAAC;AAAA,IAAC,GAAE,YAAW,SAASA,GAAE;AAAC,eAAQQ,IAAE,IAAGJ,IAAE,GAAEA,IAAEJ,EAAE,YAAY,QAAO,EAAEI,GAAE;AAAC,YAAIY,IAAEhB,EAAE,YAAYI,CAAC,GAAEgB,IAAEuoB,GAAG,MAAM,KAAK,MAAK3oB,CAAC;AAAE,QAAAR,EAAE,KAAKY,EAAE,WAAW;AAAA,MAAC;AAAC,aAAM,EAAC,MAAK,cAAa,aAAYZ,EAAC;AAAA,IAAC,GAAE,YAAW,SAASR,GAAE;AAAC,eAAQQ,IAAE,CAAE,GAACJ,IAAEJ,EAAE,eAAgB,GAACgB,IAAE,GAAEA,IAAEZ,EAAE,QAAO,EAAEY,GAAE;AAAC,YAAII,IAAEhB,EAAEY,CAAC;AAAE,QAAAR,EAAE,KAAKmpB,GAAG,WAAW,KAAK,MAAKvoB,CAAC,CAAC;AAAA,MAAC;AAAC,aAAM,EAAC,MAAK,cAAa,aAAYZ,EAAC;AAAA,IAAC,GAAE,iBAAgB,SAASR,GAAE;AAAC,eAAQQ,IAAE,CAAE,GAACJ,IAAE,GAAEA,IAAEJ,EAAE,YAAY,QAAO,EAAEI,GAAE;AAAC,YAAIY,IAAEhB,EAAE,YAAYI,CAAC,GAAEgB,IAAEuoB,GAAG,WAAW,KAAK,MAAK3oB,CAAC;AAAE,QAAAR,EAAE,KAAKY,EAAE,WAAW;AAAA,MAAC;AAAC,aAAM,EAAC,MAAK,mBAAkB,aAAYZ,EAAC;AAAA,IAAC,GAAE,SAAQ,SAASR,GAAE;AAAC,UAAIQ,IAAE,CAAA,GAAGJ,IAAEupB,GAAG,WAAW,KAAK,MAAK3pB,EAAE,MAAM;AAAE,MAAAQ,EAAE,KAAKJ,EAAE,WAAW;AAAE,eAAQY,IAAE,GAAEA,IAAEhB,EAAE,OAAO,QAAO,EAAEgB,GAAE;AAAC,YAAII,IAAEpB,EAAE,OAAOgB,CAAC,GAAE,IAAE2oB,GAAG,WAAW,KAAK,MAAKvoB,CAAC;AAAE,QAAAZ,EAAE,KAAK,EAAE,WAAW;AAAA,MAAC;AAAC,aAAM,EAAC,MAAK,WAAU,aAAYA,EAAC;AAAA,IAAC,GAAE,cAAa,SAASR,GAAE;AAAC,eAAQQ,IAAE,CAAA,GAAGJ,IAAE,GAAEA,IAAEJ,EAAE,YAAY,QAAO,EAAEI,GAAE;AAAC,YAAIY,IAAEhB,EAAE,YAAYI,CAAC,GAAEgB,IAAEuoB,GAAG,QAAQ,KAAK,MAAK3oB,CAAC;AAAE,QAAAR,EAAE,KAAKY,EAAE,WAAW;AAAA,MAAC;AAAC,aAAM,EAAC,MAAK,gBAAe,aAAYZ,EAAC;AAAA,IAAC,GAAE,oBAAmB,SAASR,GAAE;AAAC,eAAQQ,IAAE,IAAGJ,IAAE,GAAEA,IAAEJ,EAAE,YAAY,QAAO,EAAEI,GAAE;AAAC,YAAIY,IAAEhB,EAAE,YAAYI,CAAC,GAAEgB,IAAEJ,EAAE;AAAkB,QAAAR,EAAE,KAAKmpB,GAAGvoB,CAAC,EAAE,KAAK,MAAKJ,CAAC,CAAC;AAAA,MAAC;AAAC,aAAM,EAAC,MAAK,sBAAqB,YAAWR,EAAC;AAAA,IAAC,EAAC;AAAE,WAAM,EAAC,UAASgpB,IAAG,eAAc,WAAU;AAAC,eAAShpB,EAAEJ,GAAE;AAAC,QAAAJ,EAAE,MAAKQ,CAAC,GAAE,KAAK,SAAO,IAAI6G,GAAGjH,KAAG,IAAIoiB,IAAE;AAAA,MAAC;AAAC,aAAOpiB,EAAEI,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,OAAO,KAAK,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAC,GAAG,eAAc,WAAU;AAAC,eAASA,IAAG;AAAC,QAAAR,EAAE,MAAKQ,CAAC,GAAE,KAAK,SAAO,IAAI6G,GAAG,KAAK,eAAe;AAAA,MAAC;AAAC,aAAOjH,EAAEI,GAAE,CAAC,EAAC,KAAI,SAAQ,OAAM,SAAS,GAAE;AAAC,eAAO,KAAK,OAAO,MAAM,CAAC;AAAA,MAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,IAAC,EAAG,EAAA;AAAA,EAAC,CAAC;;;;ACO/tzQ,SAAAopB,KAAW;AACxB,SAAO,IAAIC;AACb;AAEA,SAASA,KAAQ;AACf,OAAK,MAAK;AACZ;AAEAA,GAAM,YAAY;AAAA,EAChB,aAAaA;AAAA,EACb,OAAO,WAAW;AAChB,SAAK;AAAA,IACL,KAAK,IAAI;AAAA,EACV;AAAA,EACD,KAAK,SAAS5pB,GAAG;AACf,IAAA6pB,GAAIC,IAAM9pB,GAAG,KAAK,CAAC,GACnB6pB,GAAI,MAAMC,GAAK,GAAG,KAAK,CAAC,GACpB,KAAK,IAAG,KAAK,KAAKA,GAAK,IACtB,KAAK,IAAIA,GAAK;AAAA,EACpB;AAAA,EACD,SAAS,WAAW;AAClB,WAAO,KAAK;AAAA,EACb;AACH;AAEA,IAAIA,KAAO,IAAIF;AAEf,SAASC,GAAIF,GAAO/oB,GAAGC,GAAG;AACxB,MAAIsB,IAAIwnB,EAAM,IAAI/oB,IAAIC,GAClBkpB,IAAK5nB,IAAIvB,GACTopB,IAAK7nB,IAAI4nB;AACb,EAAAJ,EAAM,IAAK/oB,IAAIopB,KAAOnpB,IAAIkpB;AAC5B;ACvCO,IAAIplB,KAAU,MAEV8kB,KAAK,KAAK,IACVQ,KAASR,KAAK,GACdS,KAAYT,KAAK,GACjBU,KAAMV,KAAK,GAEXW,KAAU,MAAMX,IAChBpqB,KAAUoqB,KAAK,KAEfY,KAAM,KAAK,KACXC,KAAO,KAAK,MACZC,KAAQ,KAAK,OACbC,KAAM,KAAK,KAMXC,KAAM,KAAK,KAEXC,KAAO,KAAK;AAGhB,SAASC,GAAKxoB,GAAG;AACtB,SAAOA,IAAI,IAAI,IAAIA,IAAI,KAAKsnB,KAAK,KAAK,KAAKtnB,CAAC;AAC9C;AAEO,SAASyoB,GAAKzoB,GAAG;AACtB,SAAOA,IAAI,IAAI8nB,KAAS9nB,IAAI,KAAK,CAAC8nB,KAAS,KAAK,KAAK9nB,CAAC;AACxD;AC9Be,SAAS0V,KAAO;AAAA;ACA/B,SAASgT,GAAexU,GAAUyU,GAAQ;AACxC,EAAIzU,KAAY0U,GAAmB,eAAe1U,EAAS,IAAI,KAC7D0U,GAAmB1U,EAAS,IAAI,EAAEA,GAAUyU,CAAM;AAEtD;AAEA,IAAIE,KAAmB;AAAA,EACrB,SAAS,SAASC,GAAQH,GAAQ;AAChC,IAAAD,GAAeI,EAAO,UAAUH,CAAM;AAAA,EACvC;AAAA,EACD,mBAAmB,SAASG,GAAQH,GAAQ;AAE1C,aADI7rB,IAAWgsB,EAAO,UAAUlqB,IAAI,IAAIZ,IAAIlB,EAAS,QAC9C,EAAE8B,IAAIZ,IAAG,CAAA0qB,GAAe5rB,EAAS8B,CAAC,EAAE,UAAU+pB,CAAM;AAAA,EAC5D;AACH,GAEIC,KAAqB;AAAA,EACvB,QAAQ,SAASE,GAAQH,GAAQ;AAC/B,IAAAA,EAAO,OAAM;AAAA,EACd;AAAA,EACD,OAAO,SAASG,GAAQH,GAAQ;AAC9B,IAAAG,IAASA,EAAO,aAChBH,EAAO,MAAMG,EAAO,CAAC,GAAGA,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC;AAAA,EAC7C;AAAA,EACD,YAAY,SAASA,GAAQH,GAAQ;AAEnC,aADInsB,IAAcssB,EAAO,aAAalqB,IAAI,IAAIZ,IAAIxB,EAAY,QACvD,EAAEoC,IAAIZ,IAAG,CAAA8qB,IAAStsB,EAAYoC,CAAC,GAAG+pB,EAAO,MAAMG,EAAO,CAAC,GAAGA,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC;AAAA,EACtF;AAAA,EACD,YAAY,SAASA,GAAQH,GAAQ;AACnC,IAAAI,GAAWD,EAAO,aAAaH,GAAQ,CAAC;AAAA,EACzC;AAAA,EACD,iBAAiB,SAASG,GAAQH,GAAQ;AAExC,aADInsB,IAAcssB,EAAO,aAAalqB,IAAI,IAAIZ,IAAIxB,EAAY,QACvD,EAAEoC,IAAIZ,IAAG,CAAA+qB,GAAWvsB,EAAYoC,CAAC,GAAG+pB,GAAQ,CAAC;AAAA,EACrD;AAAA,EACD,SAAS,SAASG,GAAQH,GAAQ;AAChC,IAAAK,GAAcF,EAAO,aAAaH,CAAM;AAAA,EACzC;AAAA,EACD,cAAc,SAASG,GAAQH,GAAQ;AAErC,aADInsB,IAAcssB,EAAO,aAAalqB,IAAI,IAAIZ,IAAIxB,EAAY,QACvD,EAAEoC,IAAIZ,IAAG,CAAAgrB,GAAcxsB,EAAYoC,CAAC,GAAG+pB,CAAM;AAAA,EACrD;AAAA,EACD,oBAAoB,SAASG,GAAQH,GAAQ;AAE3C,aADIM,IAAaH,EAAO,YAAYlqB,IAAI,IAAIZ,IAAIirB,EAAW,QACpD,EAAErqB,IAAIZ,IAAG,CAAA0qB,GAAeO,EAAWrqB,CAAC,GAAG+pB,CAAM;AAAA,EACrD;AACH;AAEA,SAASI,GAAWvsB,GAAamsB,GAAQO,GAAQ;AAC/C,MAAItqB,IAAI,IAAIZ,IAAIxB,EAAY,SAAS0sB,GAAQC;AAE7C,OADAR,EAAO,UAAS,GACT,EAAE/pB,IAAIZ,IAAG,CAAAmrB,IAAa3sB,EAAYoC,CAAC,GAAG+pB,EAAO,MAAMQ,EAAW,CAAC,GAAGA,EAAW,CAAC,GAAGA,EAAW,CAAC,CAAC;AACrG,EAAAR,EAAO,QAAO;AAChB;AAEA,SAASK,GAAcxsB,GAAamsB,GAAQ;AAC1C,MAAI/pB,IAAI,IAAIZ,IAAIxB,EAAY;AAE5B,OADAmsB,EAAO,aAAY,GACZ,EAAE/pB,IAAIZ,IAAG,CAAA+qB,GAAWvsB,EAAYoC,CAAC,GAAG+pB,GAAQ,CAAC;AACpD,EAAAA,EAAO,WAAU;AACnB;AAEe,SAAAS,GAASN,GAAQH,GAAQ;AACtC,EAAIG,KAAUD,GAAiB,eAAeC,EAAO,IAAI,IACvDD,GAAiBC,EAAO,IAAI,EAAEA,GAAQH,CAAM,IAE5CD,GAAeI,GAAQH,CAAM;AAEjC;AC/DyBnB,GAAQ;AAEnBA,GAAO;ACLd,SAAS6B,GAAUC,GAAW;AACnC,SAAO,CAAClB,GAAMkB,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC,GAAGb,GAAKa,EAAU,CAAC,CAAC,CAAC;AAC/D;AAEO,SAASA,GAAUD,GAAW;AACnC,MAAIE,IAASF,EAAU,CAAC,GAAGG,IAAMH,EAAU,CAAC,GAAGI,IAASpB,GAAImB,CAAG;AAC/D,SAAO,CAACC,IAASpB,GAAIkB,CAAM,GAAGE,IAASnB,GAAIiB,CAAM,GAAGjB,GAAIkB,CAAG,CAAC;AAC9D;AAEO,SAASE,GAAajrB,GAAGC,GAAG;AACjC,SAAOD,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAID,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAID,EAAE,CAAC,IAAIC,EAAE,CAAC;AAC/C;AAEO,SAASirB,GAAelrB,GAAGC,GAAG;AACnC,SAAO,CAACD,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAID,EAAE,CAAC,IAAIC,EAAE,CAAC,GAAGD,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAID,EAAE,CAAC,IAAIC,EAAE,CAAC,GAAGD,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAID,EAAE,CAAC,IAAIC,EAAE,CAAC,CAAC;AACzF;AAGO,SAASkrB,GAAoBnrB,GAAGC,GAAG;AACxC,EAAAD,EAAE,CAAC,KAAKC,EAAE,CAAC,GAAGD,EAAE,CAAC,KAAKC,EAAE,CAAC,GAAGD,EAAE,CAAC,KAAKC,EAAE,CAAC;AACzC;AAEO,SAASmrB,GAAeC,GAAQ7V,GAAG;AACxC,SAAO,CAAC6V,EAAO,CAAC,IAAI7V,GAAG6V,EAAO,CAAC,IAAI7V,GAAG6V,EAAO,CAAC,IAAI7V,CAAC;AACrD;AAGO,SAAS8V,GAA0BjpB,GAAG;AAC3C,MAAI/B,IAAIwpB,GAAKznB,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,CAAC;AACpD,EAAAA,EAAE,CAAC,KAAK/B,GAAG+B,EAAE,CAAC,KAAK/B,GAAG+B,EAAE,CAAC,KAAK/B;AAChC;ACtBeyoB,GAAO;ACVP,SAAAwC,GAASvrB,GAAGC,GAAG;AAE5B,WAASsrB,EAAQhqB,GAAGnC,GAAG;AACrB,WAAOmC,IAAIvB,EAAEuB,GAAGnC,CAAC,GAAGa,EAAEsB,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AAAA,EACjC;AAED,SAAIvB,EAAE,UAAUC,EAAE,WAAQsrB,EAAQ,SAAS,SAAShqB,GAAGnC,GAAG;AACxD,WAAOmC,IAAItB,EAAE,OAAOsB,GAAGnC,CAAC,GAAGmC,KAAKvB,EAAE,OAAOuB,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AAAA,EACvD,IAESgqB;AACT;ACRA,SAASC,GAAiBV,GAAQC,GAAK;AACrC,SAAO,CAACD,IAASjC,KAAKiC,IAASvB,KAAMuB,IAAS,CAACjC,KAAKiC,IAASvB,KAAMuB,GAAQC,CAAG;AAChF;AAEAS,GAAiB,SAASA;AAEnB,SAASC,GAAcC,GAAaC,GAAUC,GAAY;AAC/D,UAAQF,KAAenC,MAAQoC,KAAYC,IAAaL,GAAQM,GAAeH,CAAW,GAAGI,GAAiBH,GAAUC,CAAU,CAAC,IAC/HC,GAAeH,CAAW,IACzBC,KAAYC,IAAaE,GAAiBH,GAAUC,CAAU,IAC/DJ;AACN;AAEA,SAASO,GAAsBL,GAAa;AAC1C,SAAO,SAASZ,GAAQC,GAAK;AAC3B,WAAOD,KAAUY,GAAa,CAACZ,IAASjC,KAAKiC,IAASvB,KAAMuB,IAAS,CAACjC,KAAKiC,IAASvB,KAAMuB,GAAQC,CAAG;AAAA,EACzG;AACA;AAEA,SAASc,GAAeH,GAAa;AACnC,MAAIM,IAAWD,GAAsBL,CAAW;AAChD,SAAAM,EAAS,SAASD,GAAsB,CAACL,CAAW,GAC7CM;AACT;AAEA,SAASF,GAAiBH,GAAUC,GAAY;AAC9C,MAAIK,IAAcrC,GAAI+B,CAAQ,GAC1BO,IAAcrC,GAAI8B,CAAQ,GAC1BQ,IAAgBvC,GAAIgC,CAAU,GAC9BQ,IAAgBvC,GAAI+B,CAAU;AAElC,WAASI,EAASlB,GAAQC,GAAK;AAC7B,QAAIC,IAASpB,GAAImB,CAAG,GAChBxpB,IAAIqoB,GAAIkB,CAAM,IAAIE,GAClB5rB,IAAIyqB,GAAIiB,CAAM,IAAIE,GAClB1N,IAAIuM,GAAIkB,CAAG,GACXvV,IAAI8H,IAAI2O,IAAc1qB,IAAI2qB;AAC9B,WAAO;AAAA,MACLvC,GAAMvqB,IAAI+sB,IAAgB3W,IAAI4W,GAAe7qB,IAAI0qB,IAAc3O,IAAI4O,CAAW;AAAA,MAC9ElC,GAAKxU,IAAI2W,IAAgB/sB,IAAIgtB,CAAa;AAAA,IAChD;AAAA,EACG;AAED,SAAAJ,EAAS,SAAS,SAASlB,GAAQC,GAAK;AACtC,QAAIC,IAASpB,GAAImB,CAAG,GAChBxpB,IAAIqoB,GAAIkB,CAAM,IAAIE,GAClB5rB,IAAIyqB,GAAIiB,CAAM,IAAIE,GAClB1N,IAAIuM,GAAIkB,CAAG,GACXvV,IAAI8H,IAAI6O,IAAgB/sB,IAAIgtB;AAChC,WAAO;AAAA,MACLzC,GAAMvqB,IAAI+sB,IAAgB7O,IAAI8O,GAAe7qB,IAAI0qB,IAAczW,IAAI0W,CAAW;AAAA,MAC9ElC,GAAKxU,IAAIyW,IAAc1qB,IAAI2qB,CAAW;AAAA,IAC5C;AAAA,EACA,GAESF;AACT;ACrDO,SAASK,GAAanC,GAAQoC,GAAQC,GAAOC,GAAW1lB,GAAID,GAAI;AACrE,MAAK0lB,GACL;AAAA,QAAIE,IAAY7C,GAAI0C,CAAM,GACtBI,IAAY7C,GAAIyC,CAAM,GACtB7sB,IAAO+sB,IAAYD;AACvB,IAAIzlB,KAAM,QACRA,IAAKwlB,IAASE,IAAYjD,IAC1B1iB,IAAKylB,IAAS7sB,IAAO,MAErBqH,IAAK6lB,GAAaF,GAAW3lB,CAAE,GAC/BD,IAAK8lB,GAAaF,GAAW5lB,CAAE,IAC3B2lB,IAAY,IAAI1lB,IAAKD,IAAKC,IAAKD,OAAIC,KAAM0lB,IAAYjD;AAE3D,aAASzrB,GAAOqB,IAAI2H,GAAI0lB,IAAY,IAAIrtB,IAAI0H,IAAK1H,IAAI0H,GAAI1H,KAAKM;AAC5D,MAAA3B,IAAQ8sB,GAAU,CAAC6B,GAAW,CAACC,IAAY9C,GAAIzqB,CAAC,GAAG,CAACutB,IAAY7C,GAAI1qB,CAAC,CAAC,CAAC,GACvE+qB,EAAO,MAAMpsB,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC;AAAA;AAEnC;AAGA,SAAS6uB,GAAaF,GAAW3uB,GAAO;AACtC,EAAAA,IAAQ+sB,GAAU/sB,CAAK,GAAGA,EAAM,CAAC,KAAK2uB,GACtCnB,GAA0BxtB,CAAK;AAC/B,MAAIwuB,IAASvC,GAAK,CAACjsB,EAAM,CAAC,CAAC;AAC3B,WAAS,CAACA,EAAM,CAAC,IAAI,IAAI,CAACwuB,IAASA,KAAU/C,KAAMxlB,MAAWwlB;AAChE;AC7Be,SAAAqD,KAAW;AACxB,MAAIC,IAAQ,CAAE,GACVC;AACJ,SAAO;AAAA,IACL,OAAO,SAASvrB,GAAGnC,GAAG;AACpB,MAAA0tB,EAAK,KAAK,CAACvrB,GAAGnC,CAAC,CAAC;AAAA,IACjB;AAAA,IACD,WAAW,WAAW;AACpB,MAAAytB,EAAM,KAAKC,IAAO,CAAA,CAAE;AAAA,IACrB;AAAA,IACD,SAAS7V;AAAA,IACT,QAAQ,WAAW;AACjB,MAAI4V,EAAM,SAAS,KAAGA,EAAM,KAAKA,EAAM,IAAG,EAAG,OAAOA,EAAM,MAAK,CAAE,CAAC;AAAA,IACnE;AAAA,IACD,QAAQ,WAAW;AACjB,UAAIjR,IAASiR;AACb,aAAAA,IAAQ,CAAA,GACRC,IAAO,MACAlR;AAAA,IACR;AAAA,EACL;AACA;ACvBe,SAAAmR,GAAS/sB,GAAGC,GAAG+sB,GAAIC,GAAIxiB,GAAIE,GAAI;AAC5C,MAAInF,IAAKxF,EAAE,CAAC,GACRyF,IAAKzF,EAAE,CAAC,GACR0F,IAAKzF,EAAE,CAAC,GACR0F,IAAK1F,EAAE,CAAC,GACR6G,IAAK,GACLD,IAAK,GACLqmB,IAAKxnB,IAAKF,GACV2nB,IAAKxnB,IAAKF,GACVlF;AAGJ,MADAA,IAAIysB,IAAKxnB,GACL,GAAC0nB,KAAM3sB,IAAI,IAEf;AAAA,QADAA,KAAK2sB,GACDA,IAAK,GAAG;AACV,UAAI3sB,IAAIuG,EAAI;AACZ,MAAIvG,IAAIsG,MAAIA,IAAKtG;AAAA,IACrB,WAAa2sB,IAAK,GAAG;AACjB,UAAI3sB,IAAIsG,EAAI;AACZ,MAAItG,IAAIuG,MAAIA,IAAKvG;AAAA,IAClB;AAGD,QADAA,IAAIkK,IAAKjF,GACL,GAAC0nB,KAAM3sB,IAAI,IAEf;AAAA,UADAA,KAAK2sB,GACDA,IAAK,GAAG;AACV,YAAI3sB,IAAIsG,EAAI;AACZ,QAAItG,IAAIuG,MAAIA,IAAKvG;AAAA,MACrB,WAAa2sB,IAAK,GAAG;AACjB,YAAI3sB,IAAIuG,EAAI;AACZ,QAAIvG,IAAIsG,MAAIA,IAAKtG;AAAA,MAClB;AAGD,UADAA,IAAI0sB,IAAKxnB,GACL,GAAC0nB,KAAM5sB,IAAI,IAEf;AAAA,YADAA,KAAK4sB,GACDA,IAAK,GAAG;AACV,cAAI5sB,IAAIuG,EAAI;AACZ,UAAIvG,IAAIsG,MAAIA,IAAKtG;AAAA,QACrB,WAAa4sB,IAAK,GAAG;AACjB,cAAI5sB,IAAIsG,EAAI;AACZ,UAAItG,IAAIuG,MAAIA,IAAKvG;AAAA,QAClB;AAGD,YADAA,IAAIoK,IAAKlF,GACL,GAAC0nB,KAAM5sB,IAAI,IAEf;AAAA,cADAA,KAAK4sB,GACDA,IAAK,GAAG;AACV,gBAAI5sB,IAAIsG,EAAI;AACZ,YAAItG,IAAIuG,MAAIA,IAAKvG;AAAA,UACrB,WAAa4sB,IAAK,GAAG;AACjB,gBAAI5sB,IAAIuG,EAAI;AACZ,YAAIvG,IAAIsG,MAAIA,IAAKtG;AAAA,UAClB;AAED,iBAAIuG,IAAK,MAAG9G,EAAE,CAAC,IAAIwF,IAAKsB,IAAKomB,GAAIltB,EAAE,CAAC,IAAIyF,IAAKqB,IAAKqmB,IAC9CtmB,IAAK,MAAG5G,EAAE,CAAC,IAAIuF,IAAKqB,IAAKqmB,GAAIjtB,EAAE,CAAC,IAAIwF,IAAKoB,IAAKsmB,IAC3C;AAAA;AAAA;AAAA;AAAA;AACT;ACxDe,SAAAC,GAASptB,GAAGC,GAAG;AAC5B,SAAOwpB,GAAIzpB,EAAE,CAAC,IAAIC,EAAE,CAAC,CAAC,IAAI8D,MAAW0lB,GAAIzpB,EAAE,CAAC,IAAIC,EAAE,CAAC,CAAC,IAAI8D;AAC1D;ACFA,SAASspB,GAAavvB,GAAOoU,GAAQ/G,GAAOmiB,GAAO;AACjD,OAAK,IAAIxvB,GACT,KAAK,IAAIoU,GACT,KAAK,IAAI/G,GACT,KAAK,IAAImiB,GACT,KAAK,IAAI,IACT,KAAK,IAAI,KAAK,IAAI;AACpB;AAKe,SAAQC,GAACC,GAAUC,GAAqBC,GAAaC,GAAazD,GAAQ;AACvF,MAAIhW,IAAU,CAAE,GACZ0Z,IAAO,CAAE,GACTztB,GACAZ;AAsBJ,MApBAiuB,EAAS,QAAQ,SAAS7c,GAAS;AACjC,QAAK,GAAApR,IAAIoR,EAAQ,SAAS,MAAM,IAChC;AAAA,UAAIpR,GAAGsuB,IAAKld,EAAQ,CAAC,GAAGhN,IAAKgN,EAAQpR,CAAC,GAAGgC;AAKzC,UAAI6rB,GAAWS,GAAIlqB,CAAE,GAAG;AAEtB,aADAumB,EAAO,UAAS,GACX/pB,IAAI,GAAGA,IAAIZ,GAAG,EAAEY,EAAG,CAAA+pB,EAAO,OAAO2D,IAAKld,EAAQxQ,CAAC,GAAG,CAAC,GAAG0tB,EAAG,CAAC,CAAC;AAChE,QAAA3D,EAAO,QAAO;AACd;AAAA,MACD;AAED,MAAAhW,EAAQ,KAAK3S,IAAI,IAAI8rB,GAAaQ,GAAIld,GAAS,MAAM,EAAI,CAAC,GAC1Did,EAAK,KAAKrsB,EAAE,IAAI,IAAI8rB,GAAaQ,GAAI,MAAMtsB,GAAG,EAAK,CAAC,GACpD2S,EAAQ,KAAK3S,IAAI,IAAI8rB,GAAa1pB,GAAIgN,GAAS,MAAM,EAAK,CAAC,GAC3Did,EAAK,KAAKrsB,EAAE,IAAI,IAAI8rB,GAAa1pB,GAAI,MAAMpC,GAAG,EAAI,CAAC;AAAA;AAAA,EACvD,CAAG,GAEG,EAAC2S,EAAQ,QAMb;AAAA,SAJA0Z,EAAK,KAAKH,CAAmB,GAC7BK,GAAK5Z,CAAO,GACZ4Z,GAAKF,CAAI,GAEJztB,IAAI,GAAGZ,IAAIquB,EAAK,QAAQztB,IAAIZ,GAAG,EAAEY;AACpC,MAAAytB,EAAKztB,CAAC,EAAE,IAAIutB,IAAc,CAACA;AAO7B,aAJIvqB,IAAQ+Q,EAAQ,CAAC,GACjBhC,GACApU,OAEM;AAIR,eAFI0D,IAAU2B,GACV+N,IAAY,IACT1P,EAAQ,IAAG,MAAKA,IAAUA,EAAQ,OAAO2B,EAAO;AACvD,MAAA+O,IAAS1Q,EAAQ,GACjB0oB,EAAO,UAAS;AAChB,SAAG;AAED,YADA1oB,EAAQ,IAAIA,EAAQ,EAAE,IAAI,IACtBA,EAAQ,GAAG;AACb,cAAI0P;AACF,iBAAK/Q,IAAI,GAAGZ,IAAI2S,EAAO,QAAQ/R,IAAIZ,GAAG,EAAEY,EAAG,CAAA+pB,EAAO,OAAOpsB,IAAQoU,EAAO/R,CAAC,GAAG,CAAC,GAAGrC,EAAM,CAAC,CAAC;AAAA;AAExF,YAAA6vB,EAAYnsB,EAAQ,GAAGA,EAAQ,EAAE,GAAG,GAAG0oB,CAAM;AAE/C,UAAA1oB,IAAUA,EAAQ;AAAA,QAC1B,OAAa;AACL,cAAI0P;AAEF,iBADAgB,IAAS1Q,EAAQ,EAAE,GACdrB,IAAI+R,EAAO,SAAS,GAAG/R,KAAK,GAAG,EAAEA,EAAG,CAAA+pB,EAAO,OAAOpsB,IAAQoU,EAAO/R,CAAC,GAAG,CAAC,GAAGrC,EAAM,CAAC,CAAC;AAAA;AAEtF,YAAA6vB,EAAYnsB,EAAQ,GAAGA,EAAQ,EAAE,GAAG,IAAI0oB,CAAM;AAEhD,UAAA1oB,IAAUA,EAAQ;AAAA,QACnB;AACD,QAAAA,IAAUA,EAAQ,GAClB0Q,IAAS1Q,EAAQ,GACjB0P,IAAY,CAACA;AAAA,MACnB,SAAa,CAAC1P,EAAQ;AAClB,MAAA0oB,EAAO,QAAO;AAAA,IACf;AAAA;AACH;AAEA,SAAS4D,GAAKC,GAAO;AACnB,MAAMxuB,IAAIwuB,EAAM,QAKhB;AAAA,aAJIxuB,GACAY,IAAI,GACJH,IAAI+tB,EAAM,CAAC,GACX9tB,GACG,EAAEE,IAAIZ;AACX,MAAAS,EAAE,IAAIC,IAAI8tB,EAAM5tB,CAAC,GACjBF,EAAE,IAAID,GACNA,IAAIC;AAEN,IAAAD,EAAE,IAAIC,IAAI8tB,EAAM,CAAC,GACjB9tB,EAAE,IAAID;AAAA;AACR;ACpGe,SAAAguB,GAAShuB,GAAGC,GAAG;AAC5B,SAAOD,IAAIC,IAAI,KAAKD,IAAIC,IAAI,IAAID,KAAKC,IAAI,IAAI;AAC/C;ACAe,SAAQguB,GAACxsB,GAAS;AAC/B,SAAIA,EAAQ,WAAW,MAAGA,IAAUysB,GAAoBzsB,CAAO,IACxD;AAAA,IACL,MAAM,SAASzB,GAAGuB,GAAG4sB,GAAI7F,GAAI;AAG3B,WAFI6F,KAAM,SAAMA,IAAK,IACjB7F,KAAM,SAAMA,IAAKtoB,EAAE,SAChBmuB,IAAK7F,KAAI;AACd,YAAI8F,IAAMD,IAAK7F,MAAO;AACtB,QAAI7mB,EAAQzB,EAAEouB,CAAG,GAAG7sB,CAAC,IAAI,IAAG4sB,IAAKC,IAAM,IAClC9F,IAAK8F;AAAA,MACX;AACD,aAAOD;AAAA,IACR;AAAA,IACD,OAAO,SAASnuB,GAAGuB,GAAG4sB,GAAI7F,GAAI;AAG5B,WAFI6F,KAAM,SAAMA,IAAK,IACjB7F,KAAM,SAAMA,IAAKtoB,EAAE,SAChBmuB,IAAK7F,KAAI;AACd,YAAI8F,IAAMD,IAAK7F,MAAO;AACtB,QAAI7mB,EAAQzB,EAAEouB,CAAG,GAAG7sB,CAAC,IAAI,IAAG+mB,IAAK8F,IAC5BD,IAAKC,IAAM;AAAA,MACjB;AACD,aAAOD;AAAA,IACR;AAAA,EACL;AACA;AAEA,SAASD,GAAoB9R,GAAG;AAC9B,SAAO,SAAS/Z,GAAGd,GAAG;AACpB,WAAOysB,GAAU5R,EAAE/Z,CAAC,GAAGd,CAAC;AAAA,EAC5B;AACA;AC7BsB0sB,GAASD,EAAS;ACHzB,SAAQltB,GAACutB,GAAQ;AAQ9B,WAPI9uB,IAAI8uB,EAAO,QACXhS,GACAlc,IAAI,IACJhC,IAAI,GACJmwB,GACAP,GAEG,EAAE5tB,IAAIZ,IAAG,CAAApB,KAAKkwB,EAAOluB,CAAC,EAAE;AAG/B,OAFAmuB,IAAS,IAAI,MAAMnwB,CAAC,GAEb,EAAEoB,KAAK;AAGZ,SAFAwuB,IAAQM,EAAO9uB,CAAC,GAChB8c,IAAI0R,EAAM,QACH,EAAE1R,KAAK;AACZ,MAAAiS,EAAO,EAAEnwB,CAAC,IAAI4vB,EAAM1R,CAAC;AAIzB,SAAOiS;AACT;ACdA,IAAIC,KAAU,KAAKC,KAAU,CAACD;AAKvB,SAASE,GAAWzB,GAAIC,GAAIxiB,GAAIE,GAAI;AAEzC,WAAS+jB,EAAQntB,GAAGnC,GAAG;AACrB,WAAO4tB,KAAMzrB,KAAKA,KAAKkJ,KAAMwiB,KAAM7tB,KAAKA,KAAKuL;AAAA,EAC9C;AAED,WAASgjB,EAAYgB,GAAMC,GAAIpC,GAAWtC,GAAQ;AAChD,QAAIlqB,IAAI,GAAG6uB,IAAK;AAChB,QAAIF,KAAQ,SACJ3uB,IAAI8uB,EAAOH,GAAMnC,CAAS,QAAQqC,IAAKC,EAAOF,GAAIpC,CAAS,MAC5DuC,EAAaJ,GAAMC,CAAE,IAAI,IAAIpC,IAAY;AAC9C;AAAG,QAAAtC,EAAO,MAAMlqB,MAAM,KAAKA,MAAM,IAAIgtB,IAAKviB,GAAIzK,IAAI,IAAI2K,IAAKsiB,CAAE;AAAA,cACrDjtB,KAAKA,IAAIwsB,IAAY,KAAK,OAAOqC;AAAA;AAEzC,MAAA3E,EAAO,MAAM0E,EAAG,CAAC,GAAGA,EAAG,CAAC,CAAC;AAAA,EAE5B;AAED,WAASE,EAAOvrB,GAAGipB,GAAW;AAC5B,WAAO/C,GAAIlmB,EAAE,CAAC,IAAIypB,CAAE,IAAIjpB,KAAUyoB,IAAY,IAAI,IAAI,IAChD/C,GAAIlmB,EAAE,CAAC,IAAIkH,CAAE,IAAI1G,KAAUyoB,IAAY,IAAI,IAAI,IAC/C/C,GAAIlmB,EAAE,CAAC,IAAI0pB,CAAE,IAAIlpB,KAAUyoB,IAAY,IAAI,IAAI,IAC/CA,IAAY,IAAI,IAAI;AAAA,EAC3B;AAED,WAASiB,EAAoBztB,GAAGC,GAAG;AACjC,WAAO8uB,EAAa/uB,EAAE,GAAGC,EAAE,CAAC;AAAA,EAC7B;AAED,WAAS8uB,EAAa/uB,GAAGC,GAAG;AAC1B,QAAI+uB,IAAKF,EAAO9uB,GAAG,CAAC,GAChBivB,IAAKH,EAAO7uB,GAAG,CAAC;AACpB,WAAO+uB,MAAOC,IAAKD,IAAKC,IAClBD,MAAO,IAAI/uB,EAAE,CAAC,IAAID,EAAE,CAAC,IACrBgvB,MAAO,IAAIhvB,EAAE,CAAC,IAAIC,EAAE,CAAC,IACrB+uB,MAAO,IAAIhvB,EAAE,CAAC,IAAIC,EAAE,CAAC,IACrBA,EAAE,CAAC,IAAID,EAAE,CAAC;AAAA,EACjB;AAED,SAAO,SAASkqB,GAAQ;AACtB,QAAIgF,IAAehF,GACfiF,IAAevC,GAAY,GAC3BY,GACAvvB,GACAC,GACAkxB,GAAKC,GAAKC,GACVC,GAAIC,GAAIC,GACRC,GACAC,GAEAC,IAAa;AAAA,MACf,OAAO9xB;AAAA,MACP,WAAW+xB;AAAA,MACX,SAASC;AAAA,MACT,cAAcC;AAAA,MACd,YAAYC;AAAA,IAClB;AAEI,aAASlyB,EAAMyD,IAAGnC,IAAG;AACnB,MAAIsvB,EAAQntB,IAAGnC,EAAC,KAAG8vB,EAAa,MAAM3tB,IAAGnC,EAAC;AAAA,IAC3C;AAED,aAAS6wB,IAAgB;AAGvB,eAFI1iB,KAAU,GAELpN,KAAI,GAAGZ,KAAItB,EAAQ,QAAQkC,KAAIZ,IAAG,EAAEY;AAC3C,iBAASjC,KAAOD,EAAQkC,EAAC,GAAGhC,KAAI,GAAGke,IAAIne,GAAK,QAAQJ,KAAQI,GAAK,CAAC,GAAGgyB,IAAIrB,IAAIsB,KAAKryB,GAAM,CAAC,GAAGiK,KAAKjK,GAAM,CAAC,GAAGK,KAAIke,GAAG,EAAEle;AAClH,UAAA+xB,KAAKC,IAAItB,KAAK9mB,IAAIjK,KAAQI,GAAKC,EAAC,GAAGgyB,KAAKryB,GAAM,CAAC,GAAGiK,KAAKjK,GAAM,CAAC,GAC1D+wB,MAAMlkB,IAAU5C,KAAK4C,MAAOwlB,KAAKD,OAAOvlB,IAAKkkB,OAAO9mB,KAAK8mB,OAAO7B,IAAKkD,OAAK,EAAE3iB,KACrExF,MAAM4C,MAAOwlB,KAAKD,OAAOvlB,IAAKkkB,OAAO9mB,KAAK8mB,OAAO7B,IAAKkD,OAAK,EAAE3iB;AAI5E,aAAOA;AAAA,IACR;AAGD,aAASwiB,KAAe;AACtB,MAAAb,IAAeC,GAAc3B,IAAW,CAAA,GAAIvvB,IAAU,CAAE,GAAE0xB,IAAQ;AAAA,IACnE;AAED,aAASK,KAAa;AACpB,UAAItC,KAAcuC,EAAe,GAC7BG,KAAcT,KAASjC,IACvBgB,MAAWlB,IAAW1sB,GAAM0sB,CAAQ,GAAG;AAC3C,OAAI4C,MAAe1B,QACjBxE,EAAO,aAAY,GACfkG,OACFlG,EAAO,UAAS,GAChByD,EAAY,MAAM,MAAM,GAAGzD,CAAM,GACjCA,EAAO,QAAO,IAEZwE,MACFnB,GAAYC,GAAUC,GAAqBC,IAAaC,GAAazD,CAAM,GAE7EA,EAAO,WAAU,IAEnBgF,IAAehF,GAAQsD,IAAWvvB,IAAUC,IAAO;AAAA,IACpD;AAED,aAAS2xB,KAAY;AACnB,MAAAD,EAAW,QAAQS,GACfpyB,KAASA,EAAQ,KAAKC,IAAO,CAAE,CAAA,GACnCwxB,IAAQ,IACRD,IAAK,IACLF,IAAKC,IAAK;AAAA,IACX;AAKD,aAASM,KAAU;AACjB,MAAItC,MACF6C,EAAUjB,GAAKC,CAAG,GACdC,KAAOG,KAAIN,EAAa,OAAM,GAClC3B,EAAS,KAAK2B,EAAa,OAAQ,CAAA,IAErCS,EAAW,QAAQ9xB,GACf2xB,KAAIP,EAAa;IACtB;AAED,aAASmB,EAAU9uB,IAAGnC,IAAG;AACvB,UAAII,KAAIkvB,EAAQntB,IAAGnC,EAAC;AAEpB,UADInB,KAASC,EAAK,KAAK,CAACqD,IAAGnC,EAAC,CAAC,GACzBswB;AACF,QAAAN,IAAM7tB,IAAG8tB,IAAMjwB,IAAGkwB,IAAM9vB,IACxBkwB,IAAQ,IACJlwB,OACF0vB,EAAa,UAAS,GACtBA,EAAa,MAAM3tB,IAAGnC,EAAC;AAAA,eAGrBI,MAAKiwB,EAAI,CAAAP,EAAa,MAAM3tB,IAAGnC,EAAC;AAAA,WAC/B;AACH,YAAIY,KAAI,CAACuvB,IAAK,KAAK,IAAIf,IAAS,KAAK,IAAID,IAASgB,CAAE,CAAC,GAAGC,IAAK,KAAK,IAAIhB,IAAS,KAAK,IAAID,IAASiB,CAAE,CAAC,CAAC,GACjGvvB,KAAI,CAACsB,KAAI,KAAK,IAAIitB,IAAS,KAAK,IAAID,IAAShtB,EAAC,CAAC,GAAGnC,KAAI,KAAK,IAAIovB,IAAS,KAAK,IAAID,IAASnvB,EAAC,CAAC,CAAC;AACjG,QAAI2tB,GAAS/sB,IAAGC,IAAG+sB,GAAIC,GAAIxiB,GAAIE,CAAE,KAC1B8kB,MACHP,EAAa,UAAS,GACtBA,EAAa,MAAMlvB,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,IAE/BkvB,EAAa,MAAMjvB,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,GACxBT,MAAG0vB,EAAa,WACrBS,IAAQ,MACCnwB,OACT0vB,EAAa,UAAS,GACtBA,EAAa,MAAM3tB,IAAGnC,EAAC,GACvBuwB,IAAQ;AAAA,MAEX;AAEH,MAAAJ,IAAKhuB,IAAGiuB,IAAKpwB,IAAGqwB,IAAKjwB;AAAA,IACtB;AAED,WAAOowB;AAAA,EACX;AACA;ACnKA,IAAI1rB,KAAM6kB,GAAK;AAEA,SAAAuH,GAASryB,GAASH,GAAO;AACtC,MAAIgtB,IAAShtB,EAAM,CAAC,GAChBitB,IAAMjtB,EAAM,CAAC,GACbyyB,IAAS,CAAC1G,GAAIiB,CAAM,GAAG,CAAClB,GAAIkB,CAAM,GAAG,CAAC,GACtC0F,IAAQ,GACRjjB,IAAU;AAEd,EAAArJ,GAAI,MAAK;AAET,WAAS/D,IAAI,GAAGZ,IAAItB,EAAQ,QAAQkC,IAAIZ,GAAG,EAAEY;AAC3C,QAAMkc,KAAKne,IAAOD,EAAQkC,CAAC,GAAG;AAS9B,eARIjC,GACAme,GACAoU,IAASvyB,EAAKme,IAAI,CAAC,GACnBqU,IAAUD,EAAO,CAAC,GAClBE,IAAOF,EAAO,CAAC,IAAI,IAAInH,IACvBsH,IAAU/G,GAAI8G,CAAI,GAClBE,IAAUjH,GAAI+G,CAAI,GAEbxyB,IAAI,GAAGA,IAAIke,GAAG,EAAEle,GAAGuyB,IAAUI,GAASF,IAAUG,GAASF,IAAUG,GAASP,IAASQ,GAAQ;AACpG,YAAIA,IAAS/yB,EAAKC,CAAC,GACf2yB,IAAUG,EAAO,CAAC,GAClBC,IAAOD,EAAO,CAAC,IAAI,IAAI3H,IACvByH,IAAUlH,GAAIqH,CAAI,GAClBF,IAAUpH,GAAIsH,CAAI,GAClB3E,IAAQuE,IAAUJ,GAClBS,IAAO5E,KAAS,IAAI,IAAI,IACxB6E,IAAWD,IAAO5E,GAClB8E,IAAeD,IAAWvI,IAC1BrT,KAAIob,IAAUG;AAOlB,YALA7sB,GAAI,IAAIylB,GAAMnU,KAAI2b,IAAOtH,GAAIuH,CAAQ,GAAGP,IAAUG,IAAUxb,KAAIoU,GAAIwH,CAAQ,CAAC,CAAC,GAC9EZ,KAASa,IAAe9E,IAAQ4E,IAAO5H,KAAMgD,GAIzC8E,IAAeX,KAAW5F,IAASgG,KAAWhG,GAAQ;AACxD,cAAIwG,KAAMpG,GAAeL,GAAU4F,CAAM,GAAG5F,GAAUoG,CAAM,CAAC;AAC7D,UAAA3F,GAA0BgG,EAAG;AAC7B,cAAI7c,KAAeyW,GAAeqF,GAAQe,EAAG;AAC7C,UAAAhG,GAA0B7W,EAAY;AACtC,cAAI8c,MAAUF,IAAe9E,KAAS,IAAI,KAAK,KAAKvC,GAAKvV,GAAa,CAAC,CAAC;AACxE,WAAIsW,IAAMwG,MAAUxG,MAAQwG,OAAWD,GAAI,CAAC,KAAKA,GAAI,CAAC,QACpD/jB,KAAW8jB,IAAe9E,KAAS,IAAI,IAAI;AAAA,QAE9C;AAAA,MACF;AAcH,UAAQiE,IAAQ,CAACzsB,MAAWysB,IAAQzsB,MAAWG,KAAM,CAACH,MAAYwJ,IAAU;AAC9E;AC9DgBwb,GAAO;ACLR,SAAQyI,GAACjwB,GAAG;AACzB,SAAOA;AACT;ACEcwnB;AACIA,GAAO;ACHzB,IAAIiE,KAAK,OACLC,KAAKD,IACLviB,KAAK,CAACuiB,IACNriB,KAAKF,IAELgnB,KAAe;AAAA,EACjB,OAAOC;AAAA,EACP,WAAWza;AAAA,EACX,SAASA;AAAA,EACT,cAAcA;AAAA,EACd,YAAYA;AAAA,EACZ,QAAQ,WAAW;AACjB,QAAI0a,IAAS,CAAC,CAAC3E,IAAIC,EAAE,GAAG,CAACxiB,IAAIE,EAAE,CAAC;AAChC,WAAAF,KAAKE,KAAK,EAAEsiB,KAAKD,KAAK,QACf2E;AAAA,EACR;AACH;AAEA,SAASD,GAAYnwB,GAAGnC,GAAG;AACzB,EAAImC,IAAIyrB,OAAIA,KAAKzrB,IACbA,IAAIkJ,OAAIA,KAAKlJ,IACbnC,IAAI6tB,OAAIA,KAAK7tB,IACbA,IAAIuL,OAAIA,KAAKvL;AACnB;ACrBgB2pB,GAAO;ACER,SAAQ6E,GAACgE,GAAc7E,GAAUY,GAAaxqB,GAAO;AAClE,SAAO,SAAS0uB,GAAQC,GAAM;AAC5B,QAAIhF,IAAOC,EAAS+E,CAAI,GACpBC,IAAeF,EAAO,OAAO1uB,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,GAC/C6uB,IAAapF,GAAY,GACzBqF,IAAWlF,EAASiF,CAAU,GAC9BE,IAAiB,IACjBj0B,GACAuvB,GACAtvB,GAEA0vB,IAAO;AAAA,MACT,OAAO9vB;AAAA,MACP,WAAW+xB;AAAA,MACX,SAASC;AAAA,MACT,cAAc,WAAW;AACvB,QAAAlC,EAAK,QAAQuE,GACbvE,EAAK,YAAYwE,GACjBxE,EAAK,UAAUyE,GACf7E,IAAW,CAAA,GACXvvB,IAAU,CAAA;AAAA,MACX;AAAA,MACD,YAAY,WAAW;AACrB,QAAA2vB,EAAK,QAAQ9vB,GACb8vB,EAAK,YAAYiC,GACjBjC,EAAK,UAAUkC,GACftC,IAAW1sB,GAAM0sB,CAAQ;AACzB,YAAIE,IAAc4C,GAAgBryB,GAAS8zB,CAAY;AACvD,QAAIvE,EAAS,UACN0E,MAAgBJ,EAAK,aAAY,GAAII,IAAiB,KAC3D3E,GAAYC,GAAUC,IAAqBC,GAAaC,GAAamE,CAAI,KAChEpE,MACJwE,MAAgBJ,EAAK,aAAY,GAAII,IAAiB,KAC3DJ,EAAK,UAAS,GACdnE,EAAY,MAAM,MAAM,GAAGmE,CAAI,GAC/BA,EAAK,QAAO,IAEVI,MAAgBJ,EAAK,WAAU,GAAII,IAAiB,KACxD1E,IAAWvvB,IAAU;AAAA,MACtB;AAAA,MACD,QAAQ,WAAW;AACjB,QAAA6zB,EAAK,aAAY,GACjBA,EAAK,UAAS,GACdnE,EAAY,MAAM,MAAM,GAAGmE,CAAI,GAC/BA,EAAK,QAAO,GACZA,EAAK,WAAU;AAAA,MAChB;AAAA,IACP;AAEI,aAASh0B,EAAMgtB,GAAQC,GAAK;AAC1B,UAAIjtB,IAAQ+zB,EAAO/G,GAAQC,CAAG;AAC9B,MAAI6G,EAAa9G,IAAShtB,EAAM,CAAC,GAAGitB,IAAMjtB,EAAM,CAAC,CAAC,KAAGg0B,EAAK,MAAMhH,GAAQC,CAAG;AAAA,IAC5E;AAED,aAASuH,EAAUxH,GAAQC,GAAK;AAC9B,UAAIjtB,IAAQ+zB,EAAO/G,GAAQC,CAAG;AAC9B,MAAA+B,EAAK,MAAMhvB,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC;AAAA,IAC9B;AAED,aAAS+xB,IAAY;AACnB,MAAAjC,EAAK,QAAQ0E,GACbxF,EAAK,UAAS;AAAA,IACf;AAED,aAASgD,IAAU;AACjB,MAAAlC,EAAK,QAAQ9vB,GACbgvB,EAAK,QAAO;AAAA,IACb;AAED,aAASqF,EAAUrH,GAAQC,GAAK;AAC9B,MAAA7sB,EAAK,KAAK,CAAC4sB,GAAQC,CAAG,CAAC;AACvB,UAAIjtB,IAAQ+zB,EAAO/G,GAAQC,CAAG;AAC9B,MAAAkH,EAAS,MAAMn0B,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC;AAAA,IAClC;AAED,aAASs0B,IAAY;AACnB,MAAAH,EAAS,UAAS,GAClB/zB,IAAO,CAAA;AAAA,IACR;AAED,aAASm0B,IAAU;AACjB,MAAAF,EAAUj0B,EAAK,CAAC,EAAE,CAAC,GAAGA,EAAK,CAAC,EAAE,CAAC,CAAC,GAChC+zB,EAAS,QAAO;AAEhB,UAAItC,IAAQsC,EAAS,MAAO,GACxBM,IAAeP,EAAW,OAAQ,GAClC7xB,GAAGZ,IAAIgzB,EAAa,QAAQlW,IAC5B1L,IACA7S;AAMJ,UAJAI,EAAK,IAAG,GACRD,EAAQ,KAAKC,CAAI,GACjBA,IAAO,MAEH,EAACqB,GAGL;AAAA,YAAIowB,IAAQ,GAAG;AAEb,cADAhf,KAAU4hB,EAAa,CAAC,IACnBlW,KAAI1L,GAAQ,SAAS,KAAK,GAAG;AAGhC,iBAFKuhB,MAAgBJ,EAAK,aAAY,GAAII,IAAiB,KAC3DJ,EAAK,UAAS,GACT3xB,IAAI,GAAGA,IAAIkc,IAAG,EAAElc,EAAG,CAAA2xB,EAAK,OAAOh0B,KAAQ6S,GAAQxQ,CAAC,GAAG,CAAC,GAAGrC,GAAM,CAAC,CAAC;AACpE,YAAAg0B,EAAK,QAAO;AAAA,UACb;AACD;AAAA,QACD;AAID,QAAIvyB,IAAI,KAAKowB,IAAQ,KAAG4C,EAAa,KAAKA,EAAa,IAAK,EAAC,OAAOA,EAAa,MAAK,CAAE,CAAC,GAEzF/E,EAAS,KAAK+E,EAAa,OAAOC,EAAY,CAAC;AAAA;AAAA,IAChD;AAED,WAAO5E;AAAA,EACX;AACA;AAEA,SAAS4E,GAAa7hB,GAAS;AAC7B,SAAOA,EAAQ,SAAS;AAC1B;AAIA,SAAS8c,GAAoBztB,GAAGC,GAAG;AACjC,WAASD,IAAIA,EAAE,GAAG,CAAC,IAAI,IAAIA,EAAE,CAAC,IAAIqpB,KAAStlB,KAAUslB,KAASrpB,EAAE,CAAC,OACxDC,IAAIA,EAAE,GAAG,CAAC,IAAI,IAAIA,EAAE,CAAC,IAAIopB,KAAStlB,KAAUslB,KAASppB,EAAE,CAAC;AACnE;ACnIA,MAAAwyB,KAAe7E;AAAA,EACb,WAAW;AAAE,WAAO;AAAA,EAAO;AAAA,EAC3B8E;AAAA,EACAC;AAAA,EACA,CAAC,CAAC9J,IAAI,CAACQ,EAAM;AACf;AAKA,SAASqJ,GAAqBxI,GAAQ;AACpC,MAAIwG,IAAU,KACVC,IAAO,KACPiC,IAAQ,KACRjD;AAEJ,SAAO;AAAA,IACL,WAAW,WAAW;AACpB,MAAAzF,EAAO,UAAS,GAChByF,IAAQ;AAAA,IACT;AAAA,IACD,OAAO,SAASmB,GAASI,GAAM;AAC7B,UAAI2B,IAAQ/B,IAAU,IAAIjI,KAAK,CAACA,IAC5B0D,IAAQ9C,GAAIqH,IAAUJ,CAAO;AACjC,MAAIjH,GAAI8C,IAAQ1D,EAAE,IAAI9kB,MACpBmmB,EAAO,MAAMwG,GAASC,KAAQA,IAAOO,KAAQ,IAAI,IAAI7H,KAAS,CAACA,EAAM,GACrEa,EAAO,MAAM0I,GAAOjC,CAAI,GACxBzG,EAAO,QAAO,GACdA,EAAO,UAAS,GAChBA,EAAO,MAAM2I,GAAOlC,CAAI,GACxBzG,EAAO,MAAM4G,GAASH,CAAI,GAC1BhB,IAAQ,KACCiD,MAAUC,KAAStG,KAAS1D,OACjCY,GAAIiH,IAAUkC,CAAK,IAAI7uB,OAAS2sB,KAAWkC,IAAQ7uB,KACnD0lB,GAAIqH,IAAU+B,CAAK,IAAI9uB,OAAS+sB,KAAW+B,IAAQ9uB,KACvD4sB,IAAOmC,GAA0BpC,GAASC,GAAMG,GAASI,CAAI,GAC7DhH,EAAO,MAAM0I,GAAOjC,CAAI,GACxBzG,EAAO,QAAO,GACdA,EAAO,UAAS,GAChBA,EAAO,MAAM2I,GAAOlC,CAAI,GACxBhB,IAAQ,IAEVzF,EAAO,MAAMwG,IAAUI,GAASH,IAAOO,CAAI,GAC3C0B,IAAQC;AAAA,IACT;AAAA,IACD,SAAS,WAAW;AAClB,MAAA3I,EAAO,QAAO,GACdwG,IAAUC,IAAO;AAAA,IAClB;AAAA,IACD,OAAO,WAAW;AAChB,aAAO,IAAIhB;AAAA,IACZ;AAAA,EACL;AACA;AAEA,SAASmD,GAA0BpC,GAASC,GAAMG,GAASI,GAAM;AAC/D,MAAIL,GACAG,GACA+B,IAAoBlJ,GAAI6G,IAAUI,CAAO;AAC7C,SAAOrH,GAAIsJ,CAAiB,IAAIhvB,KAC1B2lB,IAAMG,GAAI8G,CAAI,KAAKK,IAAUpH,GAAIsH,CAAI,KAAKrH,GAAIiH,CAAO,IACjDjH,GAAIqH,CAAI,KAAKL,IAAUjH,GAAI+G,CAAI,KAAK9G,GAAI6G,CAAO,MAC9CG,IAAUG,IAAU+B,EAAkB,KAC1CpC,IAAOO,KAAQ;AACxB;AAEA,SAASyB,GAA4BhE,GAAMC,GAAIpC,GAAWtC,GAAQ;AAChE,MAAIa;AACJ,MAAI4D,KAAQ;AACV,IAAA5D,IAAMyB,IAAYnD,IAClBa,EAAO,MAAM,CAACrB,IAAIkC,CAAG,GACrBb,EAAO,MAAM,GAAGa,CAAG,GACnBb,EAAO,MAAMrB,IAAIkC,CAAG,GACpBb,EAAO,MAAMrB,IAAI,CAAC,GAClBqB,EAAO,MAAMrB,IAAI,CAACkC,CAAG,GACrBb,EAAO,MAAM,GAAG,CAACa,CAAG,GACpBb,EAAO,MAAM,CAACrB,IAAI,CAACkC,CAAG,GACtBb,EAAO,MAAM,CAACrB,IAAI,CAAC,GACnBqB,EAAO,MAAM,CAACrB,IAAIkC,CAAG;AAAA,WACZtB,GAAIkF,EAAK,CAAC,IAAIC,EAAG,CAAC,CAAC,IAAI7qB,IAAS;AACzC,QAAI+mB,IAAS6D,EAAK,CAAC,IAAIC,EAAG,CAAC,IAAI/F,KAAK,CAACA;AACrC,IAAAkC,IAAMyB,IAAY1B,IAAS,GAC3BZ,EAAO,MAAM,CAACY,GAAQC,CAAG,GACzBb,EAAO,MAAM,GAAGa,CAAG,GACnBb,EAAO,MAAMY,GAAQC,CAAG;AAAA,EAC5B;AACI,IAAAb,EAAO,MAAM0E,EAAG,CAAC,GAAGA,EAAG,CAAC,CAAC;AAE7B;ACrFe,SAAAoE,GAAS1G,GAAQC,GAAO;AACrC,MAAI0G,IAAKrJ,GAAI0C,CAAM,GACf4G,IAAcD,IAAK,GACnBE,IAAgB1J,GAAIwJ,CAAE,IAAIlvB;AAE9B,WAAS4pB,EAAYgB,GAAMC,GAAIpC,GAAWtC,GAAQ;AAChD,IAAAmC,GAAanC,GAAQoC,GAAQC,GAAOC,GAAWmC,GAAMC,CAAE;AAAA,EACxD;AAED,WAASF,EAAQ5D,GAAQC,GAAK;AAC5B,WAAOnB,GAAIkB,CAAM,IAAIlB,GAAImB,CAAG,IAAIkI;AAAA,EACjC;AAMD,WAASlG,EAAS7C,GAAQ;AACxB,QAAIuG,GACA2C,GACAC,GACAC,GACA3D;AACJ,WAAO;AAAA,MACL,WAAW,WAAW;AACpB,QAAA2D,IAAMD,IAAK,IACX1D,IAAQ;AAAA,MACT;AAAA,MACD,OAAO,SAAS7E,GAAQC,GAAK;AAC3B,YAAIkG,IAAS,CAACnG,GAAQC,CAAG,GACrBwI,GACA/zB,IAAIkvB,EAAQ5D,GAAQC,CAAG,GACvB5kB,IAAI+sB,IACA1zB,IAAI,IAAIg0B,EAAK1I,GAAQC,CAAG,IACxBvrB,IAAIg0B,EAAK1I,KAAUA,IAAS,IAAIjC,KAAK,CAACA,KAAKkC,CAAG,IAAI;AAY1D,YAXI,CAAC0F,MAAW6C,IAAMD,IAAK7zB,MAAI0qB,EAAO,aAGlC1qB,MAAM6zB,MACRE,IAASE,EAAUhD,GAAQQ,CAAM,IAC7B,CAACsC,KAAUnG,GAAWqD,GAAQ8C,CAAM,KAAKnG,GAAW6D,GAAQsC,CAAM,OACpEtC,EAAO,CAAC,KAAKltB,IACbktB,EAAO,CAAC,KAAKltB,IACbvE,IAAIkvB,EAAQuC,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,KAGhCzxB,MAAM6zB;AACR,UAAA1D,IAAQ,GACJnwB,KAEF0qB,EAAO,UAAS,GAChBqJ,IAASE,EAAUxC,GAAQR,CAAM,GACjCvG,EAAO,MAAMqJ,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,MAGjCA,IAASE,EAAUhD,GAAQQ,CAAM,GACjC/G,EAAO,MAAMqJ,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,GACjCrJ,EAAO,QAAO,IAEhBuG,IAAS8C;AAAA,iBACAJ,KAAiB1C,KAAUyC,IAAc1zB,GAAG;AACrD,cAAIL;AAGJ,UAAI,EAAEgH,IAAIitB,OAAQj0B,IAAIs0B,EAAUxC,GAAQR,GAAQ,EAAI,OAClDd,IAAQ,GACJuD,KACFhJ,EAAO,UAAS,GAChBA,EAAO,MAAM/qB,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAAC,CAAC,GAC7B+qB,EAAO,MAAM/qB,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAAC,CAAC,GAC7B+qB,EAAO,QAAO,MAEdA,EAAO,MAAM/qB,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAAC,CAAC,GAC7B+qB,EAAO,QAAO,GACdA,EAAO,UAAS,GAChBA,EAAO,MAAM/qB,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAAC,CAAC;AAAA,QAGlC;AACD,QAAIK,MAAM,CAACixB,KAAU,CAACrD,GAAWqD,GAAQQ,CAAM,MAC7C/G,EAAO,MAAM+G,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,GAEnCR,IAASQ,GAAQoC,IAAK7zB,GAAG4zB,IAAKjtB;AAAA,MAC/B;AAAA,MACD,SAAS,WAAW;AAClB,QAAIktB,KAAInJ,EAAO,WACfuG,IAAS;AAAA,MACV;AAAA;AAAA;AAAA,MAGD,OAAO,WAAW;AAChB,eAAOd,KAAU2D,KAAOD,MAAO;AAAA,MAChC;AAAA,IACP;AAAA,EACG;AAGD,WAASI,EAAUzzB,GAAGC,GAAGyzB,GAAK;AAC5B,QAAIC,IAAK9I,GAAU7qB,CAAC,GAChB4zB,IAAK/I,GAAU5qB,CAAC,GAIhB4zB,IAAK,CAAC,GAAG,GAAG,CAAC,GACbC,IAAK5I,GAAeyI,GAAIC,CAAE,GAC1BG,IAAO9I,GAAa6I,GAAIA,CAAE,GAC1BE,IAAOF,EAAG,CAAC,GACXG,IAAcF,IAAOC,IAAOA;AAGhC,QAAI,CAACC,EAAa,QAAO,CAACP,KAAO1zB;AAEjC,QAAIk0B,IAAMjB,IAAKc,IAAOE,GAClBE,IAAK,CAAClB,IAAKe,IAAOC,GAClBG,IAAQlJ,GAAe2I,GAAIC,CAAE,GAC7B9W,IAAIoO,GAAeyI,GAAIK,CAAE,GACzBhvB,IAAIkmB,GAAe0I,GAAIK,CAAE;AAC7B,IAAAhJ,GAAoBnO,GAAG9X,CAAC;AAGxB,QAAII,IAAI8uB,GACJvX,KAAIoO,GAAajO,GAAG1X,CAAC,GACrB+uB,KAAKpJ,GAAa3lB,GAAGA,CAAC,GACtBgvB,KAAKzX,KAAIA,KAAIwX,MAAMpJ,GAAajO,GAAGA,CAAC,IAAI;AAE5C,QAAI,EAAAsX,KAAK,IAET;AAAA,UAAIn1B,KAAI2qB,GAAKwK,EAAE,GACXlX,IAAIgO,GAAe9lB,IAAI,CAACuX,KAAI1d,MAAKk1B,EAAE;AAIvC,UAHAlJ,GAAoB/N,GAAGJ,CAAC,GACxBI,IAAIwN,GAAUxN,CAAC,GAEX,CAACsW,EAAK,QAAOtW;AAGjB,UAAIsT,KAAU1wB,EAAE,CAAC,GACb8wB,KAAU7wB,EAAE,CAAC,GACb0wB,KAAO3wB,EAAE,CAAC,GACVkxB,KAAOjxB,EAAE,CAAC,GACVqd;AAEJ,MAAIwT,KAAUJ,OAASpT,KAAIoT,IAASA,KAAUI,IAASA,KAAUxT;AAEjE,UAAIiP,IAAQuE,KAAUJ,IAClB6D,KAAQ9K,GAAI8C,IAAQ1D,EAAE,IAAI9kB,IAC1BywB,KAAWD,MAAShI,IAAQxoB;AAKhC,UAHI,CAACwwB,MAASrD,KAAOP,OAAMrT,KAAIqT,IAAMA,KAAOO,IAAMA,KAAO5T,KAGrDkX,KACED,KACE5D,KAAOO,KAAO,IAAI9T,EAAE,CAAC,KAAKqM,GAAIrM,EAAE,CAAC,IAAIsT,EAAO,IAAI3sB,KAAU4sB,KAAOO,MACjEP,MAAQvT,EAAE,CAAC,KAAKA,EAAE,CAAC,KAAK8T,KAC1B3E,IAAQ1D,MAAM6H,MAAWtT,EAAE,CAAC,KAAKA,EAAE,CAAC,KAAK0T,KAAU;AACvD,YAAI2D,KAAKrJ,GAAe9lB,IAAI,CAACuX,KAAI1d,MAAKk1B,EAAE;AACxC,eAAAlJ,GAAoBsJ,IAAIzX,CAAC,GAClB,CAACI,GAAGwN,GAAU6J,EAAE,CAAC;AAAA,MACzB;AAAA;AAAA,EACF;AAID,WAASjB,EAAK1I,GAAQC,GAAK;AACzB,QAAIxqB,IAAI2yB,IAAc5G,IAASzD,KAAKyD,GAChCkH,IAAO;AACX,WAAI1I,IAAS,CAACvqB,IAAGizB,KAAQ,IAChB1I,IAASvqB,MAAGizB,KAAQ,IACzBzI,IAAM,CAACxqB,IAAGizB,KAAQ,IACbzI,IAAMxqB,MAAGizB,KAAQ,IACnBA;AAAA,EACR;AAED,SAAO5F,GAAKc,GAAS3B,GAAUY,GAAauF,IAAc,CAAC,GAAG,CAAC5G,CAAM,IAAI,CAAC,CAACzD,IAAIyD,IAASzD,EAAE,CAAC;AAC7F;AC9KO,SAAS6L,GAAYC,GAAS;AACnC,SAAO,SAASzK,GAAQ;AACtB,QAAIjO,IAAI,IAAI2Y;AACZ,aAAS/0B,KAAO80B,EAAS,CAAA1Y,EAAEpc,CAAG,IAAI80B,EAAQ90B,CAAG;AAC7C,WAAAoc,EAAE,SAASiO,GACJjO;AAAA,EACX;AACA;AAEA,SAAS2Y,KAAkB;AAAE;AAE7BA,GAAgB,YAAY;AAAA,EAC1B,aAAaA;AAAA,EACb,OAAO,SAASrzB,GAAGnC,GAAG;AAAE,SAAK,OAAO,MAAMmC,GAAGnC,CAAC;AAAA,EAAI;AAAA,EAClD,QAAQ,WAAW;AAAE,SAAK,OAAO,OAAQ;AAAA,EAAG;AAAA,EAC5C,WAAW,WAAW;AAAE,SAAK,OAAO,UAAW;AAAA,EAAG;AAAA,EAClD,SAAS,WAAW;AAAE,SAAK,OAAO,QAAS;AAAA,EAAG;AAAA,EAC9C,cAAc,WAAW;AAAE,SAAK,OAAO,aAAc;AAAA,EAAG;AAAA,EACxD,YAAY,WAAW;AAAE,SAAK,OAAO,WAAY;AAAA,EAAG;AACtD;ACtBO,SAASy1B,GAAUC,GAAYC,GAAQ1K,GAAQ;AACpD,MAAIxN,IAAIkY,EAAO,CAAC,EAAE,CAAC,IAAIA,EAAO,CAAC,EAAE,CAAC,GAC9B,IAAIA,EAAO,CAAC,EAAE,CAAC,IAAIA,EAAO,CAAC,EAAE,CAAC,GAC9BnH,IAAOkH,EAAW,cAAcA,EAAW,WAAU;AAEzD,EAAAA,EACK,MAAM,GAAG,EACT,UAAU,CAAC,GAAG,CAAC,CAAC,GAEjBlH,KAAQ,QAAMkH,EAAW,WAAW,IAAI,GAE5CnK,GAAUN,GAAQyK,EAAW,OAAOrD,EAAY,CAAC;AAEjD,MAAIxxB,IAAIwxB,GAAa,OAAQ,GACzBjc,IAAI,KAAK,IAAIqH,KAAK5c,EAAE,CAAC,EAAE,CAAC,IAAIA,EAAE,CAAC,EAAE,CAAC,IAAI,KAAKA,EAAE,CAAC,EAAE,CAAC,IAAIA,EAAE,CAAC,EAAE,CAAC,EAAE,GAC7DsB,IAAI,CAACwzB,EAAO,CAAC,EAAE,CAAC,KAAKlY,IAAIrH,KAAKvV,EAAE,CAAC,EAAE,CAAC,IAAIA,EAAE,CAAC,EAAE,CAAC,MAAM,GACpDb,IAAI,CAAC21B,EAAO,CAAC,EAAE,CAAC,KAAK,IAAIvf,KAAKvV,EAAE,CAAC,EAAE,CAAC,IAAIA,EAAE,CAAC,EAAE,CAAC,MAAM;AAExD,SAAI2tB,KAAQ,QAAMkH,EAAW,WAAWlH,CAAI,GAErCkH,EACF,MAAMtf,IAAI,GAAG,EACb,UAAU,CAACjU,GAAGnC,CAAC,CAAC;AACvB;AAEO,SAAS41B,GAAQF,GAAYpyB,GAAM2nB,GAAQ;AAChD,SAAOwK,GAAUC,GAAY,CAAC,CAAC,GAAG,CAAC,GAAGpyB,CAAI,GAAG2nB,CAAM;AACrD;AC1BA,IAAI4K,KAAW,IACXC,KAAiBtL,GAAI,KAAKnrB,EAAO;AAEtB,SAAA02B,GAASC,GAASC,GAAQ;AACvC,SAAO,CAACA,IAASF,GAASC,GAASC,CAAM,IAAIC,GAAaF,CAAO;AACnE;AAEA,SAASE,GAAaF,GAAS;AAC7B,SAAOV,GAAY;AAAA,IACjB,OAAO,SAASnzB,GAAGnC,GAAG;AACpB,MAAAmC,IAAI6zB,EAAQ7zB,GAAGnC,CAAC,GAChB,KAAK,OAAO,MAAMmC,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AAAA,IAC7B;AAAA,EACL,CAAG;AACH;AAEA,SAAS4zB,GAASC,GAASC,GAAQ;AAEjC,WAASE,EAAevI,GAAIC,GAAIyD,GAASR,GAAIC,GAAIiD,GAAI3oB,GAAIE,GAAImmB,GAASjC,GAAI9mB,GAAImsB,GAAIsB,GAAOtL,GAAQ;AAC/F,QAAIgD,IAAKziB,IAAKuiB,GACVG,IAAKxiB,IAAKsiB,GACVziB,IAAK0iB,IAAKA,IAAKC,IAAKA;AACxB,QAAI3iB,IAAK,IAAI6qB,KAAUG,KAAS;AAC9B,UAAIx1B,IAAIkwB,IAAKrB,GACT5uB,IAAIkwB,IAAKpoB,GACT5B,IAAIitB,IAAKc,GACT7X,IAAIyN,GAAK9pB,IAAIA,IAAIC,IAAIA,IAAIkG,IAAIA,CAAC,GAC9BsvB,IAAOzL,GAAK7jB,KAAKkW,CAAC,GAClBqZ,IAAUjM,GAAIA,GAAItjB,CAAC,IAAI,CAAC,IAAIpC,MAAW0lB,GAAIiH,IAAUI,CAAO,IAAI/sB,MAAW2sB,IAAUI,KAAW,IAAInH,GAAM1pB,GAAGD,CAAC,GAC9GuD,KAAI6xB,EAAQM,GAASD,CAAI,GACzB/qB,KAAKnH,GAAE,CAAC,GACRqH,KAAKrH,GAAE,CAAC,GACRoyB,KAAMjrB,KAAKsiB,GACX4I,IAAMhrB,KAAKqiB,GACX4I,KAAK1I,IAAKwI,KAAMzI,IAAK0I;AACzB,OAAIC,KAAKA,KAAKrrB,IAAK6qB,KACZ5L,IAAKyD,IAAKyI,KAAMxI,IAAKyI,KAAOprB,IAAK,GAAG,IAAI,OACxC0lB,IAAKrB,IAAKsB,IAAKpoB,IAAKqrB,IAAKc,IAAKgB,QACnCK,EAAevI,GAAIC,GAAIyD,GAASR,GAAIC,GAAIiD,GAAI1oB,IAAIE,IAAI8qB,GAAS11B,KAAKqc,GAAGpc,KAAKoc,GAAGlW,GAAGqvB,GAAOtL,CAAM,GAC7FA,EAAO,MAAMxf,IAAIE,EAAE,GACnB2qB,EAAe7qB,IAAIE,IAAI8qB,GAAS11B,GAAGC,GAAGkG,GAAGsE,GAAIE,GAAImmB,GAASjC,GAAI9mB,GAAImsB,GAAIsB,GAAOtL,CAAM;AAAA,IAEtF;AAAA,EACF;AACD,SAAO,SAASA,GAAQ;AACtB,QAAI4L,GAAUC,GAAKC,GAAKC,GAAKC,GAAKC,GAC9BzF,GAAS1D,GAAIC,GAAIiD,GAAIC,GAAIiD,GAEzBgD,IAAiB;AAAA,MACnB,OAAOt4B;AAAA,MACP,WAAW+xB;AAAA,MACX,SAASC;AAAA,MACT,cAAc,WAAW;AAAE,QAAA5F,EAAO,aAAY,GAAIkM,EAAe,YAAYhE;AAAA,MAAY;AAAA,MACzF,YAAY,WAAW;AAAE,QAAAlI,EAAO,WAAU,GAAIkM,EAAe,YAAYvG;AAAA,MAAY;AAAA,IAC3F;AAEI,aAAS/xB,EAAMyD,GAAGnC,GAAG;AACnB,MAAAmC,IAAI6zB,EAAQ7zB,GAAGnC,CAAC,GAChB8qB,EAAO,MAAM3oB,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AAAA,IACxB;AAED,aAASsuB,IAAY;AACnB,MAAA7C,IAAK,KACLoJ,EAAe,QAAQ/F,GACvBnG,EAAO,UAAS;AAAA,IACjB;AAED,aAASmG,EAAUvF,GAAQC,GAAK;AAC9B,UAAI5kB,KAAI0kB,GAAU,CAACC,GAAQC,CAAG,CAAC,GAAGxnB,KAAI6xB,EAAQtK,GAAQC,CAAG;AACzD,MAAAwK,EAAevI,GAAIC,GAAIyD,GAASR,GAAIC,GAAIiD,GAAIpG,IAAKzpB,GAAE,CAAC,GAAG0pB,IAAK1pB,GAAE,CAAC,GAAGmtB,IAAU5F,GAAQoF,IAAK/pB,GAAE,CAAC,GAAGgqB,IAAKhqB,GAAE,CAAC,GAAGitB,IAAKjtB,GAAE,CAAC,GAAG8uB,IAAU/K,CAAM,GACrIA,EAAO,MAAM8C,GAAIC,CAAE;AAAA,IACpB;AAED,aAAS6C,IAAU;AACjB,MAAAsG,EAAe,QAAQt4B,GACvBosB,EAAO,QAAO;AAAA,IACf;AAED,aAASkI,IAAY;AACnB,MAAAvC,KACAuG,EAAe,QAAQC,GACvBD,EAAe,UAAU/D;AAAA,IAC1B;AAED,aAASgE,EAAUvL,GAAQC,GAAK;AAC9B,MAAAsF,EAAUyF,IAAWhL,GAAQC,CAAG,GAAGgL,IAAM/I,GAAIgJ,IAAM/I,GAAIgJ,IAAM/F,GAAIgG,IAAM/F,GAAIgG,IAAM/C,GACjFgD,EAAe,QAAQ/F;AAAA,IACxB;AAED,aAASgC,IAAU;AACjB,MAAAkD,EAAevI,GAAIC,GAAIyD,GAASR,GAAIC,GAAIiD,GAAI2C,GAAKC,GAAKF,GAAUG,GAAKC,GAAKC,GAAKlB,IAAU/K,CAAM,GAC/FkM,EAAe,UAAUtG,GACzBA;IACD;AAED,WAAOsG;AAAA,EACX;AACA;AC1FA,IAAIE,KAAmB5B,GAAY;AAAA,EACjC,OAAO,SAASnzB,GAAGnC,GAAG;AACpB,SAAK,OAAO,MAAMmC,IAAI9C,IAASW,IAAIX,EAAO;AAAA,EAC3C;AACH,CAAC;AAEc,SAASq2B,GAAWM,GAAS;AAC1C,SAAOmB,GAAkB,WAAW;AAAE,WAAOnB;AAAA,EAAQ,CAAE,EAAC;AAC1D;AAEO,SAASmB,GAAkBC,GAAW;AAC3C,MAAIpB,GACA5f,IAAI,KACJjU,IAAI,KAAKnC,IAAI,KACb8tB,GAAIC,GAAIrC,IAAS,GAAGC,IAAM,GAC1BW,IAAc,GAAGC,IAAW,GAAGC,IAAa,GAAGiG,GAAQ4E,GACvDC,IAAQ,MAAMC,IAAUlE,IACxBzF,IAAK,MAAMC,GAAIxiB,GAAIE,GAAIisB,IAAWpF,IAClC6D,IAAS,KAAKwB,IAAkB1B,GAAS2B,IAAkBzB,CAAM,GACjEzpB,GACAmrB;AAEJ,WAASjC,EAAWh3B,GAAO;AACzB,WAAAA,IAAQ24B,EAAc34B,EAAM,CAAC,IAAIW,IAASX,EAAM,CAAC,IAAIW,EAAO,GACrD,CAACX,EAAM,CAAC,IAAI0X,IAAI0X,GAAIC,IAAKrvB,EAAM,CAAC,IAAI0X,CAAC;AAAA,EAC7C;AAED,WAASwhB,GAAOl5B,GAAO;AACrB,WAAAA,IAAQ24B,EAAc,QAAQ34B,EAAM,CAAC,IAAIovB,KAAM1X,IAAI2X,IAAKrvB,EAAM,CAAC,KAAK0X,CAAC,GAC9D1X,KAAS,CAACA,EAAM,CAAC,IAAI0rB,IAAS1rB,EAAM,CAAC,IAAI0rB,EAAO;AAAA,EACxD;AAED,WAASsN,GAAiBv1B,GAAGnC,IAAG;AAC9B,WAAOmC,IAAI6zB,EAAQ7zB,GAAGnC,EAAC,GAAG,CAACmC,EAAE,CAAC,IAAIiU,IAAI0X,GAAIC,IAAK5rB,EAAE,CAAC,IAAIiU,CAAC;AAAA,EACxD;AAED,EAAAsf,EAAW,SAAS,SAAS5K,GAAQ;AACnC,WAAOte,KAASmrB,MAAgB7M,IAASte,IAAQA,IAAQ0qB,GAAiBK,EAAQ9E,GAAQgF,EAAgBD,EAASG,IAAc7M,CAAM,CAAC,CAAC,CAAC;AAAA,EAC9I,GAEE4K,EAAW,YAAY,SAAS51B,GAAG;AACjC,WAAO,UAAU,UAAUy3B,IAAU,CAACz3B,IAAI8zB,GAAW0D,IAAQx3B,IAAIT,IAAS,IAAIA,EAAO,KAAKi4B,IAAQ,MAAMjE,KAAmBwE,GAAO,KAAIP,IAAQlN;AAAA,EAClJ,GAEEsL,EAAW,aAAa,SAAS51B,GAAG;AAClC,WAAO,UAAU,UAAU03B,IAAW13B,KAAK,QAAQ8tB,IAAKC,IAAKxiB,IAAKE,IAAK,MAAM6mB,MAAY/C,GAAWzB,IAAK,CAAC9tB,EAAE,CAAC,EAAE,CAAC,GAAG+tB,IAAK,CAAC/tB,EAAE,CAAC,EAAE,CAAC,GAAGuL,IAAK,CAACvL,EAAE,CAAC,EAAE,CAAC,GAAGyL,IAAK,CAACzL,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG+3B,GAAO,KAAIjK,KAAM,OAAO,OAAO,CAAC,CAACA,GAAIC,CAAE,GAAG,CAACxiB,GAAIE,CAAE,CAAC;AAAA,EACvN,GAEEmqB,EAAW,QAAQ,SAAS51B,GAAG;AAC7B,WAAO,UAAU,UAAUsW,IAAI,CAACtW,GAAGg4B,GAAU,KAAI1hB;AAAA,EACrD,GAEEsf,EAAW,YAAY,SAAS51B,GAAG;AACjC,WAAO,UAAU,UAAUqC,IAAI,CAACrC,EAAE,CAAC,GAAGE,IAAI,CAACF,EAAE,CAAC,GAAGg4B,GAAU,KAAI,CAAC31B,GAAGnC,CAAC;AAAA,EACxE,GAEE01B,EAAW,SAAS,SAAS51B,GAAG;AAC9B,WAAO,UAAU,UAAU4rB,IAAS5rB,EAAE,CAAC,IAAI,MAAMT,IAASssB,IAAM7rB,EAAE,CAAC,IAAI,MAAMT,IAASy4B,GAAU,KAAI,CAACpM,IAAStB,IAASuB,IAAMvB,EAAO;AAAA,EACxI,GAEEsL,EAAW,SAAS,SAAS51B,GAAG;AAC9B,WAAO,UAAU,UAAUwsB,IAAcxsB,EAAE,CAAC,IAAI,MAAMT,IAASktB,IAAWzsB,EAAE,CAAC,IAAI,MAAMT,IAASmtB,IAAa1sB,EAAE,SAAS,IAAIA,EAAE,CAAC,IAAI,MAAMT,KAAU,GAAGy4B,GAAU,KAAI,CAACxL,IAAclC,IAASmC,IAAWnC,IAASoC,IAAapC,EAAO;AAAA,EACxO,GAEEsL,EAAW,YAAY,SAAS51B,GAAG;AACjC,WAAO,UAAU,UAAU23B,IAAkB1B,GAAS2B,IAAkBzB,IAASn2B,IAAIA,CAAC,GAAG+3B,GAAO,KAAInN,GAAKuL,CAAM;AAAA,EACnH,GAEEP,EAAW,YAAY,SAASC,GAAQ1K,IAAQ;AAC9C,WAAOwK,GAAUC,GAAYC,GAAQ1K,EAAM;AAAA,EAC/C,GAEEyK,EAAW,UAAU,SAASpyB,GAAM2nB,IAAQ;AAC1C,WAAO2K,GAAQF,GAAYpyB,GAAM2nB,EAAM;AAAA,EAC3C;AAEE,WAAS6M,KAAW;AAClB,IAAAT,IAAgBlL,GAAQsG,IAASpG,GAAcC,GAAaC,GAAUC,CAAU,GAAGwJ,CAAO;AAC1F,QAAIvZ,IAASuZ,EAAQtK,GAAQC,CAAG;AAChC,WAAAmC,IAAK3rB,IAAIsa,EAAO,CAAC,IAAIrG,GACrB2X,IAAK/tB,IAAIyc,EAAO,CAAC,IAAIrG,GACdyhB,GAAK;AAAA,EACb;AAED,WAASA,KAAQ;AACf,WAAArrB,IAAQmrB,IAAc,MACfjC;AAAA,EACR;AAED,SAAO,WAAW;AAChB,WAAAM,IAAUoB,EAAU,MAAM,MAAM,SAAS,GACzC1B,EAAW,SAASM,EAAQ,UAAU4B,IAC/BE,GAAQ;AAAA,EACnB;AACA;ACvGO,SAASC,GAAaC,GAAO;AAClC,SAAO,SAAS71B,GAAGnC,GAAG;AACpB,QAAIwG,IAAKgkB,GAAIroB,CAAC,GACVsE,IAAK+jB,GAAIxqB,CAAC,GACVoW,IAAI4hB,EAAMxxB,IAAKC,CAAE;AACrB,WAAO;AAAA,MACL2P,IAAI3P,IAAKgkB,GAAItoB,CAAC;AAAA,MACdiU,IAAIqU,GAAIzqB,CAAC;AAAA,IACf;AAAA,EACG;AACH;AAEO,SAASi4B,GAAgB7G,GAAO;AACrC,SAAO,SAASjvB,GAAGnC,GAAG;AACpB,QAAIke,IAAIwM,GAAKvoB,IAAIA,IAAInC,IAAIA,CAAC,GACtB+G,IAAIqqB,EAAMlT,CAAC,GACXga,IAAKzN,GAAI1jB,CAAC,GACVoxB,IAAK3N,GAAIzjB,CAAC;AACd,WAAO;AAAA,MACLwjB,GAAMpoB,IAAI+1B,GAAIha,IAAIia,CAAE;AAAA,MACpBvN,GAAK1M,KAAKle,IAAIk4B,IAAKha,CAAC;AAAA,IAC1B;AAAA,EACG;AACH;ACrBO,IAAIka,KAAwBL,GAAa,SAASM,GAAM;AAC7D,SAAO3N,GAAK,KAAK,IAAI2N,EAAK;AAC5B,CAAC;AAEDD,GAAsB,SAASH,GAAgB,SAAS/Z,GAAG;AACzD,SAAO,IAAI0M,GAAK1M,IAAI,CAAC;AACvB,CAAC;ACNM,IAAIoa,KAA0BP,GAAa,SAAShxB,GAAG;AAC5D,UAAQA,IAAI4jB,GAAK5jB,CAAC,MAAMA,IAAI0jB,GAAI1jB,CAAC;AACnC,CAAC;AAEDuxB,GAAwB,SAASL,GAAgB,SAAS/Z,GAAG;AAC3D,SAAOA;AACT,CAAC;AAEc,SAAAqa,KAAW;AACxB,SAAO7C,GAAW4C,EAAuB,EACpC,MAAM,OAAO,EACb,UAAU,MAAM,IAAI;AAC3B;ACdO,SAASE,GAAmB9M,GAAQC,GAAK;AAC9C,SAAO,CAACD,GAAQC,CAAG;AACrB;AAEA6M,GAAmB,SAASA;ACM5B,IAAI,EAAE,UAAAC,IAAU,eAAAC,IAAe,eAAAC,GAAa,IAAKC;AACjD,SAASC,GAAO5iB,GAASiX,GAAQ1uB,GAAS;AACxC,EAAAA,IAAUA,KAAW;AACrB,MAAIc,IAAQd,EAAQ,SAAS,cACzBs6B,IAAQt6B,EAAQ,SAAS;AAC7B,MAAI,CAACyX;AACH,UAAM,IAAI,MAAM,qBAAqB;AACvC,MAAI,OAAOzX,KAAY;AACrB,UAAM,IAAI,MAAM,2BAA2B;AAC7C,MAAI,OAAOs6B,KAAU;AACnB,UAAM,IAAI,MAAM,yBAAyB;AAC3C,MAAI5L,MAAW;AACb,UAAM,IAAI,MAAM,oBAAoB;AACtC,MAAI4L,KAAS;AACX,UAAM,IAAI,MAAM,8BAA8B;AAChD,MAAIC,IAAU,CAAA;AACd,UAAQ9iB,EAAQ,MAAI;AAAA,IAClB,KAAK;AACH,aAAAoB,GAASpB,GAAS,SAASI,GAAU;AACnC,YAAI2iB,IAAWC,GAAc5iB,GAAU6W,GAAQ5tB,GAAOw5B,CAAK;AAC3D,QAAIE,KACFD,EAAQ,KAAKC,CAAQ;AAAA,MAC/B,CAAO,GACMh6B,GAAkB+5B,CAAO;AAAA,IAClC,KAAK;AACH,aAAA3hB,GAAYnB,GAAS,SAASijB,GAAU;AACtC,YAAIC,IAAgBF,GAAcC,GAAUhM,GAAQ5tB,GAAOw5B,CAAK;AAChE,QAAIK,KACF/hB,GAAY+hB,GAAe,SAASH,GAAU;AAC5C,UAAIA,KACFD,EAAQ,KAAKC,CAAQ;AAAA,QACnC,CAAW;AAAA,MAEX,CAAO,GACMh6B,GAAkB+5B,CAAO;AAAA,EACnC;AACD,SAAOE,GAAchjB,GAASiX,GAAQ5tB,GAAOw5B,CAAK;AACpD;AACA,SAASG,GAAchjB,GAASiX,GAAQ5tB,GAAOw5B,GAAO;AACpD,MAAIv6B,IAAa0X,EAAQ,cAAc,IACnCI,IAAWJ,EAAQ,SAAS,YAAYA,EAAQ,WAAWA;AAC/D,MAAII,EAAS,SAAS,sBAAsB;AAC1C,QAAI0iB,IAAU,CAAA;AACd,WAAA1hB,GAASpB,GAAS,SAASmjB,GAAW;AACpC,UAAIC,IAAYJ,GAAcG,GAAWlM,GAAQ5tB,GAAOw5B,CAAK;AAC7D,MAAIO,KACFN,EAAQ,KAAKM,CAAS;AAAA,IAC9B,CAAK,GACMr6B,GAAkB+5B,CAAO;AAAA,EACjC;AACD,MAAIrD,IAAa4D,GAAiBjjB,CAAQ,GACtCkjB,IAAY;AAAA,IACd,MAAMljB,EAAS;AAAA,IACf,aAAamjB,GAAcnjB,EAAS,aAAaqf,CAAU;AAAA,EAC/D,GACM+D,IAAS,IAAIf,MACbp6B,IAAOm7B,EAAO,KAAKF,CAAS,GAC5B95B,IAAWL,GAAgBI,GAAgB0tB,GAAQ5tB,CAAK,GAAG,QAAQ,GACnE05B,IAAWP,GAAS,SAASn6B,GAAMmB,GAAUq5B,CAAK,GAClDY,IAAS,IAAIf;AAEjB,MADAK,IAAWU,EAAO,MAAMV,CAAQ,GAC5B,CAAAW,GAAYX,EAAS,WAAW,GAEpC;AAAA,QAAIxc,IAAS;AAAA,MACX,MAAMwc,EAAS;AAAA,MACf,aAAaY,GAAgBZ,EAAS,aAAatD,CAAU;AAAA,IACjE;AACE,WAAOr3B,GAAQme,GAAQje,CAAU;AAAA;AACnC;AACA,SAASo7B,GAAYpjB,GAAQ;AAC3B,SAAI,MAAM,QAAQA,EAAO,CAAC,CAAC,IAClBojB,GAAYpjB,EAAO,CAAC,CAAC,IACvB,MAAMA,EAAO,CAAC,CAAC;AACxB;AACA,SAASijB,GAAcjjB,GAAQsjB,GAAM;AACnC,SAAI,OAAOtjB,EAAO,CAAC,KAAM,WAChBsjB,EAAKtjB,CAAM,IACbA,EAAO,IAAI,SAASjN,GAAO;AAChC,WAAOkwB,GAAclwB,GAAOuwB,CAAI;AAAA,EACpC,CAAG;AACH;AACA,SAASD,GAAgBrjB,GAAQsjB,GAAM;AACrC,SAAI,OAAOtjB,EAAO,CAAC,KAAM,WAChBsjB,EAAK,OAAOtjB,CAAM,IACpBA,EAAO,IAAI,SAASjN,GAAO;AAChC,WAAOswB,GAAgBtwB,GAAOuwB,CAAI;AAAA,EACtC,CAAG;AACH;AACA,SAASP,GAAiBrjB,GAAS;AACjC,MAAIM,IAASkG,GAAOxG,CAAO,EAAE,SAAS,aAClC2W,IAAW,CAAC,CAACrW,EAAO,CAAC,GAAG,CAACA,EAAO,CAAC,CAAC;AACtC,SAAOgiB,GAAyB,EAAC,OAAO3L,CAAQ,EAAE,MAAMzuB,EAAW;AACrE;AACA,IAAI27B,KAAsBjB;ACrG1B,SAASljB,GAAW1W,GAAU;AAC5B,QAAMwY,IAAQ,CAAA;AAId,MAHAJ,GAASpY,GAAU,CAACX,MAAS;AAC3B,IAAAmZ,EAAM,KAAKnZ,EAAK,WAAW;AAAA,EAC/B,CAAG,GACGmZ,EAAM,SAAS;AACjB,UAAM,IAAI,MAAM,iCAAiC;AAEnD,QAAMlZ,IAAaU,EAAS,SAAS,CAAC,EAAE,cAAc,IAChD86B,IAAcpiB,GAAgB,WAAWF,EAAM,CAAC,GAAG,GAAGA,EAAM,MAAM,CAAC,CAAC;AAC1E,SAAIsiB,EAAY,WAAW,IAClB,OACLA,EAAY,WAAW,IAClBl7B,GAAQk7B,EAAY,CAAC,GAAGx7B,CAAU,IACpCY,GAAa46B,GAAax7B,CAAU;AAC7C;AACA,IAAIy7B,KAA0BrkB;ACR9B,SAASskB,GAAQn7B,GAAkB;AACjC,MAAIo7B;AAEJ,aAAWnzB,KAAKjI;AACd,IAAIo7B,KAAQnzB,EAAE,CAAC,IAAImzB,EAAK,CAAC,KAAK,MAC5BnzB,EAAE,CAAC,KAAK,MACCmzB,KAAQnzB,EAAE,CAAC,IAAImzB,EAAK,CAAC,IAAI,SAClCnzB,EAAE,CAAC,KAAK,MAGHmzB,IAAAnzB;AAEX;AAEgB,SAAAozB,GACdC,GACAC,GACA;AACA,QAAMvpB,IAAO6E;AAAAA,IACX3W,GAAkB;AAAA,MAChBH,GAAQ;AAAA,QACN;AAAA,UACE,CAAC,KAAK,EAAE;AAAA,UACR,CAAC,MAAM,EAAE;AAAA,UACT,CAAC,MAAM,GAAG;AAAA,UACV,CAAC,KAAK,GAAG;AAAA,UACT,CAAC,KAAK,EAAE;AAAA,QACV;AAAA,MAAA,CACD;AAAA,MACDu7B;AAAA,IAAA,CACD;AAAA,EAAA;AAGH,MAAI,CAACtpB;AACH;AAGG,EAAAA,EAAA,aAAa,EAAE,QAAQ,IAAI;AAE1B,QAAAwpB,IAAQzB,GAAOuB,GAAQ,CAAC;AAE9B,MAAKE,GAID;AAAA,QAAAA,EAAM,SAAS,SAAS;AACf,iBAAAx7B,KAAQw7B,EAAM,SAAS;AAChC,QAAAL,GAAQn7B,CAAI;AAAA;AAGH,iBAAAwR,KAAQgqB,EAAM,SAAS;AAChC,mBAAWx7B,KAAQwR;AACjB,UAAA2pB,GAAQn7B,CAAI;AAKlB,IAAAu7B,EAAQr7B,GAAkB,CAACs7B,GAAOxpB,CAAI,CAAC,CAAC;AAAA;AAC1C;AC3CA,MAAMypB,KAAev7B,GAAkB,CAAA,CAAE;AAElC,SAASw7B,GACdC,GACAC,GACAC,IAA6C,IAC7CC,IAAwD,IACxDC,IAA6B,CAAC,GAC9BC,IAAqC,CAAA,GACrCC,IAKQ;AAAA,EACN,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,cAAc;AAAA,MACd,gBAAgB;AAAA,IAClB;AAAA,IACA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,GAAG,SAAS,GAAG,CAAC,OAAO,QAAQ,CAAC;AAAA,EACzE;AAAA,EACA,MAAM;AAAA,IACJ,QAAQ;AAAA,MACN,YAAY;AAAA,IACd;AAAA,IACA,OAAO;AAAA,MACL,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,GAAG,SAAS,GAAG,GAAG,CAAC;AAAA,MACjE,kBAAkB,CAAC,GAAG,CAAC;AAAA,MACvB,cAAc;AAAA,IAChB;AAAA,IACA,QAAQ,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC;AAAA,EACjC;AACF,GACA;AACI,MAAAC;AAEJ,QAAMC,IAAoB,CAAA;AAEtB,MAAAC,GAEAC,GAEAC;AAEJ,WAASC,IAAuB;AAE5B,IAAA,CAACZ,EAAI,UAAU,WAAW,MACzBM,KAAA,QAAAA,EAAmB,QAAQA,KAAA,QAAAA,EAAmB,SAE/CN,EAAI,UAAU,aAAa;AAAA,MACzB,MAAM;AAAA,MACN,MAAMF;AAAA,IAAA,CACP,GAGC,CAACE,EAAI,SAAS,gBAAgB,MAAKM,KAAA,QAAAA,EAAmB,SACxDN,EAAI,SAAS;AAAA,MACX,GAAGM,KAAA,gBAAAA,EAAmB;AAAA,MACtB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA,CACT,GAGC,CAACN,EAAI,SAAS,gBAAgB,MAAKM,KAAA,QAAAA,EAAmB,SACxDN,EAAI,SAAS;AAAA,MACX,GAAGM,KAAA,gBAAAA,EAAmB;AAAA,MACtB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA,CACT,GAGCK,KACFf,EAAQe,CAAS;AAAA,EAErB;AAEI,EAAAX,EAAI,WACeY,MAEjBZ,EAAA,KAAK,QAAQ,MAAM;AACA,IAAAY;EAAA,CACtB,GAGCZ,EAAA,GAAG,aAAa,MAAM;AACH,IAAAY;EAAA,CACtB;AAEK,QAAAC,IAAiB,CAAC/6B,MAAqB;AAC5B,IAAAy6B,KAAA,QAAAA,EAAA;AAAA,MACb,MAAM;AAAA,MACN,aAAa,CAACz6B,EAAE,OAAO,KAAKA,EAAE,OAAO,GAAG;AAAA,IAAA;AAAA,EACzC;AAGM,WAAAg7B,EAAaC,IAAc,IAAO;AACzC,QAAI,CAACd;AACH,YAAM,IAAI,MAAM;AAGZ,UAAAzhB,IAAU,SAAS,cAAc,KAAK;AAE5C,WAAIuiB,KACMviB,EAAA,UAAU,IAAI,oBAAoB,GAG5C,IAAIwiB,GAAW;AAAA,MACb,OAAO,EAAE,WAAW,WAAW;AAAA,MAC/B,QAAQxiB;AAAA,IAAA,CACT,GAEM,IAAIyhB,EAAW,OAAO,EAAE,SAAAzhB,GAAS,QAAQ,CAAC,GAAG,GAAG,EAAA,CAAG;AAAA,EAC5D;AAEA,WAASohB,EAAQ35B,GAAe;A1DhJlC,QAAAoC;A0DiJgB,IAAAs4B,IAAA16B,IAEXoC,IAAA23B,EAAI,UAAU,WAAW,MAAzB,QAAA33B,EAA8C,QAAQpC;AAAA,EACzD;AAEO,SAAA;AAAA,IACL,gBAAgBg7B,GAAoD;AAClE,MAAIA,KACaV,IAAAU,GAEXjB,EAAA,GAAG,SAASa,CAAc,MAEfN,IAAA,QAEXP,EAAA,IAAI,SAASa,CAAc;AAAA,IAEnC;AAAA,IAEA,MAAM7e,GAAkBkf,GAAoB;AAC1C,MAAAlB,EAAI,MAAM,EAAE,QAAAhe,GAAQ,MAAAkf,GAAM,GAAGd,GAAc;AAAA,IAC7C;AAAA,IAEA,UAAUpyB,GAAYmzB,GAAiBC,GAAuB;AACxD,MAAApB,EAAA;AAAA,QACF;AAAA,UACE,CAAChyB,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC;AAAA,UACjB,CAACA,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC;AAAA,QACnB;AAAA,QACA,EAAE,SAAAmzB,GAAS,SAAAC,GAAS,GAAGf,EAAiB;AAAA,MAAA;AAAA,IAE5C;AAAA,IAEA,gBAAgBgB,GAAwB;AACtC,MAAArB,EAAI,mBAAmB,EAAE,MAAM,SAASqB,IAAU,cAAc;AAAA,IAClE;AAAA,IAEA,iBAAiBn9B,GAAwB;AACnC,MAAA,CAAC+7B,KAAc,CAACC,MAIhBQ,IACGx8B,IAKHw8B,EAAc,UAAUx8B,CAAW,KAJnCw8B,EAAc,OAAO,GAELA,IAAA,UAITx8B,MACTw8B,KACE,OAAOR,KAAW,WACd,IAAID,EAAW,OAAOC,CAAM,IAC5BY,EAAA,GAEH,UAAU58B,CAAW,EACrB,MAAM87B,CAAG,GAEZU,EAAc,WAAW,EAAE,UAAU,IAAI,gBAAgB;AAAA,IAE7D;AAAA,IAEA,WACEY,GACA3B,GACM;AACN,UAAKO,GAIL;AAAA,mBAAWA,KAAUM;AACnBN,UAAAA,EAAO,OAAO;AAOhB,YAJAM,EAAQ,SAAS,GAEjBZ,EAAQE,EAAY,GAEhB,EAACG,GAIL;AAAA,cAAIN,GAAQ;AACV,gBAAI4B,IAAU;AAEV,gBAAA5B,EAAO,SAAS,SAAS,sBAAsB;AAC3C,oBAAA3iB,IAAQ2iB,EAAO,SAAS,WAAW;AAAA,gBACvC,CAAC/jB,MACCA,EAAS,SAAS,aAAaA,EAAS,SAAS;AAAA,cAAA;AAGjD,cAAA4lB,EAAA,KAAIxkB,EAAM,SAAS,GAAG;AACxB,sBAAMC,IAAUxC;AAAAA,kBACdlW,GAAkByY,EAAM,IAAI,CAACnZ,MAASD,GAAQC,CAAI,CAAC,CAAC;AAAA,gBAAA;AAGtD,oBAAI,CAACoZ;AACG,wBAAAukB;AAGR,gBAAA9B;AAAA,kBACE;AAAA,oBACE,GAAGC;AAAA,oBACH,UAAU1iB,EAAQ;AAAA,kBACpB;AAAA,kBACA2iB;AAAA,gBAAA,GAGQ2B,IAAA;AAAA,cAAA,OACL;AACC,sBAAA5Q,IAAagP,EAAO,SAAS,WAAW;AAAA,kBAC5C,CAAC/jB,MACCA,EAAS,SAAS,gBAClBA,EAAS,SAAS;AAAA,gBAAA;AAGlB,gBAAA+U,EAAW,SAAS,MACdiP,EAAA;AAAA,kBACN,GAAGD;AAAA,kBACH,UAAU,EAAE,MAAM,sBAAsB,YAAAhP,EAAW;AAAA,gBAAA,CACpD,GAES4Q,IAAA;AAAA,cAEd;AAAA,YACF;AAEA,gBAAI,CAAAA;AAEJ,kBACE5B,EAAO,SAAS,SAAS,aACzBA,EAAO,SAAS,SAAS;AAEzB,gBAAAD,GAAQC,GAA2CC,CAAO;AAAA,uBAE1DD,EAAO,SAAS,SAAS,gBACzBA,EAAO,SAAS,SAAS,mBACzB;AACA,gBAAAC,EAAQD,CAAM;AAEd;AAAA,cACF;AAAA;AAEA,YAAIO,KACMM,EAAA;AAAA,eACL,OAAON,KAAW,WACf,IAAID,EAAW,OAAOC,CAAM,IAC5BY,KAED,UAAUnB,EAAO,MAAM,EACvB,MAAMK,CAAG;AAAA,YAAA;AAAA,UAGlB;AAEA,cAAIG;AACSv8B,uBAAAA,KAAW09B,KAAkB,IAAI;AAC1C,kBAAI19B,MAAY+7B;AACd;AAGF,oBAAMO,KACJ,OAAOC,KAAsB,WACzB,IAAIF,EAAW,OAAOE,CAAiB,IACvCW,EAAa,EAAI,GAEpB,UAAUl9B,EAAQ,MAAM,EACxB;AAAA,gBACC,IAAIq8B,EAAW,MAAM;AAAA,kBACnB,QAAQ,CAAC,GAAG,GAAG;AAAA,kBACf,aAAa;AAAA,kBACb,aAAa;AAAA,kBACb,WAAW;AAAA,gBACZ,CAAA,EAAE;AAAA,kBACDr8B,EAAQ,WAAW,CAAC,MAAM,YACtBA,EAAQ,aACRA,EAAQ,WAAW,QAAQ,OAAO,EAAE;AAAA,gBAC1C;AAAA,cAAA,EAED,MAAMo8B,CAAG,GAENxhB,IAAU0hB,EAAO;AAEf,cAAA1hB,EAAA,iBAAiB,SAAS,CAAC1Y,MAAM;AACvC,gBAAAA,EAAE,gBAAgB,GAElBy6B,KAAA,QAAAA,EAAe,EAAE,MAAM,eAAe,IAAI38B,EAAQ;cAAI,CACvD,GAEO4a,EAAA,iBAAiB,cAAc,MAAM;AAC3C,gBAAA+hB,KAAA,QAAAA,EAAe,EAAE,MAAM,oBAAoB,IAAI38B,EAAQ,OAEvDs8B,EAAO,YAAY;AAAA,cAAA,CACpB,GAEO1hB,EAAA,iBAAiB,cAAc,MAAM;AAC3C,gBAAA+hB,KAAA,QAAAA,EAAe,EAAE,MAAM,oBAAoB,IAAI38B,EAAQ,OAEvDs8B,EAAO,YAAY;AAAA,cAAA,CACpB,GAIDM,EAAQ,KAAKN,CAAM;AAAA,YACrB;AAAA;AAAA;AAAA,IAEJ;AAAA,IAEA,kBAAkB33B,GAAqB;AACrC,MAAIk4B,KACFA,EAAe,WAAW,EAAE,UAAU,OAAO,mBAAmB,EAAK,GAGvEA,IAAiBl4B,IAAQ,KAAKi4B,EAAQj4B,CAAK,IAAI,QAE/Ck4B,KAAA,QAAAA,EAAgB,aAAa,UAAU,OAAO,mBAAmB;AAAA,IACnE;AAAA,IAEA,mBAAmB;AACX,YAAAn0B,IAAI0zB,EAAI;AAEd,aAAO,CAACA,EAAI,WAAW1zB,EAAE,KAAKA,EAAE,GAAG;AAAA,IACrC;AAAA,EAAA;AAEJ;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]}
1
+ {"version":3,"file":"maplibregl-controller.js","sources":["../node_modules/@turf/helpers/dist/esm/index.js","../node_modules/splaytree/dist/splay.esm.js","../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/polygon-clipping/dist/polygon-clipping.esm.js","../node_modules/@turf/meta/dist/esm/index.js","../node_modules/@turf/union/dist/esm/index.js","../node_modules/svelte/src/runtime/internal/utils.js","../node_modules/svelte/src/runtime/internal/dom.js","../node_modules/svelte/src/runtime/internal/lifecycle.js","../node_modules/svelte/src/runtime/internal/scheduler.js","../node_modules/svelte/src/runtime/internal/transitions.js","../node_modules/svelte/src/runtime/internal/Component.js","../node_modules/svelte/src/shared/version.js","../node_modules/svelte/src/runtime/internal/disclose-version/index.js","../src/MarkerIcon.svelte","../node_modules/@turf/bbox/dist/esm/index.js","../node_modules/@turf/difference/dist/esm/index.js","../node_modules/@turf/flatten/dist/esm/index.js","../src/geoUtils.ts","../src/mask.ts","../src/maplibregl-controller.ts"],"sourcesContent":["// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 0)\n return angle > 180 ? angle - 360 : angle;\n return angle < -180 ? angle + 360 : angle;\n}\nfunction radiansToDegrees(radians) {\n const degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","/**\n * splaytree v3.1.2\n * Fast Splay tree for Node and browser\n *\n * @author Alexander Milevski <info@w8r.name>\n * @license MIT\n * @preserve\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\n\nvar Node = /** @class */ (function () {\r\n function Node(key, data) {\r\n this.next = null;\r\n this.key = key;\r\n this.data = data;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n return Node;\r\n}());\n\n/* follows \"An implementation of top-down splaying\"\r\n * by D. Sleator <sleator@cs.cmu.edu> March 1992\r\n */\r\nfunction DEFAULT_COMPARE(a, b) {\r\n return a > b ? 1 : a < b ? -1 : 0;\r\n}\r\n/**\r\n * Simple top down splay, not requiring i to be in the tree t.\r\n */\r\nfunction splay(i, t, comparator) {\r\n var N = new Node(null, null);\r\n var l = N;\r\n var r = N;\r\n while (true) {\r\n var cmp = comparator(i, t.key);\r\n //if (i < t.key) {\r\n if (cmp < 0) {\r\n if (t.left === null)\r\n break;\r\n //if (i < t.left.key) {\r\n if (comparator(i, t.left.key) < 0) {\r\n var y = t.left; /* rotate right */\r\n t.left = y.right;\r\n y.right = t;\r\n t = y;\r\n if (t.left === null)\r\n break;\r\n }\r\n r.left = t; /* link right */\r\n r = t;\r\n t = t.left;\r\n //} else if (i > t.key) {\r\n }\r\n else if (cmp > 0) {\r\n if (t.right === null)\r\n break;\r\n //if (i > t.right.key) {\r\n if (comparator(i, t.right.key) > 0) {\r\n var y = t.right; /* rotate left */\r\n t.right = y.left;\r\n y.left = t;\r\n t = y;\r\n if (t.right === null)\r\n break;\r\n }\r\n l.right = t; /* link left */\r\n l = t;\r\n t = t.right;\r\n }\r\n else\r\n break;\r\n }\r\n /* assemble */\r\n l.right = t.left;\r\n r.left = t.right;\r\n t.left = N.right;\r\n t.right = N.left;\r\n return t;\r\n}\r\nfunction insert(i, data, t, comparator) {\r\n var node = new Node(i, data);\r\n if (t === null) {\r\n node.left = node.right = null;\r\n return node;\r\n }\r\n t = splay(i, t, comparator);\r\n var cmp = comparator(i, t.key);\r\n if (cmp < 0) {\r\n node.left = t.left;\r\n node.right = t;\r\n t.left = null;\r\n }\r\n else if (cmp >= 0) {\r\n node.right = t.right;\r\n node.left = t;\r\n t.right = null;\r\n }\r\n return node;\r\n}\r\nfunction split(key, v, comparator) {\r\n var left = null;\r\n var right = null;\r\n if (v) {\r\n v = splay(key, v, comparator);\r\n var cmp = comparator(v.key, key);\r\n if (cmp === 0) {\r\n left = v.left;\r\n right = v.right;\r\n }\r\n else if (cmp < 0) {\r\n right = v.right;\r\n v.right = null;\r\n left = v;\r\n }\r\n else {\r\n left = v.left;\r\n v.left = null;\r\n right = v;\r\n }\r\n }\r\n return { left: left, right: right };\r\n}\r\nfunction merge(left, right, comparator) {\r\n if (right === null)\r\n return left;\r\n if (left === null)\r\n return right;\r\n right = splay(left.key, right, comparator);\r\n right.left = left;\r\n return right;\r\n}\r\n/**\r\n * Prints level of the tree\r\n */\r\nfunction printRow(root, prefix, isTail, out, printNode) {\r\n if (root) {\r\n out(\"\" + prefix + (isTail ? '└── ' : '├── ') + printNode(root) + \"\\n\");\r\n var indent = prefix + (isTail ? ' ' : '│ ');\r\n if (root.left)\r\n printRow(root.left, indent, false, out, printNode);\r\n if (root.right)\r\n printRow(root.right, indent, true, out, printNode);\r\n }\r\n}\r\nvar Tree = /** @class */ (function () {\r\n function Tree(comparator) {\r\n if (comparator === void 0) { comparator = DEFAULT_COMPARE; }\r\n this._root = null;\r\n this._size = 0;\r\n this._comparator = comparator;\r\n }\r\n /**\r\n * Inserts a key, allows duplicates\r\n */\r\n Tree.prototype.insert = function (key, data) {\r\n this._size++;\r\n return this._root = insert(key, data, this._root, this._comparator);\r\n };\r\n /**\r\n * Adds a key, if it is not present in the tree\r\n */\r\n Tree.prototype.add = function (key, data) {\r\n var node = new Node(key, data);\r\n if (this._root === null) {\r\n node.left = node.right = null;\r\n this._size++;\r\n this._root = node;\r\n }\r\n var comparator = this._comparator;\r\n var t = splay(key, this._root, comparator);\r\n var cmp = comparator(key, t.key);\r\n if (cmp === 0)\r\n this._root = t;\r\n else {\r\n if (cmp < 0) {\r\n node.left = t.left;\r\n node.right = t;\r\n t.left = null;\r\n }\r\n else if (cmp > 0) {\r\n node.right = t.right;\r\n node.left = t;\r\n t.right = null;\r\n }\r\n this._size++;\r\n this._root = node;\r\n }\r\n return this._root;\r\n };\r\n /**\r\n * @param {Key} key\r\n * @return {Node|null}\r\n */\r\n Tree.prototype.remove = function (key) {\r\n this._root = this._remove(key, this._root, this._comparator);\r\n };\r\n /**\r\n * Deletes i from the tree if it's there\r\n */\r\n Tree.prototype._remove = function (i, t, comparator) {\r\n var x;\r\n if (t === null)\r\n return null;\r\n t = splay(i, t, comparator);\r\n var cmp = comparator(i, t.key);\r\n if (cmp === 0) { /* found it */\r\n if (t.left === null) {\r\n x = t.right;\r\n }\r\n else {\r\n x = splay(i, t.left, comparator);\r\n x.right = t.right;\r\n }\r\n this._size--;\r\n return x;\r\n }\r\n return t; /* It wasn't there */\r\n };\r\n /**\r\n * Removes and returns the node with smallest key\r\n */\r\n Tree.prototype.pop = function () {\r\n var node = this._root;\r\n if (node) {\r\n while (node.left)\r\n node = node.left;\r\n this._root = splay(node.key, this._root, this._comparator);\r\n this._root = this._remove(node.key, this._root, this._comparator);\r\n return { key: node.key, data: node.data };\r\n }\r\n return null;\r\n };\r\n /**\r\n * Find without splaying\r\n */\r\n Tree.prototype.findStatic = function (key) {\r\n var current = this._root;\r\n var compare = this._comparator;\r\n while (current) {\r\n var cmp = compare(key, current.key);\r\n if (cmp === 0)\r\n return current;\r\n else if (cmp < 0)\r\n current = current.left;\r\n else\r\n current = current.right;\r\n }\r\n return null;\r\n };\r\n Tree.prototype.find = function (key) {\r\n if (this._root) {\r\n this._root = splay(key, this._root, this._comparator);\r\n if (this._comparator(key, this._root.key) !== 0)\r\n return null;\r\n }\r\n return this._root;\r\n };\r\n Tree.prototype.contains = function (key) {\r\n var current = this._root;\r\n var compare = this._comparator;\r\n while (current) {\r\n var cmp = compare(key, current.key);\r\n if (cmp === 0)\r\n return true;\r\n else if (cmp < 0)\r\n current = current.left;\r\n else\r\n current = current.right;\r\n }\r\n return false;\r\n };\r\n Tree.prototype.forEach = function (visitor, ctx) {\r\n var current = this._root;\r\n var Q = []; /* Initialize stack s */\r\n var done = false;\r\n while (!done) {\r\n if (current !== null) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length !== 0) {\r\n current = Q.pop();\r\n visitor.call(ctx, current);\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\r\n */\r\n Tree.prototype.range = function (low, high, fn, ctx) {\r\n var Q = [];\r\n var compare = this._comparator;\r\n var node = this._root;\r\n var cmp;\r\n while (Q.length !== 0 || node) {\r\n if (node) {\r\n Q.push(node);\r\n node = node.left;\r\n }\r\n else {\r\n node = Q.pop();\r\n cmp = compare(node.key, high);\r\n if (cmp > 0) {\r\n break;\r\n }\r\n else if (compare(node.key, low) >= 0) {\r\n if (fn.call(ctx, node))\r\n return this; // stop if smth is returned\r\n }\r\n node = node.right;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Returns array of keys\r\n */\r\n Tree.prototype.keys = function () {\r\n var keys = [];\r\n this.forEach(function (_a) {\r\n var key = _a.key;\r\n return keys.push(key);\r\n });\r\n return keys;\r\n };\r\n /**\r\n * Returns array of all the data in the nodes\r\n */\r\n Tree.prototype.values = function () {\r\n var values = [];\r\n this.forEach(function (_a) {\r\n var data = _a.data;\r\n return values.push(data);\r\n });\r\n return values;\r\n };\r\n Tree.prototype.min = function () {\r\n if (this._root)\r\n return this.minNode(this._root).key;\r\n return null;\r\n };\r\n Tree.prototype.max = function () {\r\n if (this._root)\r\n return this.maxNode(this._root).key;\r\n return null;\r\n };\r\n Tree.prototype.minNode = function (t) {\r\n if (t === void 0) { t = this._root; }\r\n if (t)\r\n while (t.left)\r\n t = t.left;\r\n return t;\r\n };\r\n Tree.prototype.maxNode = function (t) {\r\n if (t === void 0) { t = this._root; }\r\n if (t)\r\n while (t.right)\r\n t = t.right;\r\n return t;\r\n };\r\n /**\r\n * Returns node at given index\r\n */\r\n Tree.prototype.at = function (index) {\r\n var current = this._root;\r\n var done = false;\r\n var i = 0;\r\n var Q = [];\r\n while (!done) {\r\n if (current) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length > 0) {\r\n current = Q.pop();\r\n if (i === index)\r\n return current;\r\n i++;\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n return null;\r\n };\r\n Tree.prototype.next = function (d) {\r\n var root = this._root;\r\n var successor = null;\r\n if (d.right) {\r\n successor = d.right;\r\n while (successor.left)\r\n successor = successor.left;\r\n return successor;\r\n }\r\n var comparator = this._comparator;\r\n while (root) {\r\n var cmp = comparator(d.key, root.key);\r\n if (cmp === 0)\r\n break;\r\n else if (cmp < 0) {\r\n successor = root;\r\n root = root.left;\r\n }\r\n else\r\n root = root.right;\r\n }\r\n return successor;\r\n };\r\n Tree.prototype.prev = function (d) {\r\n var root = this._root;\r\n var predecessor = null;\r\n if (d.left !== null) {\r\n predecessor = d.left;\r\n while (predecessor.right)\r\n predecessor = predecessor.right;\r\n return predecessor;\r\n }\r\n var comparator = this._comparator;\r\n while (root) {\r\n var cmp = comparator(d.key, root.key);\r\n if (cmp === 0)\r\n break;\r\n else if (cmp < 0)\r\n root = root.left;\r\n else {\r\n predecessor = root;\r\n root = root.right;\r\n }\r\n }\r\n return predecessor;\r\n };\r\n Tree.prototype.clear = function () {\r\n this._root = null;\r\n this._size = 0;\r\n return this;\r\n };\r\n Tree.prototype.toList = function () {\r\n return toList(this._root);\r\n };\r\n /**\r\n * Bulk-load items. Both array have to be same size\r\n */\r\n Tree.prototype.load = function (keys, values, presort) {\r\n if (values === void 0) { values = []; }\r\n if (presort === void 0) { presort = false; }\r\n var size = keys.length;\r\n var comparator = this._comparator;\r\n // sort if needed\r\n if (presort)\r\n sort(keys, values, 0, size - 1, comparator);\r\n if (this._root === null) { // empty tree\r\n this._root = loadRecursive(keys, values, 0, size);\r\n this._size = size;\r\n }\r\n else { // that re-builds the whole tree from two in-order traversals\r\n var mergedList = mergeLists(this.toList(), createList(keys, values), comparator);\r\n size = this._size + size;\r\n this._root = sortedListToBST({ head: mergedList }, 0, size);\r\n }\r\n return this;\r\n };\r\n Tree.prototype.isEmpty = function () { return this._root === null; };\r\n Object.defineProperty(Tree.prototype, \"size\", {\r\n get: function () { return this._size; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tree.prototype, \"root\", {\r\n get: function () { return this._root; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Tree.prototype.toString = function (printNode) {\r\n if (printNode === void 0) { printNode = function (n) { return String(n.key); }; }\r\n var out = [];\r\n printRow(this._root, '', true, function (v) { return out.push(v); }, printNode);\r\n return out.join('');\r\n };\r\n Tree.prototype.update = function (key, newKey, newData) {\r\n var comparator = this._comparator;\r\n var _a = split(key, this._root, comparator), left = _a.left, right = _a.right;\r\n if (comparator(key, newKey) < 0) {\r\n right = insert(newKey, newData, right, comparator);\r\n }\r\n else {\r\n left = insert(newKey, newData, left, comparator);\r\n }\r\n this._root = merge(left, right, comparator);\r\n };\r\n Tree.prototype.split = function (key) {\r\n return split(key, this._root, this._comparator);\r\n };\r\n Tree.prototype[Symbol.iterator] = function () {\r\n var current, Q, done;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n current = this._root;\r\n Q = [];\r\n done = false;\r\n _a.label = 1;\r\n case 1:\r\n if (!!done) return [3 /*break*/, 6];\r\n if (!(current !== null)) return [3 /*break*/, 2];\r\n Q.push(current);\r\n current = current.left;\r\n return [3 /*break*/, 5];\r\n case 2:\r\n if (!(Q.length !== 0)) return [3 /*break*/, 4];\r\n current = Q.pop();\r\n return [4 /*yield*/, current];\r\n case 3:\r\n _a.sent();\r\n current = current.right;\r\n return [3 /*break*/, 5];\r\n case 4:\r\n done = true;\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 1];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n return Tree;\r\n}());\r\nfunction loadRecursive(keys, values, start, end) {\r\n var size = end - start;\r\n if (size > 0) {\r\n var middle = start + Math.floor(size / 2);\r\n var key = keys[middle];\r\n var data = values[middle];\r\n var node = new Node(key, data);\r\n node.left = loadRecursive(keys, values, start, middle);\r\n node.right = loadRecursive(keys, values, middle + 1, end);\r\n return node;\r\n }\r\n return null;\r\n}\r\nfunction createList(keys, values) {\r\n var head = new Node(null, null);\r\n var p = head;\r\n for (var i = 0; i < keys.length; i++) {\r\n p = p.next = new Node(keys[i], values[i]);\r\n }\r\n p.next = null;\r\n return head.next;\r\n}\r\nfunction toList(root) {\r\n var current = root;\r\n var Q = [];\r\n var done = false;\r\n var head = new Node(null, null);\r\n var p = head;\r\n while (!done) {\r\n if (current) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length > 0) {\r\n current = p = p.next = Q.pop();\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n p.next = null; // that'll work even if the tree was empty\r\n return head.next;\r\n}\r\nfunction sortedListToBST(list, start, end) {\r\n var size = end - start;\r\n if (size > 0) {\r\n var middle = start + Math.floor(size / 2);\r\n var left = sortedListToBST(list, start, middle);\r\n var root = list.head;\r\n root.left = left;\r\n list.head = list.head.next;\r\n root.right = sortedListToBST(list, middle + 1, end);\r\n return root;\r\n }\r\n return null;\r\n}\r\nfunction mergeLists(l1, l2, compare) {\r\n var head = new Node(null, null); // dummy\r\n var p = head;\r\n var p1 = l1;\r\n var p2 = l2;\r\n while (p1 !== null && p2 !== null) {\r\n if (compare(p1.key, p2.key) < 0) {\r\n p.next = p1;\r\n p1 = p1.next;\r\n }\r\n else {\r\n p.next = p2;\r\n p2 = p2.next;\r\n }\r\n p = p.next;\r\n }\r\n if (p1 !== null) {\r\n p.next = p1;\r\n }\r\n else if (p2 !== null) {\r\n p.next = p2;\r\n }\r\n return head.next;\r\n}\r\nfunction sort(keys, values, left, right, compare) {\r\n if (left >= right)\r\n return;\r\n var pivot = keys[(left + right) >> 1];\r\n var i = left - 1;\r\n var j = right + 1;\r\n while (true) {\r\n do\r\n i++;\r\n while (compare(keys[i], pivot) < 0);\r\n do\r\n j--;\r\n while (compare(keys[j], pivot) > 0);\r\n if (i >= j)\r\n break;\r\n var tmp = keys[i];\r\n keys[i] = keys[j];\r\n keys[j] = tmp;\r\n tmp = values[i];\r\n values[i] = values[j];\r\n values[j] = tmp;\r\n }\r\n sort(keys, values, left, j, compare);\r\n sort(keys, values, j + 1, right, compare);\r\n}\n\nexport default Tree;\n//# sourceMappingURL=splay.esm.js.map\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import SplayTree from 'splaytree';\nimport { orient2d } from 'robust-predicates';\n\n/**\n * A bounding box has the format:\n *\n * { ll: { x: xmin, y: ymin }, ur: { x: xmax, y: ymax } }\n *\n */\n\nconst isInBbox = (bbox, point) => {\n return bbox.ll.x <= point.x && point.x <= bbox.ur.x && bbox.ll.y <= point.y && point.y <= bbox.ur.y;\n};\n\n/* Returns either null, or a bbox (aka an ordered pair of points)\n * If there is only one point of overlap, a bbox with identical points\n * will be returned */\nconst getBboxOverlap = (b1, b2) => {\n // check if the bboxes overlap at all\n if (b2.ur.x < b1.ll.x || b1.ur.x < b2.ll.x || b2.ur.y < b1.ll.y || b1.ur.y < b2.ll.y) return null;\n\n // find the middle two X values\n const lowerX = b1.ll.x < b2.ll.x ? b2.ll.x : b1.ll.x;\n const upperX = b1.ur.x < b2.ur.x ? b1.ur.x : b2.ur.x;\n\n // find the middle two Y values\n const lowerY = b1.ll.y < b2.ll.y ? b2.ll.y : b1.ll.y;\n const upperY = b1.ur.y < b2.ur.y ? b1.ur.y : b2.ur.y;\n\n // put those middle values together to get the overlap\n return {\n ll: {\n x: lowerX,\n y: lowerY\n },\n ur: {\n x: upperX,\n y: upperY\n }\n };\n};\n\n/* Javascript doesn't do integer math. Everything is\n * floating point with percision Number.EPSILON.\n *\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON\n */\n\nlet epsilon = Number.EPSILON;\n\n// IE Polyfill\nif (epsilon === undefined) epsilon = Math.pow(2, -52);\nconst EPSILON_SQ = epsilon * epsilon;\n\n/* FLP comparator */\nconst cmp = (a, b) => {\n // check if they're both 0\n if (-epsilon < a && a < epsilon) {\n if (-epsilon < b && b < epsilon) {\n return 0;\n }\n }\n\n // check if they're flp equal\n const ab = a - b;\n if (ab * ab < EPSILON_SQ * a * b) {\n return 0;\n }\n\n // normal comparison\n return a < b ? -1 : 1;\n};\n\n/**\n * This class rounds incoming values sufficiently so that\n * floating points problems are, for the most part, avoided.\n *\n * Incoming points are have their x & y values tested against\n * all previously seen x & y values. If either is 'too close'\n * to a previously seen value, it's value is 'snapped' to the\n * previously seen value.\n *\n * All points should be rounded by this class before being\n * stored in any data structures in the rest of this algorithm.\n */\n\nclass PtRounder {\n constructor() {\n this.reset();\n }\n reset() {\n this.xRounder = new CoordRounder();\n this.yRounder = new CoordRounder();\n }\n round(x, y) {\n return {\n x: this.xRounder.round(x),\n y: this.yRounder.round(y)\n };\n }\n}\nclass CoordRounder {\n constructor() {\n this.tree = new SplayTree();\n // preseed with 0 so we don't end up with values < Number.EPSILON\n this.round(0);\n }\n\n // Note: this can rounds input values backwards or forwards.\n // You might ask, why not restrict this to just rounding\n // forwards? Wouldn't that allow left endpoints to always\n // remain left endpoints during splitting (never change to\n // right). No - it wouldn't, because we snap intersections\n // to endpoints (to establish independence from the segment\n // angle for t-intersections).\n round(coord) {\n const node = this.tree.add(coord);\n const prevNode = this.tree.prev(node);\n if (prevNode !== null && cmp(node.key, prevNode.key) === 0) {\n this.tree.remove(coord);\n return prevNode.key;\n }\n const nextNode = this.tree.next(node);\n if (nextNode !== null && cmp(node.key, nextNode.key) === 0) {\n this.tree.remove(coord);\n return nextNode.key;\n }\n return coord;\n }\n}\n\n// singleton available by import\nconst rounder = new PtRounder();\n\n/* Cross Product of two vectors with first point at origin */\nconst crossProduct = (a, b) => a.x * b.y - a.y * b.x;\n\n/* Dot Product of two vectors with first point at origin */\nconst dotProduct = (a, b) => a.x * b.x + a.y * b.y;\n\n/* Comparator for two vectors with same starting point */\nconst compareVectorAngles = (basePt, endPt1, endPt2) => {\n const res = orient2d(basePt.x, basePt.y, endPt1.x, endPt1.y, endPt2.x, endPt2.y);\n if (res > 0) return -1;\n if (res < 0) return 1;\n return 0;\n};\nconst length = v => Math.sqrt(dotProduct(v, v));\n\n/* Get the sine of the angle from pShared -> pAngle to pShaed -> pBase */\nconst sineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = {\n x: pBase.x - pShared.x,\n y: pBase.y - pShared.y\n };\n const vAngle = {\n x: pAngle.x - pShared.x,\n y: pAngle.y - pShared.y\n };\n return crossProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n};\n\n/* Get the cosine of the angle from pShared -> pAngle to pShaed -> pBase */\nconst cosineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = {\n x: pBase.x - pShared.x,\n y: pBase.y - pShared.y\n };\n const vAngle = {\n x: pAngle.x - pShared.x,\n y: pAngle.y - pShared.y\n };\n return dotProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n};\n\n/* Get the x coordinate where the given line (defined by a point and vector)\n * crosses the horizontal line with the given y coordiante.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst horizontalIntersection = (pt, v, y) => {\n if (v.y === 0) return null;\n return {\n x: pt.x + v.x / v.y * (y - pt.y),\n y: y\n };\n};\n\n/* Get the y coordinate where the given line (defined by a point and vector)\n * crosses the vertical line with the given x coordiante.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst verticalIntersection = (pt, v, x) => {\n if (v.x === 0) return null;\n return {\n x: x,\n y: pt.y + v.y / v.x * (x - pt.x)\n };\n};\n\n/* Get the intersection of two lines, each defined by a base point and a vector.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst intersection$1 = (pt1, v1, pt2, v2) => {\n // take some shortcuts for vertical and horizontal lines\n // this also ensures we don't calculate an intersection and then discover\n // it's actually outside the bounding box of the line\n if (v1.x === 0) return verticalIntersection(pt2, v2, pt1.x);\n if (v2.x === 0) return verticalIntersection(pt1, v1, pt2.x);\n if (v1.y === 0) return horizontalIntersection(pt2, v2, pt1.y);\n if (v2.y === 0) return horizontalIntersection(pt1, v1, pt2.y);\n\n // General case for non-overlapping segments.\n // This algorithm is based on Schneider and Eberly.\n // http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - pg 244\n\n const kross = crossProduct(v1, v2);\n if (kross == 0) return null;\n const ve = {\n x: pt2.x - pt1.x,\n y: pt2.y - pt1.y\n };\n const d1 = crossProduct(ve, v1) / kross;\n const d2 = crossProduct(ve, v2) / kross;\n\n // take the average of the two calculations to minimize rounding error\n const x1 = pt1.x + d2 * v1.x,\n x2 = pt2.x + d1 * v2.x;\n const y1 = pt1.y + d2 * v1.y,\n y2 = pt2.y + d1 * v2.y;\n const x = (x1 + x2) / 2;\n const y = (y1 + y2) / 2;\n return {\n x: x,\n y: y\n };\n};\n\nclass SweepEvent {\n // for ordering sweep events in the sweep event queue\n static compare(a, b) {\n // favor event with a point that the sweep line hits first\n const ptCmp = SweepEvent.comparePoints(a.point, b.point);\n if (ptCmp !== 0) return ptCmp;\n\n // the points are the same, so link them if needed\n if (a.point !== b.point) a.link(b);\n\n // favor right events over left\n if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n\n // we have two matching left or right endpoints\n // ordering of this case is the same as for their segments\n return Segment.compare(a.segment, b.segment);\n }\n\n // for ordering points in sweep line order\n static comparePoints(aPt, bPt) {\n if (aPt.x < bPt.x) return -1;\n if (aPt.x > bPt.x) return 1;\n if (aPt.y < bPt.y) return -1;\n if (aPt.y > bPt.y) return 1;\n return 0;\n }\n\n // Warning: 'point' input will be modified and re-used (for performance)\n constructor(point, isLeft) {\n if (point.events === undefined) point.events = [this];else point.events.push(this);\n this.point = point;\n this.isLeft = isLeft;\n // this.segment, this.otherSE set by factory\n }\n link(other) {\n if (other.point === this.point) {\n throw new Error(\"Tried to link already linked events\");\n }\n const otherEvents = other.point.events;\n for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n const evt = otherEvents[i];\n this.point.events.push(evt);\n evt.point = this.point;\n }\n this.checkForConsuming();\n }\n\n /* Do a pass over our linked events and check to see if any pair\n * of segments match, and should be consumed. */\n checkForConsuming() {\n // FIXME: The loops in this method run O(n^2) => no good.\n // Maintain little ordered sweep event trees?\n // Can we maintaining an ordering that avoids the need\n // for the re-sorting with getLeftmostComparator in geom-out?\n\n // Compare each pair of events to see if other events also match\n const numEvents = this.point.events.length;\n for (let i = 0; i < numEvents; i++) {\n const evt1 = this.point.events[i];\n if (evt1.segment.consumedBy !== undefined) continue;\n for (let j = i + 1; j < numEvents; j++) {\n const evt2 = this.point.events[j];\n if (evt2.consumedBy !== undefined) continue;\n if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n evt1.segment.consume(evt2.segment);\n }\n }\n }\n getAvailableLinkedEvents() {\n // point.events is always of length 2 or greater\n const events = [];\n for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n const evt = this.point.events[i];\n if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n events.push(evt);\n }\n }\n return events;\n }\n\n /**\n * Returns a comparator function for sorting linked events that will\n * favor the event that will give us the smallest left-side angle.\n * All ring construction starts as low as possible heading to the right,\n * so by always turning left as sharp as possible we'll get polygons\n * without uncessary loops & holes.\n *\n * The comparator function has a compute cache such that it avoids\n * re-computing already-computed values.\n */\n getLeftmostComparator(baseEvent) {\n const cache = new Map();\n const fillCache = linkedEvent => {\n const nextEvent = linkedEvent.otherSE;\n cache.set(linkedEvent, {\n sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n });\n };\n return (a, b) => {\n if (!cache.has(a)) fillCache(a);\n if (!cache.has(b)) fillCache(b);\n const {\n sine: asine,\n cosine: acosine\n } = cache.get(a);\n const {\n sine: bsine,\n cosine: bcosine\n } = cache.get(b);\n\n // both on or above x-axis\n if (asine >= 0 && bsine >= 0) {\n if (acosine < bcosine) return 1;\n if (acosine > bcosine) return -1;\n return 0;\n }\n\n // both below x-axis\n if (asine < 0 && bsine < 0) {\n if (acosine < bcosine) return -1;\n if (acosine > bcosine) return 1;\n return 0;\n }\n\n // one above x-axis, one below\n if (bsine < asine) return -1;\n if (bsine > asine) return 1;\n return 0;\n };\n }\n}\n\n// Give segments unique ID's to get consistent sorting of\n// segments and sweep events when all else is identical\nlet segmentId = 0;\nclass Segment {\n /* This compare() function is for ordering segments in the sweep\n * line tree, and does so according to the following criteria:\n *\n * Consider the vertical line that lies an infinestimal step to the\n * right of the right-more of the two left endpoints of the input\n * segments. Imagine slowly moving a point up from negative infinity\n * in the increasing y direction. Which of the two segments will that\n * point intersect first? That segment comes 'before' the other one.\n *\n * If neither segment would be intersected by such a line, (if one\n * or more of the segments are vertical) then the line to be considered\n * is directly on the right-more of the two left inputs.\n */\n static compare(a, b) {\n const alx = a.leftSE.point.x;\n const blx = b.leftSE.point.x;\n const arx = a.rightSE.point.x;\n const brx = b.rightSE.point.x;\n\n // check if they're even in the same vertical plane\n if (brx < alx) return 1;\n if (arx < blx) return -1;\n const aly = a.leftSE.point.y;\n const bly = b.leftSE.point.y;\n const ary = a.rightSE.point.y;\n const bry = b.rightSE.point.y;\n\n // is left endpoint of segment B the right-more?\n if (alx < blx) {\n // are the two segments in the same horizontal plane?\n if (bly < aly && bly < ary) return 1;\n if (bly > aly && bly > ary) return -1;\n\n // is the B left endpoint colinear to segment A?\n const aCmpBLeft = a.comparePoint(b.leftSE.point);\n if (aCmpBLeft < 0) return 1;\n if (aCmpBLeft > 0) return -1;\n\n // is the A right endpoint colinear to segment B ?\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n\n // colinear segments, consider the one with left-more\n // left endpoint to be first (arbitrary?)\n return -1;\n }\n\n // is left endpoint of segment A the right-more?\n if (alx > blx) {\n if (aly < bly && aly < bry) return -1;\n if (aly > bly && aly > bry) return 1;\n\n // is the A left endpoint colinear to segment B?\n const bCmpALeft = b.comparePoint(a.leftSE.point);\n if (bCmpALeft !== 0) return bCmpALeft;\n\n // is the B right endpoint colinear to segment A?\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n\n // colinear segments, consider the one with left-more\n // left endpoint to be first (arbitrary?)\n return 1;\n }\n\n // if we get here, the two left endpoints are in the same\n // vertical plane, ie alx === blx\n\n // consider the lower left-endpoint to come first\n if (aly < bly) return -1;\n if (aly > bly) return 1;\n\n // left endpoints are identical\n // check for colinearity by using the left-more right endpoint\n\n // is the A right endpoint more left-more?\n if (arx < brx) {\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n }\n\n // is the B right endpoint more left-more?\n if (arx > brx) {\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n }\n if (arx !== brx) {\n // are these two [almost] vertical segments with opposite orientation?\n // if so, the one with the lower right endpoint comes first\n const ay = ary - aly;\n const ax = arx - alx;\n const by = bry - bly;\n const bx = brx - blx;\n if (ay > ax && by < bx) return 1;\n if (ay < ax && by > bx) return -1;\n }\n\n // we have colinear segments with matching orientation\n // consider the one with more left-more right endpoint to be first\n if (arx > brx) return 1;\n if (arx < brx) return -1;\n\n // if we get here, two two right endpoints are in the same\n // vertical plane, ie arx === brx\n\n // consider the lower right-endpoint to come first\n if (ary < bry) return -1;\n if (ary > bry) return 1;\n\n // right endpoints identical as well, so the segments are idential\n // fall back on creation order as consistent tie-breaker\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n\n // identical segment, ie a === b\n return 0;\n }\n\n /* Warning: a reference to ringWindings input will be stored,\n * and possibly will be later modified */\n constructor(leftSE, rightSE, rings, windings) {\n this.id = ++segmentId;\n this.leftSE = leftSE;\n leftSE.segment = this;\n leftSE.otherSE = rightSE;\n this.rightSE = rightSE;\n rightSE.segment = this;\n rightSE.otherSE = leftSE;\n this.rings = rings;\n this.windings = windings;\n // left unset for performance, set later in algorithm\n // this.ringOut, this.consumedBy, this.prev\n }\n static fromRing(pt1, pt2, ring) {\n let leftPt, rightPt, winding;\n\n // ordering the two points according to sweep line ordering\n const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n if (cmpPts < 0) {\n leftPt = pt1;\n rightPt = pt2;\n winding = 1;\n } else if (cmpPts > 0) {\n leftPt = pt2;\n rightPt = pt1;\n winding = -1;\n } else throw new Error(`Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`);\n const leftSE = new SweepEvent(leftPt, true);\n const rightSE = new SweepEvent(rightPt, false);\n return new Segment(leftSE, rightSE, [ring], [winding]);\n }\n\n /* When a segment is split, the rightSE is replaced with a new sweep event */\n replaceRightSE(newRightSE) {\n this.rightSE = newRightSE;\n this.rightSE.segment = this;\n this.rightSE.otherSE = this.leftSE;\n this.leftSE.otherSE = this.rightSE;\n }\n bbox() {\n const y1 = this.leftSE.point.y;\n const y2 = this.rightSE.point.y;\n return {\n ll: {\n x: this.leftSE.point.x,\n y: y1 < y2 ? y1 : y2\n },\n ur: {\n x: this.rightSE.point.x,\n y: y1 > y2 ? y1 : y2\n }\n };\n }\n\n /* A vector from the left point to the right */\n vector() {\n return {\n x: this.rightSE.point.x - this.leftSE.point.x,\n y: this.rightSE.point.y - this.leftSE.point.y\n };\n }\n isAnEndpoint(pt) {\n return pt.x === this.leftSE.point.x && pt.y === this.leftSE.point.y || pt.x === this.rightSE.point.x && pt.y === this.rightSE.point.y;\n }\n\n /* Compare this segment with a point.\n *\n * A point P is considered to be colinear to a segment if there\n * exists a distance D such that if we travel along the segment\n * from one * endpoint towards the other a distance D, we find\n * ourselves at point P.\n *\n * Return value indicates:\n *\n * 1: point lies above the segment (to the left of vertical)\n * 0: point is colinear to segment\n * -1: point lies below the segment (to the right of vertical)\n */\n comparePoint(point) {\n if (this.isAnEndpoint(point)) return 0;\n const lPt = this.leftSE.point;\n const rPt = this.rightSE.point;\n const v = this.vector();\n\n // Exactly vertical segments.\n if (lPt.x === rPt.x) {\n if (point.x === lPt.x) return 0;\n return point.x < lPt.x ? 1 : -1;\n }\n\n // Nearly vertical segments with an intersection.\n // Check to see where a point on the line with matching Y coordinate is.\n const yDist = (point.y - lPt.y) / v.y;\n const xFromYDist = lPt.x + yDist * v.x;\n if (point.x === xFromYDist) return 0;\n\n // General case.\n // Check to see where a point on the line with matching X coordinate is.\n const xDist = (point.x - lPt.x) / v.x;\n const yFromXDist = lPt.y + xDist * v.y;\n if (point.y === yFromXDist) return 0;\n return point.y < yFromXDist ? -1 : 1;\n }\n\n /**\n * Given another segment, returns the first non-trivial intersection\n * between the two segments (in terms of sweep line ordering), if it exists.\n *\n * A 'non-trivial' intersection is one that will cause one or both of the\n * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n *\n * * endpoint of segA with endpoint of segB --> trivial\n * * endpoint of segA with point along segB --> non-trivial\n * * endpoint of segB with point along segA --> non-trivial\n * * point along segA with point along segB --> non-trivial\n *\n * If no non-trivial intersection exists, return null\n * Else, return null.\n */\n getIntersection(other) {\n // If bboxes don't overlap, there can't be any intersections\n const tBbox = this.bbox();\n const oBbox = other.bbox();\n const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n if (bboxOverlap === null) return null;\n\n // We first check to see if the endpoints can be considered intersections.\n // This will 'snap' intersections to endpoints if possible, and will\n // handle cases of colinearity.\n\n const tlp = this.leftSE.point;\n const trp = this.rightSE.point;\n const olp = other.leftSE.point;\n const orp = other.rightSE.point;\n\n // does each endpoint touch the other segment?\n // note that we restrict the 'touching' definition to only allow segments\n // to touch endpoints that lie forward from where we are in the sweep line pass\n const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n\n // do left endpoints match?\n if (touchesThisLSE && touchesOtherLSE) {\n // these two cases are for colinear segments with matching left\n // endpoints, and one segment being longer than the other\n if (touchesThisRSE && !touchesOtherRSE) return trp;\n if (!touchesThisRSE && touchesOtherRSE) return orp;\n // either the two segments match exactly (two trival intersections)\n // or just on their left endpoint (one trivial intersection\n return null;\n }\n\n // does this left endpoint matches (other doesn't)\n if (touchesThisLSE) {\n // check for segments that just intersect on opposing endpoints\n if (touchesOtherRSE) {\n if (tlp.x === orp.x && tlp.y === orp.y) return null;\n }\n // t-intersection on left endpoint\n return tlp;\n }\n\n // does other left endpoint matches (this doesn't)\n if (touchesOtherLSE) {\n // check for segments that just intersect on opposing endpoints\n if (touchesThisRSE) {\n if (trp.x === olp.x && trp.y === olp.y) return null;\n }\n // t-intersection on left endpoint\n return olp;\n }\n\n // trivial intersection on right endpoints\n if (touchesThisRSE && touchesOtherRSE) return null;\n\n // t-intersections on just one right endpoint\n if (touchesThisRSE) return trp;\n if (touchesOtherRSE) return orp;\n\n // None of our endpoints intersect. Look for a general intersection between\n // infinite lines laid over the segments\n const pt = intersection$1(tlp, this.vector(), olp, other.vector());\n\n // are the segments parrallel? Note that if they were colinear with overlap,\n // they would have an endpoint intersection and that case was already handled above\n if (pt === null) return null;\n\n // is the intersection found between the lines not on the segments?\n if (!isInBbox(bboxOverlap, pt)) return null;\n\n // round the the computed point if needed\n return rounder.round(pt.x, pt.y);\n }\n\n /**\n * Split the given segment into multiple segments on the given points.\n * * Each existing segment will retain its leftSE and a new rightSE will be\n * generated for it.\n * * A new segment will be generated which will adopt the original segment's\n * rightSE, and a new leftSE will be generated for it.\n * * If there are more than two points given to split on, new segments\n * in the middle will be generated with new leftSE and rightSE's.\n * * An array of the newly generated SweepEvents will be returned.\n *\n * Warning: input array of points is modified\n */\n split(point) {\n const newEvents = [];\n const alreadyLinked = point.events !== undefined;\n const newLeftSE = new SweepEvent(point, true);\n const newRightSE = new SweepEvent(point, false);\n const oldRightSE = this.rightSE;\n this.replaceRightSE(newRightSE);\n newEvents.push(newRightSE);\n newEvents.push(newLeftSE);\n const newSeg = new Segment(newLeftSE, oldRightSE, this.rings.slice(), this.windings.slice());\n\n // when splitting a nearly vertical downward-facing segment,\n // sometimes one of the resulting new segments is vertical, in which\n // case its left and right events may need to be swapped\n if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n newSeg.swapEvents();\n }\n if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n this.swapEvents();\n }\n\n // in the point we just used to create new sweep events with was already\n // linked to other events, we need to check if either of the affected\n // segments should be consumed\n if (alreadyLinked) {\n newLeftSE.checkForConsuming();\n newRightSE.checkForConsuming();\n }\n return newEvents;\n }\n\n /* Swap which event is left and right */\n swapEvents() {\n const tmpEvt = this.rightSE;\n this.rightSE = this.leftSE;\n this.leftSE = tmpEvt;\n this.leftSE.isLeft = true;\n this.rightSE.isLeft = false;\n for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n this.windings[i] *= -1;\n }\n }\n\n /* Consume another segment. We take their rings under our wing\n * and mark them as consumed. Use for perfectly overlapping segments */\n consume(other) {\n let consumer = this;\n let consumee = other;\n while (consumer.consumedBy) consumer = consumer.consumedBy;\n while (consumee.consumedBy) consumee = consumee.consumedBy;\n const cmp = Segment.compare(consumer, consumee);\n if (cmp === 0) return; // already consumed\n // the winner of the consumption is the earlier segment\n // according to sweep line ordering\n if (cmp > 0) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n\n // make sure a segment doesn't consume it's prev\n if (consumer.prev === consumee) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n const ring = consumee.rings[i];\n const winding = consumee.windings[i];\n const index = consumer.rings.indexOf(ring);\n if (index === -1) {\n consumer.rings.push(ring);\n consumer.windings.push(winding);\n } else consumer.windings[index] += winding;\n }\n consumee.rings = null;\n consumee.windings = null;\n consumee.consumedBy = consumer;\n\n // mark sweep events consumed as to maintain ordering in sweep event queue\n consumee.leftSE.consumedBy = consumer.leftSE;\n consumee.rightSE.consumedBy = consumer.rightSE;\n }\n\n /* The first segment previous segment chain that is in the result */\n prevInResult() {\n if (this._prevInResult !== undefined) return this._prevInResult;\n if (!this.prev) this._prevInResult = null;else if (this.prev.isInResult()) this._prevInResult = this.prev;else this._prevInResult = this.prev.prevInResult();\n return this._prevInResult;\n }\n beforeState() {\n if (this._beforeState !== undefined) return this._beforeState;\n if (!this.prev) this._beforeState = {\n rings: [],\n windings: [],\n multiPolys: []\n };else {\n const seg = this.prev.consumedBy || this.prev;\n this._beforeState = seg.afterState();\n }\n return this._beforeState;\n }\n afterState() {\n if (this._afterState !== undefined) return this._afterState;\n const beforeState = this.beforeState();\n this._afterState = {\n rings: beforeState.rings.slice(0),\n windings: beforeState.windings.slice(0),\n multiPolys: []\n };\n const ringsAfter = this._afterState.rings;\n const windingsAfter = this._afterState.windings;\n const mpsAfter = this._afterState.multiPolys;\n\n // calculate ringsAfter, windingsAfter\n for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n const ring = this.rings[i];\n const winding = this.windings[i];\n const index = ringsAfter.indexOf(ring);\n if (index === -1) {\n ringsAfter.push(ring);\n windingsAfter.push(winding);\n } else windingsAfter[index] += winding;\n }\n\n // calcualte polysAfter\n const polysAfter = [];\n const polysExclude = [];\n for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n if (windingsAfter[i] === 0) continue; // non-zero rule\n const ring = ringsAfter[i];\n const poly = ring.poly;\n if (polysExclude.indexOf(poly) !== -1) continue;\n if (ring.isExterior) polysAfter.push(poly);else {\n if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n const index = polysAfter.indexOf(ring.poly);\n if (index !== -1) polysAfter.splice(index, 1);\n }\n }\n\n // calculate multiPolysAfter\n for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n const mp = polysAfter[i].multiPoly;\n if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n }\n return this._afterState;\n }\n\n /* Is this segment part of the final result? */\n isInResult() {\n // if we've been consumed, we're not in the result\n if (this.consumedBy) return false;\n if (this._isInResult !== undefined) return this._isInResult;\n const mpsBefore = this.beforeState().multiPolys;\n const mpsAfter = this.afterState().multiPolys;\n switch (operation.type) {\n case \"union\":\n {\n // UNION - included iff:\n // * On one side of us there is 0 poly interiors AND\n // * On the other side there is 1 or more.\n const noBefores = mpsBefore.length === 0;\n const noAfters = mpsAfter.length === 0;\n this._isInResult = noBefores !== noAfters;\n break;\n }\n case \"intersection\":\n {\n // INTERSECTION - included iff:\n // * on one side of us all multipolys are rep. with poly interiors AND\n // * on the other side of us, not all multipolys are repsented\n // with poly interiors\n let least;\n let most;\n if (mpsBefore.length < mpsAfter.length) {\n least = mpsBefore.length;\n most = mpsAfter.length;\n } else {\n least = mpsAfter.length;\n most = mpsBefore.length;\n }\n this._isInResult = most === operation.numMultiPolys && least < most;\n break;\n }\n case \"xor\":\n {\n // XOR - included iff:\n // * the difference between the number of multipolys represented\n // with poly interiors on our two sides is an odd number\n const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n this._isInResult = diff % 2 === 1;\n break;\n }\n case \"difference\":\n {\n // DIFFERENCE included iff:\n // * on exactly one side, we have just the subject\n const isJustSubject = mps => mps.length === 1 && mps[0].isSubject;\n this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n break;\n }\n default:\n throw new Error(`Unrecognized operation type found ${operation.type}`);\n }\n return this._isInResult;\n }\n}\n\nclass RingIn {\n constructor(geomRing, poly, isExterior) {\n if (!Array.isArray(geomRing) || geomRing.length === 0) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.poly = poly;\n this.isExterior = isExterior;\n this.segments = [];\n if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n const firstPoint = rounder.round(geomRing[0][0], geomRing[0][1]);\n this.bbox = {\n ll: {\n x: firstPoint.x,\n y: firstPoint.y\n },\n ur: {\n x: firstPoint.x,\n y: firstPoint.y\n }\n };\n let prevPoint = firstPoint;\n for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n let point = rounder.round(geomRing[i][0], geomRing[i][1]);\n // skip repeated points\n if (point.x === prevPoint.x && point.y === prevPoint.y) continue;\n this.segments.push(Segment.fromRing(prevPoint, point, this));\n if (point.x < this.bbox.ll.x) this.bbox.ll.x = point.x;\n if (point.y < this.bbox.ll.y) this.bbox.ll.y = point.y;\n if (point.x > this.bbox.ur.x) this.bbox.ur.x = point.x;\n if (point.y > this.bbox.ur.y) this.bbox.ur.y = point.y;\n prevPoint = point;\n }\n // add segment from last to first if last is not the same as first\n if (firstPoint.x !== prevPoint.x || firstPoint.y !== prevPoint.y) {\n this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n }\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n const segment = this.segments[i];\n sweepEvents.push(segment.leftSE);\n sweepEvents.push(segment.rightSE);\n }\n return sweepEvents;\n }\n}\nclass PolyIn {\n constructor(geomPoly, multiPoly) {\n if (!Array.isArray(geomPoly)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.exteriorRing = new RingIn(geomPoly[0], this, true);\n // copy by value\n this.bbox = {\n ll: {\n x: this.exteriorRing.bbox.ll.x,\n y: this.exteriorRing.bbox.ll.y\n },\n ur: {\n x: this.exteriorRing.bbox.ur.x,\n y: this.exteriorRing.bbox.ur.y\n }\n };\n this.interiorRings = [];\n for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n const ring = new RingIn(geomPoly[i], this, false);\n if (ring.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = ring.bbox.ll.x;\n if (ring.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = ring.bbox.ll.y;\n if (ring.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = ring.bbox.ur.x;\n if (ring.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = ring.bbox.ur.y;\n this.interiorRings.push(ring);\n }\n this.multiPoly = multiPoly;\n }\n getSweepEvents() {\n const sweepEvents = this.exteriorRing.getSweepEvents();\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n sweepEvents.push(ringSweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n}\nclass MultiPolyIn {\n constructor(geom, isSubject) {\n if (!Array.isArray(geom)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n try {\n // if the input looks like a polygon, convert it to a multipolygon\n if (typeof geom[0][0][0] === \"number\") geom = [geom];\n } catch (ex) {\n // The input is either malformed or has empty arrays.\n // In either case, it will be handled later on.\n }\n this.polys = [];\n this.bbox = {\n ll: {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY\n },\n ur: {\n x: Number.NEGATIVE_INFINITY,\n y: Number.NEGATIVE_INFINITY\n }\n };\n for (let i = 0, iMax = geom.length; i < iMax; i++) {\n const poly = new PolyIn(geom[i], this);\n if (poly.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = poly.bbox.ll.x;\n if (poly.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = poly.bbox.ll.y;\n if (poly.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = poly.bbox.ur.x;\n if (poly.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = poly.bbox.ur.y;\n this.polys.push(poly);\n }\n this.isSubject = isSubject;\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polySweepEvents = this.polys[i].getSweepEvents();\n for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n sweepEvents.push(polySweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n}\n\nclass RingOut {\n /* Given the segments from the sweep line pass, compute & return a series\n * of closed rings from all the segments marked to be part of the result */\n static factory(allSegments) {\n const ringsOut = [];\n for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n const segment = allSegments[i];\n if (!segment.isInResult() || segment.ringOut) continue;\n let prevEvent = null;\n let event = segment.leftSE;\n let nextEvent = segment.rightSE;\n const events = [event];\n const startingPoint = event.point;\n const intersectionLEs = [];\n\n /* Walk the chain of linked events to form a closed ring */\n while (true) {\n prevEvent = event;\n event = nextEvent;\n events.push(event);\n\n /* Is the ring complete? */\n if (event.point === startingPoint) break;\n while (true) {\n const availableLEs = event.getAvailableLinkedEvents();\n\n /* Did we hit a dead end? This shouldn't happen.\n * Indicates some earlier part of the algorithm malfunctioned. */\n if (availableLEs.length === 0) {\n const firstPt = events[0].point;\n const lastPt = events[events.length - 1].point;\n throw new Error(`Unable to complete output ring starting at [${firstPt.x},` + ` ${firstPt.y}]. Last matching segment found ends at` + ` [${lastPt.x}, ${lastPt.y}].`);\n }\n\n /* Only one way to go, so cotinue on the path */\n if (availableLEs.length === 1) {\n nextEvent = availableLEs[0].otherSE;\n break;\n }\n\n /* We must have an intersection. Check for a completed loop */\n let indexLE = null;\n for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n if (intersectionLEs[j].point === event.point) {\n indexLE = j;\n break;\n }\n }\n /* Found a completed loop. Cut that off and make a ring */\n if (indexLE !== null) {\n const intersectionLE = intersectionLEs.splice(indexLE)[0];\n const ringEvents = events.splice(intersectionLE.index);\n ringEvents.unshift(ringEvents[0].otherSE);\n ringsOut.push(new RingOut(ringEvents.reverse()));\n continue;\n }\n /* register the intersection */\n intersectionLEs.push({\n index: events.length,\n point: event.point\n });\n /* Choose the left-most option to continue the walk */\n const comparator = event.getLeftmostComparator(prevEvent);\n nextEvent = availableLEs.sort(comparator)[0].otherSE;\n break;\n }\n }\n ringsOut.push(new RingOut(events));\n }\n return ringsOut;\n }\n constructor(events) {\n this.events = events;\n for (let i = 0, iMax = events.length; i < iMax; i++) {\n events[i].segment.ringOut = this;\n }\n this.poly = null;\n }\n getGeom() {\n // Remove superfluous points (ie extra points along a straight line),\n let prevPt = this.events[0].point;\n const points = [prevPt];\n for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n const pt = this.events[i].point;\n const nextPt = this.events[i + 1].point;\n if (compareVectorAngles(pt, prevPt, nextPt) === 0) continue;\n points.push(pt);\n prevPt = pt;\n }\n\n // ring was all (within rounding error of angle calc) colinear points\n if (points.length === 1) return null;\n\n // check if the starting point is necessary\n const pt = points[0];\n const nextPt = points[1];\n if (compareVectorAngles(pt, prevPt, nextPt) === 0) points.shift();\n points.push(points[0]);\n const step = this.isExteriorRing() ? 1 : -1;\n const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n const iEnd = this.isExteriorRing() ? points.length : -1;\n const orderedPoints = [];\n for (let i = iStart; i != iEnd; i += step) orderedPoints.push([points[i].x, points[i].y]);\n return orderedPoints;\n }\n isExteriorRing() {\n if (this._isExteriorRing === undefined) {\n const enclosing = this.enclosingRing();\n this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n }\n return this._isExteriorRing;\n }\n enclosingRing() {\n if (this._enclosingRing === undefined) {\n this._enclosingRing = this._calcEnclosingRing();\n }\n return this._enclosingRing;\n }\n\n /* Returns the ring that encloses this one, if any */\n _calcEnclosingRing() {\n // start with the ealier sweep line event so that the prevSeg\n // chain doesn't lead us inside of a loop of ours\n let leftMostEvt = this.events[0];\n for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n const evt = this.events[i];\n if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n }\n let prevSeg = leftMostEvt.segment.prevInResult();\n let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n while (true) {\n // no segment found, thus no ring can enclose us\n if (!prevSeg) return null;\n\n // no segments below prev segment found, thus the ring of the prev\n // segment must loop back around and enclose us\n if (!prevPrevSeg) return prevSeg.ringOut;\n\n // if the two segments are of different rings, the ring of the prev\n // segment must either loop around us or the ring of the prev prev\n // seg, which would make us and the ring of the prev peers\n if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n if (prevPrevSeg.ringOut.enclosingRing() !== prevSeg.ringOut) {\n return prevSeg.ringOut;\n } else return prevSeg.ringOut.enclosingRing();\n }\n\n // two segments are from the same ring, so this was a penisula\n // of that ring. iterate downward, keep searching\n prevSeg = prevPrevSeg.prevInResult();\n prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n }\n }\n}\nclass PolyOut {\n constructor(exteriorRing) {\n this.exteriorRing = exteriorRing;\n exteriorRing.poly = this;\n this.interiorRings = [];\n }\n addInterior(ring) {\n this.interiorRings.push(ring);\n ring.poly = this;\n }\n getGeom() {\n const geom = [this.exteriorRing.getGeom()];\n // exterior ring was all (within rounding error of angle calc) colinear points\n if (geom[0] === null) return null;\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringGeom = this.interiorRings[i].getGeom();\n // interior ring was all (within rounding error of angle calc) colinear points\n if (ringGeom === null) continue;\n geom.push(ringGeom);\n }\n return geom;\n }\n}\nclass MultiPolyOut {\n constructor(rings) {\n this.rings = rings;\n this.polys = this._composePolys(rings);\n }\n getGeom() {\n const geom = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polyGeom = this.polys[i].getGeom();\n // exterior ring was all (within rounding error of angle calc) colinear points\n if (polyGeom === null) continue;\n geom.push(polyGeom);\n }\n return geom;\n }\n _composePolys(rings) {\n const polys = [];\n for (let i = 0, iMax = rings.length; i < iMax; i++) {\n const ring = rings[i];\n if (ring.poly) continue;\n if (ring.isExteriorRing()) polys.push(new PolyOut(ring));else {\n const enclosingRing = ring.enclosingRing();\n if (!enclosingRing.poly) polys.push(new PolyOut(enclosingRing));\n enclosingRing.poly.addInterior(ring);\n }\n }\n return polys;\n }\n}\n\n/**\n * NOTE: We must be careful not to change any segments while\n * they are in the SplayTree. AFAIK, there's no way to tell\n * the tree to rebalance itself - thus before splitting\n * a segment that's in the tree, we remove it from the tree,\n * do the split, then re-insert it. (Even though splitting a\n * segment *shouldn't* change its correct position in the\n * sweep line tree, the reality is because of rounding errors,\n * it sometimes does.)\n */\n\nclass SweepLine {\n constructor(queue) {\n let comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Segment.compare;\n this.queue = queue;\n this.tree = new SplayTree(comparator);\n this.segments = [];\n }\n process(event) {\n const segment = event.segment;\n const newEvents = [];\n\n // if we've already been consumed by another segment,\n // clean up our body parts and get out\n if (event.consumedBy) {\n if (event.isLeft) this.queue.remove(event.otherSE);else this.tree.remove(segment);\n return newEvents;\n }\n const node = event.isLeft ? this.tree.add(segment) : this.tree.find(segment);\n if (!node) throw new Error(`Unable to find segment #${segment.id} ` + `[${segment.leftSE.point.x}, ${segment.leftSE.point.y}] -> ` + `[${segment.rightSE.point.x}, ${segment.rightSE.point.y}] ` + \"in SweepLine tree.\");\n let prevNode = node;\n let nextNode = node;\n let prevSeg = undefined;\n let nextSeg = undefined;\n\n // skip consumed segments still in tree\n while (prevSeg === undefined) {\n prevNode = this.tree.prev(prevNode);\n if (prevNode === null) prevSeg = null;else if (prevNode.key.consumedBy === undefined) prevSeg = prevNode.key;\n }\n\n // skip consumed segments still in tree\n while (nextSeg === undefined) {\n nextNode = this.tree.next(nextNode);\n if (nextNode === null) nextSeg = null;else if (nextNode.key.consumedBy === undefined) nextSeg = nextNode.key;\n }\n if (event.isLeft) {\n // Check for intersections against the previous segment in the sweep line\n let prevMySplitter = null;\n if (prevSeg) {\n const prevInter = prevSeg.getIntersection(segment);\n if (prevInter !== null) {\n if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n if (!prevSeg.isAnEndpoint(prevInter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n\n // Check for intersections against the next segment in the sweep line\n let nextMySplitter = null;\n if (nextSeg) {\n const nextInter = nextSeg.getIntersection(segment);\n if (nextInter !== null) {\n if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n if (!nextSeg.isAnEndpoint(nextInter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n\n // For simplicity, even if we find more than one intersection we only\n // spilt on the 'earliest' (sweep-line style) of the intersections.\n // The other intersection will be handled in a future process().\n if (prevMySplitter !== null || nextMySplitter !== null) {\n let mySplitter = null;\n if (prevMySplitter === null) mySplitter = nextMySplitter;else if (nextMySplitter === null) mySplitter = prevMySplitter;else {\n const cmpSplitters = SweepEvent.comparePoints(prevMySplitter, nextMySplitter);\n mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n }\n\n // Rounding errors can cause changes in ordering,\n // so remove afected segments and right sweep events before splitting\n this.queue.remove(segment.rightSE);\n newEvents.push(segment.rightSE);\n const newEventsFromSplit = segment.split(mySplitter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (newEvents.length > 0) {\n // We found some intersections, so re-do the current event to\n // make sure sweep line ordering is totally consistent for later\n // use with the segment 'prev' pointers\n this.tree.remove(segment);\n newEvents.push(event);\n } else {\n // done with left event\n this.segments.push(segment);\n segment.prev = prevSeg;\n }\n } else {\n // event.isRight\n\n // since we're about to be removed from the sweep line, check for\n // intersections between our previous and next segments\n if (prevSeg && nextSeg) {\n const inter = prevSeg.getIntersection(nextSeg);\n if (inter !== null) {\n if (!prevSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (!nextSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n this.tree.remove(segment);\n }\n return newEvents;\n }\n\n /* Safely split a segment that is currently in the datastructures\n * IE - a segment other than the one that is currently being processed. */\n _splitSafely(seg, pt) {\n // Rounding errors can cause changes in ordering,\n // so remove afected segments and right sweep events before splitting\n // removeNode() doesn't work, so have re-find the seg\n // https://github.com/w8r/splay-tree/pull/5\n this.tree.remove(seg);\n const rightSE = seg.rightSE;\n this.queue.remove(rightSE);\n const newEvents = seg.split(pt);\n newEvents.push(rightSE);\n // splitting can trigger consumption\n if (seg.consumedBy === undefined) this.tree.add(seg);\n return newEvents;\n }\n}\n\n// Limits on iterative processes to prevent infinite loops - usually caused by floating-point math round-off errors.\nconst POLYGON_CLIPPING_MAX_QUEUE_SIZE = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE || 1000000;\nconst POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS || 1000000;\nclass Operation {\n run(type, geom, moreGeoms) {\n operation.type = type;\n rounder.reset();\n\n /* Convert inputs to MultiPoly objects */\n const multipolys = [new MultiPolyIn(geom, true)];\n for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n }\n operation.numMultiPolys = multipolys.length;\n\n /* BBox optimization for difference operation\n * If the bbox of a multipolygon that's part of the clipping doesn't\n * intersect the bbox of the subject at all, we can just drop that\n * multiploygon. */\n if (operation.type === \"difference\") {\n // in place removal\n const subject = multipolys[0];\n let i = 1;\n while (i < multipolys.length) {\n if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;else multipolys.splice(i, 1);\n }\n }\n\n /* BBox optimization for intersection operation\n * If we can find any pair of multipolygons whose bbox does not overlap,\n * then the result will be empty. */\n if (operation.type === \"intersection\") {\n // TODO: this is O(n^2) in number of polygons. By sorting the bboxes,\n // it could be optimized to O(n * ln(n))\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const mpA = multipolys[i];\n for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n }\n }\n }\n\n /* Put segment endpoints in a priority queue */\n const queue = new SplayTree(SweepEvent.compare);\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const sweepEvents = multipolys[i].getSweepEvents();\n for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n queue.insert(sweepEvents[j]);\n if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when putting segment endpoints in a priority queue \" + \"(queue size too big).\");\n }\n }\n }\n\n /* Pass the sweep line over those endpoints */\n const sweepLine = new SweepLine(queue);\n let prevQueueSize = queue.size;\n let node = queue.pop();\n while (node) {\n const evt = node.key;\n if (queue.size === prevQueueSize) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n const seg = evt.segment;\n throw new Error(`Unable to pop() ${evt.isLeft ? \"left\" : \"right\"} SweepEvent ` + `[${evt.point.x}, ${evt.point.y}] from segment #${seg.id} ` + `[${seg.leftSE.point.x}, ${seg.leftSE.point.y}] -> ` + `[${seg.rightSE.point.x}, ${seg.rightSE.point.y}] from queue.`);\n }\n if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(queue size too big).\");\n }\n if (sweepLine.segments.length > POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(too many sweep line segments).\");\n }\n const newEvents = sweepLine.process(evt);\n for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n const evt = newEvents[i];\n if (evt.consumedBy === undefined) queue.insert(evt);\n }\n prevQueueSize = queue.size;\n node = queue.pop();\n }\n\n // free some memory we don't need anymore\n rounder.reset();\n\n /* Collect and compile segments we're keeping into a multipolygon */\n const ringsOut = RingOut.factory(sweepLine.segments);\n const result = new MultiPolyOut(ringsOut);\n return result.getGeom();\n }\n}\n\n// singleton available by import\nconst operation = new Operation();\n\nconst union = function (geom) {\n for (var _len = arguments.length, moreGeoms = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n moreGeoms[_key - 1] = arguments[_key];\n }\n return operation.run(\"union\", geom, moreGeoms);\n};\nconst intersection = function (geom) {\n for (var _len2 = arguments.length, moreGeoms = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n moreGeoms[_key2 - 1] = arguments[_key2];\n }\n return operation.run(\"intersection\", geom, moreGeoms);\n};\nconst xor = function (geom) {\n for (var _len3 = arguments.length, moreGeoms = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n moreGeoms[_key3 - 1] = arguments[_key3];\n }\n return operation.run(\"xor\", geom, moreGeoms);\n};\nconst difference = function (subjectGeom) {\n for (var _len4 = arguments.length, clippingGeoms = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n clippingGeoms[_key4 - 1] = arguments[_key4];\n }\n return operation.run(\"difference\", subjectGeom, clippingGeoms);\n};\nvar index = {\n union: union,\n intersection: intersection,\n xor: xor,\n difference: difference\n};\n\nexport { index as default };\n","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null)\n return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null)\n continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\")\n multiFeatureIndex++;\n }\n if (geomType === \"LineString\")\n multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\")\n multiFeatureIndex++;\n if (geomType === \"Polygon\")\n geometryIndex++;\n }\n if (geomType === \"Polygon\")\n multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false)\n break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false)\n break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry)\n return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\")\n return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson)\n throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null)\n return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0)\n segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0)\n coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport polygonClipping from \"polygon-clipping\";\nimport { multiPolygon, polygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction union(features, options = {}) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least 2 geometries\");\n }\n const unioned = polygonClipping.union(geoms[0], ...geoms.slice(1));\n if (unioned.length === 0)\n return null;\n if (unioned.length === 1)\n return polygon(unioned[0], options.properties);\n else\n return multiPolygon(unioned, options.properties);\n}\nvar turf_union_default = union;\nexport {\n turf_union_default as default,\n union\n};\n//# sourceMappingURL=index.js.map","/** @returns {void} */\nexport function noop() {}\n\nexport const identity = (x) => x;\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nexport function assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n/**\n * @param {any} value\n * @returns {value is PromiseLike<any>}\n */\nexport function is_promise(value) {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === 'object' || typeof value === 'function') &&\n\t\ttypeof (/** @type {any} */ (value).then) === 'function'\n\t);\n}\n\n/** @returns {void} */\nexport function add_location(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nexport function run(fn) {\n\treturn fn();\n}\n\nexport function blank_object() {\n\treturn Object.create(null);\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\n/** @returns {boolean} */\nexport function safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\nlet src_url_equal_anchor;\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nexport function src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\tif (!src_url_equal_anchor) {\n\t\tsrc_url_equal_anchor = document.createElement('a');\n\t}\n\t// This is actually faster than doing URL(..).href\n\tsrc_url_equal_anchor.href = url;\n\treturn element_src === src_url_equal_anchor.href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element_srcset\n * @param {string | undefined | null} srcset\n * @returns {boolean}\n */\nexport function srcset_url_equal(element_srcset, srcset) {\n\tconst element_urls = split_srcset(element_srcset.srcset);\n\tconst urls = split_srcset(srcset || '');\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n\n/** @returns {boolean} */\nexport function not_equal(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\n/** @returns {boolean} */\nexport function is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\n/** @returns {void} */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\tthrow new Error(`'${name}' is not a store with a 'subscribe' method`);\n\t}\n}\n\nexport function subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback(undefined);\n\t\t}\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public.js').Readable<T>} store\n * @returns {T}\n */\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe(store, (_) => (value = _))();\n\treturn value;\n}\n\n/** @returns {void} */\nexport function component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nexport function create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;\n}\n\nexport function get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\t\t\treturn merged;\n\t\t}\n\t\treturn $$scope.dirty | lets;\n\t}\n\treturn $$scope.dirty;\n}\n\n/** @returns {void} */\nexport function update_slot_base(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tslot_changes,\n\tget_slot_context_fn\n) {\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\n/** @returns {void} */\nexport function update_slot(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tdirty,\n\tget_slot_changes_fn,\n\tget_slot_context_fn\n) {\n\tconst slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n\tupdate_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\n\n/** @returns {any[] | -1} */\nexport function get_all_dirty_from_scope($$scope) {\n\tif ($$scope.ctx.length > 32) {\n\t\tconst dirty = [];\n\t\tconst length = $$scope.ctx.length / 32;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdirty[i] = -1;\n\t\t}\n\t\treturn dirty;\n\t}\n\treturn -1;\n}\n\n/** @returns {{}} */\nexport function exclude_internal_props(props) {\n\tconst result = {};\n\tfor (const k in props) if (k[0] !== '$') result[k] = props[k];\n\treturn result;\n}\n\n/** @returns {{}} */\nexport function compute_rest_props(props, keys) {\n\tconst rest = {};\n\tkeys = new Set(keys);\n\tfor (const k in props) if (!keys.has(k) && k[0] !== '$') rest[k] = props[k];\n\treturn rest;\n}\n\n/** @returns {{}} */\nexport function compute_slots(slots) {\n\tconst result = {};\n\tfor (const key in slots) {\n\t\tresult[key] = true;\n\t}\n\treturn result;\n}\n\n/** @returns {(this: any, ...args: any[]) => void} */\nexport function once(fn) {\n\tlet ran = false;\n\treturn function (...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\t\tfn.call(this, ...args);\n\t};\n}\n\nexport function null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nexport function set_store_value(store, ret, value) {\n\tstore.set(value);\n\treturn ret;\n}\n\nexport const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\nexport function action_destroyer(action_result) {\n\treturn action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nexport function split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\nexport const contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n","import { contenteditable_truthy_values, has_prop } from './utils.js';\n\nimport { ResizeObserverSingleton } from './ResizeObserverSingleton.js';\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\n\n/**\n * @returns {void}\n */\nexport function start_hydrating() {\n\tis_hydrating = true;\n}\n\n/**\n * @returns {void}\n */\nexport function end_hydrating() {\n\tis_hydrating = false;\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {(index: number) => number} key\n * @param {number} value\n * @returns {number}\n */\nfunction upper_bound(low, high, key, value) {\n\t// Return first index of value larger than input value in the range [low, high)\n\twhile (low < high) {\n\t\tconst mid = low + ((high - low) >> 1);\n\t\tif (key(mid) <= value) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\thigh = mid;\n\t\t}\n\t}\n\treturn low;\n}\n\n/**\n * @param {NodeEx} target\n * @returns {void}\n */\nfunction init_hydrate(target) {\n\tif (target.hydrate_init) return;\n\ttarget.hydrate_init = true;\n\t// We know that all children have claim_order values since the unclaimed have been detached if target is not <head>\n\n\tlet children = /** @type {ArrayLike<NodeEx2>} */ (target.childNodes);\n\t// If target is <head>, there may be children without claim_order\n\tif (target.nodeName === 'HEAD') {\n\t\tconst my_children = [];\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst node = children[i];\n\t\t\tif (node.claim_order !== undefined) {\n\t\t\t\tmy_children.push(node);\n\t\t\t}\n\t\t}\n\t\tchildren = my_children;\n\t}\n\t/*\n\t * Reorder claimed children optimally.\n\t * We can reorder claimed children optimally by finding the longest subsequence of\n\t * nodes that are already claimed in order and only moving the rest. The longest\n\t * subsequence of nodes that are claimed in order can be found by\n\t * computing the longest increasing subsequence of .claim_order values.\n\t *\n\t * This algorithm is optimal in generating the least amount of reorder operations\n\t * possible.\n\t *\n\t * Proof:\n\t * We know that, given a set of reordering operations, the nodes that do not move\n\t * always form an increasing subsequence, since they do not move among each other\n\t * meaning that they must be already ordered among each other. Thus, the maximal\n\t * set of nodes that do not move form a longest increasing subsequence.\n\t */\n\t// Compute longest increasing subsequence\n\t// m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n\tconst m = new Int32Array(children.length + 1);\n\t// Predecessor indices + 1\n\tconst p = new Int32Array(children.length);\n\tm[0] = -1;\n\tlet longest = 0;\n\tfor (let i = 0; i < children.length; i++) {\n\t\tconst current = children[i].claim_order;\n\t\t// Find the largest subsequence length such that it ends in a value less than our current value\n\t\t// upper_bound returns first greater value, so we subtract one\n\t\t// with fast path for when we are on the current longest subsequence\n\t\tconst seq_len =\n\t\t\t(longest > 0 && children[m[longest]].claim_order <= current\n\t\t\t\t? longest + 1\n\t\t\t\t: upper_bound(1, longest, (idx) => children[m[idx]].claim_order, current)) - 1;\n\t\tp[i] = m[seq_len] + 1;\n\t\tconst new_len = seq_len + 1;\n\t\t// We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n\t\tm[new_len] = i;\n\t\tlongest = Math.max(new_len, longest);\n\t}\n\t// The longest increasing subsequence of nodes (initially reversed)\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst lis = [];\n\t// The rest of the nodes, nodes that will be moved\n\n\t/**\n\t * @type {NodeEx2[]}\n\t */\n\tconst to_move = [];\n\tlet last = children.length - 1;\n\tfor (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n\t\tlis.push(children[cur - 1]);\n\t\tfor (; last >= cur; last--) {\n\t\t\tto_move.push(children[last]);\n\t\t}\n\t\tlast--;\n\t}\n\tfor (; last >= 0; last--) {\n\t\tto_move.push(children[last]);\n\t}\n\tlis.reverse();\n\t// We sort the nodes being moved to guarantee that their insertion order matches the claim order\n\tto_move.sort((a, b) => a.claim_order - b.claim_order);\n\t// Finally, we move the nodes\n\tfor (let i = 0, j = 0; i < to_move.length; i++) {\n\t\twhile (j < lis.length && to_move[i].claim_order >= lis[j].claim_order) {\n\t\t\tj++;\n\t\t}\n\t\tconst anchor = j < lis.length ? lis[j] : null;\n\t\ttarget.insertBefore(to_move[i], anchor);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @returns {void}\n */\nexport function append(target, node) {\n\ttarget.appendChild(node);\n}\n\n/**\n * @param {Node} target\n * @param {string} style_sheet_id\n * @param {string} styles\n * @returns {void}\n */\nexport function append_styles(target, style_sheet_id, styles) {\n\tconst append_styles_to = get_root_for_style(target);\n\tif (!append_styles_to.getElementById(style_sheet_id)) {\n\t\tconst style = element('style');\n\t\tstyle.id = style_sheet_id;\n\t\tstyle.textContent = styles;\n\t\tappend_stylesheet(append_styles_to, style);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {ShadowRoot | Document}\n */\nexport function get_root_for_style(node) {\n\tif (!node) return document;\n\tconst root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n\tif (root && /** @type {ShadowRoot} */ (root).host) {\n\t\treturn /** @type {ShadowRoot} */ (root);\n\t}\n\treturn node.ownerDocument;\n}\n\n/**\n * @param {Node} node\n * @returns {CSSStyleSheet}\n */\nexport function append_empty_stylesheet(node) {\n\tconst style_element = element('style');\n\t// For transitions to work without 'style-src: unsafe-inline' Content Security Policy,\n\t// these empty tags need to be allowed with a hash as a workaround until we move to the Web Animations API.\n\t// Using the hash for the empty string (for an empty tag) works in all browsers except Safari.\n\t// So as a workaround for the workaround, when we append empty style tags we set their content to /* empty */.\n\t// The hash 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=' will then work even in Safari.\n\tstyle_element.textContent = '/* empty */';\n\tappend_stylesheet(get_root_for_style(node), style_element);\n\treturn style_element.sheet;\n}\n\n/**\n * @param {ShadowRoot | Document} node\n * @param {HTMLStyleElement} style\n * @returns {CSSStyleSheet}\n */\nfunction append_stylesheet(node, style) {\n\tappend(/** @type {Document} */ (node).head || node, style);\n\treturn style.sheet;\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @returns {void}\n */\nexport function append_hydration(target, node) {\n\tif (is_hydrating) {\n\t\tinit_hydrate(target);\n\t\tif (\n\t\t\ttarget.actual_end_child === undefined ||\n\t\t\t(target.actual_end_child !== null && target.actual_end_child.parentNode !== target)\n\t\t) {\n\t\t\ttarget.actual_end_child = target.firstChild;\n\t\t}\n\t\t// Skip nodes of undefined ordering\n\t\twhile (target.actual_end_child !== null && target.actual_end_child.claim_order === undefined) {\n\t\t\ttarget.actual_end_child = target.actual_end_child.nextSibling;\n\t\t}\n\t\tif (node !== target.actual_end_child) {\n\t\t\t// We only insert if the ordering of this node should be modified or the parent node is not target\n\t\t\tif (node.claim_order !== undefined || node.parentNode !== target) {\n\t\t\t\ttarget.insertBefore(node, target.actual_end_child);\n\t\t\t}\n\t\t} else {\n\t\t\ttarget.actual_end_child = node.nextSibling;\n\t\t}\n\t} else if (node.parentNode !== target || node.nextSibling !== null) {\n\t\ttarget.appendChild(node);\n\t}\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @param {Node} [anchor]\n * @returns {void}\n */\nexport function insert(target, node, anchor) {\n\ttarget.insertBefore(node, anchor || null);\n}\n\n/**\n * @param {NodeEx} target\n * @param {NodeEx} node\n * @param {NodeEx} [anchor]\n * @returns {void}\n */\nexport function insert_hydration(target, node, anchor) {\n\tif (is_hydrating && !anchor) {\n\t\tappend_hydration(target, node);\n\t} else if (node.parentNode !== target || node.nextSibling != anchor) {\n\t\ttarget.insertBefore(node, anchor || null);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {void}\n */\nexport function detach(node) {\n\tif (node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function destroy_each(iterations, detaching) {\n\tfor (let i = 0; i < iterations.length; i += 1) {\n\t\tif (iterations[i]) iterations[i].d(detaching);\n\t}\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element(name) {\n\treturn document.createElement(name);\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @param {string} is\n * @returns {HTMLElementTagNameMap[K]}\n */\nexport function element_is(name, is) {\n\treturn document.createElement(name, { is });\n}\n\n/**\n * @template T\n * @template {keyof T} K\n * @param {T} obj\n * @param {K[]} exclude\n * @returns {Pick<T, Exclude<keyof T, K>>}\n */\nexport function object_without_properties(obj, exclude) {\n\tconst target = /** @type {Pick<T, Exclude<keyof T, K>>} */ ({});\n\tfor (const k in obj) {\n\t\tif (\n\t\t\thas_prop(obj, k) &&\n\t\t\t// @ts-ignore\n\t\t\texclude.indexOf(k) === -1\n\t\t) {\n\t\t\t// @ts-ignore\n\t\t\ttarget[k] = obj[k];\n\t\t}\n\t}\n\treturn target;\n}\n\n/**\n * @template {keyof SVGElementTagNameMap} K\n * @param {K} name\n * @returns {SVGElement}\n */\nexport function svg_element(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n/**\n * @param {string} data\n * @returns {Text}\n */\nexport function text(data) {\n\treturn document.createTextNode(data);\n}\n\n/**\n * @returns {Text} */\nexport function space() {\n\treturn text(' ');\n}\n\n/**\n * @returns {Text} */\nexport function empty() {\n\treturn text('');\n}\n\n/**\n * @param {string} content\n * @returns {Comment}\n */\nexport function comment(content) {\n\treturn document.createComment(content);\n}\n\n/**\n * @param {EventTarget} node\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} handler\n * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]\n * @returns {() => void}\n */\nexport function listen(node, event, handler, options) {\n\tnode.addEventListener(event, handler, options);\n\treturn () => node.removeEventListener(event, handler, options);\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function prevent_default(fn) {\n\treturn function (event) {\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nexport function stop_immediate_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopImmediatePropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function self(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.target === this) fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nexport function trusted(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.isTrusted) fn.call(this, event);\n\t};\n}\n\n/**\n * @param {Element} node\n * @param {string} attribute\n * @param {string} [value]\n * @returns {void}\n */\nexport function attr(node, attribute, value) {\n\tif (value == null) node.removeAttribute(attribute);\n\telse if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);\n}\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_attributes(node, attributes) {\n\t// @ts-ignore\n\tconst descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n\tfor (const key in attributes) {\n\t\tif (attributes[key] == null) {\n\t\t\tnode.removeAttribute(key);\n\t\t} else if (key === 'style') {\n\t\t\tnode.style.cssText = attributes[key];\n\t\t} else if (key === '__value') {\n\t\t\t/** @type {any} */ (node).value = node[key] = attributes[key];\n\t\t} else if (\n\t\t\tdescriptors[key] &&\n\t\t\tdescriptors[key].set &&\n\t\t\talways_set_through_set_attribute.indexOf(key) === -1\n\t\t) {\n\t\t\tnode[key] = attributes[key];\n\t\t} else {\n\t\t\tattr(node, key, attributes[key]);\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {{ [x: string]: string }} attributes\n * @returns {void}\n */\nexport function set_svg_attributes(node, attributes) {\n\tfor (const key in attributes) {\n\t\tattr(node, key, attributes[key]);\n\t}\n}\n\n/**\n * @param {Record<string, unknown>} data_map\n * @returns {void}\n */\nexport function set_custom_element_data_map(node, data_map) {\n\tObject.keys(data_map).forEach((key) => {\n\t\tset_custom_element_data(node, key, data_map[key]);\n\t});\n}\n\n/**\n * @returns {void} */\nexport function set_custom_element_data(node, prop, value) {\n\tconst lower = prop.toLowerCase(); // for backwards compatibility with existing behavior we do lowercase first\n\tif (lower in node) {\n\t\tnode[lower] = typeof node[lower] === 'boolean' && value === '' ? true : value;\n\t} else if (prop in node) {\n\t\tnode[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n\t} else {\n\t\tattr(node, prop, value);\n\t}\n}\n\n/**\n * @param {string} tag\n */\nexport function set_dynamic_element_data(tag) {\n\treturn /-/.test(tag) ? set_custom_element_data_map : set_attributes;\n}\n\n/**\n * @returns {void}\n */\nexport function xlink_attr(node, attribute, value) {\n\tnode.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @returns {string}\n */\nexport function get_svelte_dataset(node) {\n\treturn node.dataset.svelteH;\n}\n\n/**\n * @returns {unknown[]} */\nexport function get_binding_group_value(group, __value, checked) {\n\tconst value = new Set();\n\tfor (let i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) value.add(group[i].__value);\n\t}\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement[]} group\n * @returns {{ p(...inputs: HTMLInputElement[]): void; r(): void; }}\n */\nexport function init_binding_group(group) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\treturn {\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\t_inputs.forEach((input) => group.push(input));\n\t\t},\n\t\t/* remove */ r() {\n\t\t\t_inputs.forEach((input) => group.splice(group.indexOf(input), 1));\n\t\t}\n\t};\n}\n\n/**\n * @param {number[]} indexes\n * @returns {{ u(new_indexes: number[]): void; p(...inputs: HTMLInputElement[]): void; r: () => void; }}\n */\nexport function init_binding_group_dynamic(group, indexes) {\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _group = get_binding_group(group);\n\n\t/**\n\t * @type {HTMLInputElement[]} */\n\tlet _inputs;\n\n\tfunction get_binding_group(group) {\n\t\tfor (let i = 0; i < indexes.length; i++) {\n\t\t\tgroup = group[indexes[i]] = group[indexes[i]] || [];\n\t\t}\n\t\treturn group;\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction push() {\n\t\t_inputs.forEach((input) => _group.push(input));\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction remove() {\n\t\t_inputs.forEach((input) => _group.splice(_group.indexOf(input), 1));\n\t}\n\treturn {\n\t\t/* update */ u(new_indexes) {\n\t\t\tindexes = new_indexes;\n\t\t\tconst new_group = get_binding_group(group);\n\t\t\tif (new_group !== _group) {\n\t\t\t\tremove();\n\t\t\t\t_group = new_group;\n\t\t\t\tpush();\n\t\t\t}\n\t\t},\n\t\t/* push */ p(...inputs) {\n\t\t\t_inputs = inputs;\n\t\t\tpush();\n\t\t},\n\t\t/* remove */ r: remove\n\t};\n}\n\n/** @returns {number} */\nexport function to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/** @returns {any[]} */\nexport function time_ranges_to_array(ranges) {\n\tconst array = [];\n\tfor (let i = 0; i < ranges.length; i += 1) {\n\t\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\n\t}\n\treturn array;\n}\n\n/**\n * @param {Element} element\n * @returns {ChildNode[]}\n */\nexport function children(element) {\n\treturn Array.from(element.childNodes);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {void}\n */\nfunction init_claim_info(nodes) {\n\tif (nodes.claim_info === undefined) {\n\t\tnodes.claim_info = { last_index: 0, total_claimed: 0 };\n\t}\n}\n\n/**\n * @template {ChildNodeEx} R\n * @param {ChildNodeArray} nodes\n * @param {(node: ChildNodeEx) => node is R} predicate\n * @param {(node: ChildNodeEx) => ChildNodeEx | undefined} process_node\n * @param {() => R} create_node\n * @param {boolean} dont_update_last_index\n * @returns {R}\n */\nfunction claim_node(nodes, predicate, process_node, create_node, dont_update_last_index = false) {\n\t// Try to find nodes in an order such that we lengthen the longest increasing subsequence\n\tinit_claim_info(nodes);\n\tconst result_node = (() => {\n\t\t// We first try to find an element after the previous one\n\t\tfor (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// Otherwise, we try to find one before\n\t\t// We iterate in reverse so that we don't go too far back\n\t\tfor (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n\t\t\tconst node = nodes[i];\n\t\t\tif (predicate(node)) {\n\t\t\t\tconst replacement = process_node(node);\n\t\t\t\tif (replacement === undefined) {\n\t\t\t\t\tnodes.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\tnodes[i] = replacement;\n\t\t\t\t}\n\t\t\t\tif (!dont_update_last_index) {\n\t\t\t\t\tnodes.claim_info.last_index = i;\n\t\t\t\t} else if (replacement === undefined) {\n\t\t\t\t\t// Since we spliced before the last_index, we decrease it\n\t\t\t\t\tnodes.claim_info.last_index--;\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\t// If we can't find any matching node, we create a new one\n\t\treturn create_node();\n\t})();\n\tresult_node.claim_order = nodes.claim_info.total_claimed;\n\tnodes.claim_info.total_claimed += 1;\n\treturn result_node;\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @param {(name: string) => Element | SVGElement} create_element\n * @returns {Element | SVGElement}\n */\nfunction claim_element_base(nodes, name, attributes, create_element) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Element | SVGElement} */\n\t\t(node) => node.nodeName === name,\n\t\t/** @param {Element} node */\n\t\t(node) => {\n\t\t\tconst remove = [];\n\t\t\tfor (let j = 0; j < node.attributes.length; j++) {\n\t\t\t\tconst attribute = node.attributes[j];\n\t\t\t\tif (!attributes[attribute.name]) {\n\t\t\t\t\tremove.push(attribute.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tremove.forEach((v) => node.removeAttribute(v));\n\t\t\treturn undefined;\n\t\t},\n\t\t() => create_element(name)\n\t);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @param {string} name\n * @param {{ [key: string]: boolean }} attributes\n * @returns {Element | SVGElement}\n */\nexport function claim_svg_element(nodes, name, attributes) {\n\treturn claim_element_base(nodes, name, attributes, svg_element);\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Text}\n */\nexport function claim_text(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Text} */\n\t\t(node) => node.nodeType === 3,\n\t\t/** @param {Text} node */\n\t\t(node) => {\n\t\t\tconst data_str = '' + data;\n\t\t\tif (node.data.startsWith(data_str)) {\n\t\t\t\tif (node.data.length !== data_str.length) {\n\t\t\t\t\treturn node.splitText(data_str.length);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.data = data_str;\n\t\t\t}\n\t\t},\n\t\t() => text(data),\n\t\ttrue // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n\t);\n}\n\n/**\n * @returns {Text} */\nexport function claim_space(nodes) {\n\treturn claim_text(nodes, ' ');\n}\n\n/**\n * @param {ChildNodeArray} nodes\n * @returns {Comment}\n */\nexport function claim_comment(nodes, data) {\n\treturn claim_node(\n\t\tnodes,\n\t\t/** @returns {node is Comment} */\n\t\t(node) => node.nodeType === 8,\n\t\t/** @param {Comment} node */\n\t\t(node) => {\n\t\t\tnode.data = '' + data;\n\t\t\treturn undefined;\n\t\t},\n\t\t() => comment(data),\n\t\ttrue\n\t);\n}\n\nfunction get_comment_idx(nodes, text, start) {\n\tfor (let i = start; i < nodes.length; i += 1) {\n\t\tconst node = nodes[i];\n\t\tif (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n * @param {boolean} is_svg\n * @returns {HtmlTagHydration}\n */\nexport function claim_html_tag(nodes, is_svg) {\n\t// find html opening tag\n\tconst start_index = get_comment_idx(nodes, 'HTML_TAG_START', 0);\n\tconst end_index = get_comment_idx(nodes, 'HTML_TAG_END', start_index + 1);\n\tif (start_index === -1 || end_index === -1) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\n\tinit_claim_info(nodes);\n\tconst html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n\tdetach(html_tag_nodes[0]);\n\tdetach(html_tag_nodes[html_tag_nodes.length - 1]);\n\tconst claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n\tif (claimed_nodes.length === 0) {\n\t\treturn new HtmlTagHydration(is_svg);\n\t}\n\tfor (const n of claimed_nodes) {\n\t\tn.claim_order = nodes.claim_info.total_claimed;\n\t\tnodes.claim_info.total_claimed += 1;\n\t}\n\treturn new HtmlTagHydration(is_svg, claimed_nodes);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data(text, data) {\n\tdata = '' + data;\n\tif (text.data === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nexport function set_data_contenteditable(text, data) {\n\tdata = '' + data;\n\tif (text.wholeText === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @param {string} attr_value\n * @returns {void}\n */\nexport function set_data_maybe_contenteditable(text, data, attr_value) {\n\tif (~contenteditable_truthy_values.indexOf(attr_value)) {\n\t\tset_data_contenteditable(text, data);\n\t} else {\n\t\tset_data(text, data);\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_input_value(input, value) {\n\tinput.value = value == null ? '' : value;\n}\n\n/**\n * @returns {void} */\nexport function set_input_type(input, type) {\n\ttry {\n\t\tinput.type = type;\n\t} catch (e) {\n\t\t// do nothing\n\t}\n}\n\n/**\n * @returns {void} */\nexport function set_style(node, key, value, important) {\n\tif (value == null) {\n\t\tnode.style.removeProperty(key);\n\t} else {\n\t\tnode.style.setProperty(key, value, important ? 'important' : '');\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_option(select, value, mounting) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\tif (option.__value === value) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * @returns {void} */\nexport function select_options(select, value) {\n\tfor (let i = 0; i < select.options.length; i += 1) {\n\t\tconst option = select.options[i];\n\t\toption.selected = ~value.indexOf(option.__value);\n\t}\n}\n\nexport function select_value(select) {\n\tconst selected_option = select.querySelector(':checked');\n\treturn selected_option && selected_option.__value;\n}\n\nexport function select_multiple_value(select) {\n\treturn [].map.call(select.querySelectorAll(':checked'), (option) => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\n\n/**\n * @type {boolean} */\nlet crossorigin;\n\n/**\n * @returns {boolean} */\nexport function is_crossorigin() {\n\tif (crossorigin === undefined) {\n\t\tcrossorigin = false;\n\t\ttry {\n\t\t\tif (typeof window !== 'undefined' && window.parent) {\n\t\t\t\tvoid window.parent.document;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tcrossorigin = true;\n\t\t}\n\t}\n\treturn crossorigin;\n}\n\n/**\n * @param {HTMLElement} node\n * @param {() => void} fn\n * @returns {() => void}\n */\nexport function add_iframe_resize_listener(node, fn) {\n\tconst computed_style = getComputedStyle(node);\n\tif (computed_style.position === 'static') {\n\t\tnode.style.position = 'relative';\n\t}\n\tconst iframe = element('iframe');\n\tiframe.setAttribute(\n\t\t'style',\n\t\t'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n\t\t\t'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;'\n\t);\n\tiframe.setAttribute('aria-hidden', 'true');\n\tiframe.tabIndex = -1;\n\tconst crossorigin = is_crossorigin();\n\n\t/**\n\t * @type {() => void}\n\t */\n\tlet unsubscribe;\n\tif (crossorigin) {\n\t\tiframe.src = \"data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>\";\n\t\tunsubscribe = listen(\n\t\t\twindow,\n\t\t\t'message',\n\t\t\t/** @param {MessageEvent} event */ (event) => {\n\t\t\t\tif (event.source === iframe.contentWindow) fn();\n\t\t\t}\n\t\t);\n\t} else {\n\t\tiframe.src = 'about:blank';\n\t\tiframe.onload = () => {\n\t\t\tunsubscribe = listen(iframe.contentWindow, 'resize', fn);\n\t\t\t// make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n\t\t\t// see https://github.com/sveltejs/svelte/issues/4233\n\t\t\tfn();\n\t\t};\n\t}\n\tappend(node, iframe);\n\treturn () => {\n\t\tif (crossorigin) {\n\t\t\tunsubscribe();\n\t\t} else if (unsubscribe && iframe.contentWindow) {\n\t\t\tunsubscribe();\n\t\t}\n\t\tdetach(iframe);\n\t};\n}\nexport const resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'content-box'\n});\nexport const resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'border-box'\n});\nexport const resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton(\n\t{ box: 'device-pixel-content-box' }\n);\nexport { ResizeObserverSingleton };\n\n/**\n * @returns {void} */\nexport function toggle_class(element, name, toggle) {\n\t// The `!!` is required because an `undefined` flag means flipping the current state.\n\telement.classList.toggle(name, !!toggle);\n}\n\n/**\n * @template T\n * @param {string} type\n * @param {T} [detail]\n * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]\n * @returns {CustomEvent<T>}\n */\nexport function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * @param {string} selector\n * @param {HTMLElement} parent\n * @returns {ChildNodeArray}\n */\nexport function query_selector_all(selector, parent = document.body) {\n\treturn Array.from(parent.querySelectorAll(selector));\n}\n\n/**\n * @param {string} nodeId\n * @param {HTMLElement} head\n * @returns {any[]}\n */\nexport function head_selector(nodeId, head) {\n\tconst result = [];\n\tlet started = 0;\n\tfor (const node of head.childNodes) {\n\t\tif (node.nodeType === 8 /* comment node */) {\n\t\t\tconst comment = node.textContent.trim();\n\t\t\tif (comment === `HEAD_${nodeId}_END`) {\n\t\t\t\tstarted -= 1;\n\t\t\t\tresult.push(node);\n\t\t\t} else if (comment === `HEAD_${nodeId}_START`) {\n\t\t\t\tstarted += 1;\n\t\t\t\tresult.push(node);\n\t\t\t}\n\t\t} else if (started > 0) {\n\t\t\tresult.push(node);\n\t\t}\n\t}\n\treturn result;\n}\n/** */\nexport class HtmlTag {\n\t/**\n\t * @private\n\t * @default false\n\t */\n\tis_svg = false;\n\t/** parent for creating node */\n\te = undefined;\n\t/** html tag nodes */\n\tn = undefined;\n\t/** target */\n\tt = undefined;\n\t/** anchor */\n\ta = undefined;\n\tconstructor(is_svg = false) {\n\t\tthis.is_svg = is_svg;\n\t\tthis.e = this.n = null;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tthis.h(html);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @param {HTMLElement | SVGElement} target\n\t * @param {HTMLElement | SVGElement} anchor\n\t * @returns {void}\n\t */\n\tm(html, target, anchor = null) {\n\t\tif (!this.e) {\n\t\t\tif (this.is_svg)\n\t\t\t\tthis.e = svg_element(/** @type {keyof SVGElementTagNameMap} */ (target.nodeName));\n\t\t\t/** #7364 target for <template> may be provided as #document-fragment(11) */ else\n\t\t\t\tthis.e = element(\n\t\t\t\t\t/** @type {keyof HTMLElementTagNameMap} */ (\n\t\t\t\t\t\ttarget.nodeType === 11 ? 'TEMPLATE' : target.nodeName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\tthis.t =\n\t\t\t\ttarget.tagName !== 'TEMPLATE'\n\t\t\t\t\t? target\n\t\t\t\t\t: /** @type {HTMLTemplateElement} */ (target).content;\n\t\t\tthis.c(html);\n\t\t}\n\t\tthis.i(anchor);\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\th(html) {\n\t\tthis.e.innerHTML = html;\n\t\tthis.n = Array.from(\n\t\t\tthis.e.nodeName === 'TEMPLATE' ? this.e.content.childNodes : this.e.childNodes\n\t\t);\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert(this.t, this.n[i], anchor);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tp(html) {\n\t\tthis.d();\n\t\tthis.h(html);\n\t\tthis.i(this.a);\n\t}\n\n\t/**\n\t * @returns {void} */\n\td() {\n\t\tthis.n.forEach(detach);\n\t}\n}\n\nexport class HtmlTagHydration extends HtmlTag {\n\t/** @type {Element[]} hydration claimed nodes */\n\tl = undefined;\n\n\tconstructor(is_svg = false, claimed_nodes) {\n\t\tsuper(is_svg);\n\t\tthis.e = this.n = null;\n\t\tthis.l = claimed_nodes;\n\t}\n\n\t/**\n\t * @param {string} html\n\t * @returns {void}\n\t */\n\tc(html) {\n\t\tif (this.l) {\n\t\t\tthis.n = this.l;\n\t\t} else {\n\t\t\tsuper.c(html);\n\t\t}\n\t}\n\n\t/**\n\t * @returns {void} */\n\ti(anchor) {\n\t\tfor (let i = 0; i < this.n.length; i += 1) {\n\t\t\tinsert_hydration(this.t, this.n[i], anchor);\n\t\t}\n\t}\n}\n\n/**\n * @param {NamedNodeMap} attributes\n * @returns {{}}\n */\nexport function attribute_to_object(attributes) {\n\tconst result = {};\n\tfor (const attribute of attributes) {\n\t\tresult[attribute.name] = attribute.value;\n\t}\n\treturn result;\n}\n\nconst escaped = {\n\t'\"': '&quot;',\n\t'&': '&amp;',\n\t'<': '&lt;'\n};\n\nconst regex_attribute_characters_to_escape = /[\"&<]/g;\n\n/**\n * Note that the attribute itself should be surrounded in double quotes\n * @param {any} attribute\n */\nfunction escape_attribute(attribute) {\n\treturn String(attribute).replace(regex_attribute_characters_to_escape, (match) => escaped[match]);\n}\n\n/**\n * @param {Record<string, string>} attributes\n */\nexport function stringify_spread(attributes) {\n\tlet str = ' ';\n\tfor (const key in attributes) {\n\t\tif (attributes[key] != null) {\n\t\t\tstr += `${key}=\"${escape_attribute(attributes[key])}\" `;\n\t\t}\n\t}\n\n\treturn str;\n}\n\n/**\n * @param {HTMLElement} element\n * @returns {{}}\n */\nexport function get_custom_elements_slots(element) {\n\tconst result = {};\n\telement.childNodes.forEach(\n\t\t/** @param {Element} node */ (node) => {\n\t\t\tresult[node.slot || 'default'] = true;\n\t\t}\n\t);\n\treturn result;\n}\n\nexport function construct_svelte_component(component, props) {\n\treturn new component(props);\n}\n\n/**\n * @typedef {Node & {\n * \tclaim_order?: number;\n * \thydrate_init?: true;\n * \tactual_end_child?: NodeEx;\n * \tchildNodes: NodeListOf<NodeEx>;\n * }} NodeEx\n */\n\n/** @typedef {ChildNode & NodeEx} ChildNodeEx */\n\n/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */\n\n/**\n * @typedef {ChildNodeEx[] & {\n * \tclaim_info?: {\n * \t\tlast_index: number;\n * \t\ttotal_claimed: number;\n * \t};\n * }} ChildNodeArray\n */\n","import { custom_event } from './dom.js';\n\nexport let current_component;\n\n/** @returns {void} */\nexport function set_current_component(component) {\n\tcurrent_component = component;\n}\n\nexport function get_current_component() {\n\tif (!current_component) throw new Error('Function called outside component initialization');\n\treturn current_component;\n}\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#beforeupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tget_current_component().$$.before_update.push(fn);\n}\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs/svelte#onmount\n * @template T\n * @param {() => import('./private.js').NotFunction<T> | Promise<import('./private.js').NotFunction<T>> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tget_current_component().$$.on_mount.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n *\n * https://svelte.dev/docs/svelte#afterupdate\n * @param {() => any} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tget_current_component().$$.after_update.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs/svelte#ondestroy\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tget_current_component().$$.on_destroy.push(fn);\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: never; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * https://svelte.dev/docs/svelte#createeventdispatcher\n * @template {Record<string, any>} [EventMap=any]\n * @returns {import('./public.js').EventDispatcher<EventMap>}\n */\nexport function createEventDispatcher() {\n\tconst component = get_current_component();\n\treturn (type, detail, { cancelable = false } = {}) => {\n\t\tconst callbacks = component.$$.callbacks[type];\n\t\tif (callbacks) {\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = custom_event(/** @type {string} */ (type), detail, { cancelable });\n\t\t\tcallbacks.slice().forEach((fn) => {\n\t\t\t\tfn.call(component, event);\n\t\t\t});\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#setcontext\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tget_current_component().$$.context.set(key, context);\n\treturn context;\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#getcontext\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\treturn get_current_component().$$.context.get(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs/svelte#getallcontexts\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\treturn get_current_component().$$.context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#hascontext\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\treturn get_current_component().$$.context.has(key);\n}\n\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\n/**\n * @param component\n * @param event\n * @returns {void}\n */\nexport function bubble(component, event) {\n\tconst callbacks = component.$$.callbacks[event.type];\n\tif (callbacks) {\n\t\t// @ts-ignore\n\t\tcallbacks.slice().forEach((fn) => fn.call(this, event));\n\t}\n}\n","import { run_all } from './utils.js';\nimport { current_component, set_current_component } from './lifecycle.js';\n\nexport const dirty_components = [];\nexport const intros = { enabled: false };\nexport const binding_callbacks = [];\n\nlet render_callbacks = [];\n\nconst flush_callbacks = [];\n\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\n\nlet update_scheduled = false;\n\n/** @returns {void} */\nexport function schedule_update() {\n\tif (!update_scheduled) {\n\t\tupdate_scheduled = true;\n\t\tresolved_promise.then(flush);\n\t}\n}\n\n/** @returns {Promise<void>} */\nexport function tick() {\n\tschedule_update();\n\treturn resolved_promise;\n}\n\n/** @returns {void} */\nexport function add_render_callback(fn) {\n\trender_callbacks.push(fn);\n}\n\n/** @returns {void} */\nexport function add_flush_callback(fn) {\n\tflush_callbacks.push(fn);\n}\n\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\n\nlet flushidx = 0; // Do *not* move this inside the flush() function\n\n/** @returns {void} */\nexport function flush() {\n\t// Do not reenter flush while dirty components are updated, as this can\n\t// result in an infinite loop. Instead, let the inner flush handle it.\n\t// Reentrancy is ok afterwards for bindings etc.\n\tif (flushidx !== 0) {\n\t\treturn;\n\t}\n\tconst saved_component = current_component;\n\tdo {\n\t\t// first, call beforeUpdate functions\n\t\t// and update components\n\t\ttry {\n\t\t\twhile (flushidx < dirty_components.length) {\n\t\t\t\tconst component = dirty_components[flushidx];\n\t\t\t\tflushidx++;\n\t\t\t\tset_current_component(component);\n\t\t\t\tupdate(component.$$);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// reset dirty state to not end up in a deadlocked state and then rethrow\n\t\t\tdirty_components.length = 0;\n\t\t\tflushidx = 0;\n\t\t\tthrow e;\n\t\t}\n\t\tset_current_component(null);\n\t\tdirty_components.length = 0;\n\t\tflushidx = 0;\n\t\twhile (binding_callbacks.length) binding_callbacks.pop()();\n\t\t// then, once components are updated, call\n\t\t// afterUpdate functions. This may cause\n\t\t// subsequent updates...\n\t\tfor (let i = 0; i < render_callbacks.length; i += 1) {\n\t\t\tconst callback = render_callbacks[i];\n\t\t\tif (!seen_callbacks.has(callback)) {\n\t\t\t\t// ...so guard against infinite loops\n\t\t\t\tseen_callbacks.add(callback);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\trender_callbacks.length = 0;\n\t} while (dirty_components.length);\n\twhile (flush_callbacks.length) {\n\t\tflush_callbacks.pop()();\n\t}\n\tupdate_scheduled = false;\n\tseen_callbacks.clear();\n\tset_current_component(saved_component);\n}\n\n/** @returns {void} */\nfunction update($$) {\n\tif ($$.fragment !== null) {\n\t\t$$.update();\n\t\trun_all($$.before_update);\n\t\tconst dirty = $$.dirty;\n\t\t$$.dirty = [-1];\n\t\t$$.fragment && $$.fragment.p($$.ctx, dirty);\n\t\t$$.after_update.forEach(add_render_callback);\n\t}\n}\n\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n * @param {Function[]} fns\n * @returns {void}\n */\nexport function flush_render_callbacks(fns) {\n\tconst filtered = [];\n\tconst targets = [];\n\trender_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));\n\ttargets.forEach((c) => c());\n\trender_callbacks = filtered;\n}\n","import { identity as linear, is_function, noop, run_all } from './utils.js';\nimport { now } from './environment.js';\nimport { loop } from './loop.js';\nimport { create_rule, delete_rule } from './style_manager.js';\nimport { custom_event } from './dom.js';\nimport { add_render_callback } from './scheduler.js';\n\n/**\n * @type {Promise<void> | null}\n */\nlet promise;\n\n/**\n * @returns {Promise<void>}\n */\nfunction wait() {\n\tif (!promise) {\n\t\tpromise = Promise.resolve();\n\t\tpromise.then(() => {\n\t\t\tpromise = null;\n\t\t});\n\t}\n\treturn promise;\n}\n\n/**\n * @param {Element} node\n * @param {INTRO | OUTRO | boolean} direction\n * @param {'start' | 'end'} kind\n * @returns {void}\n */\nfunction dispatch(node, direction, kind) {\n\tnode.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\n\nconst outroing = new Set();\n\n/**\n * @type {Outro}\n */\nlet outros;\n\n/**\n * @returns {void} */\nexport function group_outros() {\n\toutros = {\n\t\tr: 0,\n\t\tc: [],\n\t\tp: outros // parent group\n\t};\n}\n\n/**\n * @returns {void} */\nexport function check_outros() {\n\tif (!outros.r) {\n\t\trun_all(outros.c);\n\t}\n\toutros = outros.p;\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} [local]\n * @returns {void}\n */\nexport function transition_in(block, local) {\n\tif (block && block.i) {\n\t\toutroing.delete(block);\n\t\tblock.i(local);\n\t}\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} local\n * @param {0 | 1} [detach]\n * @param {() => void} [callback]\n * @returns {void}\n */\nexport function transition_out(block, local, detach, callback) {\n\tif (block && block.o) {\n\t\tif (outroing.has(block)) return;\n\t\toutroing.add(block);\n\t\toutros.c.push(() => {\n\t\t\toutroing.delete(block);\n\t\t\tif (callback) {\n\t\t\t\tif (detach) block.d(1);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t});\n\t\tblock.o(local);\n\t} else if (callback) {\n\t\tcallback();\n\t}\n}\n\n/**\n * @type {import('../transition/public.js').TransitionConfig}\n */\nconst null_transition = { duration: 0 };\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ start(): void; invalidate(): void; end(): void; }}\n */\nexport function create_in_transition(node, fn, params) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'in' };\n\tlet config = fn(node, params, options);\n\tlet running = false;\n\tlet animation_name;\n\tlet task;\n\tlet uid = 0;\n\n\t/**\n\t * @returns {void} */\n\tfunction cleanup() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\t\tif (css) animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n\t\ttick(0, 1);\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tif (task) task.abort();\n\t\trunning = true;\n\t\tadd_render_callback(() => dispatch(node, true, 'start'));\n\t\ttask = loop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(1, 0);\n\t\t\t\t\tdispatch(node, true, 'end');\n\t\t\t\t\tcleanup();\n\t\t\t\t\treturn (running = false);\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\tlet started = false;\n\treturn {\n\t\tstart() {\n\t\t\tif (started) return;\n\t\t\tstarted = true;\n\t\t\tdelete_rule(node);\n\t\t\tif (is_function(config)) {\n\t\t\t\tconfig = config(options);\n\t\t\t\twait().then(go);\n\t\t\t} else {\n\t\t\t\tgo();\n\t\t\t}\n\t\t},\n\t\tinvalidate() {\n\t\t\tstarted = false;\n\t\t},\n\t\tend() {\n\t\t\tif (running) {\n\t\t\t\tcleanup();\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ end(reset: any): void; }}\n */\nexport function create_out_transition(node, fn, params) {\n\t/** @type {TransitionOptions} */\n\tconst options = { direction: 'out' };\n\tlet config = fn(node, params, options);\n\tlet running = true;\n\tlet animation_name;\n\tconst group = outros;\n\tgroup.r += 1;\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\tif (css) animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tadd_render_callback(() => dispatch(node, false, 'start'));\n\n\t\tif ('inert' in node) {\n\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\tnode.inert = true;\n\t\t}\n\n\t\tloop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(0, 1);\n\t\t\t\t\tdispatch(node, false, 'end');\n\t\t\t\t\tif (!--group.r) {\n\t\t\t\t\t\t// this will result in `end()` being called,\n\t\t\t\t\t\t// so we don't need to clean up here\n\t\t\t\t\t\trun_all(group.c);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(1 - t, t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\n\tif (is_function(config)) {\n\t\twait().then(() => {\n\t\t\t// @ts-ignore\n\t\t\tconfig = config(options);\n\t\t\tgo();\n\t\t});\n\t} else {\n\t\tgo();\n\t}\n\n\treturn {\n\t\tend(reset) {\n\t\t\tif (reset && 'inert' in node) {\n\t\t\t\tnode.inert = original_inert_value;\n\t\t\t}\n\t\t\tif (reset && config.tick) {\n\t\t\t\tconfig.tick(1, 0);\n\t\t\t}\n\t\t\tif (running) {\n\t\t\t\tif (animation_name) delete_rule(node, animation_name);\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @param {boolean} intro\n * @returns {{ run(b: 0 | 1): void; end(): void; }}\n */\nexport function create_bidirectional_transition(node, fn, params, intro) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'both' };\n\tlet config = fn(node, params, options);\n\tlet t = intro ? 0 : 1;\n\n\t/**\n\t * @type {Program | null} */\n\tlet running_program = null;\n\n\t/**\n\t * @type {PendingProgram | null} */\n\tlet pending_program = null;\n\tlet animation_name = null;\n\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction clear_animation() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @param {PendingProgram} program\n\t * @param {number} duration\n\t * @returns {Program}\n\t */\n\tfunction init(program, duration) {\n\t\tconst d = /** @type {Program['d']} */ (program.b - t);\n\t\tduration *= Math.abs(d);\n\t\treturn {\n\t\t\ta: t,\n\t\t\tb: program.b,\n\t\t\td,\n\t\t\tduration,\n\t\t\tstart: program.start,\n\t\t\tend: program.start + duration,\n\t\t\tgroup: program.group\n\t\t};\n\t}\n\n\t/**\n\t * @param {INTRO | OUTRO} b\n\t * @returns {void}\n\t */\n\tfunction go(b) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = linear,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\t/**\n\t\t * @type {PendingProgram} */\n\t\tconst program = {\n\t\t\tstart: now() + delay,\n\t\t\tb\n\t\t};\n\n\t\tif (!b) {\n\t\t\t// @ts-ignore todo: improve typings\n\t\t\tprogram.group = outros;\n\t\t\toutros.r += 1;\n\t\t}\n\n\t\tif ('inert' in node) {\n\t\t\tif (b) {\n\t\t\t\tif (original_inert_value !== undefined) {\n\t\t\t\t\t// aborted/reversed outro — restore previous inert value\n\t\t\t\t\tnode.inert = original_inert_value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\t\tnode.inert = true;\n\t\t\t}\n\t\t}\n\n\t\tif (running_program || pending_program) {\n\t\t\tpending_program = program;\n\t\t} else {\n\t\t\t// if this is an intro, and there's a delay, we need to do\n\t\t\t// an initial tick and/or apply CSS animation immediately\n\t\t\tif (css) {\n\t\t\t\tclear_animation();\n\t\t\t\tanimation_name = create_rule(node, t, b, duration, delay, easing, css);\n\t\t\t}\n\t\t\tif (b) tick(0, 1);\n\t\t\trunning_program = init(program, duration);\n\t\t\tadd_render_callback(() => dispatch(node, b, 'start'));\n\t\t\tloop((now) => {\n\t\t\t\tif (pending_program && now > pending_program.start) {\n\t\t\t\t\trunning_program = init(pending_program, duration);\n\t\t\t\t\tpending_program = null;\n\t\t\t\t\tdispatch(node, running_program.b, 'start');\n\t\t\t\t\tif (css) {\n\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\tanimation_name = create_rule(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\trunning_program.b,\n\t\t\t\t\t\t\trunning_program.duration,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\teasing,\n\t\t\t\t\t\t\tconfig.css\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (running_program) {\n\t\t\t\t\tif (now >= running_program.end) {\n\t\t\t\t\t\ttick((t = running_program.b), 1 - t);\n\t\t\t\t\t\tdispatch(node, running_program.b, 'end');\n\t\t\t\t\t\tif (!pending_program) {\n\t\t\t\t\t\t\t// we're done\n\t\t\t\t\t\t\tif (running_program.b) {\n\t\t\t\t\t\t\t\t// intro — we can tidy up immediately\n\t\t\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// outro — needs to be coordinated\n\t\t\t\t\t\t\t\tif (!--running_program.group.r) run_all(running_program.group.c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trunning_program = null;\n\t\t\t\t\t} else if (now >= running_program.start) {\n\t\t\t\t\t\tconst p = now - running_program.start;\n\t\t\t\t\t\tt = running_program.a + running_program.d * easing(p / running_program.duration);\n\t\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!(running_program || pending_program);\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trun(b) {\n\t\t\tif (is_function(config)) {\n\t\t\t\twait().then(() => {\n\t\t\t\t\tconst opts = { direction: b ? 'in' : 'out' };\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconfig = config(opts);\n\t\t\t\t\tgo(b);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tgo(b);\n\t\t\t}\n\t\t},\n\t\tend() {\n\t\t\tclear_animation();\n\t\t\trunning_program = pending_program = null;\n\t\t}\n\t};\n}\n\n/** @typedef {1} INTRO */\n/** @typedef {0} OUTRO */\n/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */\n/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */\n\n/**\n * @typedef {Object} Outro\n * @property {number} r\n * @property {Function[]} c\n * @property {Object} p\n */\n\n/**\n * @typedef {Object} PendingProgram\n * @property {number} start\n * @property {INTRO|OUTRO} b\n * @property {Outro} [group]\n */\n\n/**\n * @typedef {Object} Program\n * @property {number} a\n * @property {INTRO|OUTRO} b\n * @property {1|-1} d\n * @property {number} duration\n * @property {number} start\n * @property {number} end\n * @property {Outro} [group]\n */\n","import {\n\tadd_render_callback,\n\tflush,\n\tflush_render_callbacks,\n\tschedule_update,\n\tdirty_components\n} from './scheduler.js';\nimport { current_component, set_current_component } from './lifecycle.js';\nimport { blank_object, is_empty, is_function, run, run_all, noop } from './utils.js';\nimport {\n\tchildren,\n\tdetach,\n\tstart_hydrating,\n\tend_hydrating,\n\tget_custom_elements_slots,\n\tinsert,\n\telement,\n\tattr\n} from './dom.js';\nimport { transition_in } from './transitions.js';\n\n/** @returns {void} */\nexport function bind(component, name, callback) {\n\tconst index = component.$$.props[name];\n\tif (index !== undefined) {\n\t\tcomponent.$$.bound[index] = callback;\n\t\tcallback(component.$$.ctx[index]);\n\t}\n}\n\n/** @returns {void} */\nexport function create_component(block) {\n\tblock && block.c();\n}\n\n/** @returns {void} */\nexport function claim_component(block, parent_nodes) {\n\tblock && block.l(parent_nodes);\n}\n\n/** @returns {void} */\nexport function mount_component(component, target, anchor) {\n\tconst { fragment, after_update } = component.$$;\n\tfragment && fragment.m(target, anchor);\n\t// onMount happens before the initial afterUpdate\n\tadd_render_callback(() => {\n\t\tconst new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n\t\t// if the component was destroyed immediately\n\t\t// it will update the `$$.on_destroy` reference to `null`.\n\t\t// the destructured on_destroy may still reference to the old array\n\t\tif (component.$$.on_destroy) {\n\t\t\tcomponent.$$.on_destroy.push(...new_on_destroy);\n\t\t} else {\n\t\t\t// Edge case - component was destroyed immediately,\n\t\t\t// most likely as a result of a binding initialising\n\t\t\trun_all(new_on_destroy);\n\t\t}\n\t\tcomponent.$$.on_mount = [];\n\t});\n\tafter_update.forEach(add_render_callback);\n}\n\n/** @returns {void} */\nexport function destroy_component(component, detaching) {\n\tconst $$ = component.$$;\n\tif ($$.fragment !== null) {\n\t\tflush_render_callbacks($$.after_update);\n\t\trun_all($$.on_destroy);\n\t\t$$.fragment && $$.fragment.d(detaching);\n\t\t// TODO null out other refs, including component.$$ (but need to\n\t\t// preserve final state?)\n\t\t$$.on_destroy = $$.fragment = null;\n\t\t$$.ctx = [];\n\t}\n}\n\n/** @returns {void} */\nfunction make_dirty(component, i) {\n\tif (component.$$.dirty[0] === -1) {\n\t\tdirty_components.push(component);\n\t\tschedule_update();\n\t\tcomponent.$$.dirty.fill(0);\n\t}\n\tcomponent.$$.dirty[(i / 31) | 0] |= 1 << i % 31;\n}\n\n// TODO: Document the other params\n/**\n * @param {SvelteComponent} component\n * @param {import('./public.js').ComponentConstructorOptions} options\n *\n * @param {import('./utils.js')['not_equal']} not_equal Used to compare props and state values.\n * @param {(target: Element | ShadowRoot) => void} [append_styles] Function that appends styles to the DOM when the component is first initialised.\n * This will be the `add_css` function from the compiled component.\n *\n * @returns {void}\n */\nexport function init(\n\tcomponent,\n\toptions,\n\tinstance,\n\tcreate_fragment,\n\tnot_equal,\n\tprops,\n\tappend_styles = null,\n\tdirty = [-1]\n) {\n\tconst parent_component = current_component;\n\tset_current_component(component);\n\t/** @type {import('./private.js').T$$} */\n\tconst $$ = (component.$$ = {\n\t\tfragment: null,\n\t\tctx: [],\n\t\t// state\n\t\tprops,\n\t\tupdate: noop,\n\t\tnot_equal,\n\t\tbound: blank_object(),\n\t\t// lifecycle\n\t\ton_mount: [],\n\t\ton_destroy: [],\n\t\ton_disconnect: [],\n\t\tbefore_update: [],\n\t\tafter_update: [],\n\t\tcontext: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n\t\t// everything else\n\t\tcallbacks: blank_object(),\n\t\tdirty,\n\t\tskip_bound: false,\n\t\troot: options.target || parent_component.$$.root\n\t});\n\tappend_styles && append_styles($$.root);\n\tlet ready = false;\n\t$$.ctx = instance\n\t\t? instance(component, options.props || {}, (i, ret, ...rest) => {\n\t\t\t\tconst value = rest.length ? rest[0] : ret;\n\t\t\t\tif ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {\n\t\t\t\t\tif (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);\n\t\t\t\t\tif (ready) make_dirty(component, i);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t })\n\t\t: [];\n\t$$.update();\n\tready = true;\n\trun_all($$.before_update);\n\t// `false` as a special case of no DOM component\n\t$$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n\tif (options.target) {\n\t\tif (options.hydrate) {\n\t\t\tstart_hydrating();\n\t\t\t// TODO: what is the correct type here?\n\t\t\t// @ts-expect-error\n\t\t\tconst nodes = children(options.target);\n\t\t\t$$.fragment && $$.fragment.l(nodes);\n\t\t\tnodes.forEach(detach);\n\t\t} else {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t$$.fragment && $$.fragment.c();\n\t\t}\n\t\tif (options.intro) transition_in(component.$$.fragment);\n\t\tmount_component(component, options.target, options.anchor);\n\t\tend_hydrating();\n\t\tflush();\n\t}\n\tset_current_component(parent_component);\n}\n\nexport let SvelteElement;\n\nif (typeof HTMLElement === 'function') {\n\tSvelteElement = class extends HTMLElement {\n\t\t/** The Svelte component constructor */\n\t\t$$ctor;\n\t\t/** Slots */\n\t\t$$s;\n\t\t/** The Svelte component instance */\n\t\t$$c;\n\t\t/** Whether or not the custom element is connected */\n\t\t$$cn = false;\n\t\t/** Component props data */\n\t\t$$d = {};\n\t\t/** `true` if currently in the process of reflecting component props back to attributes */\n\t\t$$r = false;\n\t\t/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */\n\t\t$$p_d = {};\n\t\t/** @type {Record<string, Function[]>} Event listeners */\n\t\t$$l = {};\n\t\t/** @type {Map<Function, Function>} Event listener unsubscribe functions */\n\t\t$$l_u = new Map();\n\n\t\tconstructor($$componentCtor, $$slots, use_shadow_dom) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\t\t\tif (use_shadow_dom) {\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t}\n\t\t}\n\n\t\taddEventListener(type, listener, options) {\n\t\t\t// We can't determine upfront if the event is a custom event or not, so we have to\n\t\t\t// listen to both. If someone uses a custom event with the same name as a regular\n\t\t\t// browser event, this fires twice - we can't avoid that.\n\t\t\tthis.$$l[type] = this.$$l[type] || [];\n\t\t\tthis.$$l[type].push(listener);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t}\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t}\n\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$l_u.get(listener);\n\t\t\t\tif (unsub) {\n\t\t\t\t\tunsub();\n\t\t\t\t\tthis.$$l_u.delete(listener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tthis.$$cn = true;\n\t\t\tif (!this.$$c) {\n\t\t\t\t// We wait one tick to let possible child slot elements be created/mounted\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (!this.$$cn || this.$$c) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfunction create_slot(name) {\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tlet node;\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\tc: function create() {\n\t\t\t\t\t\t\t\tnode = element('slot');\n\t\t\t\t\t\t\t\tif (name !== 'default') {\n\t\t\t\t\t\t\t\t\tattr(node, 'name', name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @param {HTMLElement} target\n\t\t\t\t\t\t\t * @param {HTMLElement} [anchor]\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tm: function mount(target, anchor) {\n\t\t\t\t\t\t\t\tinsert(target, node, anchor);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\td: function destroy(detaching) {\n\t\t\t\t\t\t\t\tif (detaching) {\n\t\t\t\t\t\t\t\t\tdetach(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst $$slots = {};\n\t\t\t\tconst existing_slots = get_custom_elements_slots(this);\n\t\t\t\tfor (const name of this.$$s) {\n\t\t\t\t\tif (name in existing_slots) {\n\t\t\t\t\t\t$$slots[name] = [create_slot(name)];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const attribute of this.attributes) {\n\t\t\t\t\t// this.$$data takes precedence over this.attributes\n\t\t\t\t\tconst name = this.$$g_p(attribute.name);\n\t\t\t\t\tif (!(name in this.$$d)) {\n\t\t\t\t\t\tthis.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Port over props that were set programmatically before ce was initialized\n\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\tif (!(key in this.$$d) && this[key] !== undefined) {\n\t\t\t\t\t\tthis.$$d[key] = this[key]; // don't transform, these were set through JavaScript\n\t\t\t\t\t\tdelete this[key]; // remove the property that shadows the getter/setter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$c = new this.$$ctor({\n\t\t\t\t\ttarget: this.shadowRoot || this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...this.$$d,\n\t\t\t\t\t\t$$slots,\n\t\t\t\t\t\t$$scope: {\n\t\t\t\t\t\t\tctx: []\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Reflect component props as attributes\n\t\t\t\tconst reflect_attributes = () => {\n\t\t\t\t\tthis.$$r = true;\n\t\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\t\tthis.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];\n\t\t\t\t\t\tif (this.$$p_d[key].reflect) {\n\t\t\t\t\t\t\tconst attribute_value = get_custom_element_value(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tthis.$$d[key],\n\t\t\t\t\t\t\t\tthis.$$p_d,\n\t\t\t\t\t\t\t\t'toAttribute'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (attribute_value == null) {\n\t\t\t\t\t\t\t\tthis.removeAttribute(this.$$p_d[key].attribute || key);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setAttribute(this.$$p_d[key].attribute || key, attribute_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.$$r = false;\n\t\t\t\t};\n\t\t\t\tthis.$$c.$$.after_update.push(reflect_attributes);\n\t\t\t\treflect_attributes(); // once initially because after_update is added too late for first render\n\n\t\t\t\tfor (const type in this.$$l) {\n\t\t\t\t\tfor (const listener of this.$$l[type]) {\n\t\t\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$l = {};\n\t\t\t}\n\t\t}\n\n\t\t// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte\n\t\t// and setting attributes through setAttribute etc, this is helpful\n\t\tattributeChangedCallback(attr, _oldValue, newValue) {\n\t\t\tif (this.$$r) return;\n\t\t\tattr = this.$$g_p(attr);\n\t\t\tthis.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');\n\t\t\tthis.$$c?.$set({ [attr]: this.$$d[attr] });\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.$$cn = false;\n\t\t\t// In a microtask, because this could be a move within the DOM\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tif (!this.$$cn && this.$$c) {\n\t\t\t\t\tthis.$$c.$destroy();\n\t\t\t\t\tthis.$$c = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t$$g_p(attribute_name) {\n\t\t\treturn (\n\t\t\t\tObject.keys(this.$$p_d).find(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tthis.$$p_d[key].attribute === attribute_name ||\n\t\t\t\t\t\t(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)\n\t\t\t\t) || attribute_name\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * @param {string} prop\n * @param {any} value\n * @param {Record<string, CustomElementPropDefinition>} props_definition\n * @param {'toAttribute' | 'toProp'} [transform]\n */\nfunction get_custom_element_value(prop, value, props_definition, transform) {\n\tconst type = props_definition[prop]?.type;\n\tvalue = type === 'Boolean' && typeof value !== 'boolean' ? value != null : value;\n\tif (!transform || !props_definition[prop]) {\n\t\treturn value;\n\t} else if (transform === 'toAttribute') {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value == null ? null : JSON.stringify(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value ? '' : null;\n\t\t\tcase 'Number':\n\t\t\t\treturn value == null ? null : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value && JSON.parse(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value; // conversion already handled above\n\t\t\tcase 'Number':\n\t\t\t\treturn value != null ? +value : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * @internal\n *\n * Turn a Svelte component into a custom element.\n * @param {import('./public.js').ComponentType} Component A Svelte component constructor\n * @param {Record<string, CustomElementPropDefinition>} props_definition The props to observe\n * @param {string[]} slots The slots to create\n * @param {string[]} accessors Other accessors besides the ones for props the component has\n * @param {boolean} use_shadow_dom Whether to use shadow DOM\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\taccessors,\n\tuse_shadow_dom,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, use_shadow_dom);\n\t\t\tthis.$$p_d = props_definition;\n\t\t}\n\t\tstatic get observedAttributes() {\n\t\t\treturn Object.keys(props_definition).map((key) =>\n\t\t\t\t(props_definition[key].attribute || key).toLowerCase()\n\t\t\t);\n\t\t}\n\t};\n\tObject.keys(props_definition).forEach((prop) => {\n\t\tObject.defineProperty(Class.prototype, prop, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tvalue = get_custom_element_value(prop, value, props_definition);\n\t\t\t\tthis.$$d[prop] = value;\n\t\t\t\tthis.$$c?.$set({ [prop]: value });\n\t\t\t}\n\t\t});\n\t});\n\taccessors.forEach((accessor) => {\n\t\tObject.defineProperty(Class.prototype, accessor, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c?.[accessor];\n\t\t\t}\n\t\t});\n\t});\n\tif (extend) {\n\t\t// @ts-expect-error - assigning here is fine\n\t\tClass = extend(Class);\n\t}\n\tComponent.element = /** @type {any} */ (Class);\n\treturn Class;\n}\n\n/**\n * Base class for Svelte components. Used when dev=false.\n *\n * @template {Record<string, any>} [Props=any]\n * @template {Record<string, any>} [Events=any]\n */\nexport class SvelteComponent {\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$ = undefined;\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$set = undefined;\n\n\t/** @returns {void} */\n\t$destroy() {\n\t\tdestroy_component(this, 1);\n\t\tthis.$destroy = noop;\n\t}\n\n\t/**\n\t * @template {Extract<keyof Events, string>} K\n\t * @param {K} type\n\t * @param {((e: Events[K]) => void) | null | undefined} callback\n\t * @returns {() => void}\n\t */\n\t$on(type, callback) {\n\t\tif (!is_function(callback)) {\n\t\t\treturn noop;\n\t\t}\n\t\tconst callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n\t\tcallbacks.push(callback);\n\t\treturn () => {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index !== -1) callbacks.splice(index, 1);\n\t\t};\n\t}\n\n\t/**\n\t * @param {Partial<Props>} props\n\t * @returns {void}\n\t */\n\t$set(props) {\n\t\tif (this.$$set && !is_empty(props)) {\n\t\t\tthis.$$.skip_bound = true;\n\t\t\tthis.$$set(props);\n\t\t\tthis.$$.skip_bound = false;\n\t\t}\n\t}\n}\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n *\n * https://svelte.dev/docs/svelte-compiler#svelte-version\n * @type {string}\n */\nexport const VERSION = '4.2.19';\nexport const PUBLIC_VERSION = '4';\n","import { PUBLIC_VERSION } from '../../../shared/version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n","<script lang=\"ts\">\n export let displayIn: \"list\" | \"leaflet\" | \"maplibre\";\n</script>\n\n<svg\n width={displayIn === \"list\" ? 20 : undefined}\n viewBox=\"0 0 70 85\"\n fill=\"none\"\n class:in-map={displayIn !== \"list\"}\n class:list-icon={displayIn === \"list\"}\n>\n <path\n stroke-width=\"4\"\n d=\"M 5,33.103579 C 5,17.607779 18.457,5 35,5 C 51.543,5 65,17.607779 65,33.103579 C 65,56.388679 40.4668,76.048179 36.6112,79.137779 C 36.3714,79.329879 36.2116,79.457979 36.1427,79.518879 C 35.8203,79.800879 35.4102,79.942779 35,79.942779 C 34.5899,79.942779 34.1797,79.800879 33.8575,79.518879 C 33.7886,79.457979 33.6289,79.330079 33.3893,79.138079 C 29.5346,76.049279 5,56.389379 5,33.103579 Z M 35.0001,49.386379 C 43.1917,49.386379 49.8323,42.646079 49.8323,34.331379 C 49.8323,26.016779 43.1917,19.276479 35.0001,19.276479 C 26.8085,19.276479 20.1679,26.016779 20.1679,34.331379 C 20.1679,42.646079 26.8085,49.386379 35.0001,49.386379 Z\"\n />\n</svg>\n\n<style>\n svg {\n display: block;\n fill: #6b7c93;\n stroke: #6b7c93;\n }\n\n .list-icon {\n grid-row: 1/3;\n align-self: center;\n margin: 8px;\n }\n\n .in-map {\n height: 30px;\n }\n\n :global(.maplibregl-canvas-container .marker-selected) {\n z-index: 1;\n }\n\n :global(.maplibregl-canvas-container) svg path,\n :global(.leaflet-map-pane) svg path {\n fill: #3170fe;\n stroke: #3170fe;\n }\n\n :global(.marker-selected) svg path {\n fill: #98b7ff;\n stroke: #3170fe;\n }\n\n :global(.marker-reverse) svg path {\n fill: silver;\n stroke: gray;\n }\n\n :global(.marker-interactive) {\n cursor: pointer !important;\n }\n\n /* :global(.marker-fuzzy) svg path {\n fill: silver;\n stroke: gray;\n }\n\n :global(.marker-fuzzy.marker-selected) svg path {\n fill: #ddd;\n stroke: silver;\n } */\n\n :global(.maptiler-gc-popup > .maplibregl-popup-content) {\n padding: 2px 8px;\n }\n</style>\n","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nvar turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport polygonClipping from \"polygon-clipping\";\nimport { polygon, multiPolygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction difference(features) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least two features\");\n }\n const properties = features.features[0].properties || {};\n const differenced = polygonClipping.difference(geoms[0], ...geoms.slice(1));\n if (differenced.length === 0)\n return null;\n if (differenced.length === 1)\n return polygon(differenced[0], properties);\n return multiPolygon(differenced, properties);\n}\nvar turf_difference_default = difference;\nexport {\n turf_difference_default as default,\n difference\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { flattenEach } from \"@turf/meta\";\nimport { featureCollection } from \"@turf/helpers\";\nfunction flatten(geojson) {\n if (!geojson)\n throw new Error(\"geojson is required\");\n var results = [];\n flattenEach(geojson, function(feature) {\n results.push(feature);\n });\n return featureCollection(results);\n}\nvar turf_flatten_default = flatten;\nexport {\n turf_flatten_default as default,\n flatten\n};\n//# sourceMappingURL=index.js.map","import type { BBox } from \"./types\";\n\n// taken from Leaflet\nexport function wrapNum(\n x: number,\n range: [number, number],\n includeMax: boolean,\n) {\n const max = range[1],\n min = range[0],\n d = max - min;\n\n return x === max && includeMax ? x : ((((x - min) % d) + d) % d) + min;\n}\n\nexport function unwrapBbox(bbox0: BBox): BBox {\n const bbox = [...bbox0] satisfies BBox;\n\n if (bbox[2] < bbox[0]) {\n if (\n Math.abs((bbox[0] + bbox[2] + 360) / 2) >\n Math.abs((bbox[0] - 360 + bbox[2]) / 2)\n ) {\n bbox[0] -= 360;\n } else {\n bbox[2] += 360;\n }\n }\n\n return bbox;\n}\n","import bbox from \"@turf/bbox\";\nimport difference from \"@turf/difference\";\nimport flatten from \"@turf/flatten\";\nimport { featureCollection, polygon } from \"@turf/helpers\";\nimport union from \"@turf/union\";\nimport type {\n Feature,\n FeatureCollection,\n MultiPolygon,\n Polygon,\n} from \"geojson\";\nimport { unwrapBbox } from \"./geoUtils\";\nimport type { BBox } from \"./types\";\n\nexport function setMask(\n picked: Feature<Polygon | MultiPolygon>,\n setData: (data?: FeatureCollection<Polygon | MultiPolygon>) => void,\n): void {\n const diff = difference(\n featureCollection([\n polygon([\n [\n [180, 90],\n [-180, 90],\n [-180, -90],\n [180, -90],\n [180, 90],\n ],\n ]),\n picked,\n ]),\n );\n\n if (!diff) {\n return;\n }\n\n diff.properties = { isMask: true };\n\n const bb = unwrapBbox(bbox(picked) as BBox);\n\n // bigger features (continents, oceans) have bigger tolerance\n // because of the used source data simplification\n const tolerance = (bb[2] - bb[0]) / 360 / 1_000;\n\n const leaksLeft = bb[0] < -180;\n const leaksRight = bb[2] > 180;\n\n const flattened = flatten(picked);\n\n if (flattened.features.length > 1 && (leaksLeft || leaksRight)) {\n for (const poly of flattened.features) {\n const bb = unwrapBbox(bbox(poly) as BBox);\n\n if (leaksRight && bb[0] < -180 + tolerance) {\n for (const ring of poly.geometry.coordinates) {\n for (const position of ring) {\n position[0] += 360 - tolerance;\n }\n }\n }\n\n if (leaksLeft && bb[2] > 180 - tolerance) {\n for (const ring of poly.geometry.coordinates) {\n for (const position of ring) {\n position[0] -= 360 - tolerance;\n }\n }\n }\n }\n }\n\n setData(\n featureCollection([\n flattened.features.length < 2 ? picked : (union(flattened) ?? picked),\n diff,\n ]),\n );\n}\n","import { feature, featureCollection } from \"@turf/helpers\";\nimport union from \"@turf/union\";\nimport type {\n GeoJSON,\n LineString,\n MultiLineString,\n MultiPolygon,\n Polygon,\n} from \"geojson\";\nimport type * as maplibregl from \"maplibre-gl\";\nimport type {\n FillLayerSpecification,\n FitBoundsOptions,\n FlyToOptions,\n GeoJSONSource,\n LineLayerSpecification,\n Map,\n MapMouseEvent,\n Marker,\n} from \"maplibre-gl\";\nimport MarkerIcon from \"./MarkerIcon.svelte\";\nimport { setMask } from \"./mask\";\nimport type { BBox, Position } from \"./types\";\nimport type { Feature, MapController, MapEvent } from \"./types.js\";\n\ntype MapLibreGL = Pick<typeof maplibregl, \"Marker\" | \"Popup\">;\n\nconst emptyGeojson = featureCollection([]);\n\nexport function createMapLibreGlMapController(\n map: Map,\n maplibregl?: MapLibreGL | undefined,\n marker: boolean | maplibregl.MarkerOptions = true,\n showResultMarkers: boolean | maplibregl.MarkerOptions = true,\n flyToOptions: FlyToOptions = {},\n fitBoundsOptions: FitBoundsOptions = {},\n fullGeometryStyle:\n | undefined\n | {\n fill?: Pick<FillLayerSpecification, \"layout\" | \"paint\" | \"filter\">;\n line?: Pick<LineLayerSpecification, \"layout\" | \"paint\" | \"filter\">;\n } = {\n fill: {\n paint: {\n \"fill-color\": \"#000\",\n \"fill-opacity\": 0.1,\n },\n filter: [\"all\", [\"==\", [\"geometry-type\"], \"Polygon\"], [\"has\", \"isMask\"]],\n },\n line: {\n layout: {\n \"line-cap\": \"square\",\n },\n paint: {\n \"line-width\": [\"case\", [\"==\", [\"geometry-type\"], \"Polygon\"], 2, 3],\n \"line-dasharray\": [1, 1],\n \"line-color\": \"#3170fe\",\n },\n filter: [\"!\", [\"has\", \"isMask\"]],\n },\n },\n) {\n let eventHandler: ((e: MapEvent) => void) | undefined;\n\n const markers: Marker[] = [];\n\n let selectedMarker: maplibregl.Marker | undefined;\n\n let reverseMarker: maplibregl.Marker | undefined;\n\n let savedData: GeoJSON | undefined; // used to restore features on style switch\n\n function addFullGeometryLayer() {\n if (\n !map.getSource(\"full-geom\") &&\n (fullGeometryStyle?.fill || fullGeometryStyle?.line)\n ) {\n map.addSource(\"full-geom\", {\n type: \"geojson\",\n data: emptyGeojson,\n });\n }\n\n if (!map.getLayer(\"full-geom-fill\") && fullGeometryStyle?.fill) {\n map.addLayer({\n ...fullGeometryStyle?.fill,\n id: \"full-geom-fill\",\n type: \"fill\",\n source: \"full-geom\",\n });\n }\n\n if (!map.getLayer(\"full-geom-line\") && fullGeometryStyle?.line) {\n map.addLayer({\n ...fullGeometryStyle?.line,\n id: \"full-geom-line\",\n type: \"line\",\n source: \"full-geom\",\n });\n }\n\n if (savedData) {\n setData(savedData);\n }\n }\n\n if (map.loaded()) {\n addFullGeometryLayer();\n } else {\n map.once(\"load\", () => {\n addFullGeometryLayer();\n });\n }\n\n map.on(\"styledata\", () => {\n addFullGeometryLayer();\n });\n\n const handleMapClick = (e: MapMouseEvent) => {\n eventHandler?.({\n type: \"mapClick\",\n coordinates: [e.lngLat.lng, e.lngLat.lat],\n });\n };\n\n function createMarker(interactive = false) {\n if (!maplibregl) {\n throw new Error();\n }\n\n const element = document.createElement(\"div\");\n\n if (interactive) {\n element.classList.add(\"marker-interactive\");\n }\n\n new MarkerIcon({\n props: { displayIn: \"maplibre\" },\n target: element,\n });\n\n return new maplibregl.Marker({ element, offset: [1, -13] });\n }\n\n function setData(data?: GeoJSON) {\n savedData = data;\n\n if (!data) {\n return;\n }\n\n (map.getSource(\"full-geom\") as GeoJSONSource)?.setData(data);\n }\n\n return {\n setEventHandler(handler: undefined | ((e: MapEvent) => void)): void {\n if (handler) {\n eventHandler = handler;\n\n map.on(\"click\", handleMapClick);\n } else {\n eventHandler = undefined;\n\n map.off(\"click\", handleMapClick);\n }\n },\n\n flyTo(center: Position, zoom?: number): void {\n map.flyTo({ center, ...(zoom ? { zoom } : {}), ...flyToOptions });\n },\n\n fitBounds(bbox: BBox, padding: number, maxZoom?: number): void {\n map.fitBounds(\n [\n [bbox[0], bbox[1]],\n [bbox[2], bbox[3]],\n ],\n { padding, ...(maxZoom ? { maxZoom } : {}), ...fitBoundsOptions },\n );\n },\n\n indicateReverse(reverse: boolean): void {\n map.getCanvasContainer().style.cursor = reverse ? \"crosshair\" : \"\";\n },\n\n setReverseMarker(coordinates?: Position) {\n if (!maplibregl || !marker) {\n return;\n }\n\n if (reverseMarker) {\n if (!coordinates) {\n reverseMarker.remove();\n\n reverseMarker = undefined;\n } else {\n reverseMarker.setLngLat(coordinates);\n }\n } else if (coordinates) {\n reverseMarker = (\n typeof marker === \"object\"\n ? new maplibregl.Marker(marker)\n : createMarker()\n )\n .setLngLat(coordinates)\n .addTo(map);\n\n reverseMarker.getElement().classList.add(\"marker-reverse\");\n }\n },\n\n setMarkers(\n markedFeatures: Feature[] | undefined,\n picked: Feature | undefined,\n ): void {\n if (!marker) {\n return;\n }\n\n for (const marker of markers) {\n marker.remove();\n }\n\n markers.length = 0;\n\n setData(emptyGeojson);\n\n if (!maplibregl) {\n return;\n }\n\n if (picked) {\n let handled = false;\n\n if (picked.geometry.type === \"GeometryCollection\") {\n const geoms = picked.geometry.geometries.filter(\n (geometry): geometry is Polygon | MultiPolygon =>\n geometry.type === \"Polygon\" || geometry.type === \"MultiPolygon\",\n );\n\n ok: if (geoms.length > 0) {\n const unioned = union(\n featureCollection(geoms.map((geom) => feature(geom))),\n );\n\n if (!unioned) {\n break ok;\n }\n\n setMask(\n {\n ...picked,\n geometry: unioned.geometry,\n },\n setData,\n );\n\n handled = true;\n } else {\n const geometries = picked.geometry.geometries.filter(\n (geometry): geometry is LineString | MultiLineString =>\n geometry.type === \"LineString\" ||\n geometry.type === \"MultiLineString\",\n );\n\n if (geometries.length > 0) {\n setData({\n ...picked,\n geometry: { type: \"GeometryCollection\", geometries },\n });\n\n handled = true;\n }\n }\n }\n\n if (handled) {\n // nothing\n } else if (\n picked.geometry.type === \"Polygon\" ||\n picked.geometry.type === \"MultiPolygon\"\n ) {\n setMask(picked as Feature<Polygon | MultiPolygon>, setData);\n } else if (\n picked.geometry.type === \"LineString\" ||\n picked.geometry.type === \"MultiLineString\"\n ) {\n setData(picked);\n\n return; // no pin for (multi)linestrings\n }\n\n if (marker) {\n markers.push(\n (typeof marker === \"object\"\n ? new maplibregl.Marker(marker)\n : createMarker()\n )\n .setLngLat(picked.center)\n .addTo(map),\n );\n }\n }\n\n if (showResultMarkers) {\n for (const feature of markedFeatures ?? []) {\n if (feature === picked) {\n continue;\n }\n\n const marker = (\n typeof showResultMarkers === \"object\"\n ? new maplibregl.Marker(showResultMarkers)\n : createMarker(true)\n )\n .setLngLat(feature.center)\n .setPopup(\n new maplibregl.Popup({\n offset: [1, -27],\n closeButton: false,\n closeOnMove: true,\n className: \"maptiler-gc-popup\",\n }).setText(\n feature.place_type[0] === \"reverse\"\n ? feature.place_name\n : feature.place_name.replace(/,.*/, \"\"),\n ),\n )\n .addTo(map);\n\n const element = marker.getElement();\n\n element.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n\n eventHandler?.({ type: \"markerClick\", id: feature.id });\n });\n\n element.addEventListener(\"mouseenter\", () => {\n eventHandler?.({ type: \"markerMouseEnter\", id: feature.id });\n\n marker.togglePopup();\n });\n\n element.addEventListener(\"mouseleave\", () => {\n eventHandler?.({ type: \"markerMouseLeave\", id: feature.id });\n\n marker.togglePopup();\n });\n\n // element.classList.toggle(\"marker-fuzzy\", !!feature.matching_text);\n\n markers.push(marker);\n }\n }\n },\n\n setSelectedMarker(index: number): void {\n if (selectedMarker) {\n selectedMarker.getElement().classList.toggle(\"marker-selected\", false);\n }\n\n selectedMarker = index > -1 ? markers[index] : undefined;\n\n selectedMarker?.getElement().classList.toggle(\"marker-selected\", true);\n },\n\n getCenterAndZoom() {\n const c = map.getCenter();\n\n return [map.getZoom(), c.lng, c.lat];\n },\n } satisfies MapController;\n}\n"],"names":["feature","geom","properties","options","feat","polygon","coordinates","ring","j","featureCollection","features","fc","multiPolygon","__generator","thisArg","body","_","t","f","y","g","verb","n","v","step","op","e","Node","key","data","DEFAULT_COMPARE","a","b","splay","comparator","N","l","r","cmp","insert","node","split","left","right","merge","printRow","root","prefix","isTail","out","printNode","indent","Tree","i","x","current","compare","visitor","ctx","Q","done","low","high","fn","keys","_a","values","index","d","successor","predecessor","toList","presort","size","sort","loadRecursive","mergedList","mergeLists","createList","sortedListToBST","newKey","newData","start","end","middle","head","p","list","l1","l2","p1","p2","pivot","tmp","epsilon","splitter","resulterrbound","sum","elen","flen","h","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","B","C1","C2","D","u","orient2dadapt","ax","ay","bx","by","cx","cy","detsum","acxtail","acytail","bcxtail","bcytail","c","ahi","alo","bhi","blo","_i","_j","_0","s1","s0","t1","t0","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","isInBbox","bbox","point","getBboxOverlap","b1","b2","lowerX","upperX","lowerY","upperY","EPSILON_SQ","ab","PtRounder","CoordRounder","SplayTree","coord","prevNode","nextNode","rounder","crossProduct","dotProduct","compareVectorAngles","basePt","endPt1","endPt2","res","length","sineOfAngle","pShared","pBase","pAngle","vBase","vAngle","cosineOfAngle","horizontalIntersection","pt","verticalIntersection","intersection$1","pt1","v1","pt2","v2","kross","ve","d1","d2","x1","x2","y1","y2","SweepEvent","ptCmp","Segment","aPt","bPt","isLeft","other","otherEvents","iMax","evt","numEvents","evt1","evt2","events","baseEvent","cache","fillCache","linkedEvent","nextEvent","asine","acosine","bsine","bcosine","segmentId","alx","blx","arx","brx","aly","bly","ary","bry","aCmpBLeft","bCmpARight","bCmpALeft","aCmpBRight","leftSE","rightSE","rings","windings","leftPt","rightPt","winding","cmpPts","newRightSE","lPt","rPt","yDist","xFromYDist","xDist","yFromXDist","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","newEvents","alreadyLinked","newLeftSE","oldRightSE","newSeg","tmpEvt","consumer","consumee","seg","beforeState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","poly","mp","mpsBefore","operation","noBefores","noAfters","least","most","diff","isJustSubject","mps","RingIn","geomRing","isExterior","firstPoint","prevPoint","sweepEvents","segment","PolyIn","geomPoly","multiPoly","ringSweepEvents","jMax","MultiPolyIn","isSubject","polySweepEvents","RingOut","allSegments","ringsOut","prevEvent","event","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","intersectionLE","ringEvents","prevPt","points","nextPt","iStart","iEnd","orderedPoints","enclosing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","exteriorRing","ringGeom","MultiPolyOut","polyGeom","polys","enclosingRing","SweepLine","queue","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","nextMySplitter","nextInter","mySplitter","inter","POLYGON_CLIPPING_MAX_QUEUE_SIZE","POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS","Operation","type","moreGeoms","multipolys","subject","mpA","sweepLine","prevQueueSize","union","_len","_key","intersection","_len2","_key2","xor","_len3","_key3","difference","subjectGeom","_len4","clippingGeoms","_key4","coordEach","geojson","callback","excludeWrapCoord","k","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","geomEach","featureProperties","featureBBox","featureId","flattenEach","id","coordinate","geoms","unioned","polygonClipping","turf_union_default","noop","run","blank_object","run_all","fns","is_function","thing","safe_not_equal","is_empty","obj","append","target","anchor","detach","svg_element","name","attr","attribute","value","children","element","toggle_class","toggle","current_component","set_current_component","component","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","flush","add_render_callback","seen_callbacks","flushidx","saved_component","update","$$","dirty","flush_render_callbacks","filtered","targets","outroing","transition_in","block","local","mount_component","fragment","after_update","new_on_destroy","destroy_component","detaching","make_dirty","init","instance","create_fragment","not_equal","props","append_styles","parent_component","ready","ret","rest","nodes","SvelteComponent","__publicField","callbacks","PUBLIC_VERSION","svg","svg_width_value","path","displayIn","$$props","result","turf_bbox_default","differenced","turf_difference_default","flatten","results","turf_flatten_default","unwrapBbox","bbox0","setMask","picked","setData","bb","tolerance","leaksLeft","leaksRight","flattened","position","emptyGeojson","createMapLibreGlMapController","map","maplibregl","marker","showResultMarkers","flyToOptions","fitBoundsOptions","fullGeometryStyle","eventHandler","markers","selectedMarker","reverseMarker","savedData","addFullGeometryLayer","handleMapClick","createMarker","interactive","MarkerIcon","handler","center","zoom","padding","maxZoom","reverse","markedFeatures","handled","ok","geometries"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18]}