maplibre-gl 2.2.0-pre.3 → 2.2.1

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 (121) hide show
  1. package/README.md +73 -14
  2. package/build/generate-debug-index-file.ts +19 -0
  3. package/build/generate-style-code.ts +6 -1
  4. package/build/generate-style-spec.ts +151 -35
  5. package/build/generate-typings.ts +1 -1
  6. package/build/rollup_plugins.ts +4 -1
  7. package/dist/maplibre-gl-csp-worker.js +1 -1
  8. package/dist/maplibre-gl-csp-worker.js.map +1 -1
  9. package/dist/maplibre-gl-csp.js +1 -1
  10. package/dist/maplibre-gl-csp.js.map +1 -1
  11. package/dist/maplibre-gl-dev.js +364 -3124
  12. package/dist/maplibre-gl.css +1 -1
  13. package/dist/maplibre-gl.d.ts +439 -151
  14. package/dist/maplibre-gl.js +4 -4
  15. package/dist/maplibre-gl.js.map +1 -1
  16. package/package.json +68 -65
  17. package/src/css/maplibre-gl.css +39 -32
  18. package/src/data/bucket/fill_bucket.test.ts +1 -0
  19. package/src/data/bucket/symbol_bucket.test.ts +2 -0
  20. package/src/data/evaluation_feature.ts +1 -1
  21. package/src/data/program_configuration.ts +2 -2
  22. package/src/geo/transform.ts +4 -4
  23. package/src/gl/vertex_buffer.ts +4 -4
  24. package/src/index.ts +1 -1
  25. package/src/render/image_atlas.ts +1 -0
  26. package/src/render/image_manager.ts +1 -0
  27. package/src/render/program/debug_program.ts +1 -1
  28. package/src/render/render_to_texture.ts +3 -0
  29. package/src/render/terrain.ts +21 -21
  30. package/src/shaders/README.md +2 -2
  31. package/src/source/geojson_worker_source.test.ts +2 -2
  32. package/src/source/geojson_wrapper.test.ts +1 -1
  33. package/src/source/image_source.test.ts +8 -8
  34. package/src/source/image_source.ts +1 -1
  35. package/src/source/raster_tile_source.test.ts +1 -1
  36. package/src/source/source_cache.test.ts +12 -12
  37. package/src/source/source_cache.ts +1 -1
  38. package/src/source/terrain_source_cache.ts +3 -3
  39. package/src/source/vector_tile_source.test.ts +1 -1
  40. package/src/source/vector_tile_worker_source.test.ts +1 -1
  41. package/src/source/video_source.test.ts +2 -2
  42. package/src/source/worker.ts +2 -4
  43. package/src/style/light.test.ts +1 -1
  44. package/src/style/style.test.ts +3 -3
  45. package/src/style/style.ts +2 -2
  46. package/src/style/style_layer/background_style_layer_properties.g.ts +1 -0
  47. package/src/style/style_layer/circle_style_layer_properties.g.ts +1 -0
  48. package/src/style/style_layer/fill_extrusion_style_layer_properties.g.ts +1 -0
  49. package/src/style/style_layer/fill_style_layer_properties.g.ts +1 -0
  50. package/src/style/style_layer/heatmap_style_layer_properties.g.ts +1 -0
  51. package/src/style/style_layer/hillshade_style_layer_properties.g.ts +1 -0
  52. package/src/style/style_layer/line_style_layer_properties.g.ts +1 -0
  53. package/src/style/style_layer/raster_style_layer_properties.g.ts +1 -0
  54. package/src/style/style_layer/symbol_style_layer.ts +16 -1
  55. package/src/style/style_layer/symbol_style_layer_properties.g.ts +4 -3
  56. package/src/style-spec/CHANGELOG.md +5 -0
  57. package/src/style-spec/composite.test.ts +2 -0
  58. package/src/style-spec/diff.test.ts +3 -3
  59. package/src/style-spec/empty.ts +3 -2
  60. package/src/style-spec/expression/definitions/coercion.ts +13 -2
  61. package/src/style-spec/expression/definitions/interpolate.ts +1 -0
  62. package/src/style-spec/expression/expression.test.ts +1 -1
  63. package/src/style-spec/expression/expression.ts +3 -0
  64. package/src/style-spec/expression/index.ts +8 -2
  65. package/src/style-spec/expression/parsing_context.ts +2 -0
  66. package/src/style-spec/expression/types.ts +6 -1
  67. package/src/style-spec/expression/values.ts +9 -4
  68. package/src/style-spec/feature_filter/convert.ts +65 -65
  69. package/src/style-spec/feature_filter/feature_filter.test.ts +45 -4
  70. package/src/style-spec/feature_filter/index.ts +2 -1
  71. package/src/style-spec/function/index.test.ts +117 -1
  72. package/src/style-spec/function/index.ts +24 -12
  73. package/src/style-spec/migrate/expressions.ts +1 -1
  74. package/src/style-spec/migrate/v8.test.ts +2 -0
  75. package/src/style-spec/migrate/v9.test.ts +6 -4
  76. package/src/style-spec/migrate.test.ts +3 -1
  77. package/src/style-spec/package.json +1 -1
  78. package/src/style-spec/reference/latest.ts +2 -2
  79. package/src/style-spec/reference/v8.json +9 -6
  80. package/src/style-spec/style-spec.test.ts +2 -1
  81. package/src/style-spec/style-spec.ts +18 -9
  82. package/src/style-spec/types.g.ts +152 -36
  83. package/src/style-spec/util/interpolate.test.ts +5 -0
  84. package/src/style-spec/util/interpolate.ts +12 -0
  85. package/src/style-spec/util/padding.test.ts +27 -0
  86. package/src/style-spec/util/padding.ts +64 -0
  87. package/src/style-spec/validate/validate.ts +3 -1
  88. package/src/style-spec/validate/validate_padding.test.ts +82 -0
  89. package/src/style-spec/validate/validate_padding.ts +36 -0
  90. package/src/style-spec/validate_style.ts +1 -1
  91. package/src/symbol/check_max_angle.test.ts +5 -5
  92. package/src/symbol/collision_feature.test.ts +22 -5
  93. package/src/symbol/collision_feature.ts +7 -5
  94. package/src/symbol/collision_index.ts +1 -1
  95. package/src/symbol/get_anchors.test.ts +4 -4
  96. package/src/symbol/projection.ts +1 -1
  97. package/src/symbol/quads.test.ts +1 -1
  98. package/src/symbol/shaping.ts +10 -10
  99. package/src/symbol/symbol_layout.ts +5 -4
  100. package/src/symbol/symbol_style_layer.test.ts +1 -1
  101. package/src/ui/camera.test.ts +11 -11
  102. package/src/ui/control/geolocate_control.ts +1 -1
  103. package/src/ui/control/terrain_control.ts +4 -4
  104. package/src/ui/handler/cooperative_gestures.test.ts +167 -0
  105. package/src/ui/handler/drag_pan.test.ts +2 -1
  106. package/src/ui/handler/scroll_zoom.ts +7 -0
  107. package/src/ui/handler/touch_pan.ts +22 -2
  108. package/src/ui/handler/touch_zoom_rotate.ts +18 -1
  109. package/src/ui/handler_manager.ts +2 -2
  110. package/src/ui/map.test.ts +16 -16
  111. package/src/ui/map.ts +76 -8
  112. package/src/ui/map_events.test.ts +33 -32
  113. package/src/ui/popup.test.ts +2 -2
  114. package/src/util/ajax.test.ts +5 -5
  115. package/src/util/ajax.ts +1 -1
  116. package/src/util/classify_rings.test.ts +27 -27
  117. package/src/util/primitives.ts +4 -4
  118. package/src/util/resolve_tokens.test.ts +1 -1
  119. package/src/util/tile_request_cache.test.ts +5 -5
  120. package/src/util/util.test.ts +5 -5
  121. package/src/util/util.ts +2 -3
@@ -1 +1 @@
1
- {"version":3,"file":"maplibre-gl-csp-worker.js","sources":["../node_modules/@mapbox/unitbezier/index.js","../src/util/util.ts","../src/util/transferable_grid_index.ts","../node_modules/csscolorparser/csscolorparser.js","../src/style-spec/util/color.ts","../src/style-spec/util/extend.ts","../src/style-spec/expression/parsing_error.ts","../src/style-spec/expression/scope.ts","../src/style-spec/expression/types.ts","../src/style-spec/expression/types/collator.ts","../src/style-spec/expression/types/formatted.ts","../src/style-spec/expression/types/resolved_image.ts","../src/style-spec/expression/values.ts","../src/style-spec/expression/definitions/literal.ts","../src/style-spec/expression/runtime_error.ts","../src/style-spec/expression/definitions/assertion.ts","../src/style-spec/expression/definitions/coercion.ts","../src/style-spec/expression/evaluation_context.ts","../src/style-spec/expression/compound_expression.ts","../src/style-spec/expression/definitions/collator.ts","../src/style-spec/expression/definitions/within.ts","../src/style-spec/expression/is_constant.ts","../src/style-spec/expression/definitions/var.ts","../src/style-spec/expression/parsing_context.ts","../src/style-spec/expression/stops.ts","../src/style-spec/expression/definitions/step.ts","../src/style-spec/util/interpolate.ts","../src/style-spec/util/color_spaces.ts","../src/style-spec/expression/definitions/interpolate.ts","../src/style-spec/expression/definitions/coalesce.ts","../src/style-spec/expression/definitions/let.ts","../src/style-spec/expression/definitions/at.ts","../src/style-spec/expression/definitions/in.ts","../src/style-spec/expression/definitions/index_of.ts","../src/style-spec/expression/definitions/match.ts","../src/style-spec/expression/definitions/case.ts","../src/style-spec/expression/definitions/slice.ts","../src/style-spec/expression/definitions/comparison.ts","../src/style-spec/expression/definitions/number_format.ts","../src/style-spec/expression/definitions/format.ts","../src/style-spec/expression/definitions/image.ts","../src/style-spec/expression/definitions/length.ts","../src/style-spec/expression/definitions/index.ts","../src/style-spec/util/result.ts","../src/style-spec/util/properties.ts","../src/style-spec/util/get_type.ts","../src/style-spec/function/index.ts","../src/style-spec/expression/index.ts","../src/util/config.ts","../src/util/tile_request_cache.ts","../src/util/webp_supported.ts","../src/util/ajax.ts","../src/util/web_worker_transfer.ts","../src/util/throttled_invoker.ts","../src/util/actor.ts","../src/style-spec/error/validation_error.ts","../src/style-spec/validate/validate_constants.ts","../src/style-spec/util/unbundle_jsonlint.ts","../src/style-spec/validate/validate_object.ts","../src/style-spec/validate/validate_array.ts","../src/style-spec/validate/validate_number.ts","../src/style-spec/validate/validate_function.ts","../src/style-spec/validate/validate_expression.ts","../src/style-spec/validate/validate_enum.ts","../src/style-spec/feature_filter/index.ts","../src/style-spec/validate/validate_filter.ts","../src/style-spec/validate/validate_property.ts","../src/style-spec/validate/validate_paint_property.ts","../src/style-spec/validate/validate_layout_property.ts","../src/style-spec/validate/validate_layer.ts","../src/style-spec/validate/validate_string.ts","../src/style-spec/validate/validate_source.ts","../src/style-spec/validate/validate_light.ts","../src/style-spec/validate/validate_terrain.ts","../src/style-spec/validate/validate.ts","../src/style-spec/validate/validate_boolean.ts","../src/style-spec/validate/validate_color.ts","../src/style-spec/validate/validate_formatted.ts","../src/style-spec/validate/validate_image.ts","../src/style-spec/validate/validate_glyphs_url.ts","../src/style-spec/validate_style.min.ts","../src/util/evented.ts","../src/style/validate_style.ts","../src/style/zoom_history.ts","../src/util/is_char_in_unicode_block.ts","../src/util/script_detection.ts","../src/util/browser.ts","../src/source/rtl_text_plugin.ts","../src/style/evaluation_parameters.ts","../src/style/properties.ts","../src/style/style_layer.ts","../src/util/struct_array.ts","../node_modules/@mapbox/point-geometry/index.js","../src/data/array_types.g.ts","../src/data/bucket/circle_attributes.ts","../src/data/segment.ts","../src/shaders/encode_attribute.ts","../src/data/bucket/pattern_attributes.ts","../node_modules/murmurhash-js/murmurhash3_gc.js","../node_modules/murmurhash-js/murmurhash2_gc.js","../node_modules/murmurhash-js/index.js","../src/data/feature_position_map.ts","../src/render/uniform_binding.ts","../src/data/program_configuration.ts","../src/data/extent.ts","../src/data/load_geometry.ts","../src/data/evaluation_feature.ts","../src/data/bucket/circle_bucket.ts","../src/util/intersection_tests.ts","../src/style/query_utils.ts","../src/style/style_layer/circle_style_layer_properties.g.ts","../node_modules/gl-matrix/esm/mat3.js","../node_modules/gl-matrix/esm/common.js","../node_modules/gl-matrix/esm/mat4.js","../node_modules/gl-matrix/esm/vec3.js","../node_modules/gl-matrix/esm/vec4.js","../node_modules/gl-matrix/esm/quat.js","../src/style/style_layer/circle_style_layer.ts","../node_modules/gl-matrix/esm/vec2.js","../src/data/bucket/heatmap_bucket.ts","../src/style/style_layer/heatmap_style_layer_properties.g.ts","../src/util/image.ts","../src/style/style_layer/hillshade_style_layer_properties.g.ts","../src/data/bucket/fill_attributes.ts","../node_modules/earcut/src/earcut.js","../node_modules/quickselect/index.js","../src/util/classify_rings.ts","../src/data/bucket/pattern_bucket_features.ts","../src/data/bucket/fill_bucket.ts","../src/style/style_layer/fill_style_layer_properties.g.ts","../src/data/bucket/fill_extrusion_attributes.ts","../node_modules/@mapbox/vector-tile/lib/vectortilefeature.js","../node_modules/@mapbox/vector-tile/lib/vectortilelayer.js","../node_modules/@mapbox/vector-tile/lib/vectortile.js","../node_modules/@mapbox/vector-tile/index.js","../src/data/bucket/fill_extrusion_bucket.ts","../src/style/style_layer/fill_extrusion_style_layer_properties.g.ts","../src/style/style_layer/fill_extrusion_style_layer.ts","../src/data/bucket/line_attributes.ts","../src/data/bucket/line_attributes_ext.ts","../src/data/bucket/line_bucket.ts","../src/style/style_layer/line_style_layer_properties.g.ts","../src/style/style_layer/line_style_layer.ts","../src/data/bucket/symbol_attributes.ts","../src/symbol/transform_text.ts","../src/util/verticalize_punctuation.ts","../src/symbol/one_em.ts","../node_modules/pbf/index.js","../node_modules/ieee754/index.js","../src/symbol/shaping.ts","../node_modules/potpack/index.mjs","../src/render/image_atlas.ts","../src/style/parse_glyph_pbf.ts","../src/symbol/symbol_size.ts","../src/symbol/anchor.ts","../src/symbol/check_max_angle.ts","../src/symbol/get_anchors.ts","../src/symbol/quads.ts","../src/symbol/collision_feature.ts","../node_modules/tinyqueue/index.js","../src/util/find_pole_of_inaccessibility.ts","../src/symbol/symbol_layout.ts","../src/symbol/clip_line.ts","../src/data/bucket/symbol_bucket.ts","../src/symbol/merge_lines.ts","../src/style/style_layer/symbol_style_layer_properties.g.ts","../src/style/format_section_override.ts","../src/style/style_layer/symbol_style_layer.ts","../src/util/resolve_tokens.ts","../src/style/style_layer/background_style_layer_properties.g.ts","../src/style/style_layer/raster_style_layer_properties.g.ts","../src/style/style_layer/custom_style_layer.ts","../src/style/create_style_layer.ts","../src/style/style_layer/heatmap_style_layer.ts","../src/util/color_ramp.ts","../src/style/style_layer/hillshade_style_layer.ts","../src/style/style_layer/fill_style_layer.ts","../src/style/style_layer/background_style_layer.ts","../src/style/style_layer/raster_style_layer.ts","../src/style-spec/util/ref_properties.ts","../src/style-spec/group_by_layout.ts","../src/style/style_layer_index.ts","../src/util/dictionary_coder.ts","../src/util/vectortile_to_geojson.ts","../src/data/feature_index.ts","../src/render/glyph_atlas.ts","../node_modules/@mapbox/whoots-js/index.mjs","../src/geo/lng_lat_bounds.ts","../src/geo/lng_lat.ts","../src/geo/mercator_coordinate.ts","../src/source/tile_id.ts","../src/source/worker_tile.ts","../src/util/performance.ts","../src/source/vector_tile_worker_source.ts","../src/data/dem_data.ts","../src/source/raster_dem_tile_worker_source.ts","../node_modules/@mapbox/geojson-rewind/index.js","../src/source/geojson_wrapper.ts","../node_modules/vt-pbf/lib/geojson_wrapper.js","../node_modules/vt-pbf/index.js","../node_modules/kdbush/src/sort.js","../node_modules/kdbush/src/within.js","../node_modules/kdbush/src/index.js","../node_modules/kdbush/src/range.js","../node_modules/supercluster/index.js","../node_modules/geojson-vt/src/simplify.js","../node_modules/geojson-vt/src/feature.js","../node_modules/geojson-vt/src/convert.js","../node_modules/geojson-vt/src/clip.js","../node_modules/geojson-vt/src/wrap.js","../node_modules/geojson-vt/src/transform.js","../node_modules/geojson-vt/src/tile.js","../node_modules/geojson-vt/src/index.js","../src/source/geojson_worker_source.ts","../src/source/worker.ts"],"sourcesContent":["'use strict';\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p1y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype = {\n sampleCurveX: function (t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n },\n\n sampleCurveY: function (t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n },\n\n sampleCurveDerivativeX: function (t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n },\n\n solveCurveX: function (x, epsilon) {\n if (epsilon === undefined) epsilon = 1e-6;\n\n if (x < 0.0) return 0.0;\n if (x > 1.0) return 1.0;\n\n var t = x;\n\n // First try a few iterations of Newton's method - normally very fast.\n for (var i = 0; i < 8; i++) {\n var x2 = this.sampleCurveX(t) - x;\n if (Math.abs(x2) < epsilon) return t;\n\n var d2 = this.sampleCurveDerivativeX(t);\n if (Math.abs(d2) < 1e-6) break;\n\n t = t - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n var t0 = 0.0;\n var t1 = 1.0;\n t = x;\n\n for (i = 0; i < 20; i++) {\n x2 = this.sampleCurveX(t);\n if (Math.abs(x2 - x) < epsilon) break;\n\n if (x > x2) {\n t0 = t;\n } else {\n t1 = t;\n }\n\n t = (t1 - t0) * 0.5 + t0;\n }\n\n return t;\n },\n\n solve: function (x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n }\n};\n",null,null,"// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array<Number>} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array<Number>|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n",null,null,null,null,null,"/**\n * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\n * \n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n * \n * @param {string} key ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash \n */\n\nfunction murmurhash3_32_gc(key, seed) {\n\tvar remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i;\n\t\n\tremainder = key.length & 3; // key.length % 4\n\tbytes = key.length - remainder;\n\th1 = seed;\n\tc1 = 0xcc9e2d51;\n\tc2 = 0x1b873593;\n\ti = 0;\n\t\n\twhile (i < bytes) {\n\t \tk1 = \n\t \t ((key.charCodeAt(i) & 0xff)) |\n\t \t ((key.charCodeAt(++i) & 0xff) << 8) |\n\t \t ((key.charCodeAt(++i) & 0xff) << 16) |\n\t \t ((key.charCodeAt(++i) & 0xff) << 24);\n\t\t++i;\n\t\t\n\t\tk1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n\t\tk1 = (k1 << 15) | (k1 >>> 17);\n\t\tk1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n\t\th1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n\t\th1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n\t\th1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n\t}\n\t\n\tk1 = 0;\n\t\n\tswitch (remainder) {\n\t\tcase 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n\t\tcase 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n\t\tcase 1: k1 ^= (key.charCodeAt(i) & 0xff);\n\t\t\n\t\tk1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n\t\tk1 = (k1 << 15) | (k1 >>> 17);\n\t\tk1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n\t\th1 ^= k1;\n\t}\n\t\n\th1 ^= key.length;\n\n\th1 ^= h1 >>> 16;\n\th1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n\th1 ^= h1 >>> 13;\n\th1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n\th1 ^= h1 >>> 16;\n\n\treturn h1 >>> 0;\n}\n\nif(typeof module !== \"undefined\") {\n module.exports = murmurhash3_32_gc\n}","/**\n * JS Implementation of MurmurHash2\n * \n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n * \n * @param {string} str ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n\nfunction murmurhash2_32_gc(str, seed) {\n var\n l = str.length,\n h = seed ^ l,\n i = 0,\n k;\n \n while (l >= 4) {\n \tk = \n \t ((str.charCodeAt(i) & 0xff)) |\n \t ((str.charCodeAt(++i) & 0xff) << 8) |\n \t ((str.charCodeAt(++i) & 0xff) << 16) |\n \t ((str.charCodeAt(++i) & 0xff) << 24);\n \n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n k ^= k >>> 24;\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\n\th = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;\n\n l -= 4;\n ++i;\n }\n \n switch (l) {\n case 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1: h ^= (str.charCodeAt(i) & 0xff);\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n }\n\n h ^= h >>> 13;\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n h ^= h >>> 15;\n\n return h >>> 0;\n}\n\nif(typeof module !== undefined) {\n module.exports = murmurhash2_32_gc\n}\n","var murmur3 = require(\"./murmurhash3_gc.js\")\nvar murmur2 = require(\"./murmurhash2_gc.js\")\n\nmodule.exports = murmur3\nmodule.exports.murmur3 = murmur3\nmodule.exports.murmur2 = murmur2\n",null,null,null,null,null,null,null,null,null,null,"import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();",null,"import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();",null,null,null,null,null,"'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n var filteredBridge = filterPoints(bridge, bridge.next);\n filterPoints(bridgeReverse, bridgeReverse.next);\n\n // Check if input node was removed by the filtering\n return outerNode === bridge ? filteredBridge : outerNode;\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","\nexport default function quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n",null,null,null,null,null,"'use strict';\n\nvar Point = require('@mapbox/point-geometry');\n\nmodule.exports = VectorTileFeature;\n\nfunction VectorTileFeature(pbf, end, extent, keys, values) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n}\n\nfunction readFeature(tag, feature, pbf) {\n if (tag == 1) feature.id = pbf.readVarint();\n else if (tag == 2) readTag(pbf, feature);\n else if (tag == 3) feature.type = pbf.readVarint();\n else if (tag == 4) feature._geometry = pbf.pos;\n}\n\nfunction readTag(pbf, feature) {\n var end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n var key = feature._keys[pbf.readVarint()],\n value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n\nVectorTileFeature.types = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nVectorTileFeature.prototype.loadGeometry = function() {\n var pbf = this._pbf;\n pbf.pos = this._geometry;\n\n var end = pbf.readVarint() + pbf.pos,\n cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n lines = [],\n line;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) { // moveTo\n if (line) lines.push(line);\n line = [];\n }\n\n line.push(new Point(x, y));\n\n } else if (cmd === 7) {\n\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].clone()); // closePolygon\n }\n\n } else {\n throw new Error('unknown command ' + cmd);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n};\n\nVectorTileFeature.prototype.bbox = function() {\n var pbf = this._pbf;\n pbf.pos = this._geometry;\n\n var end = pbf.readVarint() + pbf.pos,\n cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n x1 = Infinity,\n x2 = -Infinity,\n y1 = Infinity,\n y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n\n } else if (cmd !== 7) {\n throw new Error('unknown command ' + cmd);\n }\n }\n\n return [x1, y1, x2, y2];\n};\n\nVectorTileFeature.prototype.toGeoJSON = function(x, y, z) {\n var size = this.extent * Math.pow(2, z),\n x0 = this.extent * x,\n y0 = this.extent * y,\n coords = this.loadGeometry(),\n type = VectorTileFeature.types[this.type],\n i, j;\n\n function project(line) {\n for (var j = 0; j < line.length; j++) {\n var p = line[j], y2 = 180 - (p.y + y0) * 360 / size;\n line[j] = [\n (p.x + x0) * 360 / size - 180,\n 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90\n ];\n }\n }\n\n switch (this.type) {\n case 1:\n var points = [];\n for (i = 0; i < coords.length; i++) {\n points[i] = coords[i][0];\n }\n coords = points;\n project(coords);\n break;\n\n case 2:\n for (i = 0; i < coords.length; i++) {\n project(coords[i]);\n }\n break;\n\n case 3:\n coords = classifyRings(coords);\n for (i = 0; i < coords.length; i++) {\n for (j = 0; j < coords[i].length; j++) {\n project(coords[i][j]);\n }\n }\n break;\n }\n\n if (coords.length === 1) {\n coords = coords[0];\n } else {\n type = 'Multi' + type;\n }\n\n var result = {\n type: \"Feature\",\n geometry: {\n type: type,\n coordinates: coords\n },\n properties: this.properties\n };\n\n if ('id' in this) {\n result.id = this.id;\n }\n\n return result;\n};\n\n// classifies an array of rings into polygons with outer rings and holes\n\nfunction classifyRings(rings) {\n var len = rings.length;\n\n if (len <= 1) return [rings];\n\n var polygons = [],\n polygon,\n ccw;\n\n for (var i = 0; i < len; i++) {\n var area = signedArea(rings[i]);\n if (area === 0) continue;\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n\n } else {\n polygon.push(rings[i]);\n }\n }\n if (polygon) polygons.push(polygon);\n\n return polygons;\n}\n\nfunction signedArea(ring) {\n var sum = 0;\n for (var i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n","'use strict';\n\nvar VectorTileFeature = require('./vectortilefeature.js');\n\nmodule.exports = VectorTileLayer;\n\nfunction VectorTileLayer(pbf, end) {\n // Public\n this.version = 1;\n this.name = null;\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n}\n\nfunction readLayer(tag, layer, pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n}\n\nfunction readValueMessage(pbf) {\n var value = null,\n end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n var tag = pbf.readVarint() >> 3;\n\n value = tag === 1 ? pbf.readString() :\n tag === 2 ? pbf.readFloat() :\n tag === 3 ? pbf.readDouble() :\n tag === 4 ? pbf.readVarint64() :\n tag === 5 ? pbf.readVarint() :\n tag === 6 ? pbf.readSVarint() :\n tag === 7 ? pbf.readBoolean() : null;\n }\n\n return value;\n}\n\n// return feature `i` from this layer as a `VectorTileFeature`\nVectorTileLayer.prototype.feature = function(i) {\n if (i < 0 || i >= this._features.length) throw new Error('feature index out of bounds');\n\n this._pbf.pos = this._features[i];\n\n var end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);\n};\n","'use strict';\n\nvar VectorTileLayer = require('./vectortilelayer');\n\nmodule.exports = VectorTile;\n\nfunction VectorTile(pbf, end) {\n this.layers = pbf.readFields(readTile, {}, end);\n}\n\nfunction readTile(tag, layers, pbf) {\n if (tag === 3) {\n var layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length) layers[layer.name] = layer;\n }\n}\n\n","module.exports.VectorTile = require('./lib/vectortile.js');\nmodule.exports.VectorTileFeature = require('./lib/vectortilefeature.js');\nmodule.exports.VectorTileLayer = require('./lib/vectortilelayer.js');\n",null,null,null,null,null,null,null,null,null,null,null,null,"'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n",null,"\nexport default function potpack(boxes) {\n\n // calculate total box area and maximum box width\n let area = 0;\n let maxWidth = 0;\n\n for (const box of boxes) {\n area += box.w * box.h;\n maxWidth = Math.max(maxWidth, box.w);\n }\n\n // sort the boxes for insertion by height, descending\n boxes.sort((a, b) => b.h - a.h);\n\n // aim for a squarish resulting container,\n // slightly adjusted for sub-100% space utilization\n const startWidth = Math.max(Math.ceil(Math.sqrt(area / 0.95)), maxWidth);\n\n // start with a single empty space, unbounded at the bottom\n const spaces = [{x: 0, y: 0, w: startWidth, h: Infinity}];\n\n let width = 0;\n let height = 0;\n\n for (const box of boxes) {\n // look through spaces backwards so that we check smaller spaces first\n for (let i = spaces.length - 1; i >= 0; i--) {\n const space = spaces[i];\n\n // look for empty spaces that can accommodate the current box\n if (box.w > space.w || box.h > space.h) continue;\n\n // found the space; add the box to its top-left corner\n // |-------|-------|\n // | box | |\n // |_______| |\n // | space |\n // |_______________|\n box.x = space.x;\n box.y = space.y;\n\n height = Math.max(height, box.y + box.h);\n width = Math.max(width, box.x + box.w);\n\n if (box.w === space.w && box.h === space.h) {\n // space matches the box exactly; remove it\n const last = spaces.pop();\n if (i < spaces.length) spaces[i] = last;\n\n } else if (box.h === space.h) {\n // space matches the box height; update it accordingly\n // |-------|---------------|\n // | box | updated space |\n // |_______|_______________|\n space.x += box.w;\n space.w -= box.w;\n\n } else if (box.w === space.w) {\n // space matches the box width; update it accordingly\n // |---------------|\n // | box |\n // |_______________|\n // | updated space |\n // |_______________|\n space.y += box.h;\n space.h -= box.h;\n\n } else {\n // otherwise the box splits the space into two spaces\n // |-------|-----------|\n // | box | new space |\n // |_______|___________|\n // | updated space |\n // |___________________|\n spaces.push({\n x: space.x + box.w,\n y: space.y,\n w: space.w - box.w,\n h: box.h\n });\n space.y += box.h;\n space.h -= box.h;\n }\n break;\n }\n }\n\n return {\n w: width, // container width\n h: height, // container height\n fill: (area / (width * height)) || 0 // space utilization\n };\n}\n",null,null,null,null,null,null,null,null,"\nexport default class TinyQueue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"export { getURL, getTileBBox, getMercCoords };\n\n\n/**\n * getURL\n *\n * @param {String} baseUrl Base url of the WMS server\n * @param {String} layer Layer name\n * @param {Number} x Tile coordinate x\n * @param {Number} y Tile coordinate y\n * @param {Number} z Tile zoom\n * @param {Object} [options]\n * @param {String} [options.format='image/png']\n * @param {String} [options.service='WMS']\n * @param {String} [options.version='1.1.1']\n * @param {String} [options.request='GetMap']\n * @param {String} [options.srs='EPSG:3857']\n * @param {Number} [options.width='256']\n * @param {Number} [options.height='256']\n * @returns {String} url\n * @example\n * var baseUrl = 'http://geodata.state.nj.us/imagerywms/Natural2015';\n * var layer = 'Natural2015';\n * var url = whoots.getURL(baseUrl, layer, 154308, 197167, 19);\n */\nfunction getURL(baseUrl, layer, x, y, z, options) {\n options = options || {};\n\n var url = baseUrl + '?' + [\n 'bbox=' + getTileBBox(x, y, z),\n 'format=' + (options.format || 'image/png'),\n 'service=' + (options.service || 'WMS'),\n 'version=' + (options.version || '1.1.1'),\n 'request=' + (options.request || 'GetMap'),\n 'srs=' + (options.srs || 'EPSG:3857'),\n 'width=' + (options.width || 256),\n 'height=' + (options.height || 256),\n 'layers=' + layer\n ].join('&');\n\n return url;\n}\n\n\n/**\n * getTileBBox\n *\n * @param {Number} x Tile coordinate x\n * @param {Number} y Tile coordinate y\n * @param {Number} z Tile zoom\n * @returns {String} String of the bounding box\n */\nfunction getTileBBox(x, y, z) {\n // for Google/OSM tile scheme we need to alter the y\n y = (Math.pow(2, z) - y - 1);\n\n var min = getMercCoords(x * 256, y * 256, z),\n max = getMercCoords((x + 1) * 256, (y + 1) * 256, z);\n\n return min[0] + ',' + min[1] + ',' + max[0] + ',' + max[1];\n}\n\n\n/**\n * getMercCoords\n *\n * @param {Number} x Pixel coordinate x\n * @param {Number} y Pixel coordinate y\n * @param {Number} z Tile zoom\n * @returns {Array} [x, y]\n */\nfunction getMercCoords(x, y, z) {\n var resolution = (2 * Math.PI * 6378137 / 256) / Math.pow(2, z),\n merc_x = (x * resolution - 2 * Math.PI * 6378137 / 2.0),\n merc_y = (y * resolution - 2 * Math.PI * 6378137 / 2.0);\n\n return [merc_x, merc_y];\n}\n",null,null,null,null,null,null,null,null,null,"\nmodule.exports = rewind;\n\nfunction rewind(gj, outer) {\n var type = gj && gj.type, i;\n\n if (type === 'FeatureCollection') {\n for (i = 0; i < gj.features.length; i++) rewind(gj.features[i], outer);\n\n } else if (type === 'GeometryCollection') {\n for (i = 0; i < gj.geometries.length; i++) rewind(gj.geometries[i], outer);\n\n } else if (type === 'Feature') {\n rewind(gj.geometry, outer);\n\n } else if (type === 'Polygon') {\n rewindRings(gj.coordinates, outer);\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < gj.coordinates.length; i++) rewindRings(gj.coordinates[i], outer);\n }\n\n return gj;\n}\n\nfunction rewindRings(rings, outer) {\n if (rings.length === 0) return;\n\n rewindRing(rings[0], outer);\n for (var i = 1; i < rings.length; i++) {\n rewindRing(rings[i], !outer);\n }\n}\n\nfunction rewindRing(ring, dir) {\n var area = 0, err = 0;\n for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n var k = (ring[i][0] - ring[j][0]) * (ring[j][1] + ring[i][1]);\n var m = area + k;\n err += Math.abs(area) >= Math.abs(k) ? area - m + k : k - m + area;\n area = m;\n }\n if (area + err >= 0 !== !!dir) ring.reverse();\n}\n",null,"'use strict'\n\nvar Point = require('@mapbox/point-geometry')\nvar VectorTileFeature = require('@mapbox/vector-tile').VectorTileFeature\n\nmodule.exports = GeoJSONWrapper\n\n// conform to vectortile api\nfunction GeoJSONWrapper (features, options) {\n this.options = options || {}\n this.features = features\n this.length = features.length\n}\n\nGeoJSONWrapper.prototype.feature = function (i) {\n return new FeatureWrapper(this.features[i], this.options.extent)\n}\n\nfunction FeatureWrapper (feature, extent) {\n this.id = typeof feature.id === 'number' ? feature.id : undefined\n this.type = feature.type\n this.rawGeometry = feature.type === 1 ? [feature.geometry] : feature.geometry\n this.properties = feature.tags\n this.extent = extent || 4096\n}\n\nFeatureWrapper.prototype.loadGeometry = function () {\n var rings = this.rawGeometry\n this.geometry = []\n\n for (var i = 0; i < rings.length; i++) {\n var ring = rings[i]\n var newRing = []\n for (var j = 0; j < ring.length; j++) {\n newRing.push(new Point(ring[j][0], ring[j][1]))\n }\n this.geometry.push(newRing)\n }\n return this.geometry\n}\n\nFeatureWrapper.prototype.bbox = function () {\n if (!this.geometry) this.loadGeometry()\n\n var rings = this.geometry\n var x1 = Infinity\n var x2 = -Infinity\n var y1 = Infinity\n var y2 = -Infinity\n\n for (var i = 0; i < rings.length; i++) {\n var ring = rings[i]\n\n for (var j = 0; j < ring.length; j++) {\n var coord = ring[j]\n\n x1 = Math.min(x1, coord.x)\n x2 = Math.max(x2, coord.x)\n y1 = Math.min(y1, coord.y)\n y2 = Math.max(y2, coord.y)\n }\n }\n\n return [x1, y1, x2, y2]\n}\n\nFeatureWrapper.prototype.toGeoJSON = VectorTileFeature.prototype.toGeoJSON\n","var Pbf = require('pbf')\nvar GeoJSONWrapper = require('./lib/geojson_wrapper')\n\nmodule.exports = fromVectorTileJs\nmodule.exports.fromVectorTileJs = fromVectorTileJs\nmodule.exports.fromGeojsonVt = fromGeojsonVt\nmodule.exports.GeoJSONWrapper = GeoJSONWrapper\n\n/**\n * Serialize a vector-tile-js-created tile to pbf\n *\n * @param {Object} tile\n * @return {Buffer} uncompressed, pbf-serialized tile data\n */\nfunction fromVectorTileJs (tile) {\n var out = new Pbf()\n writeTile(tile, out)\n return out.finish()\n}\n\n/**\n * Serialized a geojson-vt-created tile to pbf.\n *\n * @param {Object} layers - An object mapping layer names to geojson-vt-created vector tile objects\n * @param {Object} [options] - An object specifying the vector-tile specification version and extent that were used to create `layers`.\n * @param {Number} [options.version=1] - Version of vector-tile spec used\n * @param {Number} [options.extent=4096] - Extent of the vector tile\n * @return {Buffer} uncompressed, pbf-serialized tile data\n */\nfunction fromGeojsonVt (layers, options) {\n options = options || {}\n var l = {}\n for (var k in layers) {\n l[k] = new GeoJSONWrapper(layers[k].features, options)\n l[k].name = k\n l[k].version = options.version\n l[k].extent = options.extent\n }\n return fromVectorTileJs({ layers: l })\n}\n\nfunction writeTile (tile, pbf) {\n for (var key in tile.layers) {\n pbf.writeMessage(3, writeLayer, tile.layers[key])\n }\n}\n\nfunction writeLayer (layer, pbf) {\n pbf.writeVarintField(15, layer.version || 1)\n pbf.writeStringField(1, layer.name || '')\n pbf.writeVarintField(5, layer.extent || 4096)\n\n var i\n var context = {\n keys: [],\n values: [],\n keycache: {},\n valuecache: {}\n }\n\n for (i = 0; i < layer.length; i++) {\n context.feature = layer.feature(i)\n pbf.writeMessage(2, writeFeature, context)\n }\n\n var keys = context.keys\n for (i = 0; i < keys.length; i++) {\n pbf.writeStringField(3, keys[i])\n }\n\n var values = context.values\n for (i = 0; i < values.length; i++) {\n pbf.writeMessage(4, writeValue, values[i])\n }\n}\n\nfunction writeFeature (context, pbf) {\n var feature = context.feature\n\n if (feature.id !== undefined) {\n pbf.writeVarintField(1, feature.id)\n }\n\n pbf.writeMessage(2, writeProperties, context)\n pbf.writeVarintField(3, feature.type)\n pbf.writeMessage(4, writeGeometry, feature)\n}\n\nfunction writeProperties (context, pbf) {\n var feature = context.feature\n var keys = context.keys\n var values = context.values\n var keycache = context.keycache\n var valuecache = context.valuecache\n\n for (var key in feature.properties) {\n var value = feature.properties[key]\n\n var keyIndex = keycache[key]\n if (value === null) continue // don't encode null value properties\n\n if (typeof keyIndex === 'undefined') {\n keys.push(key)\n keyIndex = keys.length - 1\n keycache[key] = keyIndex\n }\n pbf.writeVarint(keyIndex)\n\n var type = typeof value\n if (type !== 'string' && type !== 'boolean' && type !== 'number') {\n value = JSON.stringify(value)\n }\n var valueKey = type + ':' + value\n var valueIndex = valuecache[valueKey]\n if (typeof valueIndex === 'undefined') {\n values.push(value)\n valueIndex = values.length - 1\n valuecache[valueKey] = valueIndex\n }\n pbf.writeVarint(valueIndex)\n }\n}\n\nfunction command (cmd, length) {\n return (length << 3) + (cmd & 0x7)\n}\n\nfunction zigzag (num) {\n return (num << 1) ^ (num >> 31)\n}\n\nfunction writeGeometry (feature, pbf) {\n var geometry = feature.loadGeometry()\n var type = feature.type\n var x = 0\n var y = 0\n var rings = geometry.length\n for (var r = 0; r < rings; r++) {\n var ring = geometry[r]\n var count = 1\n if (type === 1) {\n count = ring.length\n }\n pbf.writeVarint(command(1, count)) // moveto\n // do not write polygon closing path as lineto\n var lineCount = type === 3 ? ring.length - 1 : ring.length\n for (var i = 0; i < lineCount; i++) {\n if (i === 1 && type !== 1) {\n pbf.writeVarint(command(2, lineCount - 1)) // lineto\n }\n var dx = ring[i].x - x\n var dy = ring[i].y - y\n pbf.writeVarint(zigzag(dx))\n pbf.writeVarint(zigzag(dy))\n x += dx\n y += dy\n }\n if (type === 3) {\n pbf.writeVarint(command(7, 1)) // closepath\n }\n }\n}\n\nfunction writeValue (value, pbf) {\n var type = typeof value\n if (type === 'string') {\n pbf.writeStringField(1, value)\n } else if (type === 'boolean') {\n pbf.writeBooleanField(7, value)\n } else if (type === 'number') {\n if (value % 1 !== 0) {\n pbf.writeDoubleField(3, value)\n } else if (value < 0) {\n pbf.writeSVarintField(6, value)\n } else {\n pbf.writeVarintField(5, value)\n }\n }\n}\n","\nexport default function sortKD(ids, coords, nodeSize, left, right, depth) {\n if (right - left <= nodeSize) return;\n\n const m = (left + right) >> 1;\n\n select(ids, coords, m, left, right, depth % 2);\n\n sortKD(ids, coords, nodeSize, left, m - 1, depth + 1);\n sortKD(ids, coords, nodeSize, m + 1, right, depth + 1);\n}\n\nfunction select(ids, coords, k, left, right, inc) {\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n select(ids, coords, k, newLeft, newRight, inc);\n }\n\n const t = coords[2 * k + inc];\n let i = left;\n let j = right;\n\n swapItem(ids, coords, left, k);\n if (coords[2 * right + inc] > t) swapItem(ids, coords, left, right);\n\n while (i < j) {\n swapItem(ids, coords, i, j);\n i++;\n j--;\n while (coords[2 * i + inc] < t) i++;\n while (coords[2 * j + inc] > t) j--;\n }\n\n if (coords[2 * left + inc] === t) swapItem(ids, coords, left, j);\n else {\n j++;\n swapItem(ids, coords, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swapItem(ids, coords, i, j) {\n swap(ids, i, j);\n swap(coords, 2 * i, 2 * j);\n swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n","\nexport default function within(ids, coords, qx, qy, r, nodeSize) {\n const stack = [0, ids.length - 1, 0];\n const result = [];\n const r2 = r * r;\n\n while (stack.length) {\n const axis = stack.pop();\n const right = stack.pop();\n const left = stack.pop();\n\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n }\n continue;\n }\n\n const m = Math.floor((left + right) / 2);\n\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n\n if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n const nextAxis = (axis + 1) % 2;\n\n if (axis === 0 ? qx - r <= x : qy - r <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(nextAxis);\n }\n if (axis === 0 ? qx + r >= x : qy + r >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(nextAxis);\n }\n }\n\n return result;\n}\n\nfunction sqDist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n","\nimport sort from './sort';\nimport range from './range';\nimport within from './within';\n\nconst defaultGetX = p => p[0];\nconst defaultGetY = p => p[1];\n\nexport default class KDBush {\n constructor(points, getX = defaultGetX, getY = defaultGetY, nodeSize = 64, ArrayType = Float64Array) {\n this.nodeSize = nodeSize;\n this.points = points;\n\n const IndexArrayType = points.length < 65536 ? Uint16Array : Uint32Array;\n\n const ids = this.ids = new IndexArrayType(points.length);\n const coords = this.coords = new ArrayType(points.length * 2);\n\n for (let i = 0; i < points.length; i++) {\n ids[i] = i;\n coords[2 * i] = getX(points[i]);\n coords[2 * i + 1] = getY(points[i]);\n }\n\n sort(ids, coords, nodeSize, 0, ids.length - 1, 0);\n }\n\n range(minX, minY, maxX, maxY) {\n return range(this.ids, this.coords, minX, minY, maxX, maxY, this.nodeSize);\n }\n\n within(x, y, r) {\n return within(this.ids, this.coords, x, y, r, this.nodeSize);\n }\n}\n","\nexport default function range(ids, coords, minX, minY, maxX, maxY, nodeSize) {\n const stack = [0, ids.length - 1, 0];\n const result = [];\n let x, y;\n\n while (stack.length) {\n const axis = stack.pop();\n const right = stack.pop();\n const left = stack.pop();\n\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n x = coords[2 * i];\n y = coords[2 * i + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n }\n continue;\n }\n\n const m = Math.floor((left + right) / 2);\n\n x = coords[2 * m];\n y = coords[2 * m + 1];\n\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n const nextAxis = (axis + 1) % 2;\n\n if (axis === 0 ? minX <= x : minY <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(nextAxis);\n }\n if (axis === 0 ? maxX >= x : maxY >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(nextAxis);\n }\n }\n\n return result;\n}\n","\nimport KDBush from 'kdbush';\n\nconst defaultOptions = {\n minZoom: 0, // min zoom to generate clusters on\n maxZoom: 16, // max zoom level to cluster the points on\n minPoints: 2, // minimum points to form a cluster\n radius: 40, // cluster radius in pixels\n extent: 512, // tile extent (radius is calculated relative to it)\n nodeSize: 64, // size of the KD-tree leaf node, affects performance\n log: false, // whether to log timing info\n\n // whether to generate numeric ids for input features (in vector tiles)\n generateId: false,\n\n // a reduce function for calculating custom cluster properties\n reduce: null, // (accumulated, props) => { accumulated.sum += props.sum; }\n\n // properties to use for individual points when running the reducer\n map: props => props // props => ({sum: props.my_value})\n};\n\nconst fround = Math.fround || (tmp => ((x) => { tmp[0] = +x; return tmp[0]; }))(new Float32Array(1));\n\nexport default class Supercluster {\n constructor(options) {\n this.options = extend(Object.create(defaultOptions), options);\n this.trees = new Array(this.options.maxZoom + 1);\n }\n\n load(points) {\n const {log, minZoom, maxZoom, nodeSize} = this.options;\n\n if (log) console.time('total time');\n\n const timerId = `prepare ${ points.length } points`;\n if (log) console.time(timerId);\n\n this.points = points;\n\n // generate a cluster object for each point and index input points into a KD-tree\n let clusters = [];\n for (let i = 0; i < points.length; i++) {\n if (!points[i].geometry) continue;\n clusters.push(createPointCluster(points[i], i));\n }\n this.trees[maxZoom + 1] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);\n\n if (log) console.timeEnd(timerId);\n\n // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n // results in a cluster hierarchy across zoom levels\n for (let z = maxZoom; z >= minZoom; z--) {\n const now = +Date.now();\n\n // create a new set of clusters for the zoom and index them with a KD-tree\n clusters = this._cluster(clusters, z);\n this.trees[z] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);\n\n if (log) console.log('z%d: %d clusters in %dms', z, clusters.length, +Date.now() - now);\n }\n\n if (log) console.timeEnd('total time');\n\n return this;\n }\n\n getClusters(bbox, zoom) {\n let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n const minLat = Math.max(-90, Math.min(90, bbox[1]));\n let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n const maxLat = Math.max(-90, Math.min(90, bbox[3]));\n\n if (bbox[2] - bbox[0] >= 360) {\n minLng = -180;\n maxLng = 180;\n } else if (minLng > maxLng) {\n const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n return easternHem.concat(westernHem);\n }\n\n const tree = this.trees[this._limitZoom(zoom)];\n const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n const clusters = [];\n for (const id of ids) {\n const c = tree.points[id];\n clusters.push(c.numPoints ? getClusterJSON(c) : this.points[c.index]);\n }\n return clusters;\n }\n\n getChildren(clusterId) {\n const originId = this._getOriginId(clusterId);\n const originZoom = this._getOriginZoom(clusterId);\n const errorMsg = 'No cluster with the specified id.';\n\n const index = this.trees[originZoom];\n if (!index) throw new Error(errorMsg);\n\n const origin = index.points[originId];\n if (!origin) throw new Error(errorMsg);\n\n const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n const ids = index.within(origin.x, origin.y, r);\n const children = [];\n for (const id of ids) {\n const c = index.points[id];\n if (c.parentId === clusterId) {\n children.push(c.numPoints ? getClusterJSON(c) : this.points[c.index]);\n }\n }\n\n if (children.length === 0) throw new Error(errorMsg);\n\n return children;\n }\n\n getLeaves(clusterId, limit, offset) {\n limit = limit || 10;\n offset = offset || 0;\n\n const leaves = [];\n this._appendLeaves(leaves, clusterId, limit, offset, 0);\n\n return leaves;\n }\n\n getTile(z, x, y) {\n const tree = this.trees[this._limitZoom(z)];\n const z2 = Math.pow(2, z);\n const {extent, radius} = this.options;\n const p = radius / extent;\n const top = (y - p) / z2;\n const bottom = (y + 1 + p) / z2;\n\n const tile = {\n features: []\n };\n\n this._addTileFeatures(\n tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom),\n tree.points, x, y, z2, tile);\n\n if (x === 0) {\n this._addTileFeatures(\n tree.range(1 - p / z2, top, 1, bottom),\n tree.points, z2, y, z2, tile);\n }\n if (x === z2 - 1) {\n this._addTileFeatures(\n tree.range(0, top, p / z2, bottom),\n tree.points, -1, y, z2, tile);\n }\n\n return tile.features.length ? tile : null;\n }\n\n getClusterExpansionZoom(clusterId) {\n let expansionZoom = this._getOriginZoom(clusterId) - 1;\n while (expansionZoom <= this.options.maxZoom) {\n const children = this.getChildren(clusterId);\n expansionZoom++;\n if (children.length !== 1) break;\n clusterId = children[0].properties.cluster_id;\n }\n return expansionZoom;\n }\n\n _appendLeaves(result, clusterId, limit, offset, skipped) {\n const children = this.getChildren(clusterId);\n\n for (const child of children) {\n const props = child.properties;\n\n if (props && props.cluster) {\n if (skipped + props.point_count <= offset) {\n // skip the whole cluster\n skipped += props.point_count;\n } else {\n // enter the cluster\n skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n // exit the cluster\n }\n } else if (skipped < offset) {\n // skip a single point\n skipped++;\n } else {\n // add a single point\n result.push(child);\n }\n if (result.length === limit) break;\n }\n\n return skipped;\n }\n\n _addTileFeatures(ids, points, x, y, z2, tile) {\n for (const i of ids) {\n const c = points[i];\n const isCluster = c.numPoints;\n\n let tags, px, py;\n if (isCluster) {\n tags = getClusterProperties(c);\n px = c.x;\n py = c.y;\n } else {\n const p = this.points[c.index];\n tags = p.properties;\n px = lngX(p.geometry.coordinates[0]);\n py = latY(p.geometry.coordinates[1]);\n }\n\n const f = {\n type: 1,\n geometry: [[\n Math.round(this.options.extent * (px * z2 - x)),\n Math.round(this.options.extent * (py * z2 - y))\n ]],\n tags\n };\n\n // assign id\n let id;\n if (isCluster) {\n id = c.id;\n } else if (this.options.generateId) {\n // optionally generate id\n id = c.index;\n } else if (this.points[c.index].id) {\n // keep id if already assigned\n id = this.points[c.index].id;\n }\n\n if (id !== undefined) f.id = id;\n\n tile.features.push(f);\n }\n }\n\n _limitZoom(z) {\n return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1));\n }\n\n _cluster(points, zoom) {\n const clusters = [];\n const {radius, extent, reduce, minPoints} = this.options;\n const r = radius / (extent * Math.pow(2, zoom));\n\n // loop through each point\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n // if we've already visited the point at this zoom level, skip it\n if (p.zoom <= zoom) continue;\n p.zoom = zoom;\n\n // find all nearby points\n const tree = this.trees[zoom + 1];\n const neighborIds = tree.within(p.x, p.y, r);\n\n const numPointsOrigin = p.numPoints || 1;\n let numPoints = numPointsOrigin;\n\n // count the number of points in a potential cluster\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n // filter out neighbors that are already processed\n if (b.zoom > zoom) numPoints += b.numPoints || 1;\n }\n\n // if there were neighbors to merge, and there are enough points to form a cluster\n if (numPoints > numPointsOrigin && numPoints >= minPoints) {\n let wx = p.x * numPointsOrigin;\n let wy = p.y * numPointsOrigin;\n\n let clusterProperties = reduce && numPointsOrigin > 1 ? this._map(p, true) : null;\n\n // encode both zoom and point index on which the cluster originated -- offset by total length of features\n const id = (i << 5) + (zoom + 1) + this.points.length;\n\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n\n if (b.zoom <= zoom) continue;\n b.zoom = zoom; // save the zoom (so it doesn't get processed twice)\n\n const numPoints2 = b.numPoints || 1;\n wx += b.x * numPoints2; // accumulate coordinates for calculating weighted center\n wy += b.y * numPoints2;\n\n b.parentId = id;\n\n if (reduce) {\n if (!clusterProperties) clusterProperties = this._map(p, true);\n reduce(clusterProperties, this._map(b));\n }\n }\n\n p.parentId = id;\n clusters.push(createCluster(wx / numPoints, wy / numPoints, id, numPoints, clusterProperties));\n\n } else { // left points as unclustered\n clusters.push(p);\n\n if (numPoints > 1) {\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n if (b.zoom <= zoom) continue;\n b.zoom = zoom;\n clusters.push(b);\n }\n }\n }\n }\n\n return clusters;\n }\n\n // get index of the point from which the cluster originated\n _getOriginId(clusterId) {\n return (clusterId - this.points.length) >> 5;\n }\n\n // get zoom of the point from which the cluster originated\n _getOriginZoom(clusterId) {\n return (clusterId - this.points.length) % 32;\n }\n\n _map(point, clone) {\n if (point.numPoints) {\n return clone ? extend({}, point.properties) : point.properties;\n }\n const original = this.points[point.index].properties;\n const result = this.options.map(original);\n return clone && result === original ? extend({}, result) : result;\n }\n}\n\nfunction createCluster(x, y, id, numPoints, properties) {\n return {\n x: fround(x), // weighted cluster center; round for consistency with Float32Array index\n y: fround(y),\n zoom: Infinity, // the last zoom the cluster was processed at\n id, // encodes index of the first child of the cluster and its zoom level\n parentId: -1, // parent cluster id\n numPoints,\n properties\n };\n}\n\nfunction createPointCluster(p, id) {\n const [x, y] = p.geometry.coordinates;\n return {\n x: fround(lngX(x)), // projected point coordinates\n y: fround(latY(y)),\n zoom: Infinity, // the last zoom the point was processed at\n index: id, // index of the source feature in the original input array,\n parentId: -1 // parent cluster id\n };\n}\n\nfunction getClusterJSON(cluster) {\n return {\n type: 'Feature',\n id: cluster.id,\n properties: getClusterProperties(cluster),\n geometry: {\n type: 'Point',\n coordinates: [xLng(cluster.x), yLat(cluster.y)]\n }\n };\n}\n\nfunction getClusterProperties(cluster) {\n const count = cluster.numPoints;\n const abbrev =\n count >= 10000 ? `${Math.round(count / 1000) }k` :\n count >= 1000 ? `${Math.round(count / 100) / 10 }k` : count;\n return extend(extend({}, cluster.properties), {\n cluster: true,\n cluster_id: cluster.id,\n point_count: count,\n point_count_abbreviated: abbrev\n });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n const sin = Math.sin(lat * Math.PI / 180);\n const y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n const y2 = (180 - y * 360) * Math.PI / 180;\n return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n\nfunction extend(dest, src) {\n for (const id in src) dest[id] = src[id];\n return dest;\n}\n\nfunction getX(p) {\n return p.x;\n}\nfunction getY(p) {\n return p.y;\n}\n","\n// calculate simplification data using optimized Douglas-Peucker algorithm\n\nexport default function simplify(coords, first, last, sqTolerance) {\n var maxSqDist = sqTolerance;\n var mid = (last - first) >> 1;\n var minPosToMid = last - first;\n var index;\n\n var ax = coords[first];\n var ay = coords[first + 1];\n var bx = coords[last];\n var by = coords[last + 1];\n\n for (var i = first + 3; i < last; i += 3) {\n var d = getSqSegDist(coords[i], coords[i + 1], ax, ay, bx, by);\n\n if (d > maxSqDist) {\n index = i;\n maxSqDist = d;\n\n } else if (d === maxSqDist) {\n // a workaround to ensure we choose a pivot close to the middle of the list,\n // reducing recursion depth, for certain degenerate inputs\n // https://github.com/mapbox/geojson-vt/issues/104\n var posToMid = Math.abs(i - mid);\n if (posToMid < minPosToMid) {\n index = i;\n minPosToMid = posToMid;\n }\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 3) simplify(coords, first, index, sqTolerance);\n coords[index + 2] = maxSqDist;\n if (last - index > 3) simplify(coords, index, last, sqTolerance);\n }\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(px, py, x, y, bx, by) {\n\n var dx = bx - x;\n var dy = by - y;\n\n if (dx !== 0 || dy !== 0) {\n\n var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = bx;\n y = by;\n\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = px - x;\n dy = py - y;\n\n return dx * dx + dy * dy;\n}\n","\nexport default function createFeature(id, type, geom, tags) {\n var feature = {\n id: typeof id === 'undefined' ? null : id,\n type: type,\n geometry: geom,\n tags: tags,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n calcBBox(feature);\n return feature;\n}\n\nfunction calcBBox(feature) {\n var geom = feature.geometry;\n var type = feature.type;\n\n if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n calcLineBBox(feature, geom);\n\n } else if (type === 'Polygon' || type === 'MultiLineString') {\n for (var i = 0; i < geom.length; i++) {\n calcLineBBox(feature, geom[i]);\n }\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < geom.length; i++) {\n for (var j = 0; j < geom[i].length; j++) {\n calcLineBBox(feature, geom[i][j]);\n }\n }\n }\n}\n\nfunction calcLineBBox(feature, geom) {\n for (var i = 0; i < geom.length; i += 3) {\n feature.minX = Math.min(feature.minX, geom[i]);\n feature.minY = Math.min(feature.minY, geom[i + 1]);\n feature.maxX = Math.max(feature.maxX, geom[i]);\n feature.maxY = Math.max(feature.maxY, geom[i + 1]);\n }\n}\n","\nimport simplify from './simplify';\nimport createFeature from './feature';\n\n// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data\n\nexport default function convert(data, options) {\n var features = [];\n if (data.type === 'FeatureCollection') {\n for (var i = 0; i < data.features.length; i++) {\n convertFeature(features, data.features[i], options, i);\n }\n\n } else if (data.type === 'Feature') {\n convertFeature(features, data, options);\n\n } else {\n // single geometry or a geometry collection\n convertFeature(features, {geometry: data}, options);\n }\n\n return features;\n}\n\nfunction convertFeature(features, geojson, options, index) {\n if (!geojson.geometry) return;\n\n var coords = geojson.geometry.coordinates;\n var type = geojson.geometry.type;\n var tolerance = Math.pow(options.tolerance / ((1 << options.maxZoom) * options.extent), 2);\n var geometry = [];\n var id = geojson.id;\n if (options.promoteId) {\n id = geojson.properties[options.promoteId];\n } else if (options.generateId) {\n id = index || 0;\n }\n if (type === 'Point') {\n convertPoint(coords, geometry);\n\n } else if (type === 'MultiPoint') {\n for (var i = 0; i < coords.length; i++) {\n convertPoint(coords[i], geometry);\n }\n\n } else if (type === 'LineString') {\n convertLine(coords, geometry, tolerance, false);\n\n } else if (type === 'MultiLineString') {\n if (options.lineMetrics) {\n // explode into linestrings to be able to track metrics\n for (i = 0; i < coords.length; i++) {\n geometry = [];\n convertLine(coords[i], geometry, tolerance, false);\n features.push(createFeature(id, 'LineString', geometry, geojson.properties));\n }\n return;\n } else {\n convertLines(coords, geometry, tolerance, false);\n }\n\n } else if (type === 'Polygon') {\n convertLines(coords, geometry, tolerance, true);\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < coords.length; i++) {\n var polygon = [];\n convertLines(coords[i], polygon, tolerance, true);\n geometry.push(polygon);\n }\n } else if (type === 'GeometryCollection') {\n for (i = 0; i < geojson.geometry.geometries.length; i++) {\n convertFeature(features, {\n id: id,\n geometry: geojson.geometry.geometries[i],\n properties: geojson.properties\n }, options, index);\n }\n return;\n } else {\n throw new Error('Input data is not a valid GeoJSON object.');\n }\n\n features.push(createFeature(id, type, geometry, geojson.properties));\n}\n\nfunction convertPoint(coords, out) {\n out.push(projectX(coords[0]));\n out.push(projectY(coords[1]));\n out.push(0);\n}\n\nfunction convertLine(ring, out, tolerance, isPolygon) {\n var x0, y0;\n var size = 0;\n\n for (var j = 0; j < ring.length; j++) {\n var x = projectX(ring[j][0]);\n var y = projectY(ring[j][1]);\n\n out.push(x);\n out.push(y);\n out.push(0);\n\n if (j > 0) {\n if (isPolygon) {\n size += (x0 * y - x * y0) / 2; // area\n } else {\n size += Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)); // length\n }\n }\n x0 = x;\n y0 = y;\n }\n\n var last = out.length - 3;\n out[2] = 1;\n simplify(out, 0, last, tolerance);\n out[last + 2] = 1;\n\n out.size = Math.abs(size);\n out.start = 0;\n out.end = out.size;\n}\n\nfunction convertLines(rings, out, tolerance, isPolygon) {\n for (var i = 0; i < rings.length; i++) {\n var geom = [];\n convertLine(rings[i], geom, tolerance, isPolygon);\n out.push(geom);\n }\n}\n\nfunction projectX(x) {\n return x / 360 + 0.5;\n}\n\nfunction projectY(y) {\n var sin = Math.sin(y * Math.PI / 180);\n var y2 = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI;\n return y2 < 0 ? 0 : y2 > 1 ? 1 : y2;\n}\n","\nimport createFeature from './feature';\n\n/* clip features between two axis-parallel lines:\n * | |\n * ___|___ | /\n * / | \\____|____/\n * | |\n */\n\nexport default function clip(features, scale, k1, k2, axis, minAll, maxAll, options) {\n\n k1 /= scale;\n k2 /= scale;\n\n if (minAll >= k1 && maxAll < k2) return features; // trivial accept\n else if (maxAll < k1 || minAll >= k2) return null; // trivial reject\n\n var clipped = [];\n\n for (var i = 0; i < features.length; i++) {\n\n var feature = features[i];\n var geometry = feature.geometry;\n var type = feature.type;\n\n var min = axis === 0 ? feature.minX : feature.minY;\n var max = axis === 0 ? feature.maxX : feature.maxY;\n\n if (min >= k1 && max < k2) { // trivial accept\n clipped.push(feature);\n continue;\n } else if (max < k1 || min >= k2) { // trivial reject\n continue;\n }\n\n var newGeometry = [];\n\n if (type === 'Point' || type === 'MultiPoint') {\n clipPoints(geometry, newGeometry, k1, k2, axis);\n\n } else if (type === 'LineString') {\n clipLine(geometry, newGeometry, k1, k2, axis, false, options.lineMetrics);\n\n } else if (type === 'MultiLineString') {\n clipLines(geometry, newGeometry, k1, k2, axis, false);\n\n } else if (type === 'Polygon') {\n clipLines(geometry, newGeometry, k1, k2, axis, true);\n\n } else if (type === 'MultiPolygon') {\n for (var j = 0; j < geometry.length; j++) {\n var polygon = [];\n clipLines(geometry[j], polygon, k1, k2, axis, true);\n if (polygon.length) {\n newGeometry.push(polygon);\n }\n }\n }\n\n if (newGeometry.length) {\n if (options.lineMetrics && type === 'LineString') {\n for (j = 0; j < newGeometry.length; j++) {\n clipped.push(createFeature(feature.id, type, newGeometry[j], feature.tags));\n }\n continue;\n }\n\n if (type === 'LineString' || type === 'MultiLineString') {\n if (newGeometry.length === 1) {\n type = 'LineString';\n newGeometry = newGeometry[0];\n } else {\n type = 'MultiLineString';\n }\n }\n if (type === 'Point' || type === 'MultiPoint') {\n type = newGeometry.length === 3 ? 'Point' : 'MultiPoint';\n }\n\n clipped.push(createFeature(feature.id, type, newGeometry, feature.tags));\n }\n }\n\n return clipped.length ? clipped : null;\n}\n\nfunction clipPoints(geom, newGeom, k1, k2, axis) {\n for (var i = 0; i < geom.length; i += 3) {\n var a = geom[i + axis];\n\n if (a >= k1 && a <= k2) {\n newGeom.push(geom[i]);\n newGeom.push(geom[i + 1]);\n newGeom.push(geom[i + 2]);\n }\n }\n}\n\nfunction clipLine(geom, newGeom, k1, k2, axis, isPolygon, trackMetrics) {\n\n var slice = newSlice(geom);\n var intersect = axis === 0 ? intersectX : intersectY;\n var len = geom.start;\n var segLen, t;\n\n for (var i = 0; i < geom.length - 3; i += 3) {\n var ax = geom[i];\n var ay = geom[i + 1];\n var az = geom[i + 2];\n var bx = geom[i + 3];\n var by = geom[i + 4];\n var a = axis === 0 ? ax : ay;\n var b = axis === 0 ? bx : by;\n var exited = false;\n\n if (trackMetrics) segLen = Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2));\n\n if (a < k1) {\n // ---|--> | (line enters the clip region from the left)\n if (b > k1) {\n t = intersect(slice, ax, ay, bx, by, k1);\n if (trackMetrics) slice.start = len + segLen * t;\n }\n } else if (a > k2) {\n // | <--|--- (line enters the clip region from the right)\n if (b < k2) {\n t = intersect(slice, ax, ay, bx, by, k2);\n if (trackMetrics) slice.start = len + segLen * t;\n }\n } else {\n addPoint(slice, ax, ay, az);\n }\n if (b < k1 && a >= k1) {\n // <--|--- | or <--|-----|--- (line exits the clip region on the left)\n t = intersect(slice, ax, ay, bx, by, k1);\n exited = true;\n }\n if (b > k2 && a <= k2) {\n // | ---|--> or ---|-----|--> (line exits the clip region on the right)\n t = intersect(slice, ax, ay, bx, by, k2);\n exited = true;\n }\n\n if (!isPolygon && exited) {\n if (trackMetrics) slice.end = len + segLen * t;\n newGeom.push(slice);\n slice = newSlice(geom);\n }\n\n if (trackMetrics) len += segLen;\n }\n\n // add the last point\n var last = geom.length - 3;\n ax = geom[last];\n ay = geom[last + 1];\n az = geom[last + 2];\n a = axis === 0 ? ax : ay;\n if (a >= k1 && a <= k2) addPoint(slice, ax, ay, az);\n\n // close the polygon if its endpoints are not the same after clipping\n last = slice.length - 3;\n if (isPolygon && last >= 3 && (slice[last] !== slice[0] || slice[last + 1] !== slice[1])) {\n addPoint(slice, slice[0], slice[1], slice[2]);\n }\n\n // add the final slice\n if (slice.length) {\n newGeom.push(slice);\n }\n}\n\nfunction newSlice(line) {\n var slice = [];\n slice.size = line.size;\n slice.start = line.start;\n slice.end = line.end;\n return slice;\n}\n\nfunction clipLines(geom, newGeom, k1, k2, axis, isPolygon) {\n for (var i = 0; i < geom.length; i++) {\n clipLine(geom[i], newGeom, k1, k2, axis, isPolygon, false);\n }\n}\n\nfunction addPoint(out, x, y, z) {\n out.push(x);\n out.push(y);\n out.push(z);\n}\n\nfunction intersectX(out, ax, ay, bx, by, x) {\n var t = (x - ax) / (bx - ax);\n out.push(x);\n out.push(ay + (by - ay) * t);\n out.push(1);\n return t;\n}\n\nfunction intersectY(out, ax, ay, bx, by, y) {\n var t = (y - ay) / (by - ay);\n out.push(ax + (bx - ax) * t);\n out.push(y);\n out.push(1);\n return t;\n}\n","\nimport clip from './clip';\nimport createFeature from './feature';\n\nexport default function wrap(features, options) {\n var buffer = options.buffer / options.extent;\n var merged = features;\n var left = clip(features, 1, -1 - buffer, buffer, 0, -1, 2, options); // left world copy\n var right = clip(features, 1, 1 - buffer, 2 + buffer, 0, -1, 2, options); // right world copy\n\n if (left || right) {\n merged = clip(features, 1, -buffer, 1 + buffer, 0, -1, 2, options) || []; // center world copy\n\n if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center\n if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center\n }\n\n return merged;\n}\n\nfunction shiftFeatureCoords(features, offset) {\n var newFeatures = [];\n\n for (var i = 0; i < features.length; i++) {\n var feature = features[i],\n type = feature.type;\n\n var newGeometry;\n\n if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n newGeometry = shiftCoords(feature.geometry, offset);\n\n } else if (type === 'MultiLineString' || type === 'Polygon') {\n newGeometry = [];\n for (var j = 0; j < feature.geometry.length; j++) {\n newGeometry.push(shiftCoords(feature.geometry[j], offset));\n }\n } else if (type === 'MultiPolygon') {\n newGeometry = [];\n for (j = 0; j < feature.geometry.length; j++) {\n var newPolygon = [];\n for (var k = 0; k < feature.geometry[j].length; k++) {\n newPolygon.push(shiftCoords(feature.geometry[j][k], offset));\n }\n newGeometry.push(newPolygon);\n }\n }\n\n newFeatures.push(createFeature(feature.id, type, newGeometry, feature.tags));\n }\n\n return newFeatures;\n}\n\nfunction shiftCoords(points, offset) {\n var newPoints = [];\n newPoints.size = points.size;\n\n if (points.start !== undefined) {\n newPoints.start = points.start;\n newPoints.end = points.end;\n }\n\n for (var i = 0; i < points.length; i += 3) {\n newPoints.push(points[i] + offset, points[i + 1], points[i + 2]);\n }\n return newPoints;\n}\n","\n// Transforms the coordinates of each feature in the given tile from\n// mercator-projected space into (extent x extent) tile space.\nexport default function transformTile(tile, extent) {\n if (tile.transformed) return tile;\n\n var z2 = 1 << tile.z,\n tx = tile.x,\n ty = tile.y,\n i, j, k;\n\n for (i = 0; i < tile.features.length; i++) {\n var feature = tile.features[i],\n geom = feature.geometry,\n type = feature.type;\n\n feature.geometry = [];\n\n if (type === 1) {\n for (j = 0; j < geom.length; j += 2) {\n feature.geometry.push(transformPoint(geom[j], geom[j + 1], extent, z2, tx, ty));\n }\n } else {\n for (j = 0; j < geom.length; j++) {\n var ring = [];\n for (k = 0; k < geom[j].length; k += 2) {\n ring.push(transformPoint(geom[j][k], geom[j][k + 1], extent, z2, tx, ty));\n }\n feature.geometry.push(ring);\n }\n }\n }\n\n tile.transformed = true;\n\n return tile;\n}\n\nfunction transformPoint(x, y, extent, z2, tx, ty) {\n return [\n Math.round(extent * (x * z2 - tx)),\n Math.round(extent * (y * z2 - ty))];\n}\n","\nexport default function createTile(features, z, tx, ty, options) {\n var tolerance = z === options.maxZoom ? 0 : options.tolerance / ((1 << z) * options.extent);\n var tile = {\n features: [],\n numPoints: 0,\n numSimplified: 0,\n numFeatures: 0,\n source: null,\n x: tx,\n y: ty,\n z: z,\n transformed: false,\n minX: 2,\n minY: 1,\n maxX: -1,\n maxY: 0\n };\n for (var i = 0; i < features.length; i++) {\n tile.numFeatures++;\n addFeature(tile, features[i], tolerance, options);\n\n var minX = features[i].minX;\n var minY = features[i].minY;\n var maxX = features[i].maxX;\n var maxY = features[i].maxY;\n\n if (minX < tile.minX) tile.minX = minX;\n if (minY < tile.minY) tile.minY = minY;\n if (maxX > tile.maxX) tile.maxX = maxX;\n if (maxY > tile.maxY) tile.maxY = maxY;\n }\n return tile;\n}\n\nfunction addFeature(tile, feature, tolerance, options) {\n\n var geom = feature.geometry,\n type = feature.type,\n simplified = [];\n\n if (type === 'Point' || type === 'MultiPoint') {\n for (var i = 0; i < geom.length; i += 3) {\n simplified.push(geom[i]);\n simplified.push(geom[i + 1]);\n tile.numPoints++;\n tile.numSimplified++;\n }\n\n } else if (type === 'LineString') {\n addLine(simplified, geom, tile, tolerance, false, false);\n\n } else if (type === 'MultiLineString' || type === 'Polygon') {\n for (i = 0; i < geom.length; i++) {\n addLine(simplified, geom[i], tile, tolerance, type === 'Polygon', i === 0);\n }\n\n } else if (type === 'MultiPolygon') {\n\n for (var k = 0; k < geom.length; k++) {\n var polygon = geom[k];\n for (i = 0; i < polygon.length; i++) {\n addLine(simplified, polygon[i], tile, tolerance, true, i === 0);\n }\n }\n }\n\n if (simplified.length) {\n var tags = feature.tags || null;\n if (type === 'LineString' && options.lineMetrics) {\n tags = {};\n for (var key in feature.tags) tags[key] = feature.tags[key];\n tags['mapbox_clip_start'] = geom.start / geom.size;\n tags['mapbox_clip_end'] = geom.end / geom.size;\n }\n var tileFeature = {\n geometry: simplified,\n type: type === 'Polygon' || type === 'MultiPolygon' ? 3 :\n type === 'LineString' || type === 'MultiLineString' ? 2 : 1,\n tags: tags\n };\n if (feature.id !== null) {\n tileFeature.id = feature.id;\n }\n tile.features.push(tileFeature);\n }\n}\n\nfunction addLine(result, geom, tile, tolerance, isPolygon, isOuter) {\n var sqTolerance = tolerance * tolerance;\n\n if (tolerance > 0 && (geom.size < (isPolygon ? sqTolerance : tolerance))) {\n tile.numPoints += geom.length / 3;\n return;\n }\n\n var ring = [];\n\n for (var i = 0; i < geom.length; i += 3) {\n if (tolerance === 0 || geom[i + 2] > sqTolerance) {\n tile.numSimplified++;\n ring.push(geom[i]);\n ring.push(geom[i + 1]);\n }\n tile.numPoints++;\n }\n\n if (isPolygon) rewind(ring, isOuter);\n\n result.push(ring);\n}\n\nfunction rewind(ring, clockwise) {\n var area = 0;\n for (var i = 0, len = ring.length, j = len - 2; i < len; j = i, i += 2) {\n area += (ring[i] - ring[j]) * (ring[i + 1] + ring[j + 1]);\n }\n if (area > 0 === clockwise) {\n for (i = 0, len = ring.length; i < len / 2; i += 2) {\n var x = ring[i];\n var y = ring[i + 1];\n ring[i] = ring[len - 2 - i];\n ring[i + 1] = ring[len - 1 - i];\n ring[len - 2 - i] = x;\n ring[len - 1 - i] = y;\n }\n }\n}\n","\nimport convert from './convert'; // GeoJSON conversion and preprocessing\nimport clip from './clip'; // stripe clipping algorithm\nimport wrap from './wrap'; // date line processing\nimport transform from './transform'; // coordinate transformation\nimport createTile from './tile'; // final simplified tile generation\n\nexport default function geojsonvt(data, options) {\n return new GeoJSONVT(data, options);\n}\n\nfunction GeoJSONVT(data, options) {\n options = this.options = extend(Object.create(this.options), options);\n\n var debug = options.debug;\n\n if (debug) console.time('preprocess data');\n\n if (options.maxZoom < 0 || options.maxZoom > 24) throw new Error('maxZoom should be in the 0-24 range');\n if (options.promoteId && options.generateId) throw new Error('promoteId and generateId cannot be used together.');\n\n var features = convert(data, options);\n\n this.tiles = {};\n this.tileCoords = [];\n\n if (debug) {\n console.timeEnd('preprocess data');\n console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints);\n console.time('generate tiles');\n this.stats = {};\n this.total = 0;\n }\n\n features = wrap(features, options);\n\n // start slicing from the top tile down\n if (features.length) this.splitTile(features, 0, 0, 0);\n\n if (debug) {\n if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints);\n console.timeEnd('generate tiles');\n console.log('tiles generated:', this.total, JSON.stringify(this.stats));\n }\n}\n\nGeoJSONVT.prototype.options = {\n maxZoom: 14, // max zoom to preserve detail on\n indexMaxZoom: 5, // max zoom in the tile index\n indexMaxPoints: 100000, // max number of points per tile in the tile index\n tolerance: 3, // simplification tolerance (higher means simpler)\n extent: 4096, // tile extent\n buffer: 64, // tile buffer on each side\n lineMetrics: false, // whether to calculate line metrics\n promoteId: null, // name of a feature property to be promoted to feature.id\n generateId: false, // whether to generate feature ids. Cannot be used with promoteId\n debug: 0 // logging level (0, 1 or 2)\n};\n\nGeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) {\n\n var stack = [features, z, x, y],\n options = this.options,\n debug = options.debug;\n\n // avoid recursion by using a processing queue\n while (stack.length) {\n y = stack.pop();\n x = stack.pop();\n z = stack.pop();\n features = stack.pop();\n\n var z2 = 1 << z,\n id = toID(z, x, y),\n tile = this.tiles[id];\n\n if (!tile) {\n if (debug > 1) console.time('creation');\n\n tile = this.tiles[id] = createTile(features, z, x, y, options);\n this.tileCoords.push({z: z, x: x, y: y});\n\n if (debug) {\n if (debug > 1) {\n console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)',\n z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified);\n console.timeEnd('creation');\n }\n var key = 'z' + z;\n this.stats[key] = (this.stats[key] || 0) + 1;\n this.total++;\n }\n }\n\n // save reference to original geometry in tile so that we can drill down later if we stop now\n tile.source = features;\n\n // if it's the first-pass tiling\n if (!cz) {\n // stop tiling if we reached max zoom, or if the tile is too simple\n if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue;\n\n // if a drilldown to a specific tile\n } else {\n // stop tiling if we reached base zoom or our target tile zoom\n if (z === options.maxZoom || z === cz) continue;\n\n // stop tiling if it's not an ancestor of the target tile\n var m = 1 << (cz - z);\n if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue;\n }\n\n // if we slice further down, no need to keep source geometry\n tile.source = null;\n\n if (features.length === 0) continue;\n\n if (debug > 1) console.time('clipping');\n\n // values we'll use for clipping\n var k1 = 0.5 * options.buffer / options.extent,\n k2 = 0.5 - k1,\n k3 = 0.5 + k1,\n k4 = 1 + k1,\n tl, bl, tr, br, left, right;\n\n tl = bl = tr = br = null;\n\n left = clip(features, z2, x - k1, x + k3, 0, tile.minX, tile.maxX, options);\n right = clip(features, z2, x + k2, x + k4, 0, tile.minX, tile.maxX, options);\n features = null;\n\n if (left) {\n tl = clip(left, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options);\n bl = clip(left, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options);\n left = null;\n }\n\n if (right) {\n tr = clip(right, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options);\n br = clip(right, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options);\n right = null;\n }\n\n if (debug > 1) console.timeEnd('clipping');\n\n stack.push(tl || [], z + 1, x * 2, y * 2);\n stack.push(bl || [], z + 1, x * 2, y * 2 + 1);\n stack.push(tr || [], z + 1, x * 2 + 1, y * 2);\n stack.push(br || [], z + 1, x * 2 + 1, y * 2 + 1);\n }\n};\n\nGeoJSONVT.prototype.getTile = function (z, x, y) {\n var options = this.options,\n extent = options.extent,\n debug = options.debug;\n\n if (z < 0 || z > 24) return null;\n\n var z2 = 1 << z;\n x = ((x % z2) + z2) % z2; // wrap tile x coordinate\n\n var id = toID(z, x, y);\n if (this.tiles[id]) return transform(this.tiles[id], extent);\n\n if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y);\n\n var z0 = z,\n x0 = x,\n y0 = y,\n parent;\n\n while (!parent && z0 > 0) {\n z0--;\n x0 = Math.floor(x0 / 2);\n y0 = Math.floor(y0 / 2);\n parent = this.tiles[toID(z0, x0, y0)];\n }\n\n if (!parent || !parent.source) return null;\n\n // if we found a parent tile containing the original geometry, we can drill down from it\n if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0);\n\n if (debug > 1) console.time('drilling down');\n this.splitTile(parent.source, z0, x0, y0, z, x, y);\n if (debug > 1) console.timeEnd('drilling down');\n\n return this.tiles[id] ? transform(this.tiles[id], extent) : null;\n};\n\nfunction toID(z, x, y) {\n return (((1 << z) * y + x) * 32) + z;\n}\n\nfunction extend(dest, src) {\n for (var i in src) dest[i] = src[i];\n return dest;\n}\n",null,null],"names":["module","UnitBezier","p1x","p1y","p2x","p2y","this","cx","bx","ax","cy","by","ay","clamp","n","min","max","Math","extend","dest","src","sources","k","mapObject","input","iterator","context","output","key","call","clone","Array","isArray","map","prototype","sampleCurveX","t","sampleCurveY","sampleCurveDerivativeX","solveCurveX","x","epsilon","undefined","i","x2","abs","d2","t0","t1","solve","warnOnceHistory","warnOnce","message","console","warn","isCounterClockwise","a","b","c","y","calculateSignedArea","ring","sum","p1","p2","len","length","j","isWorker","WorkerGlobalScope","self","_isSafari","isSafari","scope","userAgent","navigator","safari","test","match","isImageBitmap","image","ImageBitmap","TransferableGridIndex","constructor","extent","padding","cells","ArrayBuffer","arrayBuffer","array","Int32Array","d","start","end","push","subarray","bboxesOffset","keys","bboxes","insert","_insertReadonly","scale","uid","p","x1","y1","y2","_forEachCell","_insertCell","Error","cellIndex","query","intersectionTest","slice","result","_queryCell","seenUids","cell","u","offset","fn","arg1","arg2","cx1","_convertToCellCoord","cy1","cx2","cy2","_convertFromCellCoord","floor","toArrayBuffer","metadataLength","totalCellLength","set","buffer","static","grid","transferables","serialized","kCSSColorTable","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","clamp_css_byte","round","parse_css_int","str","parseFloat","parseInt","parse_css_float","f","css_hue_to_rgb","m1","m2","h","exports","css_str","iv","replace","toLowerCase","substr","op","indexOf","ep","fname","params","split","alpha","pop","s","l","e","Color","r","g","parse","rgba","parseCSSColor","toString","toArray","extendBy","inputs","ParsingError","super","Scope","parent","bindings","name","expression","concat","get","has","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","CollatorType","FormattedType","ResolvedImageType","itemType","N","type","valueMemberTypes","checkSubtype","expected","memberType","isValidType","provided","allowedTypes","some","isValidNativeType","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","collator","Intl","usage","compare","lhs","rhs","resolvedLocale","resolvedOptions","FormattedSection","text","fontStack","textColor","Formatted","sections","unformatted","isEmpty","section","fromString","join","ResolvedImage","options","available","validateRGBA","isValue","mixed","item","typeOf","value","String","JSON","stringify","Literal","args","error","expectedType","evaluate","eachChild","outputDefined","RuntimeError","toJSON","types","string","number","boolean","object","Assertion","parsed","ctx","forEach","every","arg","Coercion","Boolean","parseColor","num","Number","isNaN","valueToString","geometryTypes","EvaluationContext","globals","feature","featureState","formattedSection","_parseColorCache","availableImages","canonical","id","geometryType","geometry","canonicalID","properties","cached","CompoundExpression","_evaluate","definition","definitions","availableOverloads","overloads","filter","signature","signatureContext","ParsingContext","registry","path","parsedArgs","argParseFailed","errors","signatures","stringifySignature","actualTypes","CollatorExpression","EXTENT","updateBBox","bbox","coord","boxWithinBox","bbox1","bbox2","getTileCoordinates","lng","PI","log","tilesAtZoom","pow","z","onBoundary","pointWithinPolygon","point","rings","inside","len2","pointWithinPolygons","polygons","twoSided","q1","q2","x3","y3","det1","det2","lineIntersectPolygon","polygon","v1","v2","lineStringWithinPolygon","line","lineStringWithinPolygons","getTilePolygon","coordinates","getTilePolygons","updatePoint","polyBBox","worldSize","halfWorldSize","shift","getTilePoints","pointBBox","shifts","tilePoints","points","getTileLines","lineBBox","tileLines","tileLine","Infinity","Within","geojson","geometries","features","polygonGeometry","tilePolygon","tilePolygons","pointsWithinPolygons","linesWithinPolygons","isFeatureConstant","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","part","expr","index","_parse","annotate","typeAnnotation","Expr","actual","isConstant","ec","isTypeAnnotation","childrenConstant","child","findStopLessThanOrEqualTo","stops","lastIndex","currentValue","nextValue","lowerIndex","upperIndex","currentIndex","Step","labels","outputs","label","outputType","labelKey","valueKey","stopCount","out","from","to","Xn","Zn","t2","deg2rad","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","labToRgb","labColor","interpolateHue","lab","forward","reverse","interpolate","interpolateNumber","hcl","atan2","sqrt","hclColor","cos","sin","Interpolate","operator","interpolation","lower","upper","exponentialInterpolation","base","controlPoints","rest","interpolationFactor","outputLower","outputUpper","lowerValue","upperValue","difference","progress","Coalesce","needsAnnotation","requestedImageName","argCount","Let","binding","At","In","needle","haystack","IndexOf","fromIndex","Match","inputType","cases","otherwise","labelContext","MAX_SAFE_INTEGER","Case","branches","_","Slice","beginIndex","endIndex","isComparableType","eqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","Comparison","hasUntypedArgument","lt","rt","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","minFractionDigits","maxFractionDigits","style","minimumFractionDigits","maximumFractionDigits","format","FormatExpression","firstArg","nextTokenMayBeObject","font","lastExpression","content","evaluatedContent","ImageExpression","evaluatedImageName","Length","expressions","at","case","coalesce","in","let","literal","step","var","within","obj","v","varargs","success","supportsPropertyExpression","spec","supportsZoomExpression","parameters","supportsInterpolation","interpolated","getType","val","isFunction","identityFunction","createFunction","propertySpec","isColor","zoomAndFeatureDependent","zoomDependent","property","stop","default","colorSpace","colorSpaces","innerFun","hashedStops","categoricalKeyType","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","Object","create","evaluateIdentityFunction","featureFunctions","zoomStops","zoom","featureFunctionStops","interpolationType","bind","keyType","interp","colorspace","evaluatedLower","apply","evaluatedUpper","values","register","typeof","typeToString","rgb","heatmapDensity","lineProgress","accumulated","ln2","LN2","pi","E","log10","LN10","ln","log2","asin","acos","atan","ceil","m","binarySearch","all","any","isSupportedScript","upcase","toUpperCase","downcase","StyleExpression","_warningHistory","_evaluator","_defaultValue","getDefaultValue","_enumValues","evaluateWithoutErrorHandling","isExpression","createExpression","parser","color","enum","formatted","resolvedImage","getExpectedType","ZoomConstantExpression","_styleExpression","isStateDependent","ZoomDependentExpression","createPropertyExpression","expressionInput","isZoomConstant","zoomCurve","findZoomCurve","StylePropertyFunction","specification","_parameters","_specification","childResult","config","sharedCache","responseConstructorSupportsReadableStream","cacheOpen","caches","open","exported","supported","testSupport","gl","webpCheckComplete","webpImgTest","webpImgTestOnloadComplete","testWebpTextureUpload","glForTesting","texture","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","isContextLost","deleteTexture","document","createElement","onload","onerror","freeze","Unknown","Style","Source","Tile","Glyphs","SpriteImage","SpriteJSON","Image","AJAXError","status","statusText","url","body","getReferrer","worker","referrer","window","location","protocol","href","makeFetchRequest","requestParameters","callback","controller","AbortController","request","Request","method","credentials","headers","signal","complete","aborted","err","cachedResponse","responseIsFresh","requestTime","Date","now","fetch","then","response","ok","cacheableResponse","json","Headers","cacheControl","re","header","$0","$1","$2","$3","maxAge","parseCacheControl","toUTCString","getTime","Response","ReadableStream","blob","prepareBody","clonedResponse","cache","put","stripQueryParameters","catch","cachePut","finishRequest","code","validateOrFetch","cancel","abort","makeRequest","actor","send","substring","hasOwnProperty","xhr","XMLHttpRequest","responseType","setRequestHeader","withCredentials","data","getResponseHeader","Blob","makeXMLHttpRequest","klass","defineProperty","writeable","omit","shallow","_classRegistryKey","isArrayBuffer","serialize","RegExp","isView","view","ImageData","$name","deserialize","ThrottledInvoker","_callback","_triggered","MessageChannel","_channel","port2","onmessage","trigger","port1","postMessage","setTimeout","remove","Actor","target","mapId","callbacks","tasks","taskQueue","cancelCallbacks","invoker","process","addEventListener","receive","globalScope","targetMapId","mustQueue","random","buffers","hasCallback","sourceMapId","processTask","task","completed","done","getWorkerSource","source","removeEventListener","ValidationError","identifier","__line__","validateConstants","constants","unbundle","valueOf","deepUnbundle","unbundledValue","validateObject","elementSpecs","valueSpec","elementValidators","objectElementValidators","styleSpec","objectKey","elementSpecKey","elementSpec","validateElement","validateSpec","required","validateArray","arraySpec","validateArrayElement","arrayElementValidator","validate","arrayElementSpec","$version","function","arrayIndex","validateNumber","minimum","maximum","validateFunction","functionValueSpec","functionType","stopKeyType","previousStopDomainValue","previousStopDomainZoom","stopDomainValues","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","validateFunctionStop","validateStopDomainValue","reportValue","isFinite","validateExpression","expressionContext","expressionObj","propertyKey","propertyType","validateEnum","isExpressionFilter","filterSpec","transition","createFilter","needGeometry","convertFilter","compiled","globalProperties","geometryNeeded","convertComparisonOp","convertNegation","filters","convertInOp","convertHasOp","sort","validateFilter","validateNonExpressionFilter","filter_operator","geometry_type","validateProperty","layerSpec","layerType","transitionMatch","tokenMatch","tokens","exec","glyphs","validatePaintProperty","validateLayoutProperty","validateLayer","layer","ref","layerId","otherLayer","layers","sourceType","paint","lineMetrics","layout","validateString","promoteId","prop","validateSource","source_geojson","cluster","clusterProperties","mapExpr","reduceExpr","source_video","source_image","validateLight","light","lightSpec","rootType","validateTerrain","terrain","terrainSpec","VALIDATORS","validateGlyphsUrl","validateStyleMin","latestStyleSpec","$root","validateGlyphsURL","sortErrors","wrapCleanErrors","inner","_addEventListener","listener","listenerList","_removeEventListener","splice","paintProperty","layoutProperty","Event","ErrorEvent","validateStyle","ZoomHistory","first","update","floorZ","lastIntegerZoom","lastIntegerZoomTime","lastZoom","lastFloorZoom","unicodeBlockLookup","char","allowsVerticalWritingMode","chars","charHasUprightVerticalOrientation","charCodeAt","allowsLetterSpacing","charAllowsLetterSpacing","isChar","charHasRotatedVerticalOrientation","charHasNeutralVerticalOrientation","charInRTLScript","charInSupportedScript","canRenderRTL","stringContainsRTLText","performance","pluginStatus","pluginURL","plugin","applyArabicShaping","processBidirectionalText","processStyledBidirectionalText","isLoaded","isLoading","setState","state","isParsed","getPluginURL","EvaluationParameters","fadeDuration","zoomHistory","isStringInSupportedScript","rtlTextPlugin","crossFadingFactor","getCrossfadeParameters","fraction","fromScale","toScale","PropertyValue","constant","normalizePropertyExpression","isDataDriven","possiblyEvaluate","TransitionablePropertyValue","transitioned","prior","TransitioningPropertyValue","untransitioned","Transitionable","_properties","_values","defaultTransitionablePropertyValues","getValue","setValue","getTransition","setTransition","Transitioning","begin","delay","duration","finalValue","t3","easeCubicInOut","defaultTransitioningPropertyValues","PossiblyEvaluated","hasTransition","Layout","defaultPropertyValues","PossiblyEvaluatedPropertyValue","constantOr","defaultPossiblyEvaluatedValues","DataConstantProperty","DataDrivenProperty","overrides","CrossFadedDataDrivenProperty","evaluatedValue","constantValue","_calculate","cameraVal","mid","CrossFadedProperty","ColorRampProperty","Properties","overridableProperties","overridable","defaultPropertyValue","defaultTransitionablePropertyValue","TRANSITION_SUFFIX","StyleLayer","on","_listeners","off","_oneTimeListeners","once","fire","event","listens","listeners","oneTimeListeners","_eventedParent","_eventedParentData","setEventedParent","_featureFilter","metadata","minzoom","maxzoom","sourceLayer","_unevaluatedLayout","_transitionablePaint","setPaintProperty","setLayoutProperty","_transitioningPaint","_crossfadeParameters","getLayoutProperty","visibility","_validate","getPaintProperty","endsWith","transitionable","isCrossFadedProperty","wasDataDriven","oldValue","_handleSpecialPaintPropertyUpdate","newValue","_handleOverridablePaintPropertyUpdate","isHidden","updateTransitions","recalculate","filterObject","emitter","hasErrors","emitValidationErrors","sprite","is3D","isTileClipped","hasOffscreenPass","resize","viewTypes","Int8","Int8Array","Uint8","Uint8Array","Int16","Int16Array","Uint16","Uint16Array","Int32","Uint32","Uint32Array","Float32","Float32Array","Struct","structArray","_structArray","_pos1","size","_pos2","_pos4","_pos8","StructArray","isTransferred","capacity","_trim","byteLength","bytesPerElement","_refreshViews","clear","reserve","oldUint8Array","uint8","createLayout","members","alignment","maxSize","member","typeSize","BYTES_PER_ELEMENT","memberOffset","align","components","Point","add","_add","sub","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","div","_div","rotate","_rotate","rotateAround","_rotateAround","matMult","_matMult","unit","_unit","perp","_perp","_round","mag","equals","other","dist","distSqr","dx","dy","angle","angleTo","angleWith","angleWithSep","convert","StructArrayLayout2i4","int16","emplaceBack","v0","emplace","o2","StructArrayLayout4i8","v3","StructArrayLayout2i4i12","v4","v5","StructArrayLayout2i4ub8","o1","StructArrayLayout2f8","float32","o4","StructArrayLayout10ui20","uint16","v6","v7","v8","v9","StructArrayLayout4i4ui4i24","v10","v11","StructArrayLayout3f12","StructArrayLayout1ul4","uint32","StructArrayLayout6i1ul2ui20","StructArrayLayout2i2i2i12","StructArrayLayout2f1f2i16","StructArrayLayout2ub2f12","StructArrayLayout3ui6","StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48","v12","v13","v14","v15","v16","StructArrayLayout8i15ui1ul4f68","v17","v18","v19","v20","v21","v22","v23","v24","v25","v26","v27","StructArrayLayout1f4","StructArrayLayout3i6","StructArrayLayout1ul2ui8","StructArrayLayout2ui4","StructArrayLayout1ui2","StructArrayLayout4f16","CollisionBoxStruct","anchorPointX","anchorPointY","featureIndex","sourceLayerIndex","bucketIndex","anchorPoint","CollisionBoxArray","PlacedSymbolStruct","anchorX","anchorY","glyphStartIndex","numGlyphs","vertexStartIndex","lineStartIndex","lineLength","segment","lowerSize","upperSize","lineOffsetX","lineOffsetY","writingMode","placedOrientation","hidden","crossTileID","associatedIconIndex","PlacedSymbolArray","SymbolInstanceStruct","rightJustifiedTextSymbolIndex","centerJustifiedTextSymbolIndex","leftJustifiedTextSymbolIndex","verticalPlacedTextSymbolIndex","placedIconSymbolIndex","verticalPlacedIconSymbolIndex","textBoxStartIndex","textBoxEndIndex","verticalTextBoxStartIndex","verticalTextBoxEndIndex","iconBoxStartIndex","iconBoxEndIndex","verticalIconBoxStartIndex","verticalIconBoxEndIndex","numHorizontalGlyphVertices","numVerticalGlyphVertices","numIconVertices","numVerticalIconVertices","useRuntimeCollisionCircles","textBoxScale","textOffset0","textOffset1","collisionCircleDiameter","SymbolInstanceArray","GlyphOffsetArray","getoffsetX","SymbolLineVertexArray","getx","gety","gettileUnitDistanceFromAnchor","FeatureIndexStruct","FeatureIndexArray","PosArray","CircleLayoutArray","FillLayoutArray","FillExtrusionLayoutArray","LineLayoutArray","LineExtLayoutArray","PatternLayoutArray","SymbolLayoutArray","SymbolDynamicLayoutArray","SymbolOpacityArray","CollisionBoxLayoutArray","CollisionVertexArray","TriangleIndexArray","LineIndexArray","SegmentVector","segments","prepareSegment","numVertices","layoutVertexArray","indexArray","sortKey","MAX_VERTEX_ARRAY_LENGTH","vertexLength","vertexOffset","primitiveOffset","primitiveLength","destroy","vaos","packUint8ToFloat","patternAttributes","seed","remainder","bytes","h1","h1b","c1","c2","k1","murmur3","require","murmur2","murmurhashJs","FeaturePositionMap","ids","positions","indexed","getNumericId","getPositions","intId","Float64Array","numValue","left","right","pivot","swap","arr","tmp","Uniform","Uniform1f","current","uniform1f","Uniform4f","uniform4f","UniformColor","packColor","ConstantBinder","names","uniformNames","setUniform","uniform","getBinding","CrossFadedConstantBinder","patternFrom","patternTo","pixelRatioFrom","pixelRatioTo","setConstantPatternPositions","posTo","posFrom","pixelRatio","tlbr","uniformName","pos","SourceExpressionBinder","PaintVertexArray","maxValue","paintVertexAttributes","paintVertexArray","populatePaintArray","newLength","imagePositions","_setPaintValue","updatePaintArray","upload","paintVertexBuffer","updateData","createVertexBuffer","CompositeExpressionBinder","useIntegerZoom","minColor","maxColor","currentZoom","factor","CrossFadedCompositeBinder","zoomInPaintVertexArray","zoomOutPaintVertexArray","_setPaintValues","patterns","imageMin","imageMid","imageMax","tl","br","zoomInPaintVertexBuffer","zoomOutPaintVertexBuffer","ProgramConfiguration","filterProperties","binders","_buffers","paintAttributeNames","propType","isCrossFaded","StructArrayLayout","layoutType","cacheKey","getMaxValue","binder","populatePaintArrays","updatePaintArrays","featureStates","featureMap","vtLayer","dirty","defines","getBinderAttributes","getBinderUniforms","uniforms","getPaintVertexBuffers","getUniforms","locations","setUniforms","binderUniforms","updatePaintBuffers","crossfade","patternVertexBuffer","ProgramConfigurationSet","programConfigurations","needsUpload","_featureMap","_bufferOffset","binderType","defaultLayouts","composite","layoutException","getLayoutException","MAX","BITS","MIN","loadGeometry","toEvaluationFeature","addCircleVertex","extrudeX","extrudeY","CircleBucket","overscaling","layerIds","hasPattern","stateDependentLayerIds","populate","styleLayer","bucketFeatures","circleSortKey","sortFeaturesByKey","evaluationFeature","bucketFeature","addFeature","states","stateDependentLayers","uploadPending","uploaded","layoutVertexBuffer","layoutAttributes","indexBuffer","createIndexBuffer","polygonIntersectsPolygon","polygonA","polygonB","polygonContainsPoint","lineIntersectsLine","polygonIntersectsBufferedPoint","radius","pointIntersectsBufferedLine","polygonIntersectsMultiPolygon","multiPolygon","multiPolygonContainsPoint","lineIntersectsBufferedLine","lineA","lineB","a0","a1","lineSegmentIntersectsLineSegment","b0","b1","radiusSquared","distToSegmentSquared","w","l2","edgeIntersectsBox","e1","e2","corners","dir","getMaximumPaintValue","bucket","translateDistance","translate","queryGeometry","translateAnchor","bearing","pixelsToTileUnits","pt","translated","properties$8","ARRAY_TYPE","identity","glMatrix","fromValues","transformMat4","projectPoint","pixelPosMatrix","vec4","hypot","arguments","vec3","HeatmapBucket","properties$7","createImage","width","height","channels","Uint8ClampedArray","RangeError","resizeImage","newImage","copyImage","srcImg","dstImg","srcPt","dstPt","srcData","dstData","srcOffset","dstOffset","AlphaImage","RGBAImage","copy","properties$6","earcut","holeIndices","dim","minX","minY","maxX","maxY","invSize","hasHoles","outerLen","outerNode","linkedList","triangles","next","prev","list","queue","steiner","getLeftmost","compareX","filterPoints","eliminateHole","eliminateHoles","earcutLinked","clockwise","last","signedArea","insertNode","removeNode","again","area","ear","pass","zOrder","prevZ","nextZ","q","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","maxTX","maxTY","minZ","maxZ","intersects","locallyInside","isValidDiagonal","splitPolygon","hole","bridge","hx","hy","qx","mx","my","tanMin","sectorContainsSector","findHoleBridge","bridgeReverse","filteredBridge","leftmost","px","py","intersectsPolygon","middleInside","sign","o3","onSegment","a2","Node","b2","an","bp","quickselect","quickselectStep","defaultCompare","exp","sd","classifyRings","maxRings","ccw","compareAreas","patternDependencies","patternProperty","constantPattern","addPatternDependencies","patternFeature","patternPropertyValue","earcut_1","deviation","polygonArea","trianglesArea","flatten","vertices","holes","dimensions","holeIndex","FillBucket","patternFeatures","indexArray2","segments2","fillSortKey","addFeatures","indexBuffer2","triangleSegment","triangleIndex","flattened","lineSegment","lineIndex","indices","properties$5","centroidAttributes","VectorTileFeature","pbf","_pbf","_geometry","_keys","readFields","readFeature","tag","readVarint","readTag","cmd","lines","cmdLen","readSVarint","toGeoJSON","x0","y0","coords","project","VectorTileLayer","version","_features","readLayer","readString","readFloat","readDouble","readVarint64","readBoolean","readValueMessage","readTile","vectorTile","VectorTile","vectorTileFeatureTypes","mvt","FACTOR","addVertex","vertexArray","nx","ny","nz","FillExtrusionBucket","centroidVertexArray","centroidVertexBuffer","centroid","vertexCount","isEntirelyOutside","edgeDistance","isBoundaryEdge","bottomRight","properties$4","dot","getIntersectionDistance","projectedQueryGeometry","projectedFace","ab","ac","ap","dotABAB","dotABAC","dotACAC","dotAPAB","dotAPAC","denom","distance","closestDistance","lineLayoutAttributes","lineLayoutAttributesExt","COS_HALF_SHARP_CORNER","MAX_LINE_DISTANCE","LINE_DISTANCE_BUFFER_BITS","LineBucket","lineClipsArray","gradients","layoutVertexArray2","maxLineLength","lineSortKey","patternBucketFeature","layoutVertexBuffer2","layoutAttributesExt","lineFeatureClips","cap","miterLimit","roundLimit","lineClips","addLine","scaledDistance","totalDistance","updateScaledDistance","isPolygon","sharpCornerOffset","SHARP_CORNER_OFFSET","currentVertex","prevVertex","nextVertex","prevNormal","nextNormal","joinNormal","cosAngle","cosHalfAngle","miterLength","approxAngle","isSharpCorner","lineTurnsLeft","prevSegmentLength","newPrevVertex","updateDistance","addCurrentVertex","middleVertex","currentJoin","bevelLength","offsetA","offsetB","extrude","addHalfVertex","nextSegmentLength","newCurrentVertex","normal","endLeft","endRight","leftX","rightX","rightY","up","linesofarScaled","properties$3","lineFloorwidthProperty","getLineWidth","lineWidth","lineGapWidth","symbolLayoutAttributes","dynamicLayoutAttributes","collisionVertexAttributes","collisionBoxLayout","transformText","transform","toLocaleUpperCase","toLocaleLowerCase","transformTextInternal","verticalizedCharacterMap","$","ONE_EM","Pbf","ieee754","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","buf","Varint","Fixed64","Bytes","Fixed32","WritingMode","SHIFT_LEFT_32","SHIFT_RIGHT_32","utf8TextDecoder","TextDecoder","readPackedEnd","toNum","low","high","isSigned","makeRoomForExtraLength","startPos","extraLen","realloc","writePackedVarint","writeVarint","writePackedSVarint","writeSVarint","writePackedFloat","writeFloat","writePackedDouble","writeDouble","writePackedBoolean","writeBoolean","writePackedFixed32","writeFixed32","writePackedSFixed32","writeSFixed32","writePackedFixed64","writeFixed64","writePackedSFixed64","writeSFixed64","readUInt32","writeInt32","readInt32","potpack","boxes","maxWidth","box","startWidth","spaces","space","fill","readField","skip","readMessage","readFixed32","readSFixed32","readFixed64","readSFixed64","readVarintRemainder","decode","readUtf8TextDecoder","b3","bytesPerSequence","fromCharCode","readUtf8","readBytes","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","finish","writeBigVarintLow","lsb","writeBigVarintHigh","writeBigVarint","writeString","lead","writeUtf8","writeBytes","writeRawMessage","writeMessage","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","ImagePosition","paddedRect","stretchX","stretchY","displaySize","IMAGE_PADDING","ImageAtlas","icons","iconPositions","patternPositions","haveRenderCallbacks","bins","addImages","bin","images","hasRenderCallback","patchUpdatedImages","imageManager","dispatchRenderCallbacks","updatedImages","patchUpdatedImage","getImage","position","SHAPING_DEFAULT_OFFSET","SectionOptions","imageName","textOptions","imageOptions","TaggedString","sectionIndex","imageSectionID","defaultFontStack","addImageSection","addTextSection","getSection","getSectionIndex","getCharCode","verticalizePunctuation","nextCharCode","prevCharCode","trim","beginningWhitespace","whitespace","trailingWhitespace","getMaxScale","reduce","forText","nextImageSectionCharCode","getNextImageSectionCharCode","forImage","shapeText","glyphMap","glyphPositions","lineHeight","textAnchor","textJustify","spacing","allowVerticalPlacement","symbolPlacement","layoutTextSize","layoutTextSizeThisZoom","logicalInput","fromFeature","vertical","untaggedLines","determineLineBreaks","taggedLine","processedLines","lineBreakPoints","lineBreak","breakLines","positionedLines","shaping","top","bottom","iconsInText","verticalizable","maxLineHeight","justify","lineMaxScale","maxLineOffset","positionedLine","positionedGlyphs","lineOffset","codePoint","baselineOffset","metrics","rect","verticalAdvance","horizontal","imagePosition","advance","glyphPosition","glyph","justifyLine","currentLineHeight","horizontalAlign","verticalAlign","getAnchorAlignment","blockHeight","lineCount","shiftX","shiftY","positionedGlyph","shapeLines","breakable","getGlyphAdvance","calculateBadness","targetWidth","penalty","isLastBreak","raggedness","calculatePenalty","nextCodePoint","penalizableIdeographicBreak","evaluateBreak","breakIndex","breakX","potentialBreaks","bestPriorBreak","bestBreakBadness","potentialBreak","breakBadness","badness","priorBreak","leastBadBreaks","lastLineBreak","potentialLineBreaks","totalWidth","determineAverageLineWidth","hasServerSuggestedBreakpoints","currentX","ideographicBreak","anchor","lastPositionedGlyph","lineIndent","shapeIcon","iconOffset","iconAnchor","fitIconToText","shapedIcon","shapedText","textFit","fontScale","collisionPadding","textLeft","textRight","textTop","textBottom","SIZE_PACK_FACTOR","getSizeData","tileZoom","layoutSize","minZoom","maxZoom","minSize","Anchor","checkMaxAngle","labelLength","windowSize","maxAngle","anchorDistance","recentCorners","recentAngleDelta","angleDelta","getLineLength","getAngleWindowSize","glyphSize","boxScale","getShapedLabelLength","getCenterAnchor","angleWindowSize","prevDistance","centerDistance","segmentDistance","getAnchors","tileExtent","shapedLabelLength","isLineContinued","resample","placeAtMiddle","halfLabelLength","markedDistance","anchors","segmentDist","getIconQuads","iconRotate","isSDFIcon","hasIconTextFit","quads","imageWidth","imageHeight","iconWidth","iconHeight","reduceRanges","range","stretchWidth","stretchHeight","fixedWidth","fixedHeight","stretchOffsetX","stretchContentWidth","stretchOffsetY","stretchContentHeight","fixedOffsetX","fixedContentWidth","fixedOffsetY","fixedContentHeight","sumWithinRange","makeBox","leftEm","getEmOffset","stretch","leftPx","getPxOffset","fixed","topEm","topPx","rightEm","rightPx","bottomEm","bottomPx","tr","bl","pixelOffsetTL","pixelOffsetBR","matrix","tex","glyphOffset","minFontScaleX","minFontScaleY","isSDF","xCuts","stretchZonesToCuts","yCuts","xi","yi","ranges","stretchZones","fixedSize","stretchSize","cuts","stretchOffset","iconSize","fixedOffset","CollisionFeature","collisionBoxArray","shaped","alignLine","boxStartIndex","circleDiameter","rotateRadians","boxEndIndex","TinyQueue","_down","_up","peek","halfLength","best","findPoleOfInaccessibility","polygonRings","precision","debug","outerRing","cellSize","cellQueue","Queue","compareMax","Cell","bestCell","getCentroidCell","numProbes","minDistSq","pointToPolygonDist","SQRT2","INVALID_TEXT_OFFSET","POSITIVE_INFINITY","performSymbolLayout","imageMap","showCollisionBoxes","createArrays","tilePixelRatio","compareText","iconsNeedLinear","unevaluatedLayoutValues","sizes","layoutIconSize","textMaxSize","textSizeData","compositeTextSizes","iconSizeData","compositeIconSizes","textAlongLine","keepUpright","textSize","fontstack","shapedTextOrientations","textOffset","unformattedText","spacingIfAllowed","variableTextAnchor","radialOffset","offsetX","offsetY","fromTextOffset","hypotenuse","fromRadialOffset","addVerticalShapingForPointLabelIfNeeded","justifications","getAnchorJustification","singleLine","justification","icon","sdf","sdfIcons","getDefaultHorizontalShaping","generateCollisionDebugBuffers","defaultHorizontalShaping","textMaxBoxScale","iconBoxScale","symbolMinDistance","textPadding","iconPadding","textMaxAngle","iconAlongLine","textRepeatDistance","iconTextFit","verticallyShapedIcon","addSymbolAtAnchor","lineArray","addToLineVertexArray","textCollisionFeature","iconCollisionFeature","verticalTextCollisionFeature","verticalIconCollisionFeature","placedTextSymbolIndices","verticalTextRotation","iconQuads","verticalIconQuads","sizeData","MAX_PACKED_SIZE","addSymbols","none","placedSymbolArray","textRotate","addTextVertices","horizontalOnly","getCollisionCircleHeight","prevHeight","glyphOffsetArray","SymbolBucket","MAX_GLYPHS","addToSortKeyRanges","symbolInstances","center","addSymbol","clippedLines","clippedLine","p0","clipLine","anchorIsTooClose","poi","MAX_GLYPH_ICON_SIZE","placementTypes","placedIconIndex","glyphQuads","alongLine","textureRect","rectBuffer","GLYPH_PBF_BORDER","rotateVerticalGlyph","halfAdvance","scaledGlyphOffset","imageOffset","builtInOffset","verticalizedLabelOffset","verticalRotation","xHalfWidthOffsetCorrection","halfWidthOffsetCorrection","verticalOffsetCorrection","getGlyphQuads","placementType","horizontalShaping","repeatDistance","otherAnchors","shaderOpacityAttributes","ox","oy","tx","ty","sizeVertex","pixelOffsetX","pixelOffsetY","aSizeX","aSizeY","addDynamicAttributes","dynamicLayoutVertexArray","containsRTLText","formattedText","SymbolBuffers","opacityVertexArray","dynamicIndexBuffer","dynamicLayoutVertexBuffer","opacityVertexBuffer","itemSize","CollisionBuffers","LayoutArray","IndexArray","collisionVertexArray","collisionVertexBuffer","hasRTLText","sortKeyRanges","collisionCircleArray","placementInvProjMatrix","mat4","placementViewportMatrix","canOverlap","getOverlapMode","sortFeaturesByY","writingModes","wm","sourceID","lineVertexArray","calculateGlyphDependencies","stack","doesAllowVerticalWritingMode","verticalChar","charAt","textFont","textField","iconImage","hasText","hasIcon","symbolSortKey","iconDependencies","stacks","glyphDependencies","resolvedTokens","getValueAndResolveTokens","factory","globalRTLTextPlugin","sectionFont","sectionStack","leftIndex","rightIndex","mergedFeatures","mergedIndex","mergeFromRight","leftKey","rightKey","geom","mergeFromLeft","getKey","onRight","mergeLines","hasDebugData","textCollisionBox","iconCollisionBox","destroyDebugData","sumForwardLength","sumBackwardLength","tileUnitDistanceFromAnchor","vertex","arrays","labelAnchor","glyphOffsetArrayStart","_addCollisionDebugVertex","addCollisionDebugVertices","boxAnchorPoint","symbolInstance","addDebugCollisionBoxes","startIndex","isText","_deserializeCollisionBoxesForSymbol","textStartIndex","textEndIndex","verticalTextStartIndex","verticalTextEndIndex","iconStartIndex","iconEndIndex","verticalIconStartIndex","verticalIconEndIndex","collisionArrays","textBox","textFeatureIndex","verticalTextBox","verticalTextFeatureIndex","iconBox","iconFeatureIndex","verticalIconBox","verticalIconFeatureIndex","deserializeCollisionBoxes","hasTextData","hasIconData","hasTextCollisionBoxData","hasIconCollisionBoxData","addIndicesForPlacedSymbol","iconOrText","placedSymbolIndex","placedSymbol","vertexIndex","getSortedSymbolIndexes","sortedAngle","symbolInstanceIndexes","rotatedYs","featureIndexes","aIndex","bIndex","symbolInstanceIndex","symbolInstanceEnd","symbolInstanceStart","sortFeatures","featureSortOrder","properties$2","runtimeType","getOverride","o","hasOverride","FormatSectionOverride","defaultValue","SymbolStyleLayer","deduped","_setPaintOverrides","unevaluated","resolveTokens","createBucket","queryRadius","queryIntersectsFeature","hasPaintOverride","overriden","override","styleExpression","_interpolationType","propertyName","hasOverrides","checkSections","checkExpression","overlapProp","allowOverlapProp","overlap","properties$1","CustomStyleLayer","implementation","onAdd","painter","onRemove","renderingMode","prerender","subclasses","circle","circleBucket","translatedPolygon","alignWithMap","transformedPolygon","projectQueryGeometry","transformedSize","transformedPoint","adjustedSize","projectedCenter","cameraToCenterDistance","heatmap","_updateColorRamp","colorRamp","evaluationGlobals","resolution","clips","renderPixel","stride","evaluationKey","pxColor","clip","renderColorRamp","colorRampTexture","heatmapFbo","hillshade","outlineColor","projected","zBase","zTop","projectedBase","projectedTop","baseXZ","baseYZ","baseZZ","baseWZ","topXZ","topYZ","topZZ","topWZ","ringBase","ringTop","sX","sY","sZ","sW","baseZ","baseW","topX","topY","topZ","topW","projectExtrusion","topA","face","checkIntersection","gradientVersion","stepInterpolant","gradientExpression","lineBucket","halfWidth","newRings","ringIndex","newRing","aToB","bToC","offsetLine","multiLine","polygonIntersectsBufferedMultiLine","symbol","background","raster","createStyleLayer","refProperties","StyleLayerIndex","layerConfigs","keyCache","_layerConfigs","_layers","removedIds","layerConfig","featureFilter","familiesBySource","groups","cachedKeys","group","groupByLayout","sourceId","sourceGroup","sourceLayerId","sourceLayerFamilies","DictionaryCoder","strings","_stringToNumber","_numberToString","encode","GeoJSONFeature","vectorTileFeature","_vectorTileFeature","_z","_x","_y","FeatureIndex","tileID","grid3D","featureIndexArray","loadVTLayers","vtLayers","vt","Protobuf","rawTileData","sourceLayerCoder","styleLayers","serializedLayers","sourceFeatureState","tileSize","queryPadding","bounds","getBounds","matching","cameraBounds","cameraQueryGeometry","matching3D","bx1","by1","bx2","by2","boxX1","boxY1","boxX2","boxY2","corner","polygonIntersectsBox","topDownFeatureComparator","previousIndex","featureGeometry","loadMatchingFeature","filterLayerIDs","layerIDs","bucketLayerIDs","arraysIntersect","sourceLayerName","overscaledZ","getId","layerID","getState","serializedLayer","evaluateProperties","intersectionZ","geojsonFeature","layerResult","lookupSymbolFeatures","symbolFeatureIndexes","symbolFeatureIndex","hasLayer","serializedProperties","styleLayerProperties","GlyphAtlas","stackPositions","bitmap","getMercCoords","LngLatBounds","sw","ne","setSouthWest","setNorthEast","_ne","LngLat","lat","_sw","sw2","ne2","getCenter","getSouthWest","getNorthEast","getNorthWest","getWest","getNorth","getSouthEast","getEast","getSouth","contains","lnglat","containsLongitude","earthRadius","wrap","distanceTo","lngLat","rad","lat1","lat2","toBounds","latAccuracy","lngAccuracy","lon","earthCircumfrence","circumferenceAtLatitude","latitude","latFromMercatorY","MercatorCoordinate","lngLatLike","altitude","mercatorZfromAltitude","toLngLat","toAltitude","meterInMercatorCoordinateUnits","CanonicalTileID","calculateKey","urls","scheme","quadkey","mask","getQuadkey","isChildOf","dz","getTilePoint","UnwrappedTileID","OverscaledTileID","scaledTo","targetZ","zDifference","calculateScaledKey","withWrap","children","sourceMaxZoom","isLessThan","wrapped","unwrapTo","overscaleFactor","toUnwrapped","WorkerTile","collectResourceTiming","returnDependencies","layerIndex","buckets","layerFamilies","family","recalculateLayers","iconMap","patternMap","maybePrepare","glyphAtlas","imageAtlas","glyphAtlasImage","PerformanceMarkers","RequestPerformance","_marks","measure","mark","resourceTimingData","getEntriesByName","clearMarks","clearMeasures","loadVectorTile","getArrayBuffer","expires","rawData","VectorTileWorkerSource","loadVectorData","loading","loaded","loadTile","perf","workerTile","resourceTiming","reloadTile","vtSource","reloadCallback","abortTile","removeTile","DEMData","encoding","_idx","MIN_SAFE_INTEGER","ele","pixels","_unpackTerrarium","_unpackMapbox","getUnpackVector","getPixels","backfillBorder","borderTile","xMin","xMax","yMin","yMax","RasterDEMTileWorkerSource","rawImageData","imagePixels","getImageData","dem","imgBitmap","offscreenCanvas","offscreenCanvasContext","OffscreenCanvas","getContext","drawImage","imgData","clearRect","rewind","gj","outer","rewindRings","rewindRing","FeatureWrapper","_feature","tags","GeoJSONWrapper","_geojsonTileLayer","rawGeometry","fromVectorTileJs","tile","writeLayer","writeTile","keycache","valuecache","writeFeature","writeValue","writeProperties","writeGeometry","keyIndex","valueIndex","command","zigzag","count","sortKD","nodeSize","depth","select","inc","swapItem","sqDist","vtPbf","fromGeojsonVt","defaultGetX","defaultGetY","KDBush","getX","getY","ArrayType","IndexArrayType","axis","nextAxis","qy","r2","defaultOptions","minPoints","generateId","props","fround","Supercluster","trees","load","time","timerId","clusters","createPointCluster","timeEnd","_cluster","getClusters","minLng","minLat","maxLng","maxLat","easternHem","westernHem","tree","_limitZoom","lngX","latY","numPoints","getClusterJSON","getChildren","clusterId","originId","_getOriginId","originZoom","_getOriginZoom","errorMsg","origin","parentId","getLeaves","limit","leaves","_appendLeaves","getTile","z2","_addTileFeatures","getClusterExpansionZoom","expansionZoom","cluster_id","skipped","point_count","isCluster","getClusterProperties","neighborIds","numPointsOrigin","neighborId","wx","wy","_map","numPoints2","createCluster","original","yLat","abbrev","point_count_abbreviated","simplify","sqTolerance","maxSqDist","minPosToMid","getSqSegDist","posToMid","createFeature","calcLineBBox","calcBBox","convertFeature","tolerance","convertPoint","convertLine","convertLines","projectX","projectY","k2","minAll","maxAll","clipped","newGeometry","clipPoints","clipLines","newGeom","trackMetrics","segLen","newSlice","intersect","intersectX","intersectY","az","exited","addPoint","shiftFeatureCoords","newFeatures","shiftCoords","newPolygon","newPoints","transformTile","transformed","transformPoint","createTile","numSimplified","numFeatures","simplified","tileFeature","isOuter","GeoJSONVT","tiles","tileCoords","indexMaxZoom","indexMaxPoints","stats","total","merged","splitTile","toID","loadGeoJSONTile","_geoJSONIndex","geoJSONTile","geojsonWrapper","vtpbf","byteOffset","cz","k3","k4","z0","GeoJSONWorkerSource","loadGeoJSON","loadData","_a","_pendingRequest","_pendingCallback","abandoned","superclusterOptions","mapExpressions","reduceExpressions","propertyNames","mapExpression","mapExpressionParsed","reduceExpressionParsed","pointProperties","getSuperclusterOptions","geojsonvt","geojsonVtOptions","getJSON","removeSource","getClusterChildren","getClusterLeaves","Worker","layerIndexes","workerSourceTypes","vector","workerSources","demWorkerSources","registerWorkerSource","WorkerSource","registerRTLTextPlugin","setReferrer","mapID","setImages","workerSource","ws","setLayers","getLayerIndex","updateLayers","loadDEMTile","getDEMWorkerSource","removeDEMTile","loadWorkerSource","importScripts","syncRTLPluginState","getAvailableImages","enforceCacheSizeLimit","delete"],"mappings":"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"}
1
+ {"version":3,"file":"maplibre-gl-csp-worker.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}