From f72ba80bd3b38537556ffa2669a48aaf7e991ce7 Mon Sep 17 00:00:00 2001 From: sara Date: Mon, 10 Mar 2025 22:57:05 +0000 Subject: [PATCH 01/14] First version of Solar System --- include/generator/figures/SolarSystem.hpp | 35 ++++++ res/models/solarSystem.3d | 0 res/scenes/scene_solarSystem.xml | 109 +++++++++++++++++ src/generator/figures/SolarSystem.cpp | 137 ++++++++++++++++++++++ src/generator/main.cpp | 12 +- 5 files changed, 292 insertions(+), 1 deletion(-) create mode 100644 include/generator/figures/SolarSystem.hpp create mode 100644 res/models/solarSystem.3d create mode 100644 res/scenes/scene_solarSystem.xml create mode 100644 src/generator/figures/SolarSystem.cpp diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp new file mode 100644 index 00000000..9bffd6d9 --- /dev/null +++ b/include/generator/figures/SolarSystem.hpp @@ -0,0 +1,35 @@ +/// Copyright 2025 Ana Oliveira, Humberto Gomes, Mariana Rocha, Sara Lopes +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. + +#pragma once + +#include +#include + +namespace generator::figures { + +class SolarSystem { +private: + tinyxml2::XMLDocument doc; + tinyxml2::XMLElement* addPlanet(tinyxml2::XMLElement *parent, + float x, float y, float z, float size); + + void addSaturnRings(tinyxml2::XMLElement *parent); + +public: + SolarSystem(float scale); + void writeToFile(const std::string &filename); +}; + +} diff --git a/res/models/solarSystem.3d b/res/models/solarSystem.3d new file mode 100644 index 00000000..e69de29b diff --git a/res/scenes/scene_solarSystem.xml b/res/scenes/scene_solarSystem.xml new file mode 100644 index 00000000..c04dd476 --- /dev/null +++ b/res/scenes/scene_solarSystem.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp new file mode 100644 index 00000000..080eebf6 --- /dev/null +++ b/src/generator/figures/SolarSystem.cpp @@ -0,0 +1,137 @@ +/// Copyright 2025 Ana Oliveira, Humberto Gomes, Mariana Rocha, Sara Lopes +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. + +#include "generator/figures/SolarSystem.hpp" + +namespace generator::figures { + +SolarSystem::SolarSystem(float scale) { + tinyxml2::XMLElement *world = doc.NewElement("world"); + doc.InsertFirstChild(world); + + tinyxml2::XMLElement *window = doc.NewElement("window"); + window->SetAttribute("width", 512); + window->SetAttribute("height", 512); + world->InsertEndChild(window); + + tinyxml2::XMLElement *camera = doc.NewElement("camera"); + camera->SetAttribute("type", "orbital"); + world->InsertEndChild(camera); + + tinyxml2::XMLElement *position = doc.NewElement("position"); + position->SetAttribute("x", 20); + position->SetAttribute("y", 20); + position->SetAttribute("z", 20); + camera->InsertEndChild(position); + + tinyxml2::XMLElement *lookAt = doc.NewElement("lookAt"); + lookAt->SetAttribute("x", 0); + lookAt->SetAttribute("y", 0); + lookAt->SetAttribute("z", 0); + camera->InsertEndChild(lookAt); + + tinyxml2::XMLElement *up = doc.NewElement("up"); + up->SetAttribute("x", 0); + up->SetAttribute("y", 1); + up->SetAttribute("z", 0); + camera->InsertEndChild(up); + + tinyxml2::XMLElement *projection = doc.NewElement("projection"); + projection->SetAttribute("fov", 60); + projection->SetAttribute("near", 1); + projection->SetAttribute("far", 1000); + camera->InsertEndChild(projection); + + tinyxml2::XMLElement *solarSystem = doc.NewElement("group"); + world->InsertEndChild(solarSystem); + + addPlanet(solarSystem, 0, 0, 0, 5 * scale); + + addPlanet(solarSystem, 8 * scale, 0, 0, 0.5 * scale); // Mercúrio + addPlanet(solarSystem, 12 * scale, 0, 0, 0.9 * scale); // Vénus + + tinyxml2::XMLElement *earth = addPlanet(solarSystem, 16 * scale, 0, 0, 1 * scale); + addPlanet(earth, 1.5 * scale, 0, 0, 0.3 * scale); // Lua + + addPlanet(solarSystem, 20 * scale, 0, 0, 0.8 * scale); // Marte + addPlanet(solarSystem, 30 * scale, 0, 0, 3 * scale); // Júpiter + + // Criar Saturno e adicionar anéis + tinyxml2::XMLElement *saturn = addPlanet(solarSystem, 40 * scale, 0, 0, 2.7 * scale); + addSaturnRings(saturn); + + addPlanet(solarSystem, 50 * scale, 0, 0, 2 * scale); // Úrano + addPlanet(solarSystem, 60 * scale, 0, 0, 1.9 * scale); // Neptuno + + writeToFile("scene_solarSystem.xml"); +} + +void SolarSystem::writeToFile(const std::string &filename) { + std::string filePath = "res/scenes/" + filename; + doc.SaveFile(filePath.c_str()); +} + +tinyxml2::XMLElement* SolarSystem::addPlanet(tinyxml2::XMLElement *parent, + float x, float y, float z, float size) { + tinyxml2::XMLElement *group = doc.NewElement("group"); + parent->InsertEndChild(group); + + tinyxml2::XMLElement *transform = doc.NewElement("transform"); + group->InsertEndChild(transform); + + tinyxml2::XMLElement *translate = doc.NewElement("translate"); + translate->SetAttribute("x", x); + translate->SetAttribute("y", y); + translate->SetAttribute("z", z); + transform->InsertEndChild(translate); + + tinyxml2::XMLElement *scale = doc.NewElement("scale"); + scale->SetAttribute("x", size); + scale->SetAttribute("y", size); + scale->SetAttribute("z", size); + transform->InsertEndChild(scale); + + tinyxml2::XMLElement *models = doc.NewElement("models"); + group->InsertEndChild(models); + + tinyxml2::XMLElement *model = doc.NewElement("model"); + model->SetAttribute("file", "../models/sphere.3d"); + models->InsertEndChild(model); + + return group; +} + +void SolarSystem::addSaturnRings(tinyxml2::XMLElement *parent) { + tinyxml2::XMLElement *group = doc.NewElement("group"); + parent->InsertEndChild(group); + + tinyxml2::XMLElement *transform = doc.NewElement("transform"); + group->InsertEndChild(transform); + + tinyxml2::XMLElement *scale = doc.NewElement("scale"); + scale->SetAttribute("x", 0.15); + scale->SetAttribute("y", 0.1); + scale->SetAttribute("z", 0.15); + transform->InsertEndChild(scale); + + tinyxml2::XMLElement *models = doc.NewElement("models"); + group->InsertEndChild(models); + + tinyxml2::XMLElement *model = doc.NewElement("model"); + model->SetAttribute("file", "../models/torus.3d"); + models->InsertEndChild(model); +} + + +} diff --git a/src/generator/main.cpp b/src/generator/main.cpp index c6639f54..1e1971a1 100644 --- a/src/generator/main.cpp +++ b/src/generator/main.cpp @@ -23,6 +23,7 @@ #include "generator/figures/Plane.hpp" #include "generator/figures/Sphere.hpp" #include "generator/figures/Torus.hpp" +#include "generator/figures/SolarSystem.hpp" #include "utils/WavefrontOBJ.hpp" namespace generator { @@ -42,10 +43,12 @@ void printUsage(const std::string &programName) { << " torus " << std::endl; std::cerr << " " << programName << " kleinBottle " << std::endl; + std::cerr << " " << programName + << " solarSystem " << std::endl; } double stringToDouble(const std::string &str) { - size_t charactersParsed; + size_t charactersParsed; double ret = std::stod(str, &charactersParsed); if (charactersParsed != str.length()) throw std::invalid_argument("str is not a double"); @@ -137,6 +140,13 @@ int main(int argc, char **argv) { figures::KleinBottle kleinbottle(radius, slices, stacks); kleinbottle.writeToFile(file); + } else if (args.at(1) == "solarSystem") { + validateArgumentCount(argc, 4); + double scale = stringToDouble(args.at(2)); + const std::string &file = args.at(3); + + figures::SolarSystem solarSystem(scale); + solarSystem.writeToFile(file); } else { printUsage(args[0]); } From 0f873f8b9232f72881128189e4ea327993b03fa5 Mon Sep 17 00:00:00 2001 From: sara Date: Mon, 10 Mar 2025 23:00:06 +0000 Subject: [PATCH 02/14] Format fix ;) --- include/generator/figures/SolarSystem.hpp | 8 ++++---- src/generator/figures/SolarSystem.cpp | 23 +++++++++++------------ src/generator/main.cpp | 4 ++-- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp index 9bffd6d9..95fee6bc 100644 --- a/include/generator/figures/SolarSystem.hpp +++ b/include/generator/figures/SolarSystem.hpp @@ -14,16 +14,16 @@ #pragma once -#include #include +#include namespace generator::figures { class SolarSystem { private: - tinyxml2::XMLDocument doc; - tinyxml2::XMLElement* addPlanet(tinyxml2::XMLElement *parent, - float x, float y, float z, float size); + tinyxml2::XMLDocument doc; + tinyxml2::XMLElement * + addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size); void addSaturnRings(tinyxml2::XMLElement *parent); diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index 080eebf6..5bc86dfc 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -58,20 +58,20 @@ SolarSystem::SolarSystem(float scale) { addPlanet(solarSystem, 0, 0, 0, 5 * scale); - addPlanet(solarSystem, 8 * scale, 0, 0, 0.5 * scale); // Mercúrio + addPlanet(solarSystem, 8 * scale, 0, 0, 0.5 * scale); // Mercúrio addPlanet(solarSystem, 12 * scale, 0, 0, 0.9 * scale); // Vénus - + tinyxml2::XMLElement *earth = addPlanet(solarSystem, 16 * scale, 0, 0, 1 * scale); addPlanet(earth, 1.5 * scale, 0, 0, 0.3 * scale); // Lua - addPlanet(solarSystem, 20 * scale, 0, 0, 0.8 * scale); // Marte - addPlanet(solarSystem, 30 * scale, 0, 0, 3 * scale); // Júpiter - + addPlanet(solarSystem, 20 * scale, 0, 0, 0.8 * scale); // Marte + addPlanet(solarSystem, 30 * scale, 0, 0, 3 * scale); // Júpiter + // Criar Saturno e adicionar anéis tinyxml2::XMLElement *saturn = addPlanet(solarSystem, 40 * scale, 0, 0, 2.7 * scale); - addSaturnRings(saturn); + addSaturnRings(saturn); - addPlanet(solarSystem, 50 * scale, 0, 0, 2 * scale); // Úrano + addPlanet(solarSystem, 50 * scale, 0, 0, 2 * scale); // Úrano addPlanet(solarSystem, 60 * scale, 0, 0, 1.9 * scale); // Neptuno writeToFile("scene_solarSystem.xml"); @@ -82,8 +82,8 @@ void SolarSystem::writeToFile(const std::string &filename) { doc.SaveFile(filePath.c_str()); } -tinyxml2::XMLElement* SolarSystem::addPlanet(tinyxml2::XMLElement *parent, - float x, float y, float z, float size) { +tinyxml2::XMLElement * + SolarSystem::addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { tinyxml2::XMLElement *group = doc.NewElement("group"); parent->InsertEndChild(group); @@ -120,8 +120,8 @@ void SolarSystem::addSaturnRings(tinyxml2::XMLElement *parent) { group->InsertEndChild(transform); tinyxml2::XMLElement *scale = doc.NewElement("scale"); - scale->SetAttribute("x", 0.15); - scale->SetAttribute("y", 0.1); + scale->SetAttribute("x", 0.15); + scale->SetAttribute("y", 0.1); scale->SetAttribute("z", 0.15); transform->InsertEndChild(scale); @@ -133,5 +133,4 @@ void SolarSystem::addSaturnRings(tinyxml2::XMLElement *parent) { models->InsertEndChild(model); } - } diff --git a/src/generator/main.cpp b/src/generator/main.cpp index 1e1971a1..2a025731 100644 --- a/src/generator/main.cpp +++ b/src/generator/main.cpp @@ -21,9 +21,9 @@ #include "generator/figures/Cylinder.hpp" #include "generator/figures/KleinBottle.hpp" #include "generator/figures/Plane.hpp" +#include "generator/figures/SolarSystem.hpp" #include "generator/figures/Sphere.hpp" #include "generator/figures/Torus.hpp" -#include "generator/figures/SolarSystem.hpp" #include "utils/WavefrontOBJ.hpp" namespace generator { @@ -48,7 +48,7 @@ void printUsage(const std::string &programName) { } double stringToDouble(const std::string &str) { - size_t charactersParsed; + size_t charactersParsed; double ret = std::stod(str, &charactersParsed); if (charactersParsed != str.length()) throw std::invalid_argument("str is not a double"); From e19211a354ebbaa98e7e7fe24bb0aec2330f9088 Mon Sep 17 00:00:00 2001 From: sara Date: Tue, 11 Mar 2025 23:16:42 +0000 Subject: [PATCH 03/14] Improvements in code organization and implementation of asteroid belt --- include/generator/figures/SolarSystem.hpp | 12 +- res/models/solarSystem.3d | 931 ++ res/scenes/scene_solarSystem.xml | 14568 +++++++++++++++++++- src/engine/camera/FreeCamera.cpp | 2 +- src/generator/figures/SolarSystem.cpp | 164 +- 5 files changed, 15593 insertions(+), 84 deletions(-) diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp index 95fee6bc..a31f555c 100644 --- a/include/generator/figures/SolarSystem.hpp +++ b/include/generator/figures/SolarSystem.hpp @@ -16,16 +16,22 @@ #include #include +#include namespace generator::figures { class SolarSystem { private: tinyxml2::XMLDocument doc; - tinyxml2::XMLElement * - addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size); - void addSaturnRings(tinyxml2::XMLElement *parent); + void createWorld(); + void configureCamera(); + void generateSolarSystem(float scale); + + tinyxml2::XMLElement* addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size); + void addSatellite(tinyxml2::XMLElement *parent, float x, float y, float z, float size); + void addRing(tinyxml2::XMLElement *parent, float scaleX, float scaleY, float scaleZ, float angle); + void addAsteroidBelt(tinyxml2::XMLElement *parent, float minDist, float maxDist, int numAsteroids); public: SolarSystem(float scale); diff --git a/res/models/solarSystem.3d b/res/models/solarSystem.3d index e69de29b..a00626a2 100644 --- a/res/models/solarSystem.3d +++ b/res/models/solarSystem.3d @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/scenes/scene_solarSystem.xml b/res/scenes/scene_solarSystem.xml index c04dd476..88435f79 100644 --- a/res/scenes/scene_solarSystem.xml +++ b/res/scenes/scene_solarSystem.xml @@ -1,16 +1,16 @@ - - - + + + - + - + @@ -18,8 +18,8 @@ - - + + @@ -27,8 +27,8 @@ - - + + @@ -36,16 +36,16 @@ - - + + - - + + @@ -54,56 +54,14578 @@ - - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/engine/camera/FreeCamera.cpp b/src/engine/camera/FreeCamera.cpp index 577d880b..b7525492 100644 --- a/src/engine/camera/FreeCamera.cpp +++ b/src/engine/camera/FreeCamera.cpp @@ -44,7 +44,7 @@ void FreeCamera::updateCameraVectors() { } void FreeCamera::move(MovementDirection direction, float deltaTime) { - const float translationSpeed = 5.0f * deltaTime; + const float translationSpeed = 100.0f * deltaTime; const float rotationSpeed = 1.5f * deltaTime; glm::vec3 horizontalFront = glm::normalize(glm::vec3(front.x, front.y, front.z)); diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index 5bc86dfc..361ddba2 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -17,73 +17,91 @@ namespace generator::figures { SolarSystem::SolarSystem(float scale) { + createWorld(); + configureCamera(); + generateSolarSystem(scale); + writeToFile("scene_solarSystem.xml"); +} + +void SolarSystem::createWorld() { tinyxml2::XMLElement *world = doc.NewElement("world"); doc.InsertFirstChild(world); - + tinyxml2::XMLElement *window = doc.NewElement("window"); - window->SetAttribute("width", 512); - window->SetAttribute("height", 512); + window->SetAttribute("width", 1024); + window->SetAttribute("height", 768); world->InsertEndChild(window); +} +void SolarSystem::configureCamera() { tinyxml2::XMLElement *camera = doc.NewElement("camera"); - camera->SetAttribute("type", "orbital"); - world->InsertEndChild(camera); - - tinyxml2::XMLElement *position = doc.NewElement("position"); - position->SetAttribute("x", 20); - position->SetAttribute("y", 20); - position->SetAttribute("z", 20); - camera->InsertEndChild(position); - - tinyxml2::XMLElement *lookAt = doc.NewElement("lookAt"); - lookAt->SetAttribute("x", 0); - lookAt->SetAttribute("y", 0); - lookAt->SetAttribute("z", 0); - camera->InsertEndChild(lookAt); - - tinyxml2::XMLElement *up = doc.NewElement("up"); - up->SetAttribute("x", 0); - up->SetAttribute("y", 1); - up->SetAttribute("z", 0); - camera->InsertEndChild(up); + camera->SetAttribute("type", "free"); + doc.FirstChildElement("world")->InsertEndChild(camera); + + struct { + const char* name; + float x, y, z; + } cameraSettings[] = { + {"position", 120, 90, 150}, + {"lookAt", 0, 0, 0}, + {"up", 0, 1, 0} + }; + + for (const auto& setting : cameraSettings) { + tinyxml2::XMLElement *element = doc.NewElement(setting.name); + element->SetAttribute("x", setting.x); + element->SetAttribute("y", setting.y); + element->SetAttribute("z", setting.z); + camera->InsertEndChild(element); + } tinyxml2::XMLElement *projection = doc.NewElement("projection"); - projection->SetAttribute("fov", 60); + projection->SetAttribute("fov", 75); projection->SetAttribute("near", 1); - projection->SetAttribute("far", 1000); + projection->SetAttribute("far", 6000); camera->InsertEndChild(projection); +} +void SolarSystem::generateSolarSystem(float scale) { tinyxml2::XMLElement *solarSystem = doc.NewElement("group"); - world->InsertEndChild(solarSystem); + doc.FirstChildElement("world")->InsertEndChild(solarSystem); - addPlanet(solarSystem, 0, 0, 0, 5 * scale); + addPlanet(solarSystem, 0, 0, 0, 50 * scale); // Sun + addPlanet(solarSystem, 150 * scale, 6, -15, 0.4 * scale); // Mercury + addPlanet(solarSystem, 280 * scale, -3, 9, 0.5 * scale); // Venus - addPlanet(solarSystem, 8 * scale, 0, 0, 0.5 * scale); // Mercúrio - addPlanet(solarSystem, 12 * scale, 0, 0, 0.9 * scale); // Vénus + tinyxml2::XMLElement *earth = addPlanet(solarSystem, 400 * scale, 0, -18, 0.6 * scale); // Earth + addSatellite(earth, 2 * scale, 1.2 * scale, 1.5, 0.15 * scale); // Moon - tinyxml2::XMLElement *earth = addPlanet(solarSystem, 16 * scale, 0, 0, 1 * scale); - addPlanet(earth, 1.5 * scale, 0, 0, 0.3 * scale); // Lua + tinyxml2::XMLElement *mars = addPlanet(solarSystem, 600 * scale, 3, 24, 0.5 * scale); // Mars + addSatellite(mars, 1.5 * scale, 0.6 * scale, 0.8, 0.1 * scale); // Phobos + addSatellite(mars, -1.2 * scale, -0.5 * scale, 0.5, 0.08 * scale); // Deimos - addPlanet(solarSystem, 20 * scale, 0, 0, 0.8 * scale); // Marte - addPlanet(solarSystem, 30 * scale, 0, 0, 3 * scale); // Júpiter + tinyxml2::XMLElement *jupiter = addPlanet(solarSystem, 1200 * scale, -6, -36, 5 * scale); // Jupiter + addSatellite(jupiter, 20 * scale, 8 * scale, 10, 0.6 * scale); // Ganymede + addSatellite(jupiter, -18 * scale, 6 * scale, -12, 0.5 * scale); // Callisto + addSatellite(jupiter, 16 * scale, -4 * scale, 8, 0.4 * scale); // Io + addSatellite(jupiter, -14 * scale, 3 * scale, -6, 0.3 * scale); // Europa - // Criar Saturno e adicionar anéis - tinyxml2::XMLElement *saturn = addPlanet(solarSystem, 40 * scale, 0, 0, 2.7 * scale); - addSaturnRings(saturn); + tinyxml2::XMLElement *saturn = addPlanet(solarSystem, 1800 * scale, 6, 30, 4.5 * scale); // Saturn + addRing(saturn, 1.2, 0.1, 1.2, 15); // Saturn’s ring inclination + addSatellite(saturn, 30 * scale, 12 * scale, 15, 0.4 * scale); // Titan + addSatellite(saturn, -24 * scale, 9 * scale, -18, 0.3 * scale); // Enceladus - addPlanet(solarSystem, 50 * scale, 0, 0, 2 * scale); // Úrano - addPlanet(solarSystem, 60 * scale, 0, 0, 1.9 * scale); // Neptuno + tinyxml2::XMLElement *uranus = addPlanet(solarSystem, 2300 * scale, -9, -45, 2 * scale); // Uranus + addRing(uranus, 1.1, 0.1, 1.1, 90); // Uranus’ vertical ring + addSatellite(uranus, 14 * scale, 5 * scale, 10, 0.2 * scale); // Miranda + addSatellite(uranus, -12 * scale, 4 * scale, -8, 0.15 * scale); // Ariel - writeToFile("scene_solarSystem.xml"); -} + tinyxml2::XMLElement *neptune = addPlanet(solarSystem, 2800 * scale, 12, 60, 2 * scale); // Neptune + addRing(neptune, 1.05, 0.06, 1.05, 30); // Neptune’s ring inclination + addSatellite(neptune, 16 * scale, 6 * scale, 12, 0.3 * scale); // Triton -void SolarSystem::writeToFile(const std::string &filename) { - std::string filePath = "res/scenes/" + filename; - doc.SaveFile(filePath.c_str()); + addAsteroidBelt(solarSystem, 650 * scale, 1000 * scale, 400); // Asteroid Belt + addAsteroidBelt(solarSystem, 3100 * scale, 4000 * scale, 1200); // Kuiper Belt } -tinyxml2::XMLElement * - SolarSystem::addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { +tinyxml2::XMLElement* SolarSystem::addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { tinyxml2::XMLElement *group = doc.NewElement("group"); parent->InsertEndChild(group); @@ -96,11 +114,11 @@ tinyxml2::XMLElement * translate->SetAttribute("z", z); transform->InsertEndChild(translate); - tinyxml2::XMLElement *scale = doc.NewElement("scale"); - scale->SetAttribute("x", size); - scale->SetAttribute("y", size); - scale->SetAttribute("z", size); - transform->InsertEndChild(scale); + tinyxml2::XMLElement *scaleElem = doc.NewElement("scale"); + scaleElem->SetAttribute("x", size); + scaleElem->SetAttribute("y", size); + scaleElem->SetAttribute("z", size); + transform->InsertEndChild(scaleElem); tinyxml2::XMLElement *models = doc.NewElement("models"); group->InsertEndChild(models); @@ -112,25 +130,57 @@ tinyxml2::XMLElement * return group; } -void SolarSystem::addSaturnRings(tinyxml2::XMLElement *parent) { +void SolarSystem::addSatellite(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { + addPlanet(parent, x, y, z, size); +} + +void SolarSystem::addRing(tinyxml2::XMLElement *parent, float scaleX, float scaleY, float scaleZ, float angle) { tinyxml2::XMLElement *group = doc.NewElement("group"); parent->InsertEndChild(group); tinyxml2::XMLElement *transform = doc.NewElement("transform"); group->InsertEndChild(transform); - tinyxml2::XMLElement *scale = doc.NewElement("scale"); - scale->SetAttribute("x", 0.15); - scale->SetAttribute("y", 0.1); - scale->SetAttribute("z", 0.15); - transform->InsertEndChild(scale); + tinyxml2::XMLElement *rotate = doc.NewElement("rotate"); + rotate->SetAttribute("angle", angle); + rotate->SetAttribute("x", 1); + rotate->SetAttribute("y", 0); + rotate->SetAttribute("z", 0); + transform->InsertEndChild(rotate); + + tinyxml2::XMLElement *scaleElem = doc.NewElement("scale"); + scaleElem->SetAttribute("x", scaleX); + scaleElem->SetAttribute("y", scaleY); + scaleElem->SetAttribute("z", scaleZ); + transform->InsertEndChild(scaleElem); tinyxml2::XMLElement *models = doc.NewElement("models"); group->InsertEndChild(models); - + tinyxml2::XMLElement *model = doc.NewElement("model"); model->SetAttribute("file", "../models/torus.3d"); models->InsertEndChild(model); } +void SolarSystem::addAsteroidBelt(tinyxml2::XMLElement *parent, float minDist, float maxDist, int numAsteroids) { + tinyxml2::XMLElement *asteroidBelt = doc.NewElement("group"); + parent->InsertEndChild(asteroidBelt); + + for (int i = 0; i < numAsteroids; i++) { + float distance = minDist + static_cast(rand()) / (RAND_MAX / (maxDist - minDist)); + float angle = static_cast(rand()) / (RAND_MAX / 360.0f); + float x = distance * cos(angle); + float z = distance * sin(angle); + float y = static_cast(rand()) / (RAND_MAX / 10.0f) - 5.0f; + float size = 0.2f + static_cast(rand()) / (RAND_MAX / 0.3f); + + addPlanet(asteroidBelt, x, y, z, size); + } +} + +void SolarSystem::writeToFile(const std::string &filename) { + std::string filePath = "res/scenes/" + filename; + doc.SaveFile(filePath.c_str()); +} + } From b113478c014b18118863c896e47ebea795ea4b9d Mon Sep 17 00:00:00 2001 From: sara Date: Tue, 11 Mar 2025 23:18:14 +0000 Subject: [PATCH 04/14] Format fix :D --- include/generator/figures/SolarSystem.hpp | 16 ++++++--- src/generator/figures/SolarSystem.cpp | 43 +++++++++++++++-------- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp index a31f555c..a2921720 100644 --- a/include/generator/figures/SolarSystem.hpp +++ b/include/generator/figures/SolarSystem.hpp @@ -14,9 +14,9 @@ #pragma once +#include #include #include -#include namespace generator::figures { @@ -28,10 +28,18 @@ class SolarSystem { void configureCamera(); void generateSolarSystem(float scale); - tinyxml2::XMLElement* addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size); + tinyxml2::XMLElement * + addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size); void addSatellite(tinyxml2::XMLElement *parent, float x, float y, float z, float size); - void addRing(tinyxml2::XMLElement *parent, float scaleX, float scaleY, float scaleZ, float angle); - void addAsteroidBelt(tinyxml2::XMLElement *parent, float minDist, float maxDist, int numAsteroids); + void addRing(tinyxml2::XMLElement *parent, + float scaleX, + float scaleY, + float scaleZ, + float angle); + void addAsteroidBelt(tinyxml2::XMLElement *parent, + float minDist, + float maxDist, + int numAsteroids); public: SolarSystem(float scale); diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index 361ddba2..36093de4 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -26,7 +26,7 @@ SolarSystem::SolarSystem(float scale) { void SolarSystem::createWorld() { tinyxml2::XMLElement *world = doc.NewElement("world"); doc.InsertFirstChild(world); - + tinyxml2::XMLElement *window = doc.NewElement("window"); window->SetAttribute("width", 1024); window->SetAttribute("height", 768); @@ -39,15 +39,15 @@ void SolarSystem::configureCamera() { doc.FirstChildElement("world")->InsertEndChild(camera); struct { - const char* name; + const char *name; float x, y, z; } cameraSettings[] = { - {"position", 120, 90, 150}, - {"lookAt", 0, 0, 0}, - {"up", 0, 1, 0} + { "position", 120, 90, 150 }, + { "lookAt", 0, 0, 0 }, + { "up", 0, 1, 0 } }; - for (const auto& setting : cameraSettings) { + for (const auto &setting : cameraSettings) { tinyxml2::XMLElement *element = doc.NewElement(setting.name); element->SetAttribute("x", setting.x); element->SetAttribute("y", setting.y); @@ -77,23 +77,27 @@ void SolarSystem::generateSolarSystem(float scale) { addSatellite(mars, 1.5 * scale, 0.6 * scale, 0.8, 0.1 * scale); // Phobos addSatellite(mars, -1.2 * scale, -0.5 * scale, 0.5, 0.08 * scale); // Deimos - tinyxml2::XMLElement *jupiter = addPlanet(solarSystem, 1200 * scale, -6, -36, 5 * scale); // Jupiter + tinyxml2::XMLElement *jupiter = + addPlanet(solarSystem, 1200 * scale, -6, -36, 5 * scale); // Jupiter addSatellite(jupiter, 20 * scale, 8 * scale, 10, 0.6 * scale); // Ganymede addSatellite(jupiter, -18 * scale, 6 * scale, -12, 0.5 * scale); // Callisto addSatellite(jupiter, 16 * scale, -4 * scale, 8, 0.4 * scale); // Io addSatellite(jupiter, -14 * scale, 3 * scale, -6, 0.3 * scale); // Europa - tinyxml2::XMLElement *saturn = addPlanet(solarSystem, 1800 * scale, 6, 30, 4.5 * scale); // Saturn + tinyxml2::XMLElement *saturn = + addPlanet(solarSystem, 1800 * scale, 6, 30, 4.5 * scale); // Saturn addRing(saturn, 1.2, 0.1, 1.2, 15); // Saturn’s ring inclination addSatellite(saturn, 30 * scale, 12 * scale, 15, 0.4 * scale); // Titan addSatellite(saturn, -24 * scale, 9 * scale, -18, 0.3 * scale); // Enceladus - tinyxml2::XMLElement *uranus = addPlanet(solarSystem, 2300 * scale, -9, -45, 2 * scale); // Uranus + tinyxml2::XMLElement *uranus = + addPlanet(solarSystem, 2300 * scale, -9, -45, 2 * scale); // Uranus addRing(uranus, 1.1, 0.1, 1.1, 90); // Uranus’ vertical ring addSatellite(uranus, 14 * scale, 5 * scale, 10, 0.2 * scale); // Miranda addSatellite(uranus, -12 * scale, 4 * scale, -8, 0.15 * scale); // Ariel - tinyxml2::XMLElement *neptune = addPlanet(solarSystem, 2800 * scale, 12, 60, 2 * scale); // Neptune + tinyxml2::XMLElement *neptune = + addPlanet(solarSystem, 2800 * scale, 12, 60, 2 * scale); // Neptune addRing(neptune, 1.05, 0.06, 1.05, 30); // Neptune’s ring inclination addSatellite(neptune, 16 * scale, 6 * scale, 12, 0.3 * scale); // Triton @@ -101,7 +105,8 @@ void SolarSystem::generateSolarSystem(float scale) { addAsteroidBelt(solarSystem, 3100 * scale, 4000 * scale, 1200); // Kuiper Belt } -tinyxml2::XMLElement* SolarSystem::addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { +tinyxml2::XMLElement * + SolarSystem::addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { tinyxml2::XMLElement *group = doc.NewElement("group"); parent->InsertEndChild(group); @@ -130,11 +135,16 @@ tinyxml2::XMLElement* SolarSystem::addPlanet(tinyxml2::XMLElement *parent, float return group; } -void SolarSystem::addSatellite(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { +void + SolarSystem::addSatellite(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { addPlanet(parent, x, y, z, size); } -void SolarSystem::addRing(tinyxml2::XMLElement *parent, float scaleX, float scaleY, float scaleZ, float angle) { +void SolarSystem::addRing(tinyxml2::XMLElement *parent, + float scaleX, + float scaleY, + float scaleZ, + float angle) { tinyxml2::XMLElement *group = doc.NewElement("group"); parent->InsertEndChild(group); @@ -156,13 +166,16 @@ void SolarSystem::addRing(tinyxml2::XMLElement *parent, float scaleX, float scal tinyxml2::XMLElement *models = doc.NewElement("models"); group->InsertEndChild(models); - + tinyxml2::XMLElement *model = doc.NewElement("model"); model->SetAttribute("file", "../models/torus.3d"); models->InsertEndChild(model); } -void SolarSystem::addAsteroidBelt(tinyxml2::XMLElement *parent, float minDist, float maxDist, int numAsteroids) { +void SolarSystem::addAsteroidBelt(tinyxml2::XMLElement *parent, + float minDist, + float maxDist, + int numAsteroids) { tinyxml2::XMLElement *asteroidBelt = doc.NewElement("group"); parent->InsertEndChild(asteroidBelt); From f668f96159a0318ee3e90d9614c9566e413225c2 Mon Sep 17 00:00:00 2001 From: sara Date: Wed, 12 Mar 2025 22:23:02 +0000 Subject: [PATCH 05/14] Improvements --- include/generator/figures/SolarSystem.hpp | 20 +- res/scenes/scene_solarSystem.xml | 34725 ++++++++++++-------- src/generator/figures/SolarSystem.cpp | 237 +- 3 files changed, 20343 insertions(+), 14639 deletions(-) diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp index a2921720..ebd5ee2c 100644 --- a/include/generator/figures/SolarSystem.hpp +++ b/include/generator/figures/SolarSystem.hpp @@ -28,18 +28,30 @@ class SolarSystem { void configureCamera(); void generateSolarSystem(float scale); - tinyxml2::XMLElement * - addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size); + tinyxml2::XMLElement *addCelestialBody(tinyxml2::XMLElement *parent, + float x, + float y, + float z, + float size, + const std::string &modelFile, + float angle, + float rotX, + float rotY, + float rotZ); void addSatellite(tinyxml2::XMLElement *parent, float x, float y, float z, float size); void addRing(tinyxml2::XMLElement *parent, float scaleX, float scaleY, float scaleZ, - float angle); + float angle, + float rotX, + float rotY, + float rotZ); void addAsteroidBelt(tinyxml2::XMLElement *parent, float minDist, float maxDist, - int numAsteroids); + int numAsteroids, + float scale); public: SolarSystem(float scale); diff --git a/res/scenes/scene_solarSystem.xml b/res/scenes/scene_solarSystem.xml index 88435f79..3e34a740 100644 --- a/res/scenes/scene_solarSystem.xml +++ b/res/scenes/scene_solarSystem.xml @@ -1,7 +1,7 @@ - + @@ -10,60 +10,24 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - + + @@ -71,14560 +35,20199 @@ - - + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index 36093de4..fe507113 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -12,6 +12,8 @@ /// See the License for the specific language governing permissions and /// limitations under the License. +#include + #include "generator/figures/SolarSystem.hpp" namespace generator::figures { @@ -42,9 +44,9 @@ void SolarSystem::configureCamera() { const char *name; float x, y, z; } cameraSettings[] = { - { "position", 120, 90, 150 }, - { "lookAt", 0, 0, 0 }, - { "up", 0, 1, 0 } + { "position", 200, 150, 300 }, + { "lookAt", 0, 0, 0 }, + { "up", 0, 1, 0 } }; for (const auto &setting : cameraSettings) { @@ -63,50 +65,147 @@ void SolarSystem::configureCamera() { } void SolarSystem::generateSolarSystem(float scale) { + tinyxml2::XMLElement *world = doc.FirstChildElement("world"); tinyxml2::XMLElement *solarSystem = doc.NewElement("group"); - doc.FirstChildElement("world")->InsertEndChild(solarSystem); + world->InsertEndChild(solarSystem); + + tinyxml2::XMLElement *sun = + addCelestialBody(solarSystem, 0, 0, 0, 30 * scale, "../models/sphere.3d", 0, 0, 0, 0); - addPlanet(solarSystem, 0, 0, 0, 50 * scale); // Sun - addPlanet(solarSystem, 150 * scale, 6, -15, 0.4 * scale); // Mercury - addPlanet(solarSystem, 280 * scale, -3, 9, 0.5 * scale); // Venus + tinyxml2::XMLElement *mercury = + addCelestialBody(sun, 12 * scale, 2, -3, 0.15 * scale, "../models/sphere.3d", 0, 0, 0, 0); + tinyxml2::XMLElement *venus = + addCelestialBody(sun, 20 * scale, -1.5, 2, 0.18 * scale, "../models/sphere.3d", 0, 0, 0, 0); - tinyxml2::XMLElement *earth = addPlanet(solarSystem, 400 * scale, 0, -18, 0.6 * scale); // Earth - addSatellite(earth, 2 * scale, 1.2 * scale, 1.5, 0.15 * scale); // Moon + tinyxml2::XMLElement *earth = + addCelestialBody(sun, 28 * scale, 0, -3, 0.2 * scale, "../models/sphere.3d", 0, 0, 0, 0); + addCelestialBody(earth, 3 * scale, 0, 0, 0.05 * scale, "../models/sphere.3d", 0, 0, 0, 0); - tinyxml2::XMLElement *mars = addPlanet(solarSystem, 600 * scale, 3, 24, 0.5 * scale); // Mars - addSatellite(mars, 1.5 * scale, 0.6 * scale, 0.8, 0.1 * scale); // Phobos - addSatellite(mars, -1.2 * scale, -0.5 * scale, 0.5, 0.08 * scale); // Deimos + tinyxml2::XMLElement *mars = + addCelestialBody(sun, 36 * scale, 1.5, 5, 0.15 * scale, "../models/sphere.3d", 0, 0, 0, 0); + addCelestialBody(mars, 2 * scale, 0.5, 0, 0.04 * scale, "../models/sphere.3d", 0, 0, 0, 0); + addCelestialBody(mars, -1.5 * scale, -0.3, 1, 0.03 * scale, "../models/sphere.3d", 0, 0, 0, 0); tinyxml2::XMLElement *jupiter = - addPlanet(solarSystem, 1200 * scale, -6, -36, 5 * scale); // Jupiter - addSatellite(jupiter, 20 * scale, 8 * scale, 10, 0.6 * scale); // Ganymede - addSatellite(jupiter, -18 * scale, 6 * scale, -12, 0.5 * scale); // Callisto - addSatellite(jupiter, 16 * scale, -4 * scale, 8, 0.4 * scale); // Io - addSatellite(jupiter, -14 * scale, 3 * scale, -6, 0.3 * scale); // Europa + addCelestialBody(sun, 56 * scale, -2, -6, 0.5 * scale, "../models/sphere.3d", 0, 0, 0, 0); + addCelestialBody(jupiter, + 5 * scale, + 3 * scale, + 4, + 0.1 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(jupiter, + -4 * scale, + 2.5 * scale, + -5, + 0.7 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(jupiter, + 3 * scale, + -2 * scale, + 3, + 0.6 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(jupiter, + -3 * scale, + 1 * scale, + -2, + 0.05 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); tinyxml2::XMLElement *saturn = - addPlanet(solarSystem, 1800 * scale, 6, 30, 4.5 * scale); // Saturn - addRing(saturn, 1.2, 0.1, 1.2, 15); // Saturn’s ring inclination - addSatellite(saturn, 30 * scale, 12 * scale, 15, 0.4 * scale); // Titan - addSatellite(saturn, -24 * scale, 9 * scale, -18, 0.3 * scale); // Enceladus + addCelestialBody(sun, 79 * scale, 2, -10, 0.4 * scale, "../models/sphere.3d", 0, 0, 0, 0); + addCelestialBody(saturn, 0, 0, 0, 0.4, "../models/torus.3d", 26.7, 0, 0, 1); + addCelestialBody(saturn, + 10 * scale, + 5 * scale, + 7, + 0.15 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(saturn, + -8 * scale, + 4 * scale, + -8, + 0.12 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); tinyxml2::XMLElement *uranus = - addPlanet(solarSystem, 2300 * scale, -9, -45, 2 * scale); // Uranus - addRing(uranus, 1.1, 0.1, 1.1, 90); // Uranus’ vertical ring - addSatellite(uranus, 14 * scale, 5 * scale, 10, 0.2 * scale); // Miranda - addSatellite(uranus, -12 * scale, 4 * scale, -8, 0.15 * scale); // Ariel + addCelestialBody(sun, 92 * scale, -4, -12, 0.3 * scale, "../models/sphere.3d", 0, 0, 0, 0); + addCelestialBody(uranus, 0, 0, 0, 0.3, "../models/torus.3d", 90, 1, 0, 0); + addCelestialBody(uranus, + 4 * scale, + 2 * scale, + 3, + 0.05 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(uranus, + -3.5 * scale, + 1.5 * scale, + -3, + 0.04 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); tinyxml2::XMLElement *neptune = - addPlanet(solarSystem, 2800 * scale, 12, 60, 2 * scale); // Neptune - addRing(neptune, 1.05, 0.06, 1.05, 30); // Neptune’s ring inclination - addSatellite(neptune, 16 * scale, 6 * scale, 12, 0.3 * scale); // Triton - - addAsteroidBelt(solarSystem, 650 * scale, 1000 * scale, 400); // Asteroid Belt - addAsteroidBelt(solarSystem, 3100 * scale, 4000 * scale, 1200); // Kuiper Belt + addCelestialBody(sun, 105 * scale, 5, -15, 0.3 * scale, "../models/sphere.3d", 0, 0, 0, 0); + addCelestialBody(neptune, 0, 0, 0, 0.25, "../models/torus.3d", 28.3, 0, 0, 1); + addCelestialBody(neptune, + 5 * scale, + 2.5 * scale, + 4, + 0.05 * scale, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + + addAsteroidBelt(sun, 40 * scale, 49 * scale, 600, scale); + addAsteroidBelt(sun, 120 * scale, 150 * scale, 1400, scale); } -tinyxml2::XMLElement * - SolarSystem::addPlanet(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { +tinyxml2::XMLElement *SolarSystem::addCelestialBody(tinyxml2::XMLElement *parent, + float x, + float y, + float z, + float size, + const std::string &modelFile, + float angle, + float rotX, + float rotY, + float rotZ) { + tinyxml2::XMLElement *group = doc.NewElement("group"); parent->InsertEndChild(group); @@ -119,6 +218,15 @@ tinyxml2::XMLElement * translate->SetAttribute("z", z); transform->InsertEndChild(translate); + if (angle != 0) { + tinyxml2::XMLElement *rotate = doc.NewElement("rotate"); + rotate->SetAttribute("angle", angle); + rotate->SetAttribute("x", rotX); + rotate->SetAttribute("y", rotY); + rotate->SetAttribute("z", rotZ); + transform->InsertEndChild(rotate); + } + tinyxml2::XMLElement *scaleElem = doc.NewElement("scale"); scaleElem->SetAttribute("x", size); scaleElem->SetAttribute("y", size); @@ -129,65 +237,46 @@ tinyxml2::XMLElement * group->InsertEndChild(models); tinyxml2::XMLElement *model = doc.NewElement("model"); - model->SetAttribute("file", "../models/sphere.3d"); + model->SetAttribute("file", modelFile.c_str()); models->InsertEndChild(model); return group; } -void - SolarSystem::addSatellite(tinyxml2::XMLElement *parent, float x, float y, float z, float size) { - addPlanet(parent, x, y, z, size); -} - -void SolarSystem::addRing(tinyxml2::XMLElement *parent, - float scaleX, - float scaleY, - float scaleZ, - float angle) { - tinyxml2::XMLElement *group = doc.NewElement("group"); - parent->InsertEndChild(group); - - tinyxml2::XMLElement *transform = doc.NewElement("transform"); - group->InsertEndChild(transform); - - tinyxml2::XMLElement *rotate = doc.NewElement("rotate"); - rotate->SetAttribute("angle", angle); - rotate->SetAttribute("x", 1); - rotate->SetAttribute("y", 0); - rotate->SetAttribute("z", 0); - transform->InsertEndChild(rotate); - - tinyxml2::XMLElement *scaleElem = doc.NewElement("scale"); - scaleElem->SetAttribute("x", scaleX); - scaleElem->SetAttribute("y", scaleY); - scaleElem->SetAttribute("z", scaleZ); - transform->InsertEndChild(scaleElem); - - tinyxml2::XMLElement *models = doc.NewElement("models"); - group->InsertEndChild(models); - - tinyxml2::XMLElement *model = doc.NewElement("model"); - model->SetAttribute("file", "../models/torus.3d"); - models->InsertEndChild(model); -} - void SolarSystem::addAsteroidBelt(tinyxml2::XMLElement *parent, float minDist, float maxDist, - int numAsteroids) { + int numAsteroids, + float scale) { tinyxml2::XMLElement *asteroidBelt = doc.NewElement("group"); parent->InsertEndChild(asteroidBelt); + std::vector models = { "../models/sphere.3d", + "../models/box.3d", + "../models/cylinder.3d" }; + for (int i = 0; i < numAsteroids; i++) { float distance = minDist + static_cast(rand()) / (RAND_MAX / (maxDist - minDist)); float angle = static_cast(rand()) / (RAND_MAX / 360.0f); float x = distance * cos(angle); float z = distance * sin(angle); float y = static_cast(rand()) / (RAND_MAX / 10.0f) - 5.0f; - float size = 0.2f + static_cast(rand()) / (RAND_MAX / 0.3f); - addPlanet(asteroidBelt, x, y, z, size); + float size = + 0.01 * scale + static_cast(rand()) / RAND_MAX * (0.06 * scale - 0.01 * scale); + + std::string modelFile = models[rand() % models.size()]; + + addCelestialBody(asteroidBelt, + x, + y, + z, + size, + modelFile, + static_cast(rand()) / (RAND_MAX / 360.0f), + static_cast(rand()) / RAND_MAX, + static_cast(rand()) / RAND_MAX, + static_cast(rand()) / RAND_MAX); } } From 1380196d25eefdc9ce07aa5bd9a4be35fe44d693 Mon Sep 17 00:00:00 2001 From: sara Date: Thu, 13 Mar 2025 22:54:39 +0000 Subject: [PATCH 06/14] User can configure the solar system --- include/generator/figures/SolarSystem.hpp | 34 +- res/models/solarSystem.3d | 931 ------------ res/models/torus.3d | 242 ++-- res/scenes/scene_solarSystem.xml | 1584 ++++++++++----------- src/generator/figures/SolarSystem.cpp | 270 +++- src/generator/main.cpp | 82 +- 6 files changed, 1209 insertions(+), 1934 deletions(-) delete mode 100644 res/models/solarSystem.3d diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp index ebd5ee2c..77a1093c 100644 --- a/include/generator/figures/SolarSystem.hpp +++ b/include/generator/figures/SolarSystem.hpp @@ -2,7 +2,7 @@ /// /// Licensed under the Apache License, Version 2.0 (the "License"); /// you may not use this file except in compliance with the License. -/// You may obtain a copy of the License at +/// You may obtain a copy of the License at: /// /// http://www.apache.org/licenses/LICENSE-2.0 /// @@ -14,7 +14,7 @@ #pragma once -#include +#include #include #include @@ -26,7 +26,13 @@ class SolarSystem { void createWorld(); void configureCamera(); - void generateSolarSystem(float scale); + void generateSolarSystem(float sunSizeFactor, + float planetSizeFactor, + float moonSizeFactor, + float distanceFactor, + float asteroidBeltDensity, + float sceneScale, + float ringSizeFactor); tinyxml2::XMLElement *addCelestialBody(tinyxml2::XMLElement *parent, float x, @@ -34,11 +40,13 @@ class SolarSystem { float z, float size, const std::string &modelFile, - float angle, - float rotX, - float rotY, - float rotZ); + float angle = 0.0f, + float rotX = 0.0f, + float rotY = 0.0f, + float rotZ = 0.0f); + void addSatellite(tinyxml2::XMLElement *parent, float x, float y, float z, float size); + void addRing(tinyxml2::XMLElement *parent, float scaleX, float scaleY, @@ -47,14 +55,22 @@ class SolarSystem { float rotX, float rotY, float rotZ); + void addAsteroidBelt(tinyxml2::XMLElement *parent, float minDist, float maxDist, int numAsteroids, - float scale); + float sceneScale); public: - SolarSystem(float scale); + SolarSystem(float sceneScale, + float sunSizeFactor, + float planetSizeFactor, + float moonSizeFactor, + float distanceFactor, + float asteroidBeltDensity, + float ringSizeFactor); + void writeToFile(const std::string &filename); }; diff --git a/res/models/solarSystem.3d b/res/models/solarSystem.3d deleted file mode 100644 index a00626a2..00000000 --- a/res/models/solarSystem.3d +++ /dev/null @@ -1,931 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/res/models/torus.3d b/res/models/torus.3d index f4aae046..aab08a81 100644 --- a/res/models/torus.3d +++ b/res/models/torus.3d @@ -1,124 +1,124 @@ -v -7 0 0 -v -7.57295 1.76336 0 -v -9.07295 2.85317 0 -v -10.9271 2.85317 -0 -v -12.4271 1.76336 -0 -v -13 -2.62268e-07 -0 -v -12.4271 -1.76336 -0 -v -10.9271 -2.85317 -0 -v -9.07295 -2.85317 0 -v -7.57295 -1.76336 0 -v -7 5.24537e-07 0 -v -5.66312 0 -4.1145 -v -6.12664 1.76336 -4.45127 -v -7.34017 2.85317 -5.33295 -v -8.84017 2.85317 -6.42276 -v -10.0537 1.76336 -7.30444 -v -10.5172 -2.62268e-07 -7.64121 -v -10.0537 -1.76336 -7.30444 -v -8.84017 -2.85317 -6.42276 -v -7.34017 -2.85317 -5.33295 -v -6.12664 -1.76336 -4.45127 -v -5.66312 5.24537e-07 -4.1145 -v -2.16312 0 -6.6574 -v -2.34017 1.76336 -7.2023 -v -2.8037 2.85317 -8.62889 -v -3.37664 2.85317 -10.3922 -v -3.84017 1.76336 -11.8188 -v -4.01722 -2.62268e-07 -12.3637 -v -3.84017 -1.76336 -11.8188 -v -3.37664 -2.85317 -10.3922 -v -2.80369 -2.85317 -8.62889 -v -2.34017 -1.76336 -7.2023 -v -2.16312 5.24537e-07 -6.6574 -v 2.16312 0 -6.6574 -v 2.34017 1.76336 -7.2023 -v 2.8037 2.85317 -8.62889 -v 3.37665 2.85317 -10.3922 -v 3.84017 1.76336 -11.8188 -v 4.01722 -2.62268e-07 -12.3637 -v 3.84017 -1.76336 -11.8188 -v 3.37665 -2.85317 -10.3922 -v 2.8037 -2.85317 -8.62889 -v 2.34017 -1.76336 -7.2023 -v 2.16312 5.24537e-07 -6.6574 -v 5.66312 0 -4.1145 -v 6.12665 1.76336 -4.45127 -v 7.34017 2.85317 -5.33295 -v 8.84017 2.85317 -6.42276 -v 10.0537 1.76336 -7.30444 -v 10.5172 -2.62268e-07 -7.64121 -v 10.0537 -1.76336 -7.30444 -v 8.84017 -2.85317 -6.42276 -v 7.34017 -2.85317 -5.33294 -v 6.12665 -1.76336 -4.45127 -v 5.66312 5.24537e-07 -4.1145 -v 7 0 6.11959e-07 -v 7.57295 1.76336 6.62048e-07 -v 9.07295 2.85317 7.93182e-07 -v 10.9271 2.85317 9.55273e-07 -v 12.4271 1.76336 1.08641e-06 -v 13 -2.62268e-07 1.1365e-06 -v 12.4271 -1.76336 1.08641e-06 -v 10.9271 -2.85317 9.55273e-07 -v 9.07295 -2.85317 7.93182e-07 -v 7.57295 -1.76336 6.62048e-07 -v 7 5.24537e-07 6.11959e-07 -v 5.66312 0 4.1145 -v 6.12664 1.76336 4.45127 -v 7.34017 2.85317 5.33295 -v 8.84017 2.85317 6.42276 -v 10.0537 1.76336 7.30444 -v 10.5172 -2.62268e-07 7.64121 -v 10.0537 -1.76336 7.30444 -v 8.84017 -2.85317 6.42276 -v 7.34017 -2.85317 5.33295 -v 6.12664 -1.76336 4.45127 -v 5.66312 5.24537e-07 4.1145 -v 2.16312 0 6.6574 -v 2.34017 1.76336 7.2023 -v 2.8037 2.85317 8.62889 -v 3.37665 2.85317 10.3922 -v 3.84017 1.76336 11.8188 -v 4.01722 -2.62268e-07 12.3637 -v 3.84017 -1.76336 11.8188 -v 3.37665 -2.85317 10.3922 -v 2.8037 -2.85317 8.62889 -v 2.34017 -1.76336 7.2023 -v 2.16312 5.24537e-07 6.6574 -v -2.16312 0 6.6574 -v -2.34017 1.76336 7.2023 -v -2.8037 2.85317 8.62889 -v -3.37665 2.85317 10.3922 -v -3.84017 1.76336 11.8188 -v -4.01722 -2.62268e-07 12.3637 -v -3.84017 -1.76336 11.8188 -v -3.37665 -2.85317 10.3922 -v -2.8037 -2.85317 8.62889 -v -2.34017 -1.76336 7.2023 -v -2.16312 5.24537e-07 6.6574 -v -5.66312 0 4.1145 -v -6.12664 1.76336 4.45127 -v -7.34017 2.85317 5.33295 -v -8.84017 2.85317 6.42276 -v -10.0537 1.76336 7.30444 -v -10.5172 -2.62268e-07 7.64121 -v -10.0537 -1.76336 7.30444 -v -8.84017 -2.85317 6.42276 -v -7.34017 -2.85317 5.33295 -v -6.12664 -1.76336 4.45127 -v -5.66312 5.24537e-07 4.1145 -v -7 0 -1.22392e-06 -v -7.57295 1.76336 -1.3241e-06 -v -9.07295 2.85317 -1.58636e-06 -v -10.9271 2.85317 -1.91055e-06 -v -12.4271 1.76336 -2.17281e-06 -v -13 -2.62268e-07 -2.27299e-06 -v -12.4271 -1.76336 -2.17281e-06 -v -10.9271 -2.85317 -1.91055e-06 -v -9.07295 -2.85317 -1.58636e-06 -v -7.57295 -1.76336 -1.3241e-06 -v -7 5.24537e-07 -1.22392e-06 +v -8 0 0 +v -8.38197 1.17557 0 +v -9.38197 1.90211 0 +v -10.618 1.90211 -0 +v -11.618 1.17557 -0 +v -12 -1.74846e-07 -0 +v -11.618 -1.17557 -0 +v -10.618 -1.90211 -0 +v -9.38197 -1.90211 0 +v -8.38197 -1.17557 0 +v -8 3.49691e-07 0 +v -6.47214 0 -4.70228 +v -6.78115 1.17557 -4.9268 +v -7.59017 1.90211 -5.51458 +v -8.59017 1.90211 -6.24112 +v -9.39919 1.17557 -6.82891 +v -9.7082 -1.74846e-07 -7.05342 +v -9.39919 -1.17557 -6.82891 +v -8.59017 -1.90211 -6.24112 +v -7.59017 -1.90211 -5.51458 +v -6.78115 -1.17557 -4.9268 +v -6.47214 3.49691e-07 -4.70228 +v -2.47214 0 -7.60845 +v -2.59017 1.17557 -7.97172 +v -2.89919 1.90211 -8.92278 +v -3.28115 1.90211 -10.0984 +v -3.59017 1.17557 -11.0494 +v -3.7082 -1.74846e-07 -11.4127 +v -3.59017 -1.17557 -11.0494 +v -3.28115 -1.90211 -10.0984 +v -2.89919 -1.90211 -8.92278 +v -2.59017 -1.17557 -7.97172 +v -2.47214 3.49691e-07 -7.60845 +v 2.47214 0 -7.60845 +v 2.59017 1.17557 -7.97172 +v 2.89919 1.90211 -8.92278 +v 3.28115 1.90211 -10.0984 +v 3.59017 1.17557 -11.0494 +v 3.7082 -1.74846e-07 -11.4127 +v 3.59017 -1.17557 -11.0494 +v 3.28115 -1.90211 -10.0984 +v 2.89919 -1.90211 -8.92278 +v 2.59017 -1.17557 -7.97172 +v 2.47214 3.49691e-07 -7.60845 +v 6.47214 0 -4.70228 +v 6.78115 1.17557 -4.9268 +v 7.59017 1.90211 -5.51458 +v 8.59017 1.90211 -6.24112 +v 9.39919 1.17557 -6.82891 +v 9.70821 -1.74846e-07 -7.05342 +v 9.39919 -1.17557 -6.82891 +v 8.59017 -1.90211 -6.24112 +v 7.59017 -1.90211 -5.51458 +v 6.78115 -1.17557 -4.9268 +v 6.47214 3.49691e-07 -4.70228 +v 8 0 6.99382e-07 +v 8.38197 1.17557 7.32775e-07 +v 9.38197 1.90211 8.20198e-07 +v 10.618 1.90211 9.28258e-07 +v 11.618 1.17557 1.01568e-06 +v 12 -1.74846e-07 1.04907e-06 +v 11.618 -1.17557 1.01568e-06 +v 10.618 -1.90211 9.28258e-07 +v 9.38197 -1.90211 8.20197e-07 +v 8.38197 -1.17557 7.32775e-07 +v 8 3.49691e-07 6.99382e-07 +v 6.47214 0 4.70228 +v 6.78115 1.17557 4.9268 +v 7.59017 1.90211 5.51458 +v 8.59017 1.90211 6.24112 +v 9.39919 1.17557 6.82891 +v 9.7082 -1.74846e-07 7.05342 +v 9.39919 -1.17557 6.82891 +v 8.59017 -1.90211 6.24112 +v 7.59017 -1.90211 5.51458 +v 6.78115 -1.17557 4.9268 +v 6.47214 3.49691e-07 4.70228 +v 2.47214 0 7.60845 +v 2.59017 1.17557 7.97172 +v 2.89919 1.90211 8.92278 +v 3.28115 1.90211 10.0984 +v 3.59017 1.17557 11.0494 +v 3.7082 -1.74846e-07 11.4127 +v 3.59017 -1.17557 11.0494 +v 3.28115 -1.90211 10.0984 +v 2.89919 -1.90211 8.92278 +v 2.59017 -1.17557 7.97172 +v 2.47214 3.49691e-07 7.60845 +v -2.47214 0 7.60845 +v -2.59017 1.17557 7.97172 +v -2.89919 1.90211 8.92278 +v -3.28115 1.90211 10.0984 +v -3.59017 1.17557 11.0494 +v -3.70821 -1.74846e-07 11.4127 +v -3.59017 -1.17557 11.0494 +v -3.28115 -1.90211 10.0984 +v -2.89919 -1.90211 8.92278 +v -2.59017 -1.17557 7.97172 +v -2.47214 3.49691e-07 7.60845 +v -6.47214 0 4.70228 +v -6.78115 1.17557 4.9268 +v -7.59017 1.90211 5.51458 +v -8.59017 1.90211 6.24112 +v -9.39919 1.17557 6.82891 +v -9.7082 -1.74846e-07 7.05342 +v -9.39919 -1.17557 6.82891 +v -8.59017 -1.90211 6.24112 +v -7.59017 -1.90211 5.51458 +v -6.78115 -1.17557 4.9268 +v -6.47214 3.49691e-07 4.70228 +v -8 0 -1.39876e-06 +v -8.38197 1.17557 -1.46555e-06 +v -9.38197 1.90211 -1.6404e-06 +v -10.618 1.90211 -1.85652e-06 +v -11.618 1.17557 -2.03136e-06 +v -12 -1.74846e-07 -2.09815e-06 +v -11.618 -1.17557 -2.03136e-06 +v -10.618 -1.90211 -1.85652e-06 +v -9.38197 -1.90211 -1.64039e-06 +v -8.38197 -1.17557 -1.46555e-06 +v -8 3.49691e-07 -1.39876e-06 f 1 12 13 f 1 13 2 f 2 13 14 diff --git a/res/scenes/scene_solarSystem.xml b/res/scenes/scene_solarSystem.xml index 3e34a740..87f56453 100644 --- a/res/scenes/scene_solarSystem.xml +++ b/res/scenes/scene_solarSystem.xml @@ -135,7 +135,7 @@ - + @@ -172,7 +172,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -228,7 +228,7 @@ - + @@ -238,7 +238,7 @@ - + @@ -258,7 +258,7 @@ - + @@ -268,7 +268,7 @@ - + @@ -278,7 +278,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -328,7 +328,7 @@ - + @@ -338,7 +338,7 @@ - + @@ -378,7 +378,7 @@ - + @@ -408,7 +408,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -428,7 +428,7 @@ - + @@ -478,7 +478,7 @@ - + @@ -498,7 +498,7 @@ - + @@ -508,7 +508,7 @@ - + @@ -548,7 +548,7 @@ - + @@ -588,7 +588,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -618,7 +618,7 @@ - + @@ -628,7 +628,7 @@ - + @@ -638,7 +638,7 @@ - + @@ -668,7 +668,7 @@ - + @@ -708,7 +708,7 @@ - + @@ -718,7 +718,7 @@ - + @@ -758,7 +758,7 @@ - + @@ -778,7 +778,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -858,7 +858,7 @@ - + @@ -868,7 +868,7 @@ - + @@ -898,7 +898,7 @@ - + @@ -918,7 +918,7 @@ - + @@ -928,7 +928,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1058,7 +1058,7 @@ - + @@ -1068,7 +1068,7 @@ - + @@ -1098,7 +1098,7 @@ - + @@ -1108,7 +1108,7 @@ - + @@ -1178,7 +1178,7 @@ - + @@ -1188,7 +1188,7 @@ - + @@ -1198,7 +1198,7 @@ - + @@ -1238,7 +1238,7 @@ - + @@ -1248,7 +1248,7 @@ - + @@ -1298,7 +1298,7 @@ - + @@ -1318,7 +1318,7 @@ - + @@ -1368,7 +1368,7 @@ - + @@ -1418,7 +1418,7 @@ - + @@ -1438,7 +1438,7 @@ - + @@ -1468,7 +1468,7 @@ - + @@ -1498,7 +1498,7 @@ - + @@ -1518,7 +1518,7 @@ - + @@ -1578,7 +1578,7 @@ - + @@ -1588,7 +1588,7 @@ - + @@ -1648,7 +1648,7 @@ - + @@ -1708,7 +1708,7 @@ - + @@ -1718,7 +1718,7 @@ - + @@ -1738,7 +1738,7 @@ - + @@ -1748,7 +1748,7 @@ - + @@ -1778,7 +1778,7 @@ - + @@ -1788,7 +1788,7 @@ - + @@ -1798,7 +1798,7 @@ - + @@ -1838,7 +1838,7 @@ - + @@ -1848,7 +1848,7 @@ - + @@ -1868,7 +1868,7 @@ - + @@ -1878,7 +1878,7 @@ - + @@ -1898,7 +1898,7 @@ - + @@ -1928,7 +1928,7 @@ - + @@ -1938,7 +1938,7 @@ - + @@ -1958,7 +1958,7 @@ - + @@ -1978,7 +1978,7 @@ - + @@ -1988,7 +1988,7 @@ - + @@ -2008,7 +2008,7 @@ - + @@ -2048,7 +2048,7 @@ - + @@ -2068,7 +2068,7 @@ - + @@ -2078,7 +2078,7 @@ - + @@ -2098,7 +2098,7 @@ - + @@ -2128,7 +2128,7 @@ - + @@ -2138,7 +2138,7 @@ - + @@ -2148,7 +2148,7 @@ - + @@ -2158,7 +2158,7 @@ - + @@ -2178,7 +2178,7 @@ - + @@ -2208,7 +2208,7 @@ - + @@ -2218,7 +2218,7 @@ - + @@ -2258,7 +2258,7 @@ - + @@ -2268,7 +2268,7 @@ - + @@ -2338,7 +2338,7 @@ - + @@ -2348,7 +2348,7 @@ - + @@ -2378,7 +2378,7 @@ - + @@ -2398,7 +2398,7 @@ - + @@ -2478,7 +2478,7 @@ - + @@ -2488,7 +2488,7 @@ - + @@ -2538,7 +2538,7 @@ - + @@ -2578,7 +2578,7 @@ - + @@ -2598,7 +2598,7 @@ - + @@ -2618,7 +2618,7 @@ - + @@ -2628,7 +2628,7 @@ - + @@ -2688,7 +2688,7 @@ - + @@ -2738,7 +2738,7 @@ - + @@ -2748,7 +2748,7 @@ - + @@ -2858,7 +2858,7 @@ - + @@ -2868,7 +2868,7 @@ - + @@ -2888,7 +2888,7 @@ - + @@ -2908,7 +2908,7 @@ - + @@ -2918,7 +2918,7 @@ - + @@ -2928,7 +2928,7 @@ - + @@ -2988,7 +2988,7 @@ - + @@ -3008,7 +3008,7 @@ - + @@ -3048,7 +3048,7 @@ - + @@ -3068,7 +3068,7 @@ - + @@ -3078,7 +3078,7 @@ - + @@ -3088,7 +3088,7 @@ - + @@ -3108,7 +3108,7 @@ - + @@ -3128,7 +3128,7 @@ - + @@ -3148,7 +3148,7 @@ - + @@ -3168,7 +3168,7 @@ - + @@ -3178,7 +3178,7 @@ - + @@ -3198,7 +3198,7 @@ - + @@ -3208,7 +3208,7 @@ - + @@ -3218,7 +3218,7 @@ - + @@ -3228,7 +3228,7 @@ - + @@ -3238,7 +3238,7 @@ - + @@ -3248,7 +3248,7 @@ - + @@ -3318,7 +3318,7 @@ - + @@ -3328,7 +3328,7 @@ - + @@ -3348,7 +3348,7 @@ - + @@ -3358,7 +3358,7 @@ - + @@ -3398,7 +3398,7 @@ - + @@ -3408,7 +3408,7 @@ - + @@ -3428,7 +3428,7 @@ - + @@ -3438,7 +3438,7 @@ - + @@ -3538,7 +3538,7 @@ - + @@ -3568,7 +3568,7 @@ - + @@ -3588,7 +3588,7 @@ - + @@ -3708,7 +3708,7 @@ - + @@ -3768,7 +3768,7 @@ - + @@ -3788,7 +3788,7 @@ - + @@ -3818,7 +3818,7 @@ - + @@ -3828,7 +3828,7 @@ - + @@ -3878,7 +3878,7 @@ - + @@ -3928,7 +3928,7 @@ - + @@ -3958,7 +3958,7 @@ - + @@ -3978,7 +3978,7 @@ - + @@ -4008,7 +4008,7 @@ - + @@ -4018,7 +4018,7 @@ - + @@ -4028,7 +4028,7 @@ - + @@ -4038,7 +4038,7 @@ - + @@ -4108,7 +4108,7 @@ - + @@ -4118,7 +4118,7 @@ - + @@ -4158,7 +4158,7 @@ - + @@ -4168,7 +4168,7 @@ - + @@ -4178,7 +4178,7 @@ - + @@ -4198,7 +4198,7 @@ - + @@ -4238,7 +4238,7 @@ - + @@ -4268,7 +4268,7 @@ - + @@ -4288,7 +4288,7 @@ - + @@ -4308,7 +4308,7 @@ - + @@ -4348,7 +4348,7 @@ - + @@ -4358,7 +4358,7 @@ - + @@ -4418,7 +4418,7 @@ - + @@ -4458,7 +4458,7 @@ - + @@ -4478,7 +4478,7 @@ - + @@ -4488,7 +4488,7 @@ - + @@ -4508,7 +4508,7 @@ - + @@ -4518,7 +4518,7 @@ - + @@ -4538,7 +4538,7 @@ - + @@ -4548,7 +4548,7 @@ - + @@ -4618,7 +4618,7 @@ - + @@ -4648,7 +4648,7 @@ - + @@ -4678,7 +4678,7 @@ - + @@ -4688,7 +4688,7 @@ - + @@ -4698,7 +4698,7 @@ - + @@ -4708,7 +4708,7 @@ - + @@ -4758,7 +4758,7 @@ - + @@ -4778,7 +4778,7 @@ - + @@ -4788,7 +4788,7 @@ - + @@ -4818,7 +4818,7 @@ - + @@ -4828,7 +4828,7 @@ - + @@ -4848,7 +4848,7 @@ - + @@ -4868,7 +4868,7 @@ - + @@ -4878,7 +4878,7 @@ - + @@ -4918,7 +4918,7 @@ - + @@ -4928,7 +4928,7 @@ - + @@ -4938,7 +4938,7 @@ - + @@ -4948,7 +4948,7 @@ - + @@ -4988,7 +4988,7 @@ - + @@ -5028,7 +5028,7 @@ - + @@ -5038,7 +5038,7 @@ - + @@ -5048,7 +5048,7 @@ - + @@ -5078,7 +5078,7 @@ - + @@ -5088,7 +5088,7 @@ - + @@ -5098,7 +5098,7 @@ - + @@ -5158,7 +5158,7 @@ - + @@ -5168,7 +5168,7 @@ - + @@ -5188,7 +5188,7 @@ - + @@ -5248,7 +5248,7 @@ - + @@ -5258,7 +5258,7 @@ - + @@ -5288,7 +5288,7 @@ - + @@ -5318,7 +5318,7 @@ - + @@ -5418,7 +5418,7 @@ - + @@ -5468,7 +5468,7 @@ - + @@ -5478,7 +5478,7 @@ - + @@ -5648,7 +5648,7 @@ - + @@ -5668,7 +5668,7 @@ - + @@ -5698,7 +5698,7 @@ - + @@ -5728,7 +5728,7 @@ - + @@ -5758,7 +5758,7 @@ - + @@ -5778,7 +5778,7 @@ - + @@ -5818,7 +5818,7 @@ - + @@ -5828,7 +5828,7 @@ - + @@ -5858,7 +5858,7 @@ - + @@ -5868,7 +5868,7 @@ - + @@ -5878,7 +5878,7 @@ - + @@ -5898,7 +5898,7 @@ - + @@ -5928,7 +5928,7 @@ - + @@ -5968,7 +5968,7 @@ - + @@ -6018,7 +6018,7 @@ - + @@ -6038,7 +6038,7 @@ - + @@ -6048,7 +6048,7 @@ - + @@ -6088,7 +6088,7 @@ - + @@ -6098,7 +6098,7 @@ - + @@ -6108,7 +6108,7 @@ - + @@ -6128,7 +6128,7 @@ - + @@ -6138,7 +6138,7 @@ - + @@ -6158,7 +6158,7 @@ - + @@ -6198,7 +6198,7 @@ - + @@ -6230,7 +6230,7 @@ - + @@ -6240,7 +6240,7 @@ - + @@ -6260,7 +6260,7 @@ - + @@ -6310,7 +6310,7 @@ - + @@ -6340,7 +6340,7 @@ - + @@ -6390,7 +6390,7 @@ - + @@ -6400,7 +6400,7 @@ - + @@ -6450,7 +6450,7 @@ - + @@ -6490,7 +6490,7 @@ - + @@ -6510,7 +6510,7 @@ - + @@ -6530,7 +6530,7 @@ - + @@ -6560,7 +6560,7 @@ - + @@ -6570,7 +6570,7 @@ - + @@ -6610,7 +6610,7 @@ - + @@ -6620,7 +6620,7 @@ - + @@ -6630,7 +6630,7 @@ - + @@ -6640,7 +6640,7 @@ - + @@ -6660,7 +6660,7 @@ - + @@ -6690,7 +6690,7 @@ - + @@ -6750,7 +6750,7 @@ - + @@ -6770,7 +6770,7 @@ - + @@ -6830,7 +6830,7 @@ - + @@ -6850,7 +6850,7 @@ - + @@ -6870,7 +6870,7 @@ - + @@ -6880,7 +6880,7 @@ - + @@ -6890,7 +6890,7 @@ - + @@ -6900,7 +6900,7 @@ - + @@ -6910,7 +6910,7 @@ - + @@ -6970,7 +6970,7 @@ - + @@ -7010,7 +7010,7 @@ - + @@ -7050,7 +7050,7 @@ - + @@ -7060,7 +7060,7 @@ - + @@ -7070,7 +7070,7 @@ - + @@ -7080,7 +7080,7 @@ - + @@ -7150,7 +7150,7 @@ - + @@ -7170,7 +7170,7 @@ - + @@ -7180,7 +7180,7 @@ - + @@ -7190,7 +7190,7 @@ - + @@ -7220,7 +7220,7 @@ - + @@ -7250,7 +7250,7 @@ - + @@ -7280,7 +7280,7 @@ - + @@ -7300,7 +7300,7 @@ - + @@ -7320,7 +7320,7 @@ - + @@ -7330,7 +7330,7 @@ - + @@ -7340,7 +7340,7 @@ - + @@ -7360,7 +7360,7 @@ - + @@ -7400,7 +7400,7 @@ - + @@ -7410,7 +7410,7 @@ - + @@ -7460,7 +7460,7 @@ - + @@ -7490,7 +7490,7 @@ - + @@ -7500,7 +7500,7 @@ - + @@ -7510,7 +7510,7 @@ - + @@ -7520,7 +7520,7 @@ - + @@ -7540,7 +7540,7 @@ - + @@ -7550,7 +7550,7 @@ - + @@ -7600,7 +7600,7 @@ - + @@ -7650,7 +7650,7 @@ - + @@ -7660,7 +7660,7 @@ - + @@ -7690,7 +7690,7 @@ - + @@ -7720,7 +7720,7 @@ - + @@ -7760,7 +7760,7 @@ - + @@ -7810,7 +7810,7 @@ - + @@ -7860,7 +7860,7 @@ - + @@ -7880,7 +7880,7 @@ - + @@ -7900,7 +7900,7 @@ - + @@ -7920,7 +7920,7 @@ - + @@ -7940,7 +7940,7 @@ - + @@ -7960,7 +7960,7 @@ - + @@ -7990,7 +7990,7 @@ - + @@ -8010,7 +8010,7 @@ - + @@ -8050,7 +8050,7 @@ - + @@ -8080,7 +8080,7 @@ - + @@ -8090,7 +8090,7 @@ - + @@ -8100,7 +8100,7 @@ - + @@ -8130,7 +8130,7 @@ - + @@ -8140,7 +8140,7 @@ - + @@ -8160,7 +8160,7 @@ - + @@ -8170,7 +8170,7 @@ - + @@ -8200,7 +8200,7 @@ - + @@ -8210,7 +8210,7 @@ - + @@ -8250,7 +8250,7 @@ - + @@ -8370,7 +8370,7 @@ - + @@ -8400,7 +8400,7 @@ - + @@ -8410,7 +8410,7 @@ - + @@ -8470,7 +8470,7 @@ - + @@ -8480,7 +8480,7 @@ - + @@ -8500,7 +8500,7 @@ - + @@ -8520,7 +8520,7 @@ - + @@ -8540,7 +8540,7 @@ - + @@ -8580,7 +8580,7 @@ - + @@ -8590,7 +8590,7 @@ - + @@ -8600,7 +8600,7 @@ - + @@ -8610,7 +8610,7 @@ - + @@ -8630,7 +8630,7 @@ - + @@ -8650,7 +8650,7 @@ - + @@ -8660,7 +8660,7 @@ - + @@ -8720,7 +8720,7 @@ - + @@ -8760,7 +8760,7 @@ - + @@ -8780,7 +8780,7 @@ - + @@ -8790,7 +8790,7 @@ - + @@ -8830,7 +8830,7 @@ - + @@ -8840,7 +8840,7 @@ - + @@ -8910,7 +8910,7 @@ - + @@ -8920,7 +8920,7 @@ - + @@ -8990,7 +8990,7 @@ - + @@ -9000,7 +9000,7 @@ - + @@ -9010,7 +9010,7 @@ - + @@ -9020,7 +9020,7 @@ - + @@ -9060,7 +9060,7 @@ - + @@ -9070,7 +9070,7 @@ - + @@ -9080,7 +9080,7 @@ - + @@ -9120,7 +9120,7 @@ - + @@ -9160,7 +9160,7 @@ - + @@ -9200,7 +9200,7 @@ - + @@ -9260,7 +9260,7 @@ - + @@ -9290,7 +9290,7 @@ - + @@ -9300,7 +9300,7 @@ - + @@ -9310,7 +9310,7 @@ - + @@ -9330,7 +9330,7 @@ - + @@ -9360,7 +9360,7 @@ - + @@ -9380,7 +9380,7 @@ - + @@ -9400,7 +9400,7 @@ - + @@ -9410,7 +9410,7 @@ - + @@ -9420,7 +9420,7 @@ - + @@ -9450,7 +9450,7 @@ - + @@ -9470,7 +9470,7 @@ - + @@ -9530,7 +9530,7 @@ - + @@ -9560,7 +9560,7 @@ - + @@ -9570,7 +9570,7 @@ - + @@ -9590,7 +9590,7 @@ - + @@ -9600,7 +9600,7 @@ - + @@ -9610,7 +9610,7 @@ - + @@ -9640,7 +9640,7 @@ - + @@ -9670,7 +9670,7 @@ - + @@ -9730,7 +9730,7 @@ - + @@ -9740,7 +9740,7 @@ - + @@ -9750,7 +9750,7 @@ - + @@ -9760,7 +9760,7 @@ - + @@ -9780,7 +9780,7 @@ - + @@ -9850,7 +9850,7 @@ - + @@ -9870,7 +9870,7 @@ - + @@ -9880,7 +9880,7 @@ - + @@ -9890,7 +9890,7 @@ - + @@ -9920,7 +9920,7 @@ - + @@ -9930,7 +9930,7 @@ - + @@ -9960,7 +9960,7 @@ - + @@ -9980,7 +9980,7 @@ - + @@ -10050,7 +10050,7 @@ - + @@ -10070,7 +10070,7 @@ - + @@ -10110,7 +10110,7 @@ - + @@ -10130,7 +10130,7 @@ - + @@ -10140,7 +10140,7 @@ - + @@ -10180,7 +10180,7 @@ - + @@ -10200,7 +10200,7 @@ - + @@ -10220,7 +10220,7 @@ - + @@ -10230,7 +10230,7 @@ - + @@ -10240,7 +10240,7 @@ - + @@ -10280,7 +10280,7 @@ - + @@ -10310,7 +10310,7 @@ - + @@ -10320,7 +10320,7 @@ - + @@ -10330,7 +10330,7 @@ - + @@ -10360,7 +10360,7 @@ - + @@ -10400,7 +10400,7 @@ - + @@ -10430,7 +10430,7 @@ - + @@ -10440,7 +10440,7 @@ - + @@ -10450,7 +10450,7 @@ - + @@ -10460,7 +10460,7 @@ - + @@ -10470,7 +10470,7 @@ - + @@ -10480,7 +10480,7 @@ - + @@ -10490,7 +10490,7 @@ - + @@ -10500,7 +10500,7 @@ - + @@ -10510,7 +10510,7 @@ - + @@ -10520,7 +10520,7 @@ - + @@ -10530,7 +10530,7 @@ - + @@ -10550,7 +10550,7 @@ - + @@ -10560,7 +10560,7 @@ - + @@ -10600,7 +10600,7 @@ - + @@ -10620,7 +10620,7 @@ - + @@ -10650,7 +10650,7 @@ - + @@ -10710,7 +10710,7 @@ - + @@ -10730,7 +10730,7 @@ - + @@ -10750,7 +10750,7 @@ - + @@ -10760,7 +10760,7 @@ - + @@ -10780,7 +10780,7 @@ - + @@ -10790,7 +10790,7 @@ - + @@ -10810,7 +10810,7 @@ - + @@ -10830,7 +10830,7 @@ - + @@ -10850,7 +10850,7 @@ - + @@ -10860,7 +10860,7 @@ - + @@ -10870,7 +10870,7 @@ - + @@ -10890,7 +10890,7 @@ - + @@ -10910,7 +10910,7 @@ - + @@ -10950,7 +10950,7 @@ - + @@ -10980,7 +10980,7 @@ - + @@ -11030,7 +11030,7 @@ - + @@ -11040,7 +11040,7 @@ - + @@ -11070,7 +11070,7 @@ - + @@ -11080,7 +11080,7 @@ - + @@ -11100,7 +11100,7 @@ - + @@ -11110,7 +11110,7 @@ - + @@ -11130,7 +11130,7 @@ - + @@ -11140,7 +11140,7 @@ - + @@ -11150,7 +11150,7 @@ - + @@ -11170,7 +11170,7 @@ - + @@ -11190,7 +11190,7 @@ - + @@ -11200,7 +11200,7 @@ - + @@ -11220,7 +11220,7 @@ - + @@ -11250,7 +11250,7 @@ - + @@ -11270,7 +11270,7 @@ - + @@ -11280,7 +11280,7 @@ - + @@ -11300,7 +11300,7 @@ - + @@ -11310,7 +11310,7 @@ - + @@ -11320,7 +11320,7 @@ - + @@ -11330,7 +11330,7 @@ - + @@ -11380,7 +11380,7 @@ - + @@ -11410,7 +11410,7 @@ - + @@ -11450,7 +11450,7 @@ - + @@ -11470,7 +11470,7 @@ - + @@ -11500,7 +11500,7 @@ - + @@ -11510,7 +11510,7 @@ - + @@ -11530,7 +11530,7 @@ - + @@ -11540,7 +11540,7 @@ - + @@ -11570,7 +11570,7 @@ - + @@ -11660,7 +11660,7 @@ - + @@ -11670,7 +11670,7 @@ - + @@ -11700,7 +11700,7 @@ - + @@ -11710,7 +11710,7 @@ - + @@ -11740,7 +11740,7 @@ - + @@ -11750,7 +11750,7 @@ - + @@ -11780,7 +11780,7 @@ - + @@ -11860,7 +11860,7 @@ - + @@ -11880,7 +11880,7 @@ - + @@ -11890,7 +11890,7 @@ - + @@ -11910,7 +11910,7 @@ - + @@ -11920,7 +11920,7 @@ - + @@ -11960,7 +11960,7 @@ - + @@ -11970,7 +11970,7 @@ - + @@ -11980,7 +11980,7 @@ - + @@ -12010,7 +12010,7 @@ - + @@ -12030,7 +12030,7 @@ - + @@ -12040,7 +12040,7 @@ - + @@ -12050,7 +12050,7 @@ - + @@ -12090,7 +12090,7 @@ - + @@ -12110,7 +12110,7 @@ - + @@ -12140,7 +12140,7 @@ - + @@ -12200,7 +12200,7 @@ - + @@ -12240,7 +12240,7 @@ - + @@ -12250,7 +12250,7 @@ - + @@ -12280,7 +12280,7 @@ - + @@ -12310,7 +12310,7 @@ - + @@ -12340,7 +12340,7 @@ - + @@ -12360,7 +12360,7 @@ - + @@ -12410,7 +12410,7 @@ - + @@ -12430,7 +12430,7 @@ - + @@ -12460,7 +12460,7 @@ - + @@ -12570,7 +12570,7 @@ - + @@ -12610,7 +12610,7 @@ - + @@ -12620,7 +12620,7 @@ - + @@ -12660,7 +12660,7 @@ - + @@ -12670,7 +12670,7 @@ - + @@ -12690,7 +12690,7 @@ - + @@ -12700,7 +12700,7 @@ - + @@ -12720,7 +12720,7 @@ - + @@ -12770,7 +12770,7 @@ - + @@ -12780,7 +12780,7 @@ - + @@ -12790,7 +12790,7 @@ - + @@ -12810,7 +12810,7 @@ - + @@ -12830,7 +12830,7 @@ - + @@ -12850,7 +12850,7 @@ - + @@ -12870,7 +12870,7 @@ - + @@ -12920,7 +12920,7 @@ - + @@ -12950,7 +12950,7 @@ - + @@ -13010,7 +13010,7 @@ - + @@ -13030,7 +13030,7 @@ - + @@ -13040,7 +13040,7 @@ - + @@ -13060,7 +13060,7 @@ - + @@ -13080,7 +13080,7 @@ - + @@ -13090,7 +13090,7 @@ - + @@ -13100,7 +13100,7 @@ - + @@ -13120,7 +13120,7 @@ - + @@ -13130,7 +13130,7 @@ - + @@ -13140,7 +13140,7 @@ - + @@ -13150,7 +13150,7 @@ - + @@ -13160,7 +13160,7 @@ - + @@ -13170,7 +13170,7 @@ - + @@ -13190,7 +13190,7 @@ - + @@ -13200,7 +13200,7 @@ - + @@ -13210,7 +13210,7 @@ - + @@ -13230,7 +13230,7 @@ - + @@ -13260,7 +13260,7 @@ - + @@ -13310,7 +13310,7 @@ - + @@ -13330,7 +13330,7 @@ - + @@ -13390,7 +13390,7 @@ - + @@ -13400,7 +13400,7 @@ - + @@ -13430,7 +13430,7 @@ - + @@ -13440,7 +13440,7 @@ - + @@ -13450,7 +13450,7 @@ - + @@ -13460,7 +13460,7 @@ - + @@ -13470,7 +13470,7 @@ - + @@ -13490,7 +13490,7 @@ - + @@ -13500,7 +13500,7 @@ - + @@ -13510,7 +13510,7 @@ - + @@ -13530,7 +13530,7 @@ - + @@ -13600,7 +13600,7 @@ - + @@ -13610,7 +13610,7 @@ - + @@ -13650,7 +13650,7 @@ - + @@ -13670,7 +13670,7 @@ - + @@ -13690,7 +13690,7 @@ - + @@ -13710,7 +13710,7 @@ - + @@ -13750,7 +13750,7 @@ - + @@ -13760,7 +13760,7 @@ - + @@ -13790,7 +13790,7 @@ - + @@ -13800,7 +13800,7 @@ - + @@ -13830,7 +13830,7 @@ - + @@ -13940,7 +13940,7 @@ - + @@ -13990,7 +13990,7 @@ - + @@ -14000,7 +14000,7 @@ - + @@ -14030,7 +14030,7 @@ - + @@ -14140,7 +14140,7 @@ - + @@ -14150,7 +14150,7 @@ - + @@ -14170,7 +14170,7 @@ - + @@ -14190,7 +14190,7 @@ - + @@ -14230,7 +14230,7 @@ - + @@ -14270,7 +14270,7 @@ - + @@ -14280,7 +14280,7 @@ - + @@ -14310,7 +14310,7 @@ - + @@ -14320,7 +14320,7 @@ - + @@ -14330,7 +14330,7 @@ - + @@ -14350,7 +14350,7 @@ - + @@ -14360,7 +14360,7 @@ - + @@ -14370,7 +14370,7 @@ - + @@ -14380,7 +14380,7 @@ - + @@ -14410,7 +14410,7 @@ - + @@ -14450,7 +14450,7 @@ - + @@ -14470,7 +14470,7 @@ - + @@ -14490,7 +14490,7 @@ - + @@ -14520,7 +14520,7 @@ - + @@ -14570,7 +14570,7 @@ - + @@ -14580,7 +14580,7 @@ - + @@ -14610,7 +14610,7 @@ - + @@ -14620,7 +14620,7 @@ - + @@ -14630,7 +14630,7 @@ - + @@ -14640,7 +14640,7 @@ - + @@ -14670,7 +14670,7 @@ - + @@ -14700,7 +14700,7 @@ - + @@ -14720,7 +14720,7 @@ - + @@ -14730,7 +14730,7 @@ - + @@ -14740,7 +14740,7 @@ - + @@ -14770,7 +14770,7 @@ - + @@ -14870,7 +14870,7 @@ - + @@ -14890,7 +14890,7 @@ - + @@ -14900,7 +14900,7 @@ - + @@ -14910,7 +14910,7 @@ - + @@ -14920,7 +14920,7 @@ - + @@ -14930,7 +14930,7 @@ - + @@ -14990,7 +14990,7 @@ - + @@ -15010,7 +15010,7 @@ - + @@ -15040,7 +15040,7 @@ - + @@ -15080,7 +15080,7 @@ - + @@ -15140,7 +15140,7 @@ - + @@ -15160,7 +15160,7 @@ - + @@ -15180,7 +15180,7 @@ - + @@ -15190,7 +15190,7 @@ - + @@ -15220,7 +15220,7 @@ - + @@ -15230,7 +15230,7 @@ - + @@ -15250,7 +15250,7 @@ - + @@ -15290,7 +15290,7 @@ - + @@ -15300,7 +15300,7 @@ - + @@ -15360,7 +15360,7 @@ - + @@ -15410,7 +15410,7 @@ - + @@ -15440,7 +15440,7 @@ - + @@ -15450,7 +15450,7 @@ - + @@ -15490,7 +15490,7 @@ - + @@ -15500,7 +15500,7 @@ - + @@ -15530,7 +15530,7 @@ - + @@ -15540,7 +15540,7 @@ - + @@ -15590,7 +15590,7 @@ - + @@ -15640,7 +15640,7 @@ - + @@ -15660,7 +15660,7 @@ - + @@ -15670,7 +15670,7 @@ - + @@ -15690,7 +15690,7 @@ - + @@ -15700,7 +15700,7 @@ - + @@ -15820,7 +15820,7 @@ - + @@ -15830,7 +15830,7 @@ - + @@ -15880,7 +15880,7 @@ - + @@ -15890,7 +15890,7 @@ - + @@ -15900,7 +15900,7 @@ - + @@ -15910,7 +15910,7 @@ - + @@ -15920,7 +15920,7 @@ - + @@ -15930,7 +15930,7 @@ - + @@ -15950,7 +15950,7 @@ - + @@ -15980,7 +15980,7 @@ - + @@ -16010,7 +16010,7 @@ - + @@ -16120,7 +16120,7 @@ - + @@ -16140,7 +16140,7 @@ - + @@ -16150,7 +16150,7 @@ - + @@ -16160,7 +16160,7 @@ - + @@ -16170,7 +16170,7 @@ - + @@ -16200,7 +16200,7 @@ - + @@ -16220,7 +16220,7 @@ - + @@ -16230,7 +16230,7 @@ - + @@ -16240,7 +16240,7 @@ - + @@ -16260,7 +16260,7 @@ - + @@ -16300,7 +16300,7 @@ - + @@ -16310,7 +16310,7 @@ - + @@ -16330,7 +16330,7 @@ - + @@ -16340,7 +16340,7 @@ - + @@ -16360,7 +16360,7 @@ - + @@ -16370,7 +16370,7 @@ - + @@ -16380,7 +16380,7 @@ - + @@ -16400,7 +16400,7 @@ - + @@ -16410,7 +16410,7 @@ - + @@ -16470,7 +16470,7 @@ - + @@ -16510,7 +16510,7 @@ - + @@ -16520,7 +16520,7 @@ - + @@ -16550,7 +16550,7 @@ - + @@ -16560,7 +16560,7 @@ - + @@ -16570,7 +16570,7 @@ - + @@ -16600,7 +16600,7 @@ - + @@ -16710,7 +16710,7 @@ - + @@ -16720,7 +16720,7 @@ - + @@ -16740,7 +16740,7 @@ - + @@ -16770,7 +16770,7 @@ - + @@ -16780,7 +16780,7 @@ - + @@ -16800,7 +16800,7 @@ - + @@ -16820,7 +16820,7 @@ - + @@ -16840,7 +16840,7 @@ - + @@ -16880,7 +16880,7 @@ - + @@ -16900,7 +16900,7 @@ - + @@ -16910,7 +16910,7 @@ - + @@ -16920,7 +16920,7 @@ - + @@ -16930,7 +16930,7 @@ - + @@ -16940,7 +16940,7 @@ - + @@ -16960,7 +16960,7 @@ - + @@ -17010,7 +17010,7 @@ - + @@ -17030,7 +17030,7 @@ - + @@ -17040,7 +17040,7 @@ - + @@ -17070,7 +17070,7 @@ - + @@ -17080,7 +17080,7 @@ - + @@ -17170,7 +17170,7 @@ - + @@ -17220,7 +17220,7 @@ - + @@ -17240,7 +17240,7 @@ - + @@ -17290,7 +17290,7 @@ - + @@ -17300,7 +17300,7 @@ - + @@ -17320,7 +17320,7 @@ - + @@ -17340,7 +17340,7 @@ - + @@ -17350,7 +17350,7 @@ - + @@ -17390,7 +17390,7 @@ - + @@ -17400,7 +17400,7 @@ - + @@ -17410,7 +17410,7 @@ - + @@ -17430,7 +17430,7 @@ - + @@ -17470,7 +17470,7 @@ - + @@ -17480,7 +17480,7 @@ - + @@ -17490,7 +17490,7 @@ - + @@ -17510,7 +17510,7 @@ - + @@ -17530,7 +17530,7 @@ - + @@ -17540,7 +17540,7 @@ - + @@ -17560,7 +17560,7 @@ - + @@ -17570,7 +17570,7 @@ - + @@ -17580,7 +17580,7 @@ - + @@ -17620,7 +17620,7 @@ - + @@ -17650,7 +17650,7 @@ - + @@ -17660,7 +17660,7 @@ - + @@ -17690,7 +17690,7 @@ - + @@ -17750,7 +17750,7 @@ - + @@ -17760,7 +17760,7 @@ - + @@ -17770,7 +17770,7 @@ - + @@ -17790,7 +17790,7 @@ - + @@ -17880,7 +17880,7 @@ - + @@ -17890,7 +17890,7 @@ - + @@ -17910,7 +17910,7 @@ - + @@ -17950,7 +17950,7 @@ - + @@ -17960,7 +17960,7 @@ - + @@ -17990,7 +17990,7 @@ - + @@ -18000,7 +18000,7 @@ - + @@ -18030,7 +18030,7 @@ - + @@ -18060,7 +18060,7 @@ - + @@ -18140,7 +18140,7 @@ - + @@ -18160,7 +18160,7 @@ - + @@ -18180,7 +18180,7 @@ - + @@ -18190,7 +18190,7 @@ - + @@ -18200,7 +18200,7 @@ - + @@ -18210,7 +18210,7 @@ - + @@ -18240,7 +18240,7 @@ - + @@ -18290,7 +18290,7 @@ - + @@ -18300,7 +18300,7 @@ - + @@ -18320,7 +18320,7 @@ - + @@ -18330,7 +18330,7 @@ - + @@ -18360,7 +18360,7 @@ - + @@ -18370,7 +18370,7 @@ - + @@ -18380,7 +18380,7 @@ - + @@ -18400,7 +18400,7 @@ - + @@ -18420,7 +18420,7 @@ - + @@ -18430,7 +18430,7 @@ - + @@ -18460,7 +18460,7 @@ - + @@ -18480,7 +18480,7 @@ - + @@ -18490,7 +18490,7 @@ - + @@ -18520,7 +18520,7 @@ - + @@ -18550,7 +18550,7 @@ - + @@ -18570,7 +18570,7 @@ - + @@ -18590,7 +18590,7 @@ - + @@ -18630,7 +18630,7 @@ - + @@ -18640,7 +18640,7 @@ - + @@ -18650,7 +18650,7 @@ - + @@ -18690,7 +18690,7 @@ - + @@ -18730,7 +18730,7 @@ - + @@ -18750,7 +18750,7 @@ - + @@ -18760,7 +18760,7 @@ - + @@ -18780,7 +18780,7 @@ - + @@ -18790,7 +18790,7 @@ - + @@ -18800,7 +18800,7 @@ - + @@ -18820,7 +18820,7 @@ - + @@ -18830,7 +18830,7 @@ - + @@ -18850,7 +18850,7 @@ - + @@ -18870,7 +18870,7 @@ - + @@ -18880,7 +18880,7 @@ - + @@ -18890,7 +18890,7 @@ - + @@ -18910,7 +18910,7 @@ - + @@ -18920,7 +18920,7 @@ - + @@ -18990,7 +18990,7 @@ - + @@ -19040,7 +19040,7 @@ - + @@ -19050,7 +19050,7 @@ - + @@ -19130,7 +19130,7 @@ - + @@ -19160,7 +19160,7 @@ - + @@ -19170,7 +19170,7 @@ - + @@ -19220,7 +19220,7 @@ - + @@ -19240,7 +19240,7 @@ - + @@ -19250,7 +19250,7 @@ - + @@ -19280,7 +19280,7 @@ - + @@ -19290,7 +19290,7 @@ - + @@ -19300,7 +19300,7 @@ - + @@ -19340,7 +19340,7 @@ - + @@ -19350,7 +19350,7 @@ - + @@ -19370,7 +19370,7 @@ - + @@ -19450,7 +19450,7 @@ - + @@ -19470,7 +19470,7 @@ - + @@ -19500,7 +19500,7 @@ - + @@ -19530,7 +19530,7 @@ - + @@ -19540,7 +19540,7 @@ - + @@ -19580,7 +19580,7 @@ - + @@ -19600,7 +19600,7 @@ - + @@ -19620,7 +19620,7 @@ - + @@ -19670,7 +19670,7 @@ - + @@ -19680,7 +19680,7 @@ - + @@ -19720,7 +19720,7 @@ - + @@ -19760,7 +19760,7 @@ - + @@ -19770,7 +19770,7 @@ - + @@ -19780,7 +19780,7 @@ - + @@ -19790,7 +19790,7 @@ - + @@ -19920,7 +19920,7 @@ - + @@ -19940,7 +19940,7 @@ - + @@ -19990,7 +19990,7 @@ - + @@ -20000,7 +20000,7 @@ - + @@ -20020,7 +20020,7 @@ - + @@ -20030,7 +20030,7 @@ - + @@ -20040,7 +20040,7 @@ - + @@ -20080,7 +20080,7 @@ - + @@ -20110,7 +20110,7 @@ - + @@ -20130,7 +20130,7 @@ - + @@ -20170,7 +20170,7 @@ - + @@ -20200,7 +20200,7 @@ - + @@ -20210,7 +20210,7 @@ - + @@ -20220,7 +20220,7 @@ - + diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index fe507113..7afb1215 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -18,10 +18,22 @@ namespace generator::figures { -SolarSystem::SolarSystem(float scale) { +SolarSystem::SolarSystem(float sceneScale, + float sunSizeFactor, + float planetSizeFactor, + float moonSizeFactor, + float distanceFactor, + float asteroidBeltDensity, + float ringSizeFactor) { createWorld(); configureCamera(); - generateSolarSystem(scale); + generateSolarSystem(sceneScale, + sunSizeFactor, + planetSizeFactor, + moonSizeFactor, + distanceFactor, + asteroidBeltDensity, + ringSizeFactor); writeToFile("scene_solarSystem.xml"); } @@ -64,135 +76,276 @@ void SolarSystem::configureCamera() { camera->InsertEndChild(projection); } -void SolarSystem::generateSolarSystem(float scale) { +void SolarSystem::generateSolarSystem(float sceneScale, + float sunSizeFactor, + float planetSizeFactor, + float moonSizeFactor, + float distanceFactor, + float asteroidBeltDensity, + float ringSizeFactor) { tinyxml2::XMLElement *world = doc.FirstChildElement("world"); tinyxml2::XMLElement *solarSystem = doc.NewElement("group"); world->InsertEndChild(solarSystem); - tinyxml2::XMLElement *sun = - addCelestialBody(solarSystem, 0, 0, 0, 30 * scale, "../models/sphere.3d", 0, 0, 0, 0); + tinyxml2::XMLElement *sun = addCelestialBody(solarSystem, + 0, + 0, + 0, + 30 * sceneScale * sunSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + + addCelestialBody(sun, + 12 * sceneScale * distanceFactor, + 2 * distanceFactor, + -3 * distanceFactor, + 0.15 * sceneScale * planetSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); - tinyxml2::XMLElement *mercury = - addCelestialBody(sun, 12 * scale, 2, -3, 0.15 * scale, "../models/sphere.3d", 0, 0, 0, 0); - tinyxml2::XMLElement *venus = - addCelestialBody(sun, 20 * scale, -1.5, 2, 0.18 * scale, "../models/sphere.3d", 0, 0, 0, 0); + addCelestialBody(sun, + 20 * sceneScale * distanceFactor, + -1.5 * distanceFactor, + 2 * distanceFactor, + 0.18 * sceneScale * planetSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); - tinyxml2::XMLElement *earth = - addCelestialBody(sun, 28 * scale, 0, -3, 0.2 * scale, "../models/sphere.3d", 0, 0, 0, 0); - addCelestialBody(earth, 3 * scale, 0, 0, 0.05 * scale, "../models/sphere.3d", 0, 0, 0, 0); + tinyxml2::XMLElement *earth = addCelestialBody(sun, + 28 * sceneScale * distanceFactor, + 0 * distanceFactor, + -3 * distanceFactor, + 0.2 * sceneScale * planetSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(earth, + 3 * sceneScale, + 0, + 0, + 0.05 * sceneScale * moonSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); - tinyxml2::XMLElement *mars = - addCelestialBody(sun, 36 * scale, 1.5, 5, 0.15 * scale, "../models/sphere.3d", 0, 0, 0, 0); - addCelestialBody(mars, 2 * scale, 0.5, 0, 0.04 * scale, "../models/sphere.3d", 0, 0, 0, 0); - addCelestialBody(mars, -1.5 * scale, -0.3, 1, 0.03 * scale, "../models/sphere.3d", 0, 0, 0, 0); + tinyxml2::XMLElement *mars = addCelestialBody(sun, + 36 * sceneScale * distanceFactor, + 1.5 * distanceFactor, + 5 * distanceFactor, + 0.15 * sceneScale * planetSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(mars, + 2 * sceneScale, + 0.5, + 0, + 0.04 * sceneScale * moonSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(mars, + -1.5 * sceneScale, + -0.3, + 1, + 0.03 * sceneScale * moonSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); - tinyxml2::XMLElement *jupiter = - addCelestialBody(sun, 56 * scale, -2, -6, 0.5 * scale, "../models/sphere.3d", 0, 0, 0, 0); + tinyxml2::XMLElement *jupiter = addCelestialBody(sun, + 56 * sceneScale * distanceFactor, + -2 * distanceFactor, + -6 * distanceFactor, + 0.5 * sceneScale * planetSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); addCelestialBody(jupiter, - 5 * scale, - 3 * scale, + 5 * sceneScale, + 3 * sceneScale, 4, - 0.1 * scale, + 0.1 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); addCelestialBody(jupiter, - -4 * scale, - 2.5 * scale, + -4 * sceneScale, + 2.5 * sceneScale, -5, - 0.7 * scale, + 0.7 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); addCelestialBody(jupiter, - 3 * scale, - -2 * scale, + 3 * sceneScale, + -2 * sceneScale, 3, - 0.6 * scale, + 0.6 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); addCelestialBody(jupiter, - -3 * scale, - 1 * scale, + -3 * sceneScale, + 1 * sceneScale, -2, - 0.05 * scale, + 0.05 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); - tinyxml2::XMLElement *saturn = - addCelestialBody(sun, 79 * scale, 2, -10, 0.4 * scale, "../models/sphere.3d", 0, 0, 0, 0); - addCelestialBody(saturn, 0, 0, 0, 0.4, "../models/torus.3d", 26.7, 0, 0, 1); + tinyxml2::XMLElement *saturn = addCelestialBody(sun, + 79 * sceneScale * distanceFactor, + 2 * distanceFactor, + -10 * distanceFactor, + 0.4 * sceneScale * planetSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(saturn, + 0, + 0, + 0, + 0.6 * sceneScale * ringSizeFactor, + "../models/torus.3d", + 26.7, + 0, + 0, + 1); addCelestialBody(saturn, - 10 * scale, - 5 * scale, + 10 * sceneScale, + 5 * sceneScale, 7, - 0.15 * scale, + 0.15 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); addCelestialBody(saturn, - -8 * scale, - 4 * scale, + -8 * sceneScale, + 4 * sceneScale, -8, - 0.12 * scale, + 0.12 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); - tinyxml2::XMLElement *uranus = - addCelestialBody(sun, 92 * scale, -4, -12, 0.3 * scale, "../models/sphere.3d", 0, 0, 0, 0); - addCelestialBody(uranus, 0, 0, 0, 0.3, "../models/torus.3d", 90, 1, 0, 0); + tinyxml2::XMLElement *uranus = addCelestialBody(sun, + 92 * sceneScale * distanceFactor, + -4 * distanceFactor, + -12 * distanceFactor, + 0.3 * sceneScale * planetSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); addCelestialBody(uranus, - 4 * scale, - 2 * scale, + 0, + 0, + 0, + 0.5 * sceneScale * ringSizeFactor, + "../models/torus.3d", + 90, + 1, + 0, + 0); + addCelestialBody(uranus, + 4 * sceneScale, + 2 * sceneScale, 3, - 0.05 * scale, + 0.05 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); addCelestialBody(uranus, - -3.5 * scale, - 1.5 * scale, + -3.5 * sceneScale, + 1.5 * sceneScale, -3, - 0.04 * scale, + 0.04 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); - tinyxml2::XMLElement *neptune = - addCelestialBody(sun, 105 * scale, 5, -15, 0.3 * scale, "../models/sphere.3d", 0, 0, 0, 0); - addCelestialBody(neptune, 0, 0, 0, 0.25, "../models/torus.3d", 28.3, 0, 0, 1); + tinyxml2::XMLElement *neptune = addCelestialBody(sun, + 105 * sceneScale * distanceFactor, + 5 * distanceFactor, + -15 * distanceFactor, + 0.3 * sceneScale * planetSizeFactor, + "../models/sphere.3d", + 0, + 0, + 0, + 0); + addCelestialBody(neptune, + 0, + 0, + 0, + 0.45 * sceneScale * ringSizeFactor, + "../models/torus.3d", + 28.3, + 0, + 0, + 1); addCelestialBody(neptune, - 5 * scale, - 2.5 * scale, + 5 * sceneScale, + 2.5 * sceneScale, 4, - 0.05 * scale, + 0.05 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, 0, 0); - addAsteroidBelt(sun, 40 * scale, 49 * scale, 600, scale); - addAsteroidBelt(sun, 120 * scale, 150 * scale, 1400, scale); + addAsteroidBelt(sun, + 40 * sceneScale * distanceFactor, + 49 * sceneScale * distanceFactor, + 600 * asteroidBeltDensity, + sceneScale); + addAsteroidBelt(sun, + 120 * sceneScale * distanceFactor, + 150 * sceneScale * distanceFactor, + 1400 * asteroidBeltDensity, + sceneScale); } tinyxml2::XMLElement *SolarSystem::addCelestialBody(tinyxml2::XMLElement *parent, @@ -247,7 +400,7 @@ void SolarSystem::addAsteroidBelt(tinyxml2::XMLElement *parent, float minDist, float maxDist, int numAsteroids, - float scale) { + float sceneScale) { tinyxml2::XMLElement *asteroidBelt = doc.NewElement("group"); parent->InsertEndChild(asteroidBelt); @@ -262,8 +415,7 @@ void SolarSystem::addAsteroidBelt(tinyxml2::XMLElement *parent, float z = distance * sin(angle); float y = static_cast(rand()) / (RAND_MAX / 10.0f) - 5.0f; - float size = - 0.01 * scale + static_cast(rand()) / RAND_MAX * (0.06 * scale - 0.01 * scale); + float size = (0.01 + (static_cast(rand()) / RAND_MAX) * (0.06 - 0.01)) * sceneScale; std::string modelFile = models[rand() % models.size()]; diff --git a/src/generator/main.cpp b/src/generator/main.cpp index 2a025731..5ce7e950 100644 --- a/src/generator/main.cpp +++ b/src/generator/main.cpp @@ -29,22 +29,38 @@ namespace generator { void printUsage(const std::string &programName) { std::cerr << "Wrong usage. Here's the correct one:" << std::endl; - std::cerr << " " << programName - << " plane " << std::endl; - std::cerr << " " << programName - << " box " << std::endl; - std::cerr << " " << programName - << " sphere " << std::endl; - std::cerr << " " << programName - << " cone " << std::endl; - std::cerr << " " << programName - << " cylinder " << std::endl; - std::cerr << " " << programName - << " torus " << std::endl; - std::cerr << " " << programName - << " kleinBottle " << std::endl; - std::cerr << " " << programName - << " solarSystem " << std::endl; + std::cerr + << " " << programName + << " plane " + << std::endl; + std::cerr + << " " << programName + << " box " + << std::endl; + std::cerr + << " " << programName + << " sphere " + << std::endl; + std::cerr + << " " << programName + << " cone " + << std::endl; + std::cerr + << " " << programName + << " cylinder " + << std::endl; + std::cerr + << " " << programName + << " torus " + << std::endl; + std::cerr + << " " << programName + << " kleinBottle " + << std::endl; + std::cerr + << " " << programName + << " solarSystem " + << std::endl; } double stringToDouble(const std::string &str) { @@ -141,12 +157,34 @@ int main(int argc, char **argv) { figures::KleinBottle kleinbottle(radius, slices, stacks); kleinbottle.writeToFile(file); } else if (args.at(1) == "solarSystem") { - validateArgumentCount(argc, 4); - double scale = stringToDouble(args.at(2)); - const std::string &file = args.at(3); - - figures::SolarSystem solarSystem(scale); - solarSystem.writeToFile(file); + if (argc == 4) { + validateArgumentCount(argc, 4); + double sceneScale = stringToDouble(args.at(2)); + const std::string &file = args.at(3); + + figures::SolarSystem solarSystem(sceneScale, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0); + solarSystem.writeToFile(file); + } else if (argc == 10) { + validateArgumentCount(argc, 10); + double sceneScale = stringToDouble(args.at(2)); + double sunSizeFactor = stringToDouble(args.at(3)); + double planetSizeFactor = stringToDouble(args.at(4)); + double moonSizeFactor = stringToDouble(args.at(5)); + double distanceFactor = stringToDouble(args.at(6)); + double asteroidBeltDensity = stringToDouble(args.at(7)); + double ringSizeFactor = stringToDouble(args.at(8)); + const std::string &file = args.at(9); + + figures::SolarSystem solarSystem(sceneScale, + sunSizeFactor, + planetSizeFactor, + moonSizeFactor, + distanceFactor, + asteroidBeltDensity, + ringSizeFactor); + + solarSystem.writeToFile(file); + } } else { printUsage(args[0]); } From ebe99b50be84772ef0fd93c153564b41a8717782 Mon Sep 17 00:00:00 2001 From: sara Date: Thu, 13 Mar 2025 23:00:37 +0000 Subject: [PATCH 07/14] =?UTF-8?q?Fix=20lit=20error=20n=C2=BA1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/generator/figures/SolarSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index 7afb1215..fb17060c 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -52,7 +52,7 @@ void SolarSystem::configureCamera() { camera->SetAttribute("type", "free"); doc.FirstChildElement("world")->InsertEndChild(camera); - struct { + const struct { const char *name; float x, y, z; } cameraSettings[] = { From 857188d241f99521067ab5dfe6183c3d747f6e69 Mon Sep 17 00:00:00 2001 From: sara Date: Thu, 13 Mar 2025 23:03:37 +0000 Subject: [PATCH 08/14] =?UTF-8?q?Fix=20lint=20error=20n=C2=BA2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/generator/figures/SolarSystem.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp index 77a1093c..6ed7ab88 100644 --- a/include/generator/figures/SolarSystem.hpp +++ b/include/generator/figures/SolarSystem.hpp @@ -26,12 +26,12 @@ class SolarSystem { void createWorld(); void configureCamera(); - void generateSolarSystem(float sunSizeFactor, + void generateSolarSystem(float sceneScale, + float sunSizeFactor, float planetSizeFactor, float moonSizeFactor, float distanceFactor, float asteroidBeltDensity, - float sceneScale, float ringSizeFactor); tinyxml2::XMLElement *addCelestialBody(tinyxml2::XMLElement *parent, From 990825cea4b8577e7255002e0a35718b3d55ad2a Mon Sep 17 00:00:00 2001 From: sara Date: Fri, 14 Mar 2025 15:51:35 +0000 Subject: [PATCH 09/14] Minor fix --- res/scenes/scene_solarSystem.xml | 10 +++++----- src/generator/figures/SolarSystem.cpp | 10 +++++----- src/generator/main.cpp | 5 +++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/res/scenes/scene_solarSystem.xml b/res/scenes/scene_solarSystem.xml index 87f56453..3b8e1067 100644 --- a/res/scenes/scene_solarSystem.xml +++ b/res/scenes/scene_solarSystem.xml @@ -98,7 +98,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -116,7 +116,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -199,7 +199,7 @@ - + diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index fb17060c..3a318e9d 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -196,7 +196,7 @@ void SolarSystem::generateSolarSystem(float sceneScale, -4 * sceneScale, 2.5 * sceneScale, -5, - 0.7 * sceneScale * moonSizeFactor, + 0.3 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, @@ -206,7 +206,7 @@ void SolarSystem::generateSolarSystem(float sceneScale, 3 * sceneScale, -2 * sceneScale, 3, - 0.6 * sceneScale * moonSizeFactor, + 0.3 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, @@ -216,7 +216,7 @@ void SolarSystem::generateSolarSystem(float sceneScale, -3 * sceneScale, 1 * sceneScale, -2, - 0.05 * sceneScale * moonSizeFactor, + 0.1 * sceneScale * moonSizeFactor, "../models/sphere.3d", 0, 0, @@ -224,7 +224,7 @@ void SolarSystem::generateSolarSystem(float sceneScale, 0); tinyxml2::XMLElement *saturn = addCelestialBody(sun, - 79 * sceneScale * distanceFactor, + 74 * sceneScale * distanceFactor, 2 * distanceFactor, -10 * distanceFactor, 0.4 * sceneScale * planetSizeFactor, @@ -306,7 +306,7 @@ void SolarSystem::generateSolarSystem(float sceneScale, 0); tinyxml2::XMLElement *neptune = addCelestialBody(sun, - 105 * sceneScale * distanceFactor, + 110 * sceneScale * distanceFactor, 5 * distanceFactor, -15 * distanceFactor, 0.3 * sceneScale * planetSizeFactor, diff --git a/src/generator/main.cpp b/src/generator/main.cpp index 5ce7e950..3c96dd34 100644 --- a/src/generator/main.cpp +++ b/src/generator/main.cpp @@ -158,14 +158,12 @@ int main(int argc, char **argv) { kleinbottle.writeToFile(file); } else if (args.at(1) == "solarSystem") { if (argc == 4) { - validateArgumentCount(argc, 4); double sceneScale = stringToDouble(args.at(2)); const std::string &file = args.at(3); figures::SolarSystem solarSystem(sceneScale, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0); solarSystem.writeToFile(file); } else if (argc == 10) { - validateArgumentCount(argc, 10); double sceneScale = stringToDouble(args.at(2)); double sunSizeFactor = stringToDouble(args.at(3)); double planetSizeFactor = stringToDouble(args.at(4)); @@ -184,6 +182,9 @@ int main(int argc, char **argv) { ringSizeFactor); solarSystem.writeToFile(file); + } else { + printUsage(args[0]); + return 1; } } else { printUsage(args[0]); From 10cd6535de41ba7ddd749c7139fc383431b9084f Mon Sep 17 00:00:00 2001 From: sara Date: Sun, 16 Mar 2025 11:02:53 +0000 Subject: [PATCH 10/14] Flattened rings --- res/scenes/scene_solarSystem.xml | 8088 ++++++++++++------------- src/generator/figures/SolarSystem.cpp | 12 +- 2 files changed, 4053 insertions(+), 4047 deletions(-) diff --git a/res/scenes/scene_solarSystem.xml b/res/scenes/scene_solarSystem.xml index 3b8e1067..2dd2a161 100644 --- a/res/scenes/scene_solarSystem.xml +++ b/res/scenes/scene_solarSystem.xml @@ -10,15 +10,15 @@ - + - - + + @@ -26,8 +26,8 @@ - - + + @@ -35,16 +35,16 @@ - - + + - - + + @@ -53,16 +53,16 @@ - - + + - - + + @@ -70,8 +70,8 @@ - - + + @@ -80,16 +80,16 @@ - - + + - - + + @@ -97,8 +97,8 @@ - - + + @@ -106,8 +106,8 @@ - - + + @@ -115,8 +115,8 @@ - - + + @@ -125,8 +125,8 @@ - - + + @@ -135,7 +135,7 @@ - + @@ -143,8 +143,8 @@ - - + + @@ -152,8 +152,8 @@ - - + + @@ -162,8 +162,8 @@ - - + + @@ -172,7 +172,7 @@ - + @@ -180,8 +180,8 @@ - - + + @@ -189,8 +189,8 @@ - - + + @@ -199,8 +199,8 @@ - - + + @@ -209,7 +209,7 @@ - + @@ -217,8 +217,8 @@ - - + + @@ -228,9 +228,9 @@ - + - + @@ -238,9 +238,9 @@ - + - + @@ -248,9 +248,9 @@ - + - + @@ -258,9 +258,9 @@ - + - + @@ -268,9 +268,9 @@ - + - + @@ -278,9 +278,9 @@ - + - + @@ -288,9 +288,9 @@ - + - + @@ -298,9 +298,9 @@ - + - + @@ -308,9 +308,9 @@ - + - + @@ -318,9 +318,9 @@ - + - + @@ -328,9 +328,9 @@ - + - + @@ -338,9 +338,9 @@ - + - + @@ -348,9 +348,9 @@ - + - + @@ -358,9 +358,9 @@ - + - + @@ -368,9 +368,9 @@ - + - + @@ -378,9 +378,9 @@ - + - + @@ -388,9 +388,9 @@ - + - + @@ -398,9 +398,9 @@ - + - + @@ -408,9 +408,9 @@ - + - + @@ -418,9 +418,9 @@ - + - + @@ -428,9 +428,9 @@ - + - + @@ -438,9 +438,9 @@ - + - + @@ -448,9 +448,9 @@ - + - + @@ -458,9 +458,9 @@ - + - + @@ -468,9 +468,9 @@ - + - + @@ -478,9 +478,9 @@ - + - + @@ -488,9 +488,9 @@ - + - + @@ -498,9 +498,9 @@ - + - + @@ -508,9 +508,9 @@ - + - + @@ -518,9 +518,9 @@ - + - + @@ -528,9 +528,9 @@ - + - + @@ -538,9 +538,9 @@ - + - + @@ -548,9 +548,9 @@ - + - + @@ -558,9 +558,9 @@ - + - + @@ -568,9 +568,9 @@ - + - + @@ -578,9 +578,9 @@ - + - + @@ -588,9 +588,9 @@ - + - + @@ -598,9 +598,9 @@ - + - + @@ -608,9 +608,9 @@ - + - + @@ -618,9 +618,9 @@ - + - + @@ -628,9 +628,9 @@ - + - + @@ -638,9 +638,9 @@ - + - + @@ -648,9 +648,9 @@ - + - + @@ -658,9 +658,9 @@ - + - + @@ -668,9 +668,9 @@ - + - + @@ -678,9 +678,9 @@ - + - + @@ -688,9 +688,9 @@ - + - + @@ -698,9 +698,9 @@ - + - + @@ -708,9 +708,9 @@ - + - + @@ -718,9 +718,9 @@ - + - + @@ -728,9 +728,9 @@ - + - + @@ -738,9 +738,9 @@ - + - + @@ -748,9 +748,9 @@ - + - + @@ -758,9 +758,9 @@ - + - + @@ -768,9 +768,9 @@ - + - + @@ -778,9 +778,9 @@ - + - + @@ -788,9 +788,9 @@ - + - + @@ -798,9 +798,9 @@ - + - + @@ -808,9 +808,9 @@ - + - + @@ -818,9 +818,9 @@ - + - + @@ -828,9 +828,9 @@ - + - + @@ -838,9 +838,9 @@ - + - + @@ -848,9 +848,9 @@ - + - + @@ -858,9 +858,9 @@ - + - + @@ -868,9 +868,9 @@ - + - + @@ -878,9 +878,9 @@ - + - + @@ -888,9 +888,9 @@ - + - + @@ -898,9 +898,9 @@ - + - + @@ -908,9 +908,9 @@ - + - + @@ -918,9 +918,9 @@ - + - + @@ -928,9 +928,9 @@ - + - + @@ -938,9 +938,9 @@ - + - + @@ -948,9 +948,9 @@ - + - + @@ -958,9 +958,9 @@ - + - + @@ -968,9 +968,9 @@ - + - + @@ -978,9 +978,9 @@ - + - + @@ -988,9 +988,9 @@ - + - + @@ -998,9 +998,9 @@ - + - + @@ -1008,9 +1008,9 @@ - + - + @@ -1018,9 +1018,9 @@ - + - + @@ -1028,9 +1028,9 @@ - + - + @@ -1038,9 +1038,9 @@ - + - + @@ -1048,9 +1048,9 @@ - + - + @@ -1058,9 +1058,9 @@ - + - + @@ -1068,9 +1068,9 @@ - + - + @@ -1078,9 +1078,9 @@ - + - + @@ -1088,9 +1088,9 @@ - + - + @@ -1098,9 +1098,9 @@ - + - + @@ -1108,9 +1108,9 @@ - + - + @@ -1118,9 +1118,9 @@ - + - + @@ -1128,9 +1128,9 @@ - + - + @@ -1138,9 +1138,9 @@ - + - + @@ -1148,9 +1148,9 @@ - + - + @@ -1158,9 +1158,9 @@ - + - + @@ -1168,9 +1168,9 @@ - + - + @@ -1178,9 +1178,9 @@ - + - + @@ -1188,9 +1188,9 @@ - + - + @@ -1198,9 +1198,9 @@ - + - + @@ -1208,9 +1208,9 @@ - + - + @@ -1218,9 +1218,9 @@ - + - + @@ -1228,9 +1228,9 @@ - + - + @@ -1238,9 +1238,9 @@ - + - + @@ -1248,9 +1248,9 @@ - + - + @@ -1258,9 +1258,9 @@ - + - + @@ -1268,9 +1268,9 @@ - + - + @@ -1278,9 +1278,9 @@ - + - + @@ -1288,9 +1288,9 @@ - + - + @@ -1298,9 +1298,9 @@ - + - + @@ -1308,9 +1308,9 @@ - + - + @@ -1318,9 +1318,9 @@ - + - + @@ -1328,9 +1328,9 @@ - + - + @@ -1338,9 +1338,9 @@ - + - + @@ -1348,9 +1348,9 @@ - + - + @@ -1358,9 +1358,9 @@ - + - + @@ -1368,9 +1368,9 @@ - + - + @@ -1378,9 +1378,9 @@ - + - + @@ -1388,9 +1388,9 @@ - + - + @@ -1398,9 +1398,9 @@ - + - + @@ -1408,9 +1408,9 @@ - + - + @@ -1418,9 +1418,9 @@ - + - + @@ -1428,9 +1428,9 @@ - + - + @@ -1438,9 +1438,9 @@ - + - + @@ -1448,9 +1448,9 @@ - + - + @@ -1458,9 +1458,9 @@ - + - + @@ -1468,9 +1468,9 @@ - + - + @@ -1478,9 +1478,9 @@ - + - + @@ -1488,9 +1488,9 @@ - + - + @@ -1498,9 +1498,9 @@ - + - + @@ -1508,9 +1508,9 @@ - + - + @@ -1518,9 +1518,9 @@ - + - + @@ -1528,9 +1528,9 @@ - + - + @@ -1538,9 +1538,9 @@ - + - + @@ -1548,9 +1548,9 @@ - + - + @@ -1558,9 +1558,9 @@ - + - + @@ -1568,9 +1568,9 @@ - + - + @@ -1578,9 +1578,9 @@ - + - + @@ -1588,9 +1588,9 @@ - + - + @@ -1598,9 +1598,9 @@ - + - + @@ -1608,9 +1608,9 @@ - + - + @@ -1618,9 +1618,9 @@ - + - + @@ -1628,9 +1628,9 @@ - + - + @@ -1638,9 +1638,9 @@ - + - + @@ -1648,9 +1648,9 @@ - + - + @@ -1658,9 +1658,9 @@ - + - + @@ -1668,9 +1668,9 @@ - + - + @@ -1678,9 +1678,9 @@ - + - + @@ -1688,9 +1688,9 @@ - + - + @@ -1698,9 +1698,9 @@ - + - + @@ -1708,9 +1708,9 @@ - + - + @@ -1718,9 +1718,9 @@ - + - + @@ -1728,9 +1728,9 @@ - + - + @@ -1738,9 +1738,9 @@ - + - + @@ -1748,9 +1748,9 @@ - + - + @@ -1758,9 +1758,9 @@ - + - + @@ -1768,9 +1768,9 @@ - + - + @@ -1778,9 +1778,9 @@ - + - + @@ -1788,9 +1788,9 @@ - + - + @@ -1798,9 +1798,9 @@ - + - + @@ -1808,9 +1808,9 @@ - + - + @@ -1818,9 +1818,9 @@ - + - + @@ -1828,9 +1828,9 @@ - + - + @@ -1838,9 +1838,9 @@ - + - + @@ -1848,9 +1848,9 @@ - + - + @@ -1858,9 +1858,9 @@ - + - + @@ -1868,9 +1868,9 @@ - + - + @@ -1878,9 +1878,9 @@ - + - + @@ -1888,9 +1888,9 @@ - + - + @@ -1898,9 +1898,9 @@ - + - + @@ -1908,9 +1908,9 @@ - + - + @@ -1918,9 +1918,9 @@ - + - + @@ -1928,9 +1928,9 @@ - + - + @@ -1938,9 +1938,9 @@ - + - + @@ -1948,9 +1948,9 @@ - + - + @@ -1958,9 +1958,9 @@ - + - + @@ -1968,9 +1968,9 @@ - + - + @@ -1978,9 +1978,9 @@ - + - + @@ -1988,9 +1988,9 @@ - + - + @@ -1998,9 +1998,9 @@ - + - + @@ -2008,9 +2008,9 @@ - + - + @@ -2018,9 +2018,9 @@ - + - + @@ -2028,9 +2028,9 @@ - + - + @@ -2038,9 +2038,9 @@ - + - + @@ -2048,9 +2048,9 @@ - + - + @@ -2058,9 +2058,9 @@ - + - + @@ -2068,9 +2068,9 @@ - + - + @@ -2078,9 +2078,9 @@ - + - + @@ -2088,9 +2088,9 @@ - + - + @@ -2098,9 +2098,9 @@ - + - + @@ -2108,9 +2108,9 @@ - + - + @@ -2118,9 +2118,9 @@ - + - + @@ -2128,9 +2128,9 @@ - + - + @@ -2138,9 +2138,9 @@ - + - + @@ -2148,9 +2148,9 @@ - + - + @@ -2158,9 +2158,9 @@ - + - + @@ -2168,9 +2168,9 @@ - + - + @@ -2178,9 +2178,9 @@ - + - + @@ -2188,9 +2188,9 @@ - + - + @@ -2198,9 +2198,9 @@ - + - + @@ -2208,9 +2208,9 @@ - + - + @@ -2218,9 +2218,9 @@ - + - + @@ -2228,9 +2228,9 @@ - + - + @@ -2238,9 +2238,9 @@ - + - + @@ -2248,9 +2248,9 @@ - + - + @@ -2258,9 +2258,9 @@ - + - + @@ -2268,9 +2268,9 @@ - + - + @@ -2278,9 +2278,9 @@ - + - + @@ -2288,9 +2288,9 @@ - + - + @@ -2298,9 +2298,9 @@ - + - + @@ -2308,9 +2308,9 @@ - + - + @@ -2318,9 +2318,9 @@ - + - + @@ -2328,9 +2328,9 @@ - + - + @@ -2338,9 +2338,9 @@ - + - + @@ -2348,9 +2348,9 @@ - + - + @@ -2358,9 +2358,9 @@ - + - + @@ -2368,9 +2368,9 @@ - + - + @@ -2378,9 +2378,9 @@ - + - + @@ -2388,9 +2388,9 @@ - + - + @@ -2398,9 +2398,9 @@ - + - + @@ -2408,9 +2408,9 @@ - + - + @@ -2418,9 +2418,9 @@ - + - + @@ -2428,9 +2428,9 @@ - + - + @@ -2438,9 +2438,9 @@ - + - + @@ -2448,9 +2448,9 @@ - + - + @@ -2458,9 +2458,9 @@ - + - + @@ -2468,9 +2468,9 @@ - + - + @@ -2478,9 +2478,9 @@ - + - + @@ -2488,9 +2488,9 @@ - + - + @@ -2498,9 +2498,9 @@ - + - + @@ -2508,9 +2508,9 @@ - + - + @@ -2518,9 +2518,9 @@ - + - + @@ -2528,9 +2528,9 @@ - + - + @@ -2538,9 +2538,9 @@ - + - + @@ -2548,9 +2548,9 @@ - + - + @@ -2558,9 +2558,9 @@ - + - + @@ -2568,9 +2568,9 @@ - + - + @@ -2578,9 +2578,9 @@ - + - + @@ -2588,9 +2588,9 @@ - + - + @@ -2598,9 +2598,9 @@ - + - + @@ -2608,9 +2608,9 @@ - + - + @@ -2618,9 +2618,9 @@ - + - + @@ -2628,9 +2628,9 @@ - + - + @@ -2638,9 +2638,9 @@ - + - + @@ -2648,9 +2648,9 @@ - + - + @@ -2658,9 +2658,9 @@ - + - + @@ -2668,9 +2668,9 @@ - + - + @@ -2678,9 +2678,9 @@ - + - + @@ -2688,9 +2688,9 @@ - + - + @@ -2698,9 +2698,9 @@ - + - + @@ -2708,9 +2708,9 @@ - + - + @@ -2718,9 +2718,9 @@ - + - + @@ -2728,9 +2728,9 @@ - + - + @@ -2738,9 +2738,9 @@ - + - + @@ -2748,9 +2748,9 @@ - + - + @@ -2758,9 +2758,9 @@ - + - + @@ -2768,9 +2768,9 @@ - + - + @@ -2778,9 +2778,9 @@ - + - + @@ -2788,9 +2788,9 @@ - + - + @@ -2798,9 +2798,9 @@ - + - + @@ -2808,9 +2808,9 @@ - + - + @@ -2818,9 +2818,9 @@ - + - + @@ -2828,9 +2828,9 @@ - + - + @@ -2838,9 +2838,9 @@ - + - + @@ -2848,9 +2848,9 @@ - + - + @@ -2858,9 +2858,9 @@ - + - + @@ -2868,9 +2868,9 @@ - + - + @@ -2878,9 +2878,9 @@ - + - + @@ -2888,9 +2888,9 @@ - + - + @@ -2898,9 +2898,9 @@ - + - + @@ -2908,9 +2908,9 @@ - + - + @@ -2918,9 +2918,9 @@ - + - + @@ -2928,9 +2928,9 @@ - + - + @@ -2938,9 +2938,9 @@ - + - + @@ -2948,9 +2948,9 @@ - + - + @@ -2958,9 +2958,9 @@ - + - + @@ -2968,9 +2968,9 @@ - + - + @@ -2978,9 +2978,9 @@ - + - + @@ -2988,9 +2988,9 @@ - + - + @@ -2998,9 +2998,9 @@ - + - + @@ -3008,9 +3008,9 @@ - + - + @@ -3018,9 +3018,9 @@ - + - + @@ -3028,9 +3028,9 @@ - + - + @@ -3038,9 +3038,9 @@ - + - + @@ -3048,9 +3048,9 @@ - + - + @@ -3058,9 +3058,9 @@ - + - + @@ -3068,9 +3068,9 @@ - + - + @@ -3078,9 +3078,9 @@ - + - + @@ -3088,9 +3088,9 @@ - + - + @@ -3098,9 +3098,9 @@ - + - + @@ -3108,9 +3108,9 @@ - + - + @@ -3118,9 +3118,9 @@ - + - + @@ -3128,9 +3128,9 @@ - + - + @@ -3138,9 +3138,9 @@ - + - + @@ -3148,9 +3148,9 @@ - + - + @@ -3158,9 +3158,9 @@ - + - + @@ -3168,9 +3168,9 @@ - + - + @@ -3178,9 +3178,9 @@ - + - + @@ -3188,9 +3188,9 @@ - + - + @@ -3198,9 +3198,9 @@ - + - + @@ -3208,9 +3208,9 @@ - + - + @@ -3218,9 +3218,9 @@ - + - + @@ -3228,9 +3228,9 @@ - + - + @@ -3238,9 +3238,9 @@ - + - + @@ -3248,9 +3248,9 @@ - + - + @@ -3258,9 +3258,9 @@ - + - + @@ -3268,9 +3268,9 @@ - + - + @@ -3278,9 +3278,9 @@ - + - + @@ -3288,9 +3288,9 @@ - + - + @@ -3298,9 +3298,9 @@ - + - + @@ -3308,9 +3308,9 @@ - + - + @@ -3318,9 +3318,9 @@ - + - + @@ -3328,9 +3328,9 @@ - + - + @@ -3338,9 +3338,9 @@ - + - + @@ -3348,9 +3348,9 @@ - + - + @@ -3358,9 +3358,9 @@ - + - + @@ -3368,9 +3368,9 @@ - + - + @@ -3378,9 +3378,9 @@ - + - + @@ -3388,9 +3388,9 @@ - + - + @@ -3398,9 +3398,9 @@ - + - + @@ -3408,9 +3408,9 @@ - + - + @@ -3418,9 +3418,9 @@ - + - + @@ -3428,9 +3428,9 @@ - + - + @@ -3438,9 +3438,9 @@ - + - + @@ -3448,9 +3448,9 @@ - + - + @@ -3458,9 +3458,9 @@ - + - + @@ -3468,9 +3468,9 @@ - + - + @@ -3478,9 +3478,9 @@ - + - + @@ -3488,9 +3488,9 @@ - + - + @@ -3498,9 +3498,9 @@ - + - + @@ -3508,9 +3508,9 @@ - + - + @@ -3518,9 +3518,9 @@ - + - + @@ -3528,9 +3528,9 @@ - + - + @@ -3538,9 +3538,9 @@ - + - + @@ -3548,9 +3548,9 @@ - + - + @@ -3558,9 +3558,9 @@ - + - + @@ -3568,9 +3568,9 @@ - + - + @@ -3578,9 +3578,9 @@ - + - + @@ -3588,9 +3588,9 @@ - + - + @@ -3598,9 +3598,9 @@ - + - + @@ -3608,9 +3608,9 @@ - + - + @@ -3618,9 +3618,9 @@ - + - + @@ -3628,9 +3628,9 @@ - + - + @@ -3638,9 +3638,9 @@ - + - + @@ -3648,9 +3648,9 @@ - + - + @@ -3658,9 +3658,9 @@ - + - + @@ -3668,9 +3668,9 @@ - + - + @@ -3678,9 +3678,9 @@ - + - + @@ -3688,9 +3688,9 @@ - + - + @@ -3698,9 +3698,9 @@ - + - + @@ -3708,9 +3708,9 @@ - + - + @@ -3718,9 +3718,9 @@ - + - + @@ -3728,9 +3728,9 @@ - + - + @@ -3738,9 +3738,9 @@ - + - + @@ -3748,9 +3748,9 @@ - + - + @@ -3758,9 +3758,9 @@ - + - + @@ -3768,9 +3768,9 @@ - + - + @@ -3778,9 +3778,9 @@ - + - + @@ -3788,9 +3788,9 @@ - + - + @@ -3798,9 +3798,9 @@ - + - + @@ -3808,9 +3808,9 @@ - + - + @@ -3818,9 +3818,9 @@ - + - + @@ -3828,9 +3828,9 @@ - + - + @@ -3838,9 +3838,9 @@ - + - + @@ -3848,9 +3848,9 @@ - + - + @@ -3858,9 +3858,9 @@ - + - + @@ -3868,9 +3868,9 @@ - + - + @@ -3878,9 +3878,9 @@ - + - + @@ -3888,9 +3888,9 @@ - + - + @@ -3898,9 +3898,9 @@ - + - + @@ -3908,9 +3908,9 @@ - + - + @@ -3918,9 +3918,9 @@ - + - + @@ -3928,9 +3928,9 @@ - + - + @@ -3938,9 +3938,9 @@ - + - + @@ -3948,9 +3948,9 @@ - + - + @@ -3958,9 +3958,9 @@ - + - + @@ -3968,9 +3968,9 @@ - + - + @@ -3978,9 +3978,9 @@ - + - + @@ -3988,9 +3988,9 @@ - + - + @@ -3998,9 +3998,9 @@ - + - + @@ -4008,9 +4008,9 @@ - + - + @@ -4018,9 +4018,9 @@ - + - + @@ -4028,9 +4028,9 @@ - + - + @@ -4038,9 +4038,9 @@ - + - + @@ -4048,9 +4048,9 @@ - + - + @@ -4058,9 +4058,9 @@ - + - + @@ -4068,9 +4068,9 @@ - + - + @@ -4078,9 +4078,9 @@ - + - + @@ -4088,9 +4088,9 @@ - + - + @@ -4098,9 +4098,9 @@ - + - + @@ -4108,9 +4108,9 @@ - + - + @@ -4118,9 +4118,9 @@ - + - + @@ -4128,9 +4128,9 @@ - + - + @@ -4138,9 +4138,9 @@ - + - + @@ -4148,9 +4148,9 @@ - + - + @@ -4158,9 +4158,9 @@ - + - + @@ -4168,9 +4168,9 @@ - + - + @@ -4178,9 +4178,9 @@ - + - + @@ -4188,9 +4188,9 @@ - + - + @@ -4198,9 +4198,9 @@ - + - + @@ -4208,9 +4208,9 @@ - + - + @@ -4218,9 +4218,9 @@ - + - + @@ -4228,9 +4228,9 @@ - + - + @@ -4238,9 +4238,9 @@ - + - + @@ -4248,9 +4248,9 @@ - + - + @@ -4258,9 +4258,9 @@ - + - + @@ -4268,9 +4268,9 @@ - + - + @@ -4278,9 +4278,9 @@ - + - + @@ -4288,9 +4288,9 @@ - + - + @@ -4298,9 +4298,9 @@ - + - + @@ -4308,9 +4308,9 @@ - + - + @@ -4318,9 +4318,9 @@ - + - + @@ -4328,9 +4328,9 @@ - + - + @@ -4338,9 +4338,9 @@ - + - + @@ -4348,9 +4348,9 @@ - + - + @@ -4358,9 +4358,9 @@ - + - + @@ -4368,9 +4368,9 @@ - + - + @@ -4378,9 +4378,9 @@ - + - + @@ -4388,9 +4388,9 @@ - + - + @@ -4398,9 +4398,9 @@ - + - + @@ -4408,9 +4408,9 @@ - + - + @@ -4418,9 +4418,9 @@ - + - + @@ -4428,9 +4428,9 @@ - + - + @@ -4438,9 +4438,9 @@ - + - + @@ -4448,9 +4448,9 @@ - + - + @@ -4458,9 +4458,9 @@ - + - + @@ -4468,9 +4468,9 @@ - + - + @@ -4478,9 +4478,9 @@ - + - + @@ -4488,9 +4488,9 @@ - + - + @@ -4498,9 +4498,9 @@ - + - + @@ -4508,9 +4508,9 @@ - + - + @@ -4518,9 +4518,9 @@ - + - + @@ -4528,9 +4528,9 @@ - + - + @@ -4538,9 +4538,9 @@ - + - + @@ -4548,9 +4548,9 @@ - + - + @@ -4558,9 +4558,9 @@ - + - + @@ -4568,9 +4568,9 @@ - + - + @@ -4578,9 +4578,9 @@ - + - + @@ -4588,9 +4588,9 @@ - + - + @@ -4598,9 +4598,9 @@ - + - + @@ -4608,9 +4608,9 @@ - + - + @@ -4618,9 +4618,9 @@ - + - + @@ -4628,9 +4628,9 @@ - + - + @@ -4638,9 +4638,9 @@ - + - + @@ -4648,9 +4648,9 @@ - + - + @@ -4658,9 +4658,9 @@ - + - + @@ -4668,9 +4668,9 @@ - + - + @@ -4678,9 +4678,9 @@ - + - + @@ -4688,9 +4688,9 @@ - + - + @@ -4698,9 +4698,9 @@ - + - + @@ -4708,9 +4708,9 @@ - + - + @@ -4718,9 +4718,9 @@ - + - + @@ -4728,9 +4728,9 @@ - + - + @@ -4738,9 +4738,9 @@ - + - + @@ -4748,9 +4748,9 @@ - + - + @@ -4758,9 +4758,9 @@ - + - + @@ -4768,9 +4768,9 @@ - + - + @@ -4778,9 +4778,9 @@ - + - + @@ -4788,9 +4788,9 @@ - + - + @@ -4798,9 +4798,9 @@ - + - + @@ -4808,9 +4808,9 @@ - + - + @@ -4818,9 +4818,9 @@ - + - + @@ -4828,9 +4828,9 @@ - + - + @@ -4838,9 +4838,9 @@ - + - + @@ -4848,9 +4848,9 @@ - + - + @@ -4858,9 +4858,9 @@ - + - + @@ -4868,9 +4868,9 @@ - + - + @@ -4878,9 +4878,9 @@ - + - + @@ -4888,9 +4888,9 @@ - + - + @@ -4898,9 +4898,9 @@ - + - + @@ -4908,9 +4908,9 @@ - + - + @@ -4918,9 +4918,9 @@ - + - + @@ -4928,9 +4928,9 @@ - + - + @@ -4938,9 +4938,9 @@ - + - + @@ -4948,9 +4948,9 @@ - + - + @@ -4958,9 +4958,9 @@ - + - + @@ -4968,9 +4968,9 @@ - + - + @@ -4978,9 +4978,9 @@ - + - + @@ -4988,9 +4988,9 @@ - + - + @@ -4998,9 +4998,9 @@ - + - + @@ -5008,9 +5008,9 @@ - + - + @@ -5018,9 +5018,9 @@ - + - + @@ -5028,9 +5028,9 @@ - + - + @@ -5038,9 +5038,9 @@ - + - + @@ -5048,9 +5048,9 @@ - + - + @@ -5058,9 +5058,9 @@ - + - + @@ -5068,9 +5068,9 @@ - + - + @@ -5078,9 +5078,9 @@ - + - + @@ -5088,9 +5088,9 @@ - + - + @@ -5098,9 +5098,9 @@ - + - + @@ -5108,9 +5108,9 @@ - + - + @@ -5118,9 +5118,9 @@ - + - + @@ -5128,9 +5128,9 @@ - + - + @@ -5138,9 +5138,9 @@ - + - + @@ -5148,9 +5148,9 @@ - + - + @@ -5158,9 +5158,9 @@ - + - + @@ -5168,9 +5168,9 @@ - + - + @@ -5178,9 +5178,9 @@ - + - + @@ -5188,9 +5188,9 @@ - + - + @@ -5198,9 +5198,9 @@ - + - + @@ -5208,9 +5208,9 @@ - + - + @@ -5218,9 +5218,9 @@ - + - + @@ -5228,9 +5228,9 @@ - + - + @@ -5238,9 +5238,9 @@ - + - + @@ -5248,9 +5248,9 @@ - + - + @@ -5258,9 +5258,9 @@ - + - + @@ -5268,9 +5268,9 @@ - + - + @@ -5278,9 +5278,9 @@ - + - + @@ -5288,9 +5288,9 @@ - + - + @@ -5298,9 +5298,9 @@ - + - + @@ -5308,9 +5308,9 @@ - + - + @@ -5318,9 +5318,9 @@ - + - + @@ -5328,9 +5328,9 @@ - + - + @@ -5338,9 +5338,9 @@ - + - + @@ -5348,9 +5348,9 @@ - + - + @@ -5358,9 +5358,9 @@ - + - + @@ -5368,9 +5368,9 @@ - + - + @@ -5378,9 +5378,9 @@ - + - + @@ -5388,9 +5388,9 @@ - + - + @@ -5398,9 +5398,9 @@ - + - + @@ -5408,9 +5408,9 @@ - + - + @@ -5418,9 +5418,9 @@ - + - + @@ -5428,9 +5428,9 @@ - + - + @@ -5438,9 +5438,9 @@ - + - + @@ -5448,9 +5448,9 @@ - + - + @@ -5458,9 +5458,9 @@ - + - + @@ -5468,9 +5468,9 @@ - + - + @@ -5478,9 +5478,9 @@ - + - + @@ -5488,9 +5488,9 @@ - + - + @@ -5498,9 +5498,9 @@ - + - + @@ -5508,9 +5508,9 @@ - + - + @@ -5518,9 +5518,9 @@ - + - + @@ -5528,9 +5528,9 @@ - + - + @@ -5538,9 +5538,9 @@ - + - + @@ -5548,9 +5548,9 @@ - + - + @@ -5558,9 +5558,9 @@ - + - + @@ -5568,9 +5568,9 @@ - + - + @@ -5578,9 +5578,9 @@ - + - + @@ -5588,9 +5588,9 @@ - + - + @@ -5598,9 +5598,9 @@ - + - + @@ -5608,9 +5608,9 @@ - + - + @@ -5618,9 +5618,9 @@ - + - + @@ -5628,9 +5628,9 @@ - + - + @@ -5638,9 +5638,9 @@ - + - + @@ -5648,9 +5648,9 @@ - + - + @@ -5658,9 +5658,9 @@ - + - + @@ -5668,9 +5668,9 @@ - + - + @@ -5678,9 +5678,9 @@ - + - + @@ -5688,9 +5688,9 @@ - + - + @@ -5698,9 +5698,9 @@ - + - + @@ -5708,9 +5708,9 @@ - + - + @@ -5718,9 +5718,9 @@ - + - + @@ -5728,9 +5728,9 @@ - + - + @@ -5738,9 +5738,9 @@ - + - + @@ -5748,9 +5748,9 @@ - + - + @@ -5758,9 +5758,9 @@ - + - + @@ -5768,9 +5768,9 @@ - + - + @@ -5778,9 +5778,9 @@ - + - + @@ -5788,9 +5788,9 @@ - + - + @@ -5798,9 +5798,9 @@ - + - + @@ -5808,9 +5808,9 @@ - + - + @@ -5818,9 +5818,9 @@ - + - + @@ -5828,9 +5828,9 @@ - + - + @@ -5838,9 +5838,9 @@ - + - + @@ -5848,9 +5848,9 @@ - + - + @@ -5858,9 +5858,9 @@ - + - + @@ -5868,9 +5868,9 @@ - + - + @@ -5878,9 +5878,9 @@ - + - + @@ -5888,9 +5888,9 @@ - + - + @@ -5898,9 +5898,9 @@ - + - + @@ -5908,9 +5908,9 @@ - + - + @@ -5918,9 +5918,9 @@ - + - + @@ -5928,9 +5928,9 @@ - + - + @@ -5938,9 +5938,9 @@ - + - + @@ -5948,9 +5948,9 @@ - + - + @@ -5958,9 +5958,9 @@ - + - + @@ -5968,9 +5968,9 @@ - + - + @@ -5978,9 +5978,9 @@ - + - + @@ -5988,9 +5988,9 @@ - + - + @@ -5998,9 +5998,9 @@ - + - + @@ -6008,9 +6008,9 @@ - + - + @@ -6018,9 +6018,9 @@ - + - + @@ -6028,9 +6028,9 @@ - + - + @@ -6038,9 +6038,9 @@ - + - + @@ -6048,9 +6048,9 @@ - + - + @@ -6058,9 +6058,9 @@ - + - + @@ -6068,9 +6068,9 @@ - + - + @@ -6078,9 +6078,9 @@ - + - + @@ -6088,9 +6088,9 @@ - + - + @@ -6098,9 +6098,9 @@ - + - + @@ -6108,9 +6108,9 @@ - + - + @@ -6118,9 +6118,9 @@ - + - + @@ -6128,9 +6128,9 @@ - + - + @@ -6138,9 +6138,9 @@ - + - + @@ -6148,9 +6148,9 @@ - + - + @@ -6158,9 +6158,9 @@ - + - + @@ -6168,9 +6168,9 @@ - + - + @@ -6178,9 +6178,9 @@ - + - + @@ -6188,9 +6188,9 @@ - + - + @@ -6198,9 +6198,9 @@ - + - + @@ -6208,9 +6208,9 @@ - + - + @@ -6218,9 +6218,9 @@ - + - + @@ -6230,9 +6230,9 @@ - + - + @@ -6240,9 +6240,9 @@ - + - + @@ -6250,9 +6250,9 @@ - + - + @@ -6260,9 +6260,9 @@ - + - + @@ -6270,9 +6270,9 @@ - + - + @@ -6280,9 +6280,9 @@ - + - + @@ -6290,9 +6290,9 @@ - + - + @@ -6300,9 +6300,9 @@ - + - + @@ -6310,9 +6310,9 @@ - + - + @@ -6320,9 +6320,9 @@ - + - + @@ -6330,9 +6330,9 @@ - + - + @@ -6340,9 +6340,9 @@ - + - + @@ -6350,9 +6350,9 @@ - + - + @@ -6360,9 +6360,9 @@ - + - + @@ -6370,9 +6370,9 @@ - + - + @@ -6380,9 +6380,9 @@ - + - + @@ -6390,9 +6390,9 @@ - + - + @@ -6400,9 +6400,9 @@ - + - + @@ -6410,9 +6410,9 @@ - + - + @@ -6420,9 +6420,9 @@ - + - + @@ -6430,9 +6430,9 @@ - + - + @@ -6440,9 +6440,9 @@ - + - + @@ -6450,9 +6450,9 @@ - + - + @@ -6460,9 +6460,9 @@ - + - + @@ -6470,9 +6470,9 @@ - + - + @@ -6480,9 +6480,9 @@ - + - + @@ -6490,9 +6490,9 @@ - + - + @@ -6500,9 +6500,9 @@ - + - + @@ -6510,9 +6510,9 @@ - + - + @@ -6520,9 +6520,9 @@ - + - + @@ -6530,9 +6530,9 @@ - + - + @@ -6540,9 +6540,9 @@ - + - + @@ -6550,9 +6550,9 @@ - + - + @@ -6560,9 +6560,9 @@ - + - + @@ -6570,9 +6570,9 @@ - + - + @@ -6580,9 +6580,9 @@ - + - + @@ -6590,9 +6590,9 @@ - + - + @@ -6600,9 +6600,9 @@ - + - + @@ -6610,9 +6610,9 @@ - + - + @@ -6620,9 +6620,9 @@ - + - + @@ -6630,9 +6630,9 @@ - + - + @@ -6640,9 +6640,9 @@ - + - + @@ -6650,9 +6650,9 @@ - + - + @@ -6660,9 +6660,9 @@ - + - + @@ -6670,9 +6670,9 @@ - + - + @@ -6680,9 +6680,9 @@ - + - + @@ -6690,9 +6690,9 @@ - + - + @@ -6700,9 +6700,9 @@ - + - + @@ -6710,9 +6710,9 @@ - + - + @@ -6720,9 +6720,9 @@ - + - + @@ -6730,9 +6730,9 @@ - + - + @@ -6740,9 +6740,9 @@ - + - + @@ -6750,9 +6750,9 @@ - + - + @@ -6760,9 +6760,9 @@ - + - + @@ -6770,9 +6770,9 @@ - + - + @@ -6780,9 +6780,9 @@ - + - + @@ -6790,9 +6790,9 @@ - + - + @@ -6800,9 +6800,9 @@ - + - + @@ -6810,9 +6810,9 @@ - + - + @@ -6820,9 +6820,9 @@ - + - + @@ -6830,9 +6830,9 @@ - + - + @@ -6840,9 +6840,9 @@ - + - + @@ -6850,9 +6850,9 @@ - + - + @@ -6860,9 +6860,9 @@ - + - + @@ -6870,9 +6870,9 @@ - + - + @@ -6880,9 +6880,9 @@ - + - + @@ -6890,9 +6890,9 @@ - + - + @@ -6900,9 +6900,9 @@ - + - + @@ -6910,9 +6910,9 @@ - + - + @@ -6920,9 +6920,9 @@ - + - + @@ -6930,9 +6930,9 @@ - + - + @@ -6940,9 +6940,9 @@ - + - + @@ -6950,9 +6950,9 @@ - + - + @@ -6960,9 +6960,9 @@ - + - + @@ -6970,9 +6970,9 @@ - + - + @@ -6980,9 +6980,9 @@ - + - + @@ -6990,9 +6990,9 @@ - + - + @@ -7000,9 +7000,9 @@ - + - + @@ -7010,9 +7010,9 @@ - + - + @@ -7020,9 +7020,9 @@ - + - + @@ -7030,9 +7030,9 @@ - + - + @@ -7040,9 +7040,9 @@ - + - + @@ -7050,9 +7050,9 @@ - + - + @@ -7060,9 +7060,9 @@ - + - + @@ -7070,9 +7070,9 @@ - + - + @@ -7080,9 +7080,9 @@ - + - + @@ -7090,9 +7090,9 @@ - + - + @@ -7100,9 +7100,9 @@ - + - + @@ -7110,9 +7110,9 @@ - + - + @@ -7120,9 +7120,9 @@ - + - + @@ -7130,9 +7130,9 @@ - + - + @@ -7140,9 +7140,9 @@ - + - + @@ -7150,9 +7150,9 @@ - + - + @@ -7160,9 +7160,9 @@ - + - + @@ -7170,9 +7170,9 @@ - + - + @@ -7180,9 +7180,9 @@ - + - + @@ -7190,9 +7190,9 @@ - + - + @@ -7200,9 +7200,9 @@ - + - + @@ -7210,9 +7210,9 @@ - + - + @@ -7220,9 +7220,9 @@ - + - + @@ -7230,9 +7230,9 @@ - + - + @@ -7240,9 +7240,9 @@ - + - + @@ -7250,9 +7250,9 @@ - + - + @@ -7260,9 +7260,9 @@ - + - + @@ -7270,9 +7270,9 @@ - + - + @@ -7280,9 +7280,9 @@ - + - + @@ -7290,9 +7290,9 @@ - + - + @@ -7300,9 +7300,9 @@ - + - + @@ -7310,9 +7310,9 @@ - + - + @@ -7320,9 +7320,9 @@ - + - + @@ -7330,9 +7330,9 @@ - + - + @@ -7340,9 +7340,9 @@ - + - + @@ -7350,9 +7350,9 @@ - + - + @@ -7360,9 +7360,9 @@ - + - + @@ -7370,9 +7370,9 @@ - + - + @@ -7380,9 +7380,9 @@ - + - + @@ -7390,9 +7390,9 @@ - + - + @@ -7400,9 +7400,9 @@ - + - + @@ -7410,9 +7410,9 @@ - + - + @@ -7420,9 +7420,9 @@ - + - + @@ -7430,9 +7430,9 @@ - + - + @@ -7440,9 +7440,9 @@ - + - + @@ -7450,9 +7450,9 @@ - + - + @@ -7460,9 +7460,9 @@ - + - + @@ -7470,9 +7470,9 @@ - + - + @@ -7480,9 +7480,9 @@ - + - + @@ -7490,9 +7490,9 @@ - + - + @@ -7500,9 +7500,9 @@ - + - + @@ -7510,9 +7510,9 @@ - + - + @@ -7520,9 +7520,9 @@ - + - + @@ -7530,9 +7530,9 @@ - + - + @@ -7540,9 +7540,9 @@ - + - + @@ -7550,9 +7550,9 @@ - + - + @@ -7560,9 +7560,9 @@ - + - + @@ -7570,9 +7570,9 @@ - + - + @@ -7580,9 +7580,9 @@ - + - + @@ -7590,9 +7590,9 @@ - + - + @@ -7600,9 +7600,9 @@ - + - + @@ -7610,9 +7610,9 @@ - + - + @@ -7620,9 +7620,9 @@ - + - + @@ -7630,9 +7630,9 @@ - + - + @@ -7640,9 +7640,9 @@ - + - + @@ -7650,9 +7650,9 @@ - + - + @@ -7660,9 +7660,9 @@ - + - + @@ -7670,9 +7670,9 @@ - + - + @@ -7680,9 +7680,9 @@ - + - + @@ -7690,9 +7690,9 @@ - + - + @@ -7700,9 +7700,9 @@ - + - + @@ -7710,9 +7710,9 @@ - + - + @@ -7720,9 +7720,9 @@ - + - + @@ -7730,9 +7730,9 @@ - + - + @@ -7740,9 +7740,9 @@ - + - + @@ -7750,9 +7750,9 @@ - + - + @@ -7760,9 +7760,9 @@ - + - + @@ -7770,9 +7770,9 @@ - + - + @@ -7780,9 +7780,9 @@ - + - + @@ -7790,9 +7790,9 @@ - + - + @@ -7800,9 +7800,9 @@ - + - + @@ -7810,9 +7810,9 @@ - + - + @@ -7820,9 +7820,9 @@ - + - + @@ -7830,9 +7830,9 @@ - + - + @@ -7840,9 +7840,9 @@ - + - + @@ -7850,9 +7850,9 @@ - + - + @@ -7860,9 +7860,9 @@ - + - + @@ -7870,9 +7870,9 @@ - + - + @@ -7880,9 +7880,9 @@ - + - + @@ -7890,9 +7890,9 @@ - + - + @@ -7900,9 +7900,9 @@ - + - + @@ -7910,9 +7910,9 @@ - + - + @@ -7920,9 +7920,9 @@ - + - + @@ -7930,9 +7930,9 @@ - + - + @@ -7940,9 +7940,9 @@ - + - + @@ -7950,9 +7950,9 @@ - + - + @@ -7960,9 +7960,9 @@ - + - + @@ -7970,9 +7970,9 @@ - + - + @@ -7980,9 +7980,9 @@ - + - + @@ -7990,9 +7990,9 @@ - + - + @@ -8000,9 +8000,9 @@ - + - + @@ -8010,9 +8010,9 @@ - + - + @@ -8020,9 +8020,9 @@ - + - + @@ -8030,9 +8030,9 @@ - + - + @@ -8040,9 +8040,9 @@ - + - + @@ -8050,9 +8050,9 @@ - + - + @@ -8060,9 +8060,9 @@ - + - + @@ -8070,9 +8070,9 @@ - + - + @@ -8080,9 +8080,9 @@ - + - + @@ -8090,9 +8090,9 @@ - + - + @@ -8100,9 +8100,9 @@ - + - + @@ -8110,9 +8110,9 @@ - + - + @@ -8120,9 +8120,9 @@ - + - + @@ -8130,9 +8130,9 @@ - + - + @@ -8140,9 +8140,9 @@ - + - + @@ -8150,9 +8150,9 @@ - + - + @@ -8160,9 +8160,9 @@ - + - + @@ -8170,9 +8170,9 @@ - + - + @@ -8180,9 +8180,9 @@ - + - + @@ -8190,9 +8190,9 @@ - + - + @@ -8200,9 +8200,9 @@ - + - + @@ -8210,9 +8210,9 @@ - + - + @@ -8220,9 +8220,9 @@ - + - + @@ -8230,9 +8230,9 @@ - + - + @@ -8240,9 +8240,9 @@ - + - + @@ -8250,9 +8250,9 @@ - + - + @@ -8260,9 +8260,9 @@ - + - + @@ -8270,9 +8270,9 @@ - + - + @@ -8280,9 +8280,9 @@ - + - + @@ -8290,9 +8290,9 @@ - + - + @@ -8300,9 +8300,9 @@ - + - + @@ -8310,9 +8310,9 @@ - + - + @@ -8320,9 +8320,9 @@ - + - + @@ -8330,9 +8330,9 @@ - + - + @@ -8340,9 +8340,9 @@ - + - + @@ -8350,9 +8350,9 @@ - + - + @@ -8360,9 +8360,9 @@ - + - + @@ -8370,9 +8370,9 @@ - + - + @@ -8380,9 +8380,9 @@ - + - + @@ -8390,9 +8390,9 @@ - + - + @@ -8400,9 +8400,9 @@ - + - + @@ -8410,9 +8410,9 @@ - + - + @@ -8420,9 +8420,9 @@ - + - + @@ -8430,9 +8430,9 @@ - + - + @@ -8440,9 +8440,9 @@ - + - + @@ -8450,9 +8450,9 @@ - + - + @@ -8460,9 +8460,9 @@ - + - + @@ -8470,9 +8470,9 @@ - + - + @@ -8480,9 +8480,9 @@ - + - + @@ -8490,9 +8490,9 @@ - + - + @@ -8500,9 +8500,9 @@ - + - + @@ -8510,9 +8510,9 @@ - + - + @@ -8520,9 +8520,9 @@ - + - + @@ -8530,9 +8530,9 @@ - + - + @@ -8540,9 +8540,9 @@ - + - + @@ -8550,9 +8550,9 @@ - + - + @@ -8560,9 +8560,9 @@ - + - + @@ -8570,9 +8570,9 @@ - + - + @@ -8580,9 +8580,9 @@ - + - + @@ -8590,9 +8590,9 @@ - + - + @@ -8600,9 +8600,9 @@ - + - + @@ -8610,9 +8610,9 @@ - + - + @@ -8620,9 +8620,9 @@ - + - + @@ -8630,9 +8630,9 @@ - + - + @@ -8640,9 +8640,9 @@ - + - + @@ -8650,9 +8650,9 @@ - + - + @@ -8660,9 +8660,9 @@ - + - + @@ -8670,9 +8670,9 @@ - + - + @@ -8680,9 +8680,9 @@ - + - + @@ -8690,9 +8690,9 @@ - + - + @@ -8700,9 +8700,9 @@ - + - + @@ -8710,9 +8710,9 @@ - + - + @@ -8720,9 +8720,9 @@ - + - + @@ -8730,9 +8730,9 @@ - + - + @@ -8740,9 +8740,9 @@ - + - + @@ -8750,9 +8750,9 @@ - + - + @@ -8760,9 +8760,9 @@ - + - + @@ -8770,9 +8770,9 @@ - + - + @@ -8780,9 +8780,9 @@ - + - + @@ -8790,9 +8790,9 @@ - + - + @@ -8800,9 +8800,9 @@ - + - + @@ -8810,9 +8810,9 @@ - + - + @@ -8820,9 +8820,9 @@ - + - + @@ -8830,9 +8830,9 @@ - + - + @@ -8840,9 +8840,9 @@ - + - + @@ -8850,9 +8850,9 @@ - + - + @@ -8860,9 +8860,9 @@ - + - + @@ -8870,9 +8870,9 @@ - + - + @@ -8880,9 +8880,9 @@ - + - + @@ -8890,9 +8890,9 @@ - + - + @@ -8900,9 +8900,9 @@ - + - + @@ -8910,9 +8910,9 @@ - + - + @@ -8920,9 +8920,9 @@ - + - + @@ -8930,9 +8930,9 @@ - + - + @@ -8940,9 +8940,9 @@ - + - + @@ -8950,9 +8950,9 @@ - + - + @@ -8960,9 +8960,9 @@ - + - + @@ -8970,9 +8970,9 @@ - + - + @@ -8980,9 +8980,9 @@ - + - + @@ -8990,9 +8990,9 @@ - + - + @@ -9000,9 +9000,9 @@ - + - + @@ -9010,9 +9010,9 @@ - + - + @@ -9020,9 +9020,9 @@ - + - + @@ -9030,9 +9030,9 @@ - + - + @@ -9040,9 +9040,9 @@ - + - + @@ -9050,9 +9050,9 @@ - + - + @@ -9060,9 +9060,9 @@ - + - + @@ -9070,9 +9070,9 @@ - + - + @@ -9080,9 +9080,9 @@ - + - + @@ -9090,9 +9090,9 @@ - + - + @@ -9100,9 +9100,9 @@ - + - + @@ -9110,9 +9110,9 @@ - + - + @@ -9120,9 +9120,9 @@ - + - + @@ -9130,9 +9130,9 @@ - + - + @@ -9140,9 +9140,9 @@ - + - + @@ -9150,9 +9150,9 @@ - + - + @@ -9160,9 +9160,9 @@ - + - + @@ -9170,9 +9170,9 @@ - + - + @@ -9180,9 +9180,9 @@ - + - + @@ -9190,9 +9190,9 @@ - + - + @@ -9200,9 +9200,9 @@ - + - + @@ -9210,9 +9210,9 @@ - + - + @@ -9220,9 +9220,9 @@ - + - + @@ -9230,9 +9230,9 @@ - + - + @@ -9240,9 +9240,9 @@ - + - + @@ -9250,9 +9250,9 @@ - + - + @@ -9260,9 +9260,9 @@ - + - + @@ -9270,9 +9270,9 @@ - + - + @@ -9280,9 +9280,9 @@ - + - + @@ -9290,9 +9290,9 @@ - + - + @@ -9300,9 +9300,9 @@ - + - + @@ -9310,9 +9310,9 @@ - + - + @@ -9320,9 +9320,9 @@ - + - + @@ -9330,9 +9330,9 @@ - + - + @@ -9340,9 +9340,9 @@ - + - + @@ -9350,9 +9350,9 @@ - + - + @@ -9360,9 +9360,9 @@ - + - + @@ -9370,9 +9370,9 @@ - + - + @@ -9380,9 +9380,9 @@ - + - + @@ -9390,9 +9390,9 @@ - + - + @@ -9400,9 +9400,9 @@ - + - + @@ -9410,9 +9410,9 @@ - + - + @@ -9420,9 +9420,9 @@ - + - + @@ -9430,9 +9430,9 @@ - + - + @@ -9440,9 +9440,9 @@ - + - + @@ -9450,9 +9450,9 @@ - + - + @@ -9460,9 +9460,9 @@ - + - + @@ -9470,9 +9470,9 @@ - + - + @@ -9480,9 +9480,9 @@ - + - + @@ -9490,9 +9490,9 @@ - + - + @@ -9500,9 +9500,9 @@ - + - + @@ -9510,9 +9510,9 @@ - + - + @@ -9520,9 +9520,9 @@ - + - + @@ -9530,9 +9530,9 @@ - + - + @@ -9540,9 +9540,9 @@ - + - + @@ -9550,9 +9550,9 @@ - + - + @@ -9560,9 +9560,9 @@ - + - + @@ -9570,9 +9570,9 @@ - + - + @@ -9580,9 +9580,9 @@ - + - + @@ -9590,9 +9590,9 @@ - + - + @@ -9600,9 +9600,9 @@ - + - + @@ -9610,9 +9610,9 @@ - + - + @@ -9620,9 +9620,9 @@ - + - + @@ -9630,9 +9630,9 @@ - + - + @@ -9640,9 +9640,9 @@ - + - + @@ -9650,9 +9650,9 @@ - + - + @@ -9660,9 +9660,9 @@ - + - + @@ -9670,9 +9670,9 @@ - + - + @@ -9680,9 +9680,9 @@ - + - + @@ -9690,9 +9690,9 @@ - + - + @@ -9700,9 +9700,9 @@ - + - + @@ -9710,9 +9710,9 @@ - + - + @@ -9720,9 +9720,9 @@ - + - + @@ -9730,9 +9730,9 @@ - + - + @@ -9740,9 +9740,9 @@ - + - + @@ -9750,9 +9750,9 @@ - + - + @@ -9760,9 +9760,9 @@ - + - + @@ -9770,9 +9770,9 @@ - + - + @@ -9780,9 +9780,9 @@ - + - + @@ -9790,9 +9790,9 @@ - + - + @@ -9800,9 +9800,9 @@ - + - + @@ -9810,9 +9810,9 @@ - + - + @@ -9820,9 +9820,9 @@ - + - + @@ -9830,9 +9830,9 @@ - + - + @@ -9840,9 +9840,9 @@ - + - + @@ -9850,9 +9850,9 @@ - + - + @@ -9860,9 +9860,9 @@ - + - + @@ -9870,9 +9870,9 @@ - + - + @@ -9880,9 +9880,9 @@ - + - + @@ -9890,9 +9890,9 @@ - + - + @@ -9900,9 +9900,9 @@ - + - + @@ -9910,9 +9910,9 @@ - + - + @@ -9920,9 +9920,9 @@ - + - + @@ -9930,9 +9930,9 @@ - + - + @@ -9940,9 +9940,9 @@ - + - + @@ -9950,9 +9950,9 @@ - + - + @@ -9960,9 +9960,9 @@ - + - + @@ -9970,9 +9970,9 @@ - + - + @@ -9980,9 +9980,9 @@ - + - + @@ -9990,9 +9990,9 @@ - + - + @@ -10000,9 +10000,9 @@ - + - + @@ -10010,9 +10010,9 @@ - + - + @@ -10020,9 +10020,9 @@ - + - + @@ -10030,9 +10030,9 @@ - + - + @@ -10040,9 +10040,9 @@ - + - + @@ -10050,9 +10050,9 @@ - + - + @@ -10060,9 +10060,9 @@ - + - + @@ -10070,9 +10070,9 @@ - + - + @@ -10080,9 +10080,9 @@ - + - + @@ -10090,9 +10090,9 @@ - + - + @@ -10100,9 +10100,9 @@ - + - + @@ -10110,9 +10110,9 @@ - + - + @@ -10120,9 +10120,9 @@ - + - + @@ -10130,9 +10130,9 @@ - + - + @@ -10140,9 +10140,9 @@ - + - + @@ -10150,9 +10150,9 @@ - + - + @@ -10160,9 +10160,9 @@ - + - + @@ -10170,9 +10170,9 @@ - + - + @@ -10180,9 +10180,9 @@ - + - + @@ -10190,9 +10190,9 @@ - + - + @@ -10200,9 +10200,9 @@ - + - + @@ -10210,9 +10210,9 @@ - + - + @@ -10220,9 +10220,9 @@ - + - + @@ -10230,9 +10230,9 @@ - + - + @@ -10240,9 +10240,9 @@ - + - + @@ -10250,9 +10250,9 @@ - + - + @@ -10260,9 +10260,9 @@ - + - + @@ -10270,9 +10270,9 @@ - + - + @@ -10280,9 +10280,9 @@ - + - + @@ -10290,9 +10290,9 @@ - + - + @@ -10300,9 +10300,9 @@ - + - + @@ -10310,9 +10310,9 @@ - + - + @@ -10320,9 +10320,9 @@ - + - + @@ -10330,9 +10330,9 @@ - + - + @@ -10340,9 +10340,9 @@ - + - + @@ -10350,9 +10350,9 @@ - + - + @@ -10360,9 +10360,9 @@ - + - + @@ -10370,9 +10370,9 @@ - + - + @@ -10380,9 +10380,9 @@ - + - + @@ -10390,9 +10390,9 @@ - + - + @@ -10400,9 +10400,9 @@ - + - + @@ -10410,9 +10410,9 @@ - + - + @@ -10420,9 +10420,9 @@ - + - + @@ -10430,9 +10430,9 @@ - + - + @@ -10440,9 +10440,9 @@ - + - + @@ -10450,9 +10450,9 @@ - + - + @@ -10460,9 +10460,9 @@ - + - + @@ -10470,9 +10470,9 @@ - + - + @@ -10480,9 +10480,9 @@ - + - + @@ -10490,9 +10490,9 @@ - + - + @@ -10500,9 +10500,9 @@ - + - + @@ -10510,9 +10510,9 @@ - + - + @@ -10520,9 +10520,9 @@ - + - + @@ -10530,9 +10530,9 @@ - + - + @@ -10540,9 +10540,9 @@ - + - + @@ -10550,9 +10550,9 @@ - + - + @@ -10560,9 +10560,9 @@ - + - + @@ -10570,9 +10570,9 @@ - + - + @@ -10580,9 +10580,9 @@ - + - + @@ -10590,9 +10590,9 @@ - + - + @@ -10600,9 +10600,9 @@ - + - + @@ -10610,9 +10610,9 @@ - + - + @@ -10620,9 +10620,9 @@ - + - + @@ -10630,9 +10630,9 @@ - + - + @@ -10640,9 +10640,9 @@ - + - + @@ -10650,9 +10650,9 @@ - + - + @@ -10660,9 +10660,9 @@ - + - + @@ -10670,9 +10670,9 @@ - + - + @@ -10680,9 +10680,9 @@ - + - + @@ -10690,9 +10690,9 @@ - + - + @@ -10700,9 +10700,9 @@ - + - + @@ -10710,9 +10710,9 @@ - + - + @@ -10720,9 +10720,9 @@ - + - + @@ -10730,9 +10730,9 @@ - + - + @@ -10740,9 +10740,9 @@ - + - + @@ -10750,9 +10750,9 @@ - + - + @@ -10760,9 +10760,9 @@ - + - + @@ -10770,9 +10770,9 @@ - + - + @@ -10780,9 +10780,9 @@ - + - + @@ -10790,9 +10790,9 @@ - + - + @@ -10800,9 +10800,9 @@ - + - + @@ -10810,9 +10810,9 @@ - + - + @@ -10820,9 +10820,9 @@ - + - + @@ -10830,9 +10830,9 @@ - + - + @@ -10840,9 +10840,9 @@ - + - + @@ -10850,9 +10850,9 @@ - + - + @@ -10860,9 +10860,9 @@ - + - + @@ -10870,9 +10870,9 @@ - + - + @@ -10880,9 +10880,9 @@ - + - + @@ -10890,9 +10890,9 @@ - + - + @@ -10900,9 +10900,9 @@ - + - + @@ -10910,9 +10910,9 @@ - + - + @@ -10920,9 +10920,9 @@ - + - + @@ -10930,9 +10930,9 @@ - + - + @@ -10940,9 +10940,9 @@ - + - + @@ -10950,9 +10950,9 @@ - + - + @@ -10960,9 +10960,9 @@ - + - + @@ -10970,9 +10970,9 @@ - + - + @@ -10980,9 +10980,9 @@ - + - + @@ -10990,9 +10990,9 @@ - + - + @@ -11000,9 +11000,9 @@ - + - + @@ -11010,9 +11010,9 @@ - + - + @@ -11020,9 +11020,9 @@ - + - + @@ -11030,9 +11030,9 @@ - + - + @@ -11040,9 +11040,9 @@ - + - + @@ -11050,9 +11050,9 @@ - + - + @@ -11060,9 +11060,9 @@ - + - + @@ -11070,9 +11070,9 @@ - + - + @@ -11080,9 +11080,9 @@ - + - + @@ -11090,9 +11090,9 @@ - + - + @@ -11100,9 +11100,9 @@ - + - + @@ -11110,9 +11110,9 @@ - + - + @@ -11120,9 +11120,9 @@ - + - + @@ -11130,9 +11130,9 @@ - + - + @@ -11140,9 +11140,9 @@ - + - + @@ -11150,9 +11150,9 @@ - + - + @@ -11160,9 +11160,9 @@ - + - + @@ -11170,9 +11170,9 @@ - + - + @@ -11180,9 +11180,9 @@ - + - + @@ -11190,9 +11190,9 @@ - + - + @@ -11200,9 +11200,9 @@ - + - + @@ -11210,9 +11210,9 @@ - + - + @@ -11220,9 +11220,9 @@ - + - + @@ -11230,9 +11230,9 @@ - + - + @@ -11240,9 +11240,9 @@ - + - + @@ -11250,9 +11250,9 @@ - + - + @@ -11260,9 +11260,9 @@ - + - + @@ -11270,9 +11270,9 @@ - + - + @@ -11280,9 +11280,9 @@ - + - + @@ -11290,9 +11290,9 @@ - + - + @@ -11300,9 +11300,9 @@ - + - + @@ -11310,9 +11310,9 @@ - + - + @@ -11320,9 +11320,9 @@ - + - + @@ -11330,9 +11330,9 @@ - + - + @@ -11340,9 +11340,9 @@ - + - + @@ -11350,9 +11350,9 @@ - + - + @@ -11360,9 +11360,9 @@ - + - + @@ -11370,9 +11370,9 @@ - + - + @@ -11380,9 +11380,9 @@ - + - + @@ -11390,9 +11390,9 @@ - + - + @@ -11400,9 +11400,9 @@ - + - + @@ -11410,9 +11410,9 @@ - + - + @@ -11420,9 +11420,9 @@ - + - + @@ -11430,9 +11430,9 @@ - + - + @@ -11440,9 +11440,9 @@ - + - + @@ -11450,9 +11450,9 @@ - + - + @@ -11460,9 +11460,9 @@ - + - + @@ -11470,9 +11470,9 @@ - + - + @@ -11480,9 +11480,9 @@ - + - + @@ -11490,9 +11490,9 @@ - + - + @@ -11500,9 +11500,9 @@ - + - + @@ -11510,9 +11510,9 @@ - + - + @@ -11520,9 +11520,9 @@ - + - + @@ -11530,9 +11530,9 @@ - + - + @@ -11540,9 +11540,9 @@ - + - + @@ -11550,9 +11550,9 @@ - + - + @@ -11560,9 +11560,9 @@ - + - + @@ -11570,9 +11570,9 @@ - + - + @@ -11580,9 +11580,9 @@ - + - + @@ -11590,9 +11590,9 @@ - + - + @@ -11600,9 +11600,9 @@ - + - + @@ -11610,9 +11610,9 @@ - + - + @@ -11620,9 +11620,9 @@ - + - + @@ -11630,9 +11630,9 @@ - + - + @@ -11640,9 +11640,9 @@ - + - + @@ -11650,9 +11650,9 @@ - + - + @@ -11660,9 +11660,9 @@ - + - + @@ -11670,9 +11670,9 @@ - + - + @@ -11680,9 +11680,9 @@ - + - + @@ -11690,9 +11690,9 @@ - + - + @@ -11700,9 +11700,9 @@ - + - + @@ -11710,9 +11710,9 @@ - + - + @@ -11720,9 +11720,9 @@ - + - + @@ -11730,9 +11730,9 @@ - + - + @@ -11740,9 +11740,9 @@ - + - + @@ -11750,9 +11750,9 @@ - + - + @@ -11760,9 +11760,9 @@ - + - + @@ -11770,9 +11770,9 @@ - + - + @@ -11780,9 +11780,9 @@ - + - + @@ -11790,9 +11790,9 @@ - + - + @@ -11800,9 +11800,9 @@ - + - + @@ -11810,9 +11810,9 @@ - + - + @@ -11820,9 +11820,9 @@ - + - + @@ -11830,9 +11830,9 @@ - + - + @@ -11840,9 +11840,9 @@ - + - + @@ -11850,9 +11850,9 @@ - + - + @@ -11860,9 +11860,9 @@ - + - + @@ -11870,9 +11870,9 @@ - + - + @@ -11880,9 +11880,9 @@ - + - + @@ -11890,9 +11890,9 @@ - + - + @@ -11900,9 +11900,9 @@ - + - + @@ -11910,9 +11910,9 @@ - + - + @@ -11920,9 +11920,9 @@ - + - + @@ -11930,9 +11930,9 @@ - + - + @@ -11940,9 +11940,9 @@ - + - + @@ -11950,9 +11950,9 @@ - + - + @@ -11960,9 +11960,9 @@ - + - + @@ -11970,9 +11970,9 @@ - + - + @@ -11980,9 +11980,9 @@ - + - + @@ -11990,9 +11990,9 @@ - + - + @@ -12000,9 +12000,9 @@ - + - + @@ -12010,9 +12010,9 @@ - + - + @@ -12020,9 +12020,9 @@ - + - + @@ -12030,9 +12030,9 @@ - + - + @@ -12040,9 +12040,9 @@ - + - + @@ -12050,9 +12050,9 @@ - + - + @@ -12060,9 +12060,9 @@ - + - + @@ -12070,9 +12070,9 @@ - + - + @@ -12080,9 +12080,9 @@ - + - + @@ -12090,9 +12090,9 @@ - + - + @@ -12100,9 +12100,9 @@ - + - + @@ -12110,9 +12110,9 @@ - + - + @@ -12120,9 +12120,9 @@ - + - + @@ -12130,9 +12130,9 @@ - + - + @@ -12140,9 +12140,9 @@ - + - + @@ -12150,9 +12150,9 @@ - + - + @@ -12160,9 +12160,9 @@ - + - + @@ -12170,9 +12170,9 @@ - + - + @@ -12180,9 +12180,9 @@ - + - + @@ -12190,9 +12190,9 @@ - + - + @@ -12200,9 +12200,9 @@ - + - + @@ -12210,9 +12210,9 @@ - + - + @@ -12220,9 +12220,9 @@ - + - + @@ -12230,9 +12230,9 @@ - + - + @@ -12240,9 +12240,9 @@ - + - + @@ -12250,9 +12250,9 @@ - + - + @@ -12260,9 +12260,9 @@ - + - + @@ -12270,9 +12270,9 @@ - + - + @@ -12280,9 +12280,9 @@ - + - + @@ -12290,9 +12290,9 @@ - + - + @@ -12300,9 +12300,9 @@ - + - + @@ -12310,9 +12310,9 @@ - + - + @@ -12320,9 +12320,9 @@ - + - + @@ -12330,9 +12330,9 @@ - + - + @@ -12340,9 +12340,9 @@ - + - + @@ -12350,9 +12350,9 @@ - + - + @@ -12360,9 +12360,9 @@ - + - + @@ -12370,9 +12370,9 @@ - + - + @@ -12380,9 +12380,9 @@ - + - + @@ -12390,9 +12390,9 @@ - + - + @@ -12400,9 +12400,9 @@ - + - + @@ -12410,9 +12410,9 @@ - + - + @@ -12420,9 +12420,9 @@ - + - + @@ -12430,9 +12430,9 @@ - + - + @@ -12440,9 +12440,9 @@ - + - + @@ -12450,9 +12450,9 @@ - + - + @@ -12460,9 +12460,9 @@ - + - + @@ -12470,9 +12470,9 @@ - + - + @@ -12480,9 +12480,9 @@ - + - + @@ -12490,9 +12490,9 @@ - + - + @@ -12500,9 +12500,9 @@ - + - + @@ -12510,9 +12510,9 @@ - + - + @@ -12520,9 +12520,9 @@ - + - + @@ -12530,9 +12530,9 @@ - + - + @@ -12540,9 +12540,9 @@ - + - + @@ -12550,9 +12550,9 @@ - + - + @@ -12560,9 +12560,9 @@ - + - + @@ -12570,9 +12570,9 @@ - + - + @@ -12580,9 +12580,9 @@ - + - + @@ -12590,9 +12590,9 @@ - + - + @@ -12600,9 +12600,9 @@ - + - + @@ -12610,9 +12610,9 @@ - + - + @@ -12620,9 +12620,9 @@ - + - + @@ -12630,9 +12630,9 @@ - + - + @@ -12640,9 +12640,9 @@ - + - + @@ -12650,9 +12650,9 @@ - + - + @@ -12660,9 +12660,9 @@ - + - + @@ -12670,9 +12670,9 @@ - + - + @@ -12680,9 +12680,9 @@ - + - + @@ -12690,9 +12690,9 @@ - + - + @@ -12700,9 +12700,9 @@ - + - + @@ -12710,9 +12710,9 @@ - + - + @@ -12720,9 +12720,9 @@ - + - + @@ -12730,9 +12730,9 @@ - + - + @@ -12740,9 +12740,9 @@ - + - + @@ -12750,9 +12750,9 @@ - + - + @@ -12760,9 +12760,9 @@ - + - + @@ -12770,9 +12770,9 @@ - + - + @@ -12780,9 +12780,9 @@ - + - + @@ -12790,9 +12790,9 @@ - + - + @@ -12800,9 +12800,9 @@ - + - + @@ -12810,9 +12810,9 @@ - + - + @@ -12820,9 +12820,9 @@ - + - + @@ -12830,9 +12830,9 @@ - + - + @@ -12840,9 +12840,9 @@ - + - + @@ -12850,9 +12850,9 @@ - + - + @@ -12860,9 +12860,9 @@ - + - + @@ -12870,9 +12870,9 @@ - + - + @@ -12880,9 +12880,9 @@ - + - + @@ -12890,9 +12890,9 @@ - + - + @@ -12900,9 +12900,9 @@ - + - + @@ -12910,9 +12910,9 @@ - + - + @@ -12920,9 +12920,9 @@ - + - + @@ -12930,9 +12930,9 @@ - + - + @@ -12940,9 +12940,9 @@ - + - + @@ -12950,9 +12950,9 @@ - + - + @@ -12960,9 +12960,9 @@ - + - + @@ -12970,9 +12970,9 @@ - + - + @@ -12980,9 +12980,9 @@ - + - + @@ -12990,9 +12990,9 @@ - + - + @@ -13000,9 +13000,9 @@ - + - + @@ -13010,9 +13010,9 @@ - + - + @@ -13020,9 +13020,9 @@ - + - + @@ -13030,9 +13030,9 @@ - + - + @@ -13040,9 +13040,9 @@ - + - + @@ -13050,9 +13050,9 @@ - + - + @@ -13060,9 +13060,9 @@ - + - + @@ -13070,9 +13070,9 @@ - + - + @@ -13080,9 +13080,9 @@ - + - + @@ -13090,9 +13090,9 @@ - + - + @@ -13100,9 +13100,9 @@ - + - + @@ -13110,9 +13110,9 @@ - + - + @@ -13120,9 +13120,9 @@ - + - + @@ -13130,9 +13130,9 @@ - + - + @@ -13140,9 +13140,9 @@ - + - + @@ -13150,9 +13150,9 @@ - + - + @@ -13160,9 +13160,9 @@ - + - + @@ -13170,9 +13170,9 @@ - + - + @@ -13180,9 +13180,9 @@ - + - + @@ -13190,9 +13190,9 @@ - + - + @@ -13200,9 +13200,9 @@ - + - + @@ -13210,9 +13210,9 @@ - + - + @@ -13220,9 +13220,9 @@ - + - + @@ -13230,9 +13230,9 @@ - + - + @@ -13240,9 +13240,9 @@ - + - + @@ -13250,9 +13250,9 @@ - + - + @@ -13260,9 +13260,9 @@ - + - + @@ -13270,9 +13270,9 @@ - + - + @@ -13280,9 +13280,9 @@ - + - + @@ -13290,9 +13290,9 @@ - + - + @@ -13300,9 +13300,9 @@ - + - + @@ -13310,9 +13310,9 @@ - + - + @@ -13320,9 +13320,9 @@ - + - + @@ -13330,9 +13330,9 @@ - + - + @@ -13340,9 +13340,9 @@ - + - + @@ -13350,9 +13350,9 @@ - + - + @@ -13360,9 +13360,9 @@ - + - + @@ -13370,9 +13370,9 @@ - + - + @@ -13380,9 +13380,9 @@ - + - + @@ -13390,9 +13390,9 @@ - + - + @@ -13400,9 +13400,9 @@ - + - + @@ -13410,9 +13410,9 @@ - + - + @@ -13420,9 +13420,9 @@ - + - + @@ -13430,9 +13430,9 @@ - + - + @@ -13440,9 +13440,9 @@ - + - + @@ -13450,9 +13450,9 @@ - + - + @@ -13460,9 +13460,9 @@ - + - + @@ -13470,9 +13470,9 @@ - + - + @@ -13480,9 +13480,9 @@ - + - + @@ -13490,9 +13490,9 @@ - + - + @@ -13500,9 +13500,9 @@ - + - + @@ -13510,9 +13510,9 @@ - + - + @@ -13520,9 +13520,9 @@ - + - + @@ -13530,9 +13530,9 @@ - + - + @@ -13540,9 +13540,9 @@ - + - + @@ -13550,9 +13550,9 @@ - + - + @@ -13560,9 +13560,9 @@ - + - + @@ -13570,9 +13570,9 @@ - + - + @@ -13580,9 +13580,9 @@ - + - + @@ -13590,9 +13590,9 @@ - + - + @@ -13600,9 +13600,9 @@ - + - + @@ -13610,9 +13610,9 @@ - + - + @@ -13620,9 +13620,9 @@ - + - + @@ -13630,9 +13630,9 @@ - + - + @@ -13640,9 +13640,9 @@ - + - + @@ -13650,9 +13650,9 @@ - + - + @@ -13660,9 +13660,9 @@ - + - + @@ -13670,9 +13670,9 @@ - + - + @@ -13680,9 +13680,9 @@ - + - + @@ -13690,9 +13690,9 @@ - + - + @@ -13700,9 +13700,9 @@ - + - + @@ -13710,9 +13710,9 @@ - + - + @@ -13720,9 +13720,9 @@ - + - + @@ -13730,9 +13730,9 @@ - + - + @@ -13740,9 +13740,9 @@ - + - + @@ -13750,9 +13750,9 @@ - + - + @@ -13760,9 +13760,9 @@ - + - + @@ -13770,9 +13770,9 @@ - + - + @@ -13780,9 +13780,9 @@ - + - + @@ -13790,9 +13790,9 @@ - + - + @@ -13800,9 +13800,9 @@ - + - + @@ -13810,9 +13810,9 @@ - + - + @@ -13820,9 +13820,9 @@ - + - + @@ -13830,9 +13830,9 @@ - + - + @@ -13840,9 +13840,9 @@ - + - + @@ -13850,9 +13850,9 @@ - + - + @@ -13860,9 +13860,9 @@ - + - + @@ -13870,9 +13870,9 @@ - + - + @@ -13880,9 +13880,9 @@ - + - + @@ -13890,9 +13890,9 @@ - + - + @@ -13900,9 +13900,9 @@ - + - + @@ -13910,9 +13910,9 @@ - + - + @@ -13920,9 +13920,9 @@ - + - + @@ -13930,9 +13930,9 @@ - + - + @@ -13940,9 +13940,9 @@ - + - + @@ -13950,9 +13950,9 @@ - + - + @@ -13960,9 +13960,9 @@ - + - + @@ -13970,9 +13970,9 @@ - + - + @@ -13980,9 +13980,9 @@ - + - + @@ -13990,9 +13990,9 @@ - + - + @@ -14000,9 +14000,9 @@ - + - + @@ -14010,9 +14010,9 @@ - + - + @@ -14020,9 +14020,9 @@ - + - + @@ -14030,9 +14030,9 @@ - + - + @@ -14040,9 +14040,9 @@ - + - + @@ -14050,9 +14050,9 @@ - + - + @@ -14060,9 +14060,9 @@ - + - + @@ -14070,9 +14070,9 @@ - + - + @@ -14080,9 +14080,9 @@ - + - + @@ -14090,9 +14090,9 @@ - + - + @@ -14100,9 +14100,9 @@ - + - + @@ -14110,9 +14110,9 @@ - + - + @@ -14120,9 +14120,9 @@ - + - + @@ -14130,9 +14130,9 @@ - + - + @@ -14140,9 +14140,9 @@ - + - + @@ -14150,9 +14150,9 @@ - + - + @@ -14160,9 +14160,9 @@ - + - + @@ -14170,9 +14170,9 @@ - + - + @@ -14180,9 +14180,9 @@ - + - + @@ -14190,9 +14190,9 @@ - + - + @@ -14200,9 +14200,9 @@ - + - + @@ -14210,9 +14210,9 @@ - + - + @@ -14220,9 +14220,9 @@ - + - + @@ -14230,9 +14230,9 @@ - + - + @@ -14240,9 +14240,9 @@ - + - + @@ -14250,9 +14250,9 @@ - + - + @@ -14260,9 +14260,9 @@ - + - + @@ -14270,9 +14270,9 @@ - + - + @@ -14280,9 +14280,9 @@ - + - + @@ -14290,9 +14290,9 @@ - + - + @@ -14300,9 +14300,9 @@ - + - + @@ -14310,9 +14310,9 @@ - + - + @@ -14320,9 +14320,9 @@ - + - + @@ -14330,9 +14330,9 @@ - + - + @@ -14340,9 +14340,9 @@ - + - + @@ -14350,9 +14350,9 @@ - + - + @@ -14360,9 +14360,9 @@ - + - + @@ -14370,9 +14370,9 @@ - + - + @@ -14380,9 +14380,9 @@ - + - + @@ -14390,9 +14390,9 @@ - + - + @@ -14400,9 +14400,9 @@ - + - + @@ -14410,9 +14410,9 @@ - + - + @@ -14420,9 +14420,9 @@ - + - + @@ -14430,9 +14430,9 @@ - + - + @@ -14440,9 +14440,9 @@ - + - + @@ -14450,9 +14450,9 @@ - + - + @@ -14460,9 +14460,9 @@ - + - + @@ -14470,9 +14470,9 @@ - + - + @@ -14480,9 +14480,9 @@ - + - + @@ -14490,9 +14490,9 @@ - + - + @@ -14500,9 +14500,9 @@ - + - + @@ -14510,9 +14510,9 @@ - + - + @@ -14520,9 +14520,9 @@ - + - + @@ -14530,9 +14530,9 @@ - + - + @@ -14540,9 +14540,9 @@ - + - + @@ -14550,9 +14550,9 @@ - + - + @@ -14560,9 +14560,9 @@ - + - + @@ -14570,9 +14570,9 @@ - + - + @@ -14580,9 +14580,9 @@ - + - + @@ -14590,9 +14590,9 @@ - + - + @@ -14600,9 +14600,9 @@ - + - + @@ -14610,9 +14610,9 @@ - + - + @@ -14620,9 +14620,9 @@ - + - + @@ -14630,9 +14630,9 @@ - + - + @@ -14640,9 +14640,9 @@ - + - + @@ -14650,9 +14650,9 @@ - + - + @@ -14660,9 +14660,9 @@ - + - + @@ -14670,9 +14670,9 @@ - + - + @@ -14680,9 +14680,9 @@ - + - + @@ -14690,9 +14690,9 @@ - + - + @@ -14700,9 +14700,9 @@ - + - + @@ -14710,9 +14710,9 @@ - + - + @@ -14720,9 +14720,9 @@ - + - + @@ -14730,9 +14730,9 @@ - + - + @@ -14740,9 +14740,9 @@ - + - + @@ -14750,9 +14750,9 @@ - + - + @@ -14760,9 +14760,9 @@ - + - + @@ -14770,9 +14770,9 @@ - + - + @@ -14780,9 +14780,9 @@ - + - + @@ -14790,9 +14790,9 @@ - + - + @@ -14800,9 +14800,9 @@ - + - + @@ -14810,9 +14810,9 @@ - + - + @@ -14820,9 +14820,9 @@ - + - + @@ -14830,9 +14830,9 @@ - + - + @@ -14840,9 +14840,9 @@ - + - + @@ -14850,9 +14850,9 @@ - + - + @@ -14860,9 +14860,9 @@ - + - + @@ -14870,9 +14870,9 @@ - + - + @@ -14880,9 +14880,9 @@ - + - + @@ -14890,9 +14890,9 @@ - + - + @@ -14900,9 +14900,9 @@ - + - + @@ -14910,9 +14910,9 @@ - + - + @@ -14920,9 +14920,9 @@ - + - + @@ -14930,9 +14930,9 @@ - + - + @@ -14940,9 +14940,9 @@ - + - + @@ -14950,9 +14950,9 @@ - + - + @@ -14960,9 +14960,9 @@ - + - + @@ -14970,9 +14970,9 @@ - + - + @@ -14980,9 +14980,9 @@ - + - + @@ -14990,9 +14990,9 @@ - + - + @@ -15000,9 +15000,9 @@ - + - + @@ -15010,9 +15010,9 @@ - + - + @@ -15020,9 +15020,9 @@ - + - + @@ -15030,9 +15030,9 @@ - + - + @@ -15040,9 +15040,9 @@ - + - + @@ -15050,9 +15050,9 @@ - + - + @@ -15060,9 +15060,9 @@ - + - + @@ -15070,9 +15070,9 @@ - + - + @@ -15080,9 +15080,9 @@ - + - + @@ -15090,9 +15090,9 @@ - + - + @@ -15100,9 +15100,9 @@ - + - + @@ -15110,9 +15110,9 @@ - + - + @@ -15120,9 +15120,9 @@ - + - + @@ -15130,9 +15130,9 @@ - + - + @@ -15140,9 +15140,9 @@ - + - + @@ -15150,9 +15150,9 @@ - + - + @@ -15160,9 +15160,9 @@ - + - + @@ -15170,9 +15170,9 @@ - + - + @@ -15180,9 +15180,9 @@ - + - + @@ -15190,9 +15190,9 @@ - + - + @@ -15200,9 +15200,9 @@ - + - + @@ -15210,9 +15210,9 @@ - + - + @@ -15220,9 +15220,9 @@ - + - + @@ -15230,9 +15230,9 @@ - + - + @@ -15240,9 +15240,9 @@ - + - + @@ -15250,9 +15250,9 @@ - + - + @@ -15260,9 +15260,9 @@ - + - + @@ -15270,9 +15270,9 @@ - + - + @@ -15280,9 +15280,9 @@ - + - + @@ -15290,9 +15290,9 @@ - + - + @@ -15300,9 +15300,9 @@ - + - + @@ -15310,9 +15310,9 @@ - + - + @@ -15320,9 +15320,9 @@ - + - + @@ -15330,9 +15330,9 @@ - + - + @@ -15340,9 +15340,9 @@ - + - + @@ -15350,9 +15350,9 @@ - + - + @@ -15360,9 +15360,9 @@ - + - + @@ -15370,9 +15370,9 @@ - + - + @@ -15380,9 +15380,9 @@ - + - + @@ -15390,9 +15390,9 @@ - + - + @@ -15400,9 +15400,9 @@ - + - + @@ -15410,9 +15410,9 @@ - + - + @@ -15420,9 +15420,9 @@ - + - + @@ -15430,9 +15430,9 @@ - + - + @@ -15440,9 +15440,9 @@ - + - + @@ -15450,9 +15450,9 @@ - + - + @@ -15460,9 +15460,9 @@ - + - + @@ -15470,9 +15470,9 @@ - + - + @@ -15480,9 +15480,9 @@ - + - + @@ -15490,9 +15490,9 @@ - + - + @@ -15500,9 +15500,9 @@ - + - + @@ -15510,9 +15510,9 @@ - + - + @@ -15520,9 +15520,9 @@ - + - + @@ -15530,9 +15530,9 @@ - + - + @@ -15540,9 +15540,9 @@ - + - + @@ -15550,9 +15550,9 @@ - + - + @@ -15560,9 +15560,9 @@ - + - + @@ -15570,9 +15570,9 @@ - + - + @@ -15580,9 +15580,9 @@ - + - + @@ -15590,9 +15590,9 @@ - + - + @@ -15600,9 +15600,9 @@ - + - + @@ -15610,9 +15610,9 @@ - + - + @@ -15620,9 +15620,9 @@ - + - + @@ -15630,9 +15630,9 @@ - + - + @@ -15640,9 +15640,9 @@ - + - + @@ -15650,9 +15650,9 @@ - + - + @@ -15660,9 +15660,9 @@ - + - + @@ -15670,9 +15670,9 @@ - + - + @@ -15680,9 +15680,9 @@ - + - + @@ -15690,9 +15690,9 @@ - + - + @@ -15700,9 +15700,9 @@ - + - + @@ -15710,9 +15710,9 @@ - + - + @@ -15720,9 +15720,9 @@ - + - + @@ -15730,9 +15730,9 @@ - + - + @@ -15740,9 +15740,9 @@ - + - + @@ -15750,9 +15750,9 @@ - + - + @@ -15760,9 +15760,9 @@ - + - + @@ -15770,9 +15770,9 @@ - + - + @@ -15780,9 +15780,9 @@ - + - + @@ -15790,9 +15790,9 @@ - + - + @@ -15800,9 +15800,9 @@ - + - + @@ -15810,9 +15810,9 @@ - + - + @@ -15820,9 +15820,9 @@ - + - + @@ -15830,9 +15830,9 @@ - + - + @@ -15840,9 +15840,9 @@ - + - + @@ -15850,9 +15850,9 @@ - + - + @@ -15860,9 +15860,9 @@ - + - + @@ -15870,9 +15870,9 @@ - + - + @@ -15880,9 +15880,9 @@ - + - + @@ -15890,9 +15890,9 @@ - + - + @@ -15900,9 +15900,9 @@ - + - + @@ -15910,9 +15910,9 @@ - + - + @@ -15920,9 +15920,9 @@ - + - + @@ -15930,9 +15930,9 @@ - + - + @@ -15940,9 +15940,9 @@ - + - + @@ -15950,9 +15950,9 @@ - + - + @@ -15960,9 +15960,9 @@ - + - + @@ -15970,9 +15970,9 @@ - + - + @@ -15980,9 +15980,9 @@ - + - + @@ -15990,9 +15990,9 @@ - + - + @@ -16000,9 +16000,9 @@ - + - + @@ -16010,9 +16010,9 @@ - + - + @@ -16020,9 +16020,9 @@ - + - + @@ -16030,9 +16030,9 @@ - + - + @@ -16040,9 +16040,9 @@ - + - + @@ -16050,9 +16050,9 @@ - + - + @@ -16060,9 +16060,9 @@ - + - + @@ -16070,9 +16070,9 @@ - + - + @@ -16080,9 +16080,9 @@ - + - + @@ -16090,9 +16090,9 @@ - + - + @@ -16100,9 +16100,9 @@ - + - + @@ -16110,9 +16110,9 @@ - + - + @@ -16120,9 +16120,9 @@ - + - + @@ -16130,9 +16130,9 @@ - + - + @@ -16140,9 +16140,9 @@ - + - + @@ -16150,9 +16150,9 @@ - + - + @@ -16160,9 +16160,9 @@ - + - + @@ -16170,9 +16170,9 @@ - + - + @@ -16180,9 +16180,9 @@ - + - + @@ -16190,9 +16190,9 @@ - + - + @@ -16200,9 +16200,9 @@ - + - + @@ -16210,9 +16210,9 @@ - + - + @@ -16220,9 +16220,9 @@ - + - + @@ -16230,9 +16230,9 @@ - + - + @@ -16240,9 +16240,9 @@ - + - + @@ -16250,9 +16250,9 @@ - + - + @@ -16260,9 +16260,9 @@ - + - + @@ -16270,9 +16270,9 @@ - + - + @@ -16280,9 +16280,9 @@ - + - + @@ -16290,9 +16290,9 @@ - + - + @@ -16300,9 +16300,9 @@ - + - + @@ -16310,9 +16310,9 @@ - + - + @@ -16320,9 +16320,9 @@ - + - + @@ -16330,9 +16330,9 @@ - + - + @@ -16340,9 +16340,9 @@ - + - + @@ -16350,9 +16350,9 @@ - + - + @@ -16360,9 +16360,9 @@ - + - + @@ -16370,9 +16370,9 @@ - + - + @@ -16380,9 +16380,9 @@ - + - + @@ -16390,9 +16390,9 @@ - + - + @@ -16400,9 +16400,9 @@ - + - + @@ -16410,9 +16410,9 @@ - + - + @@ -16420,9 +16420,9 @@ - + - + @@ -16430,9 +16430,9 @@ - + - + @@ -16440,9 +16440,9 @@ - + - + @@ -16450,9 +16450,9 @@ - + - + @@ -16460,9 +16460,9 @@ - + - + @@ -16470,9 +16470,9 @@ - + - + @@ -16480,9 +16480,9 @@ - + - + @@ -16490,9 +16490,9 @@ - + - + @@ -16500,9 +16500,9 @@ - + - + @@ -16510,9 +16510,9 @@ - + - + @@ -16520,9 +16520,9 @@ - + - + @@ -16530,9 +16530,9 @@ - + - + @@ -16540,9 +16540,9 @@ - + - + @@ -16550,9 +16550,9 @@ - + - + @@ -16560,9 +16560,9 @@ - + - + @@ -16570,9 +16570,9 @@ - + - + @@ -16580,9 +16580,9 @@ - + - + @@ -16590,9 +16590,9 @@ - + - + @@ -16600,9 +16600,9 @@ - + - + @@ -16610,9 +16610,9 @@ - + - + @@ -16620,9 +16620,9 @@ - + - + @@ -16630,9 +16630,9 @@ - + - + @@ -16640,9 +16640,9 @@ - + - + @@ -16650,9 +16650,9 @@ - + - + @@ -16660,9 +16660,9 @@ - + - + @@ -16670,9 +16670,9 @@ - + - + @@ -16680,9 +16680,9 @@ - + - + @@ -16690,9 +16690,9 @@ - + - + @@ -16700,9 +16700,9 @@ - + - + @@ -16710,9 +16710,9 @@ - + - + @@ -16720,9 +16720,9 @@ - + - + @@ -16730,9 +16730,9 @@ - + - + @@ -16740,9 +16740,9 @@ - + - + @@ -16750,9 +16750,9 @@ - + - + @@ -16760,9 +16760,9 @@ - + - + @@ -16770,9 +16770,9 @@ - + - + @@ -16780,9 +16780,9 @@ - + - + @@ -16790,9 +16790,9 @@ - + - + @@ -16800,9 +16800,9 @@ - + - + @@ -16810,9 +16810,9 @@ - + - + @@ -16820,9 +16820,9 @@ - + - + @@ -16830,9 +16830,9 @@ - + - + @@ -16840,9 +16840,9 @@ - + - + @@ -16850,9 +16850,9 @@ - + - + @@ -16860,9 +16860,9 @@ - + - + @@ -16870,9 +16870,9 @@ - + - + @@ -16880,9 +16880,9 @@ - + - + @@ -16890,9 +16890,9 @@ - + - + @@ -16900,9 +16900,9 @@ - + - + @@ -16910,9 +16910,9 @@ - + - + @@ -16920,9 +16920,9 @@ - + - + @@ -16930,9 +16930,9 @@ - + - + @@ -16940,9 +16940,9 @@ - + - + @@ -16950,9 +16950,9 @@ - + - + @@ -16960,9 +16960,9 @@ - + - + @@ -16970,9 +16970,9 @@ - + - + @@ -16980,9 +16980,9 @@ - + - + @@ -16990,9 +16990,9 @@ - + - + @@ -17000,9 +17000,9 @@ - + - + @@ -17010,9 +17010,9 @@ - + - + @@ -17020,9 +17020,9 @@ - + - + @@ -17030,9 +17030,9 @@ - + - + @@ -17040,9 +17040,9 @@ - + - + @@ -17050,9 +17050,9 @@ - + - + @@ -17060,9 +17060,9 @@ - + - + @@ -17070,9 +17070,9 @@ - + - + @@ -17080,9 +17080,9 @@ - + - + @@ -17090,9 +17090,9 @@ - + - + @@ -17100,9 +17100,9 @@ - + - + @@ -17110,9 +17110,9 @@ - + - + @@ -17120,9 +17120,9 @@ - + - + @@ -17130,9 +17130,9 @@ - + - + @@ -17140,9 +17140,9 @@ - + - + @@ -17150,9 +17150,9 @@ - + - + @@ -17160,9 +17160,9 @@ - + - + @@ -17170,9 +17170,9 @@ - + - + @@ -17180,9 +17180,9 @@ - + - + @@ -17190,9 +17190,9 @@ - + - + @@ -17200,9 +17200,9 @@ - + - + @@ -17210,9 +17210,9 @@ - + - + @@ -17220,9 +17220,9 @@ - + - + @@ -17230,9 +17230,9 @@ - + - + @@ -17240,9 +17240,9 @@ - + - + @@ -17250,9 +17250,9 @@ - + - + @@ -17260,9 +17260,9 @@ - + - + @@ -17270,9 +17270,9 @@ - + - + @@ -17280,9 +17280,9 @@ - + - + @@ -17290,9 +17290,9 @@ - + - + @@ -17300,9 +17300,9 @@ - + - + @@ -17310,9 +17310,9 @@ - + - + @@ -17320,9 +17320,9 @@ - + - + @@ -17330,9 +17330,9 @@ - + - + @@ -17340,9 +17340,9 @@ - + - + @@ -17350,9 +17350,9 @@ - + - + @@ -17360,9 +17360,9 @@ - + - + @@ -17370,9 +17370,9 @@ - + - + @@ -17380,9 +17380,9 @@ - + - + @@ -17390,9 +17390,9 @@ - + - + @@ -17400,9 +17400,9 @@ - + - + @@ -17410,9 +17410,9 @@ - + - + @@ -17420,9 +17420,9 @@ - + - + @@ -17430,9 +17430,9 @@ - + - + @@ -17440,9 +17440,9 @@ - + - + @@ -17450,9 +17450,9 @@ - + - + @@ -17460,9 +17460,9 @@ - + - + @@ -17470,9 +17470,9 @@ - + - + @@ -17480,9 +17480,9 @@ - + - + @@ -17490,9 +17490,9 @@ - + - + @@ -17500,9 +17500,9 @@ - + - + @@ -17510,9 +17510,9 @@ - + - + @@ -17520,9 +17520,9 @@ - + - + @@ -17530,9 +17530,9 @@ - + - + @@ -17540,9 +17540,9 @@ - + - + @@ -17550,9 +17550,9 @@ - + - + @@ -17560,9 +17560,9 @@ - + - + @@ -17570,9 +17570,9 @@ - + - + @@ -17580,9 +17580,9 @@ - + - + @@ -17590,9 +17590,9 @@ - + - + @@ -17600,9 +17600,9 @@ - + - + @@ -17610,9 +17610,9 @@ - + - + @@ -17620,9 +17620,9 @@ - + - + @@ -17630,9 +17630,9 @@ - + - + @@ -17640,9 +17640,9 @@ - + - + @@ -17650,9 +17650,9 @@ - + - + @@ -17660,9 +17660,9 @@ - + - + @@ -17670,9 +17670,9 @@ - + - + @@ -17680,9 +17680,9 @@ - + - + @@ -17690,9 +17690,9 @@ - + - + @@ -17700,9 +17700,9 @@ - + - + @@ -17710,9 +17710,9 @@ - + - + @@ -17720,9 +17720,9 @@ - + - + @@ -17730,9 +17730,9 @@ - + - + @@ -17740,9 +17740,9 @@ - + - + @@ -17750,9 +17750,9 @@ - + - + @@ -17760,9 +17760,9 @@ - + - + @@ -17770,9 +17770,9 @@ - + - + @@ -17780,9 +17780,9 @@ - + - + @@ -17790,9 +17790,9 @@ - + - + @@ -17800,9 +17800,9 @@ - + - + @@ -17810,9 +17810,9 @@ - + - + @@ -17820,9 +17820,9 @@ - + - + @@ -17830,9 +17830,9 @@ - + - + @@ -17840,9 +17840,9 @@ - + - + @@ -17850,9 +17850,9 @@ - + - + @@ -17860,9 +17860,9 @@ - + - + @@ -17870,9 +17870,9 @@ - + - + @@ -17880,9 +17880,9 @@ - + - + @@ -17890,9 +17890,9 @@ - + - + @@ -17900,9 +17900,9 @@ - + - + @@ -17910,9 +17910,9 @@ - + - + @@ -17920,9 +17920,9 @@ - + - + @@ -17930,9 +17930,9 @@ - + - + @@ -17940,9 +17940,9 @@ - + - + @@ -17950,9 +17950,9 @@ - + - + @@ -17960,9 +17960,9 @@ - + - + @@ -17970,9 +17970,9 @@ - + - + @@ -17980,9 +17980,9 @@ - + - + @@ -17990,9 +17990,9 @@ - + - + @@ -18000,9 +18000,9 @@ - + - + @@ -18010,9 +18010,9 @@ - + - + @@ -18020,9 +18020,9 @@ - + - + @@ -18030,9 +18030,9 @@ - + - + @@ -18040,9 +18040,9 @@ - + - + @@ -18050,9 +18050,9 @@ - + - + @@ -18060,9 +18060,9 @@ - + - + @@ -18070,9 +18070,9 @@ - + - + @@ -18080,9 +18080,9 @@ - + - + @@ -18090,9 +18090,9 @@ - + - + @@ -18100,9 +18100,9 @@ - + - + @@ -18110,9 +18110,9 @@ - + - + @@ -18120,9 +18120,9 @@ - + - + @@ -18130,9 +18130,9 @@ - + - + @@ -18140,9 +18140,9 @@ - + - + @@ -18150,9 +18150,9 @@ - + - + @@ -18160,9 +18160,9 @@ - + - + @@ -18170,9 +18170,9 @@ - + - + @@ -18180,9 +18180,9 @@ - + - + @@ -18190,9 +18190,9 @@ - + - + @@ -18200,9 +18200,9 @@ - + - + @@ -18210,9 +18210,9 @@ - + - + @@ -18220,9 +18220,9 @@ - + - + @@ -18230,9 +18230,9 @@ - + - + @@ -18240,9 +18240,9 @@ - + - + @@ -18250,9 +18250,9 @@ - + - + @@ -18260,9 +18260,9 @@ - + - + @@ -18270,9 +18270,9 @@ - + - + @@ -18280,9 +18280,9 @@ - + - + @@ -18290,9 +18290,9 @@ - + - + @@ -18300,9 +18300,9 @@ - + - + @@ -18310,9 +18310,9 @@ - + - + @@ -18320,9 +18320,9 @@ - + - + @@ -18330,9 +18330,9 @@ - + - + @@ -18340,9 +18340,9 @@ - + - + @@ -18350,9 +18350,9 @@ - + - + @@ -18360,9 +18360,9 @@ - + - + @@ -18370,9 +18370,9 @@ - + - + @@ -18380,9 +18380,9 @@ - + - + @@ -18390,9 +18390,9 @@ - + - + @@ -18400,9 +18400,9 @@ - + - + @@ -18410,9 +18410,9 @@ - + - + @@ -18420,9 +18420,9 @@ - + - + @@ -18430,9 +18430,9 @@ - + - + @@ -18440,9 +18440,9 @@ - + - + @@ -18450,9 +18450,9 @@ - + - + @@ -18460,9 +18460,9 @@ - + - + @@ -18470,9 +18470,9 @@ - + - + @@ -18480,9 +18480,9 @@ - + - + @@ -18490,9 +18490,9 @@ - + - + @@ -18500,9 +18500,9 @@ - + - + @@ -18510,9 +18510,9 @@ - + - + @@ -18520,9 +18520,9 @@ - + - + @@ -18530,9 +18530,9 @@ - + - + @@ -18540,9 +18540,9 @@ - + - + @@ -18550,9 +18550,9 @@ - + - + @@ -18560,9 +18560,9 @@ - + - + @@ -18570,9 +18570,9 @@ - + - + @@ -18580,9 +18580,9 @@ - + - + @@ -18590,9 +18590,9 @@ - + - + @@ -18600,9 +18600,9 @@ - + - + @@ -18610,9 +18610,9 @@ - + - + @@ -18620,9 +18620,9 @@ - + - + @@ -18630,9 +18630,9 @@ - + - + @@ -18640,9 +18640,9 @@ - + - + @@ -18650,9 +18650,9 @@ - + - + @@ -18660,9 +18660,9 @@ - + - + @@ -18670,9 +18670,9 @@ - + - + @@ -18680,9 +18680,9 @@ - + - + @@ -18690,9 +18690,9 @@ - + - + @@ -18700,9 +18700,9 @@ - + - + @@ -18710,9 +18710,9 @@ - + - + @@ -18720,9 +18720,9 @@ - + - + @@ -18730,9 +18730,9 @@ - + - + @@ -18740,9 +18740,9 @@ - + - + @@ -18750,9 +18750,9 @@ - + - + @@ -18760,9 +18760,9 @@ - + - + @@ -18770,9 +18770,9 @@ - + - + @@ -18780,9 +18780,9 @@ - + - + @@ -18790,9 +18790,9 @@ - + - + @@ -18800,9 +18800,9 @@ - + - + @@ -18810,9 +18810,9 @@ - + - + @@ -18820,9 +18820,9 @@ - + - + @@ -18830,9 +18830,9 @@ - + - + @@ -18840,9 +18840,9 @@ - + - + @@ -18850,9 +18850,9 @@ - + - + @@ -18860,9 +18860,9 @@ - + - + @@ -18870,9 +18870,9 @@ - + - + @@ -18880,9 +18880,9 @@ - + - + @@ -18890,9 +18890,9 @@ - + - + @@ -18900,9 +18900,9 @@ - + - + @@ -18910,9 +18910,9 @@ - + - + @@ -18920,9 +18920,9 @@ - + - + @@ -18930,9 +18930,9 @@ - + - + @@ -18940,9 +18940,9 @@ - + - + @@ -18950,9 +18950,9 @@ - + - + @@ -18960,9 +18960,9 @@ - + - + @@ -18970,9 +18970,9 @@ - + - + @@ -18980,9 +18980,9 @@ - + - + @@ -18990,9 +18990,9 @@ - + - + @@ -19000,9 +19000,9 @@ - + - + @@ -19010,9 +19010,9 @@ - + - + @@ -19020,9 +19020,9 @@ - + - + @@ -19030,9 +19030,9 @@ - + - + @@ -19040,9 +19040,9 @@ - + - + @@ -19050,9 +19050,9 @@ - + - + @@ -19060,9 +19060,9 @@ - + - + @@ -19070,9 +19070,9 @@ - + - + @@ -19080,9 +19080,9 @@ - + - + @@ -19090,9 +19090,9 @@ - + - + @@ -19100,9 +19100,9 @@ - + - + @@ -19110,9 +19110,9 @@ - + - + @@ -19120,9 +19120,9 @@ - + - + @@ -19130,9 +19130,9 @@ - + - + @@ -19140,9 +19140,9 @@ - + - + @@ -19150,9 +19150,9 @@ - + - + @@ -19160,9 +19160,9 @@ - + - + @@ -19170,9 +19170,9 @@ - + - + @@ -19180,9 +19180,9 @@ - + - + @@ -19190,9 +19190,9 @@ - + - + @@ -19200,9 +19200,9 @@ - + - + @@ -19210,9 +19210,9 @@ - + - + @@ -19220,9 +19220,9 @@ - + - + @@ -19230,9 +19230,9 @@ - + - + @@ -19240,9 +19240,9 @@ - + - + @@ -19250,9 +19250,9 @@ - + - + @@ -19260,9 +19260,9 @@ - + - + @@ -19270,9 +19270,9 @@ - + - + @@ -19280,9 +19280,9 @@ - + - + @@ -19290,9 +19290,9 @@ - + - + @@ -19300,9 +19300,9 @@ - + - + @@ -19310,9 +19310,9 @@ - + - + @@ -19320,9 +19320,9 @@ - + - + @@ -19330,9 +19330,9 @@ - + - + @@ -19340,9 +19340,9 @@ - + - + @@ -19350,9 +19350,9 @@ - + - + @@ -19360,9 +19360,9 @@ - + - + @@ -19370,9 +19370,9 @@ - + - + @@ -19380,9 +19380,9 @@ - + - + @@ -19390,9 +19390,9 @@ - + - + @@ -19400,9 +19400,9 @@ - + - + @@ -19410,9 +19410,9 @@ - + - + @@ -19420,9 +19420,9 @@ - + - + @@ -19430,9 +19430,9 @@ - + - + @@ -19440,9 +19440,9 @@ - + - + @@ -19450,9 +19450,9 @@ - + - + @@ -19460,9 +19460,9 @@ - + - + @@ -19470,9 +19470,9 @@ - + - + @@ -19480,9 +19480,9 @@ - + - + @@ -19490,9 +19490,9 @@ - + - + @@ -19500,9 +19500,9 @@ - + - + @@ -19510,9 +19510,9 @@ - + - + @@ -19520,9 +19520,9 @@ - + - + @@ -19530,9 +19530,9 @@ - + - + @@ -19540,9 +19540,9 @@ - + - + @@ -19550,9 +19550,9 @@ - + - + @@ -19560,9 +19560,9 @@ - + - + @@ -19570,9 +19570,9 @@ - + - + @@ -19580,9 +19580,9 @@ - + - + @@ -19590,9 +19590,9 @@ - + - + @@ -19600,9 +19600,9 @@ - + - + @@ -19610,9 +19610,9 @@ - + - + @@ -19620,9 +19620,9 @@ - + - + @@ -19630,9 +19630,9 @@ - + - + @@ -19640,9 +19640,9 @@ - + - + @@ -19650,9 +19650,9 @@ - + - + @@ -19660,9 +19660,9 @@ - + - + @@ -19670,9 +19670,9 @@ - + - + @@ -19680,9 +19680,9 @@ - + - + @@ -19690,9 +19690,9 @@ - + - + @@ -19700,9 +19700,9 @@ - + - + @@ -19710,9 +19710,9 @@ - + - + @@ -19720,9 +19720,9 @@ - + - + @@ -19730,9 +19730,9 @@ - + - + @@ -19740,9 +19740,9 @@ - + - + @@ -19750,9 +19750,9 @@ - + - + @@ -19760,9 +19760,9 @@ - + - + @@ -19770,9 +19770,9 @@ - + - + @@ -19780,9 +19780,9 @@ - + - + @@ -19790,9 +19790,9 @@ - + - + @@ -19800,9 +19800,9 @@ - + - + @@ -19810,9 +19810,9 @@ - + - + @@ -19820,9 +19820,9 @@ - + - + @@ -19830,9 +19830,9 @@ - + - + @@ -19840,9 +19840,9 @@ - + - + @@ -19850,9 +19850,9 @@ - + - + @@ -19860,9 +19860,9 @@ - + - + @@ -19870,9 +19870,9 @@ - + - + @@ -19880,9 +19880,9 @@ - + - + @@ -19890,9 +19890,9 @@ - + - + @@ -19900,9 +19900,9 @@ - + - + @@ -19910,9 +19910,9 @@ - + - + @@ -19920,9 +19920,9 @@ - + - + @@ -19930,9 +19930,9 @@ - + - + @@ -19940,9 +19940,9 @@ - + - + @@ -19950,9 +19950,9 @@ - + - + @@ -19960,9 +19960,9 @@ - + - + @@ -19970,9 +19970,9 @@ - + - + @@ -19980,9 +19980,9 @@ - + - + @@ -19990,9 +19990,9 @@ - + - + @@ -20000,9 +20000,9 @@ - + - + @@ -20010,9 +20010,9 @@ - + - + @@ -20020,9 +20020,9 @@ - + - + @@ -20030,9 +20030,9 @@ - + - + @@ -20040,9 +20040,9 @@ - + - + @@ -20050,9 +20050,9 @@ - + - + @@ -20060,9 +20060,9 @@ - + - + @@ -20070,9 +20070,9 @@ - + - + @@ -20080,9 +20080,9 @@ - + - + @@ -20090,9 +20090,9 @@ - + - + @@ -20100,9 +20100,9 @@ - + - + @@ -20110,9 +20110,9 @@ - + - + @@ -20120,9 +20120,9 @@ - + - + @@ -20130,9 +20130,9 @@ - + - + @@ -20140,9 +20140,9 @@ - + - + @@ -20150,9 +20150,9 @@ - + - + @@ -20160,9 +20160,9 @@ - + - + @@ -20170,9 +20170,9 @@ - + - + @@ -20180,9 +20180,9 @@ - + - + @@ -20190,9 +20190,9 @@ - + - + @@ -20200,9 +20200,9 @@ - + - + @@ -20210,9 +20210,9 @@ - + - + @@ -20220,9 +20220,9 @@ - + - + diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index 3a318e9d..d49ae00c 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -381,9 +381,15 @@ tinyxml2::XMLElement *SolarSystem::addCelestialBody(tinyxml2::XMLElement *parent } tinyxml2::XMLElement *scaleElem = doc.NewElement("scale"); - scaleElem->SetAttribute("x", size); - scaleElem->SetAttribute("y", size); - scaleElem->SetAttribute("z", size); + if (modelFile == "../models/torus.3d") { + scaleElem->SetAttribute("x", size); + scaleElem->SetAttribute("y", size * 0.1); + scaleElem->SetAttribute("z", size); + } else { + scaleElem->SetAttribute("x", size); + scaleElem->SetAttribute("y", size); + scaleElem->SetAttribute("z", size); + } transform->InsertEndChild(scaleElem); tinyxml2::XMLElement *models = doc.NewElement("models"); From c563ee78474d820e3468c14806314db77b9af73b Mon Sep 17 00:00:00 2001 From: sara Date: Sat, 22 Mar 2025 18:42:50 +0000 Subject: [PATCH 11/14] Fixes --- res/scenes/scene_solarSystem.xml | 8088 +++++++++++++++--------------- src/generator/main.cpp | 19 +- 2 files changed, 4054 insertions(+), 4053 deletions(-) diff --git a/res/scenes/scene_solarSystem.xml b/res/scenes/scene_solarSystem.xml index 2dd2a161..671a7cb1 100644 --- a/res/scenes/scene_solarSystem.xml +++ b/res/scenes/scene_solarSystem.xml @@ -10,15 +10,15 @@ - + - - + + @@ -26,8 +26,8 @@ - - + + @@ -35,16 +35,16 @@ - - + + - - + + @@ -53,16 +53,16 @@ - - + + - - + + @@ -70,8 +70,8 @@ - - + + @@ -80,16 +80,16 @@ - - + + - - + + @@ -97,8 +97,8 @@ - - + + @@ -106,8 +106,8 @@ - - + + @@ -115,8 +115,8 @@ - - + + @@ -125,8 +125,8 @@ - - + + @@ -135,7 +135,7 @@ - + @@ -143,8 +143,8 @@ - - + + @@ -152,8 +152,8 @@ - - + + @@ -162,8 +162,8 @@ - - + + @@ -172,7 +172,7 @@ - + @@ -180,8 +180,8 @@ - - + + @@ -189,8 +189,8 @@ - - + + @@ -199,8 +199,8 @@ - - + + @@ -209,7 +209,7 @@ - + @@ -217,8 +217,8 @@ - - + + @@ -228,9 +228,9 @@ - + - + @@ -238,9 +238,9 @@ - + - + @@ -248,9 +248,9 @@ - + - + @@ -258,9 +258,9 @@ - + - + @@ -268,9 +268,9 @@ - + - + @@ -278,9 +278,9 @@ - + - + @@ -288,9 +288,9 @@ - + - + @@ -298,9 +298,9 @@ - + - + @@ -308,9 +308,9 @@ - + - + @@ -318,9 +318,9 @@ - + - + @@ -328,9 +328,9 @@ - + - + @@ -338,9 +338,9 @@ - + - + @@ -348,9 +348,9 @@ - + - + @@ -358,9 +358,9 @@ - + - + @@ -368,9 +368,9 @@ - + - + @@ -378,9 +378,9 @@ - + - + @@ -388,9 +388,9 @@ - + - + @@ -398,9 +398,9 @@ - + - + @@ -408,9 +408,9 @@ - + - + @@ -418,9 +418,9 @@ - + - + @@ -428,9 +428,9 @@ - + - + @@ -438,9 +438,9 @@ - + - + @@ -448,9 +448,9 @@ - + - + @@ -458,9 +458,9 @@ - + - + @@ -468,9 +468,9 @@ - + - + @@ -478,9 +478,9 @@ - + - + @@ -488,9 +488,9 @@ - + - + @@ -498,9 +498,9 @@ - + - + @@ -508,9 +508,9 @@ - + - + @@ -518,9 +518,9 @@ - + - + @@ -528,9 +528,9 @@ - + - + @@ -538,9 +538,9 @@ - + - + @@ -548,9 +548,9 @@ - + - + @@ -558,9 +558,9 @@ - + - + @@ -568,9 +568,9 @@ - + - + @@ -578,9 +578,9 @@ - + - + @@ -588,9 +588,9 @@ - + - + @@ -598,9 +598,9 @@ - + - + @@ -608,9 +608,9 @@ - + - + @@ -618,9 +618,9 @@ - + - + @@ -628,9 +628,9 @@ - + - + @@ -638,9 +638,9 @@ - + - + @@ -648,9 +648,9 @@ - + - + @@ -658,9 +658,9 @@ - + - + @@ -668,9 +668,9 @@ - + - + @@ -678,9 +678,9 @@ - + - + @@ -688,9 +688,9 @@ - + - + @@ -698,9 +698,9 @@ - + - + @@ -708,9 +708,9 @@ - + - + @@ -718,9 +718,9 @@ - + - + @@ -728,9 +728,9 @@ - + - + @@ -738,9 +738,9 @@ - + - + @@ -748,9 +748,9 @@ - + - + @@ -758,9 +758,9 @@ - + - + @@ -768,9 +768,9 @@ - + - + @@ -778,9 +778,9 @@ - + - + @@ -788,9 +788,9 @@ - + - + @@ -798,9 +798,9 @@ - + - + @@ -808,9 +808,9 @@ - + - + @@ -818,9 +818,9 @@ - + - + @@ -828,9 +828,9 @@ - + - + @@ -838,9 +838,9 @@ - + - + @@ -848,9 +848,9 @@ - + - + @@ -858,9 +858,9 @@ - + - + @@ -868,9 +868,9 @@ - + - + @@ -878,9 +878,9 @@ - + - + @@ -888,9 +888,9 @@ - + - + @@ -898,9 +898,9 @@ - + - + @@ -908,9 +908,9 @@ - + - + @@ -918,9 +918,9 @@ - + - + @@ -928,9 +928,9 @@ - + - + @@ -938,9 +938,9 @@ - + - + @@ -948,9 +948,9 @@ - + - + @@ -958,9 +958,9 @@ - + - + @@ -968,9 +968,9 @@ - + - + @@ -978,9 +978,9 @@ - + - + @@ -988,9 +988,9 @@ - + - + @@ -998,9 +998,9 @@ - + - + @@ -1008,9 +1008,9 @@ - + - + @@ -1018,9 +1018,9 @@ - + - + @@ -1028,9 +1028,9 @@ - + - + @@ -1038,9 +1038,9 @@ - + - + @@ -1048,9 +1048,9 @@ - + - + @@ -1058,9 +1058,9 @@ - + - + @@ -1068,9 +1068,9 @@ - + - + @@ -1078,9 +1078,9 @@ - + - + @@ -1088,9 +1088,9 @@ - + - + @@ -1098,9 +1098,9 @@ - + - + @@ -1108,9 +1108,9 @@ - + - + @@ -1118,9 +1118,9 @@ - + - + @@ -1128,9 +1128,9 @@ - + - + @@ -1138,9 +1138,9 @@ - + - + @@ -1148,9 +1148,9 @@ - + - + @@ -1158,9 +1158,9 @@ - + - + @@ -1168,9 +1168,9 @@ - + - + @@ -1178,9 +1178,9 @@ - + - + @@ -1188,9 +1188,9 @@ - + - + @@ -1198,9 +1198,9 @@ - + - + @@ -1208,9 +1208,9 @@ - + - + @@ -1218,9 +1218,9 @@ - + - + @@ -1228,9 +1228,9 @@ - + - + @@ -1238,9 +1238,9 @@ - + - + @@ -1248,9 +1248,9 @@ - + - + @@ -1258,9 +1258,9 @@ - + - + @@ -1268,9 +1268,9 @@ - + - + @@ -1278,9 +1278,9 @@ - + - + @@ -1288,9 +1288,9 @@ - + - + @@ -1298,9 +1298,9 @@ - + - + @@ -1308,9 +1308,9 @@ - + - + @@ -1318,9 +1318,9 @@ - + - + @@ -1328,9 +1328,9 @@ - + - + @@ -1338,9 +1338,9 @@ - + - + @@ -1348,9 +1348,9 @@ - + - + @@ -1358,9 +1358,9 @@ - + - + @@ -1368,9 +1368,9 @@ - + - + @@ -1378,9 +1378,9 @@ - + - + @@ -1388,9 +1388,9 @@ - + - + @@ -1398,9 +1398,9 @@ - + - + @@ -1408,9 +1408,9 @@ - + - + @@ -1418,9 +1418,9 @@ - + - + @@ -1428,9 +1428,9 @@ - + - + @@ -1438,9 +1438,9 @@ - + - + @@ -1448,9 +1448,9 @@ - + - + @@ -1458,9 +1458,9 @@ - + - + @@ -1468,9 +1468,9 @@ - + - + @@ -1478,9 +1478,9 @@ - + - + @@ -1488,9 +1488,9 @@ - + - + @@ -1498,9 +1498,9 @@ - + - + @@ -1508,9 +1508,9 @@ - + - + @@ -1518,9 +1518,9 @@ - + - + @@ -1528,9 +1528,9 @@ - + - + @@ -1538,9 +1538,9 @@ - + - + @@ -1548,9 +1548,9 @@ - + - + @@ -1558,9 +1558,9 @@ - + - + @@ -1568,9 +1568,9 @@ - + - + @@ -1578,9 +1578,9 @@ - + - + @@ -1588,9 +1588,9 @@ - + - + @@ -1598,9 +1598,9 @@ - + - + @@ -1608,9 +1608,9 @@ - + - + @@ -1618,9 +1618,9 @@ - + - + @@ -1628,9 +1628,9 @@ - + - + @@ -1638,9 +1638,9 @@ - + - + @@ -1648,9 +1648,9 @@ - + - + @@ -1658,9 +1658,9 @@ - + - + @@ -1668,9 +1668,9 @@ - + - + @@ -1678,9 +1678,9 @@ - + - + @@ -1688,9 +1688,9 @@ - + - + @@ -1698,9 +1698,9 @@ - + - + @@ -1708,9 +1708,9 @@ - + - + @@ -1718,9 +1718,9 @@ - + - + @@ -1728,9 +1728,9 @@ - + - + @@ -1738,9 +1738,9 @@ - + - + @@ -1748,9 +1748,9 @@ - + - + @@ -1758,9 +1758,9 @@ - + - + @@ -1768,9 +1768,9 @@ - + - + @@ -1778,9 +1778,9 @@ - + - + @@ -1788,9 +1788,9 @@ - + - + @@ -1798,9 +1798,9 @@ - + - + @@ -1808,9 +1808,9 @@ - + - + @@ -1818,9 +1818,9 @@ - + - + @@ -1828,9 +1828,9 @@ - + - + @@ -1838,9 +1838,9 @@ - + - + @@ -1848,9 +1848,9 @@ - + - + @@ -1858,9 +1858,9 @@ - + - + @@ -1868,9 +1868,9 @@ - + - + @@ -1878,9 +1878,9 @@ - + - + @@ -1888,9 +1888,9 @@ - + - + @@ -1898,9 +1898,9 @@ - + - + @@ -1908,9 +1908,9 @@ - + - + @@ -1918,9 +1918,9 @@ - + - + @@ -1928,9 +1928,9 @@ - + - + @@ -1938,9 +1938,9 @@ - + - + @@ -1948,9 +1948,9 @@ - + - + @@ -1958,9 +1958,9 @@ - + - + @@ -1968,9 +1968,9 @@ - + - + @@ -1978,9 +1978,9 @@ - + - + @@ -1988,9 +1988,9 @@ - + - + @@ -1998,9 +1998,9 @@ - + - + @@ -2008,9 +2008,9 @@ - + - + @@ -2018,9 +2018,9 @@ - + - + @@ -2028,9 +2028,9 @@ - + - + @@ -2038,9 +2038,9 @@ - + - + @@ -2048,9 +2048,9 @@ - + - + @@ -2058,9 +2058,9 @@ - + - + @@ -2068,9 +2068,9 @@ - + - + @@ -2078,9 +2078,9 @@ - + - + @@ -2088,9 +2088,9 @@ - + - + @@ -2098,9 +2098,9 @@ - + - + @@ -2108,9 +2108,9 @@ - + - + @@ -2118,9 +2118,9 @@ - + - + @@ -2128,9 +2128,9 @@ - + - + @@ -2138,9 +2138,9 @@ - + - + @@ -2148,9 +2148,9 @@ - + - + @@ -2158,9 +2158,9 @@ - + - + @@ -2168,9 +2168,9 @@ - + - + @@ -2178,9 +2178,9 @@ - + - + @@ -2188,9 +2188,9 @@ - + - + @@ -2198,9 +2198,9 @@ - + - + @@ -2208,9 +2208,9 @@ - + - + @@ -2218,9 +2218,9 @@ - + - + @@ -2228,9 +2228,9 @@ - + - + @@ -2238,9 +2238,9 @@ - + - + @@ -2248,9 +2248,9 @@ - + - + @@ -2258,9 +2258,9 @@ - + - + @@ -2268,9 +2268,9 @@ - + - + @@ -2278,9 +2278,9 @@ - + - + @@ -2288,9 +2288,9 @@ - + - + @@ -2298,9 +2298,9 @@ - + - + @@ -2308,9 +2308,9 @@ - + - + @@ -2318,9 +2318,9 @@ - + - + @@ -2328,9 +2328,9 @@ - + - + @@ -2338,9 +2338,9 @@ - + - + @@ -2348,9 +2348,9 @@ - + - + @@ -2358,9 +2358,9 @@ - + - + @@ -2368,9 +2368,9 @@ - + - + @@ -2378,9 +2378,9 @@ - + - + @@ -2388,9 +2388,9 @@ - + - + @@ -2398,9 +2398,9 @@ - + - + @@ -2408,9 +2408,9 @@ - + - + @@ -2418,9 +2418,9 @@ - + - + @@ -2428,9 +2428,9 @@ - + - + @@ -2438,9 +2438,9 @@ - + - + @@ -2448,9 +2448,9 @@ - + - + @@ -2458,9 +2458,9 @@ - + - + @@ -2468,9 +2468,9 @@ - + - + @@ -2478,9 +2478,9 @@ - + - + @@ -2488,9 +2488,9 @@ - + - + @@ -2498,9 +2498,9 @@ - + - + @@ -2508,9 +2508,9 @@ - + - + @@ -2518,9 +2518,9 @@ - + - + @@ -2528,9 +2528,9 @@ - + - + @@ -2538,9 +2538,9 @@ - + - + @@ -2548,9 +2548,9 @@ - + - + @@ -2558,9 +2558,9 @@ - + - + @@ -2568,9 +2568,9 @@ - + - + @@ -2578,9 +2578,9 @@ - + - + @@ -2588,9 +2588,9 @@ - + - + @@ -2598,9 +2598,9 @@ - + - + @@ -2608,9 +2608,9 @@ - + - + @@ -2618,9 +2618,9 @@ - + - + @@ -2628,9 +2628,9 @@ - + - + @@ -2638,9 +2638,9 @@ - + - + @@ -2648,9 +2648,9 @@ - + - + @@ -2658,9 +2658,9 @@ - + - + @@ -2668,9 +2668,9 @@ - + - + @@ -2678,9 +2678,9 @@ - + - + @@ -2688,9 +2688,9 @@ - + - + @@ -2698,9 +2698,9 @@ - + - + @@ -2708,9 +2708,9 @@ - + - + @@ -2718,9 +2718,9 @@ - + - + @@ -2728,9 +2728,9 @@ - + - + @@ -2738,9 +2738,9 @@ - + - + @@ -2748,9 +2748,9 @@ - + - + @@ -2758,9 +2758,9 @@ - + - + @@ -2768,9 +2768,9 @@ - + - + @@ -2778,9 +2778,9 @@ - + - + @@ -2788,9 +2788,9 @@ - + - + @@ -2798,9 +2798,9 @@ - + - + @@ -2808,9 +2808,9 @@ - + - + @@ -2818,9 +2818,9 @@ - + - + @@ -2828,9 +2828,9 @@ - + - + @@ -2838,9 +2838,9 @@ - + - + @@ -2848,9 +2848,9 @@ - + - + @@ -2858,9 +2858,9 @@ - + - + @@ -2868,9 +2868,9 @@ - + - + @@ -2878,9 +2878,9 @@ - + - + @@ -2888,9 +2888,9 @@ - + - + @@ -2898,9 +2898,9 @@ - + - + @@ -2908,9 +2908,9 @@ - + - + @@ -2918,9 +2918,9 @@ - + - + @@ -2928,9 +2928,9 @@ - + - + @@ -2938,9 +2938,9 @@ - + - + @@ -2948,9 +2948,9 @@ - + - + @@ -2958,9 +2958,9 @@ - + - + @@ -2968,9 +2968,9 @@ - + - + @@ -2978,9 +2978,9 @@ - + - + @@ -2988,9 +2988,9 @@ - + - + @@ -2998,9 +2998,9 @@ - + - + @@ -3008,9 +3008,9 @@ - + - + @@ -3018,9 +3018,9 @@ - + - + @@ -3028,9 +3028,9 @@ - + - + @@ -3038,9 +3038,9 @@ - + - + @@ -3048,9 +3048,9 @@ - + - + @@ -3058,9 +3058,9 @@ - + - + @@ -3068,9 +3068,9 @@ - + - + @@ -3078,9 +3078,9 @@ - + - + @@ -3088,9 +3088,9 @@ - + - + @@ -3098,9 +3098,9 @@ - + - + @@ -3108,9 +3108,9 @@ - + - + @@ -3118,9 +3118,9 @@ - + - + @@ -3128,9 +3128,9 @@ - + - + @@ -3138,9 +3138,9 @@ - + - + @@ -3148,9 +3148,9 @@ - + - + @@ -3158,9 +3158,9 @@ - + - + @@ -3168,9 +3168,9 @@ - + - + @@ -3178,9 +3178,9 @@ - + - + @@ -3188,9 +3188,9 @@ - + - + @@ -3198,9 +3198,9 @@ - + - + @@ -3208,9 +3208,9 @@ - + - + @@ -3218,9 +3218,9 @@ - + - + @@ -3228,9 +3228,9 @@ - + - + @@ -3238,9 +3238,9 @@ - + - + @@ -3248,9 +3248,9 @@ - + - + @@ -3258,9 +3258,9 @@ - + - + @@ -3268,9 +3268,9 @@ - + - + @@ -3278,9 +3278,9 @@ - + - + @@ -3288,9 +3288,9 @@ - + - + @@ -3298,9 +3298,9 @@ - + - + @@ -3308,9 +3308,9 @@ - + - + @@ -3318,9 +3318,9 @@ - + - + @@ -3328,9 +3328,9 @@ - + - + @@ -3338,9 +3338,9 @@ - + - + @@ -3348,9 +3348,9 @@ - + - + @@ -3358,9 +3358,9 @@ - + - + @@ -3368,9 +3368,9 @@ - + - + @@ -3378,9 +3378,9 @@ - + - + @@ -3388,9 +3388,9 @@ - + - + @@ -3398,9 +3398,9 @@ - + - + @@ -3408,9 +3408,9 @@ - + - + @@ -3418,9 +3418,9 @@ - + - + @@ -3428,9 +3428,9 @@ - + - + @@ -3438,9 +3438,9 @@ - + - + @@ -3448,9 +3448,9 @@ - + - + @@ -3458,9 +3458,9 @@ - + - + @@ -3468,9 +3468,9 @@ - + - + @@ -3478,9 +3478,9 @@ - + - + @@ -3488,9 +3488,9 @@ - + - + @@ -3498,9 +3498,9 @@ - + - + @@ -3508,9 +3508,9 @@ - + - + @@ -3518,9 +3518,9 @@ - + - + @@ -3528,9 +3528,9 @@ - + - + @@ -3538,9 +3538,9 @@ - + - + @@ -3548,9 +3548,9 @@ - + - + @@ -3558,9 +3558,9 @@ - + - + @@ -3568,9 +3568,9 @@ - + - + @@ -3578,9 +3578,9 @@ - + - + @@ -3588,9 +3588,9 @@ - + - + @@ -3598,9 +3598,9 @@ - + - + @@ -3608,9 +3608,9 @@ - + - + @@ -3618,9 +3618,9 @@ - + - + @@ -3628,9 +3628,9 @@ - + - + @@ -3638,9 +3638,9 @@ - + - + @@ -3648,9 +3648,9 @@ - + - + @@ -3658,9 +3658,9 @@ - + - + @@ -3668,9 +3668,9 @@ - + - + @@ -3678,9 +3678,9 @@ - + - + @@ -3688,9 +3688,9 @@ - + - + @@ -3698,9 +3698,9 @@ - + - + @@ -3708,9 +3708,9 @@ - + - + @@ -3718,9 +3718,9 @@ - + - + @@ -3728,9 +3728,9 @@ - + - + @@ -3738,9 +3738,9 @@ - + - + @@ -3748,9 +3748,9 @@ - + - + @@ -3758,9 +3758,9 @@ - + - + @@ -3768,9 +3768,9 @@ - + - + @@ -3778,9 +3778,9 @@ - + - + @@ -3788,9 +3788,9 @@ - + - + @@ -3798,9 +3798,9 @@ - + - + @@ -3808,9 +3808,9 @@ - + - + @@ -3818,9 +3818,9 @@ - + - + @@ -3828,9 +3828,9 @@ - + - + @@ -3838,9 +3838,9 @@ - + - + @@ -3848,9 +3848,9 @@ - + - + @@ -3858,9 +3858,9 @@ - + - + @@ -3868,9 +3868,9 @@ - + - + @@ -3878,9 +3878,9 @@ - + - + @@ -3888,9 +3888,9 @@ - + - + @@ -3898,9 +3898,9 @@ - + - + @@ -3908,9 +3908,9 @@ - + - + @@ -3918,9 +3918,9 @@ - + - + @@ -3928,9 +3928,9 @@ - + - + @@ -3938,9 +3938,9 @@ - + - + @@ -3948,9 +3948,9 @@ - + - + @@ -3958,9 +3958,9 @@ - + - + @@ -3968,9 +3968,9 @@ - + - + @@ -3978,9 +3978,9 @@ - + - + @@ -3988,9 +3988,9 @@ - + - + @@ -3998,9 +3998,9 @@ - + - + @@ -4008,9 +4008,9 @@ - + - + @@ -4018,9 +4018,9 @@ - + - + @@ -4028,9 +4028,9 @@ - + - + @@ -4038,9 +4038,9 @@ - + - + @@ -4048,9 +4048,9 @@ - + - + @@ -4058,9 +4058,9 @@ - + - + @@ -4068,9 +4068,9 @@ - + - + @@ -4078,9 +4078,9 @@ - + - + @@ -4088,9 +4088,9 @@ - + - + @@ -4098,9 +4098,9 @@ - + - + @@ -4108,9 +4108,9 @@ - + - + @@ -4118,9 +4118,9 @@ - + - + @@ -4128,9 +4128,9 @@ - + - + @@ -4138,9 +4138,9 @@ - + - + @@ -4148,9 +4148,9 @@ - + - + @@ -4158,9 +4158,9 @@ - + - + @@ -4168,9 +4168,9 @@ - + - + @@ -4178,9 +4178,9 @@ - + - + @@ -4188,9 +4188,9 @@ - + - + @@ -4198,9 +4198,9 @@ - + - + @@ -4208,9 +4208,9 @@ - + - + @@ -4218,9 +4218,9 @@ - + - + @@ -4228,9 +4228,9 @@ - + - + @@ -4238,9 +4238,9 @@ - + - + @@ -4248,9 +4248,9 @@ - + - + @@ -4258,9 +4258,9 @@ - + - + @@ -4268,9 +4268,9 @@ - + - + @@ -4278,9 +4278,9 @@ - + - + @@ -4288,9 +4288,9 @@ - + - + @@ -4298,9 +4298,9 @@ - + - + @@ -4308,9 +4308,9 @@ - + - + @@ -4318,9 +4318,9 @@ - + - + @@ -4328,9 +4328,9 @@ - + - + @@ -4338,9 +4338,9 @@ - + - + @@ -4348,9 +4348,9 @@ - + - + @@ -4358,9 +4358,9 @@ - + - + @@ -4368,9 +4368,9 @@ - + - + @@ -4378,9 +4378,9 @@ - + - + @@ -4388,9 +4388,9 @@ - + - + @@ -4398,9 +4398,9 @@ - + - + @@ -4408,9 +4408,9 @@ - + - + @@ -4418,9 +4418,9 @@ - + - + @@ -4428,9 +4428,9 @@ - + - + @@ -4438,9 +4438,9 @@ - + - + @@ -4448,9 +4448,9 @@ - + - + @@ -4458,9 +4458,9 @@ - + - + @@ -4468,9 +4468,9 @@ - + - + @@ -4478,9 +4478,9 @@ - + - + @@ -4488,9 +4488,9 @@ - + - + @@ -4498,9 +4498,9 @@ - + - + @@ -4508,9 +4508,9 @@ - + - + @@ -4518,9 +4518,9 @@ - + - + @@ -4528,9 +4528,9 @@ - + - + @@ -4538,9 +4538,9 @@ - + - + @@ -4548,9 +4548,9 @@ - + - + @@ -4558,9 +4558,9 @@ - + - + @@ -4568,9 +4568,9 @@ - + - + @@ -4578,9 +4578,9 @@ - + - + @@ -4588,9 +4588,9 @@ - + - + @@ -4598,9 +4598,9 @@ - + - + @@ -4608,9 +4608,9 @@ - + - + @@ -4618,9 +4618,9 @@ - + - + @@ -4628,9 +4628,9 @@ - + - + @@ -4638,9 +4638,9 @@ - + - + @@ -4648,9 +4648,9 @@ - + - + @@ -4658,9 +4658,9 @@ - + - + @@ -4668,9 +4668,9 @@ - + - + @@ -4678,9 +4678,9 @@ - + - + @@ -4688,9 +4688,9 @@ - + - + @@ -4698,9 +4698,9 @@ - + - + @@ -4708,9 +4708,9 @@ - + - + @@ -4718,9 +4718,9 @@ - + - + @@ -4728,9 +4728,9 @@ - + - + @@ -4738,9 +4738,9 @@ - + - + @@ -4748,9 +4748,9 @@ - + - + @@ -4758,9 +4758,9 @@ - + - + @@ -4768,9 +4768,9 @@ - + - + @@ -4778,9 +4778,9 @@ - + - + @@ -4788,9 +4788,9 @@ - + - + @@ -4798,9 +4798,9 @@ - + - + @@ -4808,9 +4808,9 @@ - + - + @@ -4818,9 +4818,9 @@ - + - + @@ -4828,9 +4828,9 @@ - + - + @@ -4838,9 +4838,9 @@ - + - + @@ -4848,9 +4848,9 @@ - + - + @@ -4858,9 +4858,9 @@ - + - + @@ -4868,9 +4868,9 @@ - + - + @@ -4878,9 +4878,9 @@ - + - + @@ -4888,9 +4888,9 @@ - + - + @@ -4898,9 +4898,9 @@ - + - + @@ -4908,9 +4908,9 @@ - + - + @@ -4918,9 +4918,9 @@ - + - + @@ -4928,9 +4928,9 @@ - + - + @@ -4938,9 +4938,9 @@ - + - + @@ -4948,9 +4948,9 @@ - + - + @@ -4958,9 +4958,9 @@ - + - + @@ -4968,9 +4968,9 @@ - + - + @@ -4978,9 +4978,9 @@ - + - + @@ -4988,9 +4988,9 @@ - + - + @@ -4998,9 +4998,9 @@ - + - + @@ -5008,9 +5008,9 @@ - + - + @@ -5018,9 +5018,9 @@ - + - + @@ -5028,9 +5028,9 @@ - + - + @@ -5038,9 +5038,9 @@ - + - + @@ -5048,9 +5048,9 @@ - + - + @@ -5058,9 +5058,9 @@ - + - + @@ -5068,9 +5068,9 @@ - + - + @@ -5078,9 +5078,9 @@ - + - + @@ -5088,9 +5088,9 @@ - + - + @@ -5098,9 +5098,9 @@ - + - + @@ -5108,9 +5108,9 @@ - + - + @@ -5118,9 +5118,9 @@ - + - + @@ -5128,9 +5128,9 @@ - + - + @@ -5138,9 +5138,9 @@ - + - + @@ -5148,9 +5148,9 @@ - + - + @@ -5158,9 +5158,9 @@ - + - + @@ -5168,9 +5168,9 @@ - + - + @@ -5178,9 +5178,9 @@ - + - + @@ -5188,9 +5188,9 @@ - + - + @@ -5198,9 +5198,9 @@ - + - + @@ -5208,9 +5208,9 @@ - + - + @@ -5218,9 +5218,9 @@ - + - + @@ -5228,9 +5228,9 @@ - + - + @@ -5238,9 +5238,9 @@ - + - + @@ -5248,9 +5248,9 @@ - + - + @@ -5258,9 +5258,9 @@ - + - + @@ -5268,9 +5268,9 @@ - + - + @@ -5278,9 +5278,9 @@ - + - + @@ -5288,9 +5288,9 @@ - + - + @@ -5298,9 +5298,9 @@ - + - + @@ -5308,9 +5308,9 @@ - + - + @@ -5318,9 +5318,9 @@ - + - + @@ -5328,9 +5328,9 @@ - + - + @@ -5338,9 +5338,9 @@ - + - + @@ -5348,9 +5348,9 @@ - + - + @@ -5358,9 +5358,9 @@ - + - + @@ -5368,9 +5368,9 @@ - + - + @@ -5378,9 +5378,9 @@ - + - + @@ -5388,9 +5388,9 @@ - + - + @@ -5398,9 +5398,9 @@ - + - + @@ -5408,9 +5408,9 @@ - + - + @@ -5418,9 +5418,9 @@ - + - + @@ -5428,9 +5428,9 @@ - + - + @@ -5438,9 +5438,9 @@ - + - + @@ -5448,9 +5448,9 @@ - + - + @@ -5458,9 +5458,9 @@ - + - + @@ -5468,9 +5468,9 @@ - + - + @@ -5478,9 +5478,9 @@ - + - + @@ -5488,9 +5488,9 @@ - + - + @@ -5498,9 +5498,9 @@ - + - + @@ -5508,9 +5508,9 @@ - + - + @@ -5518,9 +5518,9 @@ - + - + @@ -5528,9 +5528,9 @@ - + - + @@ -5538,9 +5538,9 @@ - + - + @@ -5548,9 +5548,9 @@ - + - + @@ -5558,9 +5558,9 @@ - + - + @@ -5568,9 +5568,9 @@ - + - + @@ -5578,9 +5578,9 @@ - + - + @@ -5588,9 +5588,9 @@ - + - + @@ -5598,9 +5598,9 @@ - + - + @@ -5608,9 +5608,9 @@ - + - + @@ -5618,9 +5618,9 @@ - + - + @@ -5628,9 +5628,9 @@ - + - + @@ -5638,9 +5638,9 @@ - + - + @@ -5648,9 +5648,9 @@ - + - + @@ -5658,9 +5658,9 @@ - + - + @@ -5668,9 +5668,9 @@ - + - + @@ -5678,9 +5678,9 @@ - + - + @@ -5688,9 +5688,9 @@ - + - + @@ -5698,9 +5698,9 @@ - + - + @@ -5708,9 +5708,9 @@ - + - + @@ -5718,9 +5718,9 @@ - + - + @@ -5728,9 +5728,9 @@ - + - + @@ -5738,9 +5738,9 @@ - + - + @@ -5748,9 +5748,9 @@ - + - + @@ -5758,9 +5758,9 @@ - + - + @@ -5768,9 +5768,9 @@ - + - + @@ -5778,9 +5778,9 @@ - + - + @@ -5788,9 +5788,9 @@ - + - + @@ -5798,9 +5798,9 @@ - + - + @@ -5808,9 +5808,9 @@ - + - + @@ -5818,9 +5818,9 @@ - + - + @@ -5828,9 +5828,9 @@ - + - + @@ -5838,9 +5838,9 @@ - + - + @@ -5848,9 +5848,9 @@ - + - + @@ -5858,9 +5858,9 @@ - + - + @@ -5868,9 +5868,9 @@ - + - + @@ -5878,9 +5878,9 @@ - + - + @@ -5888,9 +5888,9 @@ - + - + @@ -5898,9 +5898,9 @@ - + - + @@ -5908,9 +5908,9 @@ - + - + @@ -5918,9 +5918,9 @@ - + - + @@ -5928,9 +5928,9 @@ - + - + @@ -5938,9 +5938,9 @@ - + - + @@ -5948,9 +5948,9 @@ - + - + @@ -5958,9 +5958,9 @@ - + - + @@ -5968,9 +5968,9 @@ - + - + @@ -5978,9 +5978,9 @@ - + - + @@ -5988,9 +5988,9 @@ - + - + @@ -5998,9 +5998,9 @@ - + - + @@ -6008,9 +6008,9 @@ - + - + @@ -6018,9 +6018,9 @@ - + - + @@ -6028,9 +6028,9 @@ - + - + @@ -6038,9 +6038,9 @@ - + - + @@ -6048,9 +6048,9 @@ - + - + @@ -6058,9 +6058,9 @@ - + - + @@ -6068,9 +6068,9 @@ - + - + @@ -6078,9 +6078,9 @@ - + - + @@ -6088,9 +6088,9 @@ - + - + @@ -6098,9 +6098,9 @@ - + - + @@ -6108,9 +6108,9 @@ - + - + @@ -6118,9 +6118,9 @@ - + - + @@ -6128,9 +6128,9 @@ - + - + @@ -6138,9 +6138,9 @@ - + - + @@ -6148,9 +6148,9 @@ - + - + @@ -6158,9 +6158,9 @@ - + - + @@ -6168,9 +6168,9 @@ - + - + @@ -6178,9 +6178,9 @@ - + - + @@ -6188,9 +6188,9 @@ - + - + @@ -6198,9 +6198,9 @@ - + - + @@ -6208,9 +6208,9 @@ - + - + @@ -6218,9 +6218,9 @@ - + - + @@ -6230,9 +6230,9 @@ - + - + @@ -6240,9 +6240,9 @@ - + - + @@ -6250,9 +6250,9 @@ - + - + @@ -6260,9 +6260,9 @@ - + - + @@ -6270,9 +6270,9 @@ - + - + @@ -6280,9 +6280,9 @@ - + - + @@ -6290,9 +6290,9 @@ - + - + @@ -6300,9 +6300,9 @@ - + - + @@ -6310,9 +6310,9 @@ - + - + @@ -6320,9 +6320,9 @@ - + - + @@ -6330,9 +6330,9 @@ - + - + @@ -6340,9 +6340,9 @@ - + - + @@ -6350,9 +6350,9 @@ - + - + @@ -6360,9 +6360,9 @@ - + - + @@ -6370,9 +6370,9 @@ - + - + @@ -6380,9 +6380,9 @@ - + - + @@ -6390,9 +6390,9 @@ - + - + @@ -6400,9 +6400,9 @@ - + - + @@ -6410,9 +6410,9 @@ - + - + @@ -6420,9 +6420,9 @@ - + - + @@ -6430,9 +6430,9 @@ - + - + @@ -6440,9 +6440,9 @@ - + - + @@ -6450,9 +6450,9 @@ - + - + @@ -6460,9 +6460,9 @@ - + - + @@ -6470,9 +6470,9 @@ - + - + @@ -6480,9 +6480,9 @@ - + - + @@ -6490,9 +6490,9 @@ - + - + @@ -6500,9 +6500,9 @@ - + - + @@ -6510,9 +6510,9 @@ - + - + @@ -6520,9 +6520,9 @@ - + - + @@ -6530,9 +6530,9 @@ - + - + @@ -6540,9 +6540,9 @@ - + - + @@ -6550,9 +6550,9 @@ - + - + @@ -6560,9 +6560,9 @@ - + - + @@ -6570,9 +6570,9 @@ - + - + @@ -6580,9 +6580,9 @@ - + - + @@ -6590,9 +6590,9 @@ - + - + @@ -6600,9 +6600,9 @@ - + - + @@ -6610,9 +6610,9 @@ - + - + @@ -6620,9 +6620,9 @@ - + - + @@ -6630,9 +6630,9 @@ - + - + @@ -6640,9 +6640,9 @@ - + - + @@ -6650,9 +6650,9 @@ - + - + @@ -6660,9 +6660,9 @@ - + - + @@ -6670,9 +6670,9 @@ - + - + @@ -6680,9 +6680,9 @@ - + - + @@ -6690,9 +6690,9 @@ - + - + @@ -6700,9 +6700,9 @@ - + - + @@ -6710,9 +6710,9 @@ - + - + @@ -6720,9 +6720,9 @@ - + - + @@ -6730,9 +6730,9 @@ - + - + @@ -6740,9 +6740,9 @@ - + - + @@ -6750,9 +6750,9 @@ - + - + @@ -6760,9 +6760,9 @@ - + - + @@ -6770,9 +6770,9 @@ - + - + @@ -6780,9 +6780,9 @@ - + - + @@ -6790,9 +6790,9 @@ - + - + @@ -6800,9 +6800,9 @@ - + - + @@ -6810,9 +6810,9 @@ - + - + @@ -6820,9 +6820,9 @@ - + - + @@ -6830,9 +6830,9 @@ - + - + @@ -6840,9 +6840,9 @@ - + - + @@ -6850,9 +6850,9 @@ - + - + @@ -6860,9 +6860,9 @@ - + - + @@ -6870,9 +6870,9 @@ - + - + @@ -6880,9 +6880,9 @@ - + - + @@ -6890,9 +6890,9 @@ - + - + @@ -6900,9 +6900,9 @@ - + - + @@ -6910,9 +6910,9 @@ - + - + @@ -6920,9 +6920,9 @@ - + - + @@ -6930,9 +6930,9 @@ - + - + @@ -6940,9 +6940,9 @@ - + - + @@ -6950,9 +6950,9 @@ - + - + @@ -6960,9 +6960,9 @@ - + - + @@ -6970,9 +6970,9 @@ - + - + @@ -6980,9 +6980,9 @@ - + - + @@ -6990,9 +6990,9 @@ - + - + @@ -7000,9 +7000,9 @@ - + - + @@ -7010,9 +7010,9 @@ - + - + @@ -7020,9 +7020,9 @@ - + - + @@ -7030,9 +7030,9 @@ - + - + @@ -7040,9 +7040,9 @@ - + - + @@ -7050,9 +7050,9 @@ - + - + @@ -7060,9 +7060,9 @@ - + - + @@ -7070,9 +7070,9 @@ - + - + @@ -7080,9 +7080,9 @@ - + - + @@ -7090,9 +7090,9 @@ - + - + @@ -7100,9 +7100,9 @@ - + - + @@ -7110,9 +7110,9 @@ - + - + @@ -7120,9 +7120,9 @@ - + - + @@ -7130,9 +7130,9 @@ - + - + @@ -7140,9 +7140,9 @@ - + - + @@ -7150,9 +7150,9 @@ - + - + @@ -7160,9 +7160,9 @@ - + - + @@ -7170,9 +7170,9 @@ - + - + @@ -7180,9 +7180,9 @@ - + - + @@ -7190,9 +7190,9 @@ - + - + @@ -7200,9 +7200,9 @@ - + - + @@ -7210,9 +7210,9 @@ - + - + @@ -7220,9 +7220,9 @@ - + - + @@ -7230,9 +7230,9 @@ - + - + @@ -7240,9 +7240,9 @@ - + - + @@ -7250,9 +7250,9 @@ - + - + @@ -7260,9 +7260,9 @@ - + - + @@ -7270,9 +7270,9 @@ - + - + @@ -7280,9 +7280,9 @@ - + - + @@ -7290,9 +7290,9 @@ - + - + @@ -7300,9 +7300,9 @@ - + - + @@ -7310,9 +7310,9 @@ - + - + @@ -7320,9 +7320,9 @@ - + - + @@ -7330,9 +7330,9 @@ - + - + @@ -7340,9 +7340,9 @@ - + - + @@ -7350,9 +7350,9 @@ - + - + @@ -7360,9 +7360,9 @@ - + - + @@ -7370,9 +7370,9 @@ - + - + @@ -7380,9 +7380,9 @@ - + - + @@ -7390,9 +7390,9 @@ - + - + @@ -7400,9 +7400,9 @@ - + - + @@ -7410,9 +7410,9 @@ - + - + @@ -7420,9 +7420,9 @@ - + - + @@ -7430,9 +7430,9 @@ - + - + @@ -7440,9 +7440,9 @@ - + - + @@ -7450,9 +7450,9 @@ - + - + @@ -7460,9 +7460,9 @@ - + - + @@ -7470,9 +7470,9 @@ - + - + @@ -7480,9 +7480,9 @@ - + - + @@ -7490,9 +7490,9 @@ - + - + @@ -7500,9 +7500,9 @@ - + - + @@ -7510,9 +7510,9 @@ - + - + @@ -7520,9 +7520,9 @@ - + - + @@ -7530,9 +7530,9 @@ - + - + @@ -7540,9 +7540,9 @@ - + - + @@ -7550,9 +7550,9 @@ - + - + @@ -7560,9 +7560,9 @@ - + - + @@ -7570,9 +7570,9 @@ - + - + @@ -7580,9 +7580,9 @@ - + - + @@ -7590,9 +7590,9 @@ - + - + @@ -7600,9 +7600,9 @@ - + - + @@ -7610,9 +7610,9 @@ - + - + @@ -7620,9 +7620,9 @@ - + - + @@ -7630,9 +7630,9 @@ - + - + @@ -7640,9 +7640,9 @@ - + - + @@ -7650,9 +7650,9 @@ - + - + @@ -7660,9 +7660,9 @@ - + - + @@ -7670,9 +7670,9 @@ - + - + @@ -7680,9 +7680,9 @@ - + - + @@ -7690,9 +7690,9 @@ - + - + @@ -7700,9 +7700,9 @@ - + - + @@ -7710,9 +7710,9 @@ - + - + @@ -7720,9 +7720,9 @@ - + - + @@ -7730,9 +7730,9 @@ - + - + @@ -7740,9 +7740,9 @@ - + - + @@ -7750,9 +7750,9 @@ - + - + @@ -7760,9 +7760,9 @@ - + - + @@ -7770,9 +7770,9 @@ - + - + @@ -7780,9 +7780,9 @@ - + - + @@ -7790,9 +7790,9 @@ - + - + @@ -7800,9 +7800,9 @@ - + - + @@ -7810,9 +7810,9 @@ - + - + @@ -7820,9 +7820,9 @@ - + - + @@ -7830,9 +7830,9 @@ - + - + @@ -7840,9 +7840,9 @@ - + - + @@ -7850,9 +7850,9 @@ - + - + @@ -7860,9 +7860,9 @@ - + - + @@ -7870,9 +7870,9 @@ - + - + @@ -7880,9 +7880,9 @@ - + - + @@ -7890,9 +7890,9 @@ - + - + @@ -7900,9 +7900,9 @@ - + - + @@ -7910,9 +7910,9 @@ - + - + @@ -7920,9 +7920,9 @@ - + - + @@ -7930,9 +7930,9 @@ - + - + @@ -7940,9 +7940,9 @@ - + - + @@ -7950,9 +7950,9 @@ - + - + @@ -7960,9 +7960,9 @@ - + - + @@ -7970,9 +7970,9 @@ - + - + @@ -7980,9 +7980,9 @@ - + - + @@ -7990,9 +7990,9 @@ - + - + @@ -8000,9 +8000,9 @@ - + - + @@ -8010,9 +8010,9 @@ - + - + @@ -8020,9 +8020,9 @@ - + - + @@ -8030,9 +8030,9 @@ - + - + @@ -8040,9 +8040,9 @@ - + - + @@ -8050,9 +8050,9 @@ - + - + @@ -8060,9 +8060,9 @@ - + - + @@ -8070,9 +8070,9 @@ - + - + @@ -8080,9 +8080,9 @@ - + - + @@ -8090,9 +8090,9 @@ - + - + @@ -8100,9 +8100,9 @@ - + - + @@ -8110,9 +8110,9 @@ - + - + @@ -8120,9 +8120,9 @@ - + - + @@ -8130,9 +8130,9 @@ - + - + @@ -8140,9 +8140,9 @@ - + - + @@ -8150,9 +8150,9 @@ - + - + @@ -8160,9 +8160,9 @@ - + - + @@ -8170,9 +8170,9 @@ - + - + @@ -8180,9 +8180,9 @@ - + - + @@ -8190,9 +8190,9 @@ - + - + @@ -8200,9 +8200,9 @@ - + - + @@ -8210,9 +8210,9 @@ - + - + @@ -8220,9 +8220,9 @@ - + - + @@ -8230,9 +8230,9 @@ - + - + @@ -8240,9 +8240,9 @@ - + - + @@ -8250,9 +8250,9 @@ - + - + @@ -8260,9 +8260,9 @@ - + - + @@ -8270,9 +8270,9 @@ - + - + @@ -8280,9 +8280,9 @@ - + - + @@ -8290,9 +8290,9 @@ - + - + @@ -8300,9 +8300,9 @@ - + - + @@ -8310,9 +8310,9 @@ - + - + @@ -8320,9 +8320,9 @@ - + - + @@ -8330,9 +8330,9 @@ - + - + @@ -8340,9 +8340,9 @@ - + - + @@ -8350,9 +8350,9 @@ - + - + @@ -8360,9 +8360,9 @@ - + - + @@ -8370,9 +8370,9 @@ - + - + @@ -8380,9 +8380,9 @@ - + - + @@ -8390,9 +8390,9 @@ - + - + @@ -8400,9 +8400,9 @@ - + - + @@ -8410,9 +8410,9 @@ - + - + @@ -8420,9 +8420,9 @@ - + - + @@ -8430,9 +8430,9 @@ - + - + @@ -8440,9 +8440,9 @@ - + - + @@ -8450,9 +8450,9 @@ - + - + @@ -8460,9 +8460,9 @@ - + - + @@ -8470,9 +8470,9 @@ - + - + @@ -8480,9 +8480,9 @@ - + - + @@ -8490,9 +8490,9 @@ - + - + @@ -8500,9 +8500,9 @@ - + - + @@ -8510,9 +8510,9 @@ - + - + @@ -8520,9 +8520,9 @@ - + - + @@ -8530,9 +8530,9 @@ - + - + @@ -8540,9 +8540,9 @@ - + - + @@ -8550,9 +8550,9 @@ - + - + @@ -8560,9 +8560,9 @@ - + - + @@ -8570,9 +8570,9 @@ - + - + @@ -8580,9 +8580,9 @@ - + - + @@ -8590,9 +8590,9 @@ - + - + @@ -8600,9 +8600,9 @@ - + - + @@ -8610,9 +8610,9 @@ - + - + @@ -8620,9 +8620,9 @@ - + - + @@ -8630,9 +8630,9 @@ - + - + @@ -8640,9 +8640,9 @@ - + - + @@ -8650,9 +8650,9 @@ - + - + @@ -8660,9 +8660,9 @@ - + - + @@ -8670,9 +8670,9 @@ - + - + @@ -8680,9 +8680,9 @@ - + - + @@ -8690,9 +8690,9 @@ - + - + @@ -8700,9 +8700,9 @@ - + - + @@ -8710,9 +8710,9 @@ - + - + @@ -8720,9 +8720,9 @@ - + - + @@ -8730,9 +8730,9 @@ - + - + @@ -8740,9 +8740,9 @@ - + - + @@ -8750,9 +8750,9 @@ - + - + @@ -8760,9 +8760,9 @@ - + - + @@ -8770,9 +8770,9 @@ - + - + @@ -8780,9 +8780,9 @@ - + - + @@ -8790,9 +8790,9 @@ - + - + @@ -8800,9 +8800,9 @@ - + - + @@ -8810,9 +8810,9 @@ - + - + @@ -8820,9 +8820,9 @@ - + - + @@ -8830,9 +8830,9 @@ - + - + @@ -8840,9 +8840,9 @@ - + - + @@ -8850,9 +8850,9 @@ - + - + @@ -8860,9 +8860,9 @@ - + - + @@ -8870,9 +8870,9 @@ - + - + @@ -8880,9 +8880,9 @@ - + - + @@ -8890,9 +8890,9 @@ - + - + @@ -8900,9 +8900,9 @@ - + - + @@ -8910,9 +8910,9 @@ - + - + @@ -8920,9 +8920,9 @@ - + - + @@ -8930,9 +8930,9 @@ - + - + @@ -8940,9 +8940,9 @@ - + - + @@ -8950,9 +8950,9 @@ - + - + @@ -8960,9 +8960,9 @@ - + - + @@ -8970,9 +8970,9 @@ - + - + @@ -8980,9 +8980,9 @@ - + - + @@ -8990,9 +8990,9 @@ - + - + @@ -9000,9 +9000,9 @@ - + - + @@ -9010,9 +9010,9 @@ - + - + @@ -9020,9 +9020,9 @@ - + - + @@ -9030,9 +9030,9 @@ - + - + @@ -9040,9 +9040,9 @@ - + - + @@ -9050,9 +9050,9 @@ - + - + @@ -9060,9 +9060,9 @@ - + - + @@ -9070,9 +9070,9 @@ - + - + @@ -9080,9 +9080,9 @@ - + - + @@ -9090,9 +9090,9 @@ - + - + @@ -9100,9 +9100,9 @@ - + - + @@ -9110,9 +9110,9 @@ - + - + @@ -9120,9 +9120,9 @@ - + - + @@ -9130,9 +9130,9 @@ - + - + @@ -9140,9 +9140,9 @@ - + - + @@ -9150,9 +9150,9 @@ - + - + @@ -9160,9 +9160,9 @@ - + - + @@ -9170,9 +9170,9 @@ - + - + @@ -9180,9 +9180,9 @@ - + - + @@ -9190,9 +9190,9 @@ - + - + @@ -9200,9 +9200,9 @@ - + - + @@ -9210,9 +9210,9 @@ - + - + @@ -9220,9 +9220,9 @@ - + - + @@ -9230,9 +9230,9 @@ - + - + @@ -9240,9 +9240,9 @@ - + - + @@ -9250,9 +9250,9 @@ - + - + @@ -9260,9 +9260,9 @@ - + - + @@ -9270,9 +9270,9 @@ - + - + @@ -9280,9 +9280,9 @@ - + - + @@ -9290,9 +9290,9 @@ - + - + @@ -9300,9 +9300,9 @@ - + - + @@ -9310,9 +9310,9 @@ - + - + @@ -9320,9 +9320,9 @@ - + - + @@ -9330,9 +9330,9 @@ - + - + @@ -9340,9 +9340,9 @@ - + - + @@ -9350,9 +9350,9 @@ - + - + @@ -9360,9 +9360,9 @@ - + - + @@ -9370,9 +9370,9 @@ - + - + @@ -9380,9 +9380,9 @@ - + - + @@ -9390,9 +9390,9 @@ - + - + @@ -9400,9 +9400,9 @@ - + - + @@ -9410,9 +9410,9 @@ - + - + @@ -9420,9 +9420,9 @@ - + - + @@ -9430,9 +9430,9 @@ - + - + @@ -9440,9 +9440,9 @@ - + - + @@ -9450,9 +9450,9 @@ - + - + @@ -9460,9 +9460,9 @@ - + - + @@ -9470,9 +9470,9 @@ - + - + @@ -9480,9 +9480,9 @@ - + - + @@ -9490,9 +9490,9 @@ - + - + @@ -9500,9 +9500,9 @@ - + - + @@ -9510,9 +9510,9 @@ - + - + @@ -9520,9 +9520,9 @@ - + - + @@ -9530,9 +9530,9 @@ - + - + @@ -9540,9 +9540,9 @@ - + - + @@ -9550,9 +9550,9 @@ - + - + @@ -9560,9 +9560,9 @@ - + - + @@ -9570,9 +9570,9 @@ - + - + @@ -9580,9 +9580,9 @@ - + - + @@ -9590,9 +9590,9 @@ - + - + @@ -9600,9 +9600,9 @@ - + - + @@ -9610,9 +9610,9 @@ - + - + @@ -9620,9 +9620,9 @@ - + - + @@ -9630,9 +9630,9 @@ - + - + @@ -9640,9 +9640,9 @@ - + - + @@ -9650,9 +9650,9 @@ - + - + @@ -9660,9 +9660,9 @@ - + - + @@ -9670,9 +9670,9 @@ - + - + @@ -9680,9 +9680,9 @@ - + - + @@ -9690,9 +9690,9 @@ - + - + @@ -9700,9 +9700,9 @@ - + - + @@ -9710,9 +9710,9 @@ - + - + @@ -9720,9 +9720,9 @@ - + - + @@ -9730,9 +9730,9 @@ - + - + @@ -9740,9 +9740,9 @@ - + - + @@ -9750,9 +9750,9 @@ - + - + @@ -9760,9 +9760,9 @@ - + - + @@ -9770,9 +9770,9 @@ - + - + @@ -9780,9 +9780,9 @@ - + - + @@ -9790,9 +9790,9 @@ - + - + @@ -9800,9 +9800,9 @@ - + - + @@ -9810,9 +9810,9 @@ - + - + @@ -9820,9 +9820,9 @@ - + - + @@ -9830,9 +9830,9 @@ - + - + @@ -9840,9 +9840,9 @@ - + - + @@ -9850,9 +9850,9 @@ - + - + @@ -9860,9 +9860,9 @@ - + - + @@ -9870,9 +9870,9 @@ - + - + @@ -9880,9 +9880,9 @@ - + - + @@ -9890,9 +9890,9 @@ - + - + @@ -9900,9 +9900,9 @@ - + - + @@ -9910,9 +9910,9 @@ - + - + @@ -9920,9 +9920,9 @@ - + - + @@ -9930,9 +9930,9 @@ - + - + @@ -9940,9 +9940,9 @@ - + - + @@ -9950,9 +9950,9 @@ - + - + @@ -9960,9 +9960,9 @@ - + - + @@ -9970,9 +9970,9 @@ - + - + @@ -9980,9 +9980,9 @@ - + - + @@ -9990,9 +9990,9 @@ - + - + @@ -10000,9 +10000,9 @@ - + - + @@ -10010,9 +10010,9 @@ - + - + @@ -10020,9 +10020,9 @@ - + - + @@ -10030,9 +10030,9 @@ - + - + @@ -10040,9 +10040,9 @@ - + - + @@ -10050,9 +10050,9 @@ - + - + @@ -10060,9 +10060,9 @@ - + - + @@ -10070,9 +10070,9 @@ - + - + @@ -10080,9 +10080,9 @@ - + - + @@ -10090,9 +10090,9 @@ - + - + @@ -10100,9 +10100,9 @@ - + - + @@ -10110,9 +10110,9 @@ - + - + @@ -10120,9 +10120,9 @@ - + - + @@ -10130,9 +10130,9 @@ - + - + @@ -10140,9 +10140,9 @@ - + - + @@ -10150,9 +10150,9 @@ - + - + @@ -10160,9 +10160,9 @@ - + - + @@ -10170,9 +10170,9 @@ - + - + @@ -10180,9 +10180,9 @@ - + - + @@ -10190,9 +10190,9 @@ - + - + @@ -10200,9 +10200,9 @@ - + - + @@ -10210,9 +10210,9 @@ - + - + @@ -10220,9 +10220,9 @@ - + - + @@ -10230,9 +10230,9 @@ - + - + @@ -10240,9 +10240,9 @@ - + - + @@ -10250,9 +10250,9 @@ - + - + @@ -10260,9 +10260,9 @@ - + - + @@ -10270,9 +10270,9 @@ - + - + @@ -10280,9 +10280,9 @@ - + - + @@ -10290,9 +10290,9 @@ - + - + @@ -10300,9 +10300,9 @@ - + - + @@ -10310,9 +10310,9 @@ - + - + @@ -10320,9 +10320,9 @@ - + - + @@ -10330,9 +10330,9 @@ - + - + @@ -10340,9 +10340,9 @@ - + - + @@ -10350,9 +10350,9 @@ - + - + @@ -10360,9 +10360,9 @@ - + - + @@ -10370,9 +10370,9 @@ - + - + @@ -10380,9 +10380,9 @@ - + - + @@ -10390,9 +10390,9 @@ - + - + @@ -10400,9 +10400,9 @@ - + - + @@ -10410,9 +10410,9 @@ - + - + @@ -10420,9 +10420,9 @@ - + - + @@ -10430,9 +10430,9 @@ - + - + @@ -10440,9 +10440,9 @@ - + - + @@ -10450,9 +10450,9 @@ - + - + @@ -10460,9 +10460,9 @@ - + - + @@ -10470,9 +10470,9 @@ - + - + @@ -10480,9 +10480,9 @@ - + - + @@ -10490,9 +10490,9 @@ - + - + @@ -10500,9 +10500,9 @@ - + - + @@ -10510,9 +10510,9 @@ - + - + @@ -10520,9 +10520,9 @@ - + - + @@ -10530,9 +10530,9 @@ - + - + @@ -10540,9 +10540,9 @@ - + - + @@ -10550,9 +10550,9 @@ - + - + @@ -10560,9 +10560,9 @@ - + - + @@ -10570,9 +10570,9 @@ - + - + @@ -10580,9 +10580,9 @@ - + - + @@ -10590,9 +10590,9 @@ - + - + @@ -10600,9 +10600,9 @@ - + - + @@ -10610,9 +10610,9 @@ - + - + @@ -10620,9 +10620,9 @@ - + - + @@ -10630,9 +10630,9 @@ - + - + @@ -10640,9 +10640,9 @@ - + - + @@ -10650,9 +10650,9 @@ - + - + @@ -10660,9 +10660,9 @@ - + - + @@ -10670,9 +10670,9 @@ - + - + @@ -10680,9 +10680,9 @@ - + - + @@ -10690,9 +10690,9 @@ - + - + @@ -10700,9 +10700,9 @@ - + - + @@ -10710,9 +10710,9 @@ - + - + @@ -10720,9 +10720,9 @@ - + - + @@ -10730,9 +10730,9 @@ - + - + @@ -10740,9 +10740,9 @@ - + - + @@ -10750,9 +10750,9 @@ - + - + @@ -10760,9 +10760,9 @@ - + - + @@ -10770,9 +10770,9 @@ - + - + @@ -10780,9 +10780,9 @@ - + - + @@ -10790,9 +10790,9 @@ - + - + @@ -10800,9 +10800,9 @@ - + - + @@ -10810,9 +10810,9 @@ - + - + @@ -10820,9 +10820,9 @@ - + - + @@ -10830,9 +10830,9 @@ - + - + @@ -10840,9 +10840,9 @@ - + - + @@ -10850,9 +10850,9 @@ - + - + @@ -10860,9 +10860,9 @@ - + - + @@ -10870,9 +10870,9 @@ - + - + @@ -10880,9 +10880,9 @@ - + - + @@ -10890,9 +10890,9 @@ - + - + @@ -10900,9 +10900,9 @@ - + - + @@ -10910,9 +10910,9 @@ - + - + @@ -10920,9 +10920,9 @@ - + - + @@ -10930,9 +10930,9 @@ - + - + @@ -10940,9 +10940,9 @@ - + - + @@ -10950,9 +10950,9 @@ - + - + @@ -10960,9 +10960,9 @@ - + - + @@ -10970,9 +10970,9 @@ - + - + @@ -10980,9 +10980,9 @@ - + - + @@ -10990,9 +10990,9 @@ - + - + @@ -11000,9 +11000,9 @@ - + - + @@ -11010,9 +11010,9 @@ - + - + @@ -11020,9 +11020,9 @@ - + - + @@ -11030,9 +11030,9 @@ - + - + @@ -11040,9 +11040,9 @@ - + - + @@ -11050,9 +11050,9 @@ - + - + @@ -11060,9 +11060,9 @@ - + - + @@ -11070,9 +11070,9 @@ - + - + @@ -11080,9 +11080,9 @@ - + - + @@ -11090,9 +11090,9 @@ - + - + @@ -11100,9 +11100,9 @@ - + - + @@ -11110,9 +11110,9 @@ - + - + @@ -11120,9 +11120,9 @@ - + - + @@ -11130,9 +11130,9 @@ - + - + @@ -11140,9 +11140,9 @@ - + - + @@ -11150,9 +11150,9 @@ - + - + @@ -11160,9 +11160,9 @@ - + - + @@ -11170,9 +11170,9 @@ - + - + @@ -11180,9 +11180,9 @@ - + - + @@ -11190,9 +11190,9 @@ - + - + @@ -11200,9 +11200,9 @@ - + - + @@ -11210,9 +11210,9 @@ - + - + @@ -11220,9 +11220,9 @@ - + - + @@ -11230,9 +11230,9 @@ - + - + @@ -11240,9 +11240,9 @@ - + - + @@ -11250,9 +11250,9 @@ - + - + @@ -11260,9 +11260,9 @@ - + - + @@ -11270,9 +11270,9 @@ - + - + @@ -11280,9 +11280,9 @@ - + - + @@ -11290,9 +11290,9 @@ - + - + @@ -11300,9 +11300,9 @@ - + - + @@ -11310,9 +11310,9 @@ - + - + @@ -11320,9 +11320,9 @@ - + - + @@ -11330,9 +11330,9 @@ - + - + @@ -11340,9 +11340,9 @@ - + - + @@ -11350,9 +11350,9 @@ - + - + @@ -11360,9 +11360,9 @@ - + - + @@ -11370,9 +11370,9 @@ - + - + @@ -11380,9 +11380,9 @@ - + - + @@ -11390,9 +11390,9 @@ - + - + @@ -11400,9 +11400,9 @@ - + - + @@ -11410,9 +11410,9 @@ - + - + @@ -11420,9 +11420,9 @@ - + - + @@ -11430,9 +11430,9 @@ - + - + @@ -11440,9 +11440,9 @@ - + - + @@ -11450,9 +11450,9 @@ - + - + @@ -11460,9 +11460,9 @@ - + - + @@ -11470,9 +11470,9 @@ - + - + @@ -11480,9 +11480,9 @@ - + - + @@ -11490,9 +11490,9 @@ - + - + @@ -11500,9 +11500,9 @@ - + - + @@ -11510,9 +11510,9 @@ - + - + @@ -11520,9 +11520,9 @@ - + - + @@ -11530,9 +11530,9 @@ - + - + @@ -11540,9 +11540,9 @@ - + - + @@ -11550,9 +11550,9 @@ - + - + @@ -11560,9 +11560,9 @@ - + - + @@ -11570,9 +11570,9 @@ - + - + @@ -11580,9 +11580,9 @@ - + - + @@ -11590,9 +11590,9 @@ - + - + @@ -11600,9 +11600,9 @@ - + - + @@ -11610,9 +11610,9 @@ - + - + @@ -11620,9 +11620,9 @@ - + - + @@ -11630,9 +11630,9 @@ - + - + @@ -11640,9 +11640,9 @@ - + - + @@ -11650,9 +11650,9 @@ - + - + @@ -11660,9 +11660,9 @@ - + - + @@ -11670,9 +11670,9 @@ - + - + @@ -11680,9 +11680,9 @@ - + - + @@ -11690,9 +11690,9 @@ - + - + @@ -11700,9 +11700,9 @@ - + - + @@ -11710,9 +11710,9 @@ - + - + @@ -11720,9 +11720,9 @@ - + - + @@ -11730,9 +11730,9 @@ - + - + @@ -11740,9 +11740,9 @@ - + - + @@ -11750,9 +11750,9 @@ - + - + @@ -11760,9 +11760,9 @@ - + - + @@ -11770,9 +11770,9 @@ - + - + @@ -11780,9 +11780,9 @@ - + - + @@ -11790,9 +11790,9 @@ - + - + @@ -11800,9 +11800,9 @@ - + - + @@ -11810,9 +11810,9 @@ - + - + @@ -11820,9 +11820,9 @@ - + - + @@ -11830,9 +11830,9 @@ - + - + @@ -11840,9 +11840,9 @@ - + - + @@ -11850,9 +11850,9 @@ - + - + @@ -11860,9 +11860,9 @@ - + - + @@ -11870,9 +11870,9 @@ - + - + @@ -11880,9 +11880,9 @@ - + - + @@ -11890,9 +11890,9 @@ - + - + @@ -11900,9 +11900,9 @@ - + - + @@ -11910,9 +11910,9 @@ - + - + @@ -11920,9 +11920,9 @@ - + - + @@ -11930,9 +11930,9 @@ - + - + @@ -11940,9 +11940,9 @@ - + - + @@ -11950,9 +11950,9 @@ - + - + @@ -11960,9 +11960,9 @@ - + - + @@ -11970,9 +11970,9 @@ - + - + @@ -11980,9 +11980,9 @@ - + - + @@ -11990,9 +11990,9 @@ - + - + @@ -12000,9 +12000,9 @@ - + - + @@ -12010,9 +12010,9 @@ - + - + @@ -12020,9 +12020,9 @@ - + - + @@ -12030,9 +12030,9 @@ - + - + @@ -12040,9 +12040,9 @@ - + - + @@ -12050,9 +12050,9 @@ - + - + @@ -12060,9 +12060,9 @@ - + - + @@ -12070,9 +12070,9 @@ - + - + @@ -12080,9 +12080,9 @@ - + - + @@ -12090,9 +12090,9 @@ - + - + @@ -12100,9 +12100,9 @@ - + - + @@ -12110,9 +12110,9 @@ - + - + @@ -12120,9 +12120,9 @@ - + - + @@ -12130,9 +12130,9 @@ - + - + @@ -12140,9 +12140,9 @@ - + - + @@ -12150,9 +12150,9 @@ - + - + @@ -12160,9 +12160,9 @@ - + - + @@ -12170,9 +12170,9 @@ - + - + @@ -12180,9 +12180,9 @@ - + - + @@ -12190,9 +12190,9 @@ - + - + @@ -12200,9 +12200,9 @@ - + - + @@ -12210,9 +12210,9 @@ - + - + @@ -12220,9 +12220,9 @@ - + - + @@ -12230,9 +12230,9 @@ - + - + @@ -12240,9 +12240,9 @@ - + - + @@ -12250,9 +12250,9 @@ - + - + @@ -12260,9 +12260,9 @@ - + - + @@ -12270,9 +12270,9 @@ - + - + @@ -12280,9 +12280,9 @@ - + - + @@ -12290,9 +12290,9 @@ - + - + @@ -12300,9 +12300,9 @@ - + - + @@ -12310,9 +12310,9 @@ - + - + @@ -12320,9 +12320,9 @@ - + - + @@ -12330,9 +12330,9 @@ - + - + @@ -12340,9 +12340,9 @@ - + - + @@ -12350,9 +12350,9 @@ - + - + @@ -12360,9 +12360,9 @@ - + - + @@ -12370,9 +12370,9 @@ - + - + @@ -12380,9 +12380,9 @@ - + - + @@ -12390,9 +12390,9 @@ - + - + @@ -12400,9 +12400,9 @@ - + - + @@ -12410,9 +12410,9 @@ - + - + @@ -12420,9 +12420,9 @@ - + - + @@ -12430,9 +12430,9 @@ - + - + @@ -12440,9 +12440,9 @@ - + - + @@ -12450,9 +12450,9 @@ - + - + @@ -12460,9 +12460,9 @@ - + - + @@ -12470,9 +12470,9 @@ - + - + @@ -12480,9 +12480,9 @@ - + - + @@ -12490,9 +12490,9 @@ - + - + @@ -12500,9 +12500,9 @@ - + - + @@ -12510,9 +12510,9 @@ - + - + @@ -12520,9 +12520,9 @@ - + - + @@ -12530,9 +12530,9 @@ - + - + @@ -12540,9 +12540,9 @@ - + - + @@ -12550,9 +12550,9 @@ - + - + @@ -12560,9 +12560,9 @@ - + - + @@ -12570,9 +12570,9 @@ - + - + @@ -12580,9 +12580,9 @@ - + - + @@ -12590,9 +12590,9 @@ - + - + @@ -12600,9 +12600,9 @@ - + - + @@ -12610,9 +12610,9 @@ - + - + @@ -12620,9 +12620,9 @@ - + - + @@ -12630,9 +12630,9 @@ - + - + @@ -12640,9 +12640,9 @@ - + - + @@ -12650,9 +12650,9 @@ - + - + @@ -12660,9 +12660,9 @@ - + - + @@ -12670,9 +12670,9 @@ - + - + @@ -12680,9 +12680,9 @@ - + - + @@ -12690,9 +12690,9 @@ - + - + @@ -12700,9 +12700,9 @@ - + - + @@ -12710,9 +12710,9 @@ - + - + @@ -12720,9 +12720,9 @@ - + - + @@ -12730,9 +12730,9 @@ - + - + @@ -12740,9 +12740,9 @@ - + - + @@ -12750,9 +12750,9 @@ - + - + @@ -12760,9 +12760,9 @@ - + - + @@ -12770,9 +12770,9 @@ - + - + @@ -12780,9 +12780,9 @@ - + - + @@ -12790,9 +12790,9 @@ - + - + @@ -12800,9 +12800,9 @@ - + - + @@ -12810,9 +12810,9 @@ - + - + @@ -12820,9 +12820,9 @@ - + - + @@ -12830,9 +12830,9 @@ - + - + @@ -12840,9 +12840,9 @@ - + - + @@ -12850,9 +12850,9 @@ - + - + @@ -12860,9 +12860,9 @@ - + - + @@ -12870,9 +12870,9 @@ - + - + @@ -12880,9 +12880,9 @@ - + - + @@ -12890,9 +12890,9 @@ - + - + @@ -12900,9 +12900,9 @@ - + - + @@ -12910,9 +12910,9 @@ - + - + @@ -12920,9 +12920,9 @@ - + - + @@ -12930,9 +12930,9 @@ - + - + @@ -12940,9 +12940,9 @@ - + - + @@ -12950,9 +12950,9 @@ - + - + @@ -12960,9 +12960,9 @@ - + - + @@ -12970,9 +12970,9 @@ - + - + @@ -12980,9 +12980,9 @@ - + - + @@ -12990,9 +12990,9 @@ - + - + @@ -13000,9 +13000,9 @@ - + - + @@ -13010,9 +13010,9 @@ - + - + @@ -13020,9 +13020,9 @@ - + - + @@ -13030,9 +13030,9 @@ - + - + @@ -13040,9 +13040,9 @@ - + - + @@ -13050,9 +13050,9 @@ - + - + @@ -13060,9 +13060,9 @@ - + - + @@ -13070,9 +13070,9 @@ - + - + @@ -13080,9 +13080,9 @@ - + - + @@ -13090,9 +13090,9 @@ - + - + @@ -13100,9 +13100,9 @@ - + - + @@ -13110,9 +13110,9 @@ - + - + @@ -13120,9 +13120,9 @@ - + - + @@ -13130,9 +13130,9 @@ - + - + @@ -13140,9 +13140,9 @@ - + - + @@ -13150,9 +13150,9 @@ - + - + @@ -13160,9 +13160,9 @@ - + - + @@ -13170,9 +13170,9 @@ - + - + @@ -13180,9 +13180,9 @@ - + - + @@ -13190,9 +13190,9 @@ - + - + @@ -13200,9 +13200,9 @@ - + - + @@ -13210,9 +13210,9 @@ - + - + @@ -13220,9 +13220,9 @@ - + - + @@ -13230,9 +13230,9 @@ - + - + @@ -13240,9 +13240,9 @@ - + - + @@ -13250,9 +13250,9 @@ - + - + @@ -13260,9 +13260,9 @@ - + - + @@ -13270,9 +13270,9 @@ - + - + @@ -13280,9 +13280,9 @@ - + - + @@ -13290,9 +13290,9 @@ - + - + @@ -13300,9 +13300,9 @@ - + - + @@ -13310,9 +13310,9 @@ - + - + @@ -13320,9 +13320,9 @@ - + - + @@ -13330,9 +13330,9 @@ - + - + @@ -13340,9 +13340,9 @@ - + - + @@ -13350,9 +13350,9 @@ - + - + @@ -13360,9 +13360,9 @@ - + - + @@ -13370,9 +13370,9 @@ - + - + @@ -13380,9 +13380,9 @@ - + - + @@ -13390,9 +13390,9 @@ - + - + @@ -13400,9 +13400,9 @@ - + - + @@ -13410,9 +13410,9 @@ - + - + @@ -13420,9 +13420,9 @@ - + - + @@ -13430,9 +13430,9 @@ - + - + @@ -13440,9 +13440,9 @@ - + - + @@ -13450,9 +13450,9 @@ - + - + @@ -13460,9 +13460,9 @@ - + - + @@ -13470,9 +13470,9 @@ - + - + @@ -13480,9 +13480,9 @@ - + - + @@ -13490,9 +13490,9 @@ - + - + @@ -13500,9 +13500,9 @@ - + - + @@ -13510,9 +13510,9 @@ - + - + @@ -13520,9 +13520,9 @@ - + - + @@ -13530,9 +13530,9 @@ - + - + @@ -13540,9 +13540,9 @@ - + - + @@ -13550,9 +13550,9 @@ - + - + @@ -13560,9 +13560,9 @@ - + - + @@ -13570,9 +13570,9 @@ - + - + @@ -13580,9 +13580,9 @@ - + - + @@ -13590,9 +13590,9 @@ - + - + @@ -13600,9 +13600,9 @@ - + - + @@ -13610,9 +13610,9 @@ - + - + @@ -13620,9 +13620,9 @@ - + - + @@ -13630,9 +13630,9 @@ - + - + @@ -13640,9 +13640,9 @@ - + - + @@ -13650,9 +13650,9 @@ - + - + @@ -13660,9 +13660,9 @@ - + - + @@ -13670,9 +13670,9 @@ - + - + @@ -13680,9 +13680,9 @@ - + - + @@ -13690,9 +13690,9 @@ - + - + @@ -13700,9 +13700,9 @@ - + - + @@ -13710,9 +13710,9 @@ - + - + @@ -13720,9 +13720,9 @@ - + - + @@ -13730,9 +13730,9 @@ - + - + @@ -13740,9 +13740,9 @@ - + - + @@ -13750,9 +13750,9 @@ - + - + @@ -13760,9 +13760,9 @@ - + - + @@ -13770,9 +13770,9 @@ - + - + @@ -13780,9 +13780,9 @@ - + - + @@ -13790,9 +13790,9 @@ - + - + @@ -13800,9 +13800,9 @@ - + - + @@ -13810,9 +13810,9 @@ - + - + @@ -13820,9 +13820,9 @@ - + - + @@ -13830,9 +13830,9 @@ - + - + @@ -13840,9 +13840,9 @@ - + - + @@ -13850,9 +13850,9 @@ - + - + @@ -13860,9 +13860,9 @@ - + - + @@ -13870,9 +13870,9 @@ - + - + @@ -13880,9 +13880,9 @@ - + - + @@ -13890,9 +13890,9 @@ - + - + @@ -13900,9 +13900,9 @@ - + - + @@ -13910,9 +13910,9 @@ - + - + @@ -13920,9 +13920,9 @@ - + - + @@ -13930,9 +13930,9 @@ - + - + @@ -13940,9 +13940,9 @@ - + - + @@ -13950,9 +13950,9 @@ - + - + @@ -13960,9 +13960,9 @@ - + - + @@ -13970,9 +13970,9 @@ - + - + @@ -13980,9 +13980,9 @@ - + - + @@ -13990,9 +13990,9 @@ - + - + @@ -14000,9 +14000,9 @@ - + - + @@ -14010,9 +14010,9 @@ - + - + @@ -14020,9 +14020,9 @@ - + - + @@ -14030,9 +14030,9 @@ - + - + @@ -14040,9 +14040,9 @@ - + - + @@ -14050,9 +14050,9 @@ - + - + @@ -14060,9 +14060,9 @@ - + - + @@ -14070,9 +14070,9 @@ - + - + @@ -14080,9 +14080,9 @@ - + - + @@ -14090,9 +14090,9 @@ - + - + @@ -14100,9 +14100,9 @@ - + - + @@ -14110,9 +14110,9 @@ - + - + @@ -14120,9 +14120,9 @@ - + - + @@ -14130,9 +14130,9 @@ - + - + @@ -14140,9 +14140,9 @@ - + - + @@ -14150,9 +14150,9 @@ - + - + @@ -14160,9 +14160,9 @@ - + - + @@ -14170,9 +14170,9 @@ - + - + @@ -14180,9 +14180,9 @@ - + - + @@ -14190,9 +14190,9 @@ - + - + @@ -14200,9 +14200,9 @@ - + - + @@ -14210,9 +14210,9 @@ - + - + @@ -14220,9 +14220,9 @@ - + - + @@ -14230,9 +14230,9 @@ - + - + @@ -14240,9 +14240,9 @@ - + - + @@ -14250,9 +14250,9 @@ - + - + @@ -14260,9 +14260,9 @@ - + - + @@ -14270,9 +14270,9 @@ - + - + @@ -14280,9 +14280,9 @@ - + - + @@ -14290,9 +14290,9 @@ - + - + @@ -14300,9 +14300,9 @@ - + - + @@ -14310,9 +14310,9 @@ - + - + @@ -14320,9 +14320,9 @@ - + - + @@ -14330,9 +14330,9 @@ - + - + @@ -14340,9 +14340,9 @@ - + - + @@ -14350,9 +14350,9 @@ - + - + @@ -14360,9 +14360,9 @@ - + - + @@ -14370,9 +14370,9 @@ - + - + @@ -14380,9 +14380,9 @@ - + - + @@ -14390,9 +14390,9 @@ - + - + @@ -14400,9 +14400,9 @@ - + - + @@ -14410,9 +14410,9 @@ - + - + @@ -14420,9 +14420,9 @@ - + - + @@ -14430,9 +14430,9 @@ - + - + @@ -14440,9 +14440,9 @@ - + - + @@ -14450,9 +14450,9 @@ - + - + @@ -14460,9 +14460,9 @@ - + - + @@ -14470,9 +14470,9 @@ - + - + @@ -14480,9 +14480,9 @@ - + - + @@ -14490,9 +14490,9 @@ - + - + @@ -14500,9 +14500,9 @@ - + - + @@ -14510,9 +14510,9 @@ - + - + @@ -14520,9 +14520,9 @@ - + - + @@ -14530,9 +14530,9 @@ - + - + @@ -14540,9 +14540,9 @@ - + - + @@ -14550,9 +14550,9 @@ - + - + @@ -14560,9 +14560,9 @@ - + - + @@ -14570,9 +14570,9 @@ - + - + @@ -14580,9 +14580,9 @@ - + - + @@ -14590,9 +14590,9 @@ - + - + @@ -14600,9 +14600,9 @@ - + - + @@ -14610,9 +14610,9 @@ - + - + @@ -14620,9 +14620,9 @@ - + - + @@ -14630,9 +14630,9 @@ - + - + @@ -14640,9 +14640,9 @@ - + - + @@ -14650,9 +14650,9 @@ - + - + @@ -14660,9 +14660,9 @@ - + - + @@ -14670,9 +14670,9 @@ - + - + @@ -14680,9 +14680,9 @@ - + - + @@ -14690,9 +14690,9 @@ - + - + @@ -14700,9 +14700,9 @@ - + - + @@ -14710,9 +14710,9 @@ - + - + @@ -14720,9 +14720,9 @@ - + - + @@ -14730,9 +14730,9 @@ - + - + @@ -14740,9 +14740,9 @@ - + - + @@ -14750,9 +14750,9 @@ - + - + @@ -14760,9 +14760,9 @@ - + - + @@ -14770,9 +14770,9 @@ - + - + @@ -14780,9 +14780,9 @@ - + - + @@ -14790,9 +14790,9 @@ - + - + @@ -14800,9 +14800,9 @@ - + - + @@ -14810,9 +14810,9 @@ - + - + @@ -14820,9 +14820,9 @@ - + - + @@ -14830,9 +14830,9 @@ - + - + @@ -14840,9 +14840,9 @@ - + - + @@ -14850,9 +14850,9 @@ - + - + @@ -14860,9 +14860,9 @@ - + - + @@ -14870,9 +14870,9 @@ - + - + @@ -14880,9 +14880,9 @@ - + - + @@ -14890,9 +14890,9 @@ - + - + @@ -14900,9 +14900,9 @@ - + - + @@ -14910,9 +14910,9 @@ - + - + @@ -14920,9 +14920,9 @@ - + - + @@ -14930,9 +14930,9 @@ - + - + @@ -14940,9 +14940,9 @@ - + - + @@ -14950,9 +14950,9 @@ - + - + @@ -14960,9 +14960,9 @@ - + - + @@ -14970,9 +14970,9 @@ - + - + @@ -14980,9 +14980,9 @@ - + - + @@ -14990,9 +14990,9 @@ - + - + @@ -15000,9 +15000,9 @@ - + - + @@ -15010,9 +15010,9 @@ - + - + @@ -15020,9 +15020,9 @@ - + - + @@ -15030,9 +15030,9 @@ - + - + @@ -15040,9 +15040,9 @@ - + - + @@ -15050,9 +15050,9 @@ - + - + @@ -15060,9 +15060,9 @@ - + - + @@ -15070,9 +15070,9 @@ - + - + @@ -15080,9 +15080,9 @@ - + - + @@ -15090,9 +15090,9 @@ - + - + @@ -15100,9 +15100,9 @@ - + - + @@ -15110,9 +15110,9 @@ - + - + @@ -15120,9 +15120,9 @@ - + - + @@ -15130,9 +15130,9 @@ - + - + @@ -15140,9 +15140,9 @@ - + - + @@ -15150,9 +15150,9 @@ - + - + @@ -15160,9 +15160,9 @@ - + - + @@ -15170,9 +15170,9 @@ - + - + @@ -15180,9 +15180,9 @@ - + - + @@ -15190,9 +15190,9 @@ - + - + @@ -15200,9 +15200,9 @@ - + - + @@ -15210,9 +15210,9 @@ - + - + @@ -15220,9 +15220,9 @@ - + - + @@ -15230,9 +15230,9 @@ - + - + @@ -15240,9 +15240,9 @@ - + - + @@ -15250,9 +15250,9 @@ - + - + @@ -15260,9 +15260,9 @@ - + - + @@ -15270,9 +15270,9 @@ - + - + @@ -15280,9 +15280,9 @@ - + - + @@ -15290,9 +15290,9 @@ - + - + @@ -15300,9 +15300,9 @@ - + - + @@ -15310,9 +15310,9 @@ - + - + @@ -15320,9 +15320,9 @@ - + - + @@ -15330,9 +15330,9 @@ - + - + @@ -15340,9 +15340,9 @@ - + - + @@ -15350,9 +15350,9 @@ - + - + @@ -15360,9 +15360,9 @@ - + - + @@ -15370,9 +15370,9 @@ - + - + @@ -15380,9 +15380,9 @@ - + - + @@ -15390,9 +15390,9 @@ - + - + @@ -15400,9 +15400,9 @@ - + - + @@ -15410,9 +15410,9 @@ - + - + @@ -15420,9 +15420,9 @@ - + - + @@ -15430,9 +15430,9 @@ - + - + @@ -15440,9 +15440,9 @@ - + - + @@ -15450,9 +15450,9 @@ - + - + @@ -15460,9 +15460,9 @@ - + - + @@ -15470,9 +15470,9 @@ - + - + @@ -15480,9 +15480,9 @@ - + - + @@ -15490,9 +15490,9 @@ - + - + @@ -15500,9 +15500,9 @@ - + - + @@ -15510,9 +15510,9 @@ - + - + @@ -15520,9 +15520,9 @@ - + - + @@ -15530,9 +15530,9 @@ - + - + @@ -15540,9 +15540,9 @@ - + - + @@ -15550,9 +15550,9 @@ - + - + @@ -15560,9 +15560,9 @@ - + - + @@ -15570,9 +15570,9 @@ - + - + @@ -15580,9 +15580,9 @@ - + - + @@ -15590,9 +15590,9 @@ - + - + @@ -15600,9 +15600,9 @@ - + - + @@ -15610,9 +15610,9 @@ - + - + @@ -15620,9 +15620,9 @@ - + - + @@ -15630,9 +15630,9 @@ - + - + @@ -15640,9 +15640,9 @@ - + - + @@ -15650,9 +15650,9 @@ - + - + @@ -15660,9 +15660,9 @@ - + - + @@ -15670,9 +15670,9 @@ - + - + @@ -15680,9 +15680,9 @@ - + - + @@ -15690,9 +15690,9 @@ - + - + @@ -15700,9 +15700,9 @@ - + - + @@ -15710,9 +15710,9 @@ - + - + @@ -15720,9 +15720,9 @@ - + - + @@ -15730,9 +15730,9 @@ - + - + @@ -15740,9 +15740,9 @@ - + - + @@ -15750,9 +15750,9 @@ - + - + @@ -15760,9 +15760,9 @@ - + - + @@ -15770,9 +15770,9 @@ - + - + @@ -15780,9 +15780,9 @@ - + - + @@ -15790,9 +15790,9 @@ - + - + @@ -15800,9 +15800,9 @@ - + - + @@ -15810,9 +15810,9 @@ - + - + @@ -15820,9 +15820,9 @@ - + - + @@ -15830,9 +15830,9 @@ - + - + @@ -15840,9 +15840,9 @@ - + - + @@ -15850,9 +15850,9 @@ - + - + @@ -15860,9 +15860,9 @@ - + - + @@ -15870,9 +15870,9 @@ - + - + @@ -15880,9 +15880,9 @@ - + - + @@ -15890,9 +15890,9 @@ - + - + @@ -15900,9 +15900,9 @@ - + - + @@ -15910,9 +15910,9 @@ - + - + @@ -15920,9 +15920,9 @@ - + - + @@ -15930,9 +15930,9 @@ - + - + @@ -15940,9 +15940,9 @@ - + - + @@ -15950,9 +15950,9 @@ - + - + @@ -15960,9 +15960,9 @@ - + - + @@ -15970,9 +15970,9 @@ - + - + @@ -15980,9 +15980,9 @@ - + - + @@ -15990,9 +15990,9 @@ - + - + @@ -16000,9 +16000,9 @@ - + - + @@ -16010,9 +16010,9 @@ - + - + @@ -16020,9 +16020,9 @@ - + - + @@ -16030,9 +16030,9 @@ - + - + @@ -16040,9 +16040,9 @@ - + - + @@ -16050,9 +16050,9 @@ - + - + @@ -16060,9 +16060,9 @@ - + - + @@ -16070,9 +16070,9 @@ - + - + @@ -16080,9 +16080,9 @@ - + - + @@ -16090,9 +16090,9 @@ - + - + @@ -16100,9 +16100,9 @@ - + - + @@ -16110,9 +16110,9 @@ - + - + @@ -16120,9 +16120,9 @@ - + - + @@ -16130,9 +16130,9 @@ - + - + @@ -16140,9 +16140,9 @@ - + - + @@ -16150,9 +16150,9 @@ - + - + @@ -16160,9 +16160,9 @@ - + - + @@ -16170,9 +16170,9 @@ - + - + @@ -16180,9 +16180,9 @@ - + - + @@ -16190,9 +16190,9 @@ - + - + @@ -16200,9 +16200,9 @@ - + - + @@ -16210,9 +16210,9 @@ - + - + @@ -16220,9 +16220,9 @@ - + - + @@ -16230,9 +16230,9 @@ - + - + @@ -16240,9 +16240,9 @@ - + - + @@ -16250,9 +16250,9 @@ - + - + @@ -16260,9 +16260,9 @@ - + - + @@ -16270,9 +16270,9 @@ - + - + @@ -16280,9 +16280,9 @@ - + - + @@ -16290,9 +16290,9 @@ - + - + @@ -16300,9 +16300,9 @@ - + - + @@ -16310,9 +16310,9 @@ - + - + @@ -16320,9 +16320,9 @@ - + - + @@ -16330,9 +16330,9 @@ - + - + @@ -16340,9 +16340,9 @@ - + - + @@ -16350,9 +16350,9 @@ - + - + @@ -16360,9 +16360,9 @@ - + - + @@ -16370,9 +16370,9 @@ - + - + @@ -16380,9 +16380,9 @@ - + - + @@ -16390,9 +16390,9 @@ - + - + @@ -16400,9 +16400,9 @@ - + - + @@ -16410,9 +16410,9 @@ - + - + @@ -16420,9 +16420,9 @@ - + - + @@ -16430,9 +16430,9 @@ - + - + @@ -16440,9 +16440,9 @@ - + - + @@ -16450,9 +16450,9 @@ - + - + @@ -16460,9 +16460,9 @@ - + - + @@ -16470,9 +16470,9 @@ - + - + @@ -16480,9 +16480,9 @@ - + - + @@ -16490,9 +16490,9 @@ - + - + @@ -16500,9 +16500,9 @@ - + - + @@ -16510,9 +16510,9 @@ - + - + @@ -16520,9 +16520,9 @@ - + - + @@ -16530,9 +16530,9 @@ - + - + @@ -16540,9 +16540,9 @@ - + - + @@ -16550,9 +16550,9 @@ - + - + @@ -16560,9 +16560,9 @@ - + - + @@ -16570,9 +16570,9 @@ - + - + @@ -16580,9 +16580,9 @@ - + - + @@ -16590,9 +16590,9 @@ - + - + @@ -16600,9 +16600,9 @@ - + - + @@ -16610,9 +16610,9 @@ - + - + @@ -16620,9 +16620,9 @@ - + - + @@ -16630,9 +16630,9 @@ - + - + @@ -16640,9 +16640,9 @@ - + - + @@ -16650,9 +16650,9 @@ - + - + @@ -16660,9 +16660,9 @@ - + - + @@ -16670,9 +16670,9 @@ - + - + @@ -16680,9 +16680,9 @@ - + - + @@ -16690,9 +16690,9 @@ - + - + @@ -16700,9 +16700,9 @@ - + - + @@ -16710,9 +16710,9 @@ - + - + @@ -16720,9 +16720,9 @@ - + - + @@ -16730,9 +16730,9 @@ - + - + @@ -16740,9 +16740,9 @@ - + - + @@ -16750,9 +16750,9 @@ - + - + @@ -16760,9 +16760,9 @@ - + - + @@ -16770,9 +16770,9 @@ - + - + @@ -16780,9 +16780,9 @@ - + - + @@ -16790,9 +16790,9 @@ - + - + @@ -16800,9 +16800,9 @@ - + - + @@ -16810,9 +16810,9 @@ - + - + @@ -16820,9 +16820,9 @@ - + - + @@ -16830,9 +16830,9 @@ - + - + @@ -16840,9 +16840,9 @@ - + - + @@ -16850,9 +16850,9 @@ - + - + @@ -16860,9 +16860,9 @@ - + - + @@ -16870,9 +16870,9 @@ - + - + @@ -16880,9 +16880,9 @@ - + - + @@ -16890,9 +16890,9 @@ - + - + @@ -16900,9 +16900,9 @@ - + - + @@ -16910,9 +16910,9 @@ - + - + @@ -16920,9 +16920,9 @@ - + - + @@ -16930,9 +16930,9 @@ - + - + @@ -16940,9 +16940,9 @@ - + - + @@ -16950,9 +16950,9 @@ - + - + @@ -16960,9 +16960,9 @@ - + - + @@ -16970,9 +16970,9 @@ - + - + @@ -16980,9 +16980,9 @@ - + - + @@ -16990,9 +16990,9 @@ - + - + @@ -17000,9 +17000,9 @@ - + - + @@ -17010,9 +17010,9 @@ - + - + @@ -17020,9 +17020,9 @@ - + - + @@ -17030,9 +17030,9 @@ - + - + @@ -17040,9 +17040,9 @@ - + - + @@ -17050,9 +17050,9 @@ - + - + @@ -17060,9 +17060,9 @@ - + - + @@ -17070,9 +17070,9 @@ - + - + @@ -17080,9 +17080,9 @@ - + - + @@ -17090,9 +17090,9 @@ - + - + @@ -17100,9 +17100,9 @@ - + - + @@ -17110,9 +17110,9 @@ - + - + @@ -17120,9 +17120,9 @@ - + - + @@ -17130,9 +17130,9 @@ - + - + @@ -17140,9 +17140,9 @@ - + - + @@ -17150,9 +17150,9 @@ - + - + @@ -17160,9 +17160,9 @@ - + - + @@ -17170,9 +17170,9 @@ - + - + @@ -17180,9 +17180,9 @@ - + - + @@ -17190,9 +17190,9 @@ - + - + @@ -17200,9 +17200,9 @@ - + - + @@ -17210,9 +17210,9 @@ - + - + @@ -17220,9 +17220,9 @@ - + - + @@ -17230,9 +17230,9 @@ - + - + @@ -17240,9 +17240,9 @@ - + - + @@ -17250,9 +17250,9 @@ - + - + @@ -17260,9 +17260,9 @@ - + - + @@ -17270,9 +17270,9 @@ - + - + @@ -17280,9 +17280,9 @@ - + - + @@ -17290,9 +17290,9 @@ - + - + @@ -17300,9 +17300,9 @@ - + - + @@ -17310,9 +17310,9 @@ - + - + @@ -17320,9 +17320,9 @@ - + - + @@ -17330,9 +17330,9 @@ - + - + @@ -17340,9 +17340,9 @@ - + - + @@ -17350,9 +17350,9 @@ - + - + @@ -17360,9 +17360,9 @@ - + - + @@ -17370,9 +17370,9 @@ - + - + @@ -17380,9 +17380,9 @@ - + - + @@ -17390,9 +17390,9 @@ - + - + @@ -17400,9 +17400,9 @@ - + - + @@ -17410,9 +17410,9 @@ - + - + @@ -17420,9 +17420,9 @@ - + - + @@ -17430,9 +17430,9 @@ - + - + @@ -17440,9 +17440,9 @@ - + - + @@ -17450,9 +17450,9 @@ - + - + @@ -17460,9 +17460,9 @@ - + - + @@ -17470,9 +17470,9 @@ - + - + @@ -17480,9 +17480,9 @@ - + - + @@ -17490,9 +17490,9 @@ - + - + @@ -17500,9 +17500,9 @@ - + - + @@ -17510,9 +17510,9 @@ - + - + @@ -17520,9 +17520,9 @@ - + - + @@ -17530,9 +17530,9 @@ - + - + @@ -17540,9 +17540,9 @@ - + - + @@ -17550,9 +17550,9 @@ - + - + @@ -17560,9 +17560,9 @@ - + - + @@ -17570,9 +17570,9 @@ - + - + @@ -17580,9 +17580,9 @@ - + - + @@ -17590,9 +17590,9 @@ - + - + @@ -17600,9 +17600,9 @@ - + - + @@ -17610,9 +17610,9 @@ - + - + @@ -17620,9 +17620,9 @@ - + - + @@ -17630,9 +17630,9 @@ - + - + @@ -17640,9 +17640,9 @@ - + - + @@ -17650,9 +17650,9 @@ - + - + @@ -17660,9 +17660,9 @@ - + - + @@ -17670,9 +17670,9 @@ - + - + @@ -17680,9 +17680,9 @@ - + - + @@ -17690,9 +17690,9 @@ - + - + @@ -17700,9 +17700,9 @@ - + - + @@ -17710,9 +17710,9 @@ - + - + @@ -17720,9 +17720,9 @@ - + - + @@ -17730,9 +17730,9 @@ - + - + @@ -17740,9 +17740,9 @@ - + - + @@ -17750,9 +17750,9 @@ - + - + @@ -17760,9 +17760,9 @@ - + - + @@ -17770,9 +17770,9 @@ - + - + @@ -17780,9 +17780,9 @@ - + - + @@ -17790,9 +17790,9 @@ - + - + @@ -17800,9 +17800,9 @@ - + - + @@ -17810,9 +17810,9 @@ - + - + @@ -17820,9 +17820,9 @@ - + - + @@ -17830,9 +17830,9 @@ - + - + @@ -17840,9 +17840,9 @@ - + - + @@ -17850,9 +17850,9 @@ - + - + @@ -17860,9 +17860,9 @@ - + - + @@ -17870,9 +17870,9 @@ - + - + @@ -17880,9 +17880,9 @@ - + - + @@ -17890,9 +17890,9 @@ - + - + @@ -17900,9 +17900,9 @@ - + - + @@ -17910,9 +17910,9 @@ - + - + @@ -17920,9 +17920,9 @@ - + - + @@ -17930,9 +17930,9 @@ - + - + @@ -17940,9 +17940,9 @@ - + - + @@ -17950,9 +17950,9 @@ - + - + @@ -17960,9 +17960,9 @@ - + - + @@ -17970,9 +17970,9 @@ - + - + @@ -17980,9 +17980,9 @@ - + - + @@ -17990,9 +17990,9 @@ - + - + @@ -18000,9 +18000,9 @@ - + - + @@ -18010,9 +18010,9 @@ - + - + @@ -18020,9 +18020,9 @@ - + - + @@ -18030,9 +18030,9 @@ - + - + @@ -18040,9 +18040,9 @@ - + - + @@ -18050,9 +18050,9 @@ - + - + @@ -18060,9 +18060,9 @@ - + - + @@ -18070,9 +18070,9 @@ - + - + @@ -18080,9 +18080,9 @@ - + - + @@ -18090,9 +18090,9 @@ - + - + @@ -18100,9 +18100,9 @@ - + - + @@ -18110,9 +18110,9 @@ - + - + @@ -18120,9 +18120,9 @@ - + - + @@ -18130,9 +18130,9 @@ - + - + @@ -18140,9 +18140,9 @@ - + - + @@ -18150,9 +18150,9 @@ - + - + @@ -18160,9 +18160,9 @@ - + - + @@ -18170,9 +18170,9 @@ - + - + @@ -18180,9 +18180,9 @@ - + - + @@ -18190,9 +18190,9 @@ - + - + @@ -18200,9 +18200,9 @@ - + - + @@ -18210,9 +18210,9 @@ - + - + @@ -18220,9 +18220,9 @@ - + - + @@ -18230,9 +18230,9 @@ - + - + @@ -18240,9 +18240,9 @@ - + - + @@ -18250,9 +18250,9 @@ - + - + @@ -18260,9 +18260,9 @@ - + - + @@ -18270,9 +18270,9 @@ - + - + @@ -18280,9 +18280,9 @@ - + - + @@ -18290,9 +18290,9 @@ - + - + @@ -18300,9 +18300,9 @@ - + - + @@ -18310,9 +18310,9 @@ - + - + @@ -18320,9 +18320,9 @@ - + - + @@ -18330,9 +18330,9 @@ - + - + @@ -18340,9 +18340,9 @@ - + - + @@ -18350,9 +18350,9 @@ - + - + @@ -18360,9 +18360,9 @@ - + - + @@ -18370,9 +18370,9 @@ - + - + @@ -18380,9 +18380,9 @@ - + - + @@ -18390,9 +18390,9 @@ - + - + @@ -18400,9 +18400,9 @@ - + - + @@ -18410,9 +18410,9 @@ - + - + @@ -18420,9 +18420,9 @@ - + - + @@ -18430,9 +18430,9 @@ - + - + @@ -18440,9 +18440,9 @@ - + - + @@ -18450,9 +18450,9 @@ - + - + @@ -18460,9 +18460,9 @@ - + - + @@ -18470,9 +18470,9 @@ - + - + @@ -18480,9 +18480,9 @@ - + - + @@ -18490,9 +18490,9 @@ - + - + @@ -18500,9 +18500,9 @@ - + - + @@ -18510,9 +18510,9 @@ - + - + @@ -18520,9 +18520,9 @@ - + - + @@ -18530,9 +18530,9 @@ - + - + @@ -18540,9 +18540,9 @@ - + - + @@ -18550,9 +18550,9 @@ - + - + @@ -18560,9 +18560,9 @@ - + - + @@ -18570,9 +18570,9 @@ - + - + @@ -18580,9 +18580,9 @@ - + - + @@ -18590,9 +18590,9 @@ - + - + @@ -18600,9 +18600,9 @@ - + - + @@ -18610,9 +18610,9 @@ - + - + @@ -18620,9 +18620,9 @@ - + - + @@ -18630,9 +18630,9 @@ - + - + @@ -18640,9 +18640,9 @@ - + - + @@ -18650,9 +18650,9 @@ - + - + @@ -18660,9 +18660,9 @@ - + - + @@ -18670,9 +18670,9 @@ - + - + @@ -18680,9 +18680,9 @@ - + - + @@ -18690,9 +18690,9 @@ - + - + @@ -18700,9 +18700,9 @@ - + - + @@ -18710,9 +18710,9 @@ - + - + @@ -18720,9 +18720,9 @@ - + - + @@ -18730,9 +18730,9 @@ - + - + @@ -18740,9 +18740,9 @@ - + - + @@ -18750,9 +18750,9 @@ - + - + @@ -18760,9 +18760,9 @@ - + - + @@ -18770,9 +18770,9 @@ - + - + @@ -18780,9 +18780,9 @@ - + - + @@ -18790,9 +18790,9 @@ - + - + @@ -18800,9 +18800,9 @@ - + - + @@ -18810,9 +18810,9 @@ - + - + @@ -18820,9 +18820,9 @@ - + - + @@ -18830,9 +18830,9 @@ - + - + @@ -18840,9 +18840,9 @@ - + - + @@ -18850,9 +18850,9 @@ - + - + @@ -18860,9 +18860,9 @@ - + - + @@ -18870,9 +18870,9 @@ - + - + @@ -18880,9 +18880,9 @@ - + - + @@ -18890,9 +18890,9 @@ - + - + @@ -18900,9 +18900,9 @@ - + - + @@ -18910,9 +18910,9 @@ - + - + @@ -18920,9 +18920,9 @@ - + - + @@ -18930,9 +18930,9 @@ - + - + @@ -18940,9 +18940,9 @@ - + - + @@ -18950,9 +18950,9 @@ - + - + @@ -18960,9 +18960,9 @@ - + - + @@ -18970,9 +18970,9 @@ - + - + @@ -18980,9 +18980,9 @@ - + - + @@ -18990,9 +18990,9 @@ - + - + @@ -19000,9 +19000,9 @@ - + - + @@ -19010,9 +19010,9 @@ - + - + @@ -19020,9 +19020,9 @@ - + - + @@ -19030,9 +19030,9 @@ - + - + @@ -19040,9 +19040,9 @@ - + - + @@ -19050,9 +19050,9 @@ - + - + @@ -19060,9 +19060,9 @@ - + - + @@ -19070,9 +19070,9 @@ - + - + @@ -19080,9 +19080,9 @@ - + - + @@ -19090,9 +19090,9 @@ - + - + @@ -19100,9 +19100,9 @@ - + - + @@ -19110,9 +19110,9 @@ - + - + @@ -19120,9 +19120,9 @@ - + - + @@ -19130,9 +19130,9 @@ - + - + @@ -19140,9 +19140,9 @@ - + - + @@ -19150,9 +19150,9 @@ - + - + @@ -19160,9 +19160,9 @@ - + - + @@ -19170,9 +19170,9 @@ - + - + @@ -19180,9 +19180,9 @@ - + - + @@ -19190,9 +19190,9 @@ - + - + @@ -19200,9 +19200,9 @@ - + - + @@ -19210,9 +19210,9 @@ - + - + @@ -19220,9 +19220,9 @@ - + - + @@ -19230,9 +19230,9 @@ - + - + @@ -19240,9 +19240,9 @@ - + - + @@ -19250,9 +19250,9 @@ - + - + @@ -19260,9 +19260,9 @@ - + - + @@ -19270,9 +19270,9 @@ - + - + @@ -19280,9 +19280,9 @@ - + - + @@ -19290,9 +19290,9 @@ - + - + @@ -19300,9 +19300,9 @@ - + - + @@ -19310,9 +19310,9 @@ - + - + @@ -19320,9 +19320,9 @@ - + - + @@ -19330,9 +19330,9 @@ - + - + @@ -19340,9 +19340,9 @@ - + - + @@ -19350,9 +19350,9 @@ - + - + @@ -19360,9 +19360,9 @@ - + - + @@ -19370,9 +19370,9 @@ - + - + @@ -19380,9 +19380,9 @@ - + - + @@ -19390,9 +19390,9 @@ - + - + @@ -19400,9 +19400,9 @@ - + - + @@ -19410,9 +19410,9 @@ - + - + @@ -19420,9 +19420,9 @@ - + - + @@ -19430,9 +19430,9 @@ - + - + @@ -19440,9 +19440,9 @@ - + - + @@ -19450,9 +19450,9 @@ - + - + @@ -19460,9 +19460,9 @@ - + - + @@ -19470,9 +19470,9 @@ - + - + @@ -19480,9 +19480,9 @@ - + - + @@ -19490,9 +19490,9 @@ - + - + @@ -19500,9 +19500,9 @@ - + - + @@ -19510,9 +19510,9 @@ - + - + @@ -19520,9 +19520,9 @@ - + - + @@ -19530,9 +19530,9 @@ - + - + @@ -19540,9 +19540,9 @@ - + - + @@ -19550,9 +19550,9 @@ - + - + @@ -19560,9 +19560,9 @@ - + - + @@ -19570,9 +19570,9 @@ - + - + @@ -19580,9 +19580,9 @@ - + - + @@ -19590,9 +19590,9 @@ - + - + @@ -19600,9 +19600,9 @@ - + - + @@ -19610,9 +19610,9 @@ - + - + @@ -19620,9 +19620,9 @@ - + - + @@ -19630,9 +19630,9 @@ - + - + @@ -19640,9 +19640,9 @@ - + - + @@ -19650,9 +19650,9 @@ - + - + @@ -19660,9 +19660,9 @@ - + - + @@ -19670,9 +19670,9 @@ - + - + @@ -19680,9 +19680,9 @@ - + - + @@ -19690,9 +19690,9 @@ - + - + @@ -19700,9 +19700,9 @@ - + - + @@ -19710,9 +19710,9 @@ - + - + @@ -19720,9 +19720,9 @@ - + - + @@ -19730,9 +19730,9 @@ - + - + @@ -19740,9 +19740,9 @@ - + - + @@ -19750,9 +19750,9 @@ - + - + @@ -19760,9 +19760,9 @@ - + - + @@ -19770,9 +19770,9 @@ - + - + @@ -19780,9 +19780,9 @@ - + - + @@ -19790,9 +19790,9 @@ - + - + @@ -19800,9 +19800,9 @@ - + - + @@ -19810,9 +19810,9 @@ - + - + @@ -19820,9 +19820,9 @@ - + - + @@ -19830,9 +19830,9 @@ - + - + @@ -19840,9 +19840,9 @@ - + - + @@ -19850,9 +19850,9 @@ - + - + @@ -19860,9 +19860,9 @@ - + - + @@ -19870,9 +19870,9 @@ - + - + @@ -19880,9 +19880,9 @@ - + - + @@ -19890,9 +19890,9 @@ - + - + @@ -19900,9 +19900,9 @@ - + - + @@ -19910,9 +19910,9 @@ - + - + @@ -19920,9 +19920,9 @@ - + - + @@ -19930,9 +19930,9 @@ - + - + @@ -19940,9 +19940,9 @@ - + - + @@ -19950,9 +19950,9 @@ - + - + @@ -19960,9 +19960,9 @@ - + - + @@ -19970,9 +19970,9 @@ - + - + @@ -19980,9 +19980,9 @@ - + - + @@ -19990,9 +19990,9 @@ - + - + @@ -20000,9 +20000,9 @@ - + - + @@ -20010,9 +20010,9 @@ - + - + @@ -20020,9 +20020,9 @@ - + - + @@ -20030,9 +20030,9 @@ - + - + @@ -20040,9 +20040,9 @@ - + - + @@ -20050,9 +20050,9 @@ - + - + @@ -20060,9 +20060,9 @@ - + - + @@ -20070,9 +20070,9 @@ - + - + @@ -20080,9 +20080,9 @@ - + - + @@ -20090,9 +20090,9 @@ - + - + @@ -20100,9 +20100,9 @@ - + - + @@ -20110,9 +20110,9 @@ - + - + @@ -20120,9 +20120,9 @@ - + - + @@ -20130,9 +20130,9 @@ - + - + @@ -20140,9 +20140,9 @@ - + - + @@ -20150,9 +20150,9 @@ - + - + @@ -20160,9 +20160,9 @@ - + - + @@ -20170,9 +20170,9 @@ - + - + @@ -20180,9 +20180,9 @@ - + - + @@ -20190,9 +20190,9 @@ - + - + @@ -20200,9 +20200,9 @@ - + - + @@ -20210,9 +20210,9 @@ - + - + @@ -20220,9 +20220,9 @@ - + - + diff --git a/src/generator/main.cpp b/src/generator/main.cpp index 546fcf6a..c1f9e284 100644 --- a/src/generator/main.cpp +++ b/src/generator/main.cpp @@ -58,7 +58,8 @@ void printUsage(const std::string &programName) { << " " << programName << " kleinBottle " << std::endl; - std::cerr << " " << programName + std::cerr + << " " << programName << " mobiusStrip " << std::endl; std::cerr @@ -173,19 +174,19 @@ int main(int argc, char **argv) { mobius.writeToFile(file); } else if (args.at(1) == "solarSystem") { if (argc == 4) { - double sceneScale = stringToDouble(args.at(2)); + double sceneScale = stringToFloat(args.at(2)); const std::string &file = args.at(3); figures::SolarSystem solarSystem(sceneScale, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0); solarSystem.writeToFile(file); } else if (argc == 10) { - double sceneScale = stringToDouble(args.at(2)); - double sunSizeFactor = stringToDouble(args.at(3)); - double planetSizeFactor = stringToDouble(args.at(4)); - double moonSizeFactor = stringToDouble(args.at(5)); - double distanceFactor = stringToDouble(args.at(6)); - double asteroidBeltDensity = stringToDouble(args.at(7)); - double ringSizeFactor = stringToDouble(args.at(8)); + float sceneScale = stringToFloat(args.at(2)); + float sunSizeFactor = stringToFloat(args.at(3)); + float planetSizeFactor = stringToFloat(args.at(4)); + float moonSizeFactor = stringToFloat(args.at(5)); + float distanceFactor = stringToFloat(args.at(6)); + float asteroidBeltDensity = stringToFloat(args.at(7)); + float ringSizeFactor = stringToFloat(args.at(8)); const std::string &file = args.at(9); figures::SolarSystem solarSystem(sceneScale, From e8ee23522326c73b2597dfff652a018486de122a Mon Sep 17 00:00:00 2001 From: sara Date: Sat, 22 Mar 2025 18:59:02 +0000 Subject: [PATCH 12/14] Sorry --- include/generator/figures/SolarSystem.hpp | 4 +++- src/generator/figures/SolarSystem.cpp | 29 ++++++++++------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp index 6ed7ab88..bfd94f95 100644 --- a/include/generator/figures/SolarSystem.hpp +++ b/include/generator/figures/SolarSystem.hpp @@ -18,9 +18,11 @@ #include #include +#include "utils/WavefrontOBJ.hpp" + namespace generator::figures { -class SolarSystem { +class SolarSystem : public utils::WavefrontOBJ { private: tinyxml2::XMLDocument doc; diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index d49ae00c..52bc2e99 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -12,7 +12,8 @@ /// See the License for the specific language governing permissions and /// limitations under the License. -#include +#include +#include #include "generator/figures/SolarSystem.hpp" @@ -34,7 +35,6 @@ SolarSystem::SolarSystem(float sceneScale, distanceFactor, asteroidBeltDensity, ringSizeFactor); - writeToFile("scene_solarSystem.xml"); } void SolarSystem::createWorld() { @@ -52,20 +52,17 @@ void SolarSystem::configureCamera() { camera->SetAttribute("type", "free"); doc.FirstChildElement("world")->InsertEndChild(camera); - const struct { - const char *name; - float x, y, z; - } cameraSettings[] = { - { "position", 200, 150, 300 }, - { "lookAt", 0, 0, 0 }, - { "up", 0, 1, 0 } - }; - - for (const auto &setting : cameraSettings) { - tinyxml2::XMLElement *element = doc.NewElement(setting.name); - element->SetAttribute("x", setting.x); - element->SetAttribute("y", setting.y); - element->SetAttribute("z", setting.z); + std::unordered_map cameraSettings = { + { "position", glm::vec3(200, 150, 300) }, + { "lookAt", glm::vec3(0, 0, 0) }, + { "up", glm::vec3(0, 1, 0) } + }; + + for (const auto &[name, vec] : cameraSettings) { + tinyxml2::XMLElement *element = doc.NewElement(name.c_str()); + element->SetAttribute("x", vec.x); + element->SetAttribute("y", vec.y); + element->SetAttribute("z", vec.z); camera->InsertEndChild(element); } From fcf66619adf661bcc165bd9e5e4e820135bd93a1 Mon Sep 17 00:00:00 2001 From: sara Date: Sat, 22 Mar 2025 18:59:36 +0000 Subject: [PATCH 13/14] Sorry p.2 --- src/generator/figures/SolarSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index 52bc2e99..ec22595a 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -56,7 +56,7 @@ void SolarSystem::configureCamera() { { "position", glm::vec3(200, 150, 300) }, { "lookAt", glm::vec3(0, 0, 0) }, { "up", glm::vec3(0, 1, 0) } - }; + }; for (const auto &[name, vec] : cameraSettings) { tinyxml2::XMLElement *element = doc.NewElement(name.c_str()); From dd3c58e4af07e0466ab3091f22b00f47c4237ecd Mon Sep 17 00:00:00 2001 From: sara Date: Sat, 22 Mar 2025 19:04:08 +0000 Subject: [PATCH 14/14] Sorry p.3 --- include/generator/figures/SolarSystem.hpp | 2 -- res/models/solarSystem.3d | 0 src/generator/figures/SolarSystem.cpp | 5 ----- 3 files changed, 7 deletions(-) create mode 100644 res/models/solarSystem.3d diff --git a/include/generator/figures/SolarSystem.hpp b/include/generator/figures/SolarSystem.hpp index bfd94f95..07add64b 100644 --- a/include/generator/figures/SolarSystem.hpp +++ b/include/generator/figures/SolarSystem.hpp @@ -72,8 +72,6 @@ class SolarSystem : public utils::WavefrontOBJ { float distanceFactor, float asteroidBeltDensity, float ringSizeFactor); - - void writeToFile(const std::string &filename); }; } diff --git a/res/models/solarSystem.3d b/res/models/solarSystem.3d new file mode 100644 index 00000000..e69de29b diff --git a/src/generator/figures/SolarSystem.cpp b/src/generator/figures/SolarSystem.cpp index ec22595a..a1df1b3a 100644 --- a/src/generator/figures/SolarSystem.cpp +++ b/src/generator/figures/SolarSystem.cpp @@ -435,9 +435,4 @@ void SolarSystem::addAsteroidBelt(tinyxml2::XMLElement *parent, } } -void SolarSystem::writeToFile(const std::string &filename) { - std::string filePath = "res/scenes/" + filename; - doc.SaveFile(filePath.c_str()); -} - }