diff --git a/fish/fish_data.gd b/fish/fish_data.gd index aa73d2a..fd327b1 100644 --- a/fish/fish_data.gd +++ b/fish/fish_data.gd @@ -16,6 +16,8 @@ enum Rarity { @export var id: StringName @export var display_name: String +@export_flags("Fresh Water", "Salt Water") +var allowed_water_types: int = WaterType.ALL_FISHABLE_MASK @export var rarity: Rarity = Rarity.COMMON @export_range(0.0, 1000.0, 0.01) var base_catch_weight: float = 1.0 @export var catch_profile: CatchDifficultyProfileType @@ -47,6 +49,18 @@ func is_selectable() -> bool: ) +func is_allowed_in_water(type: WaterType.Type) -> bool: + return (allowed_water_types & WaterType.mask_for(type)) != 0 + + +func get_primary_water_type() -> WaterType.Type: + if allowed_water_types & WaterType.FRESH_WATER_MASK: + return WaterType.Type.FRESH_WATER + if allowed_water_types & WaterType.SALT_WATER_MASK: + return WaterType.Type.SALT_WATER + return WaterType.Type.OTHER + + func get_minimum_weight() -> float: return maxf(weight_min_lb, 0.01) diff --git a/fish/fish_selector.gd b/fish/fish_selector.gd index 3c1656b..35ea1d3 100644 --- a/fish/fish_selector.gd +++ b/fish/fish_selector.gd @@ -39,6 +39,8 @@ func select_fish( for fish: FishDataType in pool.candidates: if fish == null or not fish.is_selectable(): continue + if not fish.is_allowed_in_water(context.water_type): + continue if fish.availability != null and not fish.availability.is_available(context): continue var final_weight: float = fish.base_catch_weight diff --git a/fish/pools/starter_ocean_pool.tres b/fish/pools/starter_ocean_pool.tres new file mode 100644 index 0000000..a84106e --- /dev/null +++ b/fish/pools/starter_ocean_pool.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" load_steps=4 format=3] + +[ext_resource type="Script" path="res://fish/fish_pool.gd" id="1_pool"] +[ext_resource type="Resource" path="res://fish/species/bass/bass.tres" id="2_bass"] +[ext_resource type="Resource" path="res://fish/species/sunfish/sunfish.tres" id="3_sunfish"] + +[resource] +script = ExtResource("1_pool") +candidates = [ExtResource("2_bass"), ExtResource("3_sunfish")] diff --git a/fish/pools/starter_pond_pool.tres b/fish/pools/starter_pond_pool.tres index 66a1c34..a594d72 100644 --- a/fish/pools/starter_pond_pool.tres +++ b/fish/pools/starter_pond_pool.tres @@ -1,10 +1,8 @@ -[gd_resource type="Resource" load_steps=10 format=3] +[gd_resource type="Resource" load_steps=8 format=3] [ext_resource type="Script" path="res://fish/fish_pool.gd" id="1_pool"] [ext_resource type="Resource" path="res://fish/species/bluegill/bluegill.tres" id="2_bluegill"] -[ext_resource type="Resource" path="res://fish/species/bass/bass.tres" id="3_bass"] [ext_resource type="Resource" path="res://fish/species/carp/carp.tres" id="4_carp"] -[ext_resource type="Resource" path="res://fish/species/sunfish/sunfish.tres" id="5_sunfish"] [ext_resource type="Resource" path="res://fish/species/catfish_blue/catfish_blue.tres" id="6_catfish_blue"] [ext_resource type="Resource" path="res://fish/species/catfish_channel/catfish_channel.tres" id="7_catfish_channel"] [ext_resource type="Resource" path="res://fish/species/catfish_flathead/catfish_flathead.tres" id="8_catfish_flathead"] @@ -12,4 +10,4 @@ [resource] script = ExtResource("1_pool") -candidates = [ExtResource("2_bluegill"), ExtResource("3_bass"), ExtResource("4_carp"), ExtResource("5_sunfish"), ExtResource("6_catfish_blue"), ExtResource("7_catfish_channel"), ExtResource("8_catfish_flathead"), ExtResource("9_catfish_white")] +candidates = [ExtResource("2_bluegill"), ExtResource("4_carp"), ExtResource("6_catfish_blue"), ExtResource("7_catfish_channel"), ExtResource("8_catfish_flathead"), ExtResource("9_catfish_white")] diff --git a/fish/species/bass/bass.tres b/fish/species/bass/bass.tres index bf7d261..24b159f 100644 --- a/fish/species/bass/bass.tres +++ b/fish/species/bass/bass.tres @@ -16,6 +16,7 @@ preferred_bait_weight_multiplier = 1.4 script = ExtResource("1_fish_data") id = &"bass" display_name = "striped bass" +allowed_water_types = 2 rarity = 1 base_catch_weight = 4.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/bluegill/bluegill.tres b/fish/species/bluegill/bluegill.tres index e766b5f..0c72a89 100644 --- a/fish/species/bluegill/bluegill.tres +++ b/fish/species/bluegill/bluegill.tres @@ -9,6 +9,7 @@ script = ExtResource("1_fish_data") id = &"bluegill" display_name = "bluegill" +allowed_water_types = 1 rarity = 0 base_catch_weight = 10.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/carp/carp.tres b/fish/species/carp/carp.tres index bb4642d..826ac13 100644 --- a/fish/species/carp/carp.tres +++ b/fish/species/carp/carp.tres @@ -16,6 +16,7 @@ preferred_bait_weight_multiplier = 1.5 script = ExtResource("1_fish_data") id = &"carp" display_name = "common carp" +allowed_water_types = 1 rarity = 2 base_catch_weight = 1.5 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_blue/catfish_blue.tres b/fish/species/catfish_blue/catfish_blue.tres index b3e05b1..893794f 100644 --- a/fish/species/catfish_blue/catfish_blue.tres +++ b/fish/species/catfish_blue/catfish_blue.tres @@ -17,6 +17,7 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"catfish_blue" display_name = "blue catfish" +allowed_water_types = 1 rarity = 1 base_catch_weight = 1.25 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_channel/catfish_channel.tres b/fish/species/catfish_channel/catfish_channel.tres index cbfe28a..ffc1142 100644 --- a/fish/species/catfish_channel/catfish_channel.tres +++ b/fish/species/catfish_channel/catfish_channel.tres @@ -17,6 +17,7 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"catfish_channel" display_name = "channel catfish" +allowed_water_types = 1 rarity = 0 base_catch_weight = 2.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_flathead/catfish_flathead.tres b/fish/species/catfish_flathead/catfish_flathead.tres index c9440df..1c93599 100644 --- a/fish/species/catfish_flathead/catfish_flathead.tres +++ b/fish/species/catfish_flathead/catfish_flathead.tres @@ -17,6 +17,7 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"catfish_flathead" display_name = "flathead catfish" +allowed_water_types = 1 rarity = 1 base_catch_weight = 1.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/catfish_white/catfish_white.tres b/fish/species/catfish_white/catfish_white.tres index d0c775c..8059d7d 100644 --- a/fish/species/catfish_white/catfish_white.tres +++ b/fish/species/catfish_white/catfish_white.tres @@ -17,6 +17,7 @@ preferred_bait_weight_multiplier = 1.35 script = ExtResource("1_fish_data") id = &"catfish_white" display_name = "white catfish" +allowed_water_types = 1 rarity = 0 base_catch_weight = 2.0 catch_profile = ExtResource("2_profile") diff --git a/fish/species/sunfish/sunfish.tres b/fish/species/sunfish/sunfish.tres index 2346b71..c1d6200 100644 --- a/fish/species/sunfish/sunfish.tres +++ b/fish/species/sunfish/sunfish.tres @@ -9,6 +9,7 @@ script = ExtResource("1_fish_data") id = &"sunfish" display_name = "sunfish" +allowed_water_types = 2 rarity = 0 base_catch_weight = 7.0 catch_profile = ExtResource("2_profile") diff --git a/fishing/fishing_context.gd b/fishing/fishing_context.gd index 55b119f..b5b3984 100644 --- a/fishing/fishing_context.gd +++ b/fishing/fishing_context.gd @@ -2,6 +2,7 @@ class_name FishingContext extends RefCounted var location_tags: Array[StringName] = [] +var water_type: WaterType.Type = WaterType.Type.FRESH_WATER var active_event_tags: Array[StringName] = [] var active_bait_tags: Array[StringName] = [] var is_night: bool = false diff --git a/fishing/fishing_spot.gd b/fishing/fishing_spot.gd index f4bae1e..2a0b242 100644 --- a/fishing/fishing_spot.gd +++ b/fishing/fishing_spot.gd @@ -1110,6 +1110,7 @@ func _build_fishing_context( ) -> FishingContextType: var context := FishingContextType.new() context.location_tags = region.location_tags.duplicate() + context.water_type = region.water_type context.active_event_tags = context_event_tags.duplicate() context.active_bait_tags = context_bait_tags.duplicate() context.is_night = context_is_night diff --git a/network/network_fishing_service.gd b/network/network_fishing_service.gd index 23a8ce7..fb8a4be 100644 --- a/network/network_fishing_service.gd +++ b/network/network_fishing_service.gd @@ -269,7 +269,9 @@ func _handle_cast_request(peer_id: int, data: Dictionary) -> void: var selected_fish: FishDataType = _select_authoritative_fish( region, data, effects ) - if selected_fish == null: + if selected_fish == null or not selected_fish.is_allowed_in_water( + region.water_type + ): _record_and_reject(peer_id, request_id, "Nothing is biting here.") return var attempt := NetworkFishingAttempt.new() @@ -389,7 +391,11 @@ func _select_authoritative_fish( ) selector.begin_roll() var context: FishingContextType = _fishing_spot.build_network_context(region) - return selector.select_fish(region.fish_pool, context, evidence_log) + var selected_fish := selector.select_fish( + region.fish_pool, context, evidence_log + ) + evidence_log.free() + return selected_fish func _start_bite(attempt: NetworkFishingAttempt) -> void: diff --git a/scripts/bake_shoreline_ribbons.gd b/scripts/bake_shoreline_ribbons.gd new file mode 100644 index 0000000..c030579 --- /dev/null +++ b/scripts/bake_shoreline_ribbons.gd @@ -0,0 +1,42 @@ +extends SceneTree + +const REGION_SCENE := preload("res://world/regions/starter_island_region.tscn") +func _initialize() -> void: + call_deferred("_bake") + + +func _bake() -> void: + var started := Time.get_ticks_usec() + var region := REGION_SCENE.instantiate() + root.add_child(region) + var baker := region.get_node_or_null("ShorelineRibbonBaker") as ShorelineRibbonBaker + if baker == null: + push_error("The map does not contain a configured ShorelineRibbonBaker.") + quit(1) + return + var results := baker.rebuild_all() + if results.size() != baker.water_bodies.size(): + quit(1) + return + for result: Dictionary in results: + if result.get("skipped", false): + print( + "Shoreline %s: type=%s skipped intentionally" + % [result["output_path"], WaterType.label(result["water_type"])] + ) + continue + print( + "Shoreline %s: type=%s segments=%d loops=%d raw=%d simplified=%d smoothed=%d triangles=%d" + % [ + result["output_path"], + WaterType.label(result["water_type"]), + result["segment_count"], + result["loop_count"], + result["raw_point_count"], + result["simplified_point_count"], + result["smoothed_point_count"], + result["triangle_count"], + ] + ) + print("Shoreline bake completed in %.2f ms" % ((Time.get_ticks_usec() - started) / 1000.0)) + quit() diff --git a/scripts/bake_shoreline_ribbons.gd.uid b/scripts/bake_shoreline_ribbons.gd.uid new file mode 100644 index 0000000..7b789be --- /dev/null +++ b/scripts/bake_shoreline_ribbons.gd.uid @@ -0,0 +1 @@ +uid://eosavaa6wu1e diff --git a/tests/fish_catalog_content_validation.gd b/tests/fish_catalog_content_validation.gd index 50505c1..c0c4dc1 100644 --- a/tests/fish_catalog_content_validation.gd +++ b/tests/fish_catalog_content_validation.gd @@ -10,15 +10,22 @@ const FishingContextType = preload("res://fishing/fishing_context.gd") const NetworkSaleServiceType = preload( "res://network/network_sale_service.gd" ) +const NetworkFishingServiceType = preload( + "res://network/network_fishing_service.gd" +) +const FishingSpotType = preload("res://fishing/fishing_spot.gd") const Catalog: FishPoolType = preload("res://fish/pools/fish_catalog.tres") const PondPool: FishPoolType = preload( "res://fish/pools/starter_pond_pool.tres" ) const OceanPool: FishPoolType = preload( - "res://fish/pools/test_water_pool.tres" + "res://fish/pools/starter_ocean_pool.tres" ) const PelicanBuyer = preload("res://economy/buyers/pelicans.tres") +const StarterRegionScene = preload( + "res://world/regions/starter_island_region.tscn" +) const ORIGINAL_IDS: Array[StringName] = [ &"bluegill", &"bass", &"carp", &"sunfish", @@ -29,6 +36,11 @@ const CATFISH_IDS: Array[StringName] = [ &"catfish_flathead", &"catfish_white", ] +const FRESH_WATER_IDS: Array[StringName] = [ + &"bluegill", &"carp", &"catfish_blue", &"catfish_channel", + &"catfish_flathead", &"catfish_white", +] +const SALT_WATER_IDS: Array[StringName] = [&"bass", &"sunfish"] func _initialize() -> void: @@ -37,6 +49,8 @@ func _initialize() -> void: func _run() -> void: _validate_catalog_and_pools() + _validate_starter_water_bodies() + _validate_authoritative_water_filter() _validate_catches_and_authoritative_sale() print("Fish catalog content validation: PASS") quit() @@ -44,14 +58,26 @@ func _run() -> void: func _validate_catalog_and_pools() -> void: assert(Catalog.candidates.size() == 8) - assert(PondPool.candidates.size() == 8) - assert(OceanPool.candidates.size() == 4) + assert(PondPool.candidates.size() == 6) + assert(OceanPool.candidates.size() == 2) for fish_id: StringName in ORIGINAL_IDS: var original_fish: FishDataType = Catalog.get_fish_by_id(fish_id) assert(original_fish != null) assert(original_fish.is_selectable()) - assert(PondPool.get_fish_by_id(fish_id) != null) - assert(OceanPool.get_fish_by_id(fish_id) != null) + for fish_id: StringName in FRESH_WATER_IDS: + var fresh_fish: FishDataType = Catalog.get_fish_by_id(fish_id) + assert(PondPool.get_fish_by_id(fish_id) == fresh_fish) + assert(OceanPool.get_fish_by_id(fish_id) == null) + assert(fresh_fish.is_allowed_in_water(WaterType.Type.FRESH_WATER)) + assert(not fresh_fish.is_allowed_in_water(WaterType.Type.SALT_WATER)) + assert(LogbookCatalog.category_for(fresh_fish) == WaterType.Type.FRESH_WATER) + for fish_id: StringName in SALT_WATER_IDS: + var salt_fish: FishDataType = Catalog.get_fish_by_id(fish_id) + assert(OceanPool.get_fish_by_id(fish_id) == salt_fish) + assert(PondPool.get_fish_by_id(fish_id) == null) + assert(salt_fish.is_allowed_in_water(WaterType.Type.SALT_WATER)) + assert(not salt_fish.is_allowed_in_water(WaterType.Type.FRESH_WATER)) + assert(LogbookCatalog.category_for(salt_fish) == WaterType.Type.SALT_WATER) for fish_id: StringName in CATFISH_IDS: var fish: FishDataType = Catalog.get_fish_by_id(fish_id) assert(fish != null) @@ -59,9 +85,7 @@ func _validate_catalog_and_pools() -> void: assert(PondPool.get_fish_by_id(fish_id) == fish) assert(OceanPool.get_fish_by_id(fish_id) == null) assert(fish.availability.allowed_location_tags == [&"starter_pond"]) - assert(LogbookCatalog.category_for(fish) == ( - LogbookCatalog.Category.FRESH_WATER - )) + assert(LogbookCatalog.category_for(fish) == WaterType.Type.FRESH_WATER) var expected_values: Dictionary[StringName, Array] = { &"catfish_blue": [1, 1.25, 3.0, 12.0, 6, 9], @@ -81,8 +105,10 @@ func _validate_catalog_and_pools() -> void: var pond_context := FishingContextType.new() pond_context.location_tags = [&"starter_pond"] + pond_context.water_type = WaterType.Type.FRESH_WATER var ocean_context := FishingContextType.new() ocean_context.location_tags = [&"coast", &"ocean"] + ocean_context.water_type = WaterType.Type.SALT_WATER for fish_id: StringName in CATFISH_IDS: var fish: FishDataType = Catalog.get_fish_by_id(fish_id) assert(fish.availability.is_available(pond_context)) @@ -99,6 +125,94 @@ func _validate_catalog_and_pools() -> void: ) == fish ) collection.free() + for fish_id: StringName in SALT_WATER_IDS: + var fish: FishDataType = Catalog.get_fish_by_id(fish_id) + var single_species_pool := FishPoolType.new() + single_species_pool.candidates = [fish] + var collection := CollectionLogType.new() + var selector := FishSelectorType.new() + selector.use_deterministic_test_seed = true + selector.begin_roll() + assert( + selector.select_fish(single_species_pool, pond_context, collection) + == null + ) + assert( + selector.select_fish(single_species_pool, ocean_context, collection) + == fish + ) + collection.free() + + +func _validate_authoritative_water_filter() -> void: + var fishing_spot := FishingSpotType.new() + var service := NetworkFishingServiceType.new() + service.set("_fish_catalog", Catalog) + service.set("_fishing_spot", fishing_spot) + var pond_region := FishableWaterRegion.new() + pond_region.water_type = WaterType.Type.FRESH_WATER + pond_region.fish_pool = PondPool + pond_region.location_tags = [&"starter_pond"] + var ocean_region := FishableWaterRegion.new() + ocean_region.water_type = WaterType.Type.SALT_WATER + ocean_region.fish_pool = OceanPool + ocean_region.location_tags = [&"coast", &"ocean"] + var stale_salt_pool_region := FishableWaterRegion.new() + stale_salt_pool_region.water_type = WaterType.Type.FRESH_WATER + stale_salt_pool_region.fish_pool = OceanPool + stale_salt_pool_region.location_tags = [&"starter_pond"] + var stale_fresh_pool_region := FishableWaterRegion.new() + stale_fresh_pool_region.water_type = WaterType.Type.SALT_WATER + stale_fresh_pool_region.fish_pool = PondPool + stale_fresh_pool_region.location_tags = [&"coast", &"ocean"] + var evidence := {"discovered_fish_ids": []} + assert( + service.call("_select_authoritative_fish", pond_region, evidence, null) + != null + ) + assert( + service.call("_select_authoritative_fish", ocean_region, evidence, null) + != null + ) + assert( + service.call( + "_select_authoritative_fish", stale_salt_pool_region, evidence, null + ) == null + ) + assert( + service.call( + "_select_authoritative_fish", stale_fresh_pool_region, evidence, null + ) == null + ) + service.free() + fishing_spot.free() + pond_region.free() + ocean_region.free() + stale_salt_pool_region.free() + stale_fresh_pool_region.free() + + +func _validate_starter_water_bodies() -> void: + var region := StarterRegionScene.instantiate() + var pond := region.get_node("WaterBodies/Pond/FishingRegion") as FishableWaterRegion + var ocean := region.get_node( + "WaterBodies/Ocean/FishingRegions/OceanFishingRegion" + ) as FishableWaterRegion + assert(pond.water_type == WaterType.Type.FRESH_WATER) + assert(ocean.water_type == WaterType.Type.SALT_WATER) + assert(pond.fish_pool == PondPool) + assert(ocean.fish_pool == OceanPool) + assert(region.get_node_or_null("ShorelineRibbons/Pond") == null) + assert(region.get_node_or_null("ShorelineRibbons/Ocean") != null) + var pond_material := ( + region.get_node("WaterBodies/Pond/VisualWater") as MeshInstance3D + ).material_override as ShaderMaterial + var ocean_material := ( + region.get_node("WaterBodies/Ocean/VisualWater") as MeshInstance3D + ).material_override as ShaderMaterial + assert(not bool(pond_material.get_shader_parameter("tide_effect_enabled"))) + assert(bool(ocean_material.get_shader_parameter("tide_effect_enabled"))) + region.free() func _validate_catches_and_authoritative_sale() -> void: diff --git a/tests/logbook_runtime_validation.gd b/tests/logbook_runtime_validation.gd index 1b27a33..d3bc3c9 100644 --- a/tests/logbook_runtime_validation.gd +++ b/tests/logbook_runtime_validation.gd @@ -45,20 +45,20 @@ func _run() -> void: assert(not hotbar.visible) var entry_buttons: Dictionary = logbook.get("_entry_buttons") - assert(entry_buttons.size() == 4) + assert(entry_buttons.size() == 0) await _capture_if_requested("-unknown") logbook.call( - "_select_category", LogbookCatalog.Category.FRESH_WATER + "_select_category", WaterType.Type.FRESH_WATER ) await create_timer(0.25).timeout - assert((logbook.get("_entry_buttons") as Dictionary).size() == 4) + assert((logbook.get("_entry_buttons") as Dictionary).size() == 6) await _capture_if_requested("-fresh") - logbook.call("_select_category", LogbookCatalog.Category.SALT_WATER) + logbook.call("_select_category", WaterType.Type.SALT_WATER) await create_timer(0.25).timeout - assert((logbook.get("_entry_buttons") as Dictionary).is_empty()) - logbook.call("_select_category", LogbookCatalog.Category.OTHER) + assert((logbook.get("_entry_buttons") as Dictionary).size() == 2) + logbook.call("_select_category", WaterType.Type.FRESH_WATER) await create_timer(0.25).timeout - assert((logbook.get("_entry_buttons") as Dictionary).size() == 4) + assert((logbook.get("_entry_buttons") as Dictionary).size() == 6) player.collection_log.mark_discovered(&"bluegill") await process_frame logbook.call("_select_entry", &"bluegill", &"bluegill") diff --git a/tests/logbook_validation.gd b/tests/logbook_validation.gd index f569215..aa66108 100644 --- a/tests/logbook_validation.gd +++ b/tests/logbook_validation.gd @@ -48,10 +48,10 @@ func _validate_catalog() -> void: for index: int in expected_ids.size(): var fish := CatalogResource.get_fish_by_id(expected_ids[index]) assert(fish != null) - var expected_category: LogbookCatalog.Category = ( - LogbookCatalog.Category.OTHER - if index < 4 - else LogbookCatalog.Category.FRESH_WATER + var expected_category: WaterType.Type = ( + WaterType.Type.SALT_WATER + if expected_ids[index] in [&"bass", &"sunfish"] + else WaterType.Type.FRESH_WATER ) assert( LogbookCatalog.category_for(fish) @@ -59,7 +59,7 @@ func _validate_catalog() -> void: ) assert(LogbookCatalog.catalog_number(fish.id) == index + 1) assert( - LogbookCatalog.empty_state(LogbookCatalog.Category.SALT_WATER) + LogbookCatalog.empty_state(WaterType.Type.SALT_WATER) == "No saltwater catches cataloged yet." ) @@ -78,14 +78,14 @@ func _validate_page() -> void: var shared_material: Material var silhouette_count: int = 0 - for category: LogbookCatalog.Category in [ - LogbookCatalog.Category.FRESH_WATER, - LogbookCatalog.Category.OTHER, + for category: WaterType.Type in [ + WaterType.Type.FRESH_WATER, + WaterType.Type.SALT_WATER, ]: page.call("_select_category", category) await create_timer(0.25).timeout var entries: Dictionary = page.get("_entry_buttons") - assert(entries.size() == 4) + assert(entries.size() == (6 if category == WaterType.Type.FRESH_WATER else 2)) for fish: FishDataType in LogbookCatalog.ordered_species( CatalogResource.candidates ): @@ -133,14 +133,14 @@ func _validate_page() -> void: ) assert(silhouette_count == 8) - page.call("_select_category", LogbookCatalog.Category.SALT_WATER) + page.call("_select_category", WaterType.Type.OTHER) await create_timer(0.25).timeout assert((page.get("_entry_buttons") as Dictionary).is_empty()) assert( (page.get("_empty_state") as Label).text - == "No saltwater catches cataloged yet." + == "No entries available." ) - page.call("_select_category", LogbookCatalog.Category.OTHER) + page.call("_select_category", WaterType.Type.FRESH_WATER) await create_timer(0.25).timeout var bluegill = CatalogResource.get_fish_by_id(&"bluegill") @@ -175,7 +175,7 @@ func _validate_page() -> void: await process_frame assert(_detail_text(page).contains("number owned\n1")) assert(_detail_text(page).contains("number caught\nUnknown")) - assert(_detail_text(page).contains("body of water\nUnknown")) + assert(_detail_text(page).contains("body of water\nFresh Water")) assert(_detail_text(page).contains("catalog number\n#001")) inventory.remove_catch_by_id(fish_catch.catch_id) diff --git a/ui/logbook_catalog.gd b/ui/logbook_catalog.gd index be7b703..dbd7aa6 100644 --- a/ui/logbook_catalog.gd +++ b/ui/logbook_catalog.gd @@ -3,12 +3,6 @@ extends RefCounted const FishDataType = preload("res://fish/fish_data.gd") -enum Category { - FRESH_WATER, - SALT_WATER, - OTHER, -} - # Catalog numbers are a presentation contract. Add future species deliberately; # filtering and display order must not redefine an existing number. const CATALOG_ORDER: Array[StringName] = [ @@ -22,41 +16,21 @@ const CATALOG_ORDER: Array[StringName] = [ &"catfish_white", ] -# These maps remain explicit until fish resources gain authored habitat fields. -const FRESH_WATER_IDS: Array[StringName] = [ - &"catfish_blue", - &"catfish_channel", - &"catfish_flathead", - &"catfish_white", -] -const SALT_WATER_IDS: Array[StringName] = [] - - -static func category_for(fish: FishDataType) -> Category: +static func category_for(fish: FishDataType) -> WaterType.Type: if fish == null: - return Category.OTHER - if fish.id in FRESH_WATER_IDS: - return Category.FRESH_WATER - if fish.id in SALT_WATER_IDS: - return Category.SALT_WATER - return Category.OTHER + return WaterType.Type.OTHER + return fish.get_primary_water_type() -static func category_label(category: Category) -> String: +static func category_label(category: WaterType.Type) -> String: + return WaterType.label(category) + + +static func empty_state(category: WaterType.Type) -> String: match category: - Category.FRESH_WATER: - return "Fresh Water" - Category.SALT_WATER: - return "Salt Water" - _: - return "Other" - - -static func empty_state(category: Category) -> String: - match category: - Category.FRESH_WATER: + WaterType.Type.FRESH_WATER: return "No freshwater catches cataloged yet." - Category.SALT_WATER: + WaterType.Type.SALT_WATER: return "No saltwater catches cataloged yet." _: return "No entries available." diff --git a/ui/logbook_page.gd b/ui/logbook_page.gd index 4b29621..b2202b1 100644 --- a/ui/logbook_page.gd +++ b/ui/logbook_page.gd @@ -21,7 +21,7 @@ const LOGBOOK_TAB_LEFT_INSET: float = 34.0 var _collection_log: CollectionLogType var _inventory: FishInventoryType var _catalog: FishPoolType -var _category: LogbookCatalog.Category = LogbookCatalog.Category.OTHER +var _category: WaterType.Type = WaterType.Type.OTHER var _selected_id: StringName var _selected_entry_key: StringName var _active: bool = false @@ -148,10 +148,10 @@ func _build_interface() -> void: tabs.mouse_filter = Control.MOUSE_FILTER_PASS tabs.add_theme_constant_override("separation", 6) stack.add_child(tabs) - for category: LogbookCatalog.Category in [ - LogbookCatalog.Category.FRESH_WATER, - LogbookCatalog.Category.SALT_WATER, - LogbookCatalog.Category.OTHER, + for category: WaterType.Type in [ + WaterType.Type.FRESH_WATER, + WaterType.Type.SALT_WATER, + WaterType.Type.OTHER, ]: var tab := OrganizerTabType.new() tab.custom_minimum_size = Vector2(124, 38) @@ -362,7 +362,7 @@ func _add_unknown_entry_content( content.add_child(discovery_hint) -func _select_category(category: LogbookCatalog.Category) -> void: +func _select_category(category: WaterType.Type) -> void: if category == _category: return _category = category @@ -516,7 +516,7 @@ func _build_known_details(fish: FishDataType) -> void: "#%03d" % catalog_number if catalog_number > 0 else "Unknown", ) _add_detail_row("rarity", fish.get_rarity_name()) - _add_detail_row("body of water", "Unknown") + _add_detail_row("body of water", WaterType.label(fish.get_primary_water_type())) _add_detail_row("time of day", _availability_text(fish)) _add_detail_row( "weight range", diff --git a/world/README-WORLD-AUTHORING.md b/world/README-WORLD-AUTHORING.md index 23c960c..d596c05 100644 --- a/world/README-WORLD-AUTHORING.md +++ b/world/README-WORLD-AUTHORING.md @@ -34,6 +34,12 @@ children. Child transforms are local offsets owned by that feature. ## Water bodies +Every fishable region must author its `water_type` explicitly. The starter pond +is `FRESH_WATER`; the starter coast is `SALT_WATER`. Fish species use the same +central type definition through an allowed-water-type bitmask, so pool contents +and authoritative selection are both validated against the region. Do not infer +habitat from node names, pool filenames, coordinates, or water height. + Select `WaterBodies/Pond` to move or resize the pond. Its transform is the authoritative surface position. The `surface_size`, fishing padding, recovery padding, and recovery depth properties update the visible water and gameplay @@ -86,3 +92,36 @@ for provisional props when visual and collision scale together. Avoid non-uniform root scaling because it can deform collision and imported geometry unpredictably. Make mutable per-instance shapes, meshes, and materials local to the scene so editing one prop does not change unrelated instances. + +## Shoreline tide ribbons + +Each map that uses generated tide ribbons owns a `ShorelineRibbonBaker` node and +one `ShorelineRibbonConfig` resource per water body. Each fishable water body +declares the shared `WaterType` value used by fishing, Logbook classification, +and shoreline presentation. A configuration designates +only the static terrain `CollisionShape3D` or `MeshInstance3D` to intersect, the +water height, explicit generation bounds, water-facing reference, optional +smoothing overrides, and the generated `.tres` output path. Props, docks, +players, bobbers, and gameplay areas are not scanned unless a map author +explicitly selects one as the terrain source. The baker reports every configured +body but intentionally generates ribbons only for `SALT_WATER`; freshwater uses +the shared depth-tinted shader without tide marks or an advancing wash. + +To rebuild in the editor, select the map's `ShorelineRibbonBaker` node and press +**Rebuild Shoreline Ribbons** in the Inspector. The equivalent validation/CI +command for the starter map is: + +```sh +godot --headless --path . --script scripts/bake_shoreline_ribbons.gd +``` + +Set the baker's `debug_path_stage` to Raw, Simplified, or Smoothed before an +editor rebuild to compare the extraction stages. Keep it Off in the finished +scene; the temporary editor-only line preview is never saved as gameplay data. + +Rebuild a saltwater ribbon only when its terrain at the waterline, configured +water height, or generation bounds change. Freshwater terrain changes do not +require a ribbon rebuild because freshwater bodies have no ribbon. Adding or +moving unrelated props, fishing areas, recovery volumes, or other gameplay +nodes does not require a rebuild. Normal gameplay loads the committed generated +saltwater meshes and never runs the extraction step. diff --git a/world/fishable_water_region.gd b/world/fishable_water_region.gd index 93ef942..1887f2a 100644 --- a/world/fishable_water_region.gd +++ b/world/fishable_water_region.gd @@ -10,6 +10,7 @@ enum SurfaceHeightMode { } @export var location_tags: Array[StringName] = [] +@export var water_type: WaterType.Type = WaterType.Type.FRESH_WATER @export var fish_pool: FishPoolType @export var selection_priority: int = 0 @export_group("Surface") diff --git a/world/generated/shorelines/starter_ocean_shoreline.tres b/world/generated/shorelines/starter_ocean_shoreline.tres new file mode 100644 index 0000000..2481c43 --- /dev/null +++ b/world/generated/shorelines/starter_ocean_shoreline.tres @@ -0,0 +1,14 @@ +[gd_resource type="ArrayMesh" format=4] + +[resource] +_surfaces = [{ +"aabb": AABB(-28.317474, -0.432, -27.355175, 55.825676, 1e-05, 52.391964), +"attribute_data": PackedByteArray("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"), +"format": 34359742487, +"index_count": 5436, +"index_data": PackedByteArray("AAACAAEAAQACAAMAAgAEAAMAAwAEAAUABAAGAAUABQAGAAcABgAIAAcABwAIAAkACAAKAAkACQAKAAsACgAMAAsACwAMAA0ADAAOAA0ADQAOAA8ADgAQAA8ADwAQABEAEAASABEAEQASABMAEgAUABMAEwAUABUAFAAWABUAFQAWABcAFgAYABcAFwAYABkAGAAaABkAGQAaABsAGgAcABsAGwAcAB0AHAAeAB0AHQAeAB8AHgAgAB8AHwAgACEAIAAiACEAIQAiACMAIgAkACMAIwAkACUAJAAmACUAJQAmACcAJgAoACcAJwAoACkAKAAqACkAKQAqACsAKgAsACsAKwAsAC0ALAAuAC0ALQAuAC8ALgAwAC8ALwAwADEAMAAyADEAMQAyADMAMgA0ADMAMwA0ADUANAA2ADUANQA2ADcANgA4ADcANwA4ADkAOAA6ADkAOQA6ADsAOgA8ADsAOwA8AD0APAA+AD0APQA+AD8APgBAAD8APwBAAEEAQABCAEEAQQBCAEMAQgBEAEMAQwBEAEUARABGAEUARQBGAEcARgBIAEcARwBIAEkASABKAEkASQBKAEsASgBMAEsASwBMAE0ATABOAE0ATQBOAE8ATgBQAE8ATwBQAFEAUABSAFEAUQBSAFMAUgBUAFMAUwBUAFUAVABWAFUAVQBWAFcAVgBYAFcAVwBYAFkAWABaAFkAWQBaAFsAWgBcAFsAWwBcAF0AXABeAF0AXQBeAF8AXgBgAF8AXwBgAGEAYABiAGEAYQBiAGMAYgBkAGMAYwBkAGUAZABmAGUAZQBmAGcAZgBoAGcAZwBoAGkAaABqAGkAaQBqAGsAagBsAGsAawBsAG0AbABuAG0AbQBuAG8AbgBwAG8AbwBwAHEAcAByAHEAcQByAHMAcgB0AHMAcwB0AHUAdAB2AHUAdQB2AHcAdgB4AHcAdwB4AHkAeAB6AHkAeQB6AHsAegB8AHsAewB8AH0AfAB+AH0AfQB+AH8AfgCAAH8AfwCAAIEAgACCAIEAgQCCAIMAggCEAIMAgwCEAIUAhACGAIUAhQCGAIcAhgCIAIcAhwCIAIkAiACKAIkAiQCKAIsAigCMAIsAiwCMAI0AjACOAI0AjQCOAI8AjgCQAI8AjwCQAJEAkACSAJEAkQCSAJMAkgCUAJMAkwCUAJUAlACWAJUAlQCWAJcAlgCYAJcAlwCYAJkAmACaAJkAmQCaAJsAmgCcAJsAmwCcAJ0AnACeAJ0AnQCeAJ8AngCgAJ8AnwCgAKEAoACiAKEAoQCiAKMAogCkAKMAowCkAKUApACmAKUApQCmAKcApgCoAKcApwCoAKkAqACqAKkAqQCqAKsAqgCsAKsAqwCsAK0ArACuAK0ArQCuAK8ArgCwAK8ArwCwALEAsACyALEAsQCyALMAsgC0ALMAswC0ALUAtAC2ALUAtQC2ALcAtgC4ALcAtwC4ALkAuAC6ALkAuQC6ALsAugC8ALsAuwC8AL0AvAC+AL0AvQC+AL8AvgDAAL8AvwDAAMEAwADCAMEAwQDCAMMAwgDEAMMAwwDEAMUAxADGAMUAxQDGAMcAxgDIAMcAxwDIAMkAyADKAMkAyQDKAMsAygDMAMsAywDMAM0AzADOAM0AzQDOAM8AzgDQAM8AzwDQANEA0ADSANEA0QDSANMA0gDUANMA0wDUANUA1ADWANUA1QDWANcA1gDYANcA1wDYANkA2ADaANkA2QDaANsA2gDcANsA2wDcAN0A3ADeAN0A3QDeAN8A3gDgAN8A3wDgAOEA4ADiAOEA4QDiAOMA4gDkAOMA4wDkAOUA5ADmAOUA5QDmAOcA5gDoAOcA5wDoAOkA6ADqAOkA6QDqAOsA6gDsAOsA6wDsAO0A7ADuAO0A7QDuAO8A7gDwAO8A7wDwAPEA8ADyAPEA8QDyAPMA8gD0APMA8wD0APUA9AD2APUA9QD2APcA9gD4APcA9wD4APkA+AD6APkA+QD6APsA+gD8APsA+wD8AP0A/AD+AP0A/QD+AP8A/gAAAf8A/wAAAQEBAAECAQEBAQECAQMBAgEEAQMBAwEEAQUBBAEGAQUBBQEGAQcBBgEIAQcBBwEIAQkBCAEKAQkBCQEKAQsBCgEMAQsBCwEMAQ0BDAEOAQ0BDQEOAQ8BDgEQAQ8BDwEQAREBEAESAREBEQESARMBEgEUARMBEwEUARUBFAEWARUBFQEWARcBFgEYARcBFwEYARkBGAEaARkBGQEaARsBGgEcARsBGwEcAR0BHAEeAR0BHQEeAR8BHgEgAR8BHwEgASEBIAEiASEBIQEiASMBIgEkASMBIwEkASUBJAEmASUBJQEmAScBJgEoAScBJwEoASkBKAEqASkBKQEqASsBKgEsASsBKwEsAS0BLAEuAS0BLQEuAS8BLgEwAS8BLwEwATEBMAEyATEBMQEyATMBMgE0ATMBMwE0ATUBNAE2ATUBNQE2ATcBNgE4ATcBNwE4ATkBOAE6ATkBOQE6ATsBOgE8ATsBOwE8AT0BPAE+AT0BPQE+AT8BPgFAAT8BPwFAAUEBQAFCAUEBQQFCAUMBQgFEAUMBQwFEAUUBRAFGAUUBRQFGAUcBRgFIAUcBRwFIAUkBSAFKAUkBSQFKAUsBSgFMAUsBSwFMAU0BTAFOAU0BTQFOAU8BTgFQAU8BTwFQAVEBUAFSAVEBUQFSAVMBUgFUAVMBUwFUAVUBVAFWAVUBVQFWAVcBVgFYAVcBVwFYAVkBWAFaAVkBWQFaAVsBWgFcAVsBWwFcAV0BXAFeAV0BXQFeAV8BXgFgAV8BXwFgAWEBYAFiAWEBYQFiAWMBYgFkAWMBYwFkAWUBZAFmAWUBZQFmAWcBZgFoAWcBZwFoAWkBaAFqAWkBaQFqAWsBagFsAWsBawFsAW0BbAFuAW0BbQFuAW8BbgFwAW8BbwFwAXEBcAFyAXEBcQFyAXMBcgF0AXMBcwF0AXUBdAF2AXUBdQF2AXcBdgF4AXcBdwF4AXkBeAF6AXkBeQF6AXsBegF8AXsBewF8AX0BfAF+AX0BfQF+AX8BfgGAAX8BfwGAAYEBgAGCAYEBgQGCAYMBggGEAYMBgwGEAYUBhAGGAYUBhQGGAYcBhgGIAYcBhwGIAYkBiAGKAYkBiQGKAYsBigGMAYsBiwGMAY0BjAGOAY0BjQGOAY8BjgGQAY8BjwGQAZEBkAGSAZEBkQGSAZMBkgGUAZMBkwGUAZUBlAGWAZUBlQGWAZcBlgGYAZcBlwGYAZkBmAGaAZkBmQGaAZsBmgGcAZsBmwGcAZ0BnAGeAZ0BnQGeAZ8BngGgAZ8BnwGgAaEBoAGiAaEBoQGiAaMBogGkAaMBowGkAaUBpAGmAaUBpQGmAacBpgGoAacBpwGoAakBqAGqAakBqQGqAasBqgGsAasBqwGsAa0BrAGuAa0BrQGuAa8BrgGwAa8BrwGwAbEBsAGyAbEBsQGyAbMBsgG0AbMBswG0AbUBtAG2AbUBtQG2AbcBtgG4AbcBtwG4AbkBuAG6AbkBuQG6AbsBugG8AbsBuwG8Ab0BvAG+Ab0BvQG+Ab8BvgHAAb8BvwHAAcEBwAHCAcEBwQHCAcMBwgHEAcMBwwHEAcUBxAHGAcUBxQHGAccBxgHIAccBxwHIAckByAHKAckByQHKAcsBygHMAcsBywHMAc0BzAHOAc0BzQHOAc8BzgHQAc8BzwHQAdEB0AHSAdEB0QHSAdMB0gHUAdMB0wHUAdUB1AHWAdUB1QHWAdcB1gHYAdcB1wHYAdkB2AHaAdkB2QHaAdsB2gHcAdsB2wHcAd0B3AHeAd0B3QHeAd8B3gHgAd8B3wHgAeEB4AHiAeEB4QHiAeMB4gHkAeMB4wHkAeUB5AHmAeUB5QHmAecB5gHoAecB5wHoAekB6AHqAekB6QHqAesB6gHsAesB6wHsAe0B7AHuAe0B7QHuAe8B7gHwAe8B7wHwAfEB8AHyAfEB8QHyAfMB8gH0AfMB8wH0AfUB9AH2AfUB9QH2AfcB9gH4AfcB9wH4AfkB+AH6AfkB+QH6AfsB+gH8AfsB+wH8Af0B/AH+Af0B/QH+Af8B/gEAAv8B/wEAAgECAAICAgECAQICAgMCAgIEAgMCAwIEAgUCBAIGAgUCBQIGAgcCBgIIAgcCBwIIAgkCCAIKAgkCCQIKAgsCCgIMAgsCCwIMAg0CDAIOAg0CDQIOAg8CDgIQAg8CDwIQAhECEAISAhECEQISAhMCEgIUAhMCEwIUAhUCFAIWAhUCFQIWAhcCFgIYAhcCFwIYAhkCGAIaAhkCGQIaAhsCGgIcAhsCGwIcAh0CHAIeAh0CHQIeAh8CHgIgAh8CHwIgAiECIAIiAiECIQIiAiMCIgIkAiMCIwIkAiUCJAImAiUCJQImAicCJgIoAicCJwIoAikCKAIqAikCKQIqAisCKgIsAisCKwIsAi0CLAIuAi0CLQIuAi8CLgIwAi8CLwIwAjECMAIyAjECMQIyAjMCMgI0AjMCMwI0AjUCNAI2AjUCNQI2AjcCNgI4AjcCNwI4AjkCOAI6AjkCOQI6AjsCOgI8AjsCOwI8Aj0CPAI+Aj0CPQI+Aj8CPgJAAj8CPwJAAkECQAJCAkECQQJCAkMCQgJEAkMCQwJEAkUCRAJGAkUCRQJGAkcCRgJIAkcCRwJIAkkCSAJKAkkCSQJKAksCSgJMAksCSwJMAk0CTAJOAk0CTQJOAk8CTgJQAk8CTwJQAlECUAJSAlECUQJSAlMCUgJUAlMCUwJUAlUCVAJWAlUCVQJWAlcCVgJYAlcCVwJYAlkCWAJaAlkCWQJaAlsCWgJcAlsCWwJcAl0CXAJeAl0CXQJeAl8CXgJgAl8CXwJgAmECYAJiAmECYQJiAmMCYgJkAmMCYwJkAmUCZAJmAmUCZQJmAmcCZgJoAmcCZwJoAmkCaAJqAmkCaQJqAmsCagJsAmsCawJsAm0CbAJuAm0CbQJuAm8CbgJwAm8CbwJwAnECcAJyAnECcQJyAnMCcgJ0AnMCcwJ0AnUCdAJ2AnUCdQJ2AncCdgJ4AncCdwJ4AnkCeAJ6AnkCeQJ6AnsCegJ8AnsCewJ8An0CfAJ+An0CfQJ+An8CfgKAAn8CfwKAAoECgAKCAoECgQKCAoMCggKEAoMCgwKEAoUChAKGAoUChQKGAocChgKIAocChwKIAokCiAKKAokCiQKKAosCigKMAosCiwKMAo0CjAKOAo0CjQKOAo8CjgKQAo8CjwKQApECkAKSApECkQKSApMCkgKUApMCkwKUApUClAKWApUClQKWApcClgKYApcClwKYApkCmAKaApkCmQKaApsCmgKcApsCmwKcAp0CnAKeAp0CnQKeAp8CngKgAp8CnwKgAqECoAKiAqECoQKiAqMCogKkAqMCowKkAqUCpAKmAqUCpQKmAqcCpgKoAqcCpwKoAqkCqAKqAqkCqQKqAqsCqgKsAqsCqwKsAq0CrAKuAq0CrQKuAq8CrgKwAq8CrwKwArECsAKyArECsQKyArMCsgK0ArMCswK0ArUCtAK2ArUCtQK2ArcCtgK4ArcCtwK4ArkCuAK6ArkCuQK6ArsCugK8ArsCuwK8Ar0CvAK+Ar0CvQK+Ar8CvgLAAr8CvwLAAsECwALCAsECwQLCAsMCwgLEAsMCwwLEAsUCxALGAsUCxQLGAscCxgLIAscCxwLIAskCyALKAskCyQLKAssCygLMAssCywLMAs0CzALOAs0CzQLOAs8CzgLQAs8CzwLQAtEC0ALSAtEC0QLSAtMC0gLUAtMC0wLUAtUC1ALWAtUC1QLWAtcC1gLYAtcC1wLYAtkC2ALaAtkC2QLaAtsC2gLcAtsC2wLcAt0C3ALeAt0C3QLeAt8C3gLgAt8C3wLgAuEC4ALiAuEC4QLiAuMC4gLkAuMC4wLkAuUC5ALmAuUC5QLmAucC5gLoAucC5wLoAukC6ALqAukC6QLqAusC6gLsAusC6wLsAu0C7ALuAu0C7QLuAu8C7gLwAu8C7wLwAvEC8ALyAvEC8QLyAvMC8gL0AvMC8wL0AvUC9AL2AvUC9QL2AvcC9gL4AvcC9wL4AvkC+AL6AvkC+QL6AvsC+gL8AvsC+wL8Av0C/AL+Av0C/QL+Av8C/gIAA/8C/wIAAwEDAAMCAwEDAQMCAwMDAgMEAwMDAwMEAwUDBAMGAwUDBQMGAwcDBgMIAwcDBwMIAwkDCAMKAwkDCQMKAwsDCgMMAwsDCwMMAw0DDAMOAw0DDQMOAw8DDgMQAw8DDwMQAxEDEAMSAxEDEQMSAxMDEgMUAxMDEwMUAxUDFAMWAxUDFQMWAxcDFgMYAxcDFwMYAxkDGAMaAxkDGQMaAxsDGgMcAxsDGwMcAx0DHAMeAx0DHQMeAx8DHgMgAx8DHwMgAyEDIAMiAyEDIQMiAyMDIgMkAyMDIwMkAyUDJAMmAyUDJQMmAycDJgMoAycDJwMoAykDKAMqAykDKQMqAysDKgMsAysDKwMsAy0DLAMuAy0DLQMuAy8DLgMwAy8DLwMwAzEDMAMyAzEDMQMyAzMDMgM0AzMDMwM0AzUDNAM2AzUDNQM2AzcDNgM4AzcDNwM4AzkDOAM6AzkDOQM6AzsDOgM8AzsDOwM8Az0DPAM+Az0DPQM+Az8DPgNAAz8DPwNAA0EDQANCA0EDQQNCA0MDQgNEA0MDQwNEA0UDRANGA0UDRQNGA0cDRgNIA0cDRwNIA0kDSANKA0kDSQNKA0sDSgNMA0sDSwNMA00DTANOA00DTQNOA08DTgNQA08DTwNQA1EDUANSA1EDUQNSA1MDUgNUA1MDUwNUA1UDVANWA1UDVQNWA1cDVgNYA1cDVwNYA1kDWANaA1kDWQNaA1sDWgNcA1sDWwNcA10DXANeA10DXQNeA18DXgNgA18DXwNgA2EDYANiA2EDYQNiA2MDYgNkA2MDYwNkA2UDZANmA2UDZQNmA2cDZgNoA2cDZwNoA2kDaANqA2kDaQNqA2sDagNsA2sDawNsA20DbANuA20DbQNuA28DbgNwA28DbwNwA3EDcANyA3EDcQNyA3MDcgN0A3MDcwN0A3UDdAN2A3UDdQN2A3cDdgN4A3cDdwN4A3kDeAN6A3kDeQN6A3sDegN8A3sDewN8A30DfAN+A30DfQN+A38DfgOAA38DfwOAA4EDgAOCA4EDgQOCA4MDggOEA4MDgwOEA4UDhAOGA4UDhQOGA4cDhgOIA4cDhwOIA4kDiAOKA4kDiQOKA4sDigOMA4sDiwOMA40DjAOOA40DjQOOA48DjgOQA48DjwOQA5EDkAOSA5EDkQOSA5MDkgOUA5MDkwOUA5UDlAOWA5UDlQOWA5cDlgOYA5cDlwOYA5kDmAOaA5kDmQOaA5sDmgOcA5sDmwOcA50DnAOeA50DnQOeA58DngOgA58DnwOgA6EDoAOiA6EDoQOiA6MDogOkA6MDowOkA6UDpAOmA6UDpQOmA6cDpgOoA6cDpwOoA6kDqAOqA6kDqQOqA6sDqgOsA6sDqwOsA60DrAOuA60DrQOuA68DrgOwA68DrwOwA7EDsAOyA7EDsQOyA7MDsgO0A7MDswO0A7UDtAO2A7UDtQO2A7cDtgO4A7cDtwO4A7kDuAO6A7kDuQO6A7sDugO8A7sDuwO8A70DvAO+A70DvQO+A78DvgPAA78DvwPAA8EDwAPCA8EDwQPCA8MDwgPEA8MDwwPEA8UDxAPGA8UDxQPGA8cDxgPIA8cDxwPIA8kDyAPKA8kDyQPKA8sDygPMA8sDywPMA80DzAPOA80DzQPOA88DzgPQA88DzwPQA9ED0APSA9ED0QPSA9MD0gPUA9MD0wPUA9UD1APWA9UD1QPWA9cD1gPYA9cD1wPYA9kD2APaA9kD2QPaA9sD2gPcA9sD2wPcA90D3APeA90D3QPeA98D3gPgA98D3wPgA+ED4APiA+ED4QPiA+MD4gPkA+MD4wPkA+UD5APmA+UD5QPmA+cD5gPoA+cD5wPoA+kD6APqA+kD6QPqA+sD6gPsA+sD6wPsA+0D7APuA+0D7QPuA+8D7gPwA+8D7wPwA/ED8APyA/ED8QPyA/MD8gP0A/MD8wP0A/UD9AP2A/UD9QP2A/cD9gP4A/cD9wP4A/kD+AP6A/kD+QP6A/sD+gP8A/sD+wP8A/0D/AP+A/0D/QP+A/8D/gMABP8D/wMABAEEAAQCBAEEAQQCBAMEAgQEBAMEAwQEBAUEBAQGBAUEBQQGBAcEBgQIBAcEBwQIBAkECAQKBAkECQQKBAsECgQMBAsECwQMBA0EDAQOBA0EDQQOBA8EDgQQBA8EDwQQBBEEEAQSBBEEEQQSBBMEEgQUBBMEEwQUBBUEFAQWBBUEFQQWBBcEFgQYBBcEFwQYBBkEGAQaBBkEGQQaBBsEGgQcBBsEGwQcBB0EHAQeBB0EHQQeBB8EHgQgBB8EHwQgBCEEIAQiBCEEIQQiBCMEIgQkBCMEIwQkBCUEJAQmBCUEJQQmBCcEJgQoBCcEJwQoBCkEKAQqBCkEKQQqBCsEKgQsBCsEKwQsBC0ELAQuBC0ELQQuBC8ELgQwBC8ELwQwBDEEMAQyBDEEMQQyBDMEMgQ0BDMEMwQ0BDUENAQ2BDUENQQ2BDcENgQ4BDcENwQ4BDkEOAQ6BDkEOQQ6BDsEOgQ8BDsEOwQ8BD0EPAQ+BD0EPQQ+BD8EPgRABD8EPwRABEEEQARCBEEEQQRCBEMEQgREBEMEQwREBEUERARGBEUERQRGBEcERgRIBEcERwRIBEkESARKBEkESQRKBEsESgRMBEsESwRMBE0ETAROBE0ETQROBE8ETgRQBE8ETwRQBFEEUARSBFEEUQRSBFMEUgRUBFMEUwRUBFUEVARWBFUEVQRWBFcEVgRYBFcEVwRYBFkEWARaBFkEWQRaBFsEWgRcBFsEWwRcBF0EXAReBF0EXQReBF8EXgRgBF8EXwRgBGEEYARiBGEEYQRiBGMEYgRkBGMEYwRkBGUEZARmBGUEZQRmBGcEZgRoBGcEZwRoBGkEaARqBGkEaQRqBGsEagRsBGsEawRsBG0EbARuBG0EbQRuBG8EbgRwBG8EbwRwBHEEcARyBHEEcQRyBHMEcgR0BHMEcwR0BHUEdAR2BHUEdQR2BHcEdgR4BHcEdwR4BHkEeAR6BHkEeQR6BHsEegR8BHsEewR8BH0EfAR+BH0EfQR+BH8EfgSABH8EfwSABIEEgASCBIEEgQSCBIMEggSEBIMEgwSEBIUEhASGBIUEhQSGBIcEhgSIBIcEhwSIBIkEiASKBIkEiQSKBIsEigSMBIsEiwSMBI0EjASOBI0EjQSOBI8EjgSQBI8EjwSQBJEEkASSBJEEkQSSBJMEkgSUBJMEkwSUBJUElASWBJUElQSWBJcElgSYBJcElwSYBJkEmASaBJkEmQSaBJsEmgScBJsEmwScBJ0EnASeBJ0EnQSeBJ8EngSgBJ8EnwSgBKEEoASiBKEEoQSiBKMEogSkBKMEowSkBKUEpASmBKUEpQSmBKcEpgSoBKcEpwSoBKkEqASqBKkEqQSqBKsEqgSsBKsEqwSsBK0ErASuBK0ErQSuBK8ErgSwBK8ErwSwBLEEsASyBLEEsQSyBLMEsgS0BLMEswS0BLUEtAS2BLUEtQS2BLcEtgS4BLcEtwS4BLkEuAS6BLkEuQS6BLsEugS8BLsEuwS8BL0EvAS+BL0EvQS+BL8EvgTABL8EvwTABMEEwATCBMEEwQTCBMMEwgTEBMMEwwTEBMUExATGBMUExQTGBMcExgTIBMcExwTIBMkEyATKBMkEyQTKBMsEygTMBMsEywTMBM0EzATOBM0EzQTOBM8EzgTQBM8EzwTQBNEE0ATSBNEE0QTSBNME0gTUBNME0wTUBNUE1ATWBNUE1QTWBNcE1gTYBNcE1wTYBNkE2ATaBNkE2QTaBNsE2gTcBNsE2wTcBN0E3ATeBN0E3QTeBN8E3gTgBN8E3wTgBOEE4ATiBOEE4QTiBOME4gTkBOME4wTkBOUE5ATmBOUE5QTmBOcE5gToBOcE5wToBOkE6ATqBOkE6QTqBOsE6gTsBOsE6wTsBO0E7ATuBO0E7QTuBO8E7gTwBO8E7wTwBPEE8ATyBPEE8QTyBPME8gT0BPME8wT0BPUE9AT2BPUE9QT2BPcE9gT4BPcE9wT4BPkE+AT6BPkE+QT6BPsE+gT8BPsE+wT8BP0E/AT+BP0E/QT+BP8E/gQABf8E/wQABQEFAAUCBQEFAQUCBQMFAgUEBQMFAwUEBQUFBAUGBQUFBQUGBQcFBgUIBQcFBwUIBQkFCAUKBQkFCQUKBQsFCgUMBQsFCwUMBQ0FDAUOBQ0FDQUOBQ8FDgUQBQ8FDwUQBREFEAUSBREFEQUSBRMFEgUUBRMFEwUUBRUFFAUWBRUFFQUWBRcFFgUYBRcFFwUYBRkFGAUaBRkFGQUaBRsFGgUcBRsFGwUcBR0FHAUeBR0FHQUeBR8FHgUgBR8FHwUgBSEFIAUiBSEFIQUiBSMFIgUkBSMFIwUkBSUFJAUmBSUFJQUmBScFJgUoBScFJwUoBSkFKAUqBSkFKQUqBSsFKgUsBSsFKwUsBS0FLAUuBS0FLQUuBS8FLgUwBS8FLwUwBTEFMAUyBTEFMQUyBTMFMgU0BTMFMwU0BTUFNAU2BTUFNQU2BTcFNgU4BTcFNwU4BTkFOAU6BTkFOQU6BTsFOgU8BTsFOwU8BT0FPAU+BT0FPQU+BT8FPgVABT8FPwVABUEFQAVCBUEFQQVCBUMFQgVEBUMFQwVEBUUFRAVGBUUFRQVGBUcFRgVIBUcFRwVIBUkFSAVKBUkFSQVKBUsFSgVMBUsFSwVMBU0FTAVOBU0FTQVOBU8FTgVQBU8FTwVQBVEFUAVSBVEFUQVSBVMFUgVUBVMFUwVUBVUFVAVWBVUFVQVWBVcFVgVYBVcFVwVYBVkFWAVaBVkFWQVaBVsFWgVcBVsFWwVcBV0FXAVeBV0FXQVeBV8FXgVgBV8FXwVgBWEFYAViBWEFYQViBWMFYgVkBWMFYwVkBWUFZAVmBWUFZQVmBWcFZgVoBWcFZwVoBWkFaAVqBWkFaQVqBWsFagVsBWsFawVsBW0FbAVuBW0FbQVuBW8FbgVwBW8FbwVwBXEFcAVyBXEFcQVyBXMFcgV0BXMFcwV0BXUFdAV2BXUFdQV2BXcFdgV4BXcFdwV4BXkFeAV6BXkFeQV6BXsFegV8BXsFewV8BX0FfAV+BX0FfQV+BX8FfgWABX8FfwWABYEFgAWCBYEFgQWCBYMFggWEBYMFgwWEBYUFhAWGBYUFhQWGBYcFhgWIBYcFhwWIBYkFiAWKBYkFiQWKBYsFigWMBYsFiwWMBY0FjAWOBY0FjQWOBY8FjgWQBY8FjwWQBZEFkAWSBZEFkQWSBZMFkgWUBZMFkwWUBZUFlAWWBZUFlQWWBZcFlgWYBZcFlwWYBZkFmAWaBZkFmQWaBZsFmgWcBZsFmwWcBZ0FnAWeBZ0FnQWeBZ8FngWgBZ8FnwWgBaEFoAWiBaEFoQWiBaMFogWkBaMFowWkBaUFpAWmBaUFpQWmBacFpgWoBacFpwWoBakFqAWqBakFqQWqBasFqgWsBasFqwWsBa0FrAWuBa0FrQWuBa8FrgWwBa8FrwWwBbEFsAWyBbEFsQWyBbMFsgW0BbMFswW0BbUFtAW2BbUFtQW2BbcFtgW4BbcFtwW4BbkFuAW6BbkFuQW6BbsFugW8BbsFuwW8Bb0FvAW+Bb0FvQW+Bb8FvgXABb8FvwXABcEFwAXCBcEFwQXCBcMFwgXEBcMFwwXEBcUFxAXGBcUFxQXGBccFxgXIBccFxwXIBckFyAXKBckFyQXKBcsFygXMBcsFywXMBc0FzAXOBc0FzQXOBc8FzgXQBc8FzwXQBdEF0AXSBdEF0QXSBdMF0gXUBdMF0wXUBdUF1AXWBdUF1QXWBdcF1gXYBdcF1wXYBdkF2AXaBdkF2QXaBdsF2gXcBdsF2wXcBd0F3AXeBd0F3QXeBd8F3gXgBd8F3wXgBeEF4AXiBeEF4QXiBeMF4gXkBeMF4wXkBeUF5AXmBeUF5QXmBecF5gXoBecF5wXoBekF6AXqBekF6QXqBesF6gXsBesF6wXsBe0F7AXuBe0F7QXuBe8F7gXwBe8F7wXwBfEF8AXyBfEF8QXyBfMF8gX0BfMF8wX0BfUF9AX2BfUF9QX2BfcF9gX4BfcF9wX4BfkF+AX6BfkF+QX6BfsF+gX8BfsF+wX8Bf0F/AX+Bf0F/QX+Bf8F/gUABv8F/wUABgEGAAYCBgEGAQYCBgMGAgYEBgMGAwYEBgUGBAYGBgUGBQYGBgcGBgYIBgcGBwYIBgkGCAYKBgkGCQYKBgsGCgYMBgsGCwYMBg0GDAYOBg0GDQYOBg8GDgYQBg8GDwYQBhEGEAYSBhEGEQYSBhMGEgYUBhMGEwYUBhUGFAYWBhUGFQYWBhcGFgYYBhcGFwYYBhkGGAYaBhkGGQYaBhsGGgYcBhsGGwYcBh0GHAYeBh0GHQYeBh8GHgYgBh8GHwYgBiEGIAYiBiEGIQYiBiMGIgYkBiMGIwYkBiUGJAYmBiUGJQYmBicGJgYoBicGJwYoBikGKAYqBikGKQYqBisGKgYsBisGKwYsBi0GLAYuBi0GLQYuBi8GLgYwBi8GLwYwBjEGMAYyBjEGMQYyBjMGMgY0BjMGMwY0BjUGNAY2BjUGNQY2BjcGNgY4BjcGNwY4BjkGOAY6BjkGOQY6BjsGOgY8BjsGOwY8Bj0GPAY+Bj0GPQY+Bj8GPgZABj8GPwZABkEGQAZCBkEGQQZCBkMGQgZEBkMGQwZEBkUGRAZGBkUGRQZGBkcGRgZIBkcGRwZIBkkGSAZKBkkGSQZKBksGSgZMBksGSwZMBk0GTAZOBk0GTQZOBk8GTgZQBk8GTwZQBlEGUAZSBlEGUQZSBlMGUgZUBlMGUwZUBlUGVAZWBlUGVQZWBlcGVgZYBlcGVwZYBlkGWAZaBlkGWQZaBlsGWgZcBlsGWwZcBl0GXAZeBl0GXQZeBl8GXgZgBl8GXwZgBmEGYAZiBmEGYQZiBmMGYgZkBmMGYwZkBmUGZAZmBmUGZQZmBmcGZgZoBmcGZwZoBmkGaAZqBmkGaQZqBmsGagZsBmsGawZsBm0GbAZuBm0GbQZuBm8GbgZwBm8GbwZwBnEGcAZyBnEGcQZyBnMGcgZ0BnMGcwZ0BnUGdAZ2BnUGdQZ2BncGdgZ4BncGdwZ4BnkGeAZ6BnkGeQZ6BnsGegZ8BnsGewZ8Bn0GfAZ+Bn0GfQZ+Bn8GfgaABn8GfwaABoEGgAaCBoEGgQaCBoMGggaEBoMGgwaEBoUGhAaGBoUGhQaGBocGhgaIBocGhwaIBokGiAaKBokGiQaKBosGigaMBosGiwaMBo0GjAaOBo0GjQaOBo8GjgaQBo8GjwaQBpEGkAaSBpEGkQaSBpMGkgaUBpMGkwaUBpUGlAaWBpUGlQaWBpcGlgaYBpcGlwaYBpkGmAaaBpkGmQaaBpsGmgacBpsGmwacBp0GnAaeBp0GnQaeBp8GngagBp8GnwagBqEGoAaiBqEGoQaiBqMGogakBqMGowakBqUGpAamBqUGpQamBqcGpgaoBqcGpwaoBqkGqAaqBqkGqQaqBqsGqgasBqsGqwasBq0GrAauBq0GrQauBq8GrgawBq8GrwawBrEGsAayBrEGsQayBrMGsga0BrMGswa0BrUGtAa2BrUGtQa2BrcGtga4BrcGtwa4BrkGuAa6BrkGuQa6BrsGuga8BrsGuwa8Br0GvAa+Br0GvQa+Br8GvgbABr8GvwbABsEGwAbCBsEGwQbCBsMGwgbEBsMGwwbEBsUGxAbGBsUGxQbGBscGxgbIBscGxwbIBskGyAbKBskGyQbKBssGygbMBssGywbMBs0GzAbOBs0GzQbOBs8GzgbQBs8GzwbQBtEG0AbSBtEG0QbSBtMG0gbUBtMG0wbUBtUG1AbWBtUG1QbWBtcG1gbYBtcG1wbYBtkG2AbaBtkG2QbaBtsG2gbcBtsG2wbcBt0G3AbeBt0G3QbeBt8G3gbgBt8G3wbgBuEG4AbiBuEG4QbiBuMG4gbkBuMG4wbkBuUG5AbmBuUG5QbmBucG5gboBucG5wboBukG6AbqBukG6QbqBusG6gbsBusG6wbsBu0G7AbuBu0G7QbuBu8G7gbwBu8G7wbwBvEG8AbyBvEG8QbyBvMG8gb0BvMG8wb0BvUG9Ab2BvUG9Qb2BvcG9gb4BvcG9wb4BvkG+Ab6BvkG+Qb6BvsG+gb8BvsG+wb8Bv0G/Ab+Bv0G/Qb+Bv8G/gYAB/8G/wYABwEHAAcCBwEHAQcCBwMHAgcEBwMHAwcEBwUHBAcGBwUHBQcGBwcHBgcIBwcHBwcIBwkHCAcKBwkHCQcKBwsHCgcMBwsHCwcMBw0HDAcOBw0HDQcOBw8HDgcQBw8HDwcQBxEHEAcSBxEHEQcSBxMHEgcAABMHEwcAAAEA"), +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 1812, +"vertex_data": PackedByteArray("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yMnGwRsv3b4rc4PBBZLBwRsv3b6bfn3Bu1HFwRsv3b6pa4TBNiHAwRsv3b5zZn/BR6PDwRsv3b59hoXBc6S+wRsv3b4xg4DBZbLBwRsv3b59lobBXBG9wRsv3b7KPIHB2Om/wRsv3b7UaYfB+3e7wRsv3b5r+YHBd1C+wRsv3b52JojBmd65wRsv3b4LtoLBFbe8wRsv3b4W44jBp1a4wRsv3b6Xa4PB8Jq6wRsv3b7T1InB1LS2wRsv3b5u1IPBHlm4wRsv3b67bYrByP+0wRsv3b5PP4TBTp22wRsv3b5I2orB70mzwRsv3b5iqoTBdee0wRsv3b5aRYvBPaexwRsv3b67EYXB+qGywRsv3b5hzIvBKv6vwRsv3b6gJYXBczGwwRsv3b6r8YvBaD+uwRsv3b4cKoXBBFGuwRsv3b7S9ovBr3yswRsv3b6rLoXBSo6swRsv3b5h+4vBcLOqwRsv3b5lM4XBgPyqwRsv3b6q/ovBTuuowRsv3b4KVYXBtWypwRsv3b4GHYzBtimnwRsv3b7NdoXBE6ynwRsv3b63PozBN2SlwRsv3b7nmIXBswimwRsv3b7qXYzBsZyjwRsv3b4zzYXB0oWkwRsv3b5SiozBP9uhwRsv3b4TE4bB1uaiwRsv3b4wy4zBYhqgwRsv3b7vWIbBfkOhwRsv3b4yDI3BSFaewRsv3b5br4bBDtOfwRsv3b4AUo3BepucwRsv3b5lIYfBAk6ewRsv3b4Xt43BuuCawRsv3b6hk4fBk8icwRsv3b6sGo7BQCmZwRsv3b49I4jBjXWbwRsv3b6eiY7BEICXwRsv3b7NyYjBUPuZwRsv3b6NHo/B7MaVwRsv3b4reInBv/iYwRsv3b7neI/BtD+UwRsv3b7ThIrBViCYwRsv3b7iGpDBP8OSwRsv3b6djovBCv+WwRsv3b7i4JDBKmWRwRsv3b5ay4zBRTyWwRsv3b4OkpHBzzKQwRsv3b5DJo7BzE+VwRsv3b7WoZLBE/2OwRsv3b5ni4/BII+UwRsv3b7IcZPBmBeOwRsv3b5YKJHBRwuUwRsv3b47cpTBoDqNwRsv3b55uJLBpkeTwRsv3b7E0pXBeXKMwRsv3b5HX5TBlcGSwRsv3b696JbBgt+LwRsv3b5mFpbBv1KSwRsv3b6SPZjBLFGLwRsv3b7TwJfBLcGRwRsv3b6a8ZnB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MUeaQRsv3b5nkNPB2OSbQRsv3b5XK9rB78SbQRsv3b5APNPBYz+fQRsv3b4SFNnBgKKcQRsv3b6lMdLBTB2iQRsv3b5yONbBKm6dQRsv3b6P9dDBeP6jQRsv3b5/vNLBkFidQRsv3b4uk8/BfRqkQRsv3b7o0M7BWwidQRsv3b6a5s3B1rejQRsv3b51qMzB/3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+//3///wAA/7//f///AAD/v/9///8AAP+/") +}] diff --git a/world/materials/shoreline_tide.gdshader b/world/materials/shoreline_tide.gdshader new file mode 100644 index 0000000..b51f794 --- /dev/null +++ b/world/materials/shoreline_tide.gdshader @@ -0,0 +1,71 @@ +shader_type spatial; +render_mode blend_mix, depth_draw_never, cull_disabled, unshaded; + +uniform vec4 lead_color : source_color = vec4(0.620, 0.875, 0.855, 1.0); +uniform vec4 trail_color : source_color = vec4(0.430, 0.780, 0.770, 1.0); +uniform float ribbon_width : hint_range(0.2, 2.0, 0.01) = 0.85; +uniform float land_inset : hint_range(0.0, 0.4, 0.01) = 0.10; +uniform float tide_speed : hint_range(0.1, 3.0, 0.01) = 1.42; +uniform float tide_distance : hint_range(0.0, 0.6, 0.01) = 0.30; +uniform float lead_width : hint_range(0.01, 0.2, 0.005) = 0.065; +uniform float trail_width : hint_range(0.02, 0.4, 0.005) = 0.18; +uniform float lead_strength : hint_range(0.0, 1.0, 0.01) = 0.48; +uniform float trail_strength : hint_range(0.0, 1.0, 0.01) = 0.25; +uniform float phase_scale : hint_range(0.001, 0.2, 0.001) = 0.035; +uniform float phase_strength : hint_range(0.0, 2.0, 0.01) = 0.55; + +varying vec3 world_position; + + +float hash_21(vec2 point) { + return fract(sin(dot(point, vec2(127.1, 311.7))) * 43758.5453); +} + + +float value_noise(vec2 point) { + vec2 cell = floor(point); + vec2 local = fract(point); + vec2 blend = local * local * (3.0 - 2.0 * local); + float bottom = mix(hash_21(cell), hash_21(cell + vec2(1.0, 0.0)), blend.x); + float top = mix( + hash_21(cell + vec2(0.0, 1.0)), + hash_21(cell + vec2(1.0, 1.0)), + blend.x + ); + return mix(bottom, top, blend.y); +} + + +float soft_line(float coordinate, float center, float width) { + float normalized_width = max(width / ribbon_width, 0.001); + float derivative_width = min(fwidth(coordinate) * 1.25, normalized_width * 0.65); + return 1.0 - smoothstep( + max(normalized_width * 0.25 - derivative_width, 0.0), + normalized_width + derivative_width, + abs(coordinate - center) + ); +} + + +void vertex() { + world_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz; +} + + +void fragment() { + float phase = ( + value_noise(world_position.xz * phase_scale) * 2.0 - 1.0 + ) * phase_strength; + float ebb = sin(TIME * tide_speed + phase) * 0.5 + 0.5; + float shoreline = land_inset / ribbon_width; + float lead_position = shoreline + ebb * tide_distance / ribbon_width; + float trail_position = lead_position + max(tide_distance * 0.72, 0.10) / ribbon_width; + float lead = soft_line(UV.y, lead_position, lead_width); + float trail = soft_line(UV.y, trail_position, trail_width); + float edge_fade = smoothstep(0.0, 0.055, UV.y) * (1.0 - smoothstep(0.90, 1.0, UV.y)); + float lead_alpha = lead * lead_strength; + float trail_alpha = trail * trail_strength; + float combined_alpha = max(lead_alpha, trail_alpha) * edge_fade; + ALBEDO = mix(trail_color.rgb, lead_color.rgb, lead_alpha); + ALPHA = combined_alpha; +} diff --git a/world/materials/shoreline_tide.gdshader.uid b/world/materials/shoreline_tide.gdshader.uid new file mode 100644 index 0000000..e8e5d36 --- /dev/null +++ b/world/materials/shoreline_tide.gdshader.uid @@ -0,0 +1 @@ +uid://5dauni8hb2lv diff --git a/world/materials/shoreline_tide.tres b/world/materials/shoreline_tide.tres new file mode 100644 index 0000000..dad0a9d --- /dev/null +++ b/world/materials/shoreline_tide.tres @@ -0,0 +1,19 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=3] + +[ext_resource type="Shader" path="res://world/materials/shoreline_tide.gdshader" id="1_shader"] + +[resource] +render_priority = 1 +shader = ExtResource("1_shader") +shader_parameter/lead_color = Color(0.619608, 0.87451, 0.854902, 1) +shader_parameter/trail_color = Color(0.431373, 0.780392, 0.768627, 1) +shader_parameter/ribbon_width = 0.85 +shader_parameter/land_inset = 0.1 +shader_parameter/tide_speed = 1.42 +shader_parameter/tide_distance = 0.3 +shader_parameter/lead_width = 0.065 +shader_parameter/trail_width = 0.18 +shader_parameter/lead_strength = 0.48 +shader_parameter/trail_strength = 0.25 +shader_parameter/phase_scale = 0.035 +shader_parameter/phase_strength = 0.55 diff --git a/world/materials/stylized_water.gdshader b/world/materials/stylized_water.gdshader index 4c660c0..76bc1a7 100644 --- a/world/materials/stylized_water.gdshader +++ b/world/materials/stylized_water.gdshader @@ -1,93 +1,241 @@ shader_type spatial; -render_mode cull_back, diffuse_burley, specular_schlick_ggx; +render_mode blend_mix, depth_draw_never, cull_back, unshaded; -uniform vec4 deep_color : source_color = vec4(0.055, 0.31, 0.50, 1.0); -uniform vec4 wave_color : source_color = vec4(0.18, 0.59, 0.74, 1.0); -uniform vec4 highlight_color : source_color = vec4(0.64, 0.88, 0.93, 1.0); +uniform sampler2D depth_texture : hint_depth_texture, repeat_disable, filter_nearest; -uniform float primary_wave_scale : hint_range(0.01, 2.0, 0.01) = 0.52; -uniform float secondary_wave_scale : hint_range(0.01, 2.0, 0.01) = 0.29; -uniform vec2 primary_speed = vec2(0.16, 0.07); -uniform vec2 secondary_speed = vec2(-0.08, 0.12); -uniform float wave_strength : hint_range(0.0, 1.0, 0.01) = 0.42; +uniform vec4 shore_color : source_color = vec4(0.475, 0.788, 0.796, 1.0); +uniform vec4 shallow_color : source_color = vec4(0.227, 0.604, 0.663, 1.0); +uniform vec4 deep_color : source_color = vec4(0.110, 0.345, 0.435, 1.0); +uniform vec4 tide_wash_color : source_color = vec4(0.360, 0.720, 0.735, 1.0); -uniform float highlight_fresnel_strength : hint_range(0.0, 1.0, 0.01) = 0.22; -uniform float fresnel_power : hint_range(0.5, 12.0, 0.1) = 4.0; -uniform float roughness : hint_range(0.0, 1.0, 0.01) = 0.32; -uniform float specular_strength : hint_range(0.0, 1.0, 0.01) = 0.28; +uniform float shallow_depth : hint_range(0.1, 3.0, 0.01) = 0.70; +uniform float deep_depth : hint_range(0.5, 12.0, 0.05) = 3.60; +uniform float shore_depth_width : hint_range(0.02, 1.0, 0.01) = 0.16; + +uniform float shore_alpha : hint_range(0.1, 1.0, 0.01) = 0.44; +uniform float shallow_alpha : hint_range(0.1, 1.0, 0.01) = 0.60; +uniform float deep_alpha : hint_range(0.1, 1.0, 0.01) = 0.82; + +uniform bool tide_effect_enabled = true; +uniform float tide_speed : hint_range(0.1, 3.0, 0.01) = 1.42; +uniform float tide_distance : hint_range(0.0, 0.6, 0.01) = 0.30; +uniform float tide_wash_width : hint_range(0.05, 1.0, 0.01) = 0.38; +uniform float tide_wash_strength : hint_range(0.0, 0.3, 0.01) = 0.11; +uniform float tide_wash_alpha_shift : hint_range(0.0, 0.15, 0.005) = 0.045; + +uniform float phase_noise_scale : hint_range(0.001, 0.5, 0.001) = 0.055; +uniform float phase_noise_strength : hint_range(0.0, 2.0, 0.01) = 0.68; +uniform float contour_corner_variation : hint_range(0.0, 0.15, 0.005) = 0.045; +uniform float contour_smoothing_pixels : hint_range(0.0, 2.5, 0.05) = 1.0; +uniform float contour_smoothing_strength : hint_range(0.0, 1.0, 0.01) = 0.72; +uniform float contour_depth_reject : hint_range(0.05, 2.0, 0.01) = 0.60; +uniform float open_water_drift_scale : hint_range(0.001, 0.3, 0.001) = 0.018; +uniform vec2 open_water_drift_speed = vec2(0.010, -0.007); +uniform float open_water_drift_strength : hint_range(0.0, 0.08, 0.001) = 0.045; + +uniform float distant_alpha_start : hint_range(10.0, 2000.0, 1.0) = 260.0; +uniform float distant_alpha_end : hint_range(20.0, 5000.0, 1.0) = 1400.0; varying vec3 world_position; +varying float surface_view_depth; + + +float hash_21(vec2 point) { + return fract(sin(dot(point, vec2(127.1, 311.7))) * 43758.5453); +} + + +float value_noise(vec2 point) { + vec2 cell = floor(point); + vec2 local = fract(point); + vec2 blend = local * local * (3.0 - 2.0 * local); + float bottom = mix(hash_21(cell), hash_21(cell + vec2(1.0, 0.0)), blend.x); + float top = mix( + hash_21(cell + vec2(0.0, 1.0)), + hash_21(cell + vec2(1.0, 1.0)), + blend.x + ); + return mix(bottom, top, blend.y); +} + + +float reconstruct_view_depth( + vec2 screen_uv, + float raw_depth, + mat4 inverse_projection +) { + #if CURRENT_RENDERER == RENDERER_COMPATIBILITY + vec3 ndc = vec3(screen_uv, raw_depth) * 2.0 - 1.0; + #else + vec3 ndc = vec3(screen_uv * 2.0 - 1.0, raw_depth); + #endif + vec4 view_position = inverse_projection * vec4(ndc, 1.0); + return -view_position.z / max(abs(view_position.w), 0.00001); +} + + +float sample_water_depth( + vec2 screen_uv, + float water_surface_depth, + mat4 inverse_projection +) { + float raw_depth = texture(depth_texture, screen_uv).r; + float scene_depth = reconstruct_view_depth( + screen_uv, + raw_depth, + inverse_projection + ); + return scene_depth - water_surface_depth; +} + + +float contour_neighbor_weight( + float center_depth, + float neighbor_depth, + float rejection_distance +) { + if (neighbor_depth <= 0.0) { + return 0.0; + } + float safe_rejection = max(rejection_distance, 0.001); + return 1.0 - smoothstep( + safe_rejection * 0.35, + safe_rejection, + abs(neighbor_depth - center_depth) + ); +} void vertex() { - world_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz; + vec4 world_vertex = MODEL_MATRIX * vec4(VERTEX, 1.0); + vec4 view_vertex = VIEW_MATRIX * world_vertex; + world_position = world_vertex.xyz; + surface_view_depth = -view_vertex.z; } void fragment() { - const vec2 primary_direction = vec2(0.835, 0.550); - const vec2 secondary_direction = vec2(-0.485, 0.875); + float raw_depth = texture(depth_texture, SCREEN_UV).r; + float scene_view_depth = reconstruct_view_depth( + SCREEN_UV, + raw_depth, + INV_PROJECTION_MATRIX + ); + float water_depth = max(scene_view_depth - surface_view_depth, 0.0); + water_depth = min(water_depth, deep_depth * 4.0); - vec2 primary_coordinates = ( - world_position.xz * primary_wave_scale - + TIME * primary_speed + float contour_depth = water_depth; + float contour_feature_support = 1.0; + if (tide_effect_enabled) { + vec2 contour_texel = ( + vec2(1.0) / vec2(textureSize(depth_texture, 0)) + * contour_smoothing_pixels ); - vec2 secondary_coordinates = ( - world_position.xz * secondary_wave_scale - + TIME * secondary_speed + float contour_depth_sum = water_depth; + float contour_weight_sum = 1.0; + float left_depth = sample_water_depth( + SCREEN_UV - vec2(contour_texel.x, 0.0), + surface_view_depth, + INV_PROJECTION_MATRIX ); - float primary_phase = dot(primary_coordinates, primary_direction); - float secondary_phase = dot( - secondary_coordinates, - secondary_direction + float right_depth = sample_water_depth( + SCREEN_UV + vec2(contour_texel.x, 0.0), + surface_view_depth, + INV_PROJECTION_MATRIX ); - float primary_wave = sin(primary_phase); - float secondary_wave = sin(secondary_phase); - float combined_wave = ( - primary_wave * 0.62 - + secondary_wave * 0.38 + float upper_depth = sample_water_depth( + SCREEN_UV - vec2(0.0, contour_texel.y), + surface_view_depth, + INV_PROJECTION_MATRIX ); - float wave_band = smoothstep( - 0.34, - 0.66, - combined_wave * 0.5 + 0.5 + float lower_depth = sample_water_depth( + SCREEN_UV + vec2(0.0, contour_texel.y), + surface_view_depth, + INV_PROJECTION_MATRIX ); + float left_weight = contour_neighbor_weight( + water_depth, left_depth, contour_depth_reject + ); + float right_weight = contour_neighbor_weight( + water_depth, right_depth, contour_depth_reject + ); + float upper_weight = contour_neighbor_weight( + water_depth, upper_depth, contour_depth_reject + ); + float lower_weight = contour_neighbor_weight( + water_depth, lower_depth, contour_depth_reject + ); + contour_depth_sum += left_depth * left_weight; + contour_depth_sum += right_depth * right_weight; + contour_depth_sum += upper_depth * upper_weight; + contour_depth_sum += lower_depth * lower_weight; + float neighbor_support = left_weight + right_weight + upper_weight + lower_weight; + contour_weight_sum += neighbor_support; + float smoothed_contour_depth = contour_depth_sum / contour_weight_sum; + contour_depth = mix( + water_depth, + smoothed_contour_depth, + contour_smoothing_strength + ); + contour_feature_support = smoothstep(0.75, 1.75, neighbor_support); + } - vec2 wave_slope = ( - cos(primary_phase) - * primary_direction - * primary_wave_scale - * 0.62 - + cos(secondary_phase) - * secondary_direction - * secondary_wave_scale - * 0.38 - ); - vec3 world_normal = normalize( - vec3( - -wave_slope.x * wave_strength * 0.34, - 1.0, - -wave_slope.y * wave_strength * 0.34 - ) - ); - NORMAL = normalize( - (VIEW_MATRIX * vec4(world_normal, 0.0)).xyz - ); + float shallow_mix = smoothstep(0.0, shallow_depth, water_depth); + float deep_mix = smoothstep(shallow_depth, deep_depth, water_depth); + vec3 water_color = mix(shore_color.rgb, shallow_color.rgb, shallow_mix); + water_color = mix(water_color, deep_color.rgb, deep_mix); + float water_alpha = mix(shore_alpha, shallow_alpha, shallow_mix); + water_alpha = mix(water_alpha, deep_alpha, deep_mix); - float fresnel = pow( - 1.0 - clamp(dot(NORMAL, VIEW), 0.0, 1.0), - fresnel_power + if (tide_effect_enabled) { + vec2 phase_coordinates = world_position.xz * phase_noise_scale; + float phase_variation = ( + value_noise(phase_coordinates) + + value_noise(phase_coordinates * 0.47 + vec2(9.7, 3.1)) * 0.5 + - 0.75 + ) * phase_noise_strength; + float corner_variation = ( + value_noise(phase_coordinates * 1.73 + vec2(4.2, 13.6)) * 2.0 - 1.0 + ) * contour_corner_variation; + float ebb = sin(TIME * tide_speed + phase_variation) * 0.5 + 0.5; + float lead_threshold = shore_depth_width + ebb * tide_distance + corner_variation; + float tide_wash = 1.0 - smoothstep( + lead_threshold, + lead_threshold + max(tide_wash_width, 0.001), + contour_depth ); - vec3 water_color = mix( - deep_color.rgb, - wave_color.rgb, - wave_band * wave_strength - ); - ALBEDO = mix( + tide_wash *= contour_feature_support; + tide_wash *= 1.0 - smoothstep(shallow_depth, deep_depth, water_depth); + water_color = mix( water_color, - highlight_color.rgb, - fresnel * highlight_fresnel_strength + tide_wash_color.rgb, + tide_wash * tide_wash_strength ); - ROUGHNESS = roughness; - SPECULAR = specular_strength; + water_alpha = min( + water_alpha + + tide_wash * tide_wash_alpha_shift, + 0.96 + ); + } + + vec2 drift_coordinates = ( + world_position.xz * open_water_drift_scale + + TIME * open_water_drift_speed + ); + float broad_drift = value_noise(drift_coordinates) * 2.0 - 1.0; + water_color *= 1.0 + broad_drift * open_water_drift_strength * deep_mix; + + float distant_mix = smoothstep( + distant_alpha_start, + max(distant_alpha_end, distant_alpha_start + 1.0), + surface_view_depth + ); + water_color = mix(water_color, deep_color.rgb, distant_mix * 0.72); + water_alpha = mix(water_alpha, 0.96, distant_mix); + + ALBEDO = water_color; + ALPHA = clamp(water_alpha, 0.1, 0.96); + METALLIC = 0.0; + SPECULAR = 0.0; + ROUGHNESS = 1.0; } diff --git a/world/materials/stylized_water.tres b/world/materials/stylized_water.tres index 29f424c..40fc17d 100644 --- a/world/materials/stylized_water.tres +++ b/world/materials/stylized_water.tres @@ -5,3 +5,30 @@ [resource] render_priority = 0 shader = ExtResource("1_water_shader") +shader_parameter/shore_color = Color(0.47451, 0.788235, 0.796078, 1) +shader_parameter/shallow_color = Color(0.227451, 0.603922, 0.662745, 1) +shader_parameter/deep_color = Color(0.109804, 0.345098, 0.435294, 1) +shader_parameter/tide_wash_color = Color(0.360784, 0.721569, 0.733333, 1) +shader_parameter/shallow_depth = 0.7 +shader_parameter/deep_depth = 3.6 +shader_parameter/shore_depth_width = 0.16 +shader_parameter/shore_alpha = 0.44 +shader_parameter/shallow_alpha = 0.6 +shader_parameter/deep_alpha = 0.82 +shader_parameter/tide_effect_enabled = true +shader_parameter/tide_speed = 1.42 +shader_parameter/tide_distance = 0.3 +shader_parameter/tide_wash_width = 0.38 +shader_parameter/tide_wash_strength = 0.11 +shader_parameter/tide_wash_alpha_shift = 0.045 +shader_parameter/phase_noise_scale = 0.055 +shader_parameter/phase_noise_strength = 0.68 +shader_parameter/contour_corner_variation = 0.045 +shader_parameter/contour_smoothing_pixels = 1.0 +shader_parameter/contour_smoothing_strength = 0.72 +shader_parameter/contour_depth_reject = 0.6 +shader_parameter/open_water_drift_scale = 0.018 +shader_parameter/open_water_drift_speed = Vector2(0.01, -0.007) +shader_parameter/open_water_drift_strength = 0.045 +shader_parameter/distant_alpha_start = 260.0 +shader_parameter/distant_alpha_end = 1400.0 diff --git a/world/materials/stylized_water_fresh.tres b/world/materials/stylized_water_fresh.tres new file mode 100644 index 0000000..66cc373 --- /dev/null +++ b/world/materials/stylized_water_fresh.tres @@ -0,0 +1,23 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=3] + +[ext_resource type="Shader" path="res://world/materials/stylized_water.gdshader" id="1_water_shader"] + +[resource] +render_priority = 0 +shader = ExtResource("1_water_shader") +shader_parameter/shore_color = Color(0.47451, 0.788235, 0.796078, 1) +shader_parameter/shallow_color = Color(0.227451, 0.603922, 0.662745, 1) +shader_parameter/deep_color = Color(0.109804, 0.345098, 0.435294, 1) +shader_parameter/tide_wash_color = Color(0.360784, 0.721569, 0.733333, 1) +shader_parameter/shallow_depth = 0.7 +shader_parameter/deep_depth = 3.6 +shader_parameter/shore_depth_width = 0.16 +shader_parameter/shore_alpha = 0.44 +shader_parameter/shallow_alpha = 0.6 +shader_parameter/deep_alpha = 0.82 +shader_parameter/tide_effect_enabled = false +shader_parameter/open_water_drift_scale = 0.018 +shader_parameter/open_water_drift_speed = Vector2(0.01, -0.007) +shader_parameter/open_water_drift_strength = 0.045 +shader_parameter/distant_alpha_start = 260.0 +shader_parameter/distant_alpha_end = 1400.0 diff --git a/world/regions/starter_island_region.tscn b/world/regions/starter_island_region.tscn index 1602e22..7b9613f 100644 --- a/world/regions/starter_island_region.tscn +++ b/world/regions/starter_island_region.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://j8syuqdau7vl" path="res://world/regions/starter_island_region.gd" id="1_region"] [ext_resource type="PackedScene" uid="uid://bk38p45urtjis" path="res://art/exported/environment/terrain/starter_island.glb" id="2_island"] [ext_resource type="Script" uid="uid://b6fp2obu0y2d0" path="res://world/fishable_water_region.gd" id="3_water"] -[ext_resource type="Resource" path="res://fish/pools/test_water_pool.tres" id="4_pool"] +[ext_resource type="Resource" path="res://fish/pools/starter_ocean_pool.tres" id="4_pool"] [ext_resource type="Resource" path="res://fish/pools/starter_pond_pool.tres" id="12_pond_pool"] [ext_resource type="Script" uid="uid://dnlbnlimgxoc2" path="res://world/player_water_trigger.gd" id="5_trigger"] [ext_resource type="Script" uid="uid://df2lsduguegxh" path="res://world/safe_respawn_point.gd" id="6_safe"] @@ -13,6 +13,11 @@ [ext_resource type="Script" uid="uid://dtcgnxl1kmdu1" path="res://world/water_body_authoring.gd" id="10_water_body"] [ext_resource type="Material" path="res://world/materials/starter_island_sand.tres" id="11_sand"] [ext_resource type="Material" path="res://world/materials/stylized_water.tres" id="13_water"] +[ext_resource type="Script" path="res://world/water/shoreline_ribbon_baker.gd" id="14_shoreline_baker"] +[ext_resource type="Script" path="res://world/water/shoreline_ribbon_config.gd" id="15_shoreline_config"] +[ext_resource type="ArrayMesh" path="res://world/generated/shorelines/starter_ocean_shoreline.tres" id="17_ocean_shoreline"] +[ext_resource type="Material" path="res://world/materials/shoreline_tide.tres" id="18_shoreline_material"] +[ext_resource type="Material" path="res://world/materials/stylized_water_fresh.tres" id="19_fresh_water"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_4e4k5"] data = PackedVector3Array(10.033899, 3.3913999, 3.3446, 13.3786, 3.3913999, 0, 13.3786, 3.3913999, 3.3446, 10.033899, 3.3913999, 3.3446, 10.033899, 3.3913999, 0, 13.3786, 3.3913999, 0, 6.6893, 3.3913999, 3.3446, 10.033899, 3.3913999, 0, 10.033899, 3.3913999, 3.3446, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 0, 10.033899, 3.3913999, 0, 6.6893, 3.3913999, 0, 10.033899, 3.3913999, -3.3446, 10.033899, 3.3913999, 0, 6.6893, 3.3913999, 6.6893, 6.6893, 3.3913999, 3.3446, 10.033899, 3.3913999, 3.3446, 6.6893, 3.3913999, 6.6893, 10.033899, 3.3913999, 3.3446, 10.033899, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 6.6893, 3.3913999, 0, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 10.033899, 6.6893, 3.3913999, 6.6893, 10.033899, 3.3913999, 6.6893, 6.6893, 3.3913999, 10.033899, 10.033899, 3.3913999, 6.6893, 10.033899, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 6.6893, 3.3913999, 3.3446, 6.6893, 3.3913999, 6.6893, 3.3446, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 6.6893, 3.3913999, 3.3446, 3.3446, 3.3913999, 10.033899, 6.6893, 3.3913999, 6.6893, 6.6893, 3.3913999, 10.033899, 3.3446, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 6.6893, 3.3913999, 6.6893, 0, 3.3913999, 6.6893, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 6.6893, 0, 3.3913999, 6.6893, 0, 3.3913999, 3.3446, 3.3446, 3.3913999, 3.3446, 0, 3.3913999, 10.033899, 0, 3.3913999, 6.6893, 3.3446, 3.3913999, 6.6893, 0, 3.3913999, 10.033899, 3.3446, 3.3913999, 6.6893, 3.3446, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, -3.3446, 3.3913999, 10.033899, 0, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, 0, 3.3913999, 10.033899, 0, 3.3913999, 13.3786, 0, 3.3913999, 13.3786, 0, 3.3913999, 10.033899, 3.3446, 3.3913999, 10.033899, 0, 3.3913999, 13.3786, 3.3446, 3.3913999, 10.033899, 3.3446, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, 3.3446, 3.3913999, 10.033899, 6.6893, 3.3913999, 10.033899, 3.3446, 3.3913999, 13.3786, 6.6893, 3.3913999, 10.033899, 6.6893, 3.3913999, 13.3786, 3.9148, 3.3913999, 16.514599, 3.3446, 3.3913999, 13.3786, 6.6893, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, 3.9148, 3.3913999, 16.514599, 3.6399, 3.3913999, 16.2405, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 13.3786, 6.6893, 3.3913999, 16.7232, 6.6893, 3.3913999, 16.7232, 6.6949, 3.3913999, 18.9914, 6.6893, 3.3913999, 18.9861, 6.6949, 3.3913999, 18.9914, 6.6893, 3.3913999, 16.7232, 10.3743, 3.3913999, 16.7232, 6.6949, 3.3913999, 18.9914, 10.3743, 3.3913999, 16.7232, 9.1275, 3.3913999, 18.830599, 10.033899, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 13.3786, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 19.798899, 3.3913999, -13.1096, 19.798899, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 16.7232, 3.3913999, -13.1096, 19.798899, 3.3913999, -13.1096, 16.7232, 3.3913999, -10.033899, 16.4543, 3.3913999, -13.3786, 16.7232, 3.3913999, -13.1096, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -13.3786, 16.4543, 3.3913999, -13.3786, 13.3786, 3.3913999, -6.6893, 13.3786, 3.3913999, -10.033899, 16.7232, 3.3913999, -10.033899, 13.3786, 3.3913999, -6.6893, 16.7232, 3.3913999, -10.033899, 16.7232, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 13.3786, 3.3913999, -10.033899, 13.3786, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 10.033899, 3.3913999, -10.033899, 13.3786, 3.3913999, -10.033899, 16.4543, 3.3913999, -13.3786, 16.495699, 3.3913999, -16.459, 16.495699, 3.3913999, -13.42, 16.4543, 3.3913999, -13.3786, 12.738999, 3.3913999, -15.894899, 16.495699, 3.3913999, -16.459, 12.738999, 3.3913999, -15.894899, 16.4543, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 12.460899, 3.3913999, -16.1674, 12.738999, 3.3913999, -15.894899, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 12.460899, 3.3913999, -16.1674, 10.033899, 3.3913999, -10.033899, 10.033899, 3.3913999, -13.3786, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 13.3786, 3.3913999, -13.3786, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 10.033899, 3.3913999, -16.7232, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 6.6893, 3.3913999, -16.7232, 10.033899, 3.3913999, -16.7232, 6.6893, 3.3913999, -10.033899, 10.033899, 3.3913999, -13.3786, 10.033899, 3.3913999, -10.033899, 6.6893, 3.3913999, -10.033899, 6.6893, 3.3913999, -13.3786, 10.033899, 3.3913999, -13.3786, 6.6893, 3.3913999, -6.6893, 6.6893, 3.3913999, -10.033899, 10.033899, 3.3913999, -10.033899, 6.6893, 3.3913999, -6.6893, 10.033899, 3.3913999, -10.033899, 10.033899, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 6.6893, 3.3913999, -13.3786, 6.6893, 3.3913999, -10.033899, 4.6821, 3.3913999, -13.3786, 6.6893, 3.3913999, -16.7232, 6.6893, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 4.6821, 3.3913999, -13.3786, 6.6893, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 3.8388, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 4.6821, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 4.6821, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 4.4131, 3.2091, -13.357699, 3.3446, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 6.6893, 3.3913999, -10.033899, 3.3446, 3.3913999, -6.6893, 6.6893, 3.3913999, -10.033899, 6.6893, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, 4.0225, 3.3913999, -8.7143, 3.3446, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, 0, 3.3913999, -8.7143, 4.0225, 3.3913999, -8.7143, 3.3446, 3.3913999, -3.3446, 3.3446, 3.3913999, -6.6893, 6.6893, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, 0, 3.3913999, -3.3446, 0, 3.3913999, -6.6893, 3.3446, 3.3913999, -6.6893, 0, 3.3913999, -3.3446, 3.3446, 3.3913999, -6.6893, 3.3446, 3.3913999, -3.3446, -3.6378, 3.3913999, -2.0792, 0, 3.3913999, -6.6893, 0, 3.3913999, -3.3446, -2.9566998, 3.3913999, 0, -3.6378, 3.3913999, -2.0792, 0, 3.3913999, -3.3446, -3.6378, 3.3913999, -2.0792, -3.3446, 3.3913999, -6.6893, 0, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -6.6893, -3.3446, 3.3913999, -6.6893, -6.6893, 3.3913999, -3.7326, -3.3446, 3.3913999, -6.6893, -3.6378, 3.3913999, -2.0792, -2.9566998, 3.3913999, 0, 0, 3.3913999, -3.3446, 0, 3.3913999, 0, 0, 3.3913999, 0, 0, 3.3913999, -3.3446, 3.3446, 3.3913999, -3.3446, -2.9566998, 3.3913999, 3.3446, -2.9566998, 3.3913999, 0, 0, 3.3913999, 0, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 0, 0, 3.3913999, 3.3446, -6.6893, 3.3913999, -3.7326, -6.6893, 3.3913999, -6.6893, -3.3446, 3.3913999, -6.6893, -6.6893, 3.3913999, -6.6893, -3.9101999, 3.3913999, -9.8592, -3.3446, 3.3913999, -6.6893, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -6.6893, -6.6893, 3.3913999, -3.7326, 0, 3.3913999, 3.3446, 0, 3.3913999, 0, 3.3446, 3.3913999, 0, 0, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 3.3446, 3.3913999, 0, 0, 3.3913999, 3.3446, 3.3446, 3.3913999, 0, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 3.3446, 3.3446, 3.3913999, 0, 6.6893, 3.3913999, 0, 3.3446, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 6.6893, 3.3913999, -3.3446, 3.3446, 3.3913999, 0, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, 0, 3.3446, 3.3913999, -3.3446, 6.6893, 3.3913999, -6.6893, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, 0, 6.6893, 3.3913999, -3.3446, 10.033899, 3.3913999, -3.3446, 6.6893, 3.3913999, -3.3446, 6.6893, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 6.6893, 3.3913999, -3.3446, 10.033899, 3.3913999, -6.6893, 10.033899, 3.3913999, -3.3446, -6.6893, 3.3913999, -6.6893, -6.6893, 3.3913999, -10.033899, -3.9101999, 3.3913999, -9.8592, -6.6893, 3.3913999, -10.033899, -3.9101999, 3.3913999, -12.538199, -3.9101999, 3.3913999, -9.8592, -10.033899, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -6.6893, 3.3913999, -6.6893, -10.033899, 3.3913999, -6.6893, -6.6893, 3.3913999, -10.033899, -6.6893, 3.3913999, -6.6893, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -10.033899, -6.6893, 3.3913999, -12.538199, -3.9101999, 3.3913999, -12.538199, -13.3786, 3.3913999, -3.7326, -13.3786, 3.3913999, -6.6893, -10.033899, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -6.6893, -10.033899, 3.3913999, -10.033899, -6.6893, 3.3913999, -10.033899, -13.3786, 3.3913999, -6.6893, -10.033899, 3.3913999, -10.033899, -10.033899, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -16.7232, 3.3913999, -6.6893, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -6.6893, -13.3786, 3.3913999, -10.033899, -10.033899, 3.3913999, -10.033899, -19.7545, 3.3913999, -2.7851999, -16.7232, 3.3913999, -6.6893, -16.191599, 3.3913999, -3.0971, -19.7545, 3.3913999, -2.7851999, -19.280699, 3.3913999, -6.6893, -16.7232, 3.3913999, -6.6893, -17.1112, 3.3913999, 0, -19.7545, 3.3913999, -2.7851999, -16.191599, 3.3913999, -3.0971, -17.1112, 3.3913999, 0, -19.9511, 3.3913999, -2.5834, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -17.1112, 3.3913999, 0, -20.0679, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -20.0679, 3.3913999, 0, -17.1112, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -17.1112, 3.3913999, 0, -17.1112, 3.3913999, 3.3044999, -13.3786, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -10.033899, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -10.033899, -10.033899, 3.3913999, -10.033899, -13.3786, 3.3913999, -10.033899, -13.3786, 3.3913999, -13.3786, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -10.033899, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -12.538199, -13.3786, 3.3913999, -13.3786, -10.699599, 3.3913999, -15.835, -10.699599, 3.3913999, -13.175799, -13.3786, 3.3913999, -13.3786, -13.3786, 3.3913999, -15.4154, -10.699599, 3.3913999, -15.835, -6.6893, 3.3913999, -12.538199, -10.699599, 3.3913999, -13.175799, -6.6893, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -6.6893, 3.175, -12.867, -20.0679, 3.3913999, 6.6893, -20.0679, 3.3913999, 3.3446, -17.1112, 3.3913999, 3.3044999, -22.5541, 3.3913999, 9.2058, -22.3151, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -22.5541, 3.3913999, 9.2058, -20.0679, 3.3913999, 6.6893, -20.0679, 3.3913999, 9.167399, -20.0679, 3.3913999, 9.167399, -20.0679, 3.3913999, 6.6893, -16.7232, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -17.1112, 3.3913999, 3.3044999, -16.7232, 3.3913999, 6.6893, -20.0679, 3.3913999, 9.167399, -16.7232, 3.3913999, 6.6893, -16.285099, 3.3913999, 9.5865, -16.7232, 3.3913999, 6.6893, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -16.7232, 3.3913999, 6.6893, -13.1355, 3.3913999, 6.7549996, -17.1112, 3.3913999, 3.3044999, -13.1355, 3.3913999, 6.7549996, -16.7232, 3.3913999, 6.6893, -16.053999, 3.3913999, 9.8082, -13.1355, 3.3913999, 6.7549996, -13.3786, 3.3913999, 10.033899, -13.1355, 3.3913999, 6.7549996, -17.1112, 3.3913999, 3.3044999, -14.877199, 3.3913999, 4.6657, -14.877199, 3.3913999, 4.6657, -17.1112, 3.3913999, 3.3044999, -15.582299, 3.3913999, 4.0366, -13.1355, 3.3913999, 6.7549996, -14.877199, 3.3913999, 4.6657, -14.0948, 3.3913999, 5.5073, -13.3786, 3.3913999, 10.033899, -13.1355, 3.3913999, 6.7549996, -10.033899, 3.3913999, 7.0772, -13.3786, 3.3913999, 10.033899, -10.033899, 3.3913999, 7.0772, -10.033899, 3.3913999, 10.033899, -10.033899, 3.3913999, 10.033899, -10.033899, 3.3913999, 7.0772, -6.6893, 3.3913999, 7.0772, -10.033899, 3.3913999, 10.033899, -6.6893, 3.3913999, 7.0772, -6.6893, 3.3913999, 10.033899, -10.033899, 3.0033998, 6.6893, -13.1355, 3.3913999, 6.7549996, -12.747499, 3.0033998, 6.3671, -10.033899, 3.0033998, 6.6893, -10.033899, 3.3913999, 7.0772, -13.1355, 3.3913999, 6.7549996, -2.5674999, 2.4164, 7.6215, -6.6893, 3.3913999, 7.0772, -6.6893, 3.0033998, 6.6893, -2.5674999, 2.4164, 7.6215, -2.1794999, 2.8042998, 8.009399, -6.6893, 3.3913999, 7.0772, -12.747499, 3.0033998, 6.3671, -14.0948, 3.3913999, 5.5073, -13.6942, 3.0033998, 5.1798, -12.747499, 3.0033998, 6.3671, -13.1355, 3.3913999, 6.7549996, -14.0948, 3.3913999, 5.5073, -6.6893, 3.0033998, 6.6893, -10.033899, 3.3913999, 7.0772, -10.033899, 3.0033998, 6.6893, -6.6893, 3.0033998, 6.6893, -6.6893, 3.3913999, 7.0772, -10.033899, 3.3913999, 7.0772, -16.7232, 3.0033998, 0, -16.191599, 3.3913999, -3.0971, -15.8036995, 3.0033998, -2.7091, -16.7232, 3.0033998, 0, -17.1112, 3.3913999, 0, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -3.7326, -15.8036995, 3.0033998, -2.7091, -16.191599, 3.3913999, -3.0971, -13.3786, 3.3913999, -3.7326, -13.3786, 3.0033998, -3.3446, -15.8036995, 3.0033998, -2.7091, -2.9566998, 3.3913999, 0, -4.0257998, 3.0033998, -1.6911999, -3.6378, 3.3913999, -2.0792, -2.9566998, 3.3913999, 0, -3.3446, 3.0033998, 0, -4.0257998, 3.0033998, -1.6911999, -3.6378, 3.3913999, -2.0792, -6.6893, 3.0033998, -3.3446, -6.6893, 3.3913999, -3.7326, -3.6378, 3.3913999, -2.0792, -4.0257998, 3.0033998, -1.6911999, -6.6893, 3.0033998, -3.3446, -10.033899, 3.3913999, -3.7326, -13.3786, 3.0033998, -3.3446, -13.3786, 3.3913999, -3.7326, -10.033899, 3.3913999, -3.7326, -10.033899, 3.0033998, -3.3446, -13.3786, 3.0033998, -3.3446, -6.6893, 3.3913999, -3.7326, -10.033899, 3.0033998, -3.3446, -10.033899, 3.3913999, -3.7326, -6.6893, 3.3913999, -3.7326, -6.6893, 3.0033998, -3.3446, -10.033899, 3.0033998, -3.3446, -16.7232, 3.0033998, 2.9166, -17.1112, 3.3913999, 0, -16.7232, 3.0033998, 0, -16.7232, 3.0033998, 2.9166, -17.1112, 3.3913999, 3.3044999, -17.1112, 3.3913999, 0, -14.4892, 3.0033998, 4.2778, -15.582299, 3.3913999, 4.0366, -15.372, 3.0033998, 3.6132998, -14.4892, 3.0033998, 4.2778, -14.877199, 3.3913999, 4.6657, -15.582299, 3.3913999, 4.0366, -2.9566998, 3.3913999, 3.3446, -3.3446, 3.0033998, 0, -2.9566998, 3.3913999, 0, -2.9566998, 3.3913999, 3.3446, -3.3446, 3.0033998, 3.3446, -3.3446, 3.0033998, 0, -2.1794999, 2.8042998, 8.009399, -2.1397, 3.0033998, 5.1795, -1.7832999, 3.3913999, 5.2162, -2.1794999, 2.8042998, 8.009399, -2.5674999, 2.4164, 7.6215, -2.1397, 3.0033998, 5.1795, -6.6893, 3.3913999, 10.033899, -2.1794999, 2.8042998, 8.009399, -3.3446, 3.3913999, 10.033899, -6.6893, 3.3913999, 10.033899, -6.6893, 3.3913999, 7.0772, -2.1794999, 2.8042998, 8.009399, -1.7832999, 3.3913999, 5.2162, 0, 3.3913999, 6.6893, -2.1794999, 2.8042998, 8.009399, 0, 3.3913999, 6.6893, -1.7832999, 3.3913999, 5.2162, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 6.6893, -2.9566998, 3.3913999, 3.3446, 0, 3.3913999, 3.3446, -3.3446, 3.3913999, 10.033899, 0, 3.3913999, 6.6893, 0, 3.3913999, 10.033899, -3.3446, 3.3913999, 10.033899, -2.1794999, 2.8042998, 8.009399, 0, 3.3913999, 6.6893, -2.1397, 3.0033998, 5.1795, -2.9566998, 3.3913999, 3.3446, -1.7832999, 3.3913999, 5.2162, -2.1397, 3.0033998, 5.1795, -3.3446, 3.0033998, 3.3446, -2.9566998, 3.3913999, 3.3446, -14.0948, 3.3913999, 5.5073, -14.4892, 3.0033998, 4.2778, -13.6942, 3.0033998, 5.1798, -14.0948, 3.3913999, 5.5073, -14.877199, 3.3913999, 4.6657, -14.4892, 3.0033998, 4.2778, -15.582299, 3.3913999, 4.0366, -16.7232, 3.0033998, 2.9166, -15.372, 3.0033998, 3.6132998, -15.582299, 3.3913999, 4.0366, -17.1112, 3.3913999, 3.3044999, -16.7232, 3.0033998, 2.9166, 20.198, 3.1490998, -10.033899, 19.798899, 3.3913999, -13.1096, 20.1539, 3.1299, -13.399799, 20.198, 3.1490998, -10.033899, 19.798899, 3.3913999, -10.033899, 19.798899, 3.3913999, -13.1096, 20.1539, 3.1299, -13.399799, 16.7232, 3.3913999, -13.1096, 16.8204, 3.138, -13.447599, 20.1539, 3.1299, -13.399799, 19.798899, 3.3913999, -13.1096, 16.7232, 3.3913999, -13.1096, 16.756899, 3.1650999, -16.7286, 12.738999, 3.3913999, -15.894899, 12.7471, 3.1766999, -16.1988, 16.756899, 3.1650999, -16.7286, 16.495699, 3.3913999, -16.459, 12.738999, 3.3913999, -15.894899, 16.8051, 3.1778, -13.479, 16.495699, 3.3913999, -16.459, 16.756899, 3.1650999, -16.7286, 16.8051, 3.1778, -13.479, 16.495699, 3.3913999, -13.42, 16.495699, 3.3913999, -16.459, 16.4543, 3.3913999, -13.3786, 16.8204, 3.138, -13.447599, 16.7232, 3.3913999, -13.1096, 16.8204, 3.138, -13.447599, 16.4543, 3.3913999, -13.3786, 16.495699, 3.3913999, -13.42, 16.8204, 3.138, -13.447599, 16.495699, 3.3913999, -13.42, 16.8051, 3.1778, -13.479, 10.033899, 3.0523999, -19.0294, 6.6893, 3.2782998, -18.727999, 6.6893, 3.0440998, -19.036999, 10.033899, 3.0523999, -19.0294, 10.033899, 3.2784998, -18.6997, 6.6893, 3.2782998, -18.727999, 12.723599, 2.9213, -19.2902, 10.033899, 3.2784998, -18.6997, 10.033899, 3.0523999, -19.0294, 12.723599, 2.9213, -19.2902, 12.446099, 3.1699998, -18.9401, 10.033899, 3.2784998, -18.6997, 12.446099, 3.1699998, -18.9401, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 12.446099, 3.1699998, -18.9401, 12.723599, 2.9213, -19.2902, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 10.033899, 3.2784998, -18.6997, 12.446099, 3.1699998, -18.9401, 10.033899, 3.3913999, -16.7232, 10.033899, 3.2784998, -18.6997, 12.460899, 3.3913999, -16.1674, 10.033899, 3.3913999, -16.7232, 12.460899, 3.3913999, -16.1674, 12.460899, 3.3913999, -16.1674, 6.6893, 3.3913999, -16.7232, 10.033899, 3.2784998, -18.6997, 10.033899, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 6.6893, 3.2782998, -18.727999, 10.033899, 3.2784998, -18.6997, 12.738999, 3.3913999, -15.894899, 12.747, 3.1771, -16.1991, 12.7471, 3.1766999, -16.1988, 12.738999, 3.3913999, -15.894899, 12.460899, 3.3913999, -16.1674, 12.747, 3.1771, -16.1991, 12.460899, 3.3913999, -16.1674, 12.738999, 3.3913999, -15.894899, 12.460899, 3.3913999, -16.1674, 3.8388, 3.3913999, -16.7232, 4.4783998, 3.1067, -18.2665, 4.6443, 3.2897, -17.9799, 3.8388, 3.3913999, -16.7232, 3.5895, 3.2033, -16.7232, 4.4783998, 3.1067, -18.2665, 4.6821, 3.3913999, -13.3786, 3.5895, 3.2033, -16.7232, 3.8388, 3.3913999, -16.7232, 4.6821, 3.3913999, -13.3786, 4.4131, 3.2091, -13.357699, 3.5895, 3.2033, -16.7232, 6.6640997, 3.0702, -19.018099, 4.6443, 3.2897, -17.9799, 4.4783998, 3.1067, -18.2665, 6.6640997, 3.0702, -19.018099, 6.6705, 3.2772, -18.741, 4.6443, 3.2897, -17.9799, 4.6443, 3.2897, -17.9799, 6.6893, 3.3913999, -16.7232, 3.8388, 3.3913999, -16.7232, 6.6893, 3.3913999, -16.7232, 4.6443, 3.2897, -17.9799, 6.6705, 3.2772, -18.741, 6.6893, 3.3913999, -16.7232, 6.6705, 3.2772, -18.741, 6.6893, 3.2782998, -18.727999, 6.6893, 3.2782998, -18.727999, 6.6640997, 3.0702, -19.018099, 6.6893, 3.0440998, -19.036999, 6.6893, 3.2782998, -18.727999, 6.6705, 3.2772, -18.741, 6.6640997, 3.0702, -19.018099, 3.7529, 3.1712, -9.0494995, 0, 3.3913999, -8.7143, 0, 3.179, -9.0652, 3.7529, 3.1712, -9.0494995, 4.0225, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, 4.0225, 3.3913999, -8.7143, 4.4131, 3.2091, -13.357699, 4.6821, 3.3913999, -13.3786, 4.0225, 3.3913999, -8.7143, 3.7529, 3.1712, -9.0494995, 4.4131, 3.2091, -13.357699, -3.6538, 3.1585999, -12.813399, -6.6893, 3.3913999, -12.538199, -6.6893, 3.175, -12.867, -3.6538, 3.1585999, -12.813399, -3.9101999, 3.3913999, -12.538199, -6.6893, 3.3913999, -12.538199, -3.6076, 3.1676, -10.0696, -3.9101999, 3.3913999, -12.538199, -3.6538, 3.1585999, -12.813399, -3.6076, 3.1676, -10.0696, -3.9101999, 3.3913999, -9.8592, -3.9101999, 3.3913999, -12.538199, -0.0081, 3.1864998, -9.063499, -3.9101999, 3.3913999, -9.8592, -3.6076, 3.1676, -10.0696, -0.0081, 3.1864998, -9.063499, 0, 3.3913999, -8.7143, -3.9101999, 3.3913999, -9.8592, 0, 3.3913999, -8.7143, -0.0081, 3.1864998, -9.063499, 0, 3.179, -9.0652, 0, 3.3913999, -8.7143, 0, 3.3913999, -8.7143, -0.0081, 3.1864998, -9.063499, -10.4043, 3.1608999, -13.4295, -10.699599, 3.3913999, -15.835, -10.4319, 3.1557999, -16.1556, -10.4043, 3.1608999, -13.4295, -10.699599, 3.3913999, -13.175799, -10.699599, 3.3913999, -15.835, -10.4319, 3.1557999, -16.1556, -13.3786, 3.3913999, -15.4154, -13.3786, 3.1771998, -15.7625, -10.4319, 3.1557999, -16.1556, -10.699599, 3.3913999, -15.835, -13.3786, 3.3913999, -15.4154, -10.699599, 3.3913999, -13.175799, -6.6893, 3.175, -12.867, -6.6893, 3.3913999, -12.538199, -10.699599, 3.3913999, -13.175799, -10.4043, 3.1608999, -13.4295, -6.6893, 3.175, -12.867, -16.130499, 3.6227, -13.623799, -16.0243, 3.3509998, -15.752, -15.7941, 3.5591, -15.4641, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -16.0243, 3.3509998, -15.752, -13.3911, 3.1892, -15.757, -15.7941, 3.5591, -15.4641, -16.0243, 3.3509998, -15.752, -13.3911, 3.1892, -15.757, -13.396, 3.3925, -15.4333, -15.7941, 3.5591, -15.4641, -15.7941, 3.5591, -15.4641, -13.3786, 3.3913999, -13.3786, -16.130499, 3.6227, -13.623799, -13.3786, 3.3913999, -13.3786, -15.7941, 3.5591, -15.4641, -13.396, 3.3925, -15.4333, -13.3786, 3.3913999, -13.3786, -13.396, 3.3925, -15.4333, -13.3786, 3.3913999, -15.4154, -13.3786, 3.3913999, -15.4154, -13.3911, 3.1892, -15.757, -13.3786, 3.1771998, -15.7625, -13.3786, 3.3913999, -15.4154, -13.396, 3.3925, -15.4333, -13.3911, 3.1892, -15.757, -16.3753, 3.4225, -13.6277, -16.1241, 3.3832998, -9.5097, -16.4131, 3.1706, -9.788899, -16.3753, 3.4225, -13.6277, -16.130499, 3.6227, -13.623799, -16.1241, 3.3832998, -9.5097, -16.7232, 3.3913999, -6.6893, -13.3786, 3.3913999, -10.033899, -13.3786, 3.3913999, -6.6893, -16.7232, 3.3913999, -6.6893, -16.1241, 3.3832998, -9.5097, -13.3786, 3.3913999, -10.033899, -16.1241, 3.3832998, -9.5097, -13.3786, 3.3913999, -13.3786, -13.3786, 3.3913999, -10.033899, -16.1241, 3.3832998, -9.5097, -16.130499, 3.6227, -13.623799, -13.3786, 3.3913999, -13.3786, -16.130499, 3.6227, -13.623799, -16.1241, 3.3832998, -9.5097, -16.130499, 3.6227, -13.623799, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -16.3753, 3.4225, -13.6277, -16.130499, 3.6227, -13.623799, -16.130499, 3.6227, -13.623799, -16.3753, 3.4225, -13.6277, -19.7545, 3.3913999, -2.7851999, -19.515, 3.2122, -6.6893, -19.280699, 3.3913999, -6.6893, -19.7545, 3.3913999, -2.7851999, -19.9489, 3.2063, -2.8082, -19.515, 3.2122, -6.6893, -19.280699, 3.3913999, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.3965, 3.3909, -9.5092, -19.280699, 3.3913999, -6.6893, -19.515, 3.2122, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.280699, 3.3913999, -6.6893, -16.1241, 3.3832998, -9.5097, -16.7232, 3.3913999, -6.6893, -19.280699, 3.3913999, -6.6893, -19.3965, 3.3909, -9.5092, -16.1241, 3.3832998, -9.5097, -16.1241, 3.3832998, -9.5097, -19.6237, 3.1655998, -9.757899, -16.4131, 3.1706, -9.788899, -19.6237, 3.1655998, -9.757899, -16.1241, 3.3832998, -9.5097, -19.3965, 3.3909, -9.5092, -19.6237, 3.1655998, -9.757899, -19.3965, 3.3909, -9.5092, -19.6161, 3.2075999, -9.7116995, -22.8657, 3.4937, 3.3613, -23.3676, 3.4459999, 0.1372, -23.170399, 3.6251, 0.122999996, -22.8657, 3.4937, 3.3613, -23.0809, 3.3083, 3.3615, -23.3676, 3.4459999, 0.1372, -23.170399, 3.6251, 0.122999996, -23.390299, 3.3349998, -2.6938999, -23.192099, 3.5300999, -2.4668999, -23.170399, 3.6251, 0.122999996, -23.3676, 3.4459999, 0.1372, -23.390299, 3.3349998, -2.6938999, -23.192099, 3.5300999, -2.4668999, -19.9489, 3.2063, -2.8082, -19.9511, 3.3913999, -2.5834, -23.192099, 3.5300999, -2.4668999, -23.390299, 3.3349998, -2.6938999, -19.9489, 3.2063, -2.8082, -23.192099, 3.5300999, -2.4668999, -20.0679, 3.3913999, 0, -23.170399, 3.6251, 0.122999996, -20.0679, 3.3913999, 0, -23.192099, 3.5300999, -2.4668999, -19.9511, 3.3913999, -2.5834, -19.9511, 3.3913999, -2.5834, -23.192099, 3.5300999, -2.4668999, -19.9511, 3.3913999, -2.5834, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 0, -20.0679, 3.3913999, 3.3446, -22.8657, 3.4937, 3.3613, -23.170399, 3.6251, 0.122999996, -20.0679, 3.3913999, 0, -19.7545, 3.3913999, -2.7851999, -19.9489, 3.2063, -2.8082, -19.9489, 3.2063, -2.8082, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -19.9489, 3.2063, -2.8082, -19.9511, 3.3913999, -2.5834, -19.7545, 3.3913999, -2.7851999, -19.9511, 3.3913999, -2.5834, -23.0777, 3.3197, 3.3734, -22.3151, 3.3913999, 6.6893, -22.563799, 3.2219, 6.6893, -23.0777, 3.3197, 3.3734, -22.8764, 3.4937, 3.3741, -22.3151, 3.3913999, 6.6893, -22.8764, 3.4937, 3.3741, -20.0679, 3.3913999, 6.6893, -22.3151, 3.3913999, 6.6893, -20.0679, 3.3913999, 6.6893, -22.8764, 3.4937, 3.3741, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 6.6893, -22.8657, 3.4937, 3.3613, -20.0679, 3.3913999, 3.3446, -22.8657, 3.4937, 3.3613, -23.0777, 3.3197, 3.3734, -23.0809, 3.3083, 3.3615, -22.8657, 3.4937, 3.3613, -22.8764, 3.4937, 3.3741, -23.0777, 3.3197, 3.3734, -16.285099, 3.3913999, 9.5865, -20.0679, 3.1943, 9.407499, -20.0679, 3.3913999, 9.167399, -16.285099, 3.3913999, 9.5865, -16.2818, 3.1913998, 9.8056, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -20.0679, 3.3913999, 9.167399, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -22.5541, 3.3913999, 9.2058, -20.0679, 3.3913999, 9.167399, -22.5541, 3.3913999, 9.2058, -22.563799, 3.2219, 6.6893, -22.3151, 3.3913999, 6.6893, -22.5541, 3.3913999, 9.2058, -22.791399, 3.2124999, 9.4432, -22.563799, 3.2219, 6.6893, -22.791399, 3.2124999, 9.4432, -22.5541, 3.3913999, 9.2058, -22.791399, 3.2124999, 9.4432, -13.3786, 3.3922, 12.571899, -16.076399, 3.04, 12.735, -15.847199, 3.2614, 12.4973, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, -16.076399, 3.04, 12.735, -15.847199, 3.2614, 12.4973, -16.2818, 3.1913998, 9.8056, -16.053999, 3.3913999, 9.8082, -15.847199, 3.2614, 12.4973, -16.076399, 3.04, 12.735, -16.2818, 3.1913998, 9.8056, -15.847199, 3.2614, 12.4973, -13.3786, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -15.847199, 3.2614, 12.4973, -16.053999, 3.3913999, 9.8082, -13.3786, 3.3913999, 10.033899, -16.053999, 3.3913999, 9.8082, -15.847199, 3.2614, 12.4973, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.2818, 3.1913998, 9.8056, -16.2818, 3.1913998, 9.8056, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -16.2818, 3.1913998, 9.8056, -16.053999, 3.3913999, 9.8082, -16.285099, 3.3913999, 9.5865, -16.053999, 3.3913999, 9.8082, -5.9742, 3.3994, 12.8817, -10.033899, 2.9384, 12.4537, -10.033899, 3.2142, 12.1061, -5.9742, 3.3994, 12.8817, -6.2748, 3.126, 13.122, -10.033899, 2.9384, 12.4537, -10.033899, 3.2142, 12.1061, -13.3786, 3.194, 12.8089, -13.3786, 3.3922, 12.571899, -10.033899, 3.2142, 12.1061, -10.033899, 2.9384, 12.4537, -13.3786, 3.194, 12.8089, -10.033899, 3.2142, 12.1061, -6.6893, 3.3913999, 10.033899, -5.9742, 3.3994, 12.8817, -10.033899, 3.2142, 12.1061, -10.033899, 3.3913999, 10.033899, -6.6893, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -10.033899, 3.3913999, 10.033899, -10.033899, 3.2142, 12.1061, -13.3786, 3.3922, 12.571899, -13.3786, 3.3913999, 10.033899, -10.033899, 3.3913999, 10.033899, -13.3786, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -13.3786, 3.3922, 12.571899, -5.9742, 3.3994, 12.8817, -3.3446, 3.3913999, 10.033899, -3.3446, 3.3913999, 13.3786, -5.9742, 3.3994, 12.8817, -6.6893, 3.3913999, 10.033899, -3.3446, 3.3913999, 10.033899, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, -13.3786, 3.194, 12.8089, -13.3786, 3.3922, 12.571899, -13.3786, 3.3922, 12.571899, -13.3786, 3.194, 12.8089, 3.6399, 3.3913999, 16.2405, 0, 2.9636998, 16.0179, 0, 3.2243998, 15.7093, 3.6399, 3.3913999, 16.2405, 3.6425998, 3.1413999, 16.5127, 0, 2.9636998, 16.0179, 0, 3.2243998, 15.7093, -3.3446, 3.1497998, 15.914599, -3.3446, 3.3913999, 15.6011, 0, 3.2243998, 15.7093, 0, 2.9636998, 16.0179, -3.3446, 3.1497998, 15.914599, -6.2558, 3.1427999, 16.4098, -3.3446, 3.3913999, 15.6011, -3.3446, 3.1497998, 15.914599, -6.2558, 3.1427999, 16.4098, -5.9737997, 3.392, 16.087599, -3.3446, 3.3913999, 15.6011, -3.3446, 3.3913999, 15.6011, 0, 3.3913999, 13.3786, 0, 3.2243998, 15.7093, -3.3446, 3.3913999, 15.6011, -3.3446, 3.3913999, 13.3786, 0, 3.3913999, 13.3786, 0, 3.2243998, 15.7093, 3.3446, 3.3913999, 13.3786, 3.6399, 3.3913999, 16.2405, 0, 3.2243998, 15.7093, 0, 3.3913999, 13.3786, 3.3446, 3.3913999, 13.3786, -5.9737997, 3.392, 16.087599, -3.3446, 3.3913999, 13.3786, -3.3446, 3.3913999, 15.6011, -5.9737997, 3.392, 16.087599, -5.9742, 3.3994, 12.8817, -3.3446, 3.3913999, 13.3786, -6.2748, 3.1260998, 16.4145, -5.9737997, 3.392, 16.087599, -6.2558, 3.1427999, 16.4098, -5.9737997, 3.392, 16.087599, -6.2748, 3.1260998, 16.4145, -6.2748, 3.126, 13.122, -5.9737997, 3.392, 16.087599, -6.2748, 3.126, 13.122, -5.9742, 3.3994, 12.8817, 6.6893, 3.3913999, 18.9861, 3.9266999, 3.5967, 19.6223, 4.1273, 3.7335, 19.3804, 6.6893, 3.3913999, 18.9861, 6.6893, 3.2050998, 19.228699, 3.9266999, 3.5967, 19.6223, 4.1273, 3.7335, 19.3804, 3.6536, 3.2078998, 16.5669, 3.8651, 3.3981998, 16.5647, 4.1273, 3.7335, 19.3804, 3.9266999, 3.5967, 19.6223, 3.6536, 3.2078998, 16.5669, 3.8651, 3.3981998, 16.5647, 6.6893, 3.3913999, 18.9861, 4.1273, 3.7335, 19.3804, 6.6893, 3.3913999, 18.9861, 3.8651, 3.3981998, 16.5647, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 18.9861, 3.9148, 3.3913999, 16.514599, 6.6893, 3.3913999, 16.7232, 3.9148, 3.3913999, 16.514599, 3.6425998, 3.1413999, 16.5127, 3.6399, 3.3913999, 16.2405, 3.6425998, 3.1413999, 16.5127, 3.9148, 3.3913999, 16.514599, 3.8651, 3.3981998, 16.5647, 3.6425998, 3.1413999, 16.5127, 3.8651, 3.3981998, 16.5647, 3.6536, 3.2078998, 16.5669, 9.3066, 3.2186, 19.0653, 10.3743, 3.3913999, 16.7232, 10.5913, 3.1985998, 16.7232, 9.3066, 3.2186, 19.0653, 9.1275, 3.3913999, 18.830599, 10.3743, 3.3913999, 16.7232, 9.1275, 3.3913999, 18.830599, 6.6991997, 3.2148, 19.2255, 6.6949, 3.3913999, 18.9914, 9.1275, 3.3913999, 18.830599, 9.3066, 3.2186, 19.0653, 6.6991997, 3.2148, 19.2255, 6.6893, 3.3913999, 18.9861, 6.6991997, 3.2148, 19.2255, 6.6893, 3.2050998, 19.228699, 6.6893, 3.3913999, 18.9861, 6.6949, 3.3913999, 18.9914, 6.6991997, 3.2148, 19.2255, 9.8131, 3.3546, 13.1979, 10.5893, 3.2117, 16.7106, 10.403999, 3.3911998, 16.6938, 9.8131, 3.3546, 13.1979, 10.0546, 3.1885, 13.4071, 10.5893, 3.2117, 16.7106, 6.6893, 3.3913999, 13.3786, 10.3743, 3.3913999, 16.7232, 6.6893, 3.3913999, 16.7232, 10.3743, 3.3913999, 16.7232, 6.6893, 3.3913999, 13.3786, 9.8131, 3.3546, 13.1979, 10.3743, 3.3913999, 16.7232, 9.8131, 3.3546, 13.1979, 10.403999, 3.3911998, 16.6938, 6.6893, 3.3913999, 13.3786, 10.033899, 3.3913999, 10.033899, 9.8131, 3.3546, 13.1979, 6.6893, 3.3913999, 13.3786, 6.6893, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 10.3743, 3.3913999, 16.7232, 10.5893, 3.2117, 16.7106, 10.5913, 3.1985998, 16.7232, 10.3743, 3.3913999, 16.7232, 10.403999, 3.3911998, 16.6938, 10.5893, 3.2117, 16.7106, 13.1839, 3.2744, 6.6893, 13.5511, 3.1797, 6.6893, 13.4036, 3.0749998, 6.6893, 13.1839, 3.2744, 6.6893, 13.3786, 3.2744, 6.496, 13.5511, 3.1797, 6.6893, 12.9758, 3.2036, 10.033899, 13.1839, 3.2744, 6.6893, 13.4036, 3.0749998, 6.6893, 12.9758, 3.2036, 10.033899, 12.7325, 3.3913999, 10.033899, 13.1839, 3.2744, 6.6893, 13.2631, 3.5611, 13.4043, 12.7325, 3.3913999, 10.033899, 12.9758, 3.2036, 10.033899, 13.2631, 3.5611, 13.4043, 13.025499, 3.6999, 13.1985, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 13.1839, 3.2744, 6.6893, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 10.033899, 10.033899, 3.3913999, 6.6893, 13.1839, 3.2744, 6.6893, 9.8131, 3.3546, 13.1979, 12.7325, 3.3913999, 10.033899, 13.025499, 3.6999, 13.1985, 9.8131, 3.3546, 13.1979, 10.033899, 3.3913999, 10.033899, 12.7325, 3.3913999, 10.033899, 10.033899, 3.3913999, 3.3446, 13.1839, 3.2744, 6.6893, 10.033899, 3.3913999, 6.6893, 13.1839, 3.2744, 6.6893, 10.033899, 3.3913999, 3.3446, 13.3786, 3.3913999, 3.3446, 13.1839, 3.2744, 6.6893, 13.3786, 3.3913999, 3.3446, 13.3786, 3.2744, 6.496, 13.025499, 3.6999, 13.1985, 10.0546, 3.1885, 13.4071, 9.8131, 3.3546, 13.1979, 13.025499, 3.6999, 13.1985, 13.2631, 3.5611, 13.4043, 10.0546, 3.1885, 13.4071, 13.2631, 3.5611, 13.4043, 13.2631, 3.5611, 13.4043, 13.025499, 3.6999, 13.1985, 14.0489, 3.0042, -3.3446, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3028998, -3.6027, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.0865998, 13.1206, 3.3028998, -3.3446, 16.7232, 3.1513, -3.602, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.6027, 16.7232, 3.1513, -3.602, 16.7127, 2.8734, -3.3446, 14.0489, 3.0042, -3.3446, 13.3786, 3.3028998, -3.6027, 16.7232, 3.3913999, -6.6893, 16.7232, 3.1513, -3.602, 13.3786, 3.3028998, -3.6027, 13.3786, 3.3913999, -6.6893, 16.7232, 3.3913999, -6.6893, 10.033899, 3.3913999, -6.6893, 13.1206, 3.3028998, -3.3446, 10.033899, 3.3913999, -3.3446, 13.1206, 3.3028998, -3.3446, 10.033899, 3.3913999, -6.6893, 13.3786, 3.3913999, -6.6893, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3913999, -6.6893, 13.3786, 3.3028998, -3.6027, 20.0679, 0, 0, 14.0489, 3.0042, -3.3446, 20.961199, 0, -3.3446, 20.0679, 0, 3.3446, 14.0489, 3.0042, -3.3446, 20.0679, 0, 0, 14.0489, 3.0042, -3.3446, 13.3786, 3.3913999, 0, 13.3786, 3.3028998, -3.0865998, 14.0489, 3.0042, -3.3446, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 0, 14.0489, 3.0042, -3.3446, 20.0679, 0, 3.3446, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 0, 13.3786, 3.2744, 6.496, 13.3786, 3.3913999, 3.3446, 13.3786, 3.2744, 6.496, 20.0679, 0, 3.3446, 16.7232, 1.5715, 6.6893, 16.7232, 1.5715, 6.6893, 20.0679, 0, 3.3446, 20.0679, -0.124199994, 6.6893, 13.3786, 3.2744, 6.496, 16.7232, 1.5715, 6.6893, 13.5511, 3.1797, 6.6893, 10.033899, 3.3913999, -3.3446, 13.3786, 3.3913999, 0, 10.033899, 3.3913999, 0, 13.3786, 3.3913999, 0, 10.033899, 3.3913999, -3.3446, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3913999, 0, 13.1206, 3.3028998, -3.3446, 13.3786, 3.3028998, -3.0865998, 19.831999, 3.3902998, -10.0008, 20.147, 3.0588999, -6.6893, 19.8322, 3.2891998, -6.6893, 19.831999, 3.3902998, -10.0008, 20.1796, 3.182, -9.995999, 20.147, 3.0588999, -6.6893, 19.8322, 3.2891998, -6.6893, 20.1349, 2.7974, -3.3783998, 19.8322, 3.0491, -3.602, 19.8322, 3.2891998, -6.6893, 20.147, 3.0588999, -6.6893, 20.1349, 2.7974, -3.3783998, 16.7232, 3.1513, -3.602, 19.8322, 3.2891998, -6.6893, 19.8322, 3.0491, -3.602, 16.7232, 3.1513, -3.602, 16.7232, 3.3913999, -6.6893, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -10.033899, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -6.6893, 19.8322, 3.2891998, -6.6893, 16.7232, 3.3913999, -10.033899, 19.798899, 3.3913999, -10.033899, 19.8322, 3.2891998, -6.6893, 19.798899, 3.3913999, -10.033899, 19.831999, 3.3902998, -10.0008, 20.198, 3.1490998, -10.033899, 19.831999, 3.3902998, -10.0008, 19.798899, 3.3913999, -10.033899, 20.198, 3.1490998, -10.033899, 20.1796, 3.182, -9.995999, 19.831999, 3.3902998, -10.0008, 20.144999, 2.7605999, -3.3446, 19.8322, 3.0491, -3.602, 20.1349, 2.7974, -3.3783998, 19.8322, 3.0491, -3.602, 20.144999, 2.7605999, -3.3446, 16.7127, 2.8734, -3.3446, 19.8322, 3.0491, -3.602, 16.7127, 2.8734, -3.3446, 16.7232, 3.1513, -3.602, 15.0508995, 0, 6.6893, 16.7232, 1.5715, 6.6893, 16.7232, 0, 6.6893, 16.7232, 0, 6.6893, 16.7232, 1.5715, 6.6893, 20.0679, -0.124199994, 6.6893, 15.0508995, 0, 6.6893, 13.5511, 3.1797, 6.6893, 16.7232, 1.5715, 6.6893, 15.0508995, 0, 6.6893, 13.4036, 3.0749998, 6.6893, 13.5511, 3.1797, 6.6893, 13.4036, 3.0749998, 6.6893, 15.0508995, 0, 6.6893, 13.8046, 0, 6.6893, -16.7232, 0.6137, 0, -15.7546, 0.6137, 3.5372, -16.7232, 0.6137, 2.9166, -15.7546, 0.6137, 3.5372, -16.7232, 0.6137, 0, -13.3786, 0.6137, 0, -16.7232, 0.6137, 0, -15.8036995, 0.6137, -2.7091, -13.3786, 0.6137, -3.3446, -16.7232, 0.6137, 0, -13.3786, 0.6137, -3.3446, -13.3786, 0.6137, 0, -13.3786, 0.6137, 0, -13.3786, 0.6137, -3.3446, -10.033899, 0.6137, -3.3446, -15.7546, 0.6137, 3.5372, -13.3786, 0.6137, 0, -14.4892, 0.6137, 4.2778, -13.3786, 0.6137, 0, -10.033899, 0.6137, -3.3446, -10.033899, 0.6137, 0, -14.4892, 0.6137, 4.2778, -13.3786, 0.6137, 0, -10.033899, 0.6137, 0, -10.033899, 0.6137, 0, -10.033899, 0.6137, -3.3446, -6.6893, 0.6137, -3.3446, -10.033899, 0.6137, 0, -6.6893, 0.6137, -3.3446, -6.6893, 0.6137, 0, -6.6893, 0.6137, 0, -6.6893, 0.6137, -3.3446, -4.0257998, 0.6137, -1.6911999, -6.6893, 0.6137, 0, -4.0257998, 0.6137, -1.6911999, -3.3446, 0.6137, 0, -10.033899, 0.6137, 3.3446, -10.033899, 0.6137, 0, -6.6893, 0.6137, 0, -14.4892, 0.6137, 4.2778, -10.033899, 0.6137, 0, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 0, -3.3446, 0.6137, 0, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 0, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -3.3446, 0.6137, 0, -3.3446, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -14.4892, 0.6137, 4.2778, -10.033899, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -10.033899, 0.6137, 3.3446, -6.6893, 0.6137, 3.3446, -10.033899, 0.6137, 6.6893, -6.6893, 0.6137, 3.3446, -6.6893, 0.6137, 6.6893, -10.033899, 0.6137, 6.6893, -13.677099, 0.6137, 5.2616, -14.4892, 0.6137, 4.2778, -13.677099, 0.6137, 5.2616, -10.033899, 0.6137, 6.6893, -12.747499, 0.6137, 6.3671, -6.6893, 0.6137, 3.3446, -2.5674999, 0.0266, 7.6215, -6.6893, 0.6137, 6.6893, -2.5674999, 0.0266, 7.6215, -6.6893, 0.6137, 3.3446, -3.3446, 0.6137, 3.3446, -2.5674999, 0.0266, 7.6215, -3.3446, 0.6137, 3.3446, -2.1193, 0.6137, 5.2736998, -16.7232, 3.0033998, 2.9166, -15.7546, 0.6137, 3.5372, -15.372, 3.0033998, 3.6132998, -16.7232, 3.0033998, 2.9166, -16.7232, 0.6137, 2.9166, -15.7546, 0.6137, 3.5372, -14.4892, 3.0033998, 4.2778, -13.677099, 0.6137, 5.2616, -13.6942, 3.0033998, 5.1798, -14.4892, 3.0033998, 4.2778, -14.4892, 0.6137, 4.2778, -13.677099, 0.6137, 5.2616, -15.8036995, 3.0033998, -2.7091, -16.7232, 0.6137, 0, -16.7232, 3.0033998, 0, -15.8036995, 3.0033998, -2.7091, -15.8036995, 0.6137, -2.7091, -16.7232, 0.6137, 0, -16.7232, 3.0033998, 0, -16.7232, 0.6137, 2.9166, -16.7232, 3.0033998, 2.9166, -16.7232, 3.0033998, 0, -16.7232, 0.6137, 0, -16.7232, 0.6137, 2.9166, -3.3446, 3.0033998, 0, -4.0257998, 0.6137, -1.6911999, -4.0257998, 3.0033998, -1.6911999, -3.3446, 3.0033998, 0, -3.3446, 0.6137, 0, -4.0257998, 0.6137, -1.6911999, -3.3446, 3.0033998, 3.3446, -3.3446, 0.6137, 0, -3.3446, 3.0033998, 0, -3.3446, 3.0033998, 3.3446, -3.3446, 0.6137, 3.3446, -3.3446, 0.6137, 0, -12.747499, 3.0033998, 6.3671, -10.033899, 0.6137, 6.6893, -10.033899, 3.0033998, 6.6893, -12.747499, 3.0033998, 6.3671, -12.747499, 0.6137, 6.3671, -10.033899, 0.6137, 6.6893, -10.033899, 3.0033998, -3.3446, -13.3786, 0.6137, -3.3446, -13.3786, 3.0033998, -3.3446, -10.033899, 3.0033998, -3.3446, -10.033899, 0.6137, -3.3446, -13.3786, 0.6137, -3.3446, -6.6893, 3.0033998, -3.3446, -10.033899, 0.6137, -3.3446, -10.033899, 3.0033998, -3.3446, -6.6893, 3.0033998, -3.3446, -6.6893, 0.6137, -3.3446, -10.033899, 0.6137, -3.3446, -13.3786, 3.0033998, -3.3446, -15.8036995, 0.6137, -2.7091, -15.8036995, 3.0033998, -2.7091, -13.3786, 3.0033998, -3.3446, -13.3786, 0.6137, -3.3446, -15.8036995, 0.6137, -2.7091, -4.0257998, 3.0033998, -1.6911999, -6.6893, 0.6137, -3.3446, -6.6893, 3.0033998, -3.3446, -4.0257998, 3.0033998, -1.6911999, -4.0257998, 0.6137, -1.6911999, -6.6893, 0.6137, -3.3446, -6.6893, 3.0033998, 6.6893, -2.5674999, 0.0266, 7.6215, -2.5674999, 2.4164, 7.6215, -6.6893, 3.0033998, 6.6893, -6.6893, 0.6137, 6.6893, -2.5674999, 0.0266, 7.6215, -10.033899, 3.0033998, 6.6893, -6.6893, 0.6137, 6.6893, -6.6893, 3.0033998, 6.6893, -10.033899, 3.0033998, 6.6893, -10.033899, 0.6137, 6.6893, -6.6893, 0.6137, 6.6893, -2.5674999, 2.4164, 7.6215, -2.1193, 0.6137, 5.2736998, -2.1397, 3.0033998, 5.1795, -2.5674999, 2.4164, 7.6215, -2.5674999, 0.0266, 7.6215, -2.1193, 0.6137, 5.2736998, -2.1193, 0.6137, 5.2736998, -3.3446, 3.0033998, 3.3446, -2.1397, 3.0033998, 5.1795, -2.1193, 0.6137, 5.2736998, -3.3446, 0.6137, 3.3446, -3.3446, 3.0033998, 3.3446, -13.677099, 0.6137, 5.2616, -12.747499, 3.0033998, 6.3671, -13.6942, 3.0033998, 5.1798, -13.677099, 0.6137, 5.2616, -12.747499, 0.6137, 6.3671, -12.747499, 3.0033998, 6.3671, -15.7546, 0.6137, 3.5372, -14.4892, 3.0033998, 4.2778, -15.372, 3.0033998, 3.6132998, -15.7546, 0.6137, 3.5372, -14.4892, 0.6137, 4.2778, -14.4892, 3.0033998, 4.2778, 21.1831, 0, -13.6544, 16.8204, 3.138, -13.447599, 18.0241, 0, -14.3019, 21.1831, 0, -13.6544, 20.1539, 3.1299, -13.399799, 16.8204, 3.138, -13.447599, 21.8888, 0, -10.033899, 20.1539, 3.1299, -13.399799, 21.1831, 0, -13.6544, 21.8888, 0, -10.033899, 20.198, 3.1490998, -10.033899, 20.1539, 3.1299, -13.399799, 17.2285, 0, -16.8036, 12.7471, 3.1766999, -16.1988, 13.7014, 0, -17.416399, 17.2285, 0, -16.8036, 16.756899, 3.1650999, -16.7286, 12.7471, 3.1766999, -16.1988, 16.8204, 3.138, -13.447599, 17.2285, 0, -16.8036, 18.0241, 0, -14.3019, 17.2285, 0, -16.8036, 16.8204, 3.138, -13.447599, 16.8051, 3.1778, -13.479, 17.2285, 0, -16.8036, 16.8051, 3.1778, -13.479, 16.756899, 3.1650999, -16.7286, 12.7471, 3.1766999, -16.1988, 13.3786, 0, -20.5992, 13.7014, 0, -17.416399, 13.3786, 0, -20.5992, 12.7471, 3.1766999, -16.1988, 12.747, 3.1771, -16.1991, 13.3786, 0, -20.5992, 12.747, 3.1771, -16.1991, 12.723599, 2.9213, -19.2902, 13.3786, 0, -20.5992, 10.033899, 3.0523999, -19.0294, 10.033899, 0, -20.467, 13.3786, 0, -20.5992, 12.723599, 2.9213, -19.2902, 10.033899, 3.0523999, -19.0294, 10.033899, 0, -20.467, 6.6893, 3.0440998, -19.036999, 6.6893, 0, -20.1318, 10.033899, 0, -20.467, 10.033899, 3.0523999, -19.0294, 6.6893, 3.0440998, -19.036999, 3.0140998, 0, -16.7232, 4.4131, 3.2091, -13.357699, 3.3446, -0.3989, -12.9443, 3.0140998, 0, -16.7232, 3.5895, 3.2033, -16.7232, 4.4131, 3.2091, -13.357699, 6.6893, 3.0440998, -19.036999, 3.3446, 0, -20.5992, 6.6893, 0, -20.1318, 3.3446, 0, -20.5992, 6.6893, 3.0440998, -19.036999, 6.6640997, 3.0702, -19.018099, 3.3446, 0, -20.5992, 6.6640997, 3.0702, -19.018099, 4.4783998, 3.1067, -18.2665, 3.3446, 0, -20.5992, 3.5895, 3.2033, -16.7232, 3.0140998, 0, -16.7232, 3.3446, 0, -20.5992, 4.4783998, 3.1067, -18.2665, 3.5895, 3.2033, -16.7232, 2.8241, 0, -10.4594, 0, 3.179, -9.0652, 0, 0, -10.7654, 2.8241, 0, -10.4594, 3.7529, 3.1712, -9.0494995, 0, 3.179, -9.0652, 3.3446, -0.3989, -12.9443, 3.7529, 3.1712, -9.0494995, 2.8241, 0, -10.4594, 3.3446, -0.3989, -12.9443, 4.4131, 3.2091, -13.357699, 3.7529, 3.1712, -9.0494995, 4.4131, 3.2091, -13.357699, 3.3446, -0.3989, -12.9443, 4.4131, 3.2091, -13.357699, -2.6297, 0, -10.5745, -3.6538, 3.1585999, -12.813399, -3.3446, 0, -13.3786, -2.6297, 0, -10.5745, -3.6076, 3.1676, -10.0696, -3.6538, 3.1585999, -12.813399, -3.3446, 0, -13.3786, -6.6893, 3.175, -12.867, -6.6893, 0, -14.2637, -3.3446, 0, -13.3786, -3.6538, 3.1585999, -12.813399, -6.6893, 3.175, -12.867, 0, 3.179, -9.0652, -2.6297, 0, -10.5745, 0, 0, -10.7654, -2.6297, 0, -10.5745, 0, 3.179, -9.0652, -0.0081, 3.1864998, -9.063499, -2.6297, 0, -10.5745, -0.0081, 3.1864998, -9.063499, -3.6076, 3.1676, -10.0696, -6.6893, 0, -14.2637, -10.4043, 3.1608999, -13.4295, -9.6168995, 0, -14.127899, -6.6893, 0, -14.2637, -6.6893, 3.175, -12.867, -10.4043, 3.1608999, -13.4295, -6.6893, 3.175, -12.867, -6.6893, 0, -14.2637, -6.6893, 3.175, -12.867, -9.6168995, 0, -14.127899, -10.4319, 3.1557999, -16.1556, -10.033899, 0, -16.7232, -9.6168995, 0, -14.127899, -10.4043, 3.1608999, -13.4295, -10.4319, 3.1557999, -16.1556, -10.033899, 0, -16.7232, -13.3786, 3.1771998, -15.7625, -13.3786, 0, -17.3364, -10.033899, 0, -16.7232, -10.4319, 3.1557999, -16.1556, -13.3786, 3.1771998, -15.7625, -16.7232, 0, -16.7232, -16.3753, 3.4225, -13.6277, -16.7232, 0, -13.3786, -16.7232, 0, -16.7232, -16.0243, 3.3509998, -15.752, -16.3753, 3.4225, -13.6277, -13.3786, 3.1771998, -15.7625, -16.7232, 0, -16.7232, -13.3786, 0, -17.3364, -16.7232, 0, -16.7232, -13.3786, 3.1771998, -15.7625, -13.3911, 3.1892, -15.757, -16.7232, 0, -16.7232, -13.3911, 3.1892, -15.757, -16.0243, 3.3509998, -15.752, -17.275, 0, -10.5169, -19.6237, 3.1655998, -9.757899, -20.0679, 0, -10.033899, -17.275, 0, -10.5169, -16.4131, 3.1706, -9.788899, -19.6237, 3.1655998, -9.757899, -16.7232, 0, -13.3786, -16.4131, 3.1706, -9.788899, -17.275, 0, -10.5169, -16.7232, 0, -13.3786, -16.3753, 3.4225, -13.6277, -16.4131, 3.1706, -9.788899, -16.3753, 3.4225, -13.6277, -16.7232, 0, -13.3786, -16.3753, 3.4225, -13.6277, -20.3764, 0, -6.6893, -19.9489, 3.2063, -2.8082, -20.0679, -0.3484, -3.5669, -20.3764, 0, -6.6893, -19.515, 3.2122, -6.6893, -19.9489, 3.2063, -2.8082, -19.6237, 3.1655998, -9.757899, -20.3764, 0, -6.6893, -20.0679, 0, -10.033899, -20.3764, 0, -6.6893, -19.6237, 3.1655998, -9.757899, -19.6161, 3.2075999, -9.7116995, -20.3764, 0, -6.6893, -19.6161, 3.2075999, -9.7116995, -19.515, 3.2122, -6.6893, -23.412498, -0.2913, 0.26119998, -23.0809, 3.3083, 3.3615, -23.412498, 0, 3.3446, -23.412498, -0.2913, 0.26119998, -23.3676, 3.4459999, 0.1372, -23.0809, 3.3083, 3.3615, -23.412498, 0, -3.3446, -23.3676, 3.4459999, 0.1372, -23.412498, -0.2913, 0.26119998, -23.412498, 0, -3.3446, -23.390299, 3.3349998, -2.6938999, -23.3676, 3.4459999, 0.1372, -20.0679, -0.3484, -3.5669, -23.390299, 3.3349998, -2.6938999, -23.412498, 0, -3.3446, -20.0679, -0.3484, -3.5669, -19.9489, 3.2063, -2.8082, -23.390299, 3.3349998, -2.6938999, -19.9489, 3.2063, -2.8082, -20.0679, -0.3484, -3.5669, -19.9489, 3.2063, -2.8082, -23.0809, 3.3083, 3.3615, -23.8078, 0, 6.6893, -23.412498, 0, 3.3446, -23.8078, 0, 6.6893, -23.0809, 3.3083, 3.3615, -23.0777, 3.3197, 3.3734, -23.8078, 0, 6.6893, -23.0777, 3.3197, 3.3734, -22.563799, 3.2219, 6.6893, -23.8078, 0, 6.6893, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -23.8078, 0, 6.6893, -22.563799, 3.2219, 6.6893, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -20.0679, 3.1943, 9.407499, -20.0679, 0, 10.033899, -23.412498, 0, 10.033899, -22.791399, 3.2124999, 9.4432, -20.0679, 3.1943, 9.407499, -22.791399, 3.2124999, 9.4432, -23.412498, 0, 10.033899, -22.791399, 3.2124999, 9.4432, -20.0679, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 10.033899, -20.0679, 0, 10.033899, -20.0679, 3.1943, 9.407499, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 13.3786, -13.3786, 3.194, 12.8089, -13.3786, 0, 13.3786, -16.7232, 0, 13.3786, -16.076399, 3.04, 12.735, -13.3786, 3.194, 12.8089, -16.7232, 0, 10.033899, -16.076399, 3.04, 12.735, -16.7232, 0, 13.3786, -16.7232, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -16.076399, 3.04, 12.735, -16.2818, 3.1913998, 9.8056, -16.7232, 0, 10.033899, -16.2818, 3.1913998, 9.8056, -13.3786, 0, 13.3786, -10.033899, 2.9384, 12.4537, -10.033899, 0, 13.3786, -13.3786, 0, 13.3786, -13.3786, 3.194, 12.8089, -10.033899, 2.9384, 12.4537, -13.3786, 3.194, 12.8089, -13.3786, 0, 13.3786, -13.3786, 3.194, 12.8089, -10.033899, 0, 13.3786, -6.2748, 3.126, 13.122, -6.6893, 0, 13.3786, -10.033899, 0, 13.3786, -10.033899, 2.9384, 12.4537, -6.2748, 3.126, 13.122, -6.6893, 0, 13.3786, -6.2748, 3.1260998, 16.4145, -6.6893, 0, 16.7232, -6.6893, 0, 13.3786, -6.2748, 3.126, 13.122, -6.2748, 3.1260998, 16.4145, -3.3446, 0, 16.7232, 0, 2.9636998, 16.0179, 0, 0, 16.7232, -3.3446, 0, 16.7232, -3.3446, 3.1497998, 15.914599, 0, 2.9636998, 16.0179, 0, 0, 16.7232, 3.6425998, 3.1413999, 16.5127, 3.3446, 0, 16.7232, 0, 0, 16.7232, 0, 2.9636998, 16.0179, 3.6425998, 3.1413999, 16.5127, -6.2748, 3.1260998, 16.4145, -3.3446, 0, 16.7232, -6.6893, 0, 16.7232, -3.3446, 0, 16.7232, -6.2748, 3.1260998, 16.4145, -6.2558, 3.1427999, 16.4098, -3.3446, 0, 16.7232, -6.2558, 3.1427999, 16.4098, -3.3446, 3.1497998, 15.914599, 3.3446, 0, 20.0679, 6.6893, 3.2050998, 19.228699, 6.6893, 0, 20.0679, 3.3446, 0, 20.0679, 3.9266999, 3.5967, 19.6223, 6.6893, 3.2050998, 19.228699, 3.6425998, 3.1413999, 16.5127, 3.3446, 0, 20.0679, 3.3446, 0, 16.7232, 3.3446, 0, 20.0679, 3.6425998, 3.1413999, 16.5127, 3.6536, 3.2078998, 16.5669, 3.3446, 0, 20.0679, 3.6536, 3.2078998, 16.5669, 3.9266999, 3.5967, 19.6223, 6.6893, 3.2050998, 19.228699, 10.572599, 0, 20.0679, 6.6893, 0, 20.0679, 10.572599, 0, 20.0679, 6.6893, 3.2050998, 19.228699, 6.6991997, 3.2148, 19.2255, 10.572599, 0, 20.0679, 6.6991997, 3.2148, 19.2255, 9.3066, 3.2186, 19.0653, 10.572599, 0, 20.0679, 10.5913, 3.1985998, 16.7232, 10.572599, 0, 16.7232, 10.572599, 0, 20.0679, 9.3066, 3.2186, 19.0653, 10.5913, 3.1985998, 16.7232, 10.5913, 3.1985998, 16.7232, 10.572599, 0, 13.918799, 10.572599, 0, 16.7232, 10.572599, 0, 13.918799, 10.5913, 3.1985998, 16.7232, 10.5893, 3.2117, 16.7106, 10.572599, 0, 13.918799, 10.5893, 3.2117, 16.7106, 10.0546, 3.1885, 13.4071, 10.572599, 0, 13.918799, 13.2631, 3.5611, 13.4043, 13.8046, 0, 13.918799, 10.572599, 0, 13.918799, 10.0546, 3.1885, 13.4071, 13.2631, 3.5611, 13.4043, 13.8046, 0, 13.918799, 12.9758, 3.2036, 10.033899, 13.8046, 0, 10.033899, 13.8046, 0, 13.918799, 13.2631, 3.5611, 13.4043, 12.9758, 3.2036, 10.033899, 13.8046, 0, 13.918799, 13.2631, 3.5611, 13.4043, 13.2631, 3.5611, 13.4043, 13.8046, 0, 10.033899, 13.4036, 3.0749998, 6.6893, 13.8046, 0, 6.6893, 13.8046, 0, 10.033899, 12.9758, 3.2036, 10.033899, 13.4036, 3.0749998, 6.6893, 20.961199, 0, -3.3446, 16.7127, 2.8734, -3.3446, 20.144999, 2.7605999, -3.3446, 20.961199, 0, -3.3446, 14.0489, 3.0042, -3.3446, 16.7127, 2.8734, -3.3446, 20.144999, 2.7605999, -3.3446, 21.2349, 0, -6.6893, 20.961199, 0, -3.3446, 21.2349, 0, -6.6893, 20.144999, 2.7605999, -3.3446, 20.1349, 2.7974, -3.3783998, 21.2349, 0, -6.6893, 20.1349, 2.7974, -3.3783998, 20.147, 3.0588999, -6.6893, 20.147, 3.0588999, -6.6893, 21.8888, 0, -10.033899, 21.2349, 0, -6.6893, 21.8888, 0, -10.033899, 20.147, 3.0588999, -6.6893, 20.1796, 3.182, -9.995999, 21.8888, 0, -10.033899, 20.1796, 3.182, -9.995999, 20.198, 3.1490998, -10.033899, 23.412498, 0, -26.7572, 26.7572, -0.2593, -23.412498, 23.412498, 0, -23.412498, 26.7572, -0.2593, -23.412498, 23.412498, 0, -26.7572, 26.7572, -0.2593, -25.084799, 26.7572, -0.2593, -25.084799, 23.412498, 0, -26.7572, 26.7572, -0.2593, -26.7572, 26.7572, -0.2593, -21.7402, 23.412498, 0, -23.412498, 26.7572, -0.2593, -23.412498, 26.7572, -0.2593, -20.0679, 23.412498, 0, -23.412498, 26.7572, -0.2593, -21.7402, 23.412498, 0, -23.412498, 26.7572, -0.2593, -20.0679, 23.412498, 0, -20.0679, 26.7572, -0.2593, -18.3955, 23.412498, 0, -20.0679, 26.7572, -0.2593, -20.0679, 26.7572, -0.2593, -16.7232, 23.412498, 0, -20.0679, 26.7572, -0.2593, -18.3955, 23.412498, 0, -20.0679, 26.7572, -0.2593, -16.7232, 23.412498, 0, -16.7232, 26.7572, -0.2593, -15.0508995, 23.412498, 0, -16.7232, 26.7572, -0.2593, -16.7232, 26.7572, -0.2593, -13.3786, 23.412498, 0, -16.7232, 26.7572, -0.2593, -15.0508995, 23.412498, 0, -16.7232, 26.7572, -0.2593, -13.3786, 23.412498, 0, -13.3786, 26.7572, -0.2593, -11.7063, 23.412498, 0, -13.3786, 26.7572, -0.2593, -13.3786, 26.7572, -0.2593, -10.033899, 23.412498, 0, -13.3786, 26.7572, -0.2593, -11.7063, 23.412498, 0, -13.3786, 26.7572, -0.2593, -10.033899, 23.412498, 0, -10.033899, 26.7572, -0.2593, -8.3616, 23.412498, 0, -10.033899, 26.7572, -0.2593, -10.033899, 26.7572, -0.2593, -6.6893, 23.412498, 0, -10.033899, 26.7572, -0.2593, -8.3616, 23.412498, 0, -10.033899, 26.7572, -0.2593, -6.6893, 23.412498, 0, -6.6893, 26.7572, -0.2593, -5.0169997, 23.412498, 0, -6.6893, 26.7572, -0.2593, -6.6893, 26.7572, -0.2593, -3.3446, 23.412498, 0, -6.6893, 26.7572, -0.2593, -5.0169997, 23.412498, 0, -6.6893, 26.7572, -0.2593, -3.3446, 23.412498, 0, -3.3446, 26.7572, -0.2593, -1.6723, 23.412498, 0, -3.3446, 26.7572, -0.2593, -3.3446, 26.7572, -0.2593, 0, 23.412498, 0, -3.3446, 26.7572, -0.2593, -1.6723, 23.412498, 0, -3.3446, 26.7572, -0.2593, 0, 23.412498, 0, 0, 26.7572, -0.2593, 1.6723, 23.412498, 0, 0, 26.7572, -0.2593, 0, 26.7572, -0.2593, 3.3446, 23.412498, 0, 0, 26.7572, -0.2593, 1.6723, 23.412498, 0, 0, 26.7572, -0.2593, 3.3446, 23.412498, 0, 3.3446, 26.7572, -0.2593, 5.0169997, 23.412498, 0, 3.3446, 26.7572, -0.2593, 3.3446, 26.7572, -0.2593, 6.6893, 23.412498, 0, 3.3446, 26.7572, -0.2593, 5.0169997, 23.412498, 0, 3.3446, 26.7572, -0.2593, 6.6893, 23.412498, 0, 6.6893, 26.7572, -0.2593, 8.3616, 23.412498, 0, 6.6893, 26.7572, -0.2593, 6.6893, 26.7572, -0.2593, 10.033899, 23.412498, 0, 6.6893, 26.7572, -0.2593, 8.3616, 23.412498, 0, 6.6893, 26.7572, -0.2593, 10.033899, 23.412498, 0, 10.033899, 26.7572, -0.2593, 11.7063, 23.412498, 0, 10.033899, 26.7572, -0.2593, 10.033899, 26.7572, -0.2593, 13.3786, 23.412498, 0, 10.033899, 26.7572, -0.2593, 11.7063, 23.412498, 0, 10.033899, 26.7572, -0.2593, 13.3786, 23.412498, 0, 13.3786, 26.7572, -0.2593, 15.0508995, 23.412498, 0, 13.3786, 26.7572, -0.2593, 13.3786, 26.7572, -0.2593, 16.7232, 23.412498, 0, 13.3786, 26.7572, -0.2593, 15.0508995, 23.412498, 0, 13.3786, 26.7572, -0.2593, 16.7232, 23.412498, 0, 16.7232, 26.7572, -0.2593, 18.3955, 23.412498, 0, 16.7232, 26.7572, -0.2593, 16.7232, 26.7572, -0.2593, 20.0679, 23.412498, 0, 16.7232, 26.7572, -0.2593, 18.3955, 23.412498, 0, 16.7232, 26.7572, -0.2593, 20.0679, 23.412498, 0, 20.0679, 26.7572, -0.2593, 21.7402, 23.412498, 0, 20.0679, 26.7572, -0.2593, 20.0679, 26.7572, -0.2593, 23.412498, 23.412498, 0, 20.0679, 26.7572, -0.2593, 21.7402, 23.412498, 0, 20.0679, 26.7572, -0.2593, 23.412498, 23.412498, 0, 23.412498, 26.7572, -0.2593, 25.084799, 23.412498, 0, 23.412498, 26.7572, -0.2593, 23.412498, 26.7572, -0.2593, 26.7572, 23.412498, 0, 23.412498, 26.7572, -0.2593, 25.084799, 23.412498, 0, 23.412498, 26.7572, -0.2593, 26.7572, 23.412498, 0, 26.7572, -3.3446, 0, -23.412498, 0, 0, -26.7572, 0, 0, -23.412498, 0, 0, -23.412498, 0, 0, -26.7572, 3.3446, 0, -26.7572, -3.3446, 0, -23.412498, -3.3446, 0, -26.7572, 0, 0, -26.7572, 0, 0, -23.412498, 3.3446, 0, -26.7572, 3.3446, 0, -23.412498, 3.3446, 0, -23.412498, 3.3446, 0, -26.7572, 6.6893, 0, -26.7572, -3.3446, 0, -20.0679, -3.3446, 0, -23.412498, 0, 0, -23.412498, 3.3446, 0, -23.412498, 6.6893, 0, -26.7572, 6.6893, 0, -23.412498, 6.6893, 0, -23.412498, 6.6893, 0, -26.7572, 10.033899, 0, -26.7572, 0, 0, -20.0679, 0, 0, -23.412498, 3.3446, 0, -23.412498, -3.3446, 0, -20.0679, 0, 0, -23.412498, 0, 0, -20.0679, 3.3446, 0, -20.5992, 3.3446, 0, -23.412498, 6.6893, 0, -23.412498, 0, 0, -20.0679, 3.3446, 0, -23.412498, 3.3446, 0, -20.5992, 3.3446, 0, -20.5992, 6.6893, 0, -23.412498, 6.6893, 0, -20.1318, 6.6893, 0, -23.412498, 10.033899, 0, -26.7572, 10.033899, 0, -23.412498, 6.6893, 0, -20.1318, 6.6893, 0, -23.412498, 10.033899, 0, -23.412498, 10.033899, 0, -23.412498, 10.033899, 0, -26.7572, 13.3786, 0, -26.7572, 6.6893, 0, -20.1318, 10.033899, 0, -23.412498, 10.033899, 0, -20.467, 10.033899, 0, -23.412498, 13.3786, 0, -26.7572, 13.3786, 0, -23.412498, 10.033899, 0, -20.467, 10.033899, 0, -23.412498, 13.3786, 0, -23.412498, 13.3786, 0, -23.412498, 13.3786, 0, -26.7572, 16.7232, 0, -26.7572, 10.033899, 0, -20.467, 13.3786, 0, -23.412498, 13.3786, 0, -20.5992, 13.3786, 0, -23.412498, 16.7232, 0, -26.7572, 16.7232, 0, -23.412498, 13.3786, 0, -20.5992, 13.3786, 0, -23.412498, 16.7232, 0, -23.412498, 16.7232, 0, -23.412498, 16.7232, 0, -26.7572, 20.0679, 0, -26.7572, 13.3786, 0, -20.5992, 16.7232, 0, -23.412498, 16.7232, 0, -20.0679, 13.7014, 0, -17.416399, 13.3786, 0, -20.5992, 16.7232, 0, -20.0679, 13.7014, 0, -17.416399, 16.7232, 0, -20.0679, 17.2285, 0, -16.8036, 16.7232, 0, -23.412498, 20.0679, 0, -26.7572, 20.0679, 0, -23.412498, 16.7232, 0, -20.0679, 16.7232, 0, -23.412498, 20.0679, 0, -23.412498, 20.0679, 0, -23.412498, 20.0679, 0, -26.7572, 23.412498, 0, -26.7572, 20.0679, 0, -23.412498, 23.412498, 0, -26.7572, 23.412498, 0, -23.412498, 16.7232, 0, -20.0679, 20.0679, 0, -23.412498, 20.0679, 0, -20.0679, 20.0679, 0, -20.0679, 20.0679, 0, -23.412498, 23.412498, 0, -23.412498, 17.2285, 0, -16.8036, 16.7232, 0, -20.0679, 20.0679, 0, -20.0679, 20.0679, 0, -20.0679, 23.412498, 0, -23.412498, 23.412498, 0, -20.0679, 17.2285, 0, -16.8036, 20.0679, 0, -20.0679, 20.0679, 0, -16.7232, 20.0679, 0, -16.7232, 20.0679, 0, -20.0679, 23.412498, 0, -20.0679, 18.0241, 0, -14.3019, 17.2285, 0, -16.8036, 20.0679, 0, -16.7232, 20.0679, 0, -16.7232, 23.412498, 0, -20.0679, 23.412498, 0, -16.7232, 18.0241, 0, -14.3019, 20.0679, 0, -16.7232, 21.1831, 0, -13.6544, 21.1831, 0, -13.6544, 20.0679, 0, -16.7232, 23.412498, 0, -16.7232, 21.1831, 0, -13.6544, 23.412498, 0, -16.7232, 23.412498, 0, -13.3786, 21.8888, 0, -10.033899, 21.1831, 0, -13.6544, 23.412498, 0, -13.3786, 21.8888, 0, -10.033899, 23.412498, 0, -13.3786, 23.412498, 0, -10.033899, 21.2349, 0, -6.6893, 21.8888, 0, -10.033899, 23.412498, 0, -10.033899, 21.2349, 0, -6.6893, 23.412498, 0, -10.033899, 23.412498, 0, -6.6893, 20.961199, 0, -3.3446, 21.2349, 0, -6.6893, 23.412498, 0, -6.6893, 20.961199, 0, -3.3446, 23.412498, 0, -6.6893, 23.412498, 0, -3.3446, 20.0679, 0, 0, 20.961199, 0, -3.3446, 23.412498, 0, -3.3446, 20.0679, 0, 0, 23.412498, 0, -3.3446, 23.412498, 0, 0, 20.0679, 0, 3.3446, 20.0679, 0, 0, 23.412498, 0, 0, 20.0679, 0, 3.3446, 23.412498, 0, 0, 23.412498, 0, 3.3446, 10.572599, 0, 16.7232, 13.8046, 0, 13.918799, 13.3786, 0, 16.7232, 10.572599, 0, 16.7232, 10.572599, 0, 13.918799, 13.8046, 0, 13.918799, 10.572599, 0, 20.0679, 10.572599, 0, 16.7232, 13.3786, 0, 16.7232, 13.3786, 0, 16.7232, 13.8046, 0, 13.918799, 15.0508995, 0, 13.3786, 10.572599, 0, 20.0679, 13.3786, 0, 16.7232, 13.3786, 0, 20.0679, 13.8046, 0, 13.918799, 15.0508995, 0, 10.033899, 15.0508995, 0, 13.3786, 13.8046, 0, 13.918799, 13.8046, 0, 10.033899, 15.0508995, 0, 10.033899, 13.8046, 0, 10.033899, 15.0508995, 0, 6.6893, 15.0508995, 0, 10.033899, 13.8046, 0, 10.033899, 13.8046, 0, 6.6893, 15.0508995, 0, 6.6893, 15.0508995, 0, 10.033899, 15.0508995, 0, 6.6893, 16.7232, 0, 6.6893, 15.0508995, 0, 10.033899, 16.7232, 0, 6.6893, 16.7232, 0, 10.033899, 15.0508995, 0, 13.3786, 15.0508995, 0, 10.033899, 16.7232, 0, 10.033899, 13.3786, 0, 16.7232, 15.0508995, 0, 13.3786, 15.0508995, 0, 16.7232, 13.3786, 0, 20.0679, 13.3786, 0, 16.7232, 15.0508995, 0, 16.7232, 15.0508995, 0, 13.3786, 16.7232, 0, 10.033899, 16.7232, 0, 13.3786, 15.0508995, 0, 16.7232, 15.0508995, 0, 13.3786, 16.7232, 0, 13.3786, 16.7232, 0, 13.3786, 16.7232, 0, 10.033899, 20.0679, 0, 10.033899, 16.7232, 0, 13.3786, 20.0679, 0, 10.033899, 20.0679, 0, 13.3786, 20.0679, 0, 13.3786, 20.0679, 0, 10.033899, 23.412498, 0, 10.033899, 20.0679, 0, 13.3786, 23.412498, 0, 10.033899, 23.412498, 0, 13.3786, 16.7232, 0, 16.7232, 16.7232, 0, 13.3786, 20.0679, 0, 13.3786, 15.0508995, 0, 16.7232, 16.7232, 0, 13.3786, 16.7232, 0, 16.7232, 20.0679, 0, 16.7232, 20.0679, 0, 13.3786, 23.412498, 0, 13.3786, 16.7232, 0, 16.7232, 20.0679, 0, 13.3786, 20.0679, 0, 16.7232, 20.0679, 0, 16.7232, 23.412498, 0, 13.3786, 23.412498, 0, 16.7232, 15.0508995, 0, 20.0679, 15.0508995, 0, 16.7232, 16.7232, 0, 16.7232, 13.3786, 0, 20.0679, 15.0508995, 0, 16.7232, 15.0508995, 0, 20.0679, 16.7232, 0, 20.0679, 16.7232, 0, 16.7232, 20.0679, 0, 16.7232, 15.0508995, 0, 20.0679, 16.7232, 0, 16.7232, 16.7232, 0, 20.0679, 20.0679, 0, 20.0679, 20.0679, 0, 16.7232, 23.412498, 0, 16.7232, 16.7232, 0, 20.0679, 20.0679, 0, 16.7232, 20.0679, 0, 20.0679, 20.0679, 0, 20.0679, 23.412498, 0, 16.7232, 23.412498, 0, 20.0679, 20.0679, 0, 23.412498, 20.0679, 0, 20.0679, 23.412498, 0, 20.0679, 20.0679, 0, 23.412498, 23.412498, 0, 20.0679, 23.412498, 0, 23.412498, 20.0679, 0, 26.7572, 20.0679, 0, 23.412498, 23.412498, 0, 23.412498, 20.0679, 0, 26.7572, 23.412498, 0, 23.412498, 23.412498, 0, 26.7572, 16.7232, 0, 26.7572, 20.0679, 0, 23.412498, 20.0679, 0, 26.7572, 16.7232, 0, 23.412498, 20.0679, 0, 20.0679, 20.0679, 0, 23.412498, 16.7232, 0, 26.7572, 16.7232, 0, 23.412498, 20.0679, 0, 23.412498, 16.7232, 0, 23.412498, 16.7232, 0, 20.0679, 20.0679, 0, 20.0679, 15.0508995, 0, 26.7572, 16.7232, 0, 23.412498, 16.7232, 0, 26.7572, 15.0508995, 0, 23.412498, 16.7232, 0, 20.0679, 16.7232, 0, 23.412498, 15.0508995, 0, 26.7572, 15.0508995, 0, 23.412498, 16.7232, 0, 23.412498, 15.0508995, 0, 23.412498, 15.0508995, 0, 20.0679, 16.7232, 0, 20.0679, 13.3786, 0, 26.7572, 15.0508995, 0, 23.412498, 15.0508995, 0, 26.7572, 13.3786, 0, 23.412498, 15.0508995, 0, 20.0679, 15.0508995, 0, 23.412498, 13.3786, 0, 26.7572, 13.3786, 0, 23.412498, 15.0508995, 0, 23.412498, 13.3786, 0, 23.412498, 13.3786, 0, 20.0679, 15.0508995, 0, 20.0679, 10.033899, 0, 26.7572, 13.3786, 0, 23.412498, 13.3786, 0, 26.7572, 10.033899, 0, 23.412498, 13.3786, 0, 20.0679, 13.3786, 0, 23.412498, 10.033899, 0, 26.7572, 10.033899, 0, 23.412498, 13.3786, 0, 23.412498, 10.033899, 0, 23.412498, 10.572599, 0, 20.0679, 13.3786, 0, 20.0679, 6.6893, 0, 26.7572, 10.033899, 0, 23.412498, 10.033899, 0, 26.7572, 6.6893, 0, 23.412498, 10.572599, 0, 20.0679, 10.033899, 0, 23.412498, 6.6893, 0, 26.7572, 6.6893, 0, 23.412498, 10.033899, 0, 23.412498, 6.6893, 0, 23.412498, 6.6893, 0, 20.0679, 10.572599, 0, 20.0679, 3.3446, 0, 26.7572, 6.6893, 0, 23.412498, 6.6893, 0, 26.7572, 3.3446, 0, 23.412498, 6.6893, 0, 20.0679, 6.6893, 0, 23.412498, 3.3446, 0, 26.7572, 3.3446, 0, 23.412498, 6.6893, 0, 23.412498, 3.3446, 0, 23.412498, 3.3446, 0, 20.0679, 6.6893, 0, 20.0679, 0, 0, 26.7572, 3.3446, 0, 23.412498, 3.3446, 0, 26.7572, 0, 0, 26.7572, 0, 0, 23.412498, 3.3446, 0, 23.412498, 0, 0, 23.412498, 3.3446, 0, 20.0679, 3.3446, 0, 23.412498, -3.3446, 0, 26.7572, 0, 0, 23.412498, 0, 0, 26.7572, 0, 0, 23.412498, 0, 0, 20.0679, 3.3446, 0, 20.0679, 0, 0, 20.0679, 3.3446, 0, 16.7232, 3.3446, 0, 20.0679, 0, 0, 20.0679, 0, 0, 16.7232, 3.3446, 0, 16.7232, -3.3446, 0, 26.7572, -3.3446, 0, 23.412498, 0, 0, 23.412498, -3.3446, 0, 23.412498, 0, 0, 20.0679, 0, 0, 23.412498, -6.6893, 0, 26.7572, -3.3446, 0, 23.412498, -3.3446, 0, 26.7572, -3.3446, 0, 20.0679, 0, 0, 16.7232, 0, 0, 20.0679, -3.3446, 0, 23.412498, -3.3446, 0, 20.0679, 0, 0, 20.0679, -3.3446, 0, 20.0679, -3.3446, 0, 16.7232, 0, 0, 16.7232, -6.6893, 0, 26.7572, -6.6893, 0, 23.412498, -3.3446, 0, 23.412498, -6.6893, 0, 23.412498, -3.3446, 0, 20.0679, -3.3446, 0, 23.412498, -10.033899, 0, 26.7572, -6.6893, 0, 23.412498, -6.6893, 0, 26.7572, -6.6893, 0, 20.0679, -3.3446, 0, 16.7232, -3.3446, 0, 20.0679, -6.6893, 0, 23.412498, -6.6893, 0, 20.0679, -3.3446, 0, 20.0679, -6.6893, 0, 20.0679, -6.6893, 0, 16.7232, -3.3446, 0, 16.7232, -10.033899, 0, 26.7572, -10.033899, 0, 23.412498, -6.6893, 0, 23.412498, -10.033899, 0, 23.412498, -6.6893, 0, 20.0679, -6.6893, 0, 23.412498, -13.3786, 0, 26.7572, -10.033899, 0, 23.412498, -10.033899, 0, 26.7572, -10.033899, 0, 20.0679, -6.6893, 0, 16.7232, -6.6893, 0, 20.0679, -10.033899, 0, 23.412498, -10.033899, 0, 20.0679, -6.6893, 0, 20.0679, -13.3786, 0, 26.7572, -13.3786, 0, 23.412498, -10.033899, 0, 23.412498, -13.3786, 0, 23.412498, -10.033899, 0, 20.0679, -10.033899, 0, 23.412498, -16.7232, 0, 26.7572, -13.3786, 0, 23.412498, -13.3786, 0, 26.7572, -10.033899, 0, 20.0679, -10.033899, 0, 16.7232, -6.6893, 0, 16.7232, -10.033899, 0, 16.7232, -6.6893, 0, 13.3786, -6.6893, 0, 16.7232, -10.033899, 0, 16.7232, -10.033899, 0, 13.3786, -6.6893, 0, 13.3786, -13.3786, 0, 20.0679, -10.033899, 0, 16.7232, -10.033899, 0, 20.0679, -13.3786, 0, 23.412498, -13.3786, 0, 20.0679, -10.033899, 0, 20.0679, -13.3786, 0, 16.7232, -10.033899, 0, 13.3786, -10.033899, 0, 16.7232, -13.3786, 0, 20.0679, -13.3786, 0, 16.7232, -10.033899, 0, 16.7232, -13.3786, 0, 16.7232, -13.3786, 0, 13.3786, -10.033899, 0, 13.3786, -16.7232, 0, 26.7572, -16.7232, 0, 23.412498, -13.3786, 0, 23.412498, -16.7232, 0, 23.412498, -13.3786, 0, 20.0679, -13.3786, 0, 23.412498, -20.0679, 0, 26.7572, -16.7232, 0, 23.412498, -16.7232, 0, 26.7572, -16.7232, 0, 20.0679, -13.3786, 0, 16.7232, -13.3786, 0, 20.0679, -16.7232, 0, 23.412498, -16.7232, 0, 20.0679, -13.3786, 0, 20.0679, -16.7232, 0, 16.7232, -13.3786, 0, 13.3786, -13.3786, 0, 16.7232, -16.7232, 0, 20.0679, -16.7232, 0, 16.7232, -13.3786, 0, 16.7232, -16.7232, 0, 16.7232, -16.7232, 0, 13.3786, -13.3786, 0, 13.3786, -20.0679, 0, 26.7572, -20.0679, 0, 23.412498, -16.7232, 0, 23.412498, -20.0679, 0, 23.412498, -16.7232, 0, 20.0679, -16.7232, 0, 23.412498, -23.412498, 0, 26.7572, -20.0679, 0, 23.412498, -20.0679, 0, 26.7572, -20.0679, 0, 20.0679, -16.7232, 0, 16.7232, -16.7232, 0, 20.0679, -20.0679, 0, 23.412498, -20.0679, 0, 20.0679, -16.7232, 0, 20.0679, -23.412498, 0, 26.7572, -23.412498, 0, 23.412498, -20.0679, 0, 23.412498, -23.412498, 0, 23.412498, -20.0679, 0, 20.0679, -20.0679, 0, 23.412498, -26.7572, 0, 26.7572, -23.412498, 0, 23.412498, -23.412498, 0, 26.7572, -26.7572, 0, 26.7572, -26.7572, 0, 23.412498, -23.412498, 0, 23.412498, -26.7572, 0, 23.412498, -23.412498, 0, 20.0679, -23.412498, 0, 23.412498, -23.412498, 0, 23.412498, -23.412498, 0, 20.0679, -20.0679, 0, 20.0679, -26.7572, 0, 23.412498, -26.7572, 0, 20.0679, -23.412498, 0, 20.0679, -20.0679, 0, 20.0679, -20.0679, 0, 16.7232, -16.7232, 0, 16.7232, -23.412498, 0, 20.0679, -20.0679, 0, 16.7232, -20.0679, 0, 20.0679, -20.0679, 0, 16.7232, -16.7232, 0, 13.3786, -16.7232, 0, 16.7232, -26.7572, 0, 20.0679, -23.412498, 0, 16.7232, -23.412498, 0, 20.0679, -23.412498, 0, 20.0679, -23.412498, 0, 16.7232, -20.0679, 0, 16.7232, -26.7572, 0, 20.0679, -26.7572, 0, 16.7232, -23.412498, 0, 16.7232, -20.0679, 0, 16.7232, -20.0679, 0, 13.3786, -16.7232, 0, 13.3786, -23.412498, 0, 16.7232, -20.0679, 0, 13.3786, -20.0679, 0, 16.7232, -20.0679, 0, 13.3786, -16.7232, 0, 10.033899, -16.7232, 0, 13.3786, -20.0679, 0, 13.3786, -20.0679, 0, 10.033899, -16.7232, 0, 10.033899, -23.412498, 0, 16.7232, -23.412498, 0, 13.3786, -20.0679, 0, 13.3786, -23.412498, 0, 13.3786, -20.0679, 0, 10.033899, -20.0679, 0, 13.3786, -26.7572, 0, 16.7232, -23.412498, 0, 13.3786, -23.412498, 0, 16.7232, -23.412498, 0, 13.3786, -23.412498, 0, 10.033899, -20.0679, 0, 10.033899, -26.7572, 0, 16.7232, -26.7572, 0, 13.3786, -23.412498, 0, 13.3786, -26.7572, 0, 13.3786, -23.412498, 0, 10.033899, -23.412498, 0, 13.3786, -26.7572, 0, 13.3786, -26.7572, 0, 10.033899, -23.412498, 0, 10.033899, -26.7572, 0, 10.033899, -23.8078, 0, 6.6893, -23.412498, 0, 10.033899, -26.7572, 0, 10.033899, -26.7572, 0, 6.6893, -23.8078, 0, 6.6893, -26.7572, 0, 6.6893, -23.412498, 0, 3.3446, -23.8078, 0, 6.6893, -26.7572, 0, 6.6893, -26.7572, 0, 3.3446, -23.412498, 0, 3.3446, -16.7232, 0, -23.412498, -13.3786, 0, -26.7572, -13.3786, 0, -23.412498, -13.3786, 0, -23.412498, -13.3786, 0, -26.7572, -10.033899, 0, -26.7572, -16.7232, 0, -23.412498, -16.7232, 0, -26.7572, -13.3786, 0, -26.7572, -13.3786, 0, -23.412498, -10.033899, 0, -26.7572, -10.033899, 0, -23.412498, -10.033899, 0, -23.412498, -10.033899, 0, -26.7572, -6.6893, 0, -26.7572, -16.7232, 0, -20.0679, -16.7232, 0, -23.412498, -13.3786, 0, -23.412498, -10.033899, 0, -23.412498, -6.6893, 0, -26.7572, -6.6893, 0, -23.412498, -6.6893, 0, -23.412498, -6.6893, 0, -26.7572, -3.3446, 0, -26.7572, -6.6893, 0, -23.412498, -3.3446, 0, -26.7572, -3.3446, 0, -23.412498, -13.3786, 0, -20.0679, -13.3786, 0, -23.412498, -10.033899, 0, -23.412498, -16.7232, 0, -20.0679, -13.3786, 0, -23.412498, -13.3786, 0, -20.0679, -10.033899, 0, -20.0679, -10.033899, 0, -23.412498, -6.6893, 0, -23.412498, -13.3786, 0, -20.0679, -10.033899, 0, -23.412498, -10.033899, 0, -20.0679, -6.6893, 0, -20.0679, -6.6893, 0, -23.412498, -3.3446, 0, -23.412498, -10.033899, 0, -20.0679, -6.6893, 0, -23.412498, -6.6893, 0, -20.0679, -6.6893, 0, -20.0679, -3.3446, 0, -23.412498, -3.3446, 0, -20.0679, -13.3786, 0, -17.3364, -13.3786, 0, -20.0679, -10.033899, 0, -20.0679, -13.3786, 0, -17.3364, -10.033899, 0, -20.0679, -10.033899, 0, -16.7232, -10.033899, 0, -16.7232, -10.033899, 0, -20.0679, -6.6893, 0, -20.0679, -16.7232, 0, -16.7232, -13.3786, 0, -20.0679, -13.3786, 0, -17.3364, -16.7232, 0, -16.7232, -16.7232, 0, -20.0679, -13.3786, 0, -20.0679, -10.033899, 0, -16.7232, -6.6893, 0, -20.0679, -6.6893, 0, -16.7232, -6.6893, 0, -16.7232, -6.6893, 0, -20.0679, -3.3446, 0, -20.0679, -9.6168995, 0, -14.127899, -10.033899, 0, -16.7232, -6.6893, 0, -16.7232, -9.6168995, 0, -14.127899, -6.6893, 0, -16.7232, -6.6893, 0, -14.2637, -6.6893, 0, -16.7232, -3.3446, 0, -20.0679, -3.3446, 0, -16.7232, -6.6893, 0, -14.2637, -6.6893, 0, -16.7232, -3.3446, 0, -16.7232, -3.3446, 0, -16.7232, -3.3446, 0, -20.0679, 0, 0, -20.0679, -6.6893, 0, -14.2637, -3.3446, 0, -16.7232, -3.3446, 0, -13.3786, -3.3446, 0, -16.7232, 0, 0, -20.0679, 0, 0, -16.7232, -3.3446, 0, -13.3786, -3.3446, 0, -16.7232, 0, 0, -16.7232, 0, 0, -16.7232, 0, 0, -20.0679, 3.3446, 0, -20.5992, 0, 0, -16.7232, 3.3446, 0, -20.5992, 3.0140998, 0, -16.7232, -3.3446, 0, -13.3786, 0, 0, -16.7232, 0, 0, -13.3786, -2.6297, 0, -10.5745, -3.3446, 0, -13.3786, 0, 0, -13.3786, -2.6297, 0, -10.5745, 0, 0, -13.3786, 0, 0, -10.7654, -20.0679, 0, -16.7232, -16.7232, 0, -20.0679, -16.7232, 0, -16.7232, -20.0679, 0, -16.7232, -20.0679, 0, -20.0679, -16.7232, 0, -20.0679, -20.0679, 0, -20.0679, -16.7232, 0, -23.412498, -16.7232, 0, -20.0679, -20.0679, 0, -13.3786, -20.0679, 0, -16.7232, -16.7232, 0, -16.7232, -20.0679, 0, -13.3786, -16.7232, 0, -16.7232, -16.7232, 0, -13.3786, -23.412498, 0, -16.7232, -20.0679, 0, -20.0679, -20.0679, 0, -16.7232, -20.0679, 0, -10.033899, -20.0679, 0, -13.3786, -16.7232, 0, -13.3786, -20.0679, 0, -10.033899, -16.7232, 0, -13.3786, -17.275, 0, -10.5169, -23.412498, 0, -13.3786, -20.0679, 0, -16.7232, -20.0679, 0, -13.3786, -23.412498, 0, -13.3786, -23.412498, 0, -16.7232, -20.0679, 0, -16.7232, -23.412498, 0, -10.033899, -20.0679, 0, -13.3786, -20.0679, 0, -10.033899, -23.412498, 0, -10.033899, -23.412498, 0, -13.3786, -20.0679, 0, -13.3786, -26.7572, 0, -10.033899, -23.412498, 0, -13.3786, -23.412498, 0, -10.033899, -26.7572, 0, -10.033899, -26.7572, 0, -13.3786, -23.412498, 0, -13.3786, -26.7572, 0, -13.3786, -23.412498, 0, -16.7232, -23.412498, 0, -13.3786, -26.7572, 0, -6.6893, -26.7572, 0, -10.033899, -23.412498, 0, -10.033899, -26.7572, 0, -13.3786, -26.7572, 0, -16.7232, -23.412498, 0, -16.7232, -26.7572, 0, -6.6893, -23.412498, 0, -10.033899, -23.412498, 0, -6.6893, -23.412498, 0, -6.6893, -23.412498, 0, -10.033899, -20.0679, 0, -10.033899, -23.412498, 0, -6.6893, -20.0679, 0, -10.033899, -20.3764, 0, -6.6893, -26.7572, 0, -3.3446, -26.7572, 0, -6.6893, -23.412498, 0, -6.6893, -26.7572, 0, -3.3446, -23.412498, 0, -6.6893, -23.412498, 0, -3.3446, -26.7572, 0, -16.7232, -23.412498, 0, -20.0679, -23.412498, 0, -16.7232, -23.412498, 0, -16.7232, -23.412498, 0, -20.0679, -20.0679, 0, -20.0679, -26.7572, 0, -16.7232, -26.7572, 0, -20.0679, -23.412498, 0, -20.0679, -23.412498, 0, -20.0679, -20.0679, 0, -23.412498, -20.0679, 0, -20.0679, -20.0679, 0, -20.0679, -20.0679, 0, -23.412498, -16.7232, 0, -23.412498, -20.0679, 0, -23.412498, -16.7232, 0, -26.7572, -16.7232, 0, -23.412498, -20.0679, 0, -23.412498, -20.0679, 0, -26.7572, -16.7232, 0, -26.7572, -23.412498, 0, -20.0679, -23.412498, 0, -23.412498, -20.0679, 0, -23.412498, -23.412498, 0, -23.412498, -20.0679, 0, -26.7572, -20.0679, 0, -23.412498, -26.7572, 0, -20.0679, -23.412498, 0, -23.412498, -23.412498, 0, -20.0679, -23.412498, 0, -23.412498, -23.412498, 0, -26.7572, -20.0679, 0, -26.7572, -26.7572, 0, -20.0679, -26.7572, 0, -23.412498, -23.412498, 0, -23.412498, -26.7572, 0, -23.412498, -23.412498, 0, -26.7572, -23.412498, 0, -23.412498, -26.7572, 0, -23.412498, -26.7572, 0, -26.7572, -23.412498, 0, -26.7572, -23.412498, 0, -3.3446, -20.3764, 0, -6.6893, -20.0679, -0.3484, -3.5669, -23.412498, 0, -3.3446, -23.412498, 0, -6.6893, -20.3764, 0, -6.6893, 16.7232, 0, 10.033899, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 10.033899, 16.7232, 0, 10.033899, 16.7232, 0, 6.6893, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 10.033899, 23.412498, 0, 6.6893, 23.412498, 0, 10.033899, 20.0679, 0, 10.033899, 20.0679, -0.124199994, 6.6893, 23.412498, 0, 6.6893, -26.7572, 0, 3.3446, -23.412498, -0.2913, 0.26119998, -23.412498, 0, 3.3446, -26.7572, 0, 3.3446, -26.7572, 0, 0, -23.412498, -0.2913, 0.26119998, -26.7572, 0, 0, -23.412498, 0, -3.3446, -23.412498, -0.2913, 0.26119998, -26.7572, 0, 0, -26.7572, 0, -3.3446, -23.412498, 0, -3.3446, 0, 0, -13.3786, 3.0140998, 0, -16.7232, 3.3446, -0.3989, -12.9443, 0, 0, -13.3786, 0, 0, -16.7232, 3.0140998, 0, -16.7232, 0, 0, -10.7654, 3.3446, -0.3989, -12.9443, 2.8241, 0, -10.4594, 0, 0, -10.7654, 0, 0, -13.3786, 3.3446, -0.3989, -12.9443, 20.0679, -0.124199994, 6.6893, 23.412498, 0, 3.3446, 23.412498, 0, 6.6893, 20.0679, -0.124199994, 6.6893, 20.0679, 0, 3.3446, 23.412498, 0, 3.3446, 51.2184, -3.9413, -15.0508995, 54.072197, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 54.072197, -3.9413, -13.3786, 54.072197, -3.9413, -11.7063, 51.2184, -3.9413, -15.0508995, 54.072197, -3.9413, -15.0508995, 54.072197, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 54.072197, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 54.072197, -3.9413, -11.7063, 54.072197, -3.9413, -10.033899, 48.3645, -3.9413, -15.0508995, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 54.072197, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 54.072197, -3.9413, -10.033899, 54.072197, -3.9413, -8.3616, 48.3645, -3.9413, -13.3786, 51.2184, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 48.3645, -3.9413, -15.0508995, 51.2184, -3.9413, -13.3786, 48.3645, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 48.3645, -3.9413, -13.3786, 51.2184, -3.9413, -11.7063, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 54.072197, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 54.072197, -3.9413, -8.3616, 54.072197, -3.9413, -6.6893, 48.3645, -3.9413, -11.7063, 51.2184, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 51.2184, -3.9413, -10.033899, 51.2184, -3.9413, -8.3616, 45.5107, -3.9413, -13.3786, 48.3645, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 48.3645, -3.9413, -11.7063, 48.3645, -3.9413, -10.033899, 45.5107, -3.9413, -13.3786, 48.3645, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 51.2184, -3.9413, -8.3616, 54.072197, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 54.072197, -3.9413, -6.6893, 54.072197, -3.9413, -5.0169997, 48.3645, -3.9413, -10.033899, 51.2184, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 45.5107, -3.9413, -11.7063, 48.3645, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 48.3645, -3.9413, -10.033899, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 54.072197, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 54.072197, -3.9413, -5.0169997, 54.072197, -3.9413, -3.3446, 48.3645, -3.9413, -8.3616, 51.2184, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 45.5107, -3.9413, -10.033899, 48.3645, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 48.3645, -3.9413, -8.3616, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 54.072197, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 54.072197, -3.9413, -3.3446, 54.072197, -3.9413, -1.6723, 48.3645, -3.9413, -6.6893, 51.2184, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 45.5107, -3.9413, -8.3616, 48.3645, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 48.3645, -3.9413, -6.6893, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 54.072197, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 54.072197, -3.9413, -1.6723, 54.072197, -3.9413, 0, 48.3645, -3.9413, -5.0169997, 51.2184, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 45.5107, -3.9413, -6.6893, 48.3645, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 48.3645, -3.9413, -5.0169997, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 54.072197, -3.9413, 0, 51.2184, -3.9413, 0, 51.2184, -3.9413, 0, 54.072197, -3.9413, 0, 54.072197, -3.9413, 1.6723, 48.3645, -3.9413, -3.3446, 51.2184, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, -1.6723, 51.2184, -3.9413, 0, 45.5107, -3.9413, -5.0169997, 48.3645, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 48.3645, -3.9413, -3.3446, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, 0, 54.072197, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 54.072197, -3.9413, 1.6723, 54.072197, -3.9413, 3.3446, 48.3645, -3.9413, -1.6723, 51.2184, -3.9413, 0, 48.3645, -3.9413, 0, 48.3645, -3.9413, 0, 51.2184, -3.9413, 0, 51.2184, -3.9413, 1.6723, 45.5107, -3.9413, -3.3446, 48.3645, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 48.3645, -3.9413, -1.6723, 48.3645, -3.9413, 0, 51.2184, -3.9413, 1.6723, 54.072197, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 54.072197, -3.9413, 3.3446, 54.072197, -3.9413, 5.0169997, 48.3645, -3.9413, 0, 51.2184, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 45.5107, -3.9413, -1.6723, 48.3645, -3.9413, 0, 45.5107, -3.9413, 0, 45.5107, -3.9413, 0, 48.3645, -3.9413, 0, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 54.072197, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 54.072197, -3.9413, 5.0169997, 54.072197, -3.9413, 6.6893, 48.3645, -3.9413, 1.6723, 51.2184, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 45.5107, -3.9413, 0, 48.3645, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 48.3645, -3.9413, 1.6723, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 54.072197, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 54.072197, -3.9413, 6.6893, 54.072197, -3.9413, 8.3616, 48.3645, -3.9413, 3.3446, 51.2184, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 45.5107, -3.9413, 1.6723, 48.3645, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 48.3645, -3.9413, 3.3446, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 54.072197, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 54.072197, -3.9413, 8.3616, 54.072197, -3.9413, 10.033899, 48.3645, -3.9413, 5.0169997, 51.2184, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 45.5107, -3.9413, 3.3446, 48.3645, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 48.3645, -3.9413, 5.0169997, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 54.072197, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 54.072197, -3.9413, 10.033899, 54.072197, -3.9413, 11.7063, 48.3645, -3.9413, 6.6893, 51.2184, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 45.5107, -3.9413, 5.0169997, 48.3645, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 48.3645, -3.9413, 6.6893, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 54.072197, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 54.072197, -3.9413, 11.7063, 54.072197, -3.9413, 13.3786, 48.3645, -3.9413, 8.3616, 51.2184, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 45.5107, -3.9413, 6.6893, 48.3645, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 48.3645, -3.9413, 8.3616, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 54.072197, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 54.072197, -3.9413, 13.3786, 54.072197, -3.9413, 15.0508995, 48.3645, -3.9413, 10.033899, 51.2184, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 45.5107, -3.9413, 8.3616, 48.3645, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 48.3645, -3.9413, 10.033899, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 54.072197, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 54.072197, -3.9413, 15.0508995, 54.072197, -3.9413, 16.7232, 48.3645, -3.9413, 11.7063, 51.2184, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 45.5107, -3.9413, 10.033899, 48.3645, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 48.3645, -3.9413, 11.7063, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 54.072197, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 54.072197, -3.9413, 16.7232, 54.072197, -3.9413, 18.3955, 48.3645, -3.9413, 13.3786, 51.2184, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 45.5107, -3.9413, 11.7063, 48.3645, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 48.3645, -3.9413, 13.3786, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 54.072197, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 54.072197, -3.9413, 18.3955, 54.072197, -3.9413, 20.0679, 48.3645, -3.9413, 15.0508995, 51.2184, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 45.5107, -3.9413, 13.3786, 48.3645, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 48.3645, -3.9413, 15.0508995, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 54.072197, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 54.072197, -3.9413, 20.0679, 54.072197, -3.9413, 21.7402, 48.3645, -3.9413, 16.7232, 51.2184, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 45.5107, -3.9413, 15.0508995, 48.3645, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 48.3645, -3.9413, 16.7232, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 54.072197, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 54.072197, -3.9413, 21.7402, 54.072197, -3.9413, 23.412498, 48.3645, -3.9413, 18.3955, 51.2184, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 45.5107, -3.9413, 16.7232, 48.3645, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 48.3645, -3.9413, 18.3955, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 54.072197, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 54.072197, -3.9413, 23.412498, 54.072197, -3.9413, 25.084799, 48.3645, -3.9413, 20.0679, 51.2184, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 45.5107, -3.9413, 18.3955, 48.3645, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 48.3645, -3.9413, 20.0679, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 54.072197, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 54.072197, -3.9413, 25.084799, 54.072197, -3.9413, 26.7572, 51.2184, -3.9413, 25.084799, 54.072197, -3.9413, 26.7572, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 23.412498, 51.2184, -3.9413, 23.412498, 51.2184, -3.9413, 25.084799, 48.3645, -3.9413, 21.7402, 51.2184, -3.9413, 23.412498, 48.3645, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 51.2184, -3.9413, 25.084799, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 23.412498, 51.2184, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 51.2184, -3.9413, 26.7572, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 21.7402, 48.3645, -3.9413, 21.7402, 48.3645, -3.9413, 23.412498, 45.5107, -3.9413, 20.0679, 48.3645, -3.9413, 21.7402, 45.5107, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 48.3645, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 45.5107, -3.9413, 21.7402, 48.3645, -3.9413, 23.412498, 45.5107, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 48.3645, -3.9413, 25.084799, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 23.412498, 48.3645, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 48.3645, -3.9413, 26.7572, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 25.084799, 45.5107, -3.9413, 25.084799, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 25.084799, 45.5107, -3.9413, 26.7572, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 25.084799, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 26.7572, 39.7973, -3.9413, 26.7572, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 25.084799, 39.7973, -3.9413, 25.084799, 42.6568, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 42.6568, -3.9413, 25.084799, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 23.412498, 42.6568, -3.9413, 25.084799, 42.6568, -3.9413, 23.412498, 45.5107, -3.9413, 23.412498, 45.5107, -3.9413, 25.084799, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 23.412498, 39.7973, -3.9413, 23.412498, 42.6568, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 42.6568, -3.9413, 23.412498, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 21.7402, 42.6568, -3.9413, 23.412498, 42.6568, -3.9413, 21.7402, 45.5107, -3.9413, 21.7402, 45.5107, -3.9413, 23.412498, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 21.7402, 39.7973, -3.9413, 21.7402, 42.6568, -3.9413, 20.0679, 45.5107, -3.9413, 21.7402, 42.6568, -3.9413, 21.7402, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 20.0679, 42.6568, -3.9413, 21.7402, 42.6568, -3.9413, 20.0679, 45.5107, -3.9413, 20.0679, 45.5107, -3.9413, 21.7402, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 20.0679, 39.7973, -3.9413, 20.0679, 42.6568, -3.9413, 18.3955, 45.5107, -3.9413, 20.0679, 42.6568, -3.9413, 20.0679, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 18.3955, 42.6568, -3.9413, 20.0679, 42.6568, -3.9413, 18.3955, 45.5107, -3.9413, 18.3955, 45.5107, -3.9413, 20.0679, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 18.3955, 39.7973, -3.9413, 18.3955, 42.6568, -3.9413, 16.7232, 45.5107, -3.9413, 18.3955, 42.6568, -3.9413, 18.3955, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 16.7232, 42.6568, -3.9413, 18.3955, 42.6568, -3.9413, 16.7232, 45.5107, -3.9413, 16.7232, 45.5107, -3.9413, 18.3955, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 16.7232, 39.7973, -3.9413, 16.7232, 42.6568, -3.9413, 15.0508995, 45.5107, -3.9413, 16.7232, 42.6568, -3.9413, 16.7232, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 15.0508995, 42.6568, -3.9413, 16.7232, 42.6568, -3.9413, 15.0508995, 45.5107, -3.9413, 15.0508995, 45.5107, -3.9413, 16.7232, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 15.0508995, 39.7973, -3.9413, 15.0508995, 42.6568, -3.9413, 13.3786, 45.5107, -3.9413, 15.0508995, 42.6568, -3.9413, 15.0508995, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 13.3786, 42.6568, -3.9413, 15.0508995, 42.6568, -3.9413, 13.3786, 45.5107, -3.9413, 13.3786, 45.5107, -3.9413, 15.0508995, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 13.3786, 39.7973, -3.9413, 13.3786, 42.6568, -3.9413, 11.7063, 45.5107, -3.9413, 13.3786, 42.6568, -3.9413, 13.3786, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 11.7063, 42.6568, -3.9413, 13.3786, 42.6568, -3.9413, 11.7063, 45.5107, -3.9413, 11.7063, 45.5107, -3.9413, 13.3786, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 11.7063, 39.7973, -3.9413, 11.7063, 42.6568, -3.9413, 10.033899, 45.5107, -3.9413, 11.7063, 42.6568, -3.9413, 11.7063, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 10.033899, 42.6568, -3.9413, 11.7063, 42.6568, -3.9413, 10.033899, 45.5107, -3.9413, 10.033899, 45.5107, -3.9413, 11.7063, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 10.033899, 39.7973, -3.9413, 10.033899, 42.6568, -3.9413, 8.3616, 45.5107, -3.9413, 10.033899, 42.6568, -3.9413, 10.033899, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 8.3616, 42.6568, -3.9413, 10.033899, 42.6568, -3.9413, 8.3616, 45.5107, -3.9413, 8.3616, 45.5107, -3.9413, 10.033899, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 8.3616, 39.7973, -3.9413, 8.3616, 42.6568, -3.9413, 6.6893, 45.5107, -3.9413, 8.3616, 42.6568, -3.9413, 8.3616, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 6.6893, 42.6568, -3.9413, 8.3616, 42.6568, -3.9413, 6.6893, 45.5107, -3.9413, 6.6893, 45.5107, -3.9413, 8.3616, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 6.6893, 39.7973, -3.9413, 6.6893, 42.6568, -3.9413, 5.0169997, 45.5107, -3.9413, 6.6893, 42.6568, -3.9413, 6.6893, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 5.0169997, 42.6568, -3.9413, 6.6893, 42.6568, -3.9413, 5.0169997, 45.5107, -3.9413, 5.0169997, 45.5107, -3.9413, 6.6893, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 5.0169997, 39.7973, -3.9413, 5.0169997, 42.6568, -3.9413, 3.3446, 45.5107, -3.9413, 5.0169997, 42.6568, -3.9413, 5.0169997, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 3.3446, 42.6568, -3.9413, 5.0169997, 42.6568, -3.9413, 3.3446, 45.5107, -3.9413, 3.3446, 45.5107, -3.9413, 5.0169997, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 3.3446, 39.7973, -3.9413, 3.3446, 42.6568, -3.9413, 1.6723, 45.5107, -3.9413, 3.3446, 42.6568, -3.9413, 3.3446, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 1.6723, 42.6568, -3.9413, 3.3446, 42.6568, -3.9413, 1.6723, 45.5107, -3.9413, 1.6723, 45.5107, -3.9413, 3.3446, 39.7973, -3.9413, 0, 42.6568, -3.9413, 1.6723, 39.7973, -3.9413, 1.6723, 42.6568, -3.9413, 0, 45.5107, -3.9413, 1.6723, 42.6568, -3.9413, 1.6723, 39.7973, -3.9413, 0, 42.6568, -3.9413, 0, 42.6568, -3.9413, 1.6723, 42.6568, -3.9413, 0, 45.5107, -3.9413, 0, 45.5107, -3.9413, 1.6723, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, 0, 39.7973, -3.9413, 0, 42.6568, -3.9413, -1.6723, 45.5107, -3.9413, 0, 42.6568, -3.9413, 0, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, -1.6723, 42.6568, -3.9413, 0, 42.6568, -3.9413, -1.6723, 45.5107, -3.9413, -1.6723, 45.5107, -3.9413, 0, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -1.6723, 39.7973, -3.9413, -1.6723, 42.6568, -3.9413, -3.3446, 45.5107, -3.9413, -1.6723, 42.6568, -3.9413, -1.6723, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -3.3446, 42.6568, -3.9413, -1.6723, 42.6568, -3.9413, -3.3446, 45.5107, -3.9413, -3.3446, 45.5107, -3.9413, -1.6723, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -3.3446, 39.7973, -3.9413, -3.3446, 42.6568, -3.9413, -5.0169997, 45.5107, -3.9413, -3.3446, 42.6568, -3.9413, -3.3446, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -5.0169997, 42.6568, -3.9413, -3.3446, 42.6568, -3.9413, -5.0169997, 45.5107, -3.9413, -5.0169997, 45.5107, -3.9413, -3.3446, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -5.0169997, 39.7973, -3.9413, -5.0169997, 42.6568, -3.9413, -6.6893, 45.5107, -3.9413, -5.0169997, 42.6568, -3.9413, -5.0169997, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -6.6893, 42.6568, -3.9413, -5.0169997, 42.6568, -3.9413, -6.6893, 45.5107, -3.9413, -6.6893, 45.5107, -3.9413, -5.0169997, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -6.6893, 39.7973, -3.9413, -6.6893, 42.6568, -3.9413, -8.3616, 45.5107, -3.9413, -6.6893, 42.6568, -3.9413, -6.6893, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -8.3616, 42.6568, -3.9413, -6.6893, 42.6568, -3.9413, -8.3616, 45.5107, -3.9413, -8.3616, 45.5107, -3.9413, -6.6893, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -8.3616, 39.7973, -3.9413, -8.3616, 42.6568, -3.9413, -10.033899, 45.5107, -3.9413, -8.3616, 42.6568, -3.9413, -8.3616, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -10.033899, 42.6568, -3.9413, -8.3616, 42.6568, -3.9413, -10.033899, 45.5107, -3.9413, -10.033899, 45.5107, -3.9413, -8.3616, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -10.033899, 39.7973, -3.9413, -10.033899, 42.6568, -3.9413, -11.7063, 45.5107, -3.9413, -10.033899, 42.6568, -3.9413, -10.033899, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -11.7063, 42.6568, -3.9413, -10.033899, 42.6568, -3.9413, -11.7063, 45.5107, -3.9413, -11.7063, 45.5107, -3.9413, -10.033899, 39.7973, -3.9413, -13.3786, 42.6568, -3.9413, -11.7063, 39.7973, -3.9413, -11.7063, 42.6568, -3.9413, -13.3786, 45.5107, -3.9413, -11.7063, 42.6568, -3.9413, -11.7063, 39.7973, -3.9413, -13.3786, 42.6568, -3.9413, -13.3786, 42.6568, -3.9413, -11.7063, 42.6568, -3.9413, -13.3786, 45.5107, -3.9413, -13.3786, 45.5107, -3.9413, -11.7063, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -13.3786, 39.7973, -3.9413, -13.3786, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 42.6568, -3.9413, -13.3786, 42.6568, -3.9413, -15.0508995, 45.5107, -3.9413, -13.3786, 42.6568, -3.9413, -13.3786, 39.7973, -3.9413, -16.7232, 42.6568, -3.9413, -15.0508995, 39.7973, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 45.5107, -3.9413, -15.0508995, 45.5107, -3.9413, -13.3786, 45.5107, -3.9413, -15.0508995, 48.3645, -3.9413, -13.3786, 45.5107, -3.9413, -13.3786, 39.7973, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 42.6568, -3.9413, -15.0508995, 42.6568, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 42.6568, -3.9413, -15.0508995, 39.7973, -3.9413, -18.3955, 42.6568, -3.9413, -16.7232, 39.7973, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 48.3645, -3.9413, -15.0508995, 48.3645, -3.9413, -13.3786, 39.7973, -3.9413, -18.3955, 42.6568, -3.9413, -18.3955, 42.6568, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 45.5107, -3.9413, -16.7232, 45.5107, -3.9413, -15.0508995, 45.5107, -3.9413, -16.7232, 48.3645, -3.9413, -15.0508995, 45.5107, -3.9413, -15.0508995, 42.6568, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 42.6568, -3.9413, -16.7232, 39.7973, -3.9413, -20.0679, 42.6568, -3.9413, -18.3955, 39.7973, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 48.3645, -3.9413, -16.7232, 48.3645, -3.9413, -15.0508995, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -15.0508995, 48.3645, -3.9413, -15.0508995, 42.6568, -3.9413, -18.3955, 45.5107, -3.9413, -18.3955, 45.5107, -3.9413, -16.7232, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -16.7232, 45.5107, -3.9413, -16.7232, 39.7973, -3.9413, -20.0679, 42.6568, -3.9413, -20.0679, 42.6568, -3.9413, -18.3955, 42.6568, -3.9413, -20.0679, 45.5107, -3.9413, -18.3955, 42.6568, -3.9413, -18.3955, 39.7973, -3.9413, -21.7402, 42.6568, -3.9413, -20.0679, 39.7973, -3.9413, -20.0679, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -16.7232, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -16.7232, 54.072197, -3.9413, -15.0508995, 51.2184, -3.9413, -15.0508995, 51.2184, -3.9413, -16.7232, 54.072197, -3.9413, -16.7232, 54.072197, -3.9413, -15.0508995, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -16.7232, 48.3645, -3.9413, -16.7232, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -18.3955, 48.3645, -3.9413, -16.7232, 51.2184, -3.9413, -18.3955, 54.072197, -3.9413, -16.7232, 51.2184, -3.9413, -16.7232, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -18.3955, 51.2184, -3.9413, -16.7232, 51.2184, -3.9413, -18.3955, 54.072197, -3.9413, -18.3955, 54.072197, -3.9413, -16.7232, 45.5107, -3.9413, -20.0679, 48.3645, -3.9413, -18.3955, 45.5107, -3.9413, -18.3955, 42.6568, -3.9413, -20.0679, 45.5107, -3.9413, -20.0679, 45.5107, -3.9413, -18.3955, 48.3645, -3.9413, -20.0679, 51.2184, -3.9413, -18.3955, 48.3645, -3.9413, -18.3955, 45.5107, -3.9413, -20.0679, 48.3645, -3.9413, -20.0679, 48.3645, -3.9413, -18.3955, 51.2184, -3.9413, -20.0679, 54.072197, -3.9413, -18.3955, 51.2184, -3.9413, -18.3955, 48.3645, -3.9413, -20.0679, 51.2184, -3.9413, -20.0679, 51.2184, -3.9413, -18.3955, 51.2184, -3.9413, -20.0679, 54.072197, -3.9413, -20.0679, 54.072197, -3.9413, -18.3955, 39.7973, -3.9413, -21.7402, 42.6568, -3.9413, -21.7402, 42.6568, -3.9413, -20.0679, 42.6568, -3.9413, -21.7402, 45.5107, -3.9413, -20.0679, 42.6568, -3.9413, -20.0679, 39.7973, -3.9413, -23.412498, 42.6568, -3.9413, -21.7402, 39.7973, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 48.3645, -3.9413, -20.0679, 45.5107, -3.9413, -20.0679, 42.6568, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 45.5107, -3.9413, -20.0679, 39.7973, -3.9413, -23.412498, 42.6568, -3.9413, -23.412498, 42.6568, -3.9413, -21.7402, 42.6568, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 42.6568, -3.9413, -21.7402, 39.7973, -3.9413, -25.084799, 42.6568, -3.9413, -23.412498, 39.7973, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 48.3645, -3.9413, -21.7402, 48.3645, -3.9413, -20.0679, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -20.0679, 48.3645, -3.9413, -20.0679, 42.6568, -3.9413, -23.412498, 45.5107, -3.9413, -23.412498, 45.5107, -3.9413, -21.7402, 45.5107, -3.9413, -23.412498, 48.3645, -3.9413, -21.7402, 45.5107, -3.9413, -21.7402, 39.7973, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -23.412498, 42.6568, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 42.6568, -3.9413, -23.412498, 39.7973, -3.9413, -26.7572, 42.6568, -3.9413, -25.084799, 39.7973, -3.9413, -25.084799, 39.7973, -3.9413, -26.7572, 42.6568, -3.9413, -26.7572, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -26.7572, 45.5107, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 42.6568, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 42.6568, -3.9413, -26.7572, 45.5107, -3.9413, -26.7572, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -23.412498, 48.3645, -3.9413, -23.412498, 48.3645, -3.9413, -21.7402, 45.5107, -3.9413, -25.084799, 48.3645, -3.9413, -23.412498, 45.5107, -3.9413, -23.412498, 45.5107, -3.9413, -26.7572, 48.3645, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 45.5107, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -23.412498, 45.5107, -3.9413, -26.7572, 48.3645, -3.9413, -26.7572, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 51.2184, -3.9413, -20.0679, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -21.7402, 48.3645, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 54.072197, -3.9413, -20.0679, 51.2184, -3.9413, -20.0679, 51.2184, -3.9413, -21.7402, 54.072197, -3.9413, -21.7402, 54.072197, -3.9413, -20.0679, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 51.2184, -3.9413, -21.7402, 51.2184, -3.9413, -23.412498, 54.072197, -3.9413, -21.7402, 51.2184, -3.9413, -21.7402, 48.3645, -3.9413, -25.084799, 51.2184, -3.9413, -23.412498, 48.3645, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 54.072197, -3.9413, -23.412498, 54.072197, -3.9413, -21.7402, 48.3645, -3.9413, -26.7572, 51.2184, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 48.3645, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -23.412498, 51.2184, -3.9413, -25.084799, 54.072197, -3.9413, -23.412498, 51.2184, -3.9413, -23.412498, 48.3645, -3.9413, -26.7572, 51.2184, -3.9413, -26.7572, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 54.072197, -3.9413, -25.084799, 54.072197, -3.9413, -23.412498, 51.2184, -3.9413, -26.7572, 54.072197, -3.9413, -25.084799, 51.2184, -3.9413, -25.084799, 51.2184, -3.9413, -26.7572, 54.072197, -3.9413, -26.7572, 54.072197, -3.9413, -25.084799, 29.679499, -0.6044, -15.0508995, 32.4649, -1.1213, -13.3786, 29.679499, -0.6044, -13.3786, 29.679499, -0.6044, -13.3786, 32.4649, -1.1213, -13.3786, 32.4649, -1.1213, -11.7063, 29.679499, -0.6044, -15.0508995, 32.4649, -1.1213, -15.0508995, 32.4649, -1.1213, -13.3786, 29.679499, -0.6044, -13.3786, 32.4649, -1.1213, -11.7063, 29.679499, -0.6044, -11.7063, 29.679499, -0.6044, -16.7232, 32.4649, -1.1213, -15.0508995, 29.679499, -0.6044, -15.0508995, 29.679499, -0.6044, -11.7063, 32.4649, -1.1213, -11.7063, 32.4649, -1.1213, -10.033899, 29.679499, -0.6044, -16.7232, 32.4649, -1.1213, -16.7232, 32.4649, -1.1213, -15.0508995, 29.679499, -0.6044, -11.7063, 32.4649, -1.1213, -10.033899, 29.679499, -0.6044, -10.033899, 29.679499, -0.6044, -18.3955, 32.4649, -1.1213, -16.7232, 29.679499, -0.6044, -16.7232, 29.679499, -0.6044, -10.033899, 32.4649, -1.1213, -10.033899, 32.4649, -1.1213, -8.3616, 29.679499, -0.6044, -18.3955, 32.4649, -1.1213, -18.3955, 32.4649, -1.1213, -16.7232, 29.679499, -0.6044, -10.033899, 32.4649, -1.1213, -8.3616, 29.679499, -0.6044, -8.3616, 29.679499, -0.6044, -20.0679, 32.4649, -1.1213, -18.3955, 29.679499, -0.6044, -18.3955, 29.679499, -0.6044, -8.3616, 32.4649, -1.1213, -8.3616, 32.4649, -1.1213, -6.6893, 29.679499, -0.6044, -20.0679, 32.4649, -1.1213, -20.0679, 32.4649, -1.1213, -18.3955, 29.679499, -0.6044, -8.3616, 32.4649, -1.1213, -6.6893, 29.679499, -0.6044, -6.6893, 29.679499, -0.6044, -21.7402, 32.4649, -1.1213, -20.0679, 29.679499, -0.6044, -20.0679, 29.679499, -0.6044, -6.6893, 32.4649, -1.1213, -6.6893, 32.4649, -1.1213, -5.0169997, 29.679499, -0.6044, -21.7402, 32.4649, -1.1213, -21.7402, 32.4649, -1.1213, -20.0679, 29.679499, -0.6044, -6.6893, 32.4649, -1.1213, -5.0169997, 29.679499, -0.6044, -5.0169997, 29.679499, -0.6044, -23.412498, 32.4649, -1.1213, -21.7402, 29.679499, -0.6044, -21.7402, 29.679499, -0.6044, -5.0169997, 32.4649, -1.1213, -5.0169997, 32.4649, -1.1213, -3.3446, 29.679499, -0.6044, -23.412498, 32.4649, -1.1213, -23.412498, 32.4649, -1.1213, -21.7402, 29.679499, -0.6044, -5.0169997, 32.4649, -1.1213, -3.3446, 29.679499, -0.6044, -3.3446, 29.679499, -0.6044, -25.084799, 32.4649, -1.1213, -23.412498, 29.679499, -0.6044, -23.412498, 29.679499, -0.6044, -3.3446, 32.4649, -1.1213, -3.3446, 32.4649, -1.1213, -1.6723, 29.679499, -0.6044, -25.084799, 32.4649, -1.1213, -25.084799, 32.4649, -1.1213, -23.412498, 29.679499, -0.6044, -26.7572, 32.4649, -1.1213, -25.084799, 29.679499, -0.6044, -25.084799, 29.679499, -0.6044, -26.7572, 32.4649, -1.1213, -26.7572, 32.4649, -1.1213, -25.084799, 29.679499, -0.6044, -3.3446, 32.4649, -1.1213, -1.6723, 29.679499, -0.6044, -1.6723, 29.679499, -0.6044, -1.6723, 32.4649, -1.1213, -1.6723, 32.4649, -1.1213, 0, 29.679499, -0.6044, -1.6723, 32.4649, -1.1213, 0, 29.679499, -0.6044, 0, 29.679499, -0.6044, 0, 32.4649, -1.1213, 0, 32.4649, -1.1213, 1.6723, 29.679499, -0.6044, 0, 32.4649, -1.1213, 1.6723, 29.679499, -0.6044, 1.6723, 29.679499, -0.6044, 1.6723, 32.4649, -1.1213, 1.6723, 32.4649, -1.1213, 3.3446, 29.679499, -0.6044, 1.6723, 32.4649, -1.1213, 3.3446, 29.679499, -0.6044, 3.3446, 29.679499, -0.6044, 3.3446, 32.4649, -1.1213, 3.3446, 32.4649, -1.1213, 5.0169997, 29.679499, -0.6044, 3.3446, 32.4649, -1.1213, 5.0169997, 29.679499, -0.6044, 5.0169997, 29.679499, -0.6044, 5.0169997, 32.4649, -1.1213, 5.0169997, 32.4649, -1.1213, 6.6893, 29.679499, -0.6044, 5.0169997, 32.4649, -1.1213, 6.6893, 29.679499, -0.6044, 6.6893, 29.679499, -0.6044, 6.6893, 32.4649, -1.1213, 6.6893, 32.4649, -1.1213, 8.3616, 29.679499, -0.6044, 6.6893, 32.4649, -1.1213, 8.3616, 29.679499, -0.6044, 8.3616, 29.679499, -0.6044, 8.3616, 32.4649, -1.1213, 8.3616, 32.4649, -1.1213, 10.033899, 29.679499, -0.6044, 8.3616, 32.4649, -1.1213, 10.033899, 29.679499, -0.6044, 10.033899, 29.679499, -0.6044, 10.033899, 32.4649, -1.1213, 10.033899, 32.4649, -1.1213, 11.7063, 29.679499, -0.6044, 10.033899, 32.4649, -1.1213, 11.7063, 29.679499, -0.6044, 11.7063, 29.679499, -0.6044, 11.7063, 32.4649, -1.1213, 11.7063, 32.4649, -1.1213, 13.3786, 29.679499, -0.6044, 11.7063, 32.4649, -1.1213, 13.3786, 29.679499, -0.6044, 13.3786, 29.679499, -0.6044, 13.3786, 32.4649, -1.1213, 13.3786, 32.4649, -1.1213, 15.0508995, 29.679499, -0.6044, 13.3786, 32.4649, -1.1213, 15.0508995, 29.679499, -0.6044, 15.0508995, 29.679499, -0.6044, 15.0508995, 32.4649, -1.1213, 15.0508995, 32.4649, -1.1213, 16.7232, 29.679499, -0.6044, 15.0508995, 32.4649, -1.1213, 16.7232, 29.679499, -0.6044, 16.7232, 29.679499, -0.6044, 16.7232, 32.4649, -1.1213, 16.7232, 32.4649, -1.1213, 18.3955, 29.679499, -0.6044, 16.7232, 32.4649, -1.1213, 18.3955, 29.679499, -0.6044, 18.3955, 29.679499, -0.6044, 18.3955, 32.4649, -1.1213, 18.3955, 32.4649, -1.1213, 20.0679, 29.679499, -0.6044, 18.3955, 32.4649, -1.1213, 20.0679, 29.679499, -0.6044, 20.0679, 29.679499, -0.6044, 20.0679, 32.4649, -1.1213, 20.0679, 32.4649, -1.1213, 21.7402, 29.679499, -0.6044, 20.0679, 32.4649, -1.1213, 21.7402, 29.679499, -0.6044, 21.7402, 29.679499, -0.6044, 21.7402, 32.4649, -1.1213, 21.7402, 32.4649, -1.1213, 23.412498, 29.679499, -0.6044, 21.7402, 32.4649, -1.1213, 23.412498, 29.679499, -0.6044, 23.412498, 29.679499, -0.6044, 23.412498, 32.4649, -1.1213, 23.412498, 32.4649, -1.1213, 25.084799, 29.679499, -0.6044, 23.412498, 32.4649, -1.1213, 25.084799, 29.679499, -0.6044, 25.084799, 29.679499, -0.6044, 25.084799, 32.4649, -1.1213, 25.084799, 32.4649, -1.1213, 26.7572, 29.679499, -0.6044, 25.084799, 32.4649, -1.1213, 26.7572, 29.679499, -0.6044, 26.7572, 32.4649, -1.1213, -15.0508995, 39.7973, -3.9413, -13.3786, 32.4649, -1.1213, -13.3786, 32.4649, -1.1213, -13.3786, 39.7973, -3.9413, -13.3786, 39.7973, -3.9413, -11.7063, 32.4649, -1.1213, -15.0508995, 39.7973, -3.9413, -15.0508995, 39.7973, -3.9413, -13.3786, 32.4649, -1.1213, -13.3786, 39.7973, -3.9413, -11.7063, 32.4649, -1.1213, -11.7063, 32.4649, -1.1213, -16.7232, 39.7973, -3.9413, -15.0508995, 32.4649, -1.1213, -15.0508995, 32.4649, -1.1213, -11.7063, 39.7973, -3.9413, -11.7063, 39.7973, -3.9413, -10.033899, 32.4649, -1.1213, -16.7232, 39.7973, -3.9413, -16.7232, 39.7973, -3.9413, -15.0508995, 32.4649, -1.1213, -11.7063, 39.7973, -3.9413, -10.033899, 32.4649, -1.1213, -10.033899, 32.4649, -1.1213, -18.3955, 39.7973, -3.9413, -16.7232, 32.4649, -1.1213, -16.7232, 32.4649, -1.1213, -10.033899, 39.7973, -3.9413, -10.033899, 39.7973, -3.9413, -8.3616, 32.4649, -1.1213, -18.3955, 39.7973, -3.9413, -18.3955, 39.7973, -3.9413, -16.7232, 32.4649, -1.1213, -10.033899, 39.7973, -3.9413, -8.3616, 32.4649, -1.1213, -8.3616, 32.4649, -1.1213, -20.0679, 39.7973, -3.9413, -18.3955, 32.4649, -1.1213, -18.3955, 32.4649, -1.1213, -8.3616, 39.7973, -3.9413, -8.3616, 39.7973, -3.9413, -6.6893, 32.4649, -1.1213, -20.0679, 39.7973, -3.9413, -20.0679, 39.7973, -3.9413, -18.3955, 32.4649, -1.1213, -8.3616, 39.7973, -3.9413, -6.6893, 32.4649, -1.1213, -6.6893, 32.4649, -1.1213, -21.7402, 39.7973, -3.9413, -20.0679, 32.4649, -1.1213, -20.0679, 32.4649, -1.1213, -6.6893, 39.7973, -3.9413, -6.6893, 39.7973, -3.9413, -5.0169997, 32.4649, -1.1213, -21.7402, 39.7973, -3.9413, -21.7402, 39.7973, -3.9413, -20.0679, 32.4649, -1.1213, -6.6893, 39.7973, -3.9413, -5.0169997, 32.4649, -1.1213, -5.0169997, 32.4649, -1.1213, -23.412498, 39.7973, -3.9413, -21.7402, 32.4649, -1.1213, -21.7402, 32.4649, -1.1213, -5.0169997, 39.7973, -3.9413, -5.0169997, 39.7973, -3.9413, -3.3446, 32.4649, -1.1213, -23.412498, 39.7973, -3.9413, -23.412498, 39.7973, -3.9413, -21.7402, 32.4649, -1.1213, -5.0169997, 39.7973, -3.9413, -3.3446, 32.4649, -1.1213, -3.3446, 32.4649, -1.1213, -25.084799, 39.7973, -3.9413, -23.412498, 32.4649, -1.1213, -23.412498, 32.4649, -1.1213, -3.3446, 39.7973, -3.9413, -3.3446, 39.7973, -3.9413, -1.6723, 32.4649, -1.1213, -25.084799, 39.7973, -3.9413, -25.084799, 39.7973, -3.9413, -23.412498, 32.4649, -1.1213, -26.7572, 39.7973, -3.9413, -25.084799, 32.4649, -1.1213, -25.084799, 32.4649, -1.1213, -26.7572, 39.7973, -3.9413, -26.7572, 39.7973, -3.9413, -25.084799, 32.4649, -1.1213, -3.3446, 39.7973, -3.9413, -1.6723, 32.4649, -1.1213, -1.6723, 32.4649, -1.1213, -1.6723, 39.7973, -3.9413, -1.6723, 39.7973, -3.9413, 0, 32.4649, -1.1213, -1.6723, 39.7973, -3.9413, 0, 32.4649, -1.1213, 0, 32.4649, -1.1213, 0, 39.7973, -3.9413, 0, 39.7973, -3.9413, 1.6723, 32.4649, -1.1213, 0, 39.7973, -3.9413, 1.6723, 32.4649, -1.1213, 1.6723, 32.4649, -1.1213, 1.6723, 39.7973, -3.9413, 1.6723, 39.7973, -3.9413, 3.3446, 32.4649, -1.1213, 1.6723, 39.7973, -3.9413, 3.3446, 32.4649, -1.1213, 3.3446, 32.4649, -1.1213, 3.3446, 39.7973, -3.9413, 3.3446, 39.7973, -3.9413, 5.0169997, 32.4649, -1.1213, 3.3446, 39.7973, -3.9413, 5.0169997, 32.4649, -1.1213, 5.0169997, 32.4649, -1.1213, 5.0169997, 39.7973, -3.9413, 5.0169997, 39.7973, -3.9413, 6.6893, 32.4649, -1.1213, 5.0169997, 39.7973, -3.9413, 6.6893, 32.4649, -1.1213, 6.6893, 32.4649, -1.1213, 6.6893, 39.7973, -3.9413, 6.6893, 39.7973, -3.9413, 8.3616, 32.4649, -1.1213, 6.6893, 39.7973, -3.9413, 8.3616, 32.4649, -1.1213, 8.3616, 32.4649, -1.1213, 8.3616, 39.7973, -3.9413, 8.3616, 39.7973, -3.9413, 10.033899, 32.4649, -1.1213, 8.3616, 39.7973, -3.9413, 10.033899, 32.4649, -1.1213, 10.033899, 32.4649, -1.1213, 10.033899, 39.7973, -3.9413, 10.033899, 39.7973, -3.9413, 11.7063, 32.4649, -1.1213, 10.033899, 39.7973, -3.9413, 11.7063, 32.4649, -1.1213, 11.7063, 32.4649, -1.1213, 11.7063, 39.7973, -3.9413, 11.7063, 39.7973, -3.9413, 13.3786, 32.4649, -1.1213, 11.7063, 39.7973, -3.9413, 13.3786, 32.4649, -1.1213, 13.3786, 32.4649, -1.1213, 13.3786, 39.7973, -3.9413, 13.3786, 39.7973, -3.9413, 15.0508995, 32.4649, -1.1213, 13.3786, 39.7973, -3.9413, 15.0508995, 32.4649, -1.1213, 15.0508995, 32.4649, -1.1213, 15.0508995, 39.7973, -3.9413, 15.0508995, 39.7973, -3.9413, 16.7232, 32.4649, -1.1213, 15.0508995, 39.7973, -3.9413, 16.7232, 32.4649, -1.1213, 16.7232, 32.4649, -1.1213, 16.7232, 39.7973, -3.9413, 16.7232, 39.7973, -3.9413, 18.3955, 32.4649, -1.1213, 16.7232, 39.7973, -3.9413, 18.3955, 32.4649, -1.1213, 18.3955, 32.4649, -1.1213, 18.3955, 39.7973, -3.9413, 18.3955, 39.7973, -3.9413, 20.0679, 32.4649, -1.1213, 18.3955, 39.7973, -3.9413, 20.0679, 32.4649, -1.1213, 20.0679, 32.4649, -1.1213, 20.0679, 39.7973, -3.9413, 20.0679, 39.7973, -3.9413, 21.7402, 32.4649, -1.1213, 20.0679, 39.7973, -3.9413, 21.7402, 32.4649, -1.1213, 21.7402, 32.4649, -1.1213, 21.7402, 39.7973, -3.9413, 21.7402, 39.7973, -3.9413, 23.412498, 32.4649, -1.1213, 21.7402, 39.7973, -3.9413, 23.412498, 32.4649, -1.1213, 23.412498, 32.4649, -1.1213, 23.412498, 39.7973, -3.9413, 23.412498, 39.7973, -3.9413, 25.084799, 32.4649, -1.1213, 23.412498, 39.7973, -3.9413, 25.084799, 32.4649, -1.1213, 25.084799, 32.4649, -1.1213, 25.084799, 39.7973, -3.9413, 25.084799, 39.7973, -3.9413, 26.7572, 32.4649, -1.1213, 25.084799, 39.7973, -3.9413, 26.7572, 32.4649, -1.1213, 26.7572, 26.7572, -0.2593, 16.7232, 29.679499, -0.6044, 18.3955, 26.7572, -0.2593, 18.3955, 26.7572, -0.2593, 18.3955, 29.679499, -0.6044, 18.3955, 29.679499, -0.6044, 20.0679, 26.7572, -0.2593, 16.7232, 29.679499, -0.6044, 16.7232, 29.679499, -0.6044, 18.3955, 26.7572, -0.2593, 18.3955, 29.679499, -0.6044, 20.0679, 26.7572, -0.2593, 20.0679, 26.7572, -0.2593, 15.0508995, 29.679499, -0.6044, 16.7232, 26.7572, -0.2593, 16.7232, 26.7572, -0.2593, 20.0679, 29.679499, -0.6044, 20.0679, 29.679499, -0.6044, 21.7402, 26.7572, -0.2593, 15.0508995, 29.679499, -0.6044, 15.0508995, 29.679499, -0.6044, 16.7232, 26.7572, -0.2593, 20.0679, 29.679499, -0.6044, 21.7402, 26.7572, -0.2593, 21.7402, 26.7572, -0.2593, 13.3786, 29.679499, -0.6044, 15.0508995, 26.7572, -0.2593, 15.0508995, 26.7572, -0.2593, 21.7402, 29.679499, -0.6044, 21.7402, 29.679499, -0.6044, 23.412498, 26.7572, -0.2593, 13.3786, 29.679499, -0.6044, 13.3786, 29.679499, -0.6044, 15.0508995, 26.7572, -0.2593, 21.7402, 29.679499, -0.6044, 23.412498, 26.7572, -0.2593, 23.412498, 26.7572, -0.2593, 11.7063, 29.679499, -0.6044, 13.3786, 26.7572, -0.2593, 13.3786, 26.7572, -0.2593, 23.412498, 29.679499, -0.6044, 23.412498, 29.679499, -0.6044, 25.084799, 26.7572, -0.2593, 11.7063, 29.679499, -0.6044, 11.7063, 29.679499, -0.6044, 13.3786, 26.7572, -0.2593, 23.412498, 29.679499, -0.6044, 25.084799, 26.7572, -0.2593, 25.084799, 26.7572, -0.2593, 25.084799, 29.679499, -0.6044, 25.084799, 29.679499, -0.6044, 26.7572, 26.7572, -0.2593, 25.084799, 29.679499, -0.6044, 26.7572, 26.7572, -0.2593, 26.7572, 26.7572, -0.2593, 10.033899, 29.679499, -0.6044, 11.7063, 26.7572, -0.2593, 11.7063, 26.7572, -0.2593, 10.033899, 29.679499, -0.6044, 10.033899, 29.679499, -0.6044, 11.7063, 26.7572, -0.2593, 8.3616, 29.679499, -0.6044, 10.033899, 26.7572, -0.2593, 10.033899, 26.7572, -0.2593, 8.3616, 29.679499, -0.6044, 8.3616, 29.679499, -0.6044, 10.033899, 26.7572, -0.2593, 6.6893, 29.679499, -0.6044, 8.3616, 26.7572, -0.2593, 8.3616, 26.7572, -0.2593, 6.6893, 29.679499, -0.6044, 6.6893, 29.679499, -0.6044, 8.3616, 26.7572, -0.2593, 5.0169997, 29.679499, -0.6044, 6.6893, 26.7572, -0.2593, 6.6893, 26.7572, -0.2593, 5.0169997, 29.679499, -0.6044, 5.0169997, 29.679499, -0.6044, 6.6893, 26.7572, -0.2593, 3.3446, 29.679499, -0.6044, 5.0169997, 26.7572, -0.2593, 5.0169997, 26.7572, -0.2593, 3.3446, 29.679499, -0.6044, 3.3446, 29.679499, -0.6044, 5.0169997, 26.7572, -0.2593, 1.6723, 29.679499, -0.6044, 3.3446, 26.7572, -0.2593, 3.3446, 26.7572, -0.2593, 1.6723, 29.679499, -0.6044, 1.6723, 29.679499, -0.6044, 3.3446, 26.7572, -0.2593, 0, 29.679499, -0.6044, 1.6723, 26.7572, -0.2593, 1.6723, 26.7572, -0.2593, 0, 29.679499, -0.6044, 0, 29.679499, -0.6044, 1.6723, 26.7572, -0.2593, -1.6723, 29.679499, -0.6044, 0, 26.7572, -0.2593, 0, 26.7572, -0.2593, -1.6723, 29.679499, -0.6044, -1.6723, 29.679499, -0.6044, 0, 26.7572, -0.2593, -3.3446, 29.679499, -0.6044, -1.6723, 26.7572, -0.2593, -1.6723, 26.7572, -0.2593, -3.3446, 29.679499, -0.6044, -3.3446, 29.679499, -0.6044, -1.6723, 26.7572, -0.2593, -5.0169997, 29.679499, -0.6044, -3.3446, 26.7572, -0.2593, -3.3446, 26.7572, -0.2593, -5.0169997, 29.679499, -0.6044, -5.0169997, 29.679499, -0.6044, -3.3446, 26.7572, -0.2593, -6.6893, 29.679499, -0.6044, -5.0169997, 26.7572, -0.2593, -5.0169997, 26.7572, -0.2593, -6.6893, 29.679499, -0.6044, -6.6893, 29.679499, -0.6044, -5.0169997, 26.7572, -0.2593, -8.3616, 29.679499, -0.6044, -6.6893, 26.7572, -0.2593, -6.6893, 26.7572, -0.2593, -8.3616, 29.679499, -0.6044, -8.3616, 29.679499, -0.6044, -6.6893, 26.7572, -0.2593, -10.033899, 29.679499, -0.6044, -8.3616, 26.7572, -0.2593, -8.3616, 26.7572, -0.2593, -10.033899, 29.679499, -0.6044, -10.033899, 29.679499, -0.6044, -8.3616, 26.7572, -0.2593, -11.7063, 29.679499, -0.6044, -10.033899, 26.7572, -0.2593, -10.033899, 26.7572, -0.2593, -11.7063, 29.679499, -0.6044, -11.7063, 29.679499, -0.6044, -10.033899, 26.7572, -0.2593, -13.3786, 29.679499, -0.6044, -11.7063, 26.7572, -0.2593, -11.7063, 26.7572, -0.2593, -13.3786, 29.679499, -0.6044, -13.3786, 29.679499, -0.6044, -11.7063, 26.7572, -0.2593, -15.0508995, 29.679499, -0.6044, -13.3786, 26.7572, -0.2593, -13.3786, 26.7572, -0.2593, -15.0508995, 29.679499, -0.6044, -15.0508995, 29.679499, -0.6044, -13.3786, 26.7572, -0.2593, -16.7232, 29.679499, -0.6044, -15.0508995, 26.7572, -0.2593, -15.0508995, 26.7572, -0.2593, -16.7232, 29.679499, -0.6044, -16.7232, 29.679499, -0.6044, -15.0508995, 26.7572, -0.2593, -18.3955, 29.679499, -0.6044, -16.7232, 26.7572, -0.2593, -16.7232, 26.7572, -0.2593, -18.3955, 29.679499, -0.6044, -18.3955, 29.679499, -0.6044, -16.7232, 26.7572, -0.2593, -20.0679, 29.679499, -0.6044, -18.3955, 26.7572, -0.2593, -18.3955, 26.7572, -0.2593, -20.0679, 29.679499, -0.6044, -20.0679, 29.679499, -0.6044, -18.3955, 26.7572, -0.2593, -21.7402, 29.679499, -0.6044, -20.0679, 26.7572, -0.2593, -20.0679, 26.7572, -0.2593, -21.7402, 29.679499, -0.6044, -21.7402, 29.679499, -0.6044, -20.0679, 26.7572, -0.2593, -23.412498, 29.679499, -0.6044, -21.7402, 26.7572, -0.2593, -21.7402, 26.7572, -0.2593, -23.412498, 29.679499, -0.6044, -23.412498, 29.679499, -0.6044, -21.7402, 26.7572, -0.2593, -25.084799, 29.679499, -0.6044, -23.412498, 26.7572, -0.2593, -23.412498, 26.7572, -0.2593, -25.084799, 29.679499, -0.6044, -25.084799, 29.679499, -0.6044, -23.412498, 26.7572, -0.2593, -26.7572, 29.679499, -0.6044, -25.084799, 26.7572, -0.2593, -25.084799, 26.7572, -0.2593, -26.7572, 29.679499, -0.6044, -26.7572, 29.679499, -0.6044, -25.084799) @@ -65,6 +70,25 @@ size = Vector3(48, 5, 18) resource_local_to_scene = true size = Vector3(48, 5, 18) +[sub_resource type="Resource" id="ShorelineRibbonConfig_pond"] +script = ExtResource("15_shoreline_config") +terrain_source = NodePath("../Terrain/Collision/Shape") +water_height = 2.51 +generation_bounds = Rect2(-17.45, -4.08375, 16.1, 12.3675) +water_reference = Vector2(-9.4, 2.1) +water_is_inside = true +output_resource_path = "res://world/generated/shorelines/starter_pond_shoreline.tres" + +[sub_resource type="Resource" id="ShorelineRibbonConfig_ocean"] +script = ExtResource("15_shoreline_config") +terrain_source = NodePath("../Terrain/Collision/Shape") +water_type = 1 +water_height = -0.45 +generation_bounds = Rect2(-42, -50, 108, 100) +water_reference = Vector2(0, 0) +water_is_inside = false +output_resource_path = "res://world/generated/shorelines/starter_ocean_shoreline.tres" + [node name="StarterIslandRegion" type="Node3D" unique_id=1830415700] script = ExtResource("1_region") grass_material = ExtResource("9_grass") @@ -82,16 +106,27 @@ water_recovery_root = NodePath("WaterBodies") [node name="Shape" type="CollisionShape3D" parent="Terrain/Collision" unique_id=674742331] shape = SubResource("ConcavePolygonShape3D_4e4k5") +[node name="ShorelineRibbonBaker" type="Node" parent="."] +script = ExtResource("14_shoreline_baker") +water_bodies = Array[ExtResource("15_shoreline_config")]([SubResource("ShorelineRibbonConfig_pond"), SubResource("ShorelineRibbonConfig_ocean")]) + +[node name="ShorelineRibbons" type="Node3D" parent="."] + +[node name="Ocean" type="MeshInstance3D" parent="ShorelineRibbons"] +cast_shadow = 0 +material_override = ExtResource("18_shoreline_material") +mesh = ExtResource("17_ocean_shoreline") + [node name="WaterBodies" type="Node3D" parent="." unique_id=1417012172] [node name="Pond" type="Node3D" parent="WaterBodies" unique_id=995477450] position = Vector3(-9.4, 2.51, 2.1) script = ExtResource("10_water_body") surface_size = Vector2(16.1, 12.3675) -water_material = ExtResource("13_water") +water_material = ExtResource("19_fresh_water") [node name="VisualWater" type="MeshInstance3D" parent="WaterBodies/Pond" unique_id=1034265960] -material_override = ExtResource("13_water") +material_override = ExtResource("19_fresh_water") mesh = SubResource("PondWaterMesh") [node name="FishingRegion" type="Area3D" parent="WaterBodies/Pond" unique_id=1991633849] @@ -100,6 +135,7 @@ collision_mask = 0 monitoring = false script = ExtResource("3_water") location_tags = Array[StringName]([&"starter_pond"]) +water_type = 0 fish_pool = ExtResource("12_pond_pool") selection_priority = 1 surface_height_mode = 1 @@ -132,6 +168,7 @@ collision_mask = 0 monitoring = false script = ExtResource("3_water") location_tags = Array[StringName]([&"coast", &"ocean"]) +water_type = 1 fish_pool = ExtResource("4_pool") surface_height_mode = 1 diff --git a/world/water/shoreline_ribbon_baker.gd b/world/water/shoreline_ribbon_baker.gd new file mode 100644 index 0000000..32c75d6 --- /dev/null +++ b/world/water/shoreline_ribbon_baker.gd @@ -0,0 +1,138 @@ +@tool +class_name ShorelineRibbonBaker +extends Node + +@export var water_bodies: Array[ShorelineRibbonConfig] = [] +@export_enum("Off", "Raw", "Simplified", "Smoothed") var debug_path_stage := 0 +@export_tool_button("Rebuild Shoreline Ribbons") +var rebuild_shorelines: Callable = rebuild_all + + +func rebuild_all() -> Array[Dictionary]: + var results: Array[Dictionary] = [] + for configuration: ShorelineRibbonConfig in water_bodies: + var result := _rebuild(configuration) + if result.is_empty(): + return [] + results.append(result) + _update_debug_display(results) + return results + + +func _rebuild(configuration: ShorelineRibbonConfig) -> Dictionary: + if configuration == null: + push_error("Shoreline ribbon configuration is missing.") + return {} + if configuration.water_type != WaterType.Type.SALT_WATER: + return { + "skipped": true, + "water_type": configuration.water_type, + "output_path": configuration.output_resource_path, + } + var source := get_node_or_null(configuration.terrain_source) as Node3D + if source == null: + push_error( + "Shoreline terrain source was not found: %s" + % configuration.terrain_source + ) + return {} + if configuration.output_resource_path.is_empty(): + push_error("Shoreline output resource path is empty.") + return {} + var faces := _terrain_faces(source) + if faces.is_empty(): + push_error("Configured shoreline terrain source exposes no triangles.") + return {} + var result := ShorelineRibbonGenerator.generate( + faces, + configuration.water_height, + configuration.generation_bounds, + configuration.water_reference, + configuration.water_is_inside, + configuration.simplification_tolerance, + configuration.smoothing_iterations, + configuration.resample_spacing + ) + var output_directory := configuration.output_resource_path.get_base_dir() + DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path(output_directory)) + var save_error := ResourceSaver.save( + result["mesh"], configuration.output_resource_path + ) + if save_error != OK: + push_error( + "Failed to save %s: %s" + % [configuration.output_resource_path, error_string(save_error)] + ) + return {} + result["output_path"] = configuration.output_resource_path + result["water_height"] = configuration.water_height + result["water_type"] = configuration.water_type + result["skipped"] = false + return result + + +func _update_debug_display(results: Array[Dictionary]) -> void: + var previous := get_node_or_null("_ShorelinePathDebug") + if previous != null: + previous.queue_free() + if not Engine.is_editor_hint() or debug_path_stage == 0: + return + var debug_mesh := ImmediateMesh.new() + var debug_material := StandardMaterial3D.new() + debug_material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED + debug_material.albedo_color = Color(1.0, 0.35, 0.65, 1.0) + var stage_key: String = [ + "", "debug_raw_paths", "debug_simplified_paths", "debug_smoothed_paths" + ][debug_path_stage] + for result: Dictionary in results: + if result.get("skipped", false): + continue + var height := float(result["water_height"]) + 0.06 + for path_data: Dictionary in result[stage_key]: + var points: PackedVector2Array = path_data["points"] + if points.size() < 2: + continue + debug_mesh.surface_begin(Mesh.PRIMITIVE_LINE_STRIP, debug_material) + for point: Vector2 in points: + debug_mesh.surface_add_vertex(Vector3(point.x, height, point.y)) + if path_data["closed"]: + debug_mesh.surface_add_vertex(Vector3(points[0].x, height, points[0].y)) + debug_mesh.surface_end() + var debug_instance := MeshInstance3D.new() + debug_instance.name = "_ShorelinePathDebug" + debug_instance.mesh = debug_mesh + add_child(debug_instance) + + +func _terrain_faces(source: Node3D) -> PackedVector3Array: + var result := PackedVector3Array() + if source is CollisionShape3D: + var collision_shape := source as CollisionShape3D + var concave_shape := collision_shape.shape as ConcavePolygonShape3D + if concave_shape == null: + return result + for vertex: Vector3 in concave_shape.get_faces(): + result.append(_to_map_space(source, vertex)) + return result + if source is MeshInstance3D: + var mesh_instance := source as MeshInstance3D + if mesh_instance.mesh == null: + return result + for surface: int in mesh_instance.mesh.get_surface_count(): + var arrays := mesh_instance.mesh.surface_get_arrays(surface) + var vertices := arrays[Mesh.ARRAY_VERTEX] as PackedVector3Array + var indices := arrays[Mesh.ARRAY_INDEX] as PackedInt32Array + if indices.is_empty(): + for vertex: Vector3 in vertices: + result.append(_to_map_space(source, vertex)) + else: + for index: int in indices: + result.append(_to_map_space(source, vertices[index])) + return result + + +func _to_map_space(source: Node3D, vertex: Vector3) -> Vector3: + var map_root := get_parent() as Node3D + if map_root == null: + return source.to_global(vertex) + return map_root.to_local(source.to_global(vertex)) diff --git a/world/water/shoreline_ribbon_baker.gd.uid b/world/water/shoreline_ribbon_baker.gd.uid new file mode 100644 index 0000000..2991de4 --- /dev/null +++ b/world/water/shoreline_ribbon_baker.gd.uid @@ -0,0 +1 @@ +uid://bj704rvwwh77b diff --git a/world/water/shoreline_ribbon_config.gd b/world/water/shoreline_ribbon_config.gd new file mode 100644 index 0000000..ae58496 --- /dev/null +++ b/world/water/shoreline_ribbon_config.gd @@ -0,0 +1,14 @@ +class_name ShorelineRibbonConfig +extends Resource + +@export_node_path("CollisionShape3D", "MeshInstance3D") var terrain_source: NodePath +@export var water_type: WaterType.Type = WaterType.Type.FRESH_WATER +@export var water_height := 0.0 +@export var generation_bounds := Rect2() +@export var water_reference := Vector2.ZERO +@export var water_is_inside := true +@export_file("*.tres") var output_resource_path := "" +@export_group("Optional Smoothing Overrides") +@export var simplification_tolerance := -1.0 +@export_range(-1, 4, 1) var smoothing_iterations := -1 +@export var resample_spacing := -1.0 diff --git a/world/water/shoreline_ribbon_config.gd.uid b/world/water/shoreline_ribbon_config.gd.uid new file mode 100644 index 0000000..6a563e3 --- /dev/null +++ b/world/water/shoreline_ribbon_config.gd.uid @@ -0,0 +1 @@ +uid://c8hk3eojujyax diff --git a/world/water/shoreline_ribbon_generator.gd b/world/water/shoreline_ribbon_generator.gd new file mode 100644 index 0000000..5531ab8 --- /dev/null +++ b/world/water/shoreline_ribbon_generator.gd @@ -0,0 +1,443 @@ +class_name ShorelineRibbonGenerator +extends RefCounted + +const WATER_PLANE_EPSILON := 0.001 +const ENDPOINT_MERGE_TOLERANCE := 0.03 +const LOOP_CLOSURE_TOLERANCE := 0.06 +const MINIMUM_FRAGMENT_LENGTH := 2.0 +const SIMPLIFICATION_TOLERANCE := 0.20 +const SMOOTHING_ITERATIONS := 2 +const RESAMPLE_SPACING := 0.22 +const RIBBON_WIDTH := 0.85 +const LAND_INSET := 0.10 +const SURFACE_OFFSET := 0.018 + + +static func generate( + faces: PackedVector3Array, + water_height: float, + bounds: Rect2, + water_reference: Vector2, + water_is_inside: bool, + simplification_override := -1.0, + smoothing_iterations_override := -1, + resample_spacing_override := -1.0 +) -> Dictionary: + var simplification := ( + SIMPLIFICATION_TOLERANCE + if simplification_override < 0.0 + else simplification_override + ) + var smoothing_iterations := ( + SMOOTHING_ITERATIONS + if smoothing_iterations_override < 0 + else smoothing_iterations_override + ) + var resample_spacing := ( + RESAMPLE_SPACING + if resample_spacing_override < 0.0 + else resample_spacing_override + ) + var segments := _extract_segments(faces, water_height, bounds) + var raw_paths := _stitch_segments(segments) + var processed_paths: Array[Dictionary] = [] + var simplified_paths: Array[Dictionary] = [] + var raw_point_count := 0 + var simplified_point_count := 0 + var smoothed_point_count := 0 + for path_data: Dictionary in raw_paths: + var raw_points: PackedVector2Array = path_data["points"] + var closed: bool = path_data["closed"] + if _path_length(raw_points, closed) < MINIMUM_FRAGMENT_LENGTH: + continue + var simplified := _simplify(raw_points, closed, simplification) + simplified_paths.append({"points": simplified, "closed": closed}) + var smoothed := _chaikin(simplified, closed, smoothing_iterations) + var resampled := _resample(smoothed, closed, resample_spacing) + if resampled.size() < (3 if closed else 2): + continue + raw_point_count += raw_points.size() + simplified_point_count += simplified.size() + smoothed_point_count += resampled.size() + processed_paths.append({"points": resampled, "closed": closed}) + var mesh := _build_mesh( + processed_paths, + water_height, + water_reference, + water_is_inside + ) + return { + "mesh": mesh, + "segment_count": segments.size(), + "loop_count": processed_paths.size(), + "raw_point_count": raw_point_count, + "simplified_point_count": simplified_point_count, + "smoothed_point_count": smoothed_point_count, + "triangle_count": _mesh_triangle_count(mesh), + "debug_raw_paths": raw_paths, + "debug_simplified_paths": simplified_paths, + "debug_smoothed_paths": processed_paths, + } + + +static func _extract_segments( + faces: PackedVector3Array, + water_height: float, + bounds: Rect2 +) -> Array[PackedVector2Array]: + var segments: Array[PackedVector2Array] = [] + for index: int in range(0, faces.size(), 3): + var triangle: Array[Vector3] = [ + faces[index], faces[index + 1], faces[index + 2] + ] + var hits := PackedVector2Array() + for edge: int in 3: + var a := triangle[edge] + var b := triangle[(edge + 1) % 3] + var distance_a := a.y - water_height + var distance_b := b.y - water_height + if ( + absf(distance_a) <= WATER_PLANE_EPSILON + and absf(distance_b) <= WATER_PLANE_EPSILON + ): + continue + if not ( + distance_a * distance_b < 0.0 + or absf(distance_a) <= WATER_PLANE_EPSILON + or absf(distance_b) <= WATER_PLANE_EPSILON + ): + continue + var denominator := distance_a - distance_b + var amount := ( + 0.0 + if absf(denominator) <= WATER_PLANE_EPSILON + else distance_a / denominator + ) + var hit3 := a.lerp(b, clampf(amount, 0.0, 1.0)) + var hit := Vector2(hit3.x, hit3.z) + if bounds.has_point(hit) and not _contains_near(hits, hit): + hits.append(hit) + if ( + hits.size() == 2 + and hits[0].distance_to(hits[1]) > WATER_PLANE_EPSILON + ): + segments.append(hits) + return segments + + +static func _stitch_segments( + segments: Array[PackedVector2Array] +) -> Array[Dictionary]: + var point_by_key: Dictionary = {} + var adjacency: Dictionary = {} + var unused_edges: Dictionary = {} + for segment: PackedVector2Array in segments: + var a_key := _point_key(segment[0]) + var b_key := _point_key(segment[1]) + if a_key == b_key: + continue + point_by_key[a_key] = segment[0] + point_by_key[b_key] = segment[1] + if not adjacency.has(a_key): + adjacency[a_key] = [] + if not adjacency.has(b_key): + adjacency[b_key] = [] + var edge_key := _edge_key(a_key, b_key) + if unused_edges.has(edge_key): + continue + (adjacency[a_key] as Array).append(b_key) + (adjacency[b_key] as Array).append(a_key) + unused_edges[edge_key] = true + + var starts: Array = [] + for key: Vector2i in adjacency: + if (adjacency[key] as Array).size() != 2: + starts.append(key) + for key: Vector2i in adjacency: + if not starts.has(key): + starts.append(key) + + var paths: Array[Dictionary] = [] + for start: Vector2i in starts: + while _has_unused_neighbor(start, adjacency, unused_edges): + var walked := _walk_path(start, point_by_key, adjacency, unused_edges) + if (walked["points"] as PackedVector2Array).size() >= 2: + paths.append(walked) + return paths + + +static func _walk_path( + start: Vector2i, + point_by_key: Dictionary, + adjacency: Dictionary, + unused_edges: Dictionary +) -> Dictionary: + var points := PackedVector2Array() + var previous := Vector2i(2147483647, 2147483647) + var current := start + var closed := false + var guard := unused_edges.size() + 2 + while guard > 0: + guard -= 1 + points.append(point_by_key[current]) + var next_key := Vector2i(2147483647, 2147483647) + for candidate: Vector2i in adjacency[current]: + if candidate == previous and (adjacency[current] as Array).size() > 1: + continue + if unused_edges.get(_edge_key(current, candidate), false): + next_key = candidate + break + if next_key.x == 2147483647: + for candidate: Vector2i in adjacency[current]: + if unused_edges.get(_edge_key(current, candidate), false): + next_key = candidate + break + if next_key.x == 2147483647: + break + unused_edges[_edge_key(current, next_key)] = false + previous = current + current = next_key + if current == start: + closed = true + break + return {"points": points, "closed": closed} + + +static func _simplify( + points: PackedVector2Array, + closed: bool, + tolerance: float +) -> PackedVector2Array: + if points.size() <= (4 if closed else 2): + return points + if not closed: + return _rdp_open(points, tolerance) + var split_a := 0 + var split_b := 1 + var greatest_distance := 0.0 + for a: int in points.size(): + for b: int in range(a + 1, points.size()): + var distance := points[a].distance_squared_to(points[b]) + if distance > greatest_distance: + greatest_distance = distance + split_a = a + split_b = b + var first_arc := _closed_arc(points, split_a, split_b) + var second_arc := _closed_arc(points, split_b, split_a) + var first_result := _rdp_open(first_arc, tolerance) + var second_result := _rdp_open(second_arc, tolerance) + var result := PackedVector2Array() + for index: int in first_result.size() - 1: + result.append(first_result[index]) + for index: int in second_result.size() - 1: + result.append(second_result[index]) + return result if result.size() >= 4 else points + + +static func _rdp_open( + points: PackedVector2Array, + tolerance: float +) -> PackedVector2Array: + if points.size() <= 2: + return points + var greatest_distance := 0.0 + var split_index := 0 + for index: int in range(1, points.size() - 1): + var distance := _point_segment_distance( + points[index], points[0], points[points.size() - 1] + ) + if distance > greatest_distance: + greatest_distance = distance + split_index = index + if greatest_distance <= tolerance: + return PackedVector2Array([points[0], points[points.size() - 1]]) + var left := _rdp_open(points.slice(0, split_index + 1), tolerance) + var right := _rdp_open(points.slice(split_index), tolerance) + var result := PackedVector2Array() + for index: int in left.size() - 1: + result.append(left[index]) + result.append_array(right) + return result + + +static func _closed_arc( + points: PackedVector2Array, + start: int, + finish: int +) -> PackedVector2Array: + var result := PackedVector2Array() + var index := start + result.append(points[index]) + while index != finish: + index = (index + 1) % points.size() + result.append(points[index]) + return result + + +static func _chaikin( + points: PackedVector2Array, + closed: bool, + iterations: int +) -> PackedVector2Array: + var result := points + for _iteration: int in iterations: + var next := PackedVector2Array() + if not closed: + next.append(result[0]) + var edge_count := result.size() if closed else result.size() - 1 + for index: int in edge_count: + var a := result[index] + var b := result[(index + 1) % result.size()] + next.append(a.lerp(b, 0.25)) + next.append(a.lerp(b, 0.75)) + if not closed: + next.append(result[result.size() - 1]) + result = next + return result + + +static func _resample( + points: PackedVector2Array, + closed: bool, + spacing: float +) -> PackedVector2Array: + var total_length := _path_length(points, closed) + if total_length <= spacing: + return points + var count := maxi(roundi(total_length / spacing), 3 if closed else 2) + var actual_spacing := total_length / float(count if closed else count - 1) + var result := PackedVector2Array() + var edge := 0 + var edge_start_distance := 0.0 + var edge_length := points[0].distance_to(points[1]) + for sample: int in count: + var target := actual_spacing * sample + while target > edge_start_distance + edge_length and edge < points.size() - 1: + edge_start_distance += edge_length + edge += 1 + if edge >= points.size() - 1: + edge_length = points[edge].distance_to(points[0]) if closed else 0.0 + else: + edge_length = points[edge].distance_to(points[edge + 1]) + var next_index := (edge + 1) % points.size() + var amount := ( + 0.0 + if edge_length <= WATER_PLANE_EPSILON + else (target - edge_start_distance) / edge_length + ) + result.append(points[edge].lerp(points[next_index], clampf(amount, 0.0, 1.0))) + return result + + +static func _build_mesh( + paths: Array[Dictionary], + water_height: float, + water_reference: Vector2, + water_is_inside: bool +) -> ArrayMesh: + var vertices := PackedVector3Array() + var normals := PackedVector3Array() + var uvs := PackedVector2Array() + var indices := PackedInt32Array() + for path_data: Dictionary in paths: + var points: PackedVector2Array = path_data["points"] + var closed: bool = path_data["closed"] + var base_index := vertices.size() + var path_distance := 0.0 + for index: int in points.size(): + if index > 0: + path_distance += points[index - 1].distance_to(points[index]) + var previous := points[(index - 1 + points.size()) % points.size()] + var following := points[(index + 1) % points.size()] + if not closed: + previous = points[maxi(index - 1, 0)] + following = points[mini(index + 1, points.size() - 1)] + var tangent := previous.direction_to(following) + var water_normal := Vector2(-tangent.y, tangent.x) + var toward_reference := points[index].direction_to(water_reference) + if ( + (water_is_inside and water_normal.dot(toward_reference) < 0.0) + or (not water_is_inside and water_normal.dot(toward_reference) > 0.0) + ): + water_normal = -water_normal + var land_point := points[index] - water_normal * LAND_INSET + var water_point := points[index] + water_normal * (RIBBON_WIDTH - LAND_INSET) + vertices.append(Vector3(land_point.x, water_height + SURFACE_OFFSET, land_point.y)) + vertices.append(Vector3(water_point.x, water_height + SURFACE_OFFSET, water_point.y)) + normals.append(Vector3.UP) + normals.append(Vector3.UP) + uvs.append(Vector2(path_distance, 0.0)) + uvs.append(Vector2(path_distance, 1.0)) + var edge_count := points.size() if closed else points.size() - 1 + for index: int in edge_count: + var next := (index + 1) % points.size() + var a := base_index + index * 2 + var b := a + 1 + var c := base_index + next * 2 + var d := c + 1 + indices.append_array(PackedInt32Array([a, c, b, b, c, d])) + var arrays := [] + arrays.resize(Mesh.ARRAY_MAX) + arrays[Mesh.ARRAY_VERTEX] = vertices + arrays[Mesh.ARRAY_NORMAL] = normals + arrays[Mesh.ARRAY_TEX_UV] = uvs + arrays[Mesh.ARRAY_INDEX] = indices + var mesh := ArrayMesh.new() + if not vertices.is_empty(): + mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) + return mesh + + +static func _point_key(point: Vector2) -> Vector2i: + return Vector2i( + roundi(point.x / ENDPOINT_MERGE_TOLERANCE), + roundi(point.y / ENDPOINT_MERGE_TOLERANCE) + ) + + +static func _edge_key(a: Vector2i, b: Vector2i) -> String: + if a.x < b.x or (a.x == b.x and a.y <= b.y): + return "%d:%d|%d:%d" % [a.x, a.y, b.x, b.y] + return "%d:%d|%d:%d" % [b.x, b.y, a.x, a.y] + + +static func _has_unused_neighbor( + key: Vector2i, + adjacency: Dictionary, + unused_edges: Dictionary +) -> bool: + for neighbor: Vector2i in adjacency[key]: + if unused_edges.get(_edge_key(key, neighbor), false): + return true + return false + + +static func _contains_near(points: PackedVector2Array, point: Vector2) -> bool: + for existing: Vector2 in points: + if existing.distance_to(point) <= WATER_PLANE_EPSILON: + return true + return false + + +static func _point_segment_distance(point: Vector2, a: Vector2, b: Vector2) -> float: + var segment := b - a + if segment.length_squared() <= WATER_PLANE_EPSILON: + return point.distance_to(a) + var amount := clampf((point - a).dot(segment) / segment.length_squared(), 0.0, 1.0) + return point.distance_to(a + segment * amount) + + +static func _path_length(points: PackedVector2Array, closed: bool) -> float: + var result := 0.0 + for index: int in points.size() - 1: + result += points[index].distance_to(points[index + 1]) + if closed and points.size() > 2: + result += points[points.size() - 1].distance_to(points[0]) + return result + + +static func _mesh_triangle_count(mesh: ArrayMesh) -> int: + if mesh.get_surface_count() == 0: + return 0 + var arrays := mesh.surface_get_arrays(0) + return (arrays[Mesh.ARRAY_INDEX] as PackedInt32Array).size() / 3 diff --git a/world/water/shoreline_ribbon_generator.gd.uid b/world/water/shoreline_ribbon_generator.gd.uid new file mode 100644 index 0000000..2edffe8 --- /dev/null +++ b/world/water/shoreline_ribbon_generator.gd.uid @@ -0,0 +1 @@ +uid://dhp7ctspabll diff --git a/world/water/water_type.gd b/world/water/water_type.gd new file mode 100644 index 0000000..6f8587f --- /dev/null +++ b/world/water/water_type.gd @@ -0,0 +1,26 @@ +class_name WaterType +extends RefCounted + +enum Type { + FRESH_WATER, + SALT_WATER, + OTHER, +} + +const FRESH_WATER_MASK := 1 << Type.FRESH_WATER +const SALT_WATER_MASK := 1 << Type.SALT_WATER +const ALL_FISHABLE_MASK := FRESH_WATER_MASK | SALT_WATER_MASK + + +static func mask_for(type: Type) -> int: + return 1 << int(type) if type != Type.OTHER else 0 + + +static func label(type: Type) -> String: + match type: + Type.FRESH_WATER: + return "Fresh Water" + Type.SALT_WATER: + return "Salt Water" + _: + return "Other" diff --git a/world/water/water_type.gd.uid b/world/water/water_type.gd.uid new file mode 100644 index 0000000..ba6b0e4 --- /dev/null +++ b/world/water/water_type.gd.uid @@ -0,0 +1 @@ +uid://nao2xukkyoc8