From 6c641c4a94c20dfe1887e7026e6946031de96149 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Fri, 2 Oct 2026 19:54:27 +0200 Subject: [PATCH] feat(mod): P1 modules (AutoSprint, TotemCounter, EnchantGlint, ArmorColor, PlaceAnimation), CustomModels, KineticLyrics fix - AutoSprint, TotemCounter, EnchantGlint (styles, texture repaint, scroll speed/scale mixin), ArmorColor (durability colouring, targets, pulse), PlaceAnimation (block slides in from the hand; chunk-mesh hiding incl. Sodium, moving-block render), aligned with evo behaviour - CustomModels: Chicken, Rabbit and Verity (Blockbench) models for chosen players, bundled assets, render-state carrier + submit redirect - KineticLyrics: fix track key wiped by reset() (lyrics never applied, lrclib hammered every tick); new LyricsFinder with ranked lrclib search, unsynced timing estimate, NetEase fallback and retry on busy services; tests for the pure parts - fix mode()/modeSetting() misuse for new modules; TODO updated --- mod/TODO.md | 23 ++- .../module/modules/player/AutoSprint.java | 44 +++++ .../visuals/items/armor/ArmorColor.java | 79 ++++++++ .../visuals/items/armor/ArmorColorState.java | 8 + .../visuals/items/armor/ArmorTint.java | 67 +++++++ .../visuals/items/glint/EnchantGlint.java | 64 ++++++ .../visuals/items/glint/GlintTexture.java | 72 +++++++ .../visuals/items/glint/GlintTint.java | 43 ++++ .../modules/visuals/lyrics/LyricPlayback.java | 44 ++++- .../visuals/lyrics/lrc/LrcLibClient.java | 187 ------------------ .../visuals/lyrics/lrc/match/LyricMatch.java | 63 ++++++ .../lyrics/lrc/match/PlainLyricTimer.java | 39 ++++ .../visuals/lyrics/lrc/match/TrackQuery.java | 42 ++++ .../lyrics/lrc/source/LrcLibSource.java | 128 ++++++++++++ .../visuals/lyrics/lrc/source/LyricHttp.java | 67 +++++++ .../lyrics/lrc/source/LyricsFinder.java | 55 ++++++ .../lyrics/lrc/source/NeteaseSource.java | 85 ++++++++ .../visuals/models/CustomModelState.java | 12 ++ .../modules/visuals/models/CustomModels.java | 120 +++++++++++ .../visuals/models/mesh/ChickenMesh.java | 136 +++++++++++++ .../visuals/models/mesh/MeshVertices.java | 40 ++++ .../visuals/models/mesh/RabbitModel.java | 104 ++++++++++ .../visuals/models/mesh/VerityMesh.java | 49 +++++ .../models/mesh/blockbench/BbModelParser.java | 133 +++++++++++++ .../placeanimation/PlaceAnimation.java | 80 ++++++++ .../placeanimation/PlaceAnimations.java | 97 +++++++++ .../visuals/placeanimation/PlaceMotion.java | 75 +++++++ .../visuals/placeanimation/PlacedBlock.java | 150 ++++++++++++++ .../modules/visuals/totems/TotemCounter.java | 76 +++++++ .../lovisual/mixins/LoVisualMixinPlugin.java | 4 +- .../living/LivingEntityRendererMixin.java | 14 ++ .../entity/LivingEntityRenderStateMixin.java | 30 ++- .../render/glint/GlintTextureMixin.java | 28 +++ .../item/EquipmentLayerRendererMixin.java | 34 ++++ .../render/models/AvatarCustomModelMixin.java | 56 ++++++ .../models/LivingEntityCustomModelMixin.java | 39 ++++ .../render/placement/BlockItemPlaceMixin.java | 34 ++++ .../ModelBlockRendererPlaceMixin.java | 26 +++ .../placement/SectionCompilerPlaceMixin.java | 34 ++++ .../submit/BlockEntityPlaceMixin.java | 28 +++ .../submit/LevelRendererPlaceMixin.java | 26 +++ .../placement/SodiumPlaceCullMixin.java | 33 ++++ .../placement/SodiumPlaceHideMixin.java | 27 +++ .../resources/assets/lovisual/lang/en_us.json | 62 +++++- .../resources/assets/lovisual/lang/ru_ru.json | 62 +++++- .../lovisual/models/chicken/bruce_col.png | Bin 0 -> 11551 bytes .../lovisual/models/chicken/mesh_body_0.bin | Bin 0 -> 16708 bytes .../lovisual/models/chicken/mesh_body_1.bin | Bin 0 -> 4 bytes .../lovisual/models/chicken/mesh_head_0.bin | Bin 0 -> 62788 bytes .../lovisual/models/chicken/mesh_head_1.bin | Bin 0 -> 4 bytes .../models/chicken/mesh_left_arm_0.bin | Bin 0 -> 9604 bytes .../models/chicken/mesh_left_arm_1.bin | Bin 0 -> 4 bytes .../models/chicken/mesh_left_leg_0.bin | Bin 0 -> 4 bytes .../models/chicken/mesh_left_leg_1.bin | Bin 0 -> 48388 bytes .../models/chicken/mesh_right_arm_0.bin | Bin 0 -> 9604 bytes .../models/chicken/mesh_right_arm_1.bin | Bin 0 -> 4 bytes .../models/chicken/mesh_right_leg_0.bin | Bin 0 -> 4 bytes .../models/chicken/mesh_right_leg_1.bin | Bin 0 -> 48388 bytes .../lovisual/models/chicken/rudy_sc_1.png | Bin 0 -> 20009 bytes .../assets/lovisual/models/rabbit.png | Bin 0 -> 391 bytes .../lovisual/models/verity/verity.bbmodel | 1 + .../assets/lovisual/models/verity/verity.png | Bin 0 -> 7779 bytes .../lovisual/models/verity/veritybad.png | Bin 0 -> 8511 bytes .../models/verity/veritydisturbing.png | Bin 0 -> 7533 bytes .../models/verity/veritydisturbingtalk.png | Bin 0 -> 7567 bytes .../models/verity/veritydisturbingyell.png | Bin 0 -> 8209 bytes .../lovisual/models/verity/veritytalk.png | Bin 0 -> 7761 bytes .../lovisual/models/verity/verityverybad.png | Bin 0 -> 10367 bytes mod/src/main/resources/lovisual.mixins.json | 10 + .../module/modules/player/AutoSprintTest.java | 36 ++++ .../visuals/items/armor/ArmorTintTest.java | 60 ++++++ .../visuals/items/glint/GlintTintTest.java | 44 +++++ .../visuals/lyrics/LrcLibClientTest.java | 59 ------ .../lyrics/lrc/source/SourceParsingTest.java | 70 +++++++ .../visuals/lyrics/match/LyricMatchTest.java | 51 +++++ .../lyrics/match/PlainLyricTimerTest.java | 46 +++++ .../visuals/lyrics/match/TrackQueryTest.java | 37 ++++ .../lyrics/source/LyricSourcesTest.java | 32 +++ .../visuals/models/CustomModelsTest.java | 74 +++++++ .../placeanimation/PlaceMotionTest.java | 75 +++++++ .../visuals/totems/TotemCounterTest.java | 35 ++++ 81 files changed, 3090 insertions(+), 259 deletions(-) create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoSprint.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorColor.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorColorState.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorTint.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/EnchantGlint.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTexture.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTint.java delete mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcLibClient.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/LyricMatch.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/PlainLyricTimer.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/TrackQuery.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LrcLibSource.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LyricHttp.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LyricsFinder.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/NeteaseSource.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModelState.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModels.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/ChickenMesh.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/MeshVertices.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/RabbitModel.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/VerityMesh.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/blockbench/BbModelParser.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceAnimation.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceAnimations.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceMotion.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlacedBlock.java create mode 100644 mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/totems/TotemCounter.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/render/glint/GlintTextureMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/render/models/AvatarCustomModelMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/render/models/LivingEntityCustomModelMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/render/placement/BlockItemPlaceMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/render/placement/ModelBlockRendererPlaceMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/render/placement/SectionCompilerPlaceMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/render/placement/submit/BlockEntityPlaceMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/render/placement/submit/LevelRendererPlaceMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/sodium/placement/SodiumPlaceCullMixin.java create mode 100644 mod/src/main/java/dev/loki/lovisual/mixins/sodium/placement/SodiumPlaceHideMixin.java create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/bruce_col.png create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_body_0.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_body_1.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_head_0.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_head_1.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_arm_0.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_arm_1.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_leg_0.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_leg_1.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_arm_0.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_arm_1.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_leg_0.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_leg_1.bin create mode 100644 mod/src/main/resources/assets/lovisual/models/chicken/rudy_sc_1.png create mode 100644 mod/src/main/resources/assets/lovisual/models/rabbit.png create mode 100644 mod/src/main/resources/assets/lovisual/models/verity/verity.bbmodel create mode 100644 mod/src/main/resources/assets/lovisual/models/verity/verity.png create mode 100644 mod/src/main/resources/assets/lovisual/models/verity/veritybad.png create mode 100644 mod/src/main/resources/assets/lovisual/models/verity/veritydisturbing.png create mode 100644 mod/src/main/resources/assets/lovisual/models/verity/veritydisturbingtalk.png create mode 100644 mod/src/main/resources/assets/lovisual/models/verity/veritydisturbingyell.png create mode 100644 mod/src/main/resources/assets/lovisual/models/verity/veritytalk.png create mode 100644 mod/src/main/resources/assets/lovisual/models/verity/verityverybad.png create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoSprintTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorTintTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTintTest.java delete mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcLibClientTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/SourceParsingTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/LyricMatchTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/PlainLyricTimerTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/TrackQueryTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/source/LyricSourcesTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModelsTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceMotionTest.java create mode 100644 mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/totems/TotemCounterTest.java diff --git a/mod/TODO.md b/mod/TODO.md index 20f781e..3b75a62 100644 --- a/mod/TODO.md +++ b/mod/TODO.md @@ -58,8 +58,27 @@ Ресурсы (локально): `ref/evo/mod/jar/assets/evolution/cosmetic/wings/`, `.../textures/cosmetic/wings/`. - [ ] Knife (Melee Skins): 33 скина, клипы draw/inspect/melee_1..3/run, first/third person, звуки, шейдер holy (отчёт раздел 3.7, порядок работ из 8 шагов). Ресурсы: `ref/evo/mod/jar/assets/evolution/cosmetic/melee/`. -- [ ] Быстрые модули P1: AutoSprint (есть `SprintControlEvent`), TotemCounter, EnchantGlint, PlaceAnimation, GodRays - (референс `shaders/core/godrays`), ArmorColor. +- [x] Быстрые модули P1 (2026-10-02, сверены с `ref/evo/mod/jar-src-named/evovis/module/{misc,render}`, тесты зелёные, вживую не смотрели): + AutoSprint (`player/`, как у evo держит спринт; вход через `SprintControlEvent`, решает `SprintController.canStartSprinting`), + TotemCounter (`visuals/totems/`, свои тотемы справа от хотбара; счёт попов чужих у нас уже в `util/pvp/opponents/TotemPopSnapshot`, + без отдельной клавиши сброса как у evo), EnchantGlint (`visuals/items/glint/`: стили Rainbow/Solid/Gradient/Hidden, сила, скорость, + масштаб, «предметы/броня»; у evo свои RenderType и 11 стилей, у нас перерисовка ванильных текстур блеска `GlintTexture` + + `GlintTextureMixin`; нет Pulse/Fire/Galaxy/Hologram/Glitch/Sparkle/Aurora, Coverage), ArmorColor (`visuals/items/armor/`: цвет по + прочности Gradient/Steps, цели Players/Friends/Self/Mobs, Only Below, Low Pulse; миксин в `EquipmentLayerRendererMixin`, флаг цели + в `LivingEntityRenderState`), PlaceAnimation (`visuals/placeanimation/`: блок вылетает из руки, наклон/масштаб, как у evo: скрытие из + меша `SectionCompilerPlaceMixin` + Sodium `SodiumPlace*Mixin`, отрисовка движущимся блоком `LevelRendererPlaceMixin`, блок-сущности + `BlockEntityPlaceMixin`; формулы кривых и сторона руки восстановлены по идее evo, направление наклона и сдвига по вертикали подобраны + на глаз). + Проверить в игре: миксины брони/блеска/PlaceAnimation (при ошибке прислать лог), вид наклона и сдвига блока, перекраску блеска и её + возврат при выключении, Sodium (скрытый блок не оставляет дыр у соседей), TotemCounter при GUI Scale 2/3/4. +- [x] KineticLyrics починен (2026-10-02): `LyricPlayback.loadTrack` вызывал `reset()` после записи ключа трека, ключ стирался, загруженный + текст отбрасывался, а запрос уходил заново каждый тик (lrclib отвечал 503). Теперь `lrc/source/LyricsFinder`: lrclib (точный запрос с + длительностью, ранжированные поиски `lrc/match/LyricMatch`, обычный текст получает оценочные тайминги `PlainLyricTimer`), запасной + NetEase, повтор при занятом сервисе (до 6 раз). Нет из evo: YouTube Music и распознавание Whisper. Проверить вживую на Spotify. +- [x] CustomModels (2026-10-02, из `CustomModels-2026-10-02-120830.zip`): `visuals/models/` + `mesh/` (Chicken, Rabbit, Verity из .bbmodel), + ассеты в `assets/lovisual/models/`, миксины `render/models/`. Только у вас на экране, цели: себя/друзья/все. Нужна проверка вживую + (поза рук, рука от первого лица, Verity под Iris/Sodium). Исходный проект зарезан до этого модуля, остальные его части не нужны. +- [ ] GodRays (референс `shaders/core/godrays`). - [ ] Дальше P1-P2 — перенос модулей из evo поштучно (референс: `docs/EVO_REPORT.md` §1.2; лицензия evo проприетарная — их ассеты/код в репо не кладём, только идеи): - [ ] **Blizzard** (render, evo ~1290 LOC, M/L) — высотная метель: ветровые снежинки с горизонтальным diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoSprint.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoSprint.java new file mode 100644 index 0000000..324b553 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoSprint.java @@ -0,0 +1,44 @@ +package dev.loki.lovisual.features.module.modules.player; + +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.events.impl.input.SprintControlEvent; +import dev.loki.lovisual.events.meta.EventHandler; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.util.combat.rotation.SprintController; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; + +/** + * Holds the sprint key for you while you move. Only the input is pressed, so vanilla + * rules (hunger, sneaking, blindness) and the shared {@link SprintController} still decide. + */ +@ModuleInfo( + id = "autosprint", + displayName = "Auto Sprint", + aliases = {"autosprint", "sprint"}, + category = ModuleCategory.PLAYER +) +public class AutoSprint extends Module { + private final BooleanValue allDirections = bool("autoSprintAllDirections", "all_directions", false); + private final BooleanValue whileUsing = bool("autoSprintWhileUsing", "while_using", false); + + @EventHandler + private void onSprintControl(SprintControlEvent event) { + if (event.getSource() != SprintControlEvent.Source.INPUT || event.shouldSprint()) return; + LocalPlayer player = Minecraft.getInstance().player; + if (player == null) return; + if (!wantsSprint(event.getForward(), event.getSideways(), allDirections.get(), + player.isShiftKeyDown(), player.isUsingItem(), whileUsing.get())) return; + if (SprintController.INSTANCE.canStartSprinting(player)) event.setSprint(true); + } + + /** Pure decision: does the held-sprint input apply for this movement? */ + static boolean wantsSprint(float forward, float sideways, boolean allDirections, + boolean sneaking, boolean usingItem, boolean whileUsing) { + if (sneaking) return false; + if (usingItem && !whileUsing) return false; + return allDirections ? forward != 0.0f || sideways != 0.0f : forward > 0.0f; + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorColor.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorColor.java new file mode 100644 index 0000000..af33093 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorColor.java @@ -0,0 +1,79 @@ +package dev.loki.lovisual.features.module.modules.visuals.items.armor; + +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.relations.category.CategoryService; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.util.Util; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Colours worn armor by its remaining durability (full, warning, broken). Which entities qualify is + * decided once per frame at render-state extraction; the tint itself is applied in EquipmentLayerRendererMixin. + */ +@ModuleInfo( + id = "armorcolor", + displayName = "Armor Color", + aliases = {"armorcolor"}, + category = ModuleCategory.VISUALS +) +public class ArmorColor extends Module { + private static final String PLAYERS = "players"; + private static final String FRIENDS = "friends"; + private static final String SELF = "self"; + private static final String MOBS = "mobs"; + + private final BooleanMapValue targets = group("armorColorTargets", "targets", defaultTargets()); + private final ModeValue colorMode = + modeSetting("armorColorMode", "color_mode", ArmorTint.GRADIENT, ArmorTint.GRADIENT, ArmorTint.STEPS); + private final RGBColorValue fullColor = colorNoAlpha("armorColorFull", "full_color", "#4CD964"); + private final RGBColorValue warnColor = colorNoAlpha("armorColorWarn", "warn_color", "#FFC107"); + private final RGBColorValue brokenColor = colorNoAlpha("armorColorBroken", "broken_color", "#FF3B30"); + private final NumberValue strength = num("armorColorStrength", "strength", 1.0f, 0.1f, 1.0f); + private final NumberValue onlyBelow = num("armorColorOnlyBelow", "only_below", 100.0f, 5.0f, 100.0f); + private final BooleanValue pulse = bool("armorColorPulse", "pulse", true); + + private static Map defaultTargets() { + Map map = new LinkedHashMap<>(); + map.put(PLAYERS, true); + map.put(FRIENDS, true); + map.put(SELF, true); + map.put(MOBS, false); + return map; + } + + /** Whether this entity's armor should be coloured; evaluated at render-state extraction. */ + public boolean covers(LivingEntity entity) { + if (!isEnabled()) return false; + if (entity instanceof LocalPlayer) return targets.get(SELF); + if (entity instanceof Player player) { + return targets.get(CategoryService.isFriend(player) ? FRIENDS : PLAYERS); + } + return targets.get(MOBS); + } + + /** @return the tint for one armor piece, {@link ArmorTint#NO_TINT} to keep vanilla colour. */ + public int tintFor(ItemStack stack, Object renderState) { + if (!isEnabled() || stack == null || stack.isEmpty() || !stack.isDamageableItem()) return ArmorTint.NO_TINT; + if (!(renderState instanceof ArmorColorState state) || !state.lovisual$isArmorColored()) return ArmorTint.NO_TINT; + + float fraction = ArmorTint.fraction(stack.getDamageValue(), stack.getMaxDamage()); + if (fraction < 0.0f || fraction * 100.0f > onlyBelow.get()) return ArmorTint.NO_TINT; + + int rgb = ArmorTint.ramp(fraction, colorMode.get(), + fullColor.getArgb() & 0xFFFFFF, warnColor.getArgb() & 0xFFFFFF, brokenColor.getArgb() & 0xFFFFFF); + if (pulse.get() && fraction <= ArmorTint.CRITICAL_FRACTION) rgb = ArmorTint.pulse(rgb, Util.getMillis()); + return ArmorTint.tint(rgb, strength.get()); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorColorState.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorColorState.java new file mode 100644 index 0000000..98635ec --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorColorState.java @@ -0,0 +1,8 @@ +package dev.loki.lovisual.features.module.modules.visuals.items.armor; + +/** Implemented by LivingEntityRenderState: whether ArmorColor applies to this entity (decided at extraction). */ +public interface ArmorColorState { + boolean lovisual$isArmorColored(); + + void lovisual$setArmorColored(boolean colored); +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorTint.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorTint.java new file mode 100644 index 0000000..bb382a9 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/armor/ArmorTint.java @@ -0,0 +1,67 @@ +package dev.loki.lovisual.features.module.modules.visuals.items.armor; + +import net.minecraft.util.Mth; + +/** Pure maths for durability-based armor colouring (RGB/ARGB ints). */ +public final class ArmorTint { + public static final String GRADIENT = "Gradient"; + public static final String STEPS = "Steps"; + /** Returned when the armor must keep its own colour. */ + public static final int NO_TINT = 0; + + static final float WARN_FRACTION = 0.5f; + static final float CRITICAL_FRACTION = 0.25f; + private static final double PULSE_PERIOD_MS = 190.0; + private static final float PULSE_DEPTH = 0.4f; + private static final int WHITE = 0xFFFFFF; + + private ArmorTint() { + } + + /** Remaining durability 0..1, or -1 for an item without durability. */ + public static float fraction(int damage, int maxDamage) { + if (maxDamage <= 0) return -1.0f; + return Mth.clamp(1.0f - (float) damage / maxDamage, 0.0f, 1.0f); + } + + /** Full above half, warning down to a quarter, broken below; Gradient blends, Steps snaps. */ + public static int ramp(float fraction, String mode, int full, int warn, int broken) { + float f = Mth.clamp(fraction, 0.0f, 1.0f); + if (STEPS.equals(mode)) { + if (f > WARN_FRACTION) return full; + return f > CRITICAL_FRACTION ? warn : broken; + } + return f > WARN_FRACTION + ? lerpRgb(warn, full, (f - WARN_FRACTION) / WARN_FRACTION) + : lerpRgb(broken, warn, f / WARN_FRACTION); + } + + /** Darkens the colour rhythmically, used once the armor is nearly broken. */ + public static int pulse(int rgb, long millis) { + float wave = (float) ((Math.sin(millis / PULSE_PERIOD_MS) + 1.0) * 0.5); + float k = 1.0f - PULSE_DEPTH * wave; + return Math.round((rgb >> 16 & 0xFF) * k) << 16 | Math.round((rgb >> 8 & 0xFF) * k) << 8 | Math.round((rgb & 0xFF) * k); + } + + /** Final armor tint: white blended towards {@code rgb} by {@code strength}, opaque. */ + public static int tint(int rgb, float strength) { + return 0xFF000000 | lerpRgb(WHITE, rgb, strength); + } + + /** Multiplies the layer's own colour (dye) by the tint; {@link #NO_TINT} leaves it alone. */ + public static int apply(int layerColor, int tint) { + if (tint == NO_TINT) return layerColor; + int r = (layerColor >> 16 & 0xFF) * (tint >> 16 & 0xFF) / 255; + int g = (layerColor >> 8 & 0xFF) * (tint >> 8 & 0xFF) / 255; + int b = (layerColor & 0xFF) * (tint & 0xFF) / 255; + return (layerColor & 0xFF000000) | r << 16 | g << 8 | b; + } + + static int lerpRgb(int from, int to, float t) { + float k = Mth.clamp(t, 0.0f, 1.0f); + int r = Math.round(Mth.lerp(k, from >> 16 & 0xFF, to >> 16 & 0xFF)); + int g = Math.round(Mth.lerp(k, from >> 8 & 0xFF, to >> 8 & 0xFF)); + int b = Math.round(Mth.lerp(k, from & 0xFF, to & 0xFF)); + return r << 16 | g << 8 | b; + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/EnchantGlint.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/EnchantGlint.java new file mode 100644 index 0000000..241306c --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/EnchantGlint.java @@ -0,0 +1,64 @@ +package dev.loki.lovisual.features.module.modules.visuals.items.glint; + +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; + +/** + * Enchantment glint on items and armor: style (Rainbow, Solid, Gradient, Hidden), colours, strength, scroll + * speed and stripe scale. Speed and scale go through GlintTextureMixin, the look by repainting the textures. + */ +@ModuleInfo( + id = "enchantglint", + displayName = "Enchant Glint", + aliases = {"enchantglint", "glint"}, + category = ModuleCategory.VISUALS +) +public class EnchantGlint extends Module { + private final ModeValue style = modeSetting("enchantGlintStyle", "style", GlintTint.RAINBOW, + GlintTint.RAINBOW, GlintTint.SOLID, GlintTint.GRADIENT, GlintTint.HIDDEN); + private final RGBColorValue color = + visibleWhen(colorNoAlpha("enchantGlintColor", "color", "#FF4FD8"), this::usesPrimary); + private final RGBColorValue secondColor = + visibleWhen(colorNoAlpha("enchantGlintColor2", "color2", "#4F9BFF"), this::usesSecondary); + private final NumberValue strength = num("enchantGlintStrength", "strength", 1.5f, 0.2f, 3.0f); + private final NumberValue speed = num("enchantGlintSpeed", "speed", 1.0f, 0.1f, 4.0f); + private final NumberValue scale = num("enchantGlintScale", "scale", 1.0f, 0.2f, 4.0f); + private final BooleanValue items = bool("enchantGlintItems", "items", true); + private final BooleanValue armor = bool("enchantGlintArmor", "armor", true); + + private final GlintTexture texture = new GlintTexture(); + + private boolean usesPrimary() { + return GlintTint.SOLID.equals(style.get()) || GlintTint.GRADIENT.equals(style.get()); + } + + private boolean usesSecondary() { + return GlintTint.GRADIENT.equals(style.get()); + } + + @Override + public void onTick() { + GlintTexture.Paint paint = new GlintTexture.Paint(style.get(), + color.getArgb() & 0xFFFFFF, secondColor.getArgb() & 0xFFFFFF, strength.get()); + texture.sync(items.get() ? paint : null, armor.get() ? paint : null); + } + + @Override + public void onDisable() { + texture.sync(null, null); + texture.forget(); + } + + public float speedFactor() { + return isEnabled() ? speed.get() : 1.0f; + } + + public float scaleFactor() { + return isEnabled() ? scale.get() : 1.0f; + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTexture.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTexture.java new file mode 100644 index 0000000..9e62e85 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTexture.java @@ -0,0 +1,72 @@ +package dev.loki.lovisual.features.module.modules.visuals.items.glint; + +import com.mojang.blaze3d.platform.NativeImage; +import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.feature.ItemFeatureRenderer; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.client.renderer.texture.ReloadableTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.resources.Resource; + +import java.io.IOException; +import java.io.InputStream; +import java.util.IdentityHashMap; +import java.util.Map; +import java.util.Optional; + +/** + * Rewrites the two vanilla glint textures in place with a restyled copy of the pack's original image. + * Remembers which texture object it painted so a resource reload (which re-uploads the originals) is detected. + */ +final class GlintTexture { + /** What to paint onto a glint texture; a null paint means "leave it vanilla". */ + record Paint(String style, int primary, int secondary, float strength) { + } + + private final Map painted = new IdentityHashMap<>(); + + /** Applies {@code items} to the item/entity glint and {@code armor} to the armor glint. */ + void sync(Paint items, Paint armor) { + sync(ItemFeatureRenderer.ENCHANTED_GLINT_ITEM, items); + sync(ItemFeatureRenderer.ENCHANTED_GLINT_ARMOR, armor); + } + + void forget() { + painted.clear(); + } + + private void sync(Identifier id, Paint paint) { + Minecraft mc = Minecraft.getInstance(); + AbstractTexture texture = mc.getTextureManager().getTexture(id); + if (!(texture instanceof ReloadableTexture reloadable) || texture.getTexture() == null) return; + if (java.util.Objects.equals(painted.get(texture), paint)) return; + if (upload(mc, reloadable, paint)) { + if (paint == null) painted.remove(texture); + else painted.put(texture, paint); + } + } + + private static boolean upload(Minecraft mc, ReloadableTexture texture, Paint paint) { + Optional resource = mc.getResourceManager().getResource(texture.resourceId()); + if (resource.isEmpty()) return false; + try (InputStream in = resource.get().open(); NativeImage image = NativeImage.read(in)) { + if (paint != null) repaint(image, paint); + RenderSystem.getDevice().createCommandEncoder().writeToTexture(texture.getTexture(), image); + return true; + } catch (IOException e) { + return false; + } + } + + private static void repaint(NativeImage image, Paint paint) { + int width = image.getWidth(); + int height = image.getHeight(); + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + image.setPixel(x, y, GlintTint.pixel(image.getPixel(x, y), (x + 0.5f) / width, (y + 0.5f) / height, + paint.style(), paint.primary(), paint.secondary(), paint.strength())); + } + } + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTint.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTint.java new file mode 100644 index 0000000..01a644f --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTint.java @@ -0,0 +1,43 @@ +package dev.loki.lovisual.features.module.modules.visuals.items.glint; + +import net.minecraft.util.Mth; + +/** Pure pixel maths for repainting the enchantment glint texture (ARGB ints, u and v in 0..1). */ +public final class GlintTint { + public static final String SOLID = "Solid"; + public static final String GRADIENT = "Gradient"; + public static final String RAINBOW = "Rainbow"; + public static final String HIDDEN = "Hidden"; + + private static final float RAINBOW_SKEW = 0.25f; + private static final float GRADIENT_SKEW = 0.25f; + + private GlintTint() { + } + + /** Colours the glint streaks in a style; the pixel's strongest channel keeps the streak shape. */ + public static int pixel(int argb, float u, float v, String style, int primary, int secondary, float strength) { + if (HIDDEN.equals(style)) return argb & 0x00FFFFFF; + float level = Math.min(1.0f, (Math.max(argb >> 16 & 0xFF, Math.max(argb >> 8 & 0xFF, argb & 0xFF)) / 255.0f) * strength); + int color = switch (style) { + case RAINBOW -> Mth.hsvToRgb(frac(u * (1.0f - RAINBOW_SKEW) + v * RAINBOW_SKEW), 1.0f, 1.0f); + case GRADIENT -> lerp(primary, secondary, frac(u * (1.0f - GRADIENT_SKEW) + v * GRADIENT_SKEW)); + default -> primary; + }; + int r = Math.round((color >> 16 & 0xFF) * level); + int g = Math.round((color >> 8 & 0xFF) * level); + int b = Math.round((color & 0xFF) * level); + return (argb & 0xFF000000) | r << 16 | g << 8 | b; + } + + static int lerp(int from, int to, float t) { + int r = Math.round(Mth.lerp(t, from >> 16 & 0xFF, to >> 16 & 0xFF)); + int g = Math.round(Mth.lerp(t, from >> 8 & 0xFF, to >> 8 & 0xFF)); + int b = Math.round(Mth.lerp(t, from & 0xFF, to & 0xFF)); + return r << 16 | g << 8 | b; + } + + private static float frac(float x) { + return x - (float) Math.floor(x); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricPlayback.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricPlayback.java index 7f87cf9..4fc148d 100644 --- a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricPlayback.java +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricPlayback.java @@ -3,9 +3,9 @@ package dev.loki.lovisual.features.module.modules.visuals.lyrics; import java.util.ArrayList; import java.util.List; -import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LrcLibClient; import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLineSplitter; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source.LyricsFinder; import dev.loki.lovisual.features.module.modules.visuals.lyrics.mode.LyricModes; import dev.loki.lovisual.util.media.session.MediaSessionService; import net.minecraft.client.Minecraft; @@ -24,6 +24,9 @@ final class LyricPlayback { /** Регрессия больше этого — пауза/откат: строки после индекса уже не догнать, нужен resync. */ private static final long RESYNC_BACKWARD_MS = 750L; + private static final int MAX_RETRIES = 6; + private static final long RETRY_STEP_MS = 8_000L; + private final KineticLyrics owner; private final LyricStage stage; @@ -36,6 +39,9 @@ final class LyricPlayback { private String currentTrackArtist = ""; private long lastAudioTimeMs = -1L; private boolean isPlaying = false; + private boolean fetching = false; + private int retries = 0; + private long retryAtMs = 0L; LyricPlayback(KineticLyrics owner, LyricStage stage) { this.owner = owner; @@ -69,6 +75,9 @@ final class LyricPlayback { currentLyricIndex = 0; lastAudioTimeMs = -1L; isPlaying = false; + fetching = false; + retries = 0; + retryAtMs = 0L; } /** Poll the media session once: switch tracks, resync on seek/pause and spawn due lines. */ @@ -87,10 +96,15 @@ final class LyricPlayback { String key = (title + " - " + artist).toLowerCase(); if (!key.equalsIgnoreCase(lastTrackKey)) { - loadTrack(title, artist, key); + loadTrack(title, artist, key, snapshot.durationSeconds()); return; } + if (lyricsQueue.isEmpty() && !fetching && retryAtMs > 0L && System.currentTimeMillis() >= retryAtMs) { + retryAtMs = 0L; + requestLyrics(title, artist, key, snapshot.durationSeconds()); + } + if (!isPlaying && !lyricsQueue.isEmpty()) { isPlaying = true; } @@ -118,21 +132,30 @@ final class LyricPlayback { } } - private void loadTrack(String title, String artist, String key) { + private void loadTrack(String title, String artist, String key, long durationSeconds) { + // reset() forgets the track key, so it has to run before the new track is recorded + reset(); this.currentTrackTitle = title; this.currentTrackArtist = artist; this.lastTrackKey = key; + requestLyrics(title, artist, key, durationSeconds); + } - reset(); - - LrcLibClient.fetchLyricsAsync(title, artist, owner.debugMode.get()).thenAccept(lines -> + private void requestLyrics(String title, String artist, String key, long durationSeconds) { + fetching = true; + LyricsFinder.findAsync(title, artist, durationSeconds, owner.debugMode.get()).thenAccept(result -> Minecraft.getInstance().execute(() -> { if (!this.lastTrackKey.equalsIgnoreCase(key)) return; + fetching = false; + if (result.lines().isEmpty()) { + scheduleRetry(result.retryLater()); + return; + } stage.clear(); rawLyrics.clear(); lyricsQueue.clear(); - rawLyrics.addAll(lines); + rawLyrics.addAll(result.lines()); rebuildLyricsQueue(); currentLyricIndex = 0; isPlaying = !lyricsQueue.isEmpty(); @@ -140,6 +163,13 @@ final class LyricPlayback { ); } + /** A busy service is asked again after a growing pause, a few times; a song nobody has is left alone. */ + private void scheduleRetry(boolean retryLater) { + if (!retryLater || retries >= MAX_RETRIES) return; + retries++; + retryAtMs = System.currentTimeMillis() + RETRY_STEP_MS * retries; + } + private void rebuildLyricsQueue() { lyricsQueue.clear(); if (owner.splitMode.get() == LyricModes.SplitMode.SMART_SPLIT) { diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcLibClient.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcLibClient.java deleted file mode 100644 index 8ec687c..0000000 --- a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcLibClient.java +++ /dev/null @@ -1,187 +0,0 @@ -package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import dev.loki.lovisual.util.logging.DebugLog; -import dev.loki.lovisual.features.module.modules.visuals.lyrics.KineticLyrics; - -import java.net.URI; -import java.net.URLEncoder; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; -import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LrcParser; -import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; - -/** - * Fetches synced lyrics from lrclib.net (no API key required). - */ -public final class LrcLibClient { - private static final String API_GET = "https://lrclib.net/api/get"; - private static final String API_SEARCH = "https://lrclib.net/api/search"; - - private static final String USER_AGENT = "LoVisual/1.0"; - - private static final Map> LYRICS_CACHE = new ConcurrentHashMap<>(); - - private static final HttpClient HTTP_CLIENT = HttpClient.newBuilder() - .connectTimeout(Duration.ofSeconds(12)) - .followRedirects(HttpClient.Redirect.NORMAL) - .build(); - - private LrcLibClient() { - } - - public static CompletableFuture> fetchLyricsAsync(String trackName, String artistName, boolean debugMode) { - if (trackName == null || trackName.isBlank()) { - return CompletableFuture.completedFuture(Collections.emptyList()); - } - - String cacheKey = (trackName.trim() + " - " + (artistName != null ? artistName.trim() : "")).toLowerCase(); - List cached = LYRICS_CACHE.get(cacheKey); - if (cached != null) { - if (debugMode) { - DebugLog.info("[KineticLyrics] Cache hit: %s (%d lines)", cacheKey, cached.size()); - } - return CompletableFuture.completedFuture(cached); - } - - return CompletableFuture.supplyAsync(() -> { - List lines = tryFetchGet(trackName, artistName, debugMode); - if (!lines.isEmpty()) { - LYRICS_CACHE.put(cacheKey, lines); - return lines; - } - - lines = tryFetchSearch(trackName, artistName, debugMode); - if (!lines.isEmpty()) { - LYRICS_CACHE.put(cacheKey, lines); - return lines; - } - - return Collections.emptyList(); - }); - } - - private static List tryFetchGet(String trackName, String artistName, boolean debugMode) { - String cleanTrack = cleanTrackName(trackName); - String cleanArtist = artistName != null ? cleanTrackName(artistName) : ""; - - String query = String.format("?track_name=%s&artist_name=%s", - URLEncoder.encode(cleanTrack, StandardCharsets.UTF_8), - URLEncoder.encode(cleanArtist, StandardCharsets.UTF_8)); - - return executeRequest(API_GET + query, debugMode); - } - - private static List tryFetchSearch(String trackName, String artistName, boolean debugMode) { - String cleanTrack = cleanTrackName(trackName); - String cleanArtist = artistName != null ? cleanTrackName(artistName) : ""; - String searchQuery = (cleanTrack + " " + cleanArtist).trim(); - - String query = "?q=" + URLEncoder.encode(searchQuery, StandardCharsets.UTF_8); - - try { - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(API_SEARCH + query)) - .header("User-Agent", USER_AGENT) - .timeout(Duration.ofSeconds(14)) - .GET() - .build(); - - HttpResponse response = HTTP_CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); - if (response.statusCode() == 200) { - JsonArray array = JsonParser.parseString(response.body()).getAsJsonArray(); - for (JsonElement elem : array) { - if (elem.isJsonObject()) { - JsonObject obj = elem.getAsJsonObject(); - if (obj.has("syncedLyrics") && !obj.get("syncedLyrics").isJsonNull()) { - String syncedLrc = obj.get("syncedLyrics").getAsString(); - List parsed = LrcParser.parse(syncedLrc); - if (!parsed.isEmpty()) { - if (debugMode) { - DebugLog.info("[KineticLyrics] Found lyrics via search fallback"); - } - return parsed; - } - } - } - } - } else if (response.statusCode() == 404) { - if (debugMode) { - DebugLog.info("[KineticLyrics] Search: track not found (404)"); - } - } - } catch (Exception e) { - if (debugMode) { - DebugLog.error("[KineticLyrics] Search fallback failed", e); - } - } - return Collections.emptyList(); - } - - private static List executeRequest(String url, boolean debugMode) { - for (int attempt = 1; attempt <= 2; attempt++) { - try { - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(url)) - .header("User-Agent", USER_AGENT) - .timeout(Duration.ofSeconds(14)) - .GET() - .build(); - - HttpResponse response = HTTP_CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); - - if (response.statusCode() == 200) { - JsonObject json = JsonParser.parseString(response.body()).getAsJsonObject(); - if (json.has("syncedLyrics") && !json.get("syncedLyrics").isJsonNull()) { - String syncedLrc = json.get("syncedLyrics").getAsString(); - return LrcParser.parse(syncedLrc); - } - if (debugMode) { - DebugLog.info("[KineticLyrics] No syncedLyrics in response"); - } - return Collections.emptyList(); - } else if (response.statusCode() == 404) { - if (debugMode) { - DebugLog.info("[KineticLyrics] Track not found (404)"); - } - return Collections.emptyList(); - } else { - if (debugMode) { - DebugLog.info("[KineticLyrics] Attempt %d returned %d", attempt, response.statusCode()); - } - } - } catch (Exception e) { - if (debugMode) { - DebugLog.error("[KineticLyrics] Attempt " + attempt + " failed", e); - } - if (attempt < 2) { - try { - Thread.sleep(400); - } catch (InterruptedException ignored) { - Thread.currentThread().interrupt(); - } - } - } - } - return Collections.emptyList(); - } - - public static String cleanTrackName(String trackName) { - if (trackName == null) return ""; - return trackName - .replaceAll("\\(.*?\\)", "") - .replaceAll("\\[.*?\\]", "") - .trim(); - } -} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/LyricMatch.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/LyricMatch.java new file mode 100644 index 0000000..d34ca25 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/LyricMatch.java @@ -0,0 +1,63 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Locale; +import java.util.Set; + +/** Pure scoring of a search hit against the track that is playing (0 = unrelated, 1 = certain). */ +public final class LyricMatch { + /** Lowest score still trusted as "the same song". */ + public static final double ACCEPT = 0.6; + /** A hit this good ends the search early. */ + public static final double CERTAIN = 0.92; + + private static final double TITLE_FLOOR = 0.5; + private static final long CLOSE_SECONDS = 2; + private static final long FAR_SECONDS = 15; + + private LyricMatch() { + } + + public static double score(String hitTitle, String hitArtist, long hitDurationSeconds, TrackQuery query) { + double title = similarity(hitTitle, query.cleanTitle()); + if (title < TITLE_FLOOR) return 0.0; + double artist = artistScore(hitArtist, query); + double duration = durationScore(hitDurationSeconds, query.durationSeconds()); + return 0.55 * title + 0.30 * artist + 0.15 * duration; + } + + /** Token similarity: 1 for equal text, high when one contains the other, Jaccard otherwise. */ + public static double similarity(String a, String b) { + Set left = tokens(a); + Set right = tokens(b); + if (left.isEmpty() || right.isEmpty()) return 0.0; + if (left.equals(right)) return 1.0; + if (left.containsAll(right) || right.containsAll(left)) return 0.85; + Set common = new HashSet<>(left); + common.retainAll(right); + Set all = new HashSet<>(left); + all.addAll(right); + return (double) common.size() / all.size(); + } + + public static double artistScore(String hitArtist, TrackQuery query) { + if (query.artist().isEmpty()) return 0.5; + return Math.max(similarity(hitArtist, query.cleanArtist()), similarity(hitArtist, query.primaryArtist())); + } + + public static double durationScore(long hitSeconds, long wantedSeconds) { + if (hitSeconds <= 0 || wantedSeconds <= 0) return 0.5; + long diff = Math.abs(hitSeconds - wantedSeconds); + if (diff <= CLOSE_SECONDS) return 1.0; + if (diff >= FAR_SECONDS) return 0.0; + return 1.0 - (double) (diff - CLOSE_SECONDS) / (FAR_SECONDS - CLOSE_SECONDS); + } + + private static Set tokens(String text) { + if (text == null) return Set.of(); + String flat = text.toLowerCase(Locale.ROOT).replaceAll("[^\\p{L}\\p{N}]+", " ").trim(); + if (flat.isEmpty()) return Set.of(); + return new HashSet<>(Arrays.asList(flat.split(" "))); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/PlainLyricTimer.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/PlainLyricTimer.java new file mode 100644 index 0000000..ed002bf --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/PlainLyricTimer.java @@ -0,0 +1,39 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match; + +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; + +import java.util.ArrayList; +import java.util.List; + +/** Gives unsynced lyrics a plausible timeline by spreading the lines over the song, weighted by length. */ +public final class PlainLyricTimer { + private static final double INTRO = 0.06; + private static final double OUTRO = 0.94; + private static final int MIN_WEIGHT = 8; + + private PlainLyricTimer() { + } + + public static List estimate(String plain, long durationSeconds) { + List out = new ArrayList<>(); + if (plain == null || durationSeconds <= 0) return out; + + List lines = new ArrayList<>(); + for (String raw : plain.split("\\r?\\n")) { + String line = raw.trim(); + if (!line.isEmpty() && !line.matches("\\[[^\\]]*]")) lines.add(line); + } + if (lines.isEmpty()) return out; + + double total = 0; + for (String line : lines) total += Math.max(MIN_WEIGHT, line.length()); + double startMs = durationSeconds * 1000.0 * INTRO; + double span = durationSeconds * 1000.0 * (OUTRO - INTRO); + double cursor = 0; + for (String line : lines) { + out.add(new LyricLine(Math.round(startMs + span * cursor / total), line)); + cursor += Math.max(MIN_WEIGHT, line.length()); + } + return out; + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/TrackQuery.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/TrackQuery.java new file mode 100644 index 0000000..0e1a3b9 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/match/TrackQuery.java @@ -0,0 +1,42 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match; + +import java.util.regex.Pattern; + +/** The track being looked up: raw player metadata plus the cleaned forms the lyric services want. */ +public record TrackQuery(String title, String artist, long durationSeconds) { + private static final Pattern BRACKETS = Pattern.compile("\\(.*?\\)|\\[.*?]"); + private static final Pattern ARTIST_SPLIT = + Pattern.compile("\\s*(?:,|;|&|\\bfeat\\.?\\b|\\bft\\.?\\b|\\bwith\\b|\\bx\\b| / )\\s*", Pattern.CASE_INSENSITIVE); + + public TrackQuery { + title = title == null ? "" : title.trim(); + artist = artist == null ? "" : artist.trim(); + } + + /** Title without "(feat. X)", "[Remix]" and similar decoration. */ + public static String clean(String text) { + if (text == null) return ""; + return BRACKETS.matcher(text).replaceAll("").trim(); + } + + public String cleanTitle() { + String cleaned = clean(title); + return cleaned.isEmpty() ? title : cleaned; + } + + public String cleanArtist() { + return clean(artist); + } + + /** First credited artist ("A, B & C" gives "A"). */ + public String primaryArtist() { + String cleaned = cleanArtist(); + String[] parts = ARTIST_SPLIT.split(cleaned, 2); + return parts.length == 0 ? cleaned : parts[0].trim(); + } + + /** Free-text query for services that search by one string. */ + public String searchText() { + return (cleanTitle() + " " + cleanArtist()).trim(); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LrcLibSource.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LrcLibSource.java new file mode 100644 index 0000000..3268b2a --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LrcLibSource.java @@ -0,0 +1,128 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LrcParser; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.LyricMatch; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.PlainLyricTimer; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.TrackQuery; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +import static dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source.LyricHttp.encode; + +/** lrclib.net: exact lookup by duration first, then several searches ranked by how well they match. */ +final class LrcLibSource { + private static final String API = "https://lrclib.net/api/"; + private static final double SYNCED_BONUS = 0.08; + + private LrcLibSource() { + } + + static List find(TrackQuery query, LyricHttp http) { + String title = query.cleanTitle(); + if (!query.artist().isEmpty() && query.durationSeconds() > 0) { + String body = http.get(API + "get?artist_name=" + encode(query.cleanArtist()) + + "&track_name=" + encode(title) + "&duration=" + query.durationSeconds()); + JsonObject exact = body == null ? null : object(body); + if (exact != null) { + List synced = timed(exact); + if (!synced.isEmpty()) return synced; + } + } + + JsonObject best = null; + double bestScore = 0.0; + for (String url : searchUrls(query)) { + String body = http.get(url); + JsonArray hits = body == null ? null : array(body); + if (hits == null) continue; + for (JsonElement element : hits) { + if (!element.isJsonObject()) continue; + JsonObject hit = element.getAsJsonObject(); + double score = scoreOf(hit, query); + if (score > bestScore) { + best = hit; + bestScore = score; + } + } + if (bestScore >= LyricMatch.CERTAIN) break; + } + if (best == null || bestScore < LyricMatch.ACCEPT) return List.of(); + return lines(best, query); + } + + static Set searchUrls(TrackQuery query) { + String title = encode(query.cleanTitle()); + Set urls = new LinkedHashSet<>(); + if (!query.artist().isEmpty()) { + urls.add(API + "search?track_name=" + title + "&artist_name=" + encode(query.cleanArtist())); + urls.add(API + "search?track_name=" + title + "&artist_name=" + encode(query.primaryArtist())); + } + urls.add(API + "search?q=" + encode(query.searchText())); + urls.add(API + "search?track_name=" + title); + return urls; + } + + /** Hit score; instrumentals and hits without any lyrics score zero, synced ones get a small bonus. */ + static double scoreOf(JsonObject hit, TrackQuery query) { + if (flag(hit, "instrumental")) return 0.0; + boolean synced = text(hit, "syncedLyrics") != null; + if (!synced && text(hit, "plainLyrics") == null) return 0.0; + double base = LyricMatch.score(text(hit, "trackName"), text(hit, "artistName"), + Math.round(number(hit, "duration")), query); + return base > 0.0 ? base + (synced ? SYNCED_BONUS : 0.0) : 0.0; + } + + private static List lines(JsonObject hit, TrackQuery query) { + List synced = timed(hit); + if (!synced.isEmpty()) return synced; + long duration = Math.round(number(hit, "duration")); + return PlainLyricTimer.estimate(text(hit, "plainLyrics"), duration > 0 ? duration : query.durationSeconds()); + } + + private static List timed(JsonObject hit) { + String synced = text(hit, "syncedLyrics"); + return synced == null ? List.of() : LrcParser.parse(synced); + } + + private static JsonObject object(String body) { + try { + JsonElement parsed = JsonParser.parseString(body); + return parsed.isJsonObject() ? parsed.getAsJsonObject() : null; + } catch (RuntimeException e) { + return null; + } + } + + private static JsonArray array(String body) { + try { + JsonElement parsed = JsonParser.parseString(body); + return parsed.isJsonArray() ? parsed.getAsJsonArray() : null; + } catch (RuntimeException e) { + return null; + } + } + + private static String text(JsonObject object, String key) { + JsonElement element = object.get(key); + if (element == null || !element.isJsonPrimitive()) return null; + String value = element.getAsString(); + return value.isBlank() ? null : value; + } + + private static double number(JsonObject object, String key) { + JsonElement element = object.get(key); + return element != null && element.isJsonPrimitive() && element.getAsJsonPrimitive().isNumber() ? element.getAsDouble() : 0.0; + } + + private static boolean flag(JsonObject object, String key) { + JsonElement element = object.get(key); + return element != null && element.isJsonPrimitive() && element.getAsJsonPrimitive().isBoolean() && element.getAsBoolean(); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LyricHttp.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LyricHttp.java new file mode 100644 index 0000000..3089851 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LyricHttp.java @@ -0,0 +1,67 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source; + +import java.io.IOException; +import java.net.URI; +import java.net.URLEncoder; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.nio.charset.StandardCharsets; +import java.time.Duration; + +/** + * One lookup's HTTP session. A 404 is a plain "not found"; a 429, 5xx or network error is remembered as + * transient so the caller can tell "nothing exists" from "the service was busy, try again later". + */ +final class LyricHttp { + private static final HttpClient CLIENT = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(10)) + .followRedirects(HttpClient.Redirect.NORMAL) + .build(); + private static final String AGENT = "Mozilla/5.0 (X11; Linux x86_64) LoVisual/1.0"; + private static final int ATTEMPTS = 2; + + private boolean transientFailure; + + static String encode(String value) { + return URLEncoder.encode(value, StandardCharsets.UTF_8); + } + + boolean sawTransientFailure() { + return transientFailure; + } + + /** @return the response body, or null when there is none (missing or failed). */ + String get(String url) { + for (int attempt = 1; attempt <= ATTEMPTS; attempt++) { + try { + HttpRequest request = HttpRequest.newBuilder(URI.create(url)) + .header("User-Agent", AGENT) + .timeout(Duration.ofSeconds(12)) + .GET() + .build(); + HttpResponse response = CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); + int status = response.statusCode(); + if (status == 200) return response.body(); + if (status == 404) return null; + if (status != 429 && status < 500) return null; + } catch (IOException e) { + // network trouble is worth retrying + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + return null; + } + if (attempt < ATTEMPTS) pause(); + } + transientFailure = true; + return null; + } + + private static void pause() { + try { + Thread.sleep(350); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LyricsFinder.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LyricsFinder.java new file mode 100644 index 0000000..f66ac68 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/LyricsFinder.java @@ -0,0 +1,55 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source; + +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.TrackQuery; +import dev.loki.lovisual.util.logging.DebugLog; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Finds timed lyrics for a track: lrclib first (exact lookup, then ranked searches, unsynced text gets an + * estimated timeline), NetEase as the fallback. Only successes are cached; a result that failed because a + * service was busy says so, so the caller retries instead of giving up on the song. + */ +public final class LyricsFinder { + /** @param retryLater no lyrics were found, but a service was busy or unreachable, so asking again may help */ + public record Result(List lines, boolean retryLater) { + static final Result NOTHING = new Result(List.of(), false); + } + + private static final Map> CACHE = new ConcurrentHashMap<>(); + + private LyricsFinder() { + } + + public static CompletableFuture findAsync(String title, String artist, long durationSeconds, boolean debug) { + TrackQuery query = new TrackQuery(title, artist, durationSeconds); + if (query.title().isEmpty()) return CompletableFuture.completedFuture(Result.NOTHING); + + String key = (query.title() + " - " + query.artist()).toLowerCase(); + List cached = CACHE.get(key); + if (cached != null) return CompletableFuture.completedFuture(new Result(cached, false)); + + return CompletableFuture.supplyAsync(() -> { + LyricHttp http = new LyricHttp(); + List lines = LrcLibSource.find(query, http); + String source = "lrclib"; + if (lines.isEmpty()) { + lines = NeteaseSource.find(query, http); + source = "netease"; + } + if (debug) { + DebugLog.info("[KineticLyrics] %s: %d lines via %s%s", key, lines.size(), source, + http.sawTransientFailure() ? " (a service was busy)" : ""); + } + if (!lines.isEmpty()) { + CACHE.put(key, lines); + return new Result(lines, false); + } + return new Result(List.of(), http.sawTransientFailure()); + }); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/NeteaseSource.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/NeteaseSource.java new file mode 100644 index 0000000..f0a4fcf --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/NeteaseSource.java @@ -0,0 +1,85 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LrcParser; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.LyricMatch; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.TrackQuery; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +import static dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source.LyricHttp.encode; + +/** NetEase Cloud Music: the fallback for songs lrclib does not have (it covers a lot of non-Western music). */ +final class NeteaseSource { + private static final String SEARCH = "https://music.163.com/api/cloudsearch/pc?type=1&limit=10&offset=0&s="; + private static final String LYRIC = "https://music.163.com/api/song/lyric?os=pc&lv=-1&kv=-1&tv=-1&id="; + private static final Pattern CREDIT = Pattern.compile("^[^::]{1,24}\\s*[::]\\s*.{0,60}$"); + private static final long CREDIT_WINDOW_MS = 2000; + + private NeteaseSource() { + } + + static List find(TrackQuery query, LyricHttp http) { + String body = http.get(SEARCH + encode(query.searchText())); + long id = body == null ? 0 : bestSongId(body, query); + if (id == 0) return List.of(); + String lyricBody = http.get(LYRIC + id); + return lyricBody == null ? List.of() : stripCredits(LrcParser.parse(lyric(lyricBody))); + } + + /** Id of the best matching song in a cloudsearch response, or 0 when nothing is close enough. */ + static long bestSongId(String json, TrackQuery query) { + try { + JsonElement songs = JsonParser.parseString(json).getAsJsonObject().getAsJsonObject("result").get("songs"); + if (songs == null || !songs.isJsonArray()) return 0; + long bestId = 0; + double bestScore = 0.0; + for (JsonElement element : songs.getAsJsonArray()) { + JsonObject song = element.getAsJsonObject(); + double score = LyricMatch.score(song.get("name").getAsString(), artists(song.getAsJsonArray("ar")), + song.has("dt") ? Math.round(song.get("dt").getAsLong() / 1000.0) : 0, query); + if (score > bestScore) { + bestScore = score; + bestId = song.get("id").getAsLong(); + } + } + return bestScore >= LyricMatch.ACCEPT ? bestId : 0; + } catch (RuntimeException e) { + return 0; + } + } + + /** Drops the "Lyrics by / Composer :" lines NetEase puts at the very start of a song. */ + static List stripCredits(List lines) { + List out = new ArrayList<>(lines); + while (!out.isEmpty() && out.get(0).timestampMs() <= CREDIT_WINDOW_MS && CREDIT.matcher(out.get(0).text()).matches()) { + out.remove(0); + } + return out; + } + + private static String lyric(String json) { + try { + JsonObject lrc = JsonParser.parseString(json).getAsJsonObject().getAsJsonObject("lrc"); + return lrc == null || !lrc.has("lyric") ? "" : lrc.get("lyric").getAsString(); + } catch (RuntimeException e) { + return ""; + } + } + + private static String artists(JsonArray array) { + if (array == null) return ""; + StringBuilder out = new StringBuilder(); + for (JsonElement element : array) { + JsonElement name = element.getAsJsonObject().get("name"); + if (name != null && !name.isJsonNull()) out.append(name.getAsString()).append(' '); + } + return out.toString().trim(); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModelState.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModelState.java new file mode 100644 index 0000000..cffbf10 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModelState.java @@ -0,0 +1,12 @@ +package dev.loki.lovisual.features.module.modules.visuals.models; + +/** + * Implemented by LivingEntityRenderState. The model a player is drawn with is chosen once per frame, while the + * entity is still at hand, and carried here to the moment the model is submitted. + */ +public interface CustomModelState { + /** The chosen model name, or null when this player is drawn as a player. */ + String lovisual$customModel(); + + void lovisual$setCustomModel(String model); +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModels.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModels.java new file mode 100644 index 0000000..e1d32c0 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModels.java @@ -0,0 +1,120 @@ +package dev.loki.lovisual.features.module.modules.visuals.models; + +import com.mojang.blaze3d.vertex.PoseStack; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.modules.visuals.models.mesh.ChickenMesh; +import dev.loki.lovisual.features.module.modules.visuals.models.mesh.RabbitModel; +import dev.loki.lovisual.features.module.modules.visuals.models.mesh.VerityMesh; +import dev.loki.lovisual.features.relations.category.CategoryService; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.Avatar; +import net.minecraft.world.entity.player.Player; + +import java.util.HashMap; +import java.util.Map; + +/** + * Draws chosen players with a model of their own instead of their skin. Only this client sees it: nothing about + * the players changes and nothing is sent anywhere. The choice is made per player at render-state extraction + * (AvatarCustomModelMixin) and the replacement happens where the model is submitted (LivingEntityCustomModelMixin). + */ +@ModuleInfo( + id = "custommodels", + displayName = "Custom Models", + aliases = {"custommodels", "models"}, + category = ModuleCategory.VISUALS +) +public class CustomModels extends Module { + public static final String CHICKEN = "Chicken"; + public static final String VERITY = "Verity"; + public static final String RABBIT = "Rabbit"; + + private static final String[] FACES = {"Normal", "Talking", "Disturbing", "Disturbing talking", + "Disturbing yelling", "Bad", "Very bad"}; + private static final String[] FACE_FILES = {"verity", "veritytalk", "veritydisturbing", "veritydisturbingtalk", + "veritydisturbingyell", "veritybad", "verityverybad"}; + private static final int MAX_RABBITS = 128; + + private final ModeValue model = modeSetting("customModelsModel", "model", CHICKEN, CHICKEN, VERITY, RABBIT); + private final BooleanValue self = bool("customModelsSelf", "self", true); + private final BooleanValue friends = bool("customModelsFriends", "friends", false); + private final BooleanValue others = bool("customModelsOthers", "others", false); + private final BooleanValue hand = visibleWhen(bool("customModelsHand", "hand", true), + () -> CHICKEN.equals(model.get()) && self.get()); + private final NumberValue size = visibleWhen(num("customModelsSize", "size", 1.0f, 0.3f, 3.0f), + () -> VERITY.equals(model.get())); + private final ModeValue face = visibleWhen(modeSetting("customModelsFace", "face", FACES[0], FACES), + () -> VERITY.equals(model.get())); + + private final ChickenMesh chicken = new ChickenMesh(); + private final VerityMesh verity = new VerityMesh(); + private final Map rabbits = new HashMap<>(); + + @Override + public void onDisable() { + rabbits.clear(); + } + + /** The model this player is to be drawn with, or null to leave them as they are. */ + public String modelFor(Avatar avatar) { + Minecraft mc = Minecraft.getInstance(); + if (!isEnabled() || avatar == null || mc.player == null) return null; + boolean wanted; + if (avatar.getUUID().equals(mc.player.getUUID())) { + wanted = self.get(); + } else if (avatar instanceof Player player && CategoryService.isFriend(player)) { + wanted = friends.get(); + } else { + wanted = others.get(); + } + return wanted ? model.get() : null; + } + + /** Whether the hand the player looks at is drawn as the model's arm rather than their own. */ + public boolean handFromModel() { + return isEnabled() && CHICKEN.equals(model.get()) && self.get() && hand.get(); + } + + public void submitHand(PoseStack pose, SubmitNodeCollector collector, int light, boolean right) { + chicken.submitArm(pose, collector, light, right); + } + + /** Draws {@code custom} in place of the player model; false when the name is not one of ours. */ + public boolean submit(String custom, Model vanilla, AvatarRenderState state, PoseStack pose, + SubmitNodeCollector collector, int light, int overlay, int color, int outlineColor) { + if (RABBIT.equals(custom) && vanilla instanceof PlayerModel player) { + if (rabbits.size() > MAX_RABBITS) rabbits.clear(); + rabbits.computeIfAbsent(state.id, id -> new RabbitModel()) + .submit(player, state, pose, collector, light, overlay, color, outlineColor); + } else if (VERITY.equals(custom)) { + verity.submit(pose, collector, light, overlay, verityTexture(), size.get()); + } else if (CHICKEN.equals(custom)) { + chicken.submit(state, pose, collector, light, overlay); + } else { + return false; + } + return true; + } + + /** The face texture chosen for Verity. */ + Identifier verityTexture() { + return Identifier.fromNamespaceAndPath("lovisual", "models/verity/" + faceFile(face.get()) + ".png"); + } + + static String faceFile(String faceName) { + for (int i = 0; i < FACES.length; i++) { + if (FACES[i].equals(faceName)) return FACE_FILES[i]; + } + return FACE_FILES[0]; + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/ChickenMesh.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/ChickenMesh.java new file mode 100644 index 0000000..c504074 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/ChickenMesh.java @@ -0,0 +1,136 @@ +package dev.loki.lovisual.features.module.modules.visuals.models.mesh; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.Identifier; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * The chicken: textured geometry split into movable parts, drawn in place of the player model. Parts are + * stored as triangle lists, one file per part and material, read on first use. Limbs swing with the walk, the + * hitting arm swings out with the attack, and held items ride the paws. + */ +public final class ChickenMesh { + private static final String[] PARTS = {"body", "head", "right_arm", "left_arm", "right_leg", "left_leg"}; + private static final int RIGHT_ARM = 2; + private static final int LEFT_ARM = 3; + private static final Identifier[] TEXTURES = { + Identifier.fromNamespaceAndPath("lovisual", "models/chicken/rudy_sc_1.png"), + Identifier.fromNamespaceAndPath("lovisual", "models/chicken/bruce_col.png") + }; + /** Rotation pivots of each part, measured from the converted mesh, in the model's own space. */ + private static final float[][] PIVOTS = { + {0, 0, 0}, {0, 0.55f, 0}, {-0.52f, 0.55f, 0}, {0.52f, 0.55f, 0}, {-0.18f, 1.12f, 0}, {0.18f, 1.12f, 0} + }; + private static final int MAX_VERTICES = 1_000_000; + + private float[][][] geometry; + + public void submit(AvatarRenderState state, PoseStack pose, SubmitNodeCollector collector, int light, int overlay) { + float[][][] data = geometry(); + float stride = Math.min(state.walkAnimationSpeed, 1.0f); + float swing = (float) Math.cos(state.walkAnimationPos * 0.6662f) * 1.2f * stride; + float rightArm = -swing; + float leftArm = swing; + if (state.attackTime > 0) { + float hit = (float) Math.sin(Math.sqrt(state.attackTime) * Math.PI) * 1.3f; + if (state.attackArm == HumanoidArm.RIGHT) rightArm -= hit; + else leftArm -= hit; + } + if (state.isUsingItem) { + boolean mainHand = state.useItemHand == InteractionHand.MAIN_HAND; + if (mainHand == (state.mainArm == HumanoidArm.RIGHT)) rightArm = -0.8f; + else leftArm = -0.8f; + } + float[] angles = {0, 0, rightArm, leftArm, swing, -swing}; + for (int part = 0; part < PARTS.length; part++) { + pose.pushPose(); + rotatePart(pose, part, angles[part]); + for (int material = 0; material < TEXTURES.length; material++) { + MeshVertices.submit(pose, collector, TEXTURES[material], data[part][material], light, overlay); + } + pose.popPose(); + } + submitItem(state.rightHandItemState, pose, collector, light, state.outlineColor, RIGHT_ARM, rightArm); + submitItem(state.leftHandItemState, pose, collector, light, state.outlineColor, LEFT_ARM, leftArm); + } + + /** + * One arm on its own, for the hand the player sees in front of them. It is shifted so its shoulder sits where + * the vanilla arm's shoulder does; the swing, item and equip movement are whatever the game already set up. + */ + public void submitArm(PoseStack pose, SubmitNodeCollector collector, int light, boolean right) { + float[][][] data = geometry(); + int part = right ? RIGHT_ARM : LEFT_ARM; + float[] pivot = PIVOTS[part]; + pose.pushPose(); + pose.translate(-pivot[0], -pivot[1], -pivot[2]); + for (int material = 0; material < TEXTURES.length; material++) { + MeshVertices.submit(pose, collector, TEXTURES[material], data[part][material], light, OverlayTexture.NO_OVERLAY); + } + pose.popPose(); + } + + private static void rotatePart(PoseStack pose, int part, float angle) { + if (angle == 0) return; + float[] pivot = PIVOTS[part]; + pose.translate(pivot[0], pivot[1], pivot[2]); + pose.mulPose(Axis.XP.rotation(angle)); + pose.translate(-pivot[0], -pivot[1], -pivot[2]); + } + + private static void submitItem(ItemStackRenderState item, PoseStack pose, SubmitNodeCollector collector, + int light, int outlineColor, int arm, float angle) { + if (item.isEmpty()) return; + pose.pushPose(); + rotatePart(pose, arm, angle); + // the paw tip, with the item in the standard third-person hand orientation + pose.translate(arm == RIGHT_ARM ? -0.57f : 0.57f, 0.92f, -0.02f); + pose.mulPose(Axis.XP.rotationDegrees(-90)); + pose.mulPose(Axis.YP.rotationDegrees(180)); + pose.translate(arm == RIGHT_ARM ? 0.0625f : -0.0625f, 0.125f, 0); + item.submit(pose, collector, light, OverlayTexture.NO_OVERLAY, outlineColor); + pose.popPose(); + } + + private float[][][] geometry() { + if (geometry == null) { + float[][][] all = new float[PARTS.length][TEXTURES.length][]; + for (int part = 0; part < PARTS.length; part++) { + for (int material = 0; material < TEXTURES.length; material++) { + all[part][material] = load(PARTS[part], material); + } + } + geometry = all; + } + return geometry; + } + + private static float[] load(String part, int material) { + String path = "/assets/lovisual/models/chicken/mesh_" + part + "_" + material + ".bin"; + try (InputStream raw = ChickenMesh.class.getResourceAsStream(path)) { + return raw == null ? new float[0] : read(raw); + } catch (IOException | RuntimeException e) { + return new float[0]; + } + } + + /** A vertex count followed by that many vertices of eight big-endian floats each. */ + static float[] read(InputStream raw) throws IOException { + DataInputStream in = new DataInputStream(raw); + int count = in.readInt(); + if (count < 0 || count > MAX_VERTICES || count % 3 != 0) throw new IOException("Invalid vertex count"); + float[] data = new float[count * MeshVertices.FLOATS_PER_VERTEX]; + for (int i = 0; i < data.length; i++) data[i] = in.readFloat(); + return data; + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/MeshVertices.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/MeshVertices.java new file mode 100644 index 0000000..616b2e7 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/MeshVertices.java @@ -0,0 +1,40 @@ +package dev.loki.lovisual.features.module.modules.visuals.models.mesh; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.resources.Identifier; + +/** + * Triangle lists as plain floats: eight per vertex (position, uv, normal), three vertices per triangle. + * Shared by every mesh model so they all emit geometry the same way. + */ +public final class MeshVertices { + public static final int FLOATS_PER_VERTEX = 8; + private static final int FLOATS_PER_TRIANGLE = 3 * FLOATS_PER_VERTEX; + + private MeshVertices() { + } + + /** Submits the triangles as a cutout entity layer; a quad's fourth corner repeats the third. */ + public static void submit(PoseStack pose, SubmitNodeCollector collector, Identifier texture, + float[] triangles, int light, int overlay) { + if (triangles.length == 0) return; + collector.submitCustomGeometry(pose, RenderTypes.entityCutout(texture), (matrix, consumer) -> { + for (int t = 0; t + FLOATS_PER_TRIANGLE <= triangles.length; t += FLOATS_PER_TRIANGLE) { + vertex(matrix, consumer, triangles, t, light, overlay); + vertex(matrix, consumer, triangles, t + FLOATS_PER_VERTEX, light, overlay); + vertex(matrix, consumer, triangles, t + 2 * FLOATS_PER_VERTEX, light, overlay); + vertex(matrix, consumer, triangles, t + 2 * FLOATS_PER_VERTEX, light, overlay); + } + }); + } + + private static void vertex(PoseStack.Pose pose, VertexConsumer consumer, float[] data, int i, int light, int overlay) { + consumer.addVertex(pose, data[i], data[i + 1], data[i + 2]) + .setColor(-1).setUv(data[i + 3], data[i + 4]) + .setOverlay(overlay).setLight(light) + .setNormal(pose, data[i + 5], data[i + 6], data[i + 7]); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/RabbitModel.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/RabbitModel.java new file mode 100644 index 0000000..6b1104a --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/RabbitModel.java @@ -0,0 +1,104 @@ +package dev.loki.lovisual.features.module.modules.visuals.models.mesh; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.resources.Identifier; + +/** + * The rabbit: a box model drawn in place of the player. It does not animate itself: the player model it + * replaces is posed by the game and those angles are copied onto the matching parts, so the rabbit walks, + * swings and looks around exactly as the player would. One instance per player, because a submitted model is + * only read later and two players sharing one would both come out in the last pose set. + */ +public final class RabbitModel { + private static final Identifier TEXTURE = Identifier.fromNamespaceAndPath("lovisual", "models/rabbit.png"); + /** The arms sit at a slight angle of their own, which the copied pose is added onto. */ + private static final float ARM_TILT = 0.0873f; + + private final ModelPart root; + private final ModelPart body; + private final ModelPart head; + private final ModelPart leftArm; + private final ModelPart rightArm; + private final ModelPart leftLeg; + private final ModelPart rightLeg; + + public RabbitModel() { + MeshDefinition mesh = new MeshDefinition(); + PartDefinition rabbit = mesh.getRoot().addOrReplaceChild("rabbit", + box(28, 45, -5.0f, -13.0f, -5.0f, 10.0f, 11.0f, 8.0f), PartPose.offset(0.0f, 24.0f, 0.0f)); + rabbit.addOrReplaceChild("right_leg", box(0, 32, -2.0f, 0.0f, -2.0f, 4.0f, 2.0f, 4.0f), + PartPose.offset(-3.0f, -2.0f, -1.0f)); + rabbit.addOrReplaceChild("left_leg", box(0, 32, -2.0f, 0.0f, -2.0f, 4.0f, 2.0f, 4.0f), + PartPose.offset(3.0f, -2.0f, -1.0f)); + rabbit.addOrReplaceChild("left_arm", box(24, 16, 0.0f, 0.0f, -2.0f, 2.0f, 8.0f, 4.0f), + PartPose.offsetAndRotation(5.0f, -13.0f, -1.0f, 0.0f, 0.0f, -ARM_TILT)); + rabbit.addOrReplaceChild("right_arm", box(24, 16, -2.0f, 0.0f, -2.0f, 2.0f, 8.0f, 4.0f), + PartPose.offsetAndRotation(-5.0f, -13.0f, -1.0f, 0.0f, 0.0f, ARM_TILT)); + // the face is the head's own boxes: ears, cheeks and the muzzle + rabbit.addOrReplaceChild("head", CubeListBuilder.create() + .texOffs(0, 0).addBox(-3.0f, 0.0f, -4.0f, 6.0f, 1.0f, 6.0f) + .texOffs(0, 45).addBox(-4.0f, -11.0f, -4.0f, 8.0f, 11.0f, 8.0f) + .texOffs(56, 0).addBox(-5.0f, -9.0f, -5.0f, 2.0f, 3.0f, 2.0f) + .texOffs(56, 0).addBox(3.0f, -9.0f, -5.0f, 2.0f, 3.0f, 2.0f) + .texOffs(46, 0).addBox(1.0f, -20.0f, 0.0f, 3.0f, 9.0f, 1.0f) + .texOffs(46, 0).addBox(-4.0f, -20.0f, 0.0f, 3.0f, 9.0f, 1.0f), + PartPose.offset(0.0f, -14.0f, -1.0f)); + + root = LayerDefinition.create(mesh, 64, 64).bakeRoot(); + body = root.getChild("rabbit"); + head = body.getChild("head"); + leftArm = body.getChild("left_arm"); + rightArm = body.getChild("right_arm"); + leftLeg = body.getChild("left_leg"); + rightLeg = body.getChild("right_leg"); + } + + /** Draws the rabbit in the pose the player model is in this frame. */ + public void submit(PlayerModel vanilla, AvatarRenderState state, PoseStack pose, SubmitNodeCollector collector, + int light, int overlay, int color, int outlineColor) { + // the game poses the player model only after handing it over, so its angles are still last frame's + vanilla.setupAnim(state); + copyAngles(vanilla); + + pose.pushPose(); + pose.scale(1.25f, 1.25f, 1.25f); + pose.translate(0.0f, -0.3f, 0.0f); + collector.submitModelPart(root, pose, RenderTypes.entityTranslucent(TEXTURE), light, overlay, + (TextureAtlasSprite) null, color, (ModelFeatureRenderer.CrumblingOverlay) null, outlineColor); + pose.popPose(); + } + + private void copyAngles(PlayerModel vanilla) { + copy(vanilla.head, head, 0.0f); + // the body stays upright instead of following the player's own body rotation, which would tip it over + body.xRot = 0.0f; + body.yRot = 0.0f; + body.zRot = 0.0f; + copy(vanilla.leftArm, leftArm, -ARM_TILT); + copy(vanilla.rightArm, rightArm, ARM_TILT); + copy(vanilla.leftLeg, leftLeg, 0.0f); + copy(vanilla.rightLeg, rightLeg, 0.0f); + } + + private static void copy(ModelPart from, ModelPart to, float zTilt) { + to.xRot = from.xRot; + to.yRot = from.yRot; + to.zRot = from.zRot + zTilt; + } + + private static CubeListBuilder box(int u, int v, float x, float y, float z, float width, float height, float depth) { + return CubeListBuilder.create().texOffs(u, v).addBox(x, y, z, width, height, depth); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/VerityMesh.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/VerityMesh.java new file mode 100644 index 0000000..e155a94 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/VerityMesh.java @@ -0,0 +1,49 @@ +package dev.loki.lovisual.features.module.modules.visuals.models.mesh; + +import com.mojang.blaze3d.vertex.PoseStack; +import dev.loki.lovisual.features.module.modules.visuals.models.mesh.blockbench.BbModelParser; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.resources.Identifier; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; + +/** + * Verity: a free-form ball mesh read from its Blockbench file on first use, with the face painted on the + * texture (the avatar ships one texture per mood). Drawn floating at the player's position. + */ +public final class VerityMesh { + private static final String MODEL = "/assets/lovisual/models/verity/verity.bbmodel"; + /** Where the ball sits on the player, in entity model space (y grows downwards). */ + private static final float CENTER_Y = 0.75f; + /** Blockbench units are sixteenths of a block; this also gives the ball a player's presence. */ + private static final float UNIT = 2.2f / 16.0f; + + private float[] triangles; + + public void submit(PoseStack pose, SubmitNodeCollector collector, int light, int overlay, + Identifier texture, float scale) { + float[] data = geometry(); + if (data.length == 0) return; + pose.pushPose(); + pose.translate(0.0f, CENTER_Y, 0.0f); + pose.scale(scale, scale, scale); + MeshVertices.submit(pose, collector, texture, data, light, overlay); + pose.popPose(); + } + + private float[] geometry() { + if (triangles == null) triangles = load(); + return triangles; + } + + private static float[] load() { + try (InputStream stream = VerityMesh.class.getResourceAsStream(MODEL)) { + if (stream == null) return new float[0]; + return BbModelParser.parse(new String(stream.readAllBytes(), StandardCharsets.UTF_8), UNIT); + } catch (IOException | RuntimeException e) { + return new float[0]; + } + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/blockbench/BbModelParser.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/blockbench/BbModelParser.java new file mode 100644 index 0000000..f190021 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/models/mesh/blockbench/BbModelParser.java @@ -0,0 +1,133 @@ +package dev.loki.lovisual.features.module.modules.visuals.models.mesh.blockbench; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import java.util.Map; + +/** + * Reads the free-form mesh elements of a Blockbench {@code .bbmodel} into triangles (position, uv, normal per + * vertex). Each element's own rotation about its origin is baked in, and the result is moved into entity model + * space (y grows downwards) at {@code unit} blocks per Blockbench unit. + */ +public final class BbModelParser { + private static final float DEFAULT_UV_SIZE = 64.0f; + private static final int FLOATS_PER_VERTEX = 8; + + private BbModelParser() { + } + + public static float[] parse(String json, float unit) { + JsonObject root = JsonParser.parseString(json).getAsJsonObject(); + float uvWidth = DEFAULT_UV_SIZE; + float uvHeight = DEFAULT_UV_SIZE; + if (root.has("resolution")) { + JsonObject resolution = root.getAsJsonObject("resolution"); + uvWidth = resolution.get("width").getAsFloat(); + uvHeight = resolution.get("height").getAsFloat(); + } + FloatList out = new FloatList(); + for (JsonElement entry : root.getAsJsonArray("elements")) { + JsonObject element = entry.getAsJsonObject(); + if (!element.has("vertices") || !element.has("faces")) continue; + float[] origin = triple(element, "origin"); + float[] rotation = triple(element, "rotation"); + JsonObject vertices = element.getAsJsonObject("vertices"); + for (Map.Entry face : element.getAsJsonObject("faces").entrySet()) { + JsonObject data = face.getValue().getAsJsonObject(); + JsonArray order = data.getAsJsonArray("vertices"); + JsonObject uv = data.getAsJsonObject("uv"); + // a quad is two triangles around its first corner; larger faces fan the same way + for (int corner = 2; corner < order.size(); corner++) { + String[] ids = {order.get(0).getAsString(), order.get(corner - 1).getAsString(), order.get(corner).getAsString()}; + triangle(out, vertices, uv, origin, rotation, uvWidth, uvHeight, unit, ids); + } + } + } + return out.toArray(); + } + + private static void triangle(FloatList out, JsonObject vertices, JsonObject uv, float[] origin, float[] rotation, + float uvWidth, float uvHeight, float unit, String[] ids) { + float[][] points = new float[3][]; + for (int i = 0; i < 3; i++) { + points[i] = point(vertices, origin, rotation, ids[i], unit); + if (points[i] == null) return; + } + float[] normal = normal(points[0], points[1], points[2]); + for (int i = 0; i < 3; i++) { + float[] texture = uvOf(uv, ids[i], uvWidth, uvHeight); + out.add(points[i][0]).add(points[i][1]).add(points[i][2]); + out.add(texture[0]).add(texture[1]); + out.add(normal[0]).add(normal[1]).add(normal[2]); + } + } + + private static float[] point(JsonObject vertices, float[] origin, float[] rotation, String id, float unit) { + if (!vertices.has(id)) return null; + JsonArray raw = vertices.getAsJsonArray(id); + float[] rotated = rotate(raw.get(0).getAsFloat() - origin[0], raw.get(1).getAsFloat() - origin[1], + raw.get(2).getAsFloat() - origin[2], rotation); + // Blockbench has y growing upwards, entity model space has it growing down + return new float[]{(rotated[0] + origin[0]) * unit, -(rotated[1] + origin[1]) * unit, (rotated[2] + origin[2]) * unit}; + } + + /** X, then Y, then Z: the order Blockbench applies an element's own rotation in. */ + static float[] rotate(float x, float y, float z, float[] rotationDegrees) { + double rx = Math.toRadians(rotationDegrees[0]); + double ry = Math.toRadians(rotationDegrees[1]); + double rz = Math.toRadians(rotationDegrees[2]); + float y1 = (float) (y * Math.cos(rx) - z * Math.sin(rx)); + float z1 = (float) (y * Math.sin(rx) + z * Math.cos(rx)); + float x2 = (float) (x * Math.cos(ry) + z1 * Math.sin(ry)); + float z2 = (float) (-x * Math.sin(ry) + z1 * Math.cos(ry)); + float x3 = (float) (x2 * Math.cos(rz) - y1 * Math.sin(rz)); + float y3 = (float) (x2 * Math.sin(rz) + y1 * Math.cos(rz)); + return new float[]{x3, y3, z2}; + } + + private static float[] uvOf(JsonObject uv, String id, float uvWidth, float uvHeight) { + if (uv == null || !uv.has(id)) return new float[]{0.0f, 0.0f}; + JsonArray raw = uv.getAsJsonArray(id); + return new float[]{raw.get(0).getAsFloat() / uvWidth, raw.get(1).getAsFloat() / uvHeight}; + } + + static float[] normal(float[] a, float[] b, float[] c) { + float ux = b[0] - a[0]; + float uy = b[1] - a[1]; + float uz = b[2] - a[2]; + float vx = c[0] - a[0]; + float vy = c[1] - a[1]; + float vz = c[2] - a[2]; + float nx = uy * vz - uz * vy; + float ny = uz * vx - ux * vz; + float nz = ux * vy - uy * vx; + float length = (float) Math.sqrt(nx * nx + ny * ny + nz * nz); + if (length < 1.0e-6f) return new float[]{0.0f, -1.0f, 0.0f}; + return new float[]{nx / length, ny / length, nz / length}; + } + + private static float[] triple(JsonObject element, String key) { + if (!element.has(key)) return new float[]{0.0f, 0.0f, 0.0f}; + JsonArray raw = element.getAsJsonArray(key); + return new float[]{raw.get(0).getAsFloat(), raw.get(1).getAsFloat(), raw.get(2).getAsFloat()}; + } + + /** Growable float buffer, so a thousand-triangle mesh is not boxed into Float objects. */ + private static final class FloatList { + private float[] data = new float[FLOATS_PER_VERTEX * 3 * 256]; + private int size; + + FloatList add(float value) { + if (size == data.length) data = java.util.Arrays.copyOf(data, size * 2); + data[size++] = value; + return this; + } + + float[] toArray() { + return java.util.Arrays.copyOf(data, size); + } + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceAnimation.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceAnimation.java new file mode 100644 index 0000000..0f35a4b --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceAnimation.java @@ -0,0 +1,80 @@ +package dev.loki.lovisual.features.module.modules.visuals.placeanimation; + +import com.mojang.blaze3d.vertex.PoseStack; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.ChestBlock; +import net.minecraft.world.level.block.DoorBlock; +import net.minecraft.world.level.block.DoublePlantBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.ChestType; + +/** + * Blocks you place slide in from your hand, tilting and growing into position. The block is hidden from the + * chunk mesh for the duration and drawn as a moving block instead (hooks: BlockItemPlaceMixin and friends). + */ +@ModuleInfo( + id = "placeanimation", + displayName = "Place Animation", + aliases = {"placeanimation"}, + category = ModuleCategory.VISUALS +) +public class PlaceAnimation extends Module { + private final NumberValue duration = num("placeAnimationDuration", "duration", 3, 1, 12); + private final NumberValue slide = num("placeAnimationSlide", "slide", 1.0f, 0.0f, 4.0f); + private final NumberValue tilt = num("placeAnimationTilt", "tilt", 6.0f, 0.0f, 45.0f); + private final NumberValue startScale = num("placeAnimationStartScale", "start_scale", 1.0f, 0.1f, 1.0f); + private final BooleanValue blockEntities = bool("placeAnimationBlockEntities", "block_entities", false); + + private final PlaceAnimations animations = new PlaceAnimations(); + + @Override + public void onTick() { + ClientLevel level = Minecraft.getInstance().level; + if (level != null) animations.tick(level); + } + + @Override + public void onDisable() { + animations.clear(); + } + + /** Called when the local player has just placed {@code state} at {@code pos}. */ + public void onBlockPlaced(ClientLevel level, BlockPos pos, BlockState state, Player player, InteractionHand hand) { + if (!isEnabled() || player == null || !isAnimatable(level, pos, state)) return; + PlacedBlock.Params params = new PlacedBlock.Params(duration.get(), slide.get(), + (float) Math.toRadians(tilt.get()), startScale.get()); + animations.start(level, pos, state, player, hand, params, blockEntities.get()); + } + + public boolean isHidden(BlockPos pos) { + return animations.isHidden(pos); + } + + public void submit(PoseStack stack, SubmitNodeCollector collector, float partial) { + if (isEnabled()) animations.submit(stack, collector, partial); + } + + public void applyBlockEntity(BlockPos pos, PoseStack stack, float partial) { + if (isEnabled()) animations.applyBlockEntity(pos, stack, partial); + } + + /** Multi-block structures and non-solid blocks animate badly, so they are left alone. */ + private static boolean isAnimatable(ClientLevel level, BlockPos pos, BlockState state) { + if (state.is(BlockTags.BEDS) || state.getBlock() instanceof DoorBlock || state.getBlock() instanceof DoublePlantBlock) { + return false; + } + if (state.hasProperty(ChestBlock.TYPE) && state.getValue(ChestBlock.TYPE) != ChestType.SINGLE) return false; + return !state.getCollisionShape(level, pos).isEmpty(); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceAnimations.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceAnimations.java new file mode 100644 index 0000000..1ec18e5 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceAnimations.java @@ -0,0 +1,97 @@ +package dev.loki.lovisual.features.module.modules.visuals.placeanimation; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Active place animations plus the set of positions the chunk mesher must skip. The hidden set is read + * from chunk-compile threads, so it is concurrent; everything else stays on the client thread. + */ +final class PlaceAnimations { + private static final double MAX_DISTANCE_SQR = 1024.0; + private static final int REBUILD_GRACE_TICKS = 2; + private static final int REBUILD_FLAGS = 10; + + private final Map active = new HashMap<>(); + private final Set hidden = ConcurrentHashMap.newKeySet(); + + void start(ClientLevel level, BlockPos pos, BlockState state, Player player, InteractionHand hand, + PlacedBlock.Params params, boolean animateBlockEntities) { + boolean model = state.getRenderShape() == RenderShape.MODEL; + if (!model && !animateBlockEntities) return; + if (pos.distToCenterSqr(Minecraft.getInstance().gameRenderer.mainCamera().position()) > MAX_DISTANCE_SQR) return; + + BlockPos key = pos.immutable(); + active.put(key, new PlacedBlock(level, key, state, player, hand, params)); + if (model) { + hidden.add(key); + rebuild(level, key); + } + } + + boolean isHidden(BlockPos pos) { + return !hidden.isEmpty() && hidden.contains(pos); + } + + void tick(ClientLevel level) { + if (active.isEmpty()) return; + for (Iterator it = active.values().iterator(); it.hasNext(); ) { + PlacedBlock block = it.next(); + if (block.level() != level) continue; + if (level.getBlockState(block.pos()) != block.state()) { + reveal(level, block.pos()); + it.remove(); + continue; + } + block.tick(); + if (block.finished()) reveal(level, block.pos()); + if (block.expired(REBUILD_GRACE_TICKS)) it.remove(); + } + } + + void submit(PoseStack stack, SubmitNodeCollector collector, float partial) { + if (active.isEmpty()) return; + Vec3 camera = Minecraft.getInstance().gameRenderer.mainCamera().position(); + for (PlacedBlock block : active.values()) { + if (block.rendersModel()) block.submit(stack, collector, camera, partial); + } + } + + void applyBlockEntity(BlockPos pos, PoseStack stack, float partial) { + if (active.isEmpty() || pos == null) return; + PlacedBlock block = active.get(pos); + if (block != null) block.apply(stack, partial); + } + + void clear() { + ClientLevel level = Minecraft.getInstance().level; + for (PlacedBlock block : active.values()) { + if (level != null && block.level() == level) reveal(level, block.pos()); + } + active.clear(); + hidden.clear(); + } + + private void reveal(ClientLevel level, BlockPos pos) { + if (hidden.remove(pos)) rebuild(level, pos); + } + + private static void rebuild(ClientLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + level.sendBlockUpdated(pos, state, state, REBUILD_FLAGS); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceMotion.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceMotion.java new file mode 100644 index 0000000..d9dd8f8 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceMotion.java @@ -0,0 +1,75 @@ +package dev.loki.lovisual.features.module.modules.visuals.placeanimation; + +import net.minecraft.core.Direction; +import org.joml.Vector3f; + +import java.util.Set; + +/** Pure maths of the place animation: easing curves and the hand-side slide direction. */ +public final class PlaceMotion { + public static final float FINAL_SCALE = 0.999f; + + private static final float SIDE_SHIFT = 0.1f; + private static final float FORWARD_SHIFT = 0.2f; + private static final float VERTICAL_SHIFT = 0.2f; + private static final float SLIDE_BASE = easeBase(0.9f); + private static final float TILT_BASE = easeBase(-0.08f); + private static final float SCALE_BASE = easeBase(-0.7f); + + private PlaceMotion() { + } + + /** Animation progress 0..1; the extra tick of length lets the last frame land exactly. */ + public static float progress(int age, float partial, int lifetime) { + return Math.min(1.0f, (age + partial) / (lifetime + 1)); + } + + /** How far the block still is from its place: 1 at the start, 0 when landed (accelerates into place). */ + public static float slideRemaining(float progress) { + return 1.0f - ease(progress, SLIDE_BASE); + } + + /** Tilt in radians: starts at {@code maxTilt} and settles quickly. */ + public static float tilt(float progress, float maxTilt) { + return (1.0f - ease(progress, TILT_BASE)) * maxTilt; + } + + /** Block scale from {@code start} up to a hair under a full block (avoids z-fighting with the mesh). */ + public static float scale(float start, float progress) { + return start + (FINAL_SCALE - start) * ease(progress, SCALE_BASE); + } + + /** + * Offset the block starts from, in world axes: back towards the player, to the hand's side, and up or + * down depending on where the player looks. {@code rightSide} is the side of the hand that placed it. + */ + public static Vector3f slideStart(float yawDegrees, float pitchDegrees, boolean rightSide, float distance) { + double yaw = Math.toRadians(yawDegrees); + float backX = (float) Math.sin(yaw); + float backZ = (float) -Math.cos(yaw); + float side = rightSide ? 1.0f : -1.0f; + float vertical = pitchDegrees > 0.0f ? VERTICAL_SHIFT : -VERTICAL_SHIFT; + return new Vector3f( + (backZ * side * SIDE_SHIFT + backX * FORWARD_SHIFT) * distance, + vertical * distance, + (-backX * side * SIDE_SHIFT + backZ * FORWARD_SHIFT) * distance); + } + + /** Drops the components that would push the block into a blocked neighbouring side. */ + public static Vector3f restrict(Vector3f offset, Set blocked) { + Vector3f out = new Vector3f(offset); + if (out.x > 0.0f && blocked.contains(Direction.EAST) || out.x < 0.0f && blocked.contains(Direction.WEST)) out.x = 0.0f; + if (out.y > 0.0f && blocked.contains(Direction.UP) || out.y < 0.0f && blocked.contains(Direction.DOWN)) out.y = 0.0f; + if (out.z > 0.0f && blocked.contains(Direction.SOUTH) || out.z < 0.0f && blocked.contains(Direction.NORTH)) out.z = 0.0f; + return out; + } + + /** Exponential ease through (0,0) and (1,1); positive bases accelerate, negative bases decelerate. */ + static float ease(float t, float base) { + return (float) (base * Math.pow(1.0 / base + 1.0, t) - base); + } + + static float easeBase(float k) { + return k > 0.0f ? (float) -Math.log(k) : (float) (Math.log(-k) - 1.0); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlacedBlock.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlacedBlock.java new file mode 100644 index 0000000..998b1ea --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlacedBlock.java @@ -0,0 +1,150 @@ +package dev.loki.lovisual.features.module.modules.visuals.placeanimation; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.block.MovingBlockRenderState; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +import java.util.EnumSet; + +/** One block sliding, tilting and scaling into its place; drawn as a moving block while the mesh hides it. */ +final class PlacedBlock { + /** Animation settings captured at placement time. */ + record Params(int ticks, float slide, float tiltRadians, float startScale) { + } + + private static final float EPSILON = 1.0E-6f; + private static final double NEAR_EDGE = 0.25; + private static final double FAR_EDGE = 0.75; + + private final ClientLevel level; + private final BlockPos pos; + private final BlockState state; + private final boolean rendersModel; + private final Params params; + private final Vec3 offset; + private final float yaw; + private final float slideY; + private final float slideZ; + private final MovingBlockRenderState renderState = new MovingBlockRenderState(); + private int age; + + PlacedBlock(ClientLevel level, BlockPos pos, BlockState state, Player player, InteractionHand hand, Params params) { + this.level = level; + this.pos = pos; + this.state = state; + this.rendersModel = state.getRenderShape() == RenderShape.MODEL; + this.params = params; + this.offset = state.getOffset(pos); + + boolean rightHand = (player.getMainArm() == HumanoidArm.RIGHT) == (hand == InteractionHand.MAIN_HAND); + Vector3f start = PlaceMotion.slideStart(player.getYRot(), player.getXRot(), rightHand, params.slide()); + float length = start.length(); + Vector3f free = restrictToFreeNeighbours(player, start); + float freeLength = free.length(); + if (length < EPSILON || freeLength < EPSILON) { + yaw = 0.0f; + slideY = 0.0f; + slideZ = 0.0f; + } else { + free.div(freeLength); + yaw = (float) Math.atan2(free.x, free.z); + slideY = free.y * length; + slideZ = (float) (free.z * Math.cos(-yaw) - free.x * Math.sin(-yaw)) * length; + } + + renderState.blockState = state; + renderState.blockPos = pos; + renderState.randomSeedPos = pos; + renderState.biome = level.getBiome(pos); + renderState.cardinalLighting = level.cardinalLighting(); + renderState.lightEngine = level.getLightEngine(); + } + + ClientLevel level() { + return level; + } + + BlockPos pos() { + return pos; + } + + BlockState state() { + return state; + } + + boolean rendersModel() { + return rendersModel; + } + + void tick() { + age++; + } + + boolean finished() { + return age >= params.ticks(); + } + + boolean expired(int graceTicks) { + return age >= params.ticks() + graceTicks; + } + + void submit(PoseStack stack, SubmitNodeCollector collector, Vec3 camera, float partial) { + stack.pushPose(); + stack.translate(pos.getX() - camera.x, pos.getY() - camera.y, pos.getZ() - camera.z); + apply(stack, partial); + collector.submitMovingBlock(stack, renderState, 0); + stack.popPose(); + } + + /** Transforms a pose stack positioned at the block's corner into the animated pose. */ + void apply(PoseStack stack, float partial) { + float progress = PlaceMotion.progress(age, partial, params.ticks()); + float remaining = PlaceMotion.slideRemaining(progress); + float scale = PlaceMotion.scale(params.startScale(), progress); + float tilt = PlaceMotion.tilt(progress, params.tiltRadians()); + + stack.translate(0.5 + offset.x, 0.5 + offset.y, 0.5 + offset.z); + stack.mulPose(new Quaternionf().rotationY(yaw)); + stack.translate(0.0f, slideY * remaining, slideZ * remaining); + stack.translate(0.0f, -0.5f, 0.0f); + stack.mulPose(new Quaternionf().rotationX(tilt)); + stack.translate(0.0f, 0.5f, 0.0f); + stack.scale(scale, scale, scale); + stack.mulPose(new Quaternionf().rotationY(-yaw)); + stack.translate(-0.5 - offset.x, -0.5 - offset.y, -0.5 - offset.z); + } + + /** Keeps the slide from pushing the block through a solid neighbour on the side it would move towards. */ + private Vector3f restrictToFreeNeighbours(Player player, Vector3f start) { + EnumSet blocked = EnumSet.noneOf(Direction.class); + BlockPos.MutableBlockPos probe = new BlockPos.MutableBlockPos(); + for (Direction direction : Direction.values()) { + probe.setWithOffset(pos, direction); + VoxelShape shape = level.getBlockState(probe).getCollisionShape(level, probe); + if (shape.isEmpty()) continue; + Direction.Axis axis = direction.getAxis(); + boolean touches = direction.getAxisDirection() == Direction.AxisDirection.POSITIVE + ? shape.min(axis) <= NEAR_EDGE + : shape.max(axis) >= FAR_EDGE; + if (touches) blocked.add(direction); + } + Vector3f free = PlaceMotion.restrict(start, blocked); + if (free.lengthSquared() >= EPSILON || blocked.isEmpty()) return free; + for (Direction direction : Direction.orderedByNearest(player)) { + if (!blocked.contains(direction)) return new Vector3f(direction.getStepX(), direction.getStepY(), direction.getStepZ()); + } + return free; + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/totems/TotemCounter.java b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/totems/TotemCounter.java new file mode 100644 index 0000000..6c9ea0b --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/features/module/modules/visuals/totems/TotemCounter.java @@ -0,0 +1,76 @@ +package dev.loki.lovisual.features.module.modules.visuals.totems; + +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; + +/** Totems of Undying in your inventory, drawn next to the hotbar; red when running low. */ +@ModuleInfo( + id = "totemcounter", + displayName = "Totem Counter", + aliases = {"totemcounter", "totems"}, + category = ModuleCategory.VISUALS +) +public class TotemCounter extends Module { + private static final int WHITE = 0xFFFFFFFF; + private static final int LOW = 0xFFFF5555; + + private final BooleanValue showZero = bool("totemCounterShowZero", "show_zero", true); + private final NumberValue lowAt = num("totemCounterLowAt", "low_at", 2, 0, 10); + private final NumberValue offsetX = num("totemCounterOffsetX", "offset_x", 0, -300, 300); + private final NumberValue offsetY = num("totemCounterOffsetY", "offset_y", 0, -300, 300); + + private ItemStack icon; + + @Override + public HudPhase getHudPhase() { + return HudPhase.AFTER_SUBTITLES; + } + + @Override + public void onRenderHudEngine(Renderer2D renderer, TextRenderer textRenderer, + GuiGraphicsExtractor ctx, float tickDelta) { + Minecraft mc = Minecraft.getInstance(); + if (!isEnabled() || mc.player == null) return; + + int count = count(mc.player.getInventory()); + String label = label(count, showZero.get()); + if (label == null) return; + + if (icon == null) icon = new ItemStack(Items.TOTEM_OF_UNDYING); + int x = ctx.guiWidth() / 2 + 98 + offsetX.get(); + int y = ctx.guiHeight() - 20 + offsetY.get(); + ctx.item(icon, x, y); + ctx.text(mc.font, label, x + 18, y + 4, color(count, lowAt.get()), true); + } + + private static int count(Inventory inventory) { + int total = 0; + for (int i = 0; i < inventory.getContainerSize(); i++) { + ItemStack stack = inventory.getItem(i); + if (stack.is(Items.TOTEM_OF_UNDYING)) total += stack.getCount(); + } + return total; + } + + /** Text shown beside the icon, or null when nothing should be drawn. */ + static String label(int count, boolean showZero) { + if (count <= 0 && !showZero) return null; + return "x" + Math.max(0, count); + } + + /** Red once the stock is at or below the threshold (threshold 0 only flags an empty stock). */ + static int color(int count, int lowAt) { + return count <= lowAt ? LOW : WHITE; + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/LoVisualMixinPlugin.java b/mod/src/main/java/dev/loki/lovisual/mixins/LoVisualMixinPlugin.java index 89838e5..1a73df5 100644 --- a/mod/src/main/java/dev/loki/lovisual/mixins/LoVisualMixinPlugin.java +++ b/mod/src/main/java/dev/loki/lovisual/mixins/LoVisualMixinPlugin.java @@ -19,7 +19,9 @@ public final class LoVisualMixinPlugin implements IMixinConfigPlugin { "dev.loki.lovisual.mixins.sodium.terrain.SodiumChunkMeshFormatsMixin", "dev.loki.lovisual.mixins.sodium.vertex.SodiumChunkVertexMixin", "dev.loki.lovisual.mixins.sodium.terrain.SodiumShaderChunkRendererMixin", - "dev.loki.lovisual.mixins.sodium.vertex.SodiumVertexConsumerTrackerMixin" + "dev.loki.lovisual.mixins.sodium.vertex.SodiumVertexConsumerTrackerMixin", + "dev.loki.lovisual.mixins.sodium.placement.SodiumPlaceCullMixin", + "dev.loki.lovisual.mixins.sodium.placement.SodiumPlaceHideMixin" ); private static final Set OPTIONAL_IRIS_MIXINS = Set.of( "dev.loki.lovisual.mixins.iris.render.IrisCommonUniformsMixin", diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityRendererMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityRendererMixin.java index 7555cff..efc895c 100644 --- a/mod/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityRendererMixin.java +++ b/mod/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityRendererMixin.java @@ -25,6 +25,8 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.items.armor.ArmorColor; +import dev.loki.lovisual.features.module.modules.visuals.items.armor.ArmorColorState; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; import dev.loki.lovisual.render.fade.ViewObstructionFadeContext; @@ -73,6 +75,18 @@ public abstract class LivingEntityRendererMixin asset, + Model model, Object renderState, ItemStack stack, PoseStack matrices, + SubmitNodeCollector queue, int light, Identifier texture, + int outlineColor, int order, CallbackInfo ci) { + ArmorColor module = Modules.get(ArmorColor.class); + lovisual$armorTint = module == null ? ArmorTint.NO_TINT : module.tintFor(stack, renderState); + } + + @ModifyArg(method = "renderLayers(Lnet/minecraft/client/resources/model/EquipmentClientInfo$LayerType;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lnet/minecraft/world/item/ItemStack;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/resources/Identifier;II)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/OrderedSubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IIILnet/minecraft/client/renderer/texture/TextureAtlasSprite;ILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V"), + index = 6) + private int lovisual$tintArmorLayer(int color) { + return ArmorTint.apply(color, lovisual$armorTint); + } } diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/render/models/AvatarCustomModelMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/render/models/AvatarCustomModelMixin.java new file mode 100644 index 0000000..bc2db0e --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/render/models/AvatarCustomModelMixin.java @@ -0,0 +1,56 @@ +package dev.loki.lovisual.mixins.render.models; + +import com.mojang.blaze3d.vertex.PoseStack; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.models.CustomModelState; +import dev.loki.lovisual.features.module.modules.visuals.models.CustomModels; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.Avatar; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +/** CustomModels: выбор модели на кадр, без слоёв брони и своя рука от первого лица. */ +@Mixin(AvatarRenderer.class) +public abstract class AvatarCustomModelMixin { + + @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/Avatar;Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;F)V", + at = @At("TAIL")) + private void lovisual$captureCustomModel(Avatar avatar, AvatarRenderState state, float tickProgress, CallbackInfo ci) { + CustomModels models = Modules.get(CustomModels.class); + ((CustomModelState) state).lovisual$setCustomModel(models == null ? null : models.modelFor(avatar)); + } + + /** Броня, элитры и прочие слои принадлежат модели игрока: у кастомной модели их нет. */ + @Inject(method = "shouldRenderLayers(Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;)Z", + at = @At("HEAD"), cancellable = true) + private void lovisual$hideLayersOnCustomModel(AvatarRenderState state, CallbackInfoReturnable cir) { + if (((CustomModelState) state).lovisual$customModel() != null) cir.setReturnValue(Boolean.FALSE); + } + + @Inject(method = "renderRightHand(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/resources/Identifier;Z)V", + at = @At("HEAD"), cancellable = true) + private void lovisual$customRightHand(PoseStack pose, SubmitNodeCollector collector, int light, + Identifier skin, boolean sleeve, CallbackInfo ci) { + lovisual$hand(pose, collector, light, true, ci); + } + + @Inject(method = "renderLeftHand(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/resources/Identifier;Z)V", + at = @At("HEAD"), cancellable = true) + private void lovisual$customLeftHand(PoseStack pose, SubmitNodeCollector collector, int light, + Identifier skin, boolean sleeve, CallbackInfo ci) { + lovisual$hand(pose, collector, light, false, ci); + } + + private static void lovisual$hand(PoseStack pose, SubmitNodeCollector collector, int light, boolean right, CallbackInfo ci) { + CustomModels models = Modules.get(CustomModels.class); + if (models == null || !models.handFromModel()) return; + models.submitHand(pose, collector, light, right); + ci.cancel(); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/render/models/LivingEntityCustomModelMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/render/models/LivingEntityCustomModelMixin.java new file mode 100644 index 0000000..115f012 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/render/models/LivingEntityCustomModelMixin.java @@ -0,0 +1,39 @@ +package dev.loki.lovisual.mixins.render.models; + +import com.mojang.blaze3d.vertex.PoseStack; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.models.CustomModelState; +import dev.loki.lovisual.features.module.modules.visuals.models.CustomModels; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +/** CustomModels: модель игрока подменяется ровно там, где её передают на отрисовку. */ +@Mixin(LivingEntityRenderer.class) +public abstract class LivingEntityCustomModelMixin { + + @Redirect( + method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IIILnet/minecraft/client/renderer/texture/TextureAtlasSprite;ILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) + @SuppressWarnings({"rawtypes", "unchecked"}) + private void lovisual$submitCustomModel(SubmitNodeCollector collector, Model model, Object state, PoseStack pose, + RenderType renderType, int light, int overlay, int color, + TextureAtlasSprite sprite, int outlineColor, + ModelFeatureRenderer.CrumblingOverlay crumbling) { + String custom = state instanceof CustomModelState carrier ? carrier.lovisual$customModel() : null; + CustomModels models = custom == null ? null : Modules.get(CustomModels.class); + if (models != null && state instanceof AvatarRenderState avatarState + && models.submit(custom, model, avatarState, pose, collector, light, overlay, color, outlineColor)) { + return; + } + // the raw types are needed here: the intercepted call has an erased state type + collector.submitModel(model, state, pose, renderType, light, overlay, color, sprite, outlineColor, crumbling); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/BlockItemPlaceMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/BlockItemPlaceMixin.java new file mode 100644 index 0000000..20db9ad --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/BlockItemPlaceMixin.java @@ -0,0 +1,34 @@ +package dev.loki.lovisual.mixins.render.placement; + +import com.llamalad7.mixinextras.sugar.Local; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.placeanimation.PlaceAnimation; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +/** PlaceAnimation: старт анимации сразу после того, как блок поставлен на клиентском уровне. */ +@Mixin(BlockItem.class) +public abstract class BlockItemPlaceMixin { + + @Inject(method = "place(Lnet/minecraft/world/item/context/BlockPlaceContext;)Lnet/minecraft/world/InteractionResult;", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/item/BlockItem;updateBlockStateFromTag(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/level/block/state/BlockState;")) + private void lovisual$startPlaceAnimation(BlockPlaceContext context, CallbackInfoReturnable cir, + @Local Level level, @Local BlockPos pos, @Local Player player, + @Local(ordinal = 0) BlockState placementState, + @Local(ordinal = 1) BlockState placedState) { + if (!(level instanceof ClientLevel clientLevel) || !placedState.is(placementState.getBlock())) return; + PlaceAnimation module = Modules.get(PlaceAnimation.class); + if (module != null) module.onBlockPlaced(clientLevel, pos, placedState, player, context.getHand()); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/ModelBlockRendererPlaceMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/ModelBlockRendererPlaceMixin.java new file mode 100644 index 0000000..b7bb0c3 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/ModelBlockRendererPlaceMixin.java @@ -0,0 +1,26 @@ +package dev.loki.lovisual.mixins.render.placement; + +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.placeanimation.PlaceAnimation; +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.client.renderer.block.ModelBlockRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +/** PlaceAnimation: грани соседей рядом с анимируемым блоком рисуются, пока тот скрыт из меша. */ +@Mixin(ModelBlockRenderer.class) +public abstract class ModelBlockRendererPlaceMixin { + + @Inject(method = "shouldRenderFace(Lnet/minecraft/client/renderer/block/BlockAndTintGetter;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/core/BlockPos;)Z", + at = @At("HEAD"), cancellable = true) + private void lovisual$revealFacesNextToPlacingBlock(BlockAndTintGetter level, BlockState state, Direction direction, + BlockPos neighborPos, CallbackInfoReturnable cir) { + PlaceAnimation module = Modules.get(PlaceAnimation.class); + if (module != null && module.isHidden(neighborPos)) cir.setReturnValue(true); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/SectionCompilerPlaceMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/SectionCompilerPlaceMixin.java new file mode 100644 index 0000000..3634bc3 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/SectionCompilerPlaceMixin.java @@ -0,0 +1,34 @@ +package dev.loki.lovisual.mixins.render.placement; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.placeanimation.PlaceAnimation; +import net.minecraft.client.renderer.chunk.SectionCompiler; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.RenderShape; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +/** PlaceAnimation: блок, который сейчас анимируется, не попадает в меш секции и не закрывает соседей. */ +@Mixin(SectionCompiler.class) +public abstract class SectionCompilerPlaceMixin { + private static final String COMPILE = "compile(Lnet/minecraft/core/SectionPos;Lnet/minecraft/client/renderer/chunk/RenderSectionRegion;Lcom/mojang/blaze3d/vertex/VertexSorting;Lnet/minecraft/client/renderer/SectionBufferBuilderPack;)Lnet/minecraft/client/renderer/chunk/SectionCompiler$Results;"; + + @ModifyExpressionValue(method = COMPILE, + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getRenderShape()Lnet/minecraft/world/level/block/RenderShape;")) + private RenderShape lovisual$hidePlacingBlock(RenderShape original, @Local(ordinal = 2) BlockPos pos) { + return original == RenderShape.MODEL && lovisual$hidden(pos) ? RenderShape.INVISIBLE : original; + } + + @ModifyExpressionValue(method = COMPILE, + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;isSolidRender()Z")) + private boolean lovisual$unblockPlacingBlock(boolean original, @Local(ordinal = 2) BlockPos pos) { + return original && !lovisual$hidden(pos); + } + + private static boolean lovisual$hidden(BlockPos pos) { + PlaceAnimation module = Modules.get(PlaceAnimation.class); + return module != null && module.isHidden(pos); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/submit/BlockEntityPlaceMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/submit/BlockEntityPlaceMixin.java new file mode 100644 index 0000000..80e280c --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/submit/BlockEntityPlaceMixin.java @@ -0,0 +1,28 @@ +package dev.loki.lovisual.mixins.render.placement.submit; + +import com.mojang.blaze3d.vertex.PoseStack; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.placeanimation.PlaceAnimation; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +/** PlaceAnimation: блок-сущности (сундуки, таблички) анимируются преобразованием позы, а не подменой меша. */ +@Mixin(BlockEntityRenderDispatcher.class) +public abstract class BlockEntityPlaceMixin { + + @Inject(method = "submit(Lnet/minecraft/client/renderer/blockentity/state/BlockEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;)V", + at = @At("HEAD")) + private void lovisual$animatePlacingBlockEntity(BlockEntityRenderState renderState, PoseStack poseStack, + SubmitNodeCollector collector, CameraRenderState camera, CallbackInfo ci) { + PlaceAnimation module = Modules.get(PlaceAnimation.class); + if (module == null) return; + module.applyBlockEntity(renderState.blockPos, poseStack, Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false)); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/submit/LevelRendererPlaceMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/submit/LevelRendererPlaceMixin.java new file mode 100644 index 0000000..9f9b431 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/render/placement/submit/LevelRendererPlaceMixin.java @@ -0,0 +1,26 @@ +package dev.loki.lovisual.mixins.render.placement.submit; + +import com.mojang.blaze3d.vertex.PoseStack; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.placeanimation.PlaceAnimation; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.state.level.LevelRenderState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +/** PlaceAnimation: анимируемые блоки отправляются на отрисовку вместе с сущностями. */ +@Mixin(LevelRenderer.class) +public abstract class LevelRendererPlaceMixin { + + @Inject(method = "submitEntities(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/state/level/LevelRenderState;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V", + at = @At("TAIL")) + private void lovisual$submitPlacingBlocks(PoseStack poseStack, LevelRenderState state, SubmitNodeCollector collector, CallbackInfo ci) { + PlaceAnimation module = Modules.get(PlaceAnimation.class); + if (module == null) return; + module.submit(poseStack, collector, Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false)); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/sodium/placement/SodiumPlaceCullMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/sodium/placement/SodiumPlaceCullMixin.java new file mode 100644 index 0000000..9948b93 --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/sodium/placement/SodiumPlaceCullMixin.java @@ -0,0 +1,33 @@ +package dev.loki.lovisual.mixins.sodium.placement; + +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.placeanimation.PlaceAnimation; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +/** PlaceAnimation под Sodium: соседние грани рисуются, пока анимируемый блок скрыт из меша. */ +@Pseudo +@Mixin(targets = "net.caffeinemc.mods.sodium.client.render.model.AbstractBlockRenderContext") +public abstract class SodiumPlaceCullMixin { + + @Shadow(remap = false) + @Final + private BlockPos.MutableBlockPos cachedPositionObject; + + @Inject(method = "shouldDrawSide(Lnet/minecraft/core/Direction;)Z", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/block/BlockAndTintGetter;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;", + shift = At.Shift.BEFORE), + cancellable = true, remap = false, require = 0) + private void lovisual$revealFacesNextToPlacingBlock(Direction direction, CallbackInfoReturnable cir) { + PlaceAnimation module = Modules.get(PlaceAnimation.class); + if (module != null && module.isHidden(cachedPositionObject)) cir.setReturnValue(true); + } +} diff --git a/mod/src/main/java/dev/loki/lovisual/mixins/sodium/placement/SodiumPlaceHideMixin.java b/mod/src/main/java/dev/loki/lovisual/mixins/sodium/placement/SodiumPlaceHideMixin.java new file mode 100644 index 0000000..83b5e4a --- /dev/null +++ b/mod/src/main/java/dev/loki/lovisual/mixins/sodium/placement/SodiumPlaceHideMixin.java @@ -0,0 +1,27 @@ +package dev.loki.lovisual.mixins.sodium.placement; + +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.placeanimation.PlaceAnimation; +import net.minecraft.client.renderer.block.dispatch.BlockStateModel; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +/** + * PlaceAnimation под Sodium: блок не попадает в меш. Приоритет ниже, чем у SodiumBlockRendererMixin, + * чтобы отмена шла до push состояния поверхности и стек не терял баланс. + */ +@Pseudo +@Mixin(targets = "net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer", priority = 500) +public abstract class SodiumPlaceHideMixin { + + @Inject(method = "renderModel", at = @At("HEAD"), cancellable = true, remap = false, require = 0) + private void lovisual$hidePlacingBlock(BlockStateModel model, BlockState state, BlockPos pos, BlockPos origin, CallbackInfo ci) { + PlaceAnimation module = Modules.get(PlaceAnimation.class); + if (module != null && module.isHidden(pos)) ci.cancel(); + } +} diff --git a/mod/src/main/resources/assets/lovisual/lang/en_us.json b/mod/src/main/resources/assets/lovisual/lang/en_us.json index 6bdd7e3..ae2ca8e 100644 --- a/mod/src/main/resources/assets/lovisual/lang/en_us.json +++ b/mod/src/main/resources/assets/lovisual/lang/en_us.json @@ -3735,5 +3735,65 @@ "setting.elytratrails.color_mode.option.Fade": "Fade", "setting.elytratrails.color_mode.option.DoubleColor": "Double Color", "setting.elytratrails.color_mode.option.Analogous": "Analogous", - "setting.elytratrails.color_mode.option.Theme": "Theme" + "setting.elytratrails.color_mode.option.Theme": "Theme", + "module.autosprint.description": "Holds the sprint key for you while you move forward.", + "setting.autosprint.all_directions": "All directions", + "setting.autosprint.while_using": "While using an item", + "module.totemcounter.description": "Shows how many totems of undying you carry next to the hotbar.", + "setting.totemcounter.show_zero": "Show when zero", + "setting.totemcounter.low_at": "Warn at or below", + "setting.totemcounter.offset_x": "Offset X", + "setting.totemcounter.offset_y": "Offset Y", + "module.enchantglint.description": "Restyles the enchantment glint: rainbow, solid or gradient colours, strength, speed and stripe size.", + "setting.enchantglint.style": "Style", + "setting.enchantglint.style.option.Rainbow": "Rainbow", + "setting.enchantglint.style.option.Solid": "Solid", + "setting.enchantglint.style.option.Gradient": "Gradient", + "setting.enchantglint.style.option.Hidden": "Hidden", + "setting.enchantglint.color": "Colour", + "setting.enchantglint.color2": "Second colour", + "setting.enchantglint.strength": "Strength", + "setting.enchantglint.speed": "Speed", + "setting.enchantglint.scale": "Stripe scale", + "setting.enchantglint.items": "Items", + "setting.enchantglint.armor": "Armor", + "module.armorcolor.description": "Colours worn armor by its remaining durability.", + "setting.armorcolor.targets": "Targets", + "setting.armorcolor.targets.option.players": "Players", + "setting.armorcolor.targets.option.friends": "Friends", + "setting.armorcolor.targets.option.self": "Self", + "setting.armorcolor.targets.option.mobs": "Mobs", + "setting.armorcolor.color_mode": "Colour mode", + "setting.armorcolor.color_mode.option.Gradient": "Gradient", + "setting.armorcolor.color_mode.option.Steps": "Steps", + "setting.armorcolor.full_color": "Full colour", + "setting.armorcolor.warn_color": "Warning colour", + "setting.armorcolor.broken_color": "Broken colour", + "setting.armorcolor.strength": "Strength", + "setting.armorcolor.only_below": "Only below (%)", + "setting.armorcolor.pulse": "Low pulse", + "module.placeanimation.description": "Placed blocks slide in from your hand, tilting and growing into position.", + "setting.placeanimation.duration": "Duration (ticks)", + "setting.placeanimation.slide": "Slide", + "setting.placeanimation.tilt": "Tilt", + "setting.placeanimation.start_scale": "Start scale", + "setting.placeanimation.block_entities": "Block entities", + "module.custommodels.description": "Draws chosen players as a chicken, rabbit or Verity instead of their skin. Only you see it.", + "setting.custommodels.model": "Model", + "setting.custommodels.model.option.Chicken": "Chicken", + "setting.custommodels.model.option.Verity": "Verity", + "setting.custommodels.model.option.Rabbit": "Rabbit", + "setting.custommodels.self": "On myself", + "setting.custommodels.friends": "On friends", + "setting.custommodels.others": "On all other players", + "setting.custommodels.hand": "Hand from the model", + "setting.custommodels.size": "Size", + "setting.custommodels.face": "Face", + "setting.custommodels.face.option.Normal": "Normal", + "setting.custommodels.face.option.Talking": "Talking", + "setting.custommodels.face.option.Disturbing": "Disturbing", + "setting.custommodels.face.option.Disturbing talking": "Disturbing talking", + "setting.custommodels.face.option.Disturbing yelling": "Disturbing yelling", + "setting.custommodels.face.option.Bad": "Bad", + "setting.custommodels.face.option.Very bad": "Very bad" } diff --git a/mod/src/main/resources/assets/lovisual/lang/ru_ru.json b/mod/src/main/resources/assets/lovisual/lang/ru_ru.json index 59d1b47..b4c050c 100644 --- a/mod/src/main/resources/assets/lovisual/lang/ru_ru.json +++ b/mod/src/main/resources/assets/lovisual/lang/ru_ru.json @@ -3526,5 +3526,65 @@ "setting.elytratrails.color_mode.option.Fade": "Плавный", "setting.elytratrails.color_mode.option.DoubleColor": "Два цвета", "setting.elytratrails.color_mode.option.Analogous": "Аналоговый", - "setting.elytratrails.color_mode.option.Theme": "Тема" + "setting.elytratrails.color_mode.option.Theme": "Тема", + "module.autosprint.description": "Сам удерживает бег, пока вы двигаетесь вперёд.", + "setting.autosprint.all_directions": "Во всех направлениях", + "setting.autosprint.while_using": "При использовании предмета", + "module.totemcounter.description": "Показывает у хотбара, сколько тотемов бессмертия у вас с собой.", + "setting.totemcounter.show_zero": "Показывать при нуле", + "setting.totemcounter.low_at": "Предупреждать при", + "setting.totemcounter.offset_x": "Смещение X", + "setting.totemcounter.offset_y": "Смещение Y", + "module.enchantglint.description": "Меняет вид блеска зачарования: радуга, один цвет или градиент, сила, скорость и размер полос.", + "setting.enchantglint.style": "Стиль", + "setting.enchantglint.style.option.Rainbow": "Радуга", + "setting.enchantglint.style.option.Solid": "Один цвет", + "setting.enchantglint.style.option.Gradient": "Градиент", + "setting.enchantglint.style.option.Hidden": "Скрыт", + "setting.enchantglint.color": "Цвет", + "setting.enchantglint.color2": "Второй цвет", + "setting.enchantglint.strength": "Сила", + "setting.enchantglint.speed": "Скорость", + "setting.enchantglint.scale": "Размер полос", + "setting.enchantglint.items": "Предметы", + "setting.enchantglint.armor": "Броня", + "module.armorcolor.description": "Красит надетую броню по оставшейся прочности.", + "setting.armorcolor.targets": "Цели", + "setting.armorcolor.targets.option.players": "Игроки", + "setting.armorcolor.targets.option.friends": "Друзья", + "setting.armorcolor.targets.option.self": "Вы", + "setting.armorcolor.targets.option.mobs": "Мобы", + "setting.armorcolor.color_mode": "Режим цвета", + "setting.armorcolor.color_mode.option.Gradient": "Градиент", + "setting.armorcolor.color_mode.option.Steps": "Ступени", + "setting.armorcolor.full_color": "Цвет целой брони", + "setting.armorcolor.warn_color": "Цвет предупреждения", + "setting.armorcolor.broken_color": "Цвет почти сломанной", + "setting.armorcolor.strength": "Сила", + "setting.armorcolor.only_below": "Только ниже (%)", + "setting.armorcolor.pulse": "Пульс при износе", + "module.placeanimation.description": "Поставленные блоки вылетают из руки, наклоняясь и вырастая на своё место.", + "setting.placeanimation.duration": "Длительность (тики)", + "setting.placeanimation.slide": "Сдвиг", + "setting.placeanimation.tilt": "Наклон", + "setting.placeanimation.start_scale": "Начальный размер", + "setting.placeanimation.block_entities": "Блок-сущности", + "module.custommodels.description": "Рисует выбранных игроков курицей, кроликом или Verity вместо их скина. Видите только вы.", + "setting.custommodels.model": "Модель", + "setting.custommodels.model.option.Chicken": "Курица", + "setting.custommodels.model.option.Verity": "Verity", + "setting.custommodels.model.option.Rabbit": "Кролик", + "setting.custommodels.self": "На себя", + "setting.custommodels.friends": "На друзей", + "setting.custommodels.others": "На всех остальных игроков", + "setting.custommodels.hand": "Рука от модели", + "setting.custommodels.size": "Размер", + "setting.custommodels.face": "Лицо", + "setting.custommodels.face.option.Normal": "Обычное", + "setting.custommodels.face.option.Talking": "Говорит", + "setting.custommodels.face.option.Disturbing": "Странное", + "setting.custommodels.face.option.Disturbing talking": "Странное говорит", + "setting.custommodels.face.option.Disturbing yelling": "Странное кричит", + "setting.custommodels.face.option.Bad": "Плохое", + "setting.custommodels.face.option.Very bad": "Очень плохое" } diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/bruce_col.png b/mod/src/main/resources/assets/lovisual/models/chicken/bruce_col.png new file mode 100644 index 0000000000000000000000000000000000000000..376570e476b3f70a851c13c3facc34dc1b0a9a00 GIT binary patch literal 11551 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 literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_body_0.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_body_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..43fc0e23143457e3cefc05fd46673e6af74c0f7b GIT binary patch literal 16708 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 UVkka{^#OzW*!Uvx1&dGr2b$}()&Kwi literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_head_1.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_head_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_arm_0.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_arm_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..e5039eaff946e989ca91cb1c2e5403bf25ad45a6 GIT binary patch literal 9604 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 JsrVxJ{|!rHr>Ot{ literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_arm_1.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_arm_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_leg_0.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_leg_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_leg_1.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_left_leg_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..2347b6d18056d0b1cd188154042f89acf3e6f055 GIT binary patch literal 48388 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 literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_arm_0.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_arm_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..3e757354c2c9bfd65fa8acc4f2c5b7f5ce187bd3 GIT binary patch literal 9604 zcmbuF`#aUy9>?v5AvA*|MAAj>67?k3`lu11(82V~x=q9ABtiKDAWO`{s+oa(3j-FfEoJhT6R_v`&#-}U{j_5OU;Qd1Mz zbK7mpA>?=vle9aLEd4r~lK6n9JvdK_<=ct#R1I$T!VA1snX%F80c4q94Yhf*l_%^; zqU$GDQ_@q&?Us0eIJcTPn!hG-kvpkN^8@ZsVhq|_T+f&frOE)qRhfALO(;=#F0;Whb2HLz2}&x>WZWIzAKU=dkpsAJZWNBqHleI*TO8q|fxg z&8r%md|XgHHhzqc>N{Ovo_wvWFT8>Hj~zv)XY7>q7agaC{=*@*J&3Ey$L7}r@z=6E z1g17GnTwh_S=FsWqkHFpkKt@q*^vMmt=(MXQ4dV}V>a8qcq+Ma+UKZaC^tmt?5fMa~o&+(vtcQ;Gle3I<2o=4{| zRD(sXKd{%)eRQklIn*E1f07sgF1IXM?#z|s>z6ZW=8=BbywRDOdY4nr?CGlV*+5JL zOiD^-m!7tf(|_}$F;BZ7HqNkSU`917*J_7Up4rDr zrnJgR?L4@Oe2(l7s6V3Tdizho@bvL4tAUfPQxB4H;W?zXw2h}lrw~a=ugZLE|3v)J z{nt2jGZ?JtWp0;~N#N<9NYQ~-+4+UdTx?(hBl7=&jSuCU+Ka)WW+g}!G4bUW6!S>7z1ue8<{OBC#x%T>GwYBkmml4tk}kel%)o7%pcPaC)dH((2(gq z(IMea)oJtW0+8gEQH`S&w9MEa=l}Woh5kP}jg6ppHi%WPJVgpxEy(z6DUEx3gf9{` zvA3abQ9btmAbj-uSIo!p^&Yg=C`yozvH8RFiu2>06Gj{DqXhG-Dqk`Gt+jhdo8?x5 z{E7Kv&#zctZ1a)OYhf1z^#$gS=@s+$d;Sl*UkUO*%181UmOnI+{DtX9UyFs*BRy>2 zl^{~kSwR;ru$CQcy$vbf^-+U(4UX|qJ(6!#q_aAs=2bqUuDpqfJ#`NoXnN$_nmkCV0yQFAXG9RhB^I=_GhsE3+9jM75Arc zF8b8i@rrPNM8=2lvHlX~kLeZj0SV?*(>F(uPgLbQSP+=-DuX%hmww16`fY05Kk)z; zg>ImwJY@nL*h-6deutI3vZ2_tJJ9VeGXQXUdEhie#1 z$l$3F!u&RbKc*M#zg5-5tR_}5Kda22us8)i%U#C~r(GjEnvRgbeku2r?Bym=)@-!M zL6~oc@W=Fu`QSvvO)~b;R>l0GGT$Qo4j76%Sj`AA$)5y7EUo2V*j;6>tHrFNK9FPn zs9qs|owrRUMXpVP`cYNB#l-}$oD#z1CCkX^yCQP&(HTCq#E)$~KgjLQofOn}L-}KR z#rn1`x|EJI&JontiuL1P;ZJA~!;HXm_OH;nq}(Krj=Evb=SFzQ68!7<*rOu^_4QEx zm|n5|zjCac+Q`)e{S9n<7~lGS4~Xp@*p-_vNX2s}YBw^QN6c{~n&JKIdEq2M|6wS9 zOs|+<8phwCK2aA0{T*z47~gt921tr**=3VRQmIx);h$@`@9S5zTx`yVe}?kM z^osfDME*Fs@QzfFudwl9d>aEVh_6UyM=T}p>l5l7Sjz2W`9KVRBYSlBbIc#p3-XKm zI_m%X8bQ8Nm2cxZ1EL&7Y;D;gviIK&bXL6T667mY z`O4>GuEFaC=VO9=_wM{j*&lm;Z2mESOppB^C?EO%ZAGpyqvk2wEq_R|7mBG_&nuq# zg^TRKvsyOn%Y={4&y?RE_I%j-g!yB7Y=6M`m>%0dQ9iPNWBCH(V|u%Y7H~3CXZ~GQ zM51p%jkB6~>afQ(*`GSIF`xEvRry%HL;aC_iRDv_kLs1q$Cc|dRry%`fz^lD`h)Ec z*!qIaKQ?~l_2;Ae2gvuQJbvZ-2^e3w{=eRxFF0RR?oXaL^REA<(4SQ7|GYn6l_oX{ z`dgS@vH$hHznWdzBIv(ie8u|SFUE~dYfcf|55WAjR!@WAZ*`cJkr~-A;n|1t)v>9w zz_7a!G!3&js#iLnRepaMAAA3T{qBoB-L literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_arm_1.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_arm_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_leg_0.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_leg_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_leg_1.bin b/mod/src/main/resources/assets/lovisual/models/chicken/mesh_right_leg_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..48a0f893483b06c71113535f1f4619c7cff9ec3b GIT binary patch literal 48388 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 literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/verity/verity.bbmodel b/mod/src/main/resources/assets/lovisual/models/verity/verity.bbmodel new file mode 100644 index 0000000..2c807de --- /dev/null +++ b/mod/src/main/resources/assets/lovisual/models/verity/verity.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"5.0","model_format":"free","box_uv":false},"name":"verity","model_identifier":"","visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"Verity","color":4,"origin":[0,4.6434,0],"rotation":[0,-90,0],"shading":"flat","export":true,"visibility":true,"locked":false,"render_order":"default","scope":0,"allow_mirror_modeling":true,"vertices":{"3045":[-4.6471,-0.6118,-0.30459],"4718":[2.07038,2.85339,3.09854],"5542":[3.64843,-2.3436,1.79921],"XlmK":[0,-4.6872,0],"dzS6":[0,4.6872,0],"FCnd":[0.0401,4.6471,0.6118],"eUcZ":[0.07951,4.52749,1.21314],"8SQa":[0.11757,4.33041,1.79371],"shRT":[0.15361,4.05923,2.3436],"wXX2":[0.18702,3.71861,2.85339],"Yp9W":[0.21723,3.31435,3.31435],"Gdcn":[0.24373,2.85339,3.71861],"RJ71":[0.26606,2.3436,4.05923],"NQfv":[0.28383,1.79371,4.33041],"d34b":[0.29675,1.21314,4.52749],"KknJ":[0.30459,0.6118,4.6471],"NNfL":[0.30722,0,4.6872],"LFWo":[0.30459,-0.6118,4.6471],"VKkl":[0.29675,-1.21314,4.52749],"34tU":[0.28383,-1.79371,4.33041],"Kdxx":[0.26606,-2.3436,4.05923],"OtIy":[0.24373,-2.85339,3.71861],"FrWA":[0.21723,-3.31435,3.31435],"ILnb":[0.18702,-3.71861,2.85339],"Sd05":[0.15361,-4.05923,2.3436],"vVEA":[0.11757,-4.33041,1.79371],"VdGI":[0.07951,-4.52749,1.21314],"3mNB":[0.0401,-4.6471,0.6118],"ueyL":[0.11961,4.6471,0.60133],"YyVT":[0.23718,4.52749,1.19238],"ekFs":[0.35069,4.33041,1.76302],"YI9F":[0.45819,4.05923,2.3035],"19yC":[0.55786,3.71861,2.80456],"jgKh":[0.64799,3.31435,3.25764],"ebhk":[0.72702,2.85339,3.65498],"rbs0":[0.79362,2.3436,3.98978],"Desq":[0.84663,1.79371,4.25631],"8g35":[0.88516,1.21314,4.45002],"lpkI":[0.90855,0.6118,4.56759],"tYS7":[0.91639,0,4.607],"2R23":[0.90855,-0.6118,4.56759],"Aizj":[0.88516,-1.21314,4.45002],"hraG":[0.84663,-1.79371,4.25631],"kzLc":[0.79362,-2.3436,3.98978],"ATth":[0.72702,-2.85339,3.65498],"j7Wj":[0.64799,-3.31435,3.25764],"EQ6y":[0.55786,-3.71861,2.80456],"Wfza":[0.45819,-4.05923,2.3035],"zI2p":[0.35069,-4.33041,1.76302],"jAM8":[0.23718,-4.52749,1.19238],"L13P":[0.11961,-4.6471,0.60133],"D0MZ":[0.19708,4.6471,0.58058],"wxxa":[0.39079,4.52749,1.15122],"imsP":[0.57781,4.33041,1.70217],"5GS3":[0.75494,4.05923,2.22399],"L8Kr":[0.91916,3.71861,2.70776],"DVTn":[1.06765,3.31435,3.14519],"Venp":[1.19787,2.85339,3.52882],"M7Vd":[1.3076,2.3436,3.85206],"Ej5q":[1.39495,1.79371,4.10939],"ZuV3":[1.45844,1.21314,4.29641],"dnfW":[1.49697,0.6118,4.40992],"jGMT":[1.50988,0,4.44797],"lEc0":[1.49697,-0.6118,4.40992],"Xj8C":[1.45844,-1.21314,4.29641],"0ChH":[1.39495,-1.79371,4.10939],"Rw3Z":[1.3076,-2.3436,3.85206],"DXIf":[1.19787,-2.85339,3.52882],"eDYQ":[1.06765,-3.31435,3.14519],"XgWB":[0.91916,-3.71861,2.70776],"yPw2":[0.75494,-4.05923,2.22399],"CdiC":[0.57781,-4.33041,1.70217],"O3Mh":[0.39079,-4.52749,1.15122],"Zzum":[0.19708,-4.6471,0.58058],"pswp":[0.27117,4.6471,0.54989],"4PPy":[0.53771,4.52749,1.09036],"jAQt":[0.79504,4.33041,1.61218],"wxVw":[1.03877,4.05923,2.10642],"jxBy":[1.26473,3.71861,2.56462],"gKgw":[1.46905,3.31435,2.97893],"k8h3":[1.64823,2.85339,3.34227],"ICav":[1.79921,2.3436,3.64843],"GoBc":[1.9194,1.79371,3.89216],"W78A":[2.00675,1.21314,4.06929],"Kmlx":[2.05977,0.6118,4.1768],"kHKB":[2.07754,0,4.21284],"yR5g":[2.05977,-0.6118,4.1768],"CS5d":[2.00675,-1.21314,4.06929],"CSxr":[1.9194,-1.79371,3.89216],"JJrw":[1.79921,-2.3436,3.64843],"OoPq":[1.64823,-2.85339,3.34227],"IhEI":[1.46905,-3.31435,2.97893],"PCTh":[1.26473,-3.71861,2.56462],"MKY2":[1.03877,-4.05923,2.10642],"m3CV":[0.79504,-4.33041,1.61218],"p3aS":[0.53771,-4.52749,1.09036],"L1sa":[0.27117,-4.6471,0.54989],"sI4c":[0.34063,4.6471,0.50979],"iYxY":[0.67543,4.52749,1.01085],"8K8s":[0.99867,4.33041,1.49462],"70Pw":[1.30483,4.05923,1.95281],"tGbh":[1.58866,3.71861,2.37759],"rc3v":[1.84531,3.31435,2.7617],"MIVz":[2.26003,2.3436,3.38237],"y0YN":[2.41101,1.79371,3.60833],"rMzY":[2.52073,1.21314,3.77255],"yrNM":[2.58733,0.6118,3.87221],"Zv2c":[2.60966,0,3.90563],"BCHK":[2.58733,-0.6118,3.87221],"iUUp":[2.52073,-1.21314,3.77255],"qRiV":[2.41101,-1.79371,3.60833],"29YH":[2.26003,-2.3436,3.38237],"b7jV":[2.07038,-2.85339,3.09854],"rBxn":[1.84531,-3.31435,2.7617],"pNY6":[1.58866,-3.71861,2.37759],"OYPC":[1.30483,-4.05923,1.95281],"wSiY":[0.99867,-4.33041,1.49462],"SQpH":[0.67543,-4.52749,1.01085],"mTMg":[0.34063,-4.6471,0.50979],"sIyE":[0.40425,4.6471,0.46096],"SIWo":[0.80159,4.52749,0.91404],"oRNk":[1.18522,4.33041,1.35148],"tUO5":[1.54856,4.05923,1.76579],"vK0b":[1.88541,3.71861,2.14989],"R8yG":[2.18999,3.31435,2.49721],"sp1t":[2.45711,2.85339,2.80179],"CyId":[2.68218,2.3436,3.05844],"Lne3":[2.86136,1.79371,3.26276],"mcaX":[2.99159,1.21314,3.41125],"lQl8":[3.07062,0.6118,3.50137],"LKJR":[3.09712,0,3.53158],"W9Mv":[3.07062,-0.6118,3.50137],"Edfb":[2.99159,-1.21314,3.41125],"E8ci":[2.86136,-1.79371,3.26276],"oJ9Y":[2.68218,-2.3436,3.05844],"14lT":[2.45711,-2.85339,2.80179],"8F54":[2.18999,-3.31435,2.49721],"5UGP":[1.88541,-3.71861,2.14989],"VkdO":[1.54856,-4.05923,1.76579],"Xef2":[1.18522,-4.33041,1.35148],"2LSJ":[0.80159,-4.52749,0.91404],"Si0k":[0.40425,-4.6471,0.46096],"KcFi":[0.46096,4.6471,0.40425],"kMiR":[0.91404,4.52749,0.80159],"f1Zk":[1.35148,4.33041,1.18522],"UClt":[1.76579,4.05923,1.54856],"AHO6":[2.14989,3.71861,1.88541],"lGmN":[2.49721,3.31435,2.18999],"Xefg":[2.80179,2.85339,2.45711],"PwoL":[3.05844,2.3436,2.68218],"5dlO":[3.26276,1.79371,2.86136],"lL4W":[3.41125,1.21314,2.99159],"GShs":[3.50137,0.6118,3.07062],"AURH":[3.53158,0,3.09712],"8ni9":[3.50137,-0.6118,3.07062],"um08":[3.41125,-1.21314,2.99159],"rTgc":[3.26276,-1.79371,2.86136],"GlqO":[3.05844,-2.3436,2.68218],"qFbM":[2.80179,-2.85339,2.45711],"Dibu":[2.49721,-3.31435,2.18999],"GXtZ":[2.14989,-3.71861,1.88541],"4l0f":[1.76579,-4.05923,1.54856],"B4oj":[1.35148,-4.33041,1.18522],"6sos":[0.91404,-4.52749,0.80159],"52p0":[0.46096,-4.6471,0.40425],"DIN1":[0.50979,4.6471,0.34063],"KFxO":[1.01085,4.52749,0.67543],"SOeq":[1.49462,4.33041,0.99867],"sikJ":[1.95281,4.05923,1.30483],"iPPg":[2.37759,3.71861,1.58866],"oQJn":[2.7617,3.31435,1.84531],"kcQV":[3.09854,2.85339,2.07038],"X0WB":[3.38237,2.3436,2.26003],"z1py":[3.60833,1.79371,2.41101],"lZOI":[3.77255,1.21314,2.52073],"mZXQ":[3.87221,0.6118,2.58733],"HNOW":[3.90563,0,2.60966],"XBki":[3.87221,-0.6118,2.58733],"8Fz3":[3.77255,-1.21314,2.52073],"DYeO":[3.60833,-1.79371,2.41101],"Oy8l":[3.38237,-2.3436,2.26003],"rT6R":[3.09854,-2.85339,2.07038],"AV1D":[2.7617,-3.31435,1.84531],"qKrb":[2.37759,-3.71861,1.58866],"s11s":[1.95281,-4.05923,1.30483],"Foto":[1.49462,-4.33041,0.99867],"Smnk":[1.01085,-4.52749,0.67543],"NCbZ":[0.50979,-4.6471,0.34063],"WT97":[0.54989,4.6471,0.27117],"fEQ5":[1.09036,4.52749,0.53771],"A7cC":[1.61218,4.33041,0.79504],"3nVE":[2.10642,4.05923,1.03877],"X52T":[2.56462,3.71861,1.26473],"d46V":[2.97893,3.31435,1.46905],"lmno":[3.34227,2.85339,1.64823],"LbYW":[3.64843,2.3436,1.79921],"TYgs":[3.89216,1.79371,1.9194],"RxRj":[4.06929,1.21314,2.00675],"TcPs":[4.1768,0.6118,2.05977],"ut7H":[4.21284,0,2.07754],"q8I5":[4.1768,-0.6118,2.05977],"qeor":[4.06929,-1.21314,2.00675],"XoWO":[3.89216,-1.79371,1.9194],"8jpf":[3.34227,-2.85339,1.64823],"LAdy":[2.97893,-3.31435,1.46905],"FEA8":[2.56462,-3.71861,1.26473],"ynjt":[2.10642,-4.05923,1.03877],"TwD7":[1.61218,-4.33041,0.79504],"lGtk":[1.09036,-4.52749,0.53771],"gxy8":[0.54989,-4.6471,0.27117],"M2tl":[0.58058,4.6471,0.19708],"C5Zm":[1.15122,4.52749,0.39079],"jP6K":[1.70217,4.33041,0.57781],"7uYC":[2.22399,4.05923,0.75494],"hcUJ":[2.70776,3.71861,0.91916],"JZnf":[3.14519,3.31435,1.06765],"tYNr":[3.52882,2.85339,1.19787],"JfJC":[3.85206,2.3436,1.3076],"7yT6":[4.10939,1.79371,1.39495],"aaFl":[4.29641,1.21314,1.45844],"y6Wl":[4.40992,0.6118,1.49697],"jea4":[4.44797,0,1.50988],"PXuC":[4.40992,-0.6118,1.49697],"mGBf":[4.29641,-1.21314,1.45844],"bxS2":[4.10939,-1.79371,1.39495],"oNJP":[3.85206,-2.3436,1.3076],"n21f":[3.52882,-2.85339,1.19787],"NKQi":[3.14519,-3.31435,1.06765],"GvtR":[2.70776,-3.71861,0.91916],"qBo8":[2.22399,-4.05923,0.75494],"6Q3w":[1.70217,-4.33041,0.57781],"lI22":[1.15122,-4.52749,0.39079],"Z5sC":[0.58058,-4.6471,0.19708],"ITbb":[0.60133,4.6471,0.11961],"Bj56":[1.19238,4.52749,0.23718],"I1iD":[1.76302,4.33041,0.35069],"VnQS":[2.3035,4.05923,0.45819],"hxI1":[2.80456,3.71861,0.55786],"xpud":[3.25764,3.31435,0.64799],"oe2v":[3.65498,2.85339,0.72702],"eCuc":[3.98978,2.3436,0.79362],"Ez2r":[4.25631,1.79371,0.84663],"sSKI":[4.45002,1.21314,0.88516],"7eu6":[4.56759,0.6118,0.90855],"GXQs":[4.607,0,0.91639],"r8nf":[4.56759,-0.6118,0.90855],"jbbD":[4.45002,-1.21314,0.88516],"QLhl":[4.25631,-1.79371,0.84663],"B5SF":[3.98978,-2.3436,0.79362],"uPXw":[3.65498,-2.85339,0.72702],"gnu4":[3.25764,-3.31435,0.64799],"okW7":[2.80456,-3.71861,0.55786],"tKzt":[2.3035,-4.05923,0.45819],"wSVc":[1.76302,-4.33041,0.35069],"ebb6":[1.19238,-4.52749,0.23718],"p9U0":[0.60133,-4.6471,0.11961],"DaJ4":[0.6118,4.6471,0.0401],"B06O":[1.21314,4.52749,0.07951],"JnPe":[1.79371,4.33041,0.11757],"zWcz":[2.3436,4.05923,0.15361],"UYqZ":[2.85339,3.71861,0.18702],"fjAb":[3.31435,3.31435,0.21723],"Ugos":[3.71861,2.85339,0.24373],"Wn2u":[4.05923,2.3436,0.26606],"nOTl":[4.33041,1.79371,0.28383],"9PSn":[4.52749,1.21314,0.29675],"smFV":[4.6471,0.6118,0.30459],"hYWp":[4.6872,0,0.30722],"3PlH":[4.6471,-0.6118,0.30459],"wDxy":[4.52749,-1.21314,0.29675],"NKar":[4.33041,-1.79371,0.28383],"Il3w":[4.05923,-2.3436,0.26606],"q90q":[3.71861,-2.85339,0.24373],"rP7n":[3.31435,-3.31435,0.21723],"S4Qf":[2.85339,-3.71861,0.18702],"Ij7C":[2.3436,-4.05923,0.15361],"qtaD":[1.79371,-4.33041,0.11757],"qdYi":[1.21314,-4.52749,0.07951],"vOMP":[0.6118,-4.6471,0.0401],"xaLw":[0.6118,4.6471,-0.0401],"XU1B":[1.21314,4.52749,-0.07951],"PN6p":[1.79371,4.33041,-0.11757],"s9Q0":[2.3436,4.05923,-0.15361],"wO14":[2.85339,3.71861,-0.18702],"aL7s":[3.31435,3.31435,-0.21723],"ElKc":[3.71861,2.85339,-0.24373],"4odO":[4.05923,2.3436,-0.26606],"90mp":[4.33041,1.79371,-0.28383],"92FH":[4.52749,1.21314,-0.29675],"R8pu":[4.6471,0.6118,-0.30459],"SdP4":[4.6872,0,-0.30722],"an7O":[4.6471,-0.6118,-0.30459],"OrND":[4.52749,-1.21314,-0.29675],"2uQO":[4.33041,-1.79371,-0.28383],"nZdu":[4.05923,-2.3436,-0.26606],"LJFA":[3.71861,-2.85339,-0.24373],"hmRh":[3.31435,-3.31435,-0.21723],"I6FG":[2.85339,-3.71861,-0.18702],"SUtx":[2.3436,-4.05923,-0.15361],"EqAn":[1.79371,-4.33041,-0.11757],"IJYO":[1.21314,-4.52749,-0.07951],"Kh3Z":[0.6118,-4.6471,-0.0401],"vwX0":[0.60133,4.6471,-0.11961],"KiMd":[1.19238,4.52749,-0.23718],"29rM":[1.76302,4.33041,-0.35069],"JpVz":[2.3035,4.05923,-0.45819],"gM7e":[2.80456,3.71861,-0.55786],"kqon":[3.25764,3.31435,-0.64799],"ZT83":[3.65498,2.85339,-0.72702],"IgDs":[3.98978,2.3436,-0.79362],"lmg4":[4.25631,1.79371,-0.84663],"h6Nj":[4.45002,1.21314,-0.88516],"QwaE":[4.56759,0.6118,-0.90855],"yldl":[4.607,0,-0.91639],"idZ5":[4.56759,-0.6118,-0.90855],"24Fn":[4.45002,-1.21314,-0.88516],"EVnZ":[4.25631,-1.79371,-0.84663],"8L0A":[3.98978,-2.3436,-0.79362],"yTY5":[3.65498,-2.85339,-0.72702],"wDAk":[3.25764,-3.31435,-0.64799],"Fv4L":[2.80456,-3.71861,-0.55786],"3e0s":[2.3035,-4.05923,-0.45819],"fTrh":[1.76302,-4.33041,-0.35069],"Twy7":[1.19238,-4.52749,-0.23718],"Vgvl":[0.60133,-4.6471,-0.11961],"v5b9":[0.58058,4.6471,-0.19708],"eCta":[1.15122,4.52749,-0.39079],"ApXF":[1.70217,4.33041,-0.57781],"JXSP":[2.22399,4.05923,-0.75494],"xxUF":[2.70776,3.71861,-0.91916],"Go6q":[3.14519,3.31435,-1.06765],"muxV":[3.52882,2.85339,-1.19787],"pzDb":[3.85206,2.3436,-1.3076],"hDxT":[4.10939,1.79371,-1.39495],"vARC":[4.29641,1.21314,-1.45844],"iheR":[4.40992,0.6118,-1.49697],"P8GP":[4.44797,0,-1.50988],"AOLK":[4.40992,-0.6118,-1.49697],"d6ZH":[4.29641,-1.21314,-1.45844],"QsTD":[4.10939,-1.79371,-1.39495],"6wYi":[3.85206,-2.3436,-1.3076],"Mmyl":[3.52882,-2.85339,-1.19787],"U56R":[3.14519,-3.31435,-1.06765],"PlRc":[2.70776,-3.71861,-0.91916],"3HzV":[2.22399,-4.05923,-0.75494],"hrOa":[1.70217,-4.33041,-0.57781],"9otK":[1.15122,-4.52749,-0.39079],"WFtQ":[0.58058,-4.6471,-0.19708],"YXW5":[0.54989,4.6471,-0.27117],"lTg6":[1.09036,4.52749,-0.53771],"GOV0":[1.61218,4.33041,-0.79504],"upzm":[2.10642,4.05923,-1.03877],"hag1":[2.56462,3.71861,-1.26473],"VNqg":[2.97893,3.31435,-1.46905],"cPju":[3.34227,2.85339,-1.64823],"WyLA":[3.64843,2.3436,-1.79921],"pWdr":[3.89216,1.79371,-1.9194],"smLB":[4.06929,1.21314,-2.00675],"XRVP":[4.1768,0.6118,-2.05977],"jFdi":[4.21284,0,-2.07754],"hWR2":[4.1768,-0.6118,-2.05977],"Ymc1":[4.06929,-1.21314,-2.00675],"jLfZ":[3.89216,-1.79371,-1.9194],"iqqm":[3.64843,-2.3436,-1.79921],"Z9WE":[3.34227,-2.85339,-1.64823],"BZgH":[2.97893,-3.31435,-1.46905],"2wP1":[2.56462,-3.71861,-1.26473],"KIyD":[2.10642,-4.05923,-1.03877],"qkgq":[1.61218,-4.33041,-0.79504],"Rusf":[1.09036,-4.52749,-0.53771],"kjRb":[0.54989,-4.6471,-0.27117],"RL2m":[0.50979,4.6471,-0.34063],"bEqR":[1.01085,4.52749,-0.67543],"a9pD":[1.49462,4.33041,-0.99867],"EOAd":[1.95281,4.05923,-1.30483],"k4sk":[2.37759,3.71861,-1.58866],"DCSD":[2.7617,3.31435,-1.84531],"bcwb":[3.09854,2.85339,-2.07038],"jxTg":[3.38237,2.3436,-2.26003],"QCXS":[3.60833,1.79371,-2.41101],"upwH":[3.77255,1.21314,-2.52073],"VNyA":[3.87221,0.6118,-2.58733],"PIKF":[3.90563,0,-2.60966],"ZQum":[3.87221,-0.6118,-2.58733],"Omfl":[3.77255,-1.21314,-2.52073],"wEqk":[3.60833,-1.79371,-2.41101],"IzmP":[3.38237,-2.3436,-2.26003],"2ufM":[3.09854,-2.85339,-2.07038],"QfYQ":[2.7617,-3.31435,-1.84531],"5GRJ":[2.37759,-3.71861,-1.58866],"RcuW":[1.95281,-4.05923,-1.30483],"KxTp":[1.49462,-4.33041,-0.99867],"4sRy":[1.01085,-4.52749,-0.67543],"rt42":[0.50979,-4.6471,-0.34063],"C97w":[0.46096,4.6471,-0.40425],"04fu":[0.91404,4.52749,-0.80159],"gop8":[1.35148,4.33041,-1.18522],"MPak":[1.76579,4.05923,-1.54856],"2GFA":[2.14989,3.71861,-1.88541],"ekOn":[2.49721,3.31435,-2.18999],"AmP8":[2.80179,2.85339,-2.45711],"YprA":[3.05844,2.3436,-2.68218],"YFT1":[3.26276,1.79371,-2.86136],"uO6o":[3.41125,1.21314,-2.99159],"1XH3":[3.50137,0.6118,-3.07062],"2Xn4":[3.53158,0,-3.09712],"mSfG":[3.50137,-0.6118,-3.07062],"F6n8":[3.41125,-1.21314,-2.99159],"62lB":[3.26276,-1.79371,-2.86136],"wolx":[3.05844,-2.3436,-2.68218],"yN0F":[2.80179,-2.85339,-2.45711],"dpg8":[2.49721,-3.31435,-2.18999],"Avzb":[2.14989,-3.71861,-1.88541],"MEYc":[1.76579,-4.05923,-1.54856],"GvUN":[1.35148,-4.33041,-1.18522],"1oWC":[0.91404,-4.52749,-0.80159],"GSku":[0.46096,-4.6471,-0.40425],"2vZN":[0.40425,4.6471,-0.46096],"KJWO":[0.80159,4.52749,-0.91404],"E93b":[1.18522,4.33041,-1.35148],"Rlg6":[1.54856,4.05923,-1.76579],"DFIb":[1.88541,3.71861,-2.14989],"sk4q":[2.18999,3.31435,-2.49721],"6FHk":[2.45711,2.85339,-2.80179],"g88F":[2.68218,2.3436,-3.05844],"Kn70":[2.86136,1.79371,-3.26276],"Rpiw":[2.99159,1.21314,-3.41125],"1DtZ":[3.07062,0.6118,-3.50137],"kbjO":[3.09712,0,-3.53158],"lOy2":[3.07062,-0.6118,-3.50137],"lSRC":[2.99159,-1.21314,-3.41125],"lKGV":[2.86136,-1.79371,-3.26276],"Edzb":[2.68218,-2.3436,-3.05844],"YrEK":[2.45711,-2.85339,-2.80179],"6ddv":[2.18999,-3.31435,-2.49721],"9N8e":[1.88541,-3.71861,-2.14989],"1bQf":[1.54856,-4.05923,-1.76579],"hl7t":[1.18522,-4.33041,-1.35148],"31fX":[0.80159,-4.52749,-0.91404],"5Ahp":[0.40425,-4.6471,-0.46096],"GQNq":[0.34063,4.6471,-0.50979],"XrBn":[0.67543,4.52749,-1.01085],"OL7l":[0.99867,4.33041,-1.49462],"Gqmq":[1.30483,4.05923,-1.95281],"qyTs":[1.58866,3.71861,-2.37759],"HUJf":[1.84531,3.31435,-2.7617],"RwGR":[2.07038,2.85339,-3.09854],"Z37U":[2.26003,2.3436,-3.38237],"r7uJ":[2.41101,1.79371,-3.60833],"DFtY":[2.52073,1.21314,-3.77255],"U7Kn":[2.58733,0.6118,-3.87221],"75kO":[2.60966,0,-3.90563],"dsp6":[2.58733,-0.6118,-3.87221],"0pjH":[2.52073,-1.21314,-3.77255],"wGpT":[2.41101,-1.79371,-3.60833],"KMtR":[2.26003,-2.3436,-3.38237],"Bj7W":[2.07038,-2.85339,-3.09854],"diJM":[1.84531,-3.31435,-2.7617],"sdjk":[1.58866,-3.71861,-2.37759],"C68M":[1.30483,-4.05923,-1.95281],"EoN8":[0.99867,-4.33041,-1.49462],"06J7":[0.67543,-4.52749,-1.01085],"2Eqp":[0.34063,-4.6471,-0.50979],"pvOL":[0.27117,4.6471,-0.54989],"4tg6":[0.53771,4.52749,-1.09036],"i0OO":[0.79504,4.33041,-1.61218],"JaP1":[1.03877,4.05923,-2.10642],"uOTQ":[1.26473,3.71861,-2.56462],"8ira":[1.46905,3.31435,-2.97893],"barW":[1.64823,2.85339,-3.34227],"cVzt":[1.79921,2.3436,-3.64843],"n2k2":[1.9194,1.79371,-3.89216],"L4DM":[2.00675,1.21314,-4.06929],"VG8S":[2.05977,0.6118,-4.1768],"AwKv":[2.07754,0,-4.21284],"UYAS":[2.05977,-0.6118,-4.1768],"fmmo":[2.00675,-1.21314,-4.06929],"nL7U":[1.9194,-1.79371,-3.89216],"fpR9":[1.79921,-2.3436,-3.64843],"tkJ3":[1.64823,-2.85339,-3.34227],"udA9":[1.46905,-3.31435,-2.97893],"5QyY":[1.26473,-3.71861,-2.56462],"UOg5":[1.03877,-4.05923,-2.10642],"EZQG":[0.79504,-4.33041,-1.61218],"Z4OK":[0.53771,-4.52749,-1.09036],"GNA4":[0.27117,-4.6471,-0.54989],"nPVe":[0.19708,4.6471,-0.58058],"Tp8r":[0.39079,4.52749,-1.15122],"p2ot":[0.57781,4.33041,-1.70217],"Uo34":[0.75494,4.05923,-2.22399],"eJLi":[0.91916,3.71861,-2.70776],"kc1W":[1.06765,3.31435,-3.14519],"f6xl":[1.19787,2.85339,-3.52882],"dBX1":[1.3076,2.3436,-3.85206],"G86p":[1.39495,1.79371,-4.10939],"iM7o":[1.45844,1.21314,-4.29641],"xLjY":[1.49697,0.6118,-4.40992],"ux6s":[1.50988,0,-4.44797],"IIsT":[1.49697,-0.6118,-4.40992],"cPv6":[1.45844,-1.21314,-4.29641],"d9jn":[1.39495,-1.79371,-4.10939],"DVgN":[1.3076,-2.3436,-3.85206],"tmoQ":[1.19787,-2.85339,-3.52882],"VF7f":[1.06765,-3.31435,-3.14519],"dsWZ":[0.91916,-3.71861,-2.70776],"9yZp":[0.75494,-4.05923,-2.22399],"ogeH":[0.57781,-4.33041,-1.70217],"gMbt":[0.39079,-4.52749,-1.15122],"XROB":[0.19708,-4.6471,-0.58058],"RGy9":[0.11961,4.6471,-0.60133],"teMv":[0.23718,4.52749,-1.19238],"H0mk":[0.35069,4.33041,-1.76302],"Qf1r":[0.45819,4.05923,-2.3035],"oq1V":[0.55786,3.71861,-2.80456],"SzlM":[0.64799,3.31435,-3.25764],"utmE":[0.72702,2.85339,-3.65498],"7wmI":[0.79362,2.3436,-3.98978],"yRPj":[0.84663,1.79371,-4.25631],"gIei":[0.88516,1.21314,-4.45002],"eGfa":[0.90855,0.6118,-4.56759],"Ulik":[0.91639,0,-4.607],"scDS":[0.90855,-0.6118,-4.56759],"hIN2":[0.88516,-1.21314,-4.45002],"ARpU":[0.84663,-1.79371,-4.25631],"6rkc":[0.79362,-2.3436,-3.98978],"ze0S":[0.72702,-2.85339,-3.65498],"Eusq":[0.64799,-3.31435,-3.25764],"JXeL":[0.55786,-3.71861,-2.80456],"qWnI":[0.45819,-4.05923,-2.3035],"2VVD":[0.35069,-4.33041,-1.76302],"H60O":[0.23718,-4.52749,-1.19238],"NrV4":[0.11961,-4.6471,-0.60133],"AjSu":[0.0401,4.6471,-0.6118],"os9i":[0.07951,4.52749,-1.21314],"1gw9":[0.11757,4.33041,-1.79371],"dNrd":[0.15361,4.05923,-2.3436],"EgMG":[0.18702,3.71861,-2.85339],"UZ3Y":[0.21723,3.31435,-3.31435],"E3QV":[0.24373,2.85339,-3.71861],"I0M0":[0.26606,2.3436,-4.05923],"NFSR":[0.28383,1.79371,-4.33041],"HI9i":[0.29675,1.21314,-4.52749],"fyyp":[0.30459,0.6118,-4.6471],"mKVr":[0.30722,0,-4.6872],"gdQD":[0.30459,-0.6118,-4.6471],"aUro":[0.29675,-1.21314,-4.52749],"0HiU":[0.28383,-1.79371,-4.33041],"9TWT":[0.26606,-2.3436,-4.05923],"C8OL":[0.24373,-2.85339,-3.71861],"1Z88":[0.21723,-3.31435,-3.31435],"UinS":[0.18702,-3.71861,-2.85339],"fzjW":[0.15361,-4.05923,-2.3436],"Mz4d":[0.11757,-4.33041,-1.79371],"dSMw":[0.07951,-4.52749,-1.21314],"tR1X":[0.0401,-4.6471,-0.6118],"3EOa":[-0.0401,4.6471,-0.6118],"z4aC":[-0.07951,4.52749,-1.21314],"2Fya":[-0.11757,4.33041,-1.79371],"gZCo":[-0.15361,4.05923,-2.3436],"3Yp0":[-0.18702,3.71861,-2.85339],"qKsy":[-0.21723,3.31435,-3.31435],"LgQF":[-0.24373,2.85339,-3.71861],"BWc9":[-0.26606,2.3436,-4.05923],"KLHF":[-0.28383,1.79371,-4.33041],"N1WI":[-0.29675,1.21314,-4.52749],"TpEY":[-0.30459,0.6118,-4.6471],"iVCT":[-0.30722,0,-4.6872],"760b":[-0.30459,-0.6118,-4.6471],"oBfU":[-0.29675,-1.21314,-4.52749],"FAD7":[-0.28383,-1.79371,-4.33041],"npZg":[-0.26606,-2.3436,-4.05923],"JVmh":[-0.24373,-2.85339,-3.71861],"JFca":[-0.21723,-3.31435,-3.31435],"jkRk":[-0.18702,-3.71861,-2.85339],"hz0R":[-0.15361,-4.05923,-2.3436],"gwWe":[-0.11757,-4.33041,-1.79371],"KEuE":[-0.07951,-4.52749,-1.21314],"dpwi":[-0.0401,-4.6471,-0.6118],"8MFF":[-0.11961,4.6471,-0.60133],"mQyo":[-0.23718,4.52749,-1.19238],"wyx4":[-0.35069,4.33041,-1.76302],"3yNM":[-0.45819,4.05923,-2.3035],"u4hw":[-0.55786,3.71861,-2.80456],"3Wjd":[-0.64799,3.31435,-3.25764],"rdXu":[-0.72702,2.85339,-3.65498],"xBAV":[-0.79362,2.3436,-3.98978],"kOgf":[-0.84663,1.79371,-4.25631],"Xy8o":[-0.88516,1.21314,-4.45002],"LGDx":[-0.90855,0.6118,-4.56759],"9LGl":[-0.91639,0,-4.607],"9HF3":[-0.90855,-0.6118,-4.56759],"xc4o":[-0.88516,-1.21314,-4.45002],"aAGw":[-0.84663,-1.79371,-4.25631],"kSHw":[-0.79362,-2.3436,-3.98978],"zoMw":[-0.72702,-2.85339,-3.65498],"L2YT":[-0.64799,-3.31435,-3.25764],"EHc6":[-0.55786,-3.71861,-2.80456],"ocOi":[-0.45819,-4.05923,-2.3035],"C3Ll":[-0.35069,-4.33041,-1.76302],"w45q":[-0.23718,-4.52749,-1.19238],"Acv9":[-0.11961,-4.6471,-0.60133],"9X1q":[-0.19708,4.6471,-0.58058],"vGNK":[-0.39079,4.52749,-1.15122],"q2Nn":[-0.57781,4.33041,-1.70217],"HNcK":[-0.75494,4.05923,-2.22399],"pGec":[-0.91916,3.71861,-2.70776],"fGjb":[-1.06765,3.31435,-3.14519],"JLMc":[-1.19787,2.85339,-3.52882],"ZoWp":[-1.3076,2.3436,-3.85206],"dyxS":[-1.39495,1.79371,-4.10939],"DBir":[-1.45844,1.21314,-4.29641],"oaaM":[-1.49697,0.6118,-4.40992],"OTbw":[-1.50988,0,-4.44797],"z7Iq":[-1.49697,-0.6118,-4.40992],"oo72":[-1.45844,-1.21314,-4.29641],"HkvK":[-1.39495,-1.79371,-4.10939],"Z3pv":[-1.3076,-2.3436,-3.85206],"yJpj":[-1.19787,-2.85339,-3.52882],"U22n":[-1.06765,-3.31435,-3.14519],"BG8g":[-0.91916,-3.71861,-2.70776],"Qvs0":[-0.75494,-4.05923,-2.22399],"gevK":[-0.57781,-4.33041,-1.70217],"uINs":[-0.39079,-4.52749,-1.15122],"Pph3":[-0.19708,-4.6471,-0.58058],"thUa":[-0.27117,4.6471,-0.54989],"7aRf":[-0.53771,4.52749,-1.09036],"ID9S":[-0.79504,4.33041,-1.61218],"V1xz":[-1.03877,4.05923,-2.10642],"q3GW":[-1.26473,3.71861,-2.56462],"X76u":[-1.46905,3.31435,-2.97893],"W8bp":[-1.64823,2.85339,-3.34227],"a27S":[-1.79921,2.3436,-3.64843],"9K9C":[-1.9194,1.79371,-3.89216],"1ONC":[-2.00675,1.21314,-4.06929],"G39W":[-2.05977,0.6118,-4.1768],"qNWc":[-2.07754,0,-4.21284],"SVBU":[-2.05977,-0.6118,-4.1768],"chD0":[-2.00675,-1.21314,-4.06929],"CBSe":[-1.9194,-1.79371,-3.89216],"oQrB":[-1.79921,-2.3436,-3.64843],"AKRW":[-1.64823,-2.85339,-3.34227],"nato":[-1.46905,-3.31435,-2.97893],"P8FM":[-1.26473,-3.71861,-2.56462],"rSO3":[-1.03877,-4.05923,-2.10642],"SKqG":[-0.79504,-4.33041,-1.61218],"gkD4":[-0.53771,-4.52749,-1.09036],"rLWa":[-0.27117,-4.6471,-0.54989],"lj05":[-0.34063,4.6471,-0.50979],"qX59":[-0.67543,4.52749,-1.01085],"PgQ5":[-0.99867,4.33041,-1.49462],"rShO":[-1.30483,4.05923,-1.95281],"RFaQ":[-1.58866,3.71861,-2.37759],"5myN":[-1.84531,3.31435,-2.7617],"Uk6i":[-2.07038,2.85339,-3.09854],"4I6h":[-2.26003,2.3436,-3.38237],"QSXZ":[-2.41101,1.79371,-3.60833],"TJGl":[-2.52073,1.21314,-3.77255],"AJLW":[-2.58733,0.6118,-3.87221],"8VBb":[-2.60966,0,-3.90563],"ndRs":[-2.58733,-0.6118,-3.87221],"gFzj":[-2.52073,-1.21314,-3.77255],"eZbP":[-2.41101,-1.79371,-3.60833],"tW39":[-2.26003,-2.3436,-3.38237],"zhd6":[-2.07038,-2.85339,-3.09854],"VMop":[-1.84531,-3.31435,-2.7617],"nfWu":[-1.58866,-3.71861,-2.37759],"qSjr":[-1.30483,-4.05923,-1.95281],"HlK7":[-0.99867,-4.33041,-1.49462],"evfH":[-0.67543,-4.52749,-1.01085],"v78p":[-0.34063,-4.6471,-0.50979],"7lhW":[-0.40425,4.6471,-0.46096],"oUUx":[-0.80159,4.52749,-0.91404],"ZaKM":[-1.18522,4.33041,-1.35148],"Krxi":[-1.54856,4.05923,-1.76579],"kyGC":[-1.88541,3.71861,-2.14989],"pfeJ":[-2.18999,3.31435,-2.49721],"EcGu":[-2.45711,2.85339,-2.80179],"6nlf":[-2.68218,2.3436,-3.05844],"bIDo":[-2.86136,1.79371,-3.26276],"2eJu":[-2.99159,1.21314,-3.41125],"0tPl":[-3.07062,0.6118,-3.50137],"TG4t":[-3.09712,0,-3.53158],"Q7NG":[-3.07062,-0.6118,-3.50137],"dSs6":[-2.99159,-1.21314,-3.41125],"ZPf9":[-2.86136,-1.79371,-3.26276],"5zQo":[-2.68218,-2.3436,-3.05844],"UmnM":[-2.45711,-2.85339,-2.80179],"BxFW":[-2.18999,-3.31435,-2.49721],"AXiu":[-1.88541,-3.71861,-2.14989],"ZrjD":[-1.54856,-4.05923,-1.76579],"eOFj":[-1.18522,-4.33041,-1.35148],"7DA0":[-0.80159,-4.52749,-0.91404],"yKIQ":[-0.40425,-4.6471,-0.46096],"WuQN":[-0.46096,4.6471,-0.40425],"y2RU":[-0.91404,4.52749,-0.80159],"HkLA":[-1.35148,4.33041,-1.18522],"rQu5":[-1.76579,4.05923,-1.54856],"nfqI":[-2.14989,3.71861,-1.88541],"hQue":[-2.49721,3.31435,-2.18999],"tAeb":[-2.80179,2.85339,-2.45711],"ZnOQ":[-3.05844,2.3436,-2.68218],"F1XN":[-3.26276,1.79371,-2.86136],"ViGI":[-3.41125,1.21314,-2.99159],"vJrv":[-3.50137,0.6118,-3.07062],"UgB2":[-3.53158,0,-3.09712],"1Qqm":[-3.50137,-0.6118,-3.07062],"uKK1":[-3.41125,-1.21314,-2.99159],"8Eei":[-3.26276,-1.79371,-2.86136],"9I1n":[-3.05844,-2.3436,-2.68218],"1vE0":[-2.80179,-2.85339,-2.45711],"7HDn":[-2.49721,-3.31435,-2.18999],"lbRU":[-2.14989,-3.71861,-1.88541],"Mfa1":[-1.76579,-4.05923,-1.54856],"vMG5":[-1.35148,-4.33041,-1.18522],"JRnG":[-0.91404,-4.52749,-0.80159],"0gSl":[-0.46096,-4.6471,-0.40425],"yznU":[-0.50979,4.6471,-0.34063],"XciA":[-1.01085,4.52749,-0.67543],"rIAG":[-1.49462,4.33041,-0.99867],"YgL1":[-1.95281,4.05923,-1.30483],"9hk5":[-2.37759,3.71861,-1.58866],"ABzV":[-2.7617,3.31435,-1.84531],"L4j2":[-3.09854,2.85339,-2.07038],"I4LJ":[-3.38237,2.3436,-2.26003],"zSpU":[-3.60833,1.79371,-2.41101],"OIYI":[-3.77255,1.21314,-2.52073],"aGqh":[-3.87221,0.6118,-2.58733],"f6ye":[-3.90563,0,-2.60966],"J9yL":[-3.87221,-0.6118,-2.58733],"3bte":[-3.77255,-1.21314,-2.52073],"h4xO":[-3.60833,-1.79371,-2.41101],"Vh6B":[-3.38237,-2.3436,-2.26003],"O925":[-3.09854,-2.85339,-2.07038],"VmCQ":[-2.7617,-3.31435,-1.84531],"XAmZ":[-2.37759,-3.71861,-1.58866],"W2Rq":[-1.95281,-4.05923,-1.30483],"UNZ8":[-1.49462,-4.33041,-0.99867],"gQXr":[-1.01085,-4.52749,-0.67543],"ucpN":[-0.50979,-4.6471,-0.34063],"hMxM":[-0.54989,4.6471,-0.27117],"vpSN":[-1.09036,4.52749,-0.53771],"1qy0":[-1.61218,4.33041,-0.79504],"D5YV":[-2.10642,4.05923,-1.03877],"2wMO":[-2.56462,3.71861,-1.26473],"obO5":[-2.97893,3.31435,-1.46905],"Envs":[-3.34227,2.85339,-1.64823],"TZSf":[-3.64843,2.3436,-1.79921],"gCMP":[-3.89216,1.79371,-1.9194],"QA8u":[-4.06929,1.21314,-2.00675],"jShx":[-4.1768,0.6118,-2.05977],"3aXk":[-4.21284,0,-2.07754],"keeZ":[-4.1768,-0.6118,-2.05977],"btJ1":[-4.06929,-1.21314,-2.00675],"gu8S":[-3.89216,-1.79371,-1.9194],"IV6K":[-3.64843,-2.3436,-1.79921],"uPiY":[-3.34227,-2.85339,-1.64823],"yFGN":[-2.97893,-3.31435,-1.46905],"tayt":[-2.56462,-3.71861,-1.26473],"wrr7":[-2.10642,-4.05923,-1.03877],"Eb45":[-1.61218,-4.33041,-0.79504],"GyTl":[-1.09036,-4.52749,-0.53771],"ezHH":[-0.54989,-4.6471,-0.27117],"rKaz":[-0.58058,4.6471,-0.19708],"BXok":[-1.15122,4.52749,-0.39079],"jPXa":[-1.70217,4.33041,-0.57781],"yAv5":[-2.22399,4.05923,-0.75494],"Bil6":[-2.70776,3.71861,-0.91916],"YQas":[-3.14519,3.31435,-1.06765],"kF9T":[-3.52882,2.85339,-1.19787],"I3BP":[-3.85206,2.3436,-1.3076],"wjp1":[-4.10939,1.79371,-1.39495],"S3Le":[-4.29641,1.21314,-1.45844],"59Gg":[-4.40992,0.6118,-1.49697],"jmNr":[-4.44797,0,-1.50988],"gCtA":[-4.40992,-0.6118,-1.49697],"uClA":[-4.29641,-1.21314,-1.45844],"47ib":[-4.10939,-1.79371,-1.39495],"8Yr8":[-3.85206,-2.3436,-1.3076],"nUN2":[-3.52882,-2.85339,-1.19787],"pHhQ":[-3.14519,-3.31435,-1.06765],"llyd":[-2.70776,-3.71861,-0.91916],"pUPD":[-2.22399,-4.05923,-0.75494],"UvKH":[-1.70217,-4.33041,-0.57781],"09Bg":[-1.15122,-4.52749,-0.39079],"oEM1":[-0.58058,-4.6471,-0.19708],"RH3H":[-0.60133,4.6471,-0.11961],"i7o6":[-1.19238,4.52749,-0.23718],"sZQl":[-1.76302,4.33041,-0.35069],"3OYa":[-2.3035,4.05923,-0.45819],"TFGY":[-2.80456,3.71861,-0.55786],"Tav5":[-3.25764,3.31435,-0.64799],"dfeP":[-3.65498,2.85339,-0.72702],"hyCD":[-3.98978,2.3436,-0.79362],"FsZs":[-4.25631,1.79371,-0.84663],"p3vK":[-4.45002,1.21314,-0.88516],"NEI0":[-4.56759,0.6118,-0.90855],"R2Uz":[-4.607,0,-0.91639],"lFyV":[-4.56759,-0.6118,-0.90855],"9z2O":[-4.45002,-1.21314,-0.88516],"oFeA":[-4.25631,-1.79371,-0.84663],"tP84":[-3.98978,-2.3436,-0.79362],"muf3":[-3.65498,-2.85339,-0.72702],"jQ3p":[-3.25764,-3.31435,-0.64799],"2Ule":[-2.80456,-3.71861,-0.55786],"c52v":[-2.3035,-4.05923,-0.45819],"b4Qf":[-1.76302,-4.33041,-0.35069],"GrEh":[-1.19238,-4.52749,-0.23718],"NWKo":[-0.60133,-4.6471,-0.11961],"So0f":[-0.6118,4.6471,-0.0401],"nsIx":[-1.21314,4.52749,-0.07951],"gazF":[-1.79371,4.33041,-0.11757],"bmNU":[-2.3436,4.05923,-0.15361],"wXTa":[-2.85339,3.71861,-0.18702],"Fluo":[-3.31435,3.31435,-0.21723],"KKMo":[-3.71861,2.85339,-0.24373],"RXqQ":[-4.05923,2.3436,-0.26606],"VDSg":[-4.33041,1.79371,-0.28383],"3gHD":[-4.52749,1.21314,-0.29675],"FRTT":[-4.6471,0.6118,-0.30459],"QS7w":[-4.6872,0,-0.30722],"Cmul":[-4.52749,-1.21314,-0.29675],"PuwW":[-4.33041,-1.79371,-0.28383],"9su0":[-4.05923,-2.3436,-0.26606],"R30j":[-3.71861,-2.85339,-0.24373],"qCNz":[-3.31435,-3.31435,-0.21723],"BaLj":[-2.85339,-3.71861,-0.18702],"cysY":[-2.3436,-4.05923,-0.15361],"ezGJ":[-1.79371,-4.33041,-0.11757],"pLpA":[-1.21314,-4.52749,-0.07951],"CckC":[-0.6118,-4.6471,-0.0401],"ISzJ":[-0.6118,4.6471,0.0401],"guLm":[-1.21314,4.52749,0.07951],"tbnY":[-1.79371,4.33041,0.11757],"Infw":[-2.3436,4.05923,0.15361],"gPPI":[-2.85339,3.71861,0.18702],"j8HG":[-3.31435,3.31435,0.21723],"p5Dn":[-3.71861,2.85339,0.24373],"AHO9":[-4.05923,2.3436,0.26606],"Xw5k":[-4.33041,1.79371,0.28383],"QrBY":[-4.52749,1.21314,0.29675],"FSoG":[-4.6471,0.6118,0.30459],"eS9L":[-4.6872,0,0.30722],"dIB1":[-4.6471,-0.6118,0.30459],"ZI9Q":[-4.52749,-1.21314,0.29675],"jf7m":[-4.33041,-1.79371,0.28383],"hMcN":[-4.05923,-2.3436,0.26606],"SeVW":[-3.71861,-2.85339,0.24373],"ZW9F":[-3.31435,-3.31435,0.21723],"nRWm":[-2.85339,-3.71861,0.18702],"ZAZC":[-2.3436,-4.05923,0.15361],"yq80":[-1.79371,-4.33041,0.11757],"sMx1":[-1.21314,-4.52749,0.07951],"Vi7v":[-0.6118,-4.6471,0.0401],"UhaD":[-0.60133,4.6471,0.11961],"Zznd":[-1.19238,4.52749,0.23718],"8yYW":[-1.76302,4.33041,0.35069],"7vTG":[-2.3035,4.05923,0.45819],"8HlW":[-2.80456,3.71861,0.55786],"NHCY":[-3.25764,3.31435,0.64799],"U5uS":[-3.65498,2.85339,0.72702],"LvYa":[-3.98978,2.3436,0.79362],"k9ri":[-4.25631,1.79371,0.84663],"4uTJ":[-4.45002,1.21314,0.88516],"ChS0":[-4.56759,0.6118,0.90855],"rPZe":[-4.607,0,0.91639],"pXgz":[-4.56759,-0.6118,0.90855],"iCHQ":[-4.45002,-1.21314,0.88516],"inv3":[-4.25631,-1.79371,0.84663],"kTXY":[-3.98978,-2.3436,0.79362],"ithN":[-3.65498,-2.85339,0.72702],"HhGp":[-3.25764,-3.31435,0.64799],"GUyn":[-2.80456,-3.71861,0.55786],"c6Md":[-2.3035,-4.05923,0.45819],"yxnG":[-1.76302,-4.33041,0.35069],"zC3O":[-1.19238,-4.52749,0.23718],"BGhj":[-0.60133,-4.6471,0.11961],"uYCz":[-0.58058,4.6471,0.19708],"XYnB":[-1.15122,4.52749,0.39079],"jueJ":[-1.70217,4.33041,0.57781],"k156":[-2.22399,4.05923,0.75494],"BgPL":[-2.70776,3.71861,0.91916],"Hxu2":[-3.14519,3.31435,1.06765],"7s5K":[-3.52882,2.85339,1.19787],"P9oa":[-3.85206,2.3436,1.3076],"APw9":[-4.10939,1.79371,1.39495],"lwm2":[-4.29641,1.21314,1.45844],"i5jm":[-4.40992,0.6118,1.49697],"QRUB":[-4.44797,0,1.50988],"4vCg":[-4.40992,-0.6118,1.49697],"SEcq":[-4.29641,-1.21314,1.45844],"l5Pi":[-4.10939,-1.79371,1.39495],"9O92":[-3.85206,-2.3436,1.3076],"CiiH":[-3.52882,-2.85339,1.19787],"m6vM":[-3.14519,-3.31435,1.06765],"UCzw":[-2.70776,-3.71861,0.91916],"tuV9":[-2.22399,-4.05923,0.75494],"S4A2":[-1.70217,-4.33041,0.57781],"gB8v":[-1.15122,-4.52749,0.39079],"rjCo":[-0.58058,-4.6471,0.19708],"W1bv":[-0.54989,4.6471,0.27117],"rdMy":[-1.09036,4.52749,0.53771],"OtDu":[-1.61218,4.33041,0.79504],"zWPv":[-2.10642,4.05923,1.03877],"COEF":[-2.56462,3.71861,1.26473],"rNA7":[-2.97893,3.31435,1.46905],"CDr8":[-3.34227,2.85339,1.64823],"Zivo":[-3.64843,2.3436,1.79921],"0lNG":[-3.89216,1.79371,1.9194],"XLfp":[-4.06929,1.21314,2.00675],"SZz5":[-4.1768,0.6118,2.05977],"tOKG":[-4.21284,0,2.07754],"1ZcN":[-4.1768,-0.6118,2.05977],"vc5H":[-4.06929,-1.21314,2.00675],"dsdG":[-3.89216,-1.79371,1.9194],"59mn":[-3.64843,-2.3436,1.79921],"YRwD":[-3.34227,-2.85339,1.64823],"HHZh":[-2.97893,-3.31435,1.46905],"QZzK":[-2.56462,-3.71861,1.26473],"GcxP":[-2.10642,-4.05923,1.03877],"Kfi6":[-1.61218,-4.33041,0.79504],"BHSp":[-1.09036,-4.52749,0.53771],"kujo":[-0.54989,-4.6471,0.27117],"Af6K":[-0.50979,4.6471,0.34063],"yUFO":[-1.01085,4.52749,0.67543],"RtQK":[-1.49462,4.33041,0.99867],"l9lX":[-1.95281,4.05923,1.30483],"vOS4":[-2.37759,3.71861,1.58866],"sJle":[-2.7617,3.31435,1.84531],"Z0Po":[-3.09854,2.85339,2.07038],"5SAR":[-3.38237,2.3436,2.26003],"SLXQ":[-3.60833,1.79371,2.41101],"UiKU":[-3.77255,1.21314,2.52073],"yhJ5":[-3.87221,0.6118,2.58733],"rWeN":[-3.90563,0,2.60966],"pf2w":[-3.87221,-0.6118,2.58733],"FMk4":[-3.77255,-1.21314,2.52073],"D9Bk":[-3.60833,-1.79371,2.41101],"1NYp":[-3.38237,-2.3436,2.26003],"m90d":[-3.09854,-2.85339,2.07038],"vUZJ":[-2.7617,-3.31435,1.84531],"bgQ5":[-2.37759,-3.71861,1.58866],"jAum":[-1.95281,-4.05923,1.30483],"RPjM":[-1.49462,-4.33041,0.99867],"uq6l":[-1.01085,-4.52749,0.67543],"m6jg":[-0.50979,-4.6471,0.34063],"Ouzi":[-0.46096,4.6471,0.40425],"7kpW":[-0.91404,4.52749,0.80159],"KwO1":[-1.35148,4.33041,1.18522],"9wAH":[-1.76579,4.05923,1.54856],"OQKa":[-2.14989,3.71861,1.88541],"UFfV":[-2.49721,3.31435,2.18999],"tVEh":[-2.80179,2.85339,2.45711],"hn89":[-3.05844,2.3436,2.68218],"BgKJ":[-3.26276,1.79371,2.86136],"RS9d":[-3.41125,1.21314,2.99159],"iPx7":[-3.50137,0.6118,3.07062],"jgCo":[-3.53158,0,3.09712],"MtqK":[-3.50137,-0.6118,3.07062],"Lwwg":[-3.41125,-1.21314,2.99159],"hu1N":[-3.26276,-1.79371,2.86136],"qRBa":[-3.05844,-2.3436,2.68218],"drhF":[-2.80179,-2.85339,2.45711],"lY4S":[-2.49721,-3.31435,2.18999],"6ww5":[-2.14989,-3.71861,1.88541],"Ukn6":[-1.76579,-4.05923,1.54856],"b9ij":[-1.35148,-4.33041,1.18522],"yEkT":[-0.91404,-4.52749,0.80159],"Drb8":[-0.46096,-4.6471,0.40425],"V2jG":[-0.40425,4.6471,0.46096],"9aEQ":[-0.80159,4.52749,0.91404],"K0vm":[-1.18522,4.33041,1.35148],"uZtG":[-1.54856,4.05923,1.76579],"d2Wd":[-1.88541,3.71861,2.14989],"UQUc":[-2.18999,3.31435,2.49721],"W5m4":[-2.45711,2.85339,2.80179],"NuNY":[-2.68218,2.3436,3.05844],"loYR":[-2.86136,1.79371,3.26276],"MZ35":[-2.99159,1.21314,3.41125],"8La3":[-3.07062,0.6118,3.50137],"32cN":[-3.09712,0,3.53158],"Wv6p":[-3.07062,-0.6118,3.50137],"VY4a":[-2.99159,-1.21314,3.41125],"zBz2":[-2.86136,-1.79371,3.26276],"SXaq":[-2.68218,-2.3436,3.05844],"ey0d":[-2.45711,-2.85339,2.80179],"Su7W":[-2.18999,-3.31435,2.49721],"mK8f":[-1.88541,-3.71861,2.14989],"BLe7":[-1.54856,-4.05923,1.76579],"7xTb":[-1.18522,-4.33041,1.35148],"Jp2Y":[-0.80159,-4.52749,0.91404],"yXFy":[-0.40425,-4.6471,0.46096],"lrbM":[-0.34063,4.6471,0.50979],"FRHO":[-0.67543,4.52749,1.01085],"cnP4":[-0.99867,4.33041,1.49462],"wDPt":[-1.30483,4.05923,1.95281],"keAy":[-1.58866,3.71861,2.37759],"VpKU":[-1.84531,3.31435,2.7617],"5wyI":[-2.07038,2.85339,3.09854],"rFN9":[-2.26003,2.3436,3.38237],"lyGa":[-2.41101,1.79371,3.60833],"1zwT":[-2.52073,1.21314,3.77255],"Cs8v":[-2.58733,0.6118,3.87221],"glJk":[-2.60966,0,3.90563],"I7Yg":[-2.58733,-0.6118,3.87221],"eevK":[-2.52073,-1.21314,3.77255],"nZ5c":[-2.41101,-1.79371,3.60833],"U0lB":[-2.26003,-2.3436,3.38237],"tsct":[-2.07038,-2.85339,3.09854],"zoG1":[-1.84531,-3.31435,2.7617],"YqTy":[-1.58866,-3.71861,2.37759],"zTo8":[-1.30483,-4.05923,1.95281],"l8Xk":[-0.99867,-4.33041,1.49462],"s4zu":[-0.67543,-4.52749,1.01085],"tapj":[-0.34063,-4.6471,0.50979],"KXeI":[-0.27117,4.6471,0.54989],"CQM1":[-0.53771,4.52749,1.09036],"nk1J":[-0.79504,4.33041,1.61218],"cuaN":[-1.03877,4.05923,2.10642],"bai3":[-1.26473,3.71861,2.56462],"gB1A":[-1.46905,3.31435,2.97893],"spSN":[-1.64823,2.85339,3.34227],"vjCD":[-1.79921,2.3436,3.64843],"Em6A":[-1.9194,1.79371,3.89216],"sBAM":[-2.00675,1.21314,4.06929],"vQ0k":[-2.05977,0.6118,4.1768],"CVIV":[-2.07754,0,4.21284],"a7FH":[-2.05977,-0.6118,4.1768],"ZbTK":[-2.00675,-1.21314,4.06929],"WAet":[-1.9194,-1.79371,3.89216],"W08E":[-1.79921,-2.3436,3.64843],"klpn":[-1.64823,-2.85339,3.34227],"YYc7":[-1.46905,-3.31435,2.97893],"i6hg":[-1.26473,-3.71861,2.56462],"yiuy":[-1.03877,-4.05923,2.10642],"VYTo":[-0.79504,-4.33041,1.61218],"MpNe":[-0.53771,-4.52749,1.09036],"uxVl":[-0.27117,-4.6471,0.54989],"lvZg":[-0.19708,4.6471,0.58058],"1S9p":[-0.39079,4.52749,1.15122],"sO3C":[-0.57781,4.33041,1.70217],"TigE":[-0.75494,4.05923,2.22399],"YVsP":[-0.91916,3.71861,2.70776],"vJyf":[-1.06765,3.31435,3.14519],"wJ8N":[-1.19787,2.85339,3.52882],"8hSH":[-1.3076,2.3436,3.85206],"sWpp":[-1.39495,1.79371,4.10939],"nlKq":[-1.45844,1.21314,4.29641],"e8HN":[-1.49697,0.6118,4.40992],"Amc5":[-1.50988,0,4.44797],"G921":[-1.49697,-0.6118,4.40992],"fWiS":[-1.45844,-1.21314,4.29641],"LRgP":[-1.39495,-1.79371,4.10939],"vIls":[-1.3076,-2.3436,3.85206],"S6zf":[-1.19787,-2.85339,3.52882],"a3mr":[-1.06765,-3.31435,3.14519],"X9Yi":[-0.91916,-3.71861,2.70776],"Tt4O":[-0.75494,-4.05923,2.22399],"z8dF":[-0.57781,-4.33041,1.70217],"6c8h":[-0.39079,-4.52749,1.15122],"ZGtB":[-0.19708,-4.6471,0.58058],"1ITj":[-0.11961,4.6471,0.60133],"WjOG":[-0.23718,4.52749,1.19238],"dDSA":[-0.35069,4.33041,1.76302],"eRfm":[-0.45819,4.05923,2.3035],"Er0W":[-0.55786,3.71861,2.80456],"PWvD":[-0.64799,3.31435,3.25764],"dEDz":[-0.72702,2.85339,3.65498],"JEJX":[-0.79362,2.3436,3.98978],"7ct9":[-0.84663,1.79371,4.25631],"8sRT":[-0.88516,1.21314,4.45002],"DnAa":[-0.90855,0.6118,4.56759],"Zpr9":[-0.91639,0,4.607],"8HL2":[-0.90855,-0.6118,4.56759],"djuW":[-0.88516,-1.21314,4.45002],"5OCP":[-0.84663,-1.79371,4.25631],"oCzm":[-0.79362,-2.3436,3.98978],"6JK9":[-0.72702,-2.85339,3.65498],"mIsF":[-0.64799,-3.31435,3.25764],"pYCB":[-0.55786,-3.71861,2.80456],"QVfu":[-0.45819,-4.05923,2.3035],"fbdX":[-0.35069,-4.33041,1.76302],"ZMjx":[-0.23718,-4.52749,1.19238],"UUcD":[-0.11961,-4.6471,0.60133],"AUrI":[-0.0401,4.6471,0.6118],"BHsq":[-0.07951,4.52749,1.21314],"SklY":[-0.11757,4.33041,1.79371],"Vvco":[-0.15361,4.05923,2.3436],"K9YG":[-0.18702,3.71861,2.85339],"qcjr":[-0.21723,3.31435,3.31435],"SiUx":[-0.24373,2.85339,3.71861],"qMYt":[-0.26606,2.3436,4.05923],"4cDn":[-0.28383,1.79371,4.33041],"tQGS":[-0.29675,1.21314,4.52749],"8DGA":[-0.30459,0.6118,4.6471],"Ccev":[-0.30722,0,4.6872],"Xlsp":[-0.30459,-0.6118,4.6471],"V7Fq":[-0.29675,-1.21314,4.52749],"6mvS":[-0.28383,-1.79371,4.33041],"gI2R":[-0.26606,-2.3436,4.05923],"mj3Z":[-0.24373,-2.85339,3.71861],"rDDX":[-0.21723,-3.31435,3.31435],"E1Gc":[-0.18702,-3.71861,2.85339],"iSHi":[-0.15361,-4.05923,2.3436],"EwKL":[-0.11757,-4.33041,1.79371],"Fxvo":[-0.07951,-4.52749,1.21314],"hi0e":[-0.0401,-4.6471,0.6118]},"faces":{"9EX1pOVP":{"uv":{"dzS6":[6.32489,6.2813],"ueyL":[6.11218,5.25447],"FCnd":[6.24766,5.23552]},"texture":2,"vertices":["FCnd","ueyL","dzS6"]},"EjhCIGv1":{"uv":{"ueyL":[6.11218,5.25447],"FCnd":[6.24766,5.23552],"YyVT":[5.90057,4.22748],"eUcZ":[6.16935,4.18989]},"texture":2,"vertices":["FCnd","eUcZ","YyVT","ueyL"]},"nmWT4oRW":{"uv":{"YyVT":[5.90057,4.22748],"eUcZ":[6.16935,4.18989],"ekFs":[5.69123,3.20018],"8SQa":[6.08876,3.14457]},"texture":2,"vertices":["eUcZ","8SQa","ekFs","YyVT"]},"ccEMMotk":{"uv":{"ekFs":[5.69123,3.20018],"8SQa":[6.08876,3.14457],"YI9F":[5.48536,2.17239],"shRT":[6.0047,2.09974]},"texture":2,"vertices":["8SQa","shRT","YI9F","ekFs"]},"wplStHxJ":{"uv":{"YI9F":[5.48536,2.17239],"shRT":[6.0047,2.09974],"19yC":[5.28394,1.14398],"wXX2":[5.91619,1.05553]},"texture":2,"vertices":["shRT","wXX2","19yC","YI9F"]},"D0Wc43PB":{"uv":{"19yC":[5.28394,1.14398],"wXX2":[5.91619,1.05553],"jgKh":[5.08788,0.11481],"Yp9W":[5.82232,0.01208]},"texture":2,"vertices":["wXX2","Yp9W","jgKh","19yC"]},"PhUPNDtO":{"uv":{"jgKh":[0.78971,36.20373],"Yp9W":[0.04811,36.20373],"ebhk":[0.83491,37.25013],"Gdcn":[0.00291,37.25013]},"texture":2,"vertices":["Yp9W","Gdcn","ebhk","jgKh"]},"RkMoeNvE":{"uv":{"ebhk":[19.38357,30.1711],"Gdcn":[18.5516,30.16411],"rbs0":[19.41286,31.21779],"RJ71":[18.5047,31.21015]},"texture":2,"vertices":["Gdcn","RJ71","rbs0","ebhk"]},"Eszz4KPO":{"uv":{"rbs0":[19.41286,31.21779],"RJ71":[18.5047,31.21015],"Desq":[19.43436,32.26441],"NQfv":[18.4656,32.25626]},"texture":2,"vertices":["RJ71","NQfv","Desq","rbs0"]},"OWNTo0A9":{"uv":{"Desq":[19.43436,32.26441],"NQfv":[18.4656,32.25626],"8g35":[19.44766,33.31095],"d34b":[18.4347,33.30244]},"texture":2,"vertices":["NQfv","d34b","8g35","Desq"]},"PbtxGX6I":{"uv":{"8g35":[19.44766,33.31095],"d34b":[18.4347,33.30244],"lpkI":[19.45226,34.35743],"KknJ":[18.4125,34.34869]},"texture":2,"vertices":["d34b","KknJ","lpkI","8g35"]},"a6u8ebxf":{"uv":{"lpkI":[19.45226,34.35743],"KknJ":[18.4125,34.34869],"tYS7":[19.44786,35.40383],"NNfL":[18.3993,35.39501]},"texture":2,"vertices":["KknJ","NNfL","tYS7","lpkI"]},"y2S78LTk":{"uv":{"tYS7":[19.44786,35.40383],"NNfL":[18.3993,35.39501],"2R23":[19.43466,36.45016],"LFWo":[18.3949,36.44141]},"texture":2,"vertices":["NNfL","LFWo","2R23","tYS7"]},"EX67T9Hl":{"uv":{"2R23":[33.30936,14.11022],"LFWo":[32.2699,14.0836],"Aizj":[33.26917,15.15594],"VKkl":[32.2565,15.13]},"texture":2,"vertices":["LFWo","VKkl","Aizj","2R23"]},"6HO0jJoY":{"uv":{"Aizj":[33.26917,15.15594],"VKkl":[32.2565,15.13],"hraG":[33.22028,16.20143],"34tU":[32.2518,16.17662]},"texture":2,"vertices":["VKkl","34tU","hraG","Aizj"]},"dpsKhDym":{"uv":{"hraG":[33.22028,16.20143],"34tU":[32.2518,16.17662],"kzLc":[33.16319,17.24671],"Kdxx":[32.25529,17.22345]},"texture":2,"vertices":["34tU","Kdxx","kzLc","hraG"]},"rFL4tfiB":{"uv":{"kzLc":[33.16319,17.24671],"Kdxx":[32.25529,17.22345],"ATth":[33.09831,18.29179],"OtIy":[32.26658,18.27049]},"texture":2,"vertices":["Kdxx","OtIy","ATth","kzLc"]},"TE0bRdWn":{"uv":{"ATth":[33.09831,18.29179],"OtIy":[32.26658,18.27049],"j7Wj":[33.02633,19.33669],"FrWA":[32.28497,19.3177]},"texture":2,"vertices":["OtIy","FrWA","j7Wj","ATth"]},"qxHn73qx":{"uv":{"j7Wj":[15.7888,23.48703],"FrWA":[16.51745,23.625],"EQ6y":[16.03417,22.4685],"ILnb":[16.66143,22.58727]},"texture":2,"vertices":["FrWA","ILnb","EQ6y","j7Wj"]},"LB6iPfVc":{"uv":{"EQ6y":[16.03417,22.4685],"ILnb":[16.66143,22.58727],"Wfza":[16.28486,21.45097],"Sd05":[16.8001,21.54853]},"texture":2,"vertices":["ILnb","Sd05","Wfza","EQ6y"]},"tWjiFF9B":{"uv":{"Wfza":[16.28486,21.45097],"Sd05":[16.8001,21.54853],"zI2p":[16.53996,20.43428],"vVEA":[16.93436,20.50896]},"texture":2,"vertices":["Sd05","vVEA","zI2p","Wfza"]},"uQp2DeXm":{"uv":{"zI2p":[16.53996,20.43428],"vVEA":[16.93436,20.50896],"jAM8":[16.79851,19.41824],"VdGI":[17.06517,19.46874]},"texture":2,"vertices":["vVEA","VdGI","jAM8","zI2p"]},"bLs62nip":{"uv":{"jAM8":[16.79851,19.41824],"VdGI":[17.06517,19.46874],"L13P":[17.05931,18.40263],"3mNB":[17.19373,18.42809]},"texture":2,"vertices":["VdGI","3mNB","L13P","jAM8"]},"2tjXlDvE":{"uv":{"XlmK":[17.32438,17.35332],"3mNB":[17.26481,18.40026],"L13P":[17.12903,18.3836]},"texture":2,"vertices":["L13P","3mNB","XlmK"]},"HeBVxzsD":{"uv":{"dzS6":[6.32489,6.2813],"D0MZ":[5.98032,5.2909],"ueyL":[6.11218,5.25447]},"texture":2,"vertices":["ueyL","D0MZ","dzS6"]},"k90s6qql":{"uv":{"D0MZ":[5.98032,5.2909],"ueyL":[6.11218,5.25447],"wxxa":[5.63682,4.3002],"YyVT":[5.89842,4.22793]},"texture":2,"vertices":["ueyL","YyVT","wxxa","D0MZ"]},"BRoa6tBz":{"uv":{"wxxa":[5.63682,4.3002],"YyVT":[5.89842,4.22793],"imsP":[5.29553,3.30889],"ekFs":[5.68243,3.202]},"texture":2,"vertices":["YyVT","ekFs","imsP","wxxa"]},"Io3fDWd5":{"uv":{"imsP":[5.29553,3.30889],"ekFs":[5.68243,3.202],"5GS3":[4.95761,2.31664],"YI9F":[5.46308,2.177]},"texture":2,"vertices":["ekFs","YI9F","5GS3","imsP"]},"HsEn4WWC":{"uv":{"5GS3":[4.95761,2.31664],"YI9F":[5.46308,2.177],"L8Kr":[4.62403,1.3232],"19yC":[5.23939,1.15321]},"texture":2,"vertices":["YI9F","19yC","L8Kr","5GS3"]},"6raTLHKH":{"uv":{"L8Kr":[4.62403,1.3232],"19yC":[5.23939,1.15321],"DVTn":[4.29566,0.32832],"jgKh":[5.01049,0.13085]},"texture":2,"vertices":["19yC","jgKh","DVTn","L8Kr"]},"l4uc8hcA":{"uv":{"DVTn":[1.52855,36.13978],"jgKh":[0.78971,36.20373],"Venp":[1.66381,37.17839],"ebhk":[0.83491,37.25013]},"texture":2,"vertices":["jgKh","ebhk","Venp","DVTn"]},"xQmXKxL1":{"uv":{"Venp":[20.47603,30.18839],"ebhk":[19.64414,30.17439],"M7Vd":[20.49652,31.23528],"rbs0":[19.58845,31.22]},"texture":2,"vertices":["ebhk","rbs0","M7Vd","Venp"]},"4OAtP0ZI":{"uv":{"M7Vd":[20.49652,31.23528],"rbs0":[19.58845,31.22],"Ej5q":[20.50922,32.28204],"Desq":[19.54055,32.26575]},"texture":2,"vertices":["rbs0","Desq","Ej5q","M7Vd"]},"W27GUw6n":{"uv":{"Ej5q":[20.50922,32.28204],"Desq":[19.54055,32.26575],"ZuV3":[20.51372,33.32866],"8g35":[19.50086,33.31163]},"texture":2,"vertices":["Desq","8g35","ZuV3","Ej5q"]},"3novyqlZ":{"uv":{"ZuV3":[20.51372,33.32866],"8g35":[19.50086,33.31163],"dnfW":[20.50951,34.37514],"lpkI":[19.46986,34.35765]},"texture":2,"vertices":["8g35","lpkI","dnfW","ZuV3"]},"aZZfhuUx":{"uv":{"dnfW":[20.50951,34.37514],"lpkI":[19.46986,34.35765],"jGMT":[20.49631,35.42147],"tYS7":[19.44786,35.40383]},"texture":2,"vertices":["lpkI","tYS7","jGMT","dnfW"]},"YHZdDgSn":{"uv":{"jGMT":[20.49631,35.42147],"tYS7":[19.44786,35.40383],"lEc0":[20.47432,36.46764],"2R23":[19.43466,36.45016]},"texture":2,"vertices":["tYS7","2R23","lEc0","jGMT"]},"o577RjDB":{"uv":{"lEc0":[34.3478,14.16346],"2R23":[33.30936,14.11022],"Xj8C":[34.28084,15.2078],"Aizj":[33.26917,15.15594]},"texture":2,"vertices":["2R23","Aizj","Xj8C","lEc0"]},"SPzwsypN":{"uv":{"Xj8C":[34.28084,15.2078],"Aizj":[33.26917,15.15594],"0ChH":[34.20519,16.2517],"hraG":[33.23767,16.2021]},"texture":2,"vertices":["Aizj","hraG","0ChH","Xj8C"]},"p0goPB1o":{"uv":{"0ChH":[34.20519,16.2517],"hraG":[33.23767,16.2021],"Rw3Z":[34.12136,17.29517],"kzLc":[33.21435,17.24868]},"texture":2,"vertices":["hraG","kzLc","Rw3Z","0ChH"]},"iifzbrzD":{"uv":{"Rw3Z":[34.12136,17.29517],"kzLc":[33.21435,17.24868],"DXIf":[34.02974,18.33825],"ATth":[33.19883,18.29565]},"texture":2,"vertices":["kzLc","ATth","DXIf","Rw3Z"]},"ENHns7m3":{"uv":{"DXIf":[34.02974,18.33825],"ATth":[33.19883,18.29565],"eDYQ":[33.93102,19.38096],"j7Wj":[33.1904,19.343]},"texture":2,"vertices":["ATth","j7Wj","eDYQ","DXIf"]},"zXrk14hV":{"uv":{"eDYQ":[15.0179,23.23992],"j7Wj":[15.72288,23.4701],"XgWB":[15.39173,22.26122],"EQ6y":[15.9986,22.45936]},"texture":2,"vertices":["j7Wj","EQ6y","XgWB","eDYQ"]},"fFi34rgS":{"uv":{"XgWB":[15.39173,22.26122],"EQ6y":[15.9986,22.45936],"yPw2":[15.7707,21.28419],"Wfza":[16.2692,21.44695]},"texture":2,"vertices":["EQ6y","Wfza","yPw2","XgWB"]},"IUwHijyy":{"uv":{"yPw2":[15.7707,21.28419],"Wfza":[16.2692,21.44695],"CdiC":[16.15394,20.30855],"zI2p":[16.53552,20.43314]},"texture":2,"vertices":["Wfza","zI2p","CdiC","yPw2"]},"9O8wYLXy":{"uv":{"CdiC":[16.15394,20.30855],"zI2p":[16.53552,20.43314],"O3Mh":[16.54051,19.33401],"jAM8":[16.79851,19.41824]},"texture":2,"vertices":["zI2p","jAM8","O3Mh","CdiC"]},"YmbXGZGk":{"uv":{"O3Mh":[16.54051,19.33401],"jAM8":[16.79851,19.41824],"Zzum":[16.92927,18.36017],"L13P":[17.05931,18.40263]},"texture":2,"vertices":["jAM8","L13P","Zzum","O3Mh"]},"Gj5QwBhk":{"uv":{"XlmK":[17.32438,17.35332],"L13P":[17.12903,18.3836],"Zzum":[16.99657,18.3494]},"texture":2,"vertices":["Zzum","L13P","XlmK"]},"3Dnu8Zde":{"uv":{"dzS6":[6.32489,6.2813],"pswp":[5.85432,5.34418],"D0MZ":[5.98032,5.2909]},"texture":2,"vertices":["D0MZ","pswp","dzS6"]},"BUHRsTaK":{"uv":{"pswp":[5.85432,5.34418],"D0MZ":[5.98032,5.2909],"4PPy":[5.38478,4.40663],"wxxa":[5.63474,4.30092]},"texture":2,"vertices":["D0MZ","wxxa","4PPy","pswp"]},"sCIINMb5":{"uv":{"4PPy":[5.38478,4.40663],"wxxa":[5.63474,4.30092],"jAQt":[4.91734,3.46818],"imsP":[5.28705,3.31184]},"texture":2,"vertices":["wxxa","imsP","jAQt","4PPy"]},"njJN6DI0":{"uv":{"jAQt":[4.91734,3.46818],"imsP":[5.28705,3.31184],"wxVw":[4.45314,2.52837],"5GS3":[4.93612,2.32412]},"texture":2,"vertices":["imsP","5GS3","wxVw","jAQt"]},"N4x842GK":{"uv":{"wxVw":[4.45314,2.52837],"5GS3":[4.93612,2.32412],"jxBy":[3.99307,1.5868],"L8Kr":[4.58106,1.33815]},"texture":2,"vertices":["5GS3","L8Kr","jxBy","wxVw"]},"KxeXHsU9":{"uv":{"jxBy":[3.99307,1.5868],"L8Kr":[4.58106,1.33815],"gKgw":[3.53798,0.64313],"DVTn":[4.22102,0.35429]},"texture":2,"vertices":["L8Kr","DVTn","gKgw","jxBy"]},"ap3lGtx7":{"uv":{"gKgw":[2.25912,36.01236],"DVTn":[1.52855,36.13978],"k8h3":[2.48344,37.03544],"Venp":[1.66381,37.17839]},"texture":2,"vertices":["DVTn","Venp","k8h3","gKgw"]},"Z244mtdd":{"uv":{"k8h3":[21.5683,30.21485],"Venp":[20.73657,30.19386],"ICav":[21.57999,31.26188],"M7Vd":[20.67208,31.23897]},"texture":2,"vertices":["Venp","M7Vd","ICav","k8h3"]},"MF7DrRMX":{"uv":{"ICav":[21.57999,31.26188],"M7Vd":[20.67208,31.23897],"GoBc":[21.58388,32.30871],"Ej5q":[20.61539,32.28427]},"texture":2,"vertices":["M7Vd","Ej5q","GoBc","ICav"]},"SetyjPIj":{"uv":{"GoBc":[21.58388,32.30871],"Ej5q":[20.61539,32.28427],"W78A":[21.57958,33.35534],"ZuV3":[20.5669,33.32978]},"texture":2,"vertices":["Ej5q","ZuV3","W78A","GoBc"]},"Kllwmw7R":{"uv":{"W78A":[21.57958,33.35534],"ZuV3":[20.5669,33.32978],"Kmlx":[21.56658,34.40174],"dnfW":[20.52711,34.37551]},"texture":2,"vertices":["ZuV3","dnfW","Kmlx","W78A"]},"OC4hAAih":{"uv":{"Kmlx":[21.56658,34.40174],"dnfW":[20.52711,34.37551],"kHKB":[21.54458,35.44792],"jGMT":[20.49631,35.42147]},"texture":2,"vertices":["dnfW","jGMT","kHKB","Kmlx"]},"KJrYsWyR":{"uv":{"kHKB":[21.54458,35.44792],"jGMT":[20.49631,35.42147],"yR5g":[21.51379,36.49388],"lEc0":[20.47432,36.46764]},"texture":2,"vertices":["jGMT","lEc0","yR5g","kHKB"]},"dECWEm5i":{"uv":{"yR5g":[35.38453,14.24327],"lEc0":[34.3478,14.16346],"CS5d":[35.29085,15.28555],"Xj8C":[34.28084,15.2078]},"texture":2,"vertices":["lEc0","Xj8C","CS5d","yR5g"]},"gid6rsZc":{"uv":{"CS5d":[35.29085,15.28555],"Xj8C":[34.28084,15.2078],"CSxr":[35.1885,16.32717],"0ChH":[34.22256,16.25281]},"texture":2,"vertices":["Xj8C","0ChH","CSxr","CS5d"]},"gQPMeSpi":{"uv":{"CSxr":[35.1885,16.32717],"0ChH":[34.22256,16.25281],"JJrw":[35.07797,17.36816],"Rw3Z":[34.17245,17.29845]},"texture":2,"vertices":["0ChH","Rw3Z","JJrw","CSxr"]},"x31adXdX":{"uv":{"JJrw":[35.07797,17.36816],"Rw3Z":[34.17245,17.29845],"OoPq":[34.95967,18.40855],"DXIf":[34.13012,18.34469]},"texture":2,"vertices":["Rw3Z","DXIf","OoPq","JJrw"]},"8Vu4w0S4":{"uv":{"OoPq":[34.95967,18.40855],"DXIf":[34.13012,18.34469],"IhEI":[34.83429,19.44839],"eDYQ":[34.09487,19.39147]},"texture":2,"vertices":["DXIf","eDYQ","IhEI","OoPq"]},"7KPkrx8d":{"uv":{"IhEI":[14.28501,22.8961],"eDYQ":[14.95469,23.21469],"PCTh":[14.78114,21.97335],"XgWB":[15.35763,22.2476]},"texture":2,"vertices":["eDYQ","XgWB","PCTh","IhEI"]},"escs14Li":{"uv":{"PCTh":[14.78114,21.97335],"XgWB":[15.35763,22.2476],"MKY2":[15.28214,21.05291],"yPw2":[15.75568,21.27819]},"texture":2,"vertices":["XgWB","yPw2","MKY2","PCTh"]},"g2k0IaXP":{"uv":{"MKY2":[15.28214,21.05291],"yPw2":[15.75568,21.27819],"m3CV":[15.78721,20.13441],"CdiC":[16.14968,20.30685]},"texture":2,"vertices":["yPw2","CdiC","m3CV","MKY2"]},"NMPAteZJ":{"uv":{"m3CV":[15.78721,20.13441],"CdiC":[16.14968,20.30685],"p3aS":[16.29543,19.21741],"O3Mh":[16.54051,19.33401]},"texture":2,"vertices":["CdiC","O3Mh","p3aS","m3CV"]},"777EdcQ4":{"uv":{"p3aS":[16.29543,19.21741],"O3Mh":[16.54051,19.33401],"L1sa":[16.80574,18.30141],"Zzum":[16.92927,18.36017]},"texture":2,"vertices":["O3Mh","Zzum","L1sa","p3aS"]},"3qP7NHds":{"uv":{"XlmK":[17.32438,17.35332],"Zzum":[16.99657,18.3494],"L1sa":[16.8697,18.29825]},"texture":2,"vertices":["L1sa","Zzum","XlmK"]},"saVASIoG":{"uv":{"dzS6":[6.32489,6.2813],"sI4c":[5.73634,5.41341],"pswp":[5.85432,5.34418]},"texture":2,"vertices":["pswp","sI4c","dzS6"]},"Ti0CeWXH":{"uv":{"sI4c":[5.73634,5.41341],"pswp":[5.85432,5.34418],"iYxY":[5.14873,4.54496],"4PPy":[5.38281,4.40761]},"texture":2,"vertices":["pswp","4PPy","iYxY","sI4c"]},"1ROZBn1D":{"uv":{"iYxY":[5.14873,4.54496],"4PPy":[5.38281,4.40761],"8K8s":[4.56311,3.67535],"jAQt":[4.90932,3.47221]},"texture":2,"vertices":["4PPy","jAQt","8K8s","iYxY"]},"VVTFsX3H":{"uv":{"8K8s":[4.56311,3.67535],"jAQt":[4.90932,3.47221],"70Pw":[3.98051,2.80396],"wxVw":[4.4328,2.53858]},"texture":2,"vertices":["jAQt","wxVw","70Pw","8K8s"]},"juX6Ri4w":{"uv":{"70Pw":[3.98051,2.80396],"wxVw":[4.4328,2.53858],"tGbh":[3.4018,1.9303],"jxBy":[3.95241,1.60722]},"texture":2,"vertices":["wxVw","jxBy","tGbh","70Pw"]},"MYrkqqD8":{"uv":{"tGbh":[3.4018,1.9303],"jxBy":[3.95241,1.60722],"rc3v":[2.82773,1.0539],"gKgw":[3.46736,0.6786]},"texture":2,"vertices":["jxBy","gKgw","rc3v","tGbh"]},"A3vSqs2z":{"uv":{"4718":[3.28768,36.82234],"rc3v":[2.97598,35.82242],"gKgw":[2.25912,36.01236],"k8h3":[2.48344,37.03544]},"texture":2,"vertices":["gKgw","k8h3","4718","rc3v"]},"KpM5af3s":{"uv":{"4718":[3.28768,36.82234],"k8h3":[2.48344,37.03544],"MIVz":[3.59252,37.82408],"ICav":[2.71462,38.05669]},"texture":2,"vertices":["k8h3","ICav","MIVz","4718"]},"HdhCkhfz":{"uv":{"MIVz":[22.6632,31.29759],"ICav":[21.75551,31.26705],"y0YN":[22.65829,32.34442],"GoBc":[21.69004,32.31184]},"texture":2,"vertices":["ICav","GoBc","y0YN","MIVz"]},"OsEh2TqB":{"uv":{"y0YN":[22.65829,32.34442],"GoBc":[21.69004,32.31184],"rMzY":[22.64518,33.39097],"W78A":[21.63276,33.3569]},"texture":2,"vertices":["GoBc","W78A","rMzY","y0YN"]},"QajyMmB5":{"uv":{"rMzY":[22.64518,33.39097],"W78A":[21.63276,33.3569],"yrNM":[22.62338,34.43723],"Kmlx":[21.58417,34.40226]},"texture":2,"vertices":["W78A","Kmlx","yrNM","rMzY"]},"j8keXjnV":{"uv":{"yrNM":[22.62338,34.43723],"Kmlx":[21.58417,34.40226],"Zv2c":[22.59259,35.48319],"kHKB":[21.54458,35.44792]},"texture":2,"vertices":["Kmlx","kHKB","Zv2c","yrNM"]},"K1fUf6mx":{"uv":{"Zv2c":[22.59259,35.48319],"kHKB":[21.54458,35.44792],"BCHK":[22.553,36.52885],"yR5g":[21.51379,36.49388]},"texture":2,"vertices":["kHKB","yR5g","BCHK","Zv2c"]},"u4xKN2PG":{"uv":{"BCHK":[36.41888,14.3496],"yR5g":[35.38453,14.24327],"iUUp":[36.29854,15.38915],"CS5d":[35.29085,15.28555]},"texture":2,"vertices":["yR5g","CS5d","iUUp","BCHK"]},"N8tCseWd":{"uv":{"iUUp":[36.29854,15.38915],"CS5d":[35.29085,15.28555],"qRiV":[36.16955,16.4278],"CSxr":[35.20583,16.32873]},"texture":2,"vertices":["CS5d","CSxr","qRiV","iUUp"]},"Jpqc421p":{"uv":{"qRiV":[36.16955,16.4278],"CSxr":[35.20583,16.32873],"29YH":[36.0324,17.46562],"JJrw":[35.12896,17.37274]},"texture":2,"vertices":["CSxr","JJrw","29YH","qRiV"]},"pMC9qBk9":{"uv":{"29YH":[36.0324,17.46562],"JJrw":[35.12896,17.37274],"b7jV":[35.88749,18.50263],"OoPq":[35.05986,18.41755]},"texture":2,"vertices":["JJrw","OoPq","b7jV","29YH"]},"Es575hRu":{"uv":{"b7jV":[35.88749,18.50263],"OoPq":[35.05986,18.41755],"rBxn":[35.73552,19.53893],"IhEI":[34.99781,19.46309]},"texture":2,"vertices":["OoPq","IhEI","rBxn","b7jV"]},"WHX4Q0rk":{"uv":{"rBxn":[13.60221,22.46123],"IhEI":[14.22556,22.86298],"pNY6":[14.21245,21.60963],"PCTh":[14.74906,21.95547]},"texture":2,"vertices":["IhEI","PCTh","pNY6","rBxn"]},"xi6hQDQR":{"uv":{"pNY6":[14.21245,21.60963],"PCTh":[14.74906,21.95547],"OYPC":[14.82723,20.76096],"MKY2":[15.26802,21.04504]},"texture":2,"vertices":["PCTh","MKY2","OYPC","pNY6"]},"rgBpI6M4":{"uv":{"OYPC":[14.82723,20.76096],"MKY2":[15.26802,21.04504],"wSiY":[15.4458,19.91472],"m3CV":[15.7832,20.13218]},"texture":2,"vertices":["MKY2","m3CV","wSiY","OYPC"]},"96It3ATj":{"uv":{"wSiY":[15.4458,19.91472],"m3CV":[15.7832,20.13218],"SQpH":[16.06731,19.07039],"p3aS":[16.29543,19.21741]},"texture":2,"vertices":["m3CV","p3aS","SQpH","wSiY"]},"kvxMImOg":{"uv":{"SQpH":[16.06731,19.07039],"p3aS":[16.29543,19.21741],"mTMg":[16.69075,18.2273],"L1sa":[16.80574,18.30141]},"texture":2,"vertices":["p3aS","L1sa","mTMg","SQpH"]},"jfAcd6TX":{"uv":{"XlmK":[17.32438,17.35332],"L1sa":[16.8697,18.29825],"mTMg":[16.75056,18.23102]},"texture":2,"vertices":["mTMg","L1sa","XlmK"]},"2skALDbZ":{"uv":{"dzS6":[6.32489,6.2813],"sIyE":[5.62836,5.49741],"sI4c":[5.73634,5.41341]},"texture":2,"vertices":["sI4c","sIyE","dzS6"]},"uylr73wc":{"uv":{"sIyE":[5.62836,5.49741],"sI4c":[5.73634,5.41341],"SIWo":[4.93271,4.71285],"iYxY":[5.14692,4.54619]},"texture":2,"vertices":["sI4c","iYxY","SIWo","sIyE"]},"HKrI3LQK":{"uv":{"SIWo":[4.93271,4.71285],"iYxY":[5.14692,4.54619],"oRNk":[4.23887,3.92687],"8K8s":[4.55568,3.68039]},"texture":2,"vertices":["iYxY","8K8s","oRNk","SIWo"]},"FW25B2r8":{"uv":{"oRNk":[4.23887,3.92687],"8K8s":[4.55568,3.68039],"tUO5":[3.54779,3.13874],"70Pw":[3.96168,2.81673]},"texture":2,"vertices":["8K8s","70Pw","tUO5","oRNk"]},"pUaL4Oq6":{"uv":{"tUO5":[3.54779,3.13874],"70Pw":[3.96168,2.81673],"vK0b":[2.86026,2.34785],"tGbh":[3.36414,1.95584]},"texture":2,"vertices":["70Pw","tGbh","vK0b","tUO5"]},"7uBeVWwg":{"uv":{"vK0b":[2.86026,2.34785],"tGbh":[3.36414,1.95584],"R8yG":[2.177,1.55364],"rc3v":[2.76232,1.09826]},"texture":2,"vertices":["tGbh","rc3v","R8yG","vK0b"]},"RUDvwgeQ":{"uv":{"4718":[3.28768,36.82234],"R8yG":[3.67379,35.57137],"rc3v":[2.97598,35.82242],"sp1t":[4.07056,36.54068]},"texture":2,"vertices":["rc3v","4718","sp1t","R8yG"]},"nLou5KfC":{"uv":{"4718":[3.28768,36.82234],"sp1t":[4.07056,36.54068],"CyId":[4.46065,37.5124],"MIVz":[3.60607,37.81985]},"texture":2,"vertices":["4718","MIVz","CyId","sp1t"]},"lNxBM9G6":{"uv":{"CyId":[4.46065,37.5124],"MIVz":[3.60607,37.81985],"Lne3":[4.84339,38.48676],"y0YN":[3.93179,38.81473]},"texture":2,"vertices":["MIVz","y0YN","Lne3","CyId"]},"plXFAQKg":{"uv":{"Lne3":[23.73236,32.38916],"y0YN":[22.76441,32.34844],"mcaX":[23.71045,33.43557],"rMzY":[22.69835,33.39298]},"texture":2,"vertices":["y0YN","rMzY","mcaX","Lne3"]},"wQwt5kmG":{"uv":{"mcaX":[23.71045,33.43557],"rMzY":[22.69835,33.39298],"lQl8":[23.67985,34.48161],"yrNM":[22.64097,34.4379]},"texture":2,"vertices":["rMzY","yrNM","lQl8","mcaX"]},"OSVn5Zo4":{"uv":{"lQl8":[23.67985,34.48161],"yrNM":[22.64097,34.4379],"LKJR":[23.64026,35.52727],"Zv2c":[22.59259,35.48319]},"texture":2,"vertices":["yrNM","Zv2c","LKJR","lQl8"]},"WJhLOxCo":{"uv":{"LKJR":[23.64026,35.52727],"Zv2c":[22.59259,35.48319],"W9Mv":[23.59188,36.57256],"BCHK":[22.553,36.52885]},"texture":2,"vertices":["Zv2c","BCHK","W9Mv","LKJR"]},"DBkzkvES":{"uv":{"W9Mv":[37.45016,14.48239],"BCHK":[36.41888,14.3496],"Edfb":[37.30325,15.51851],"iUUp":[36.29854,15.38915]},"texture":2,"vertices":["BCHK","iUUp","Edfb","W9Mv"]},"pgKlLkOM":{"uv":{"Edfb":[37.30325,15.51851],"iUUp":[36.29854,15.38915],"E8ci":[37.1477,16.55352],"qRiV":[36.18683,16.4298]},"texture":2,"vertices":["iUUp","qRiV","E8ci","Edfb"]},"AnuOkR1z":{"uv":{"E8ci":[37.1477,16.55352],"qRiV":[36.18683,16.4298],"oJ9Y":[36.98402,17.58748],"29YH":[36.08326,17.4715]},"texture":2,"vertices":["qRiV","29YH","oJ9Y","E8ci"]},"XMUU1LLS":{"uv":{"oJ9Y":[36.98402,17.58748],"29YH":[36.08326,17.4715],"14lT":[36.81261,18.62045],"b7jV":[35.98742,18.5142]},"texture":2,"vertices":["29YH","b7jV","14lT","oJ9Y"]},"xOcae9lz":{"uv":{"14lT":[36.81261,18.62045],"b7jV":[35.98742,18.5142],"8F54":[36.63415,19.65251],"rBxn":[35.89862,19.55781]},"texture":2,"vertices":["b7jV","rBxn","8F54","14lT"]},"0hhAWPYb":{"uv":{"8F54":[12.98073,21.94247],"rBxn":[13.54748,22.42076],"5UGP":[13.69504,21.17606],"pNY6":[14.18292,21.58779]},"texture":2,"vertices":["rBxn","pNY6","5UGP","8F54"]},"xuRVRHpl":{"uv":{"5UGP":[13.69504,21.17606],"pNY6":[14.18292,21.58779],"VkdO":[14.41348,20.41314],"OYPC":[14.81424,20.75135]},"texture":2,"vertices":["pNY6","OYPC","VkdO","5UGP"]},"1quBMRAP":{"uv":{"VkdO":[14.41348,20.41314],"OYPC":[14.81424,20.75135],"Xef2":[15.13535,19.65311],"wSiY":[15.44211,19.912]},"texture":2,"vertices":["OYPC","wSiY","Xef2","VkdO"]},"bRP3Ezhb":{"uv":{"Xef2":[15.13535,19.65311],"wSiY":[15.44211,19.912],"2LSJ":[15.8599,18.89535],"SQpH":[16.06731,19.07039]},"texture":2,"vertices":["wSiY","SQpH","2LSJ","Xef2"]},"WI8BYyVM":{"uv":{"2LSJ":[15.8599,18.89535],"SQpH":[16.06731,19.07039],"Si0k":[16.5862,18.13907],"mTMg":[16.69075,18.2273]},"texture":2,"vertices":["SQpH","mTMg","Si0k","2LSJ"]},"sOptYMTL":{"uv":{"XlmK":[17.32438,17.35332],"mTMg":[16.75056,18.23102],"Si0k":[16.64118,18.14885]},"texture":2,"vertices":["Si0k","mTMg","XlmK"]},"xojfpUgI":{"uv":{"dzS6":[6.32489,6.2813],"KcFi":[5.53225,5.59475],"sIyE":[5.62836,5.49741]},"texture":2,"vertices":["sIyE","KcFi","dzS6"]},"Xcg0JAHG":{"uv":{"KcFi":[5.53225,5.59475],"sIyE":[5.62836,5.49741],"kMiR":[4.74038,4.90742],"SIWo":[4.93107,4.7143]},"texture":2,"vertices":["sIyE","SIWo","kMiR","KcFi"]},"MEpIQSoV":{"uv":{"kMiR":[4.74038,4.90742],"SIWo":[4.93107,4.7143],"f1Zk":[3.95012,4.21845],"oRNk":[4.23216,3.93283]},"texture":2,"vertices":["SIWo","oRNk","f1Zk","kMiR"]},"DUMe1rIf":{"uv":{"f1Zk":[3.95012,4.21845],"oRNk":[4.23216,3.93283],"UClt":[3.16233,3.52699],"tUO5":[3.53078,3.15385]},"texture":2,"vertices":["oRNk","tUO5","UClt","f1Zk"]},"qYarzBQR":{"uv":{"UClt":[3.16233,3.52699],"tUO5":[3.53078,3.15385],"AHO6":[2.3777,2.83233],"vK0b":[2.82625,2.37807]},"texture":2,"vertices":["tUO5","vK0b","AHO6","UClt"]},"ThFOJpCd":{"uv":{"AHO6":[2.3777,2.83233],"vK0b":[2.82625,2.37807],"lGmN":[1.59686,2.13383],"R8yG":[2.11792,1.60613]},"texture":2,"vertices":["vK0b","R8yG","lGmN","AHO6"]},"UinK1RvM":{"uv":{"lGmN":[4.34736,35.26108],"R8yG":[3.67379,35.57137],"Xefg":[4.82623,36.19257],"sp1t":[4.07056,36.54068]},"texture":2,"vertices":["R8yG","sp1t","Xefg","lGmN"]},"DAqku0Og":{"uv":{"Xefg":[4.82623,36.19257],"sp1t":[4.07056,36.54068],"PwoL":[5.29866,37.12703],"CyId":[4.47377,37.50703]},"texture":2,"vertices":["sp1t","CyId","PwoL","Xefg"]},"RjUwn493":{"uv":{"PwoL":[5.29866,37.12703],"CyId":[4.47377,37.50703],"5dlO":[5.764,38.06476],"Lne3":[4.88407,38.47011]},"texture":2,"vertices":["CyId","Lne3","5dlO","PwoL"]},"YUz1yOH3":{"uv":{"5dlO":[5.764,38.06476],"Lne3":[4.88407,38.47011],"lL4W":[6.22189,39.00592],"mcaX":[5.30182,39.42976]},"texture":2,"vertices":["Lne3","mcaX","lL4W","5dlO"]},"2wvo34er":{"uv":{"lL4W":[6.22189,39.00592],"mcaX":[5.30182,39.42976],"GShs":[6.67188,39.95071],"lQl8":[5.72747,40.38577]},"texture":2,"vertices":["mcaX","lQl8","GShs","lL4W"]},"TfzWMvdr":{"uv":{"GShs":[4.1206,18],"lQl8":[3.0808,18],"AURH":[4.125,19],"LKJR":[3.0764,19]},"texture":2,"vertices":["lQl8","LKJR","AURH","GShs"]},"FbbMitm7":{"uv":{"AURH":[24.68753,35.58015],"LKJR":[23.64026,35.52727],"8ni9":[24.63035,36.625],"W9Mv":[23.59188,36.57256]},"texture":2,"vertices":["LKJR","W9Mv","8ni9","AURH"]},"ar7Ou46N":{"uv":{"8ni9":[38.47771,14.64153],"W9Mv":[37.45016,14.48239],"um08":[38.30431,15.67355],"Edfb":[37.30325,15.51851]},"texture":2,"vertices":["W9Mv","Edfb","um08","8ni9"]},"QOl3ileP":{"uv":{"um08":[38.30431,15.67355],"Edfb":[37.30325,15.51851],"rTgc":[38.12231,16.70424],"E8ci":[37.16493,16.55596]},"texture":2,"vertices":["Edfb","E8ci","rTgc","um08"]},"JLsMmXhv":{"uv":{"rTgc":[38.12231,16.70424],"E8ci":[37.16493,16.55596],"GlqO":[37.93221,17.73368],"oJ9Y":[37.03471,17.59467]},"texture":2,"vertices":["E8ci","oJ9Y","GlqO","rTgc"]},"HRAJ1GAc":{"uv":{"GlqO":[14.94684,6.17159],"oJ9Y":[14.05215,6.32764],"qFbM":[15.0891,7.20897],"14lT":[14.26947,7.35193]},"texture":2,"vertices":["oJ9Y","14lT","qFbM","GlqO"]},"gdCtmqAn":{"uv":{"qFbM":[15.0891,7.20897],"14lT":[14.26947,7.35193],"Dibu":[15.22436,8.24758],"8F54":[14.49379,8.375]},"texture":2,"vertices":["14lT","8F54","Dibu","qFbM"]},"huqAFk1b":{"uv":{"Dibu":[12.43083,21.34837],"8F54":[12.93164,21.89532],"GXtZ":[13.23743,20.67978],"5UGP":[13.66855,21.15062]},"texture":2,"vertices":["8F54","5UGP","GXtZ","Dibu"]},"hxU6kkea":{"uv":{"GXtZ":[13.23743,20.67978],"5UGP":[13.66855,21.15062],"4l0f":[14.04768,20.01517],"VkdO":[14.40181,20.40194]},"texture":2,"vertices":["5UGP","VkdO","4l0f","GXtZ"]},"Otn1ACjW":{"uv":{"4l0f":[14.04768,20.01517],"VkdO":[14.40181,20.40194],"B4oj":[14.86097,19.35389],"Xef2":[15.13204,19.64993]},"texture":2,"vertices":["VkdO","Xef2","B4oj","4l0f"]},"EgrajMqO":{"uv":{"B4oj":[14.86097,19.35389],"Xef2":[15.13204,19.64993],"6sos":[15.67662,18.69518],"2LSJ":[15.8599,18.89535]},"texture":2,"vertices":["Xef2","2LSJ","6sos","B4oj"]},"1QRLSlVc":{"uv":{"6sos":[15.67662,18.69518],"2LSJ":[15.8599,18.89535],"52p0":[16.49382,18.03817],"Si0k":[16.5862,18.13907]},"texture":2,"vertices":["2LSJ","Si0k","52p0","6sos"]},"ZqDeGcpX":{"uv":{"XlmK":[17.32438,17.35332],"Si0k":[16.64118,18.14885],"52p0":[16.54343,18.05315]},"texture":2,"vertices":["52p0","Si0k","XlmK"]},"P6urtSm5":{"uv":{"dzS6":[6.32489,6.2813],"DIN1":[5.44962,5.70378],"KcFi":[5.53225,5.59475]},"texture":2,"vertices":["KcFi","DIN1","dzS6"]},"A3GLyXYs":{"uv":{"DIN1":[5.44962,5.70378],"KcFi":[5.53225,5.59475],"KFxO":[4.57501,5.12538],"kMiR":[4.73894,4.90908]},"texture":2,"vertices":["KcFi","kMiR","KFxO","DIN1"]},"Mb0Daj6o":{"uv":{"KFxO":[4.57501,5.12538],"kMiR":[4.73894,4.90908],"SOeq":[3.70179,4.54515],"f1Zk":[3.94424,4.22524]},"texture":2,"vertices":["kMiR","f1Zk","SOeq","KFxO"]},"kXiIwaX3":{"uv":{"SOeq":[3.70179,4.54515],"f1Zk":[3.94424,4.22524],"sikJ":[2.83069,3.96213],"UClt":[3.14743,3.54419]},"texture":2,"vertices":["f1Zk","UClt","sikJ","SOeq"]},"2aKDkqVp":{"uv":{"sikJ":[2.83069,3.96213],"UClt":[3.14743,3.54419],"iPPg":[1.96231,3.37552],"AHO6":[2.34791,2.86673]},"texture":2,"vertices":["UClt","AHO6","iPPg","sikJ"]},"KNnQ2M3q":{"uv":{"iPPg":[1.96231,3.37552],"AHO6":[2.34791,2.86673],"oQJn":[1.09718,2.78461],"lGmN":[1.54512,2.19357]},"texture":2,"vertices":["AHO6","lGmN","oQJn","iPPg"]},"r527Py6m":{"uv":{"oQJn":[4.99166,34.89386],"lGmN":[4.34736,35.26108],"kcQV":[5.54907,35.78059],"Xefg":[4.82623,36.19257]},"texture":2,"vertices":["lGmN","Xefg","kcQV","oQJn"]},"YIIK2w3T":{"uv":{"kcQV":[5.54907,35.78059],"Xefg":[4.82623,36.19257],"X0WB":[6.10032,36.67084],"PwoL":[5.31127,37.12055]},"texture":2,"vertices":["Xefg","PwoL","X0WB","kcQV"]},"a5XFr9rK":{"uv":{"X0WB":[6.10032,36.67084],"PwoL":[5.31127,37.12055],"z1py":[6.64478,37.56494],"5dlO":[5.80309,38.04466]},"texture":2,"vertices":["PwoL","5dlO","z1py","X0WB"]},"SdWO8Ucv":{"uv":{"z1py":[0.98559,23.31406],"5dlO":[0.01764,23.35478],"lZOI":[1.05165,24.35861],"lL4W":[0.03955,24.40119]},"texture":2,"vertices":["5dlO","lL4W","lZOI","z1py"]},"a4TZJcj3":{"uv":{"lZOI":[1.05165,24.35861],"lL4W":[0.03955,24.40119],"mZXQ":[1.10903,25.40352],"GShs":[0.07015,25.44723]},"texture":2,"vertices":["lL4W","GShs","mZXQ","lZOI"]},"D88fDuOh":{"uv":{"mZXQ":[1.10903,25.40352],"GShs":[0.07015,25.44723],"HNOW":[1.15741,26.44881],"AURH":[0.10974,26.49289]},"texture":2,"vertices":["GShs","AURH","HNOW","mZXQ"]},"qotmyOFA":{"uv":{"HNOW":[1.15741,26.44881],"AURH":[0.10974,26.49289],"XBki":[1.197,27.49447],"8ni9":[0.15812,27.53818]},"texture":2,"vertices":["AURH","8ni9","XBki","HNOW"]},"FWyGSJM9":{"uv":{"XBki":[1.197,27.49447],"8ni9":[0.15812,27.53818],"8Fz3":[1.2276,28.54051],"um08":[0.2155,28.58309]},"texture":2,"vertices":["8ni9","um08","8Fz3","XBki"]},"zDLe6GL9":{"uv":{"8Fz3":[1.2276,28.54051],"um08":[0.2155,28.58309],"DYeO":[1.24951,29.58691],"rTgc":[0.28156,29.62763]},"texture":2,"vertices":["um08","rTgc","DYeO","8Fz3"]},"EFmZhooL":{"uv":{"DYeO":[1.24951,29.58691],"rTgc":[0.28156,29.62763],"Oy8l":[1.26322,30.63366],"GlqO":[0.35582,30.67184]},"texture":2,"vertices":["rTgc","GlqO","Oy8l","DYeO"]},"OQ0Ys0YF":{"uv":{"Oy8l":[15.86573,6.09144],"GlqO":[14.96091,6.16976],"rT6R":[15.918,7.13723],"qFbM":[15.0891,7.20897]},"texture":2,"vertices":["GlqO","qFbM","rT6R","Oy8l"]},"CTYbcj9M":{"uv":{"rT6R":[15.918,7.13723],"qFbM":[15.0891,7.20897],"AV1D":[15.9632,8.18363],"Dibu":[15.22436,8.24758]},"texture":2,"vertices":["qFbM","Dibu","AV1D","rT6R"]},"VaoJfvq3":{"uv":{"AV1D":[11.96157,20.68872],"Dibu":[12.38819,21.29533],"qKrb":[12.84717,20.12897],"GXtZ":[13.21442,20.65116]},"texture":2,"vertices":["Dibu","GXtZ","qKrb","AV1D"]},"X61sJEcM":{"uv":{"qKrb":[12.84717,20.12897],"GXtZ":[13.21442,20.65116],"s11s":[13.73588,19.57363],"4l0f":[14.03755,20.00257]},"texture":2,"vertices":["GXtZ","4l0f","s11s","qKrb"]},"Bklsd0md":{"uv":{"s11s":[13.73588,19.57363],"4l0f":[14.03755,20.00257],"Foto":[14.62718,19.02198],"B4oj":[14.85809,19.35031]},"texture":2,"vertices":["4l0f","B4oj","Foto","s11s"]},"lM2PqXIQ":{"uv":{"Foto":[14.62718,19.02198],"B4oj":[14.85809,19.35031],"Smnk":[15.52049,18.47319],"6sos":[15.67662,18.69518]},"texture":2,"vertices":["B4oj","6sos","Smnk","Foto"]},"tIjeXLmK":{"uv":{"Smnk":[15.52049,18.47319],"6sos":[15.67662,18.69518],"NCbZ":[16.41512,17.92628],"52p0":[16.49382,18.03817]},"texture":2,"vertices":["6sos","52p0","NCbZ","Smnk"]},"Dqpr8Wkn":{"uv":{"XlmK":[17.32438,17.35332],"52p0":[16.54343,18.05315],"NCbZ":[16.45898,17.94553]},"texture":2,"vertices":["NCbZ","52p0","XlmK"]},"qR4umVo0":{"uv":{"dzS6":[6.32489,6.2813],"WT97":[5.38188,5.82264],"DIN1":[5.44962,5.70378]},"texture":2,"vertices":["DIN1","WT97","dzS6"]},"p61w3DCc":{"uv":{"WT97":[5.38188,5.82264],"DIN1":[5.44962,5.70378],"fEQ5":[4.43943,5.36301],"KFxO":[4.5738,5.12721]},"texture":2,"vertices":["DIN1","KFxO","fEQ5","WT97"]},"HVHMsyf4":{"uv":{"fEQ5":[4.43943,5.36301],"KFxO":[4.5738,5.12721],"A7cC":[3.49811,4.90139],"SOeq":[3.69685,4.55264]},"texture":2,"vertices":["KFxO","SOeq","A7cC","fEQ5"]},"SdkrIkgO":{"uv":{"A7cC":[3.49811,4.90139],"SOeq":[3.69685,4.55264],"3nVE":[2.55852,4.43673],"sikJ":[2.81816,3.98112]},"texture":2,"vertices":["SOeq","sikJ","3nVE","A7cC"]},"d75iCZHD":{"uv":{"3nVE":[2.55852,4.43673],"sikJ":[2.81816,3.98112],"X52T":[1.62116,3.96815],"iPPg":[1.93725,3.4135]},"texture":2,"vertices":["sikJ","iPPg","X52T","3nVE"]},"XklvxjlI":{"uv":{"X52T":[1.62116,3.96815],"iPPg":[1.93725,3.4135],"d46V":[0.68648,3.49489],"oQJn":[1.05366,2.85057]},"texture":2,"vertices":["iPPg","oQJn","d46V","X52T"]},"l3qwTvCJ":{"uv":{"d46V":[5.6019,34.47246],"oQJn":[4.99166,34.89386],"lmno":[6.2337,35.30782],"kcQV":[5.54907,35.78059]},"texture":2,"vertices":["oQJn","kcQV","lmno","d46V"]},"Gm8Epcyy":{"uv":{"lmno":[6.2337,35.30782],"kcQV":[5.54907,35.78059],"LbYW":[6.85965,36.14721],"X0WB":[6.11233,36.66329]},"texture":2,"vertices":["kcQV","X0WB","LbYW","lmno"]},"gVW3pqC2":{"uv":{"LbYW":[1.99449,22.23267],"X0WB":[1.0868,22.26321],"TYgs":[2.05996,23.27746],"z1py":[1.09171,23.31004]},"texture":2,"vertices":["X0WB","z1py","TYgs","LbYW"]},"vjUuqmfi":{"uv":{"TYgs":[2.05996,23.27746],"z1py":[1.09171,23.31004],"RxRj":[2.11724,24.32252],"lZOI":[1.10482,24.35659]},"texture":2,"vertices":["z1py","lZOI","RxRj","TYgs"]},"M5mspCMS":{"uv":{"RxRj":[2.11724,24.32252],"lZOI":[1.10482,24.35659],"TcPs":[2.16583,25.36788],"mZXQ":[1.12662,25.40285]},"texture":2,"vertices":["lZOI","mZXQ","TcPs","RxRj"]},"PvXVjmc8":{"uv":{"TcPs":[2.16583,25.36788],"mZXQ":[1.12662,25.40285],"ut7H":[2.20542,26.41354],"HNOW":[1.15741,26.44881]},"texture":2,"vertices":["mZXQ","HNOW","ut7H","TcPs"]},"k0TZkg18":{"uv":{"ut7H":[2.20542,26.41354],"HNOW":[1.15741,26.44881],"q8I5":[2.23621,27.4595],"XBki":[1.197,27.49447]},"texture":2,"vertices":["HNOW","XBki","q8I5","ut7H"]},"378CLkov":{"uv":{"q8I5":[2.23666,27.47738],"XBki":[1.197,27.49447],"qeor":[2.24046,28.52385],"8Fz3":[1.2276,28.54051]},"texture":2,"vertices":["XBki","8Fz3","qeor","q8I5"]},"1xM1664O":{"uv":{"qeor":[2.24046,28.52385],"8Fz3":[1.2276,28.54051],"XoWO":[2.23557,29.57048],"DYeO":[1.2669,29.5864]},"texture":2,"vertices":["8Fz3","DYeO","XoWO","qeor"]},"9VQWbsTl":{"uv":{"5542":[2.22247,30.61723],"XoWO":[2.23557,29.57048],"DYeO":[1.2669,29.5864],"Oy8l":[1.3144,30.63216]},"texture":2,"vertices":["DYeO","Oy8l","5542","XoWO"]},"2sGkVJht":{"uv":{"5542":[2.22247,30.61723],"Oy8l":[1.3144,30.63216],"8jpf":[2.20158,31.66412],"rT6R":[1.36969,31.67779]},"texture":2,"vertices":["Oy8l","rT6R","8jpf","5542"]},"JzW7IpRt":{"uv":{"8jpf":[16.75,7.13723],"rT6R":[15.918,7.13723],"LAdy":[16.7048,8.18363],"AV1D":[15.9632,8.18363]},"texture":2,"vertices":["rT6R","AV1D","LAdy","8jpf"]},"WziCS4ra":{"uv":{"LAdy":[11.58067,19.9744],"AV1D":[11.92607,20.63065],"FEA8":[12.53069,19.5327],"qKrb":[12.82802,20.09764]},"texture":2,"vertices":["AV1D","qKrb","FEA8","LAdy"]},"HZTWnpfu":{"uv":{"FEA8":[12.53069,19.5327],"qKrb":[12.82802,20.09764],"ynjt":[13.48321,19.09579],"s11s":[13.72745,19.55984]},"texture":2,"vertices":["qKrb","s11s","ynjt","FEA8"]},"k1yjW38C":{"uv":{"ynjt":[13.48321,19.09579],"s11s":[13.72745,19.55984],"TwD7":[14.43783,18.66286],"Foto":[14.62479,19.01806]},"texture":2,"vertices":["s11s","Foto","TwD7","ynjt"]},"RC9Bs7wR":{"uv":{"TwD7":[14.43783,18.66286],"Foto":[14.62479,19.01806],"lGtk":[15.39409,18.23302],"Smnk":[15.52049,18.47319]},"texture":2,"vertices":["Foto","Smnk","lGtk","TwD7"]},"ThYy3mlG":{"uv":{"lGtk":[15.39409,18.23302],"Smnk":[15.52049,18.47319],"gxy8":[16.35141,17.80522],"NCbZ":[16.41512,17.92628]},"texture":2,"vertices":["Smnk","NCbZ","gxy8","lGtk"]},"9xRkNicS":{"uv":{"XlmK":[17.32438,17.35332],"NCbZ":[16.45898,17.94553],"gxy8":[16.38925,17.82783]},"texture":2,"vertices":["gxy8","NCbZ","XlmK"]},"sxO4A3nO":{"uv":{"dzS6":[6.32489,6.2813],"M2tl":[5.3302,5.9493],"WT97":[5.38188,5.82264]},"texture":2,"vertices":["WT97","M2tl","dzS6"]},"fU3M86Yd":{"uv":{"M2tl":[5.3302,5.9493],"WT97":[5.38188,5.82264],"C5Zm":[4.33593,5.61627],"fEQ5":[4.43847,5.36499]},"texture":2,"vertices":["WT97","fEQ5","C5Zm","M2tl"]},"rxODFW4K":{"uv":{"C5Zm":[4.33593,5.61627],"fEQ5":[4.43847,5.36499],"jP6K":[3.34253,5.28112],"A7cC":[3.49418,4.90947]},"texture":2,"vertices":["fEQ5","A7cC","jP6K","C5Zm"]},"reIiKvFY":{"uv":{"jP6K":[3.34253,5.28112],"A7cC":[3.49418,4.90947],"7uYC":[2.35045,4.94272],"3nVE":[2.54857,4.45719]},"texture":2,"vertices":["A7cC","3nVE","7uYC","jP6K"]},"MiFPz3XT":{"uv":{"7uYC":[2.35045,4.94272],"3nVE":[2.54857,4.45719],"hcUJ":[1.36007,4.60016],"X52T":[1.60126,4.00907]},"texture":2,"vertices":["3nVE","X52T","hcUJ","7uYC"]},"dzB6xpVm":{"uv":{"hcUJ":[1.36007,4.60016],"X52T":[1.60126,4.00907],"JZnf":[0.37173,4.2526],"d46V":[0.65191,3.56596]},"texture":2,"vertices":["X52T","d46V","JZnf","hcUJ"]},"u4pQGmll":{"uv":{"JZnf":[6.17352,34],"d46V":[5.6019,34.47246],"tYNr":[6.875,34.77777],"lmno":[6.2337,35.30782]},"texture":2,"vertices":["d46V","lmno","tYNr","JZnf"]},"zdbPg0Op":{"uv":{"tYNr":[3.01343,21.15949],"lmno":[2.1817,21.18047],"JfJC":[3.07792,22.20459],"LbYW":[2.17001,22.2275]},"texture":2,"vertices":["lmno","LbYW","JfJC","tYNr"]},"TqLOyaBj":{"uv":{"JfJC":[3.07792,22.20459],"LbYW":[2.17001,22.2275],"7yT6":[3.13461,23.24989],"TYgs":[2.16612,23.27433]},"texture":2,"vertices":["LbYW","TYgs","7yT6","JfJC"]},"0FX2v3oE":{"uv":{"7yT6":[3.13461,23.24989],"TYgs":[2.16612,23.27433],"aaFl":[3.1831,24.2954],"RxRj":[2.17042,24.32096]},"texture":2,"vertices":["TYgs","RxRj","aaFl","7yT6"]},"KSsWVg3C":{"uv":{"aaFl":[3.1831,24.2954],"RxRj":[2.17042,24.32096],"y6Wl":[3.22289,25.34113],"TcPs":[2.18342,25.36736]},"texture":2,"vertices":["RxRj","TcPs","y6Wl","aaFl"]},"8aUKkJVU":{"uv":{"y6Wl":[3.22289,25.34113],"TcPs":[2.18342,25.36736],"jea4":[3.25369,26.38709],"ut7H":[2.20542,26.41354]},"texture":2,"vertices":["TcPs","ut7H","jea4","y6Wl"]},"tgA9gJ1o":{"uv":{"jea4":[3.25369,26.38709],"ut7H":[2.20542,26.41354],"PXuC":[3.27568,27.43327],"q8I5":[2.23621,27.4595]},"texture":2,"vertices":["ut7H","q8I5","PXuC","jea4"]},"mhrzKVOF":{"uv":{"PXuC":[3.27642,27.48691],"q8I5":[2.23666,27.47738],"mGBf":[3.25342,28.53315],"qeor":[2.24046,28.52385]},"texture":2,"vertices":["q8I5","qeor","mGBf","PXuC"]},"ethupCCA":{"uv":{"mGBf":[3.25342,28.53315],"qeor":[2.24046,28.52385],"bxS2":[3.22173,29.5793],"XoWO":[2.25297,29.57041]},"texture":2,"vertices":["qeor","XoWO","bxS2","mGBf"]},"1K5XHrhy":{"uv":{"5542":[2.27367,30.61705],"bxS2":[3.22173,29.5793],"XoWO":[2.25297,29.57041],"oNJP":[3.18183,30.62538]},"texture":2,"vertices":["XoWO","5542","oNJP","bxS2"]},"OuLYKL5O":{"uv":{"5542":[2.27367,30.61705],"oNJP":[3.18183,30.62538],"n21f":[3.13413,31.67138],"8jpf":[2.30217,31.66375]},"texture":2,"vertices":["5542","8jpf","n21f","oNJP"]},"c5x6U7Ls":{"uv":{"n21f":[3.13413,31.67138],"8jpf":[2.30217,31.66375],"NKQi":[3.07934,32.71732],"LAdy":[2.33777,32.71052]},"texture":2,"vertices":["8jpf","LAdy","NKQi","n21f"]},"ZKUVnxRJ":{"uv":{"NKQi":[11.29442,19.21717],"LAdy":[11.55291,19.91226],"GvtR":[12.29319,18.90081],"FEA8":[12.5157,19.49918]},"texture":2,"vertices":["LAdy","FEA8","GvtR","NKQi"]},"sxRkLh0P":{"uv":{"GvtR":[12.29319,18.90081],"FEA8":[12.5157,19.49918],"qBo8":[13.29384,18.58951],"ynjt":[13.47662,19.08103]},"texture":2,"vertices":["FEA8","ynjt","qBo8","GvtR"]},"LFjD6b6v":{"uv":{"qBo8":[13.29384,18.58951],"ynjt":[13.47662,19.08103],"6Q3w":[14.29605,18.28244],"TwD7":[14.43596,18.65866]},"texture":2,"vertices":["ynjt","TwD7","6Q3w","qBo8"]},"5qyziy4u":{"uv":{"6Q3w":[14.29605,18.28244],"TwD7":[14.43596,18.65866],"lI22":[15.29949,17.97864],"lGtk":[15.39409,18.23302]},"texture":2,"vertices":["TwD7","lGtk","lI22","6Q3w"]},"ywBo6jPu":{"uv":{"lI22":[15.29949,17.97864],"lGtk":[15.39409,18.23302],"Z5sC":[16.30373,17.677],"gxy8":[16.35141,17.80522]},"texture":2,"vertices":["lGtk","gxy8","Z5sC","lI22"]},"2ORQI1l9":{"uv":{"XlmK":[17.32438,17.35332],"gxy8":[16.38925,17.82783],"Z5sC":[16.33544,17.70206]},"texture":2,"vertices":["Z5sC","gxy8","XlmK"]},"9L2TiLJ4":{"uv":{"dzS6":[6.32489,6.2813],"ITbb":[5.29544,6.08161],"M2tl":[5.3302,5.9493]},"texture":2,"vertices":["M2tl","ITbb","dzS6"]},"PvrjMDJ6":{"uv":{"ITbb":[5.29544,6.08161],"M2tl":[5.3302,5.9493],"Bj56":[4.26628,5.88085],"C5Zm":[4.33523,5.61835]},"texture":2,"vertices":["M2tl","C5Zm","Bj56","ITbb"]},"cVwvHAgB":{"uv":{"Bj56":[4.26628,5.88085],"C5Zm":[4.33523,5.61835],"I1iD":[3.2377,5.67786],"jP6K":[3.33968,5.28964]},"texture":2,"vertices":["C5Zm","jP6K","I1iD","Bj56"]},"uSe4WUCI":{"uv":{"I1iD":[3.2377,5.67786],"jP6K":[3.33968,5.28964],"VnQS":[2.21001,5.4715],"7uYC":[2.34324,4.9643]},"texture":2,"vertices":["jP6K","7uYC","VnQS","I1iD"]},"jYaadiPb":{"uv":{"VnQS":[2.21001,5.4715],"7uYC":[2.34324,4.9643],"hxI1":[1.18347,5.26077],"hcUJ":[1.34566,4.64332]},"texture":2,"vertices":["7uYC","hcUJ","hxI1","VnQS"]},"XmH6q03p":{"uv":{"hxI1":[1.18347,5.26077],"hcUJ":[1.34566,4.64332],"xpud":[0.15829,5.04483],"JZnf":[0.3467,4.32756]},"texture":2,"vertices":["hcUJ","JZnf","xpud","hxI1"]},"6XNzhbNj":{"uv":{"xpud":[8.9632,14.06395],"JZnf":[8.22436,14],"oe2v":[8.918,15.11035],"tYNr":[8.0891,15.0386]},"texture":2,"vertices":["JZnf","tYNr","oe2v","xpud"]},"VBwN6fvm":{"uv":{"oe2v":[4.10586,21.14001],"tYNr":[3.27397,21.15401],"eCuc":[4.16155,22.18562],"JfJC":[3.25348,22.2009]},"texture":2,"vertices":["tYNr","JfJC","eCuc","oe2v"]},"PyMyXwdS":{"uv":{"eCuc":[4.16155,22.18562],"JfJC":[3.25348,22.2009],"Ez2r":[4.20945,23.23137],"7yT6":[3.24078,23.24766]},"texture":2,"vertices":["JfJC","7yT6","Ez2r","eCuc"]},"5JMHvIUL":{"uv":{"Ez2r":[4.20945,23.23137],"7yT6":[3.24078,23.24766],"sSKI":[4.24914,24.27725],"aaFl":[3.23628,24.29428]},"texture":2,"vertices":["7yT6","aaFl","sSKI","Ez2r"]},"QO56nHVH":{"uv":{"sSKI":[4.24914,24.27725],"aaFl":[3.23628,24.29428],"7eu6":[4.28014,25.32327],"y6Wl":[3.24049,25.34076]},"texture":2,"vertices":["aaFl","y6Wl","7eu6","sSKI"]},"by6zyscy":{"uv":{"7eu6":[4.28014,25.32327],"y6Wl":[3.24049,25.34076],"GXQs":[4.30214,26.36945],"jea4":[3.25369,26.38709]},"texture":2,"vertices":["y6Wl","jea4","GXQs","7eu6"]},"sabqeSSe":{"uv":{"GXQs":[4.30214,26.36945],"jea4":[3.25369,26.38709],"r8nf":[4.31534,27.41578],"PXuC":[3.27568,27.43327]},"texture":2,"vertices":["jea4","PXuC","r8nf","GXQs"]},"5FyxLH6Z":{"uv":{"r8nf":[4.31559,27.52307],"PXuC":[3.27642,27.48691],"jbbD":[4.26581,28.56837],"mGBf":[3.25342,28.53315]},"texture":2,"vertices":["PXuC","mGBf","jbbD","r8nf"]},"rGpmyPN2":{"uv":{"jbbD":[4.26581,28.56837],"mGBf":[3.25342,28.53315],"QLhl":[4.20733,29.61337],"bxS2":[3.23912,29.57968]},"texture":2,"vertices":["mGBf","bxS2","QLhl","jbbD"]},"WsXeDrr0":{"uv":{"QLhl":[4.20733,29.61337],"bxS2":[3.23912,29.57968],"B5SF":[4.14066,30.65808],"oNJP":[3.23301,30.6265]},"texture":2,"vertices":["bxS2","oNJP","B5SF","QLhl"]},"65UnICib":{"uv":{"B5SF":[4.14066,30.65808],"oNJP":[3.23301,30.6265],"uPXw":[4.0662,31.70253],"n21f":[3.2347,31.67359]},"texture":2,"vertices":["oNJP","n21f","uPXw","B5SF"]},"Gr2m3L87":{"uv":{"uPXw":[4.0662,31.70253],"n21f":[3.2347,31.67359],"gnu4":[3.98464,32.74672],"NKQi":[3.24349,32.72093]},"texture":2,"vertices":["n21f","NKQi","gnu4","uPXw"]},"GeavWi6X":{"uv":{"gnu4":[11.10753,18.4295],"NKQi":[11.27484,19.15198],"okW7":[12.1386,18.2437],"GvtR":[12.28263,18.86564]},"texture":2,"vertices":["NKQi","GvtR","okW7","gnu4"]},"eCxJUYY7":{"uv":{"okW7":[12.1386,18.2437],"GvtR":[12.28263,18.86564],"tKzt":[13.17088,18.06315],"qBo8":[13.28919,18.57403]},"texture":2,"vertices":["GvtR","qBo8","tKzt","okW7"]},"yrwuEApu":{"uv":{"tKzt":[13.17088,18.06315],"qBo8":[13.28919,18.57403],"wSVc":[14.20417,17.88699],"6Q3w":[14.29473,18.27804]},"texture":2,"vertices":["qBo8","6Q3w","wSVc","tKzt"]},"TqJnBa8a":{"uv":{"wSVc":[14.20417,17.88699],"6Q3w":[14.29473,18.27804],"ebb6":[15.23826,17.71424],"lI22":[15.29949,17.97864]},"texture":2,"vertices":["6Q3w","lI22","ebb6","wSVc"]},"CYkOyhxy":{"uv":{"ebb6":[15.23826,17.71424],"lI22":[15.29949,17.97864],"p9U0":[16.27287,17.54372],"Z5sC":[16.30373,17.677]},"texture":2,"vertices":["lI22","Z5sC","p9U0","ebb6"]},"NpgqWd1n":{"uv":{"XlmK":[17.32438,17.35332],"Z5sC":[16.33544,17.70206],"p9U0":[16.29845,17.57036]},"texture":2,"vertices":["p9U0","Z5sC","XlmK"]},"j3p2oRS9":{"uv":{"dzS6":[6.32489,6.2813],"DaJ4":[5.27821,6.21732],"ITbb":[5.29544,6.08161]},"texture":2,"vertices":["ITbb","DaJ4","dzS6"]},"n3j0A9uJ":{"uv":{"DaJ4":[5.27821,6.21732],"ITbb":[5.29544,6.08161],"B06O":[4.23167,6.15224],"Bj56":[4.26586,5.883]},"texture":2,"vertices":["ITbb","Bj56","B06O","DaJ4"]},"lBbHrSvb":{"uv":{"B06O":[4.23167,6.15224],"Bj56":[4.26586,5.883],"JnPe":[3.18542,6.08488],"I1iD":[3.23599,5.68668]},"texture":2,"vertices":["Bj56","I1iD","JnPe","B06O"]},"ZYWwW94z":{"uv":{"JnPe":[3.18542,6.08488],"I1iD":[3.23599,5.68668],"zWcz":[2.13961,6.01405],"VnQS":[2.20568,5.49383]},"texture":2,"vertices":["I1iD","VnQS","zWcz","JnPe"]},"t4nPEpF8":{"uv":{"zWcz":[2.13961,6.01405],"VnQS":[2.20568,5.49383],"UYqZ":[1.09436,5.93876],"hxI1":[1.1748,5.30544]},"texture":2,"vertices":["VnQS","hxI1","UYqZ","zWcz"]},"8Sc3bu2e":{"uv":{"UYqZ":[1.09436,5.93876],"hxI1":[1.1748,5.30544],"fjAb":[0.0498,5.8581],"xpud":[0.14324,5.12241]},"texture":2,"vertices":["hxI1","xpud","fjAb","UYqZ"]},"dOw9uq5X":{"uv":{"fjAb":[9.7048,14.06395],"xpud":[8.9632,14.06395],"Ugos":[9.75,15.11035],"oe2v":[8.918,15.11035]},"texture":2,"vertices":["xpud","oe2v","Ugos","fjAb"]},"fROiLDaS":{"uv":{"Ugos":[5.1984,21.12973],"oe2v":[4.36643,21.13673],"Wn2u":[5.2453,22.17577],"eCuc":[4.33714,22.18341]},"texture":2,"vertices":["oe2v","eCuc","Wn2u","Ugos"]},"YunnDW88":{"uv":{"Wn2u":[5.2453,22.17577],"eCuc":[4.33714,22.18341],"nOTl":[5.2844,23.22188],"Ez2r":[4.31564,23.23003]},"texture":2,"vertices":["eCuc","Ez2r","nOTl","Wn2u"]},"A5HcGhrQ":{"uv":{"nOTl":[5.2844,23.22188],"Ez2r":[4.31564,23.23003],"9PSn":[5.3153,24.26806],"sSKI":[4.30234,24.27658]},"texture":2,"vertices":["Ez2r","sSKI","9PSn","nOTl"]},"BtsDi5Ld":{"uv":{"9PSn":[5.3153,24.26806],"sSKI":[4.30234,24.27658],"smFV":[5.3375,25.31431],"7eu6":[4.29774,25.32305]},"texture":2,"vertices":["sSKI","7eu6","smFV","9PSn"]},"2ainO6Sv":{"uv":{"smFV":[5.3375,25.31431],"7eu6":[4.29774,25.32305],"hYWp":[5.3507,26.36063],"GXQs":[4.30214,26.36945]},"texture":2,"vertices":["7eu6","GXQs","hYWp","smFV"]},"oPih4048":{"uv":{"hYWp":[5.3507,26.36063],"GXQs":[4.30214,26.36945],"3PlH":[5.3551,27.40703],"r8nf":[4.31534,27.41578]},"texture":2,"vertices":["GXQs","r8nf","3PlH","hYWp"]},"yvMy8lgC":{"uv":{"3PlH":[5.35349,27.58583],"r8nf":[4.31559,27.52307],"wDxy":[5.27696,28.62951],"jbbD":[4.26581,28.56837]},"texture":2,"vertices":["r8nf","jbbD","wDxy","3PlH"]},"xXWa8Tz1":{"uv":{"wDxy":[5.27696,28.62951],"jbbD":[4.26581,28.56837],"NKar":[5.19175,29.67267],"QLhl":[4.22471,29.6142]},"texture":2,"vertices":["jbbD","QLhl","NKar","wDxy"]},"9TGicBz8":{"uv":{"NKar":[5.19175,29.67267],"QLhl":[4.22471,29.6142],"Il3w":[5.09835,30.71533],"B5SF":[4.1918,30.66052]},"texture":2,"vertices":["QLhl","B5SF","Il3w","NKar"]},"cMmEn8N9":{"uv":{"Il3w":[5.09835,30.71533],"B5SF":[4.1918,30.66052],"q90q":[4.99716,31.75753],"uPXw":[4.16668,31.70731]},"texture":2,"vertices":["B5SF","uPXw","q90q","Il3w"]},"IiFsDfYB":{"uv":{"q90q":[4.99716,31.75753],"uPXw":[4.16668,31.70731],"rP7n":[4.88889,32.79929],"gnu4":[4.14864,32.75453]},"texture":2,"vertices":["uPXw","gnu4","rP7n","q90q"]},"dS23ZYlm":{"uv":{"rP7n":[11.02308,17.62439],"gnu4":[11.09647,18.36235],"S4Qf":[12.06945,17.5722],"okW7":[12.13262,18.20746]},"texture":2,"vertices":["gnu4","okW7","S4Qf","rP7n"]},"6vymHEYm":{"uv":{"S4Qf":[12.06945,17.5722],"okW7":[12.13262,18.20746],"Ij7C":[13.11636,17.52537],"tKzt":[13.16825,18.0472]},"texture":2,"vertices":["okW7","tKzt","Ij7C","S4Qf"]},"5KDYRNT5":{"uv":{"Ij7C":[13.11636,17.52537],"tKzt":[13.16825,18.0472],"qtaD":[14.16371,17.48303],"wSVc":[14.20343,17.88246]},"texture":2,"vertices":["tKzt","wSVc","qtaD","Ij7C"]},"TN34uKxV":{"uv":{"qtaD":[14.16371,17.48303],"wSVc":[14.20343,17.88246],"qdYi":[15.21141,17.44417],"ebb6":[15.23826,17.71424]},"texture":2,"vertices":["wSVc","ebb6","qdYi","qtaD"]},"yZ3jSRQ7":{"uv":{"qdYi":[15.21141,17.44417],"ebb6":[15.23826,17.71424],"vOMP":[16.25933,17.4076],"p9U0":[16.27287,17.54372]},"texture":2,"vertices":["ebb6","p9U0","vOMP","qdYi"]},"UPmrTBYo":{"uv":{"XlmK":[17.32438,17.35332],"p9U0":[16.29845,17.57036],"vOMP":[16.27893,17.43496]},"texture":2,"vertices":["vOMP","p9U0","XlmK"]},"Cyre4aMu":{"uv":{"dzS6":[6.32489,6.2813],"xaLw":[5.27879,6.35412],"DaJ4":[5.27821,6.21732]},"texture":2,"vertices":["DaJ4","xaLw","dzS6"]},"g4F9Kq94":{"uv":{"xaLw":[5.27879,6.35412],"DaJ4":[5.27821,6.21732],"XU1B":[4.23268,6.42583],"B06O":[4.23153,6.15443]},"texture":2,"vertices":["DaJ4","B06O","XU1B","xaLw"]},"XfCteOpb":{"uv":{"XU1B":[4.23268,6.42583],"B06O":[4.23153,6.15443],"PN6p":[3.18656,6.49524],"JnPe":[3.18487,6.09385]},"texture":2,"vertices":["B06O","JnPe","PN6p","XU1B"]},"r4O6ID9x":{"uv":{"PN6p":[3.18656,6.49524],"JnPe":[3.18487,6.09385],"s9Q0":[2.14043,6.56116],"zWcz":[2.13822,6.03676]},"texture":2,"vertices":["JnPe","zWcz","s9Q0","PN6p"]},"HJadaElr":{"uv":{"s9Q0":[2.14043,6.56116],"zWcz":[2.13822,6.03676],"wO14":[1.09428,6.62257],"UYqZ":[1.09159,5.98417]},"texture":2,"vertices":["zWcz","UYqZ","wO14","s9Q0"]},"lPQC6iQN":{"uv":{"wO14":[1.09428,6.62257],"UYqZ":[1.09159,5.98417],"aL7s":[0.04811,6.67858],"fjAb":[0.04498,5.93699]},"texture":2,"vertices":["UYqZ","fjAb","aL7s","wO14"]},"LUHlIAyn":{"uv":{"aL7s":[6.35142,20.08054],"fjAb":[5.60992,20.06807],"ElKc":[6.37901,21.12755],"Ugos":[5.54713,21.11356]},"texture":2,"vertices":["fjAb","Ugos","ElKc","aL7s"]},"KxPeCrBK":{"uv":{"ElKc":[6.37901,21.12755],"Ugos":[5.54713,21.11356],"4odO":[6.39951,22.17444],"Wn2u":[5.49143,22.15917]},"texture":2,"vertices":["Ugos","Wn2u","4odO","ElKc"]},"3T89L2oA":{"uv":{"4odO":[6.39951,22.17444],"Wn2u":[5.49143,22.15917],"90mp":[6.4122,23.22121],"nOTl":[5.44354,23.20491]},"texture":2,"vertices":["Wn2u","nOTl","90mp","4odO"]},"1nt2ECX9":{"uv":{"90mp":[6.4122,23.22121],"nOTl":[5.44354,23.20491],"92FH":[6.4167,24.26783],"9PSn":[5.40384,24.25079]},"texture":2,"vertices":["nOTl","9PSn","92FH","90mp"]},"JTIVLjWY":{"uv":{"92FH":[6.4167,24.26783],"9PSn":[5.40384,24.25079],"R8pu":[6.4125,25.31431],"smFV":[5.37285,25.29682]},"texture":2,"vertices":["9PSn","smFV","R8pu","92FH"]},"HrHWcCn5":{"uv":{"R8pu":[6.4125,25.31431],"smFV":[5.37285,25.29682],"SdP4":[6.3993,26.36063],"hYWp":[5.35085,26.343]},"texture":2,"vertices":["smFV","hYWp","SdP4","R8pu"]},"33QfZpvD":{"uv":{"SdP4":[6.3993,26.36063],"hYWp":[5.3507,26.36063],"an7O":[6.3949,27.40703],"3PlH":[5.3551,27.40703]},"texture":2,"vertices":["hYWp","3PlH","an7O","SdP4"]},"eZhJH8ff":{"uv":{"an7O":[6.39651,27.58583],"3PlH":[5.36055,27.67514],"OrND":[6.47304,28.62951],"wDxy":[5.46378,28.71653]},"texture":2,"vertices":["3PlH","wDxy","OrND","an7O"]},"wqwjGsjx":{"uv":{"OrND":[6.47304,28.62951],"wDxy":[5.46378,28.71653],"2uQO":[6.5409,29.67394],"NKar":[5.57568,29.75716]},"texture":2,"vertices":["wDxy","NKar","2uQO","OrND"]},"rAOpYgBW":{"uv":{"2uQO":[6.5409,29.67394],"NKar":[5.57568,29.75716],"nZdu":[6.6006,30.71908],"Il3w":[5.69575,30.79709]},"texture":2,"vertices":["NKar","Il3w","nZdu","2uQO"]},"JfeKTJw4":{"uv":{"nZdu":[6.6006,30.71908],"Il3w":[5.69575,30.79709],"LJFA":[6.65252,31.76488],"q90q":[5.82359,31.83635]},"texture":2,"vertices":["Il3w","q90q","LJFA","nZdu"]},"15RoqqmJ":{"uv":{"LJFA":[6.65252,31.76488],"q90q":[5.82359,31.83635],"hmRh":[6.69737,32.8113],"rP7n":[5.95851,32.875]},"texture":2,"vertices":["q90q","rP7n","hmRh","LJFA"]},"ociCpDp9":{"uv":{"hmRh":[11.04247,16.81509],"rP7n":[11.02071,17.55637],"I6FG":[12.0869,16.89737],"S4Qf":[12.06817,17.53549]},"texture":2,"vertices":["rP7n","S4Qf","I6FG","hmRh"]},"bsGnDhnY":{"uv":{"I6FG":[12.0869,16.89737],"S4Qf":[12.06817,17.53549],"SUtx":[13.13118,16.98504],"Ij7C":[13.1158,17.50922]},"texture":2,"vertices":["S4Qf","Ij7C","SUtx","I6FG"]},"Vr1b78mo":{"uv":{"SUtx":[13.13118,16.98504],"Ij7C":[13.1158,17.50922],"EqAn":[14.17533,17.07721],"qtaD":[14.16355,17.47844]},"texture":2,"vertices":["Ij7C","qtaD","EqAn","SUtx"]},"kN9H7epS":{"uv":{"EqAn":[14.17533,17.07721],"qtaD":[14.16355,17.47844],"IJYO":[15.21937,17.17288],"qdYi":[15.21141,17.44417]},"texture":2,"vertices":["qtaD","qdYi","IJYO","EqAn"]},"2B07af2h":{"uv":{"IJYO":[15.21937,17.17288],"qdYi":[15.21141,17.44417],"Kh3Z":[16.26334,17.27085],"vOMP":[16.25933,17.4076]},"texture":2,"vertices":["qdYi","vOMP","Kh3Z","IJYO"]},"NyWQIKlY":{"uv":{"XlmK":[17.32438,17.35332],"vOMP":[16.27893,17.43496],"Kh3Z":[16.2772,17.29817]},"texture":2,"vertices":["Kh3Z","vOMP","XlmK"]},"ERkCBn4W":{"uv":{"dzS6":[6.32489,6.2813],"vwX0":[5.29717,6.48968],"xaLw":[5.27879,6.35412]},"texture":2,"vertices":["xaLw","vwX0","dzS6"]},"1sRgDTfj":{"uv":{"vwX0":[5.29717,6.48968],"xaLw":[5.27879,6.35412],"KiMd":[4.2693,6.69696],"XU1B":[4.23283,6.42802]},"texture":2,"vertices":["xaLw","XU1B","KiMd","vwX0"]},"dLYi1G8w":{"uv":{"KiMd":[4.2693,6.69696],"XU1B":[4.23283,6.42802],"29rM":[3.24112,6.90196],"PN6p":[3.18719,6.5042]},"texture":2,"vertices":["XU1B","PN6p","29rM","KiMd"]},"1s7tUph5":{"uv":{"29rM":[3.24112,6.90196],"PN6p":[3.18719,6.5042],"JpVz":[2.21247,7.1035],"s9Q0":[2.14201,6.58385]},"texture":2,"vertices":["PN6p","s9Q0","JpVz","29rM"]},"O3mcHX0Y":{"uv":{"JpVz":[2.21247,7.1035],"s9Q0":[2.14201,6.58385],"gM7e":[1.18321,7.30057],"wO14":[1.09744,6.66796]},"texture":2,"vertices":["s9Q0","wO14","gM7e","JpVz"]},"LKwEmvcj":{"uv":{"gM7e":[1.18321,7.30057],"wO14":[1.09744,6.66796],"kqon":[0.15324,7.4923],"aL7s":[0.0536,6.75742]},"texture":2,"vertices":["wO14","aL7s","kqon","gM7e"]},"mMUMJ38E":{"uv":{"kqon":[8.7868,17.06395],"aL7s":[8.0452,17.06395],"ZT83":[8.832,18.11035],"ElKc":[8,18.11035]},"texture":2,"vertices":["aL7s","ElKc","ZT83","kqon"]},"qOdfPvLY":{"uv":{"ZT83":[7.38357,21.13673],"ElKc":[6.5516,21.12973],"IgDs":[7.41286,22.18341],"4odO":[6.5047,22.17577]},"texture":2,"vertices":["ElKc","4odO","IgDs","ZT83"]},"kdzU5JLk":{"uv":{"IgDs":[7.41286,22.18341],"4odO":[6.5047,22.17577],"lmg4":[7.43436,23.23003],"90mp":[6.4656,23.22188]},"texture":2,"vertices":["4odO","90mp","lmg4","IgDs"]},"F7u2A29O":{"uv":{"lmg4":[7.43436,23.23003],"90mp":[6.4656,23.22188],"h6Nj":[7.44766,24.27658],"92FH":[6.4347,24.26806]},"texture":2,"vertices":["90mp","92FH","h6Nj","lmg4"]},"bjiAPnB9":{"uv":{"h6Nj":[7.44766,24.27658],"92FH":[6.4347,24.26806],"QwaE":[7.45226,25.32305],"R8pu":[6.4125,25.31431]},"texture":2,"vertices":["92FH","R8pu","QwaE","h6Nj"]},"o8gSux3f":{"uv":{"QwaE":[7.45226,25.32305],"R8pu":[6.4125,25.31431],"yldl":[7.44786,26.36945],"SdP4":[6.3993,26.36063]},"texture":2,"vertices":["R8pu","SdP4","yldl","QwaE"]},"G1801ang":{"uv":{"yldl":[7.44786,26.36945],"SdP4":[6.3993,26.36063],"idZ5":[7.43466,27.41578],"an7O":[6.3949,27.40703]},"texture":2,"vertices":["SdP4","an7O","idZ5","yldl"]},"rzgkUdkc":{"uv":{"idZ5":[7.43441,27.52307],"an7O":[6.39651,27.58583],"24Fn":[7.48419,28.56837],"OrND":[6.47304,28.62951]},"texture":2,"vertices":["an7O","OrND","24Fn","idZ5"]},"M1N3MO0B":{"uv":{"24Fn":[7.48419,28.56837],"OrND":[6.47304,28.62951],"EVnZ":[7.52529,29.6142],"2uQO":[6.55825,29.67267]},"texture":2,"vertices":["OrND","2uQO","EVnZ","24Fn"]},"u9jhP60g":{"uv":{"EVnZ":[7.52529,29.6142],"2uQO":[6.55825,29.67267],"8L0A":[7.5582,30.66052],"nZdu":[6.65165,30.71533]},"texture":2,"vertices":["2uQO","nZdu","8L0A","EVnZ"]},"8aYh7FBj":{"uv":{"8L0A":[7.5582,30.66052],"nZdu":[6.65165,30.71533],"yTY5":[7.58332,31.70731],"LJFA":[6.75284,31.75753]},"texture":2,"vertices":["nZdu","LJFA","yTY5","8L0A"]},"HbKSKsld":{"uv":{"yTY5":[7.58332,31.70731],"LJFA":[6.75284,31.75753],"wDAk":[7.60136,32.75453],"hmRh":[6.86111,32.79929]},"texture":2,"vertices":["LJFA","hmRh","wDAk","yTY5"]},"TLnV9Hyw":{"uv":{"wDAk":[11.16536,16.01494],"hmRh":[11.04883,16.74733],"Fv4L":[12.19065,16.23034],"I6FG":[12.09033,16.8608]},"texture":2,"vertices":["hmRh","I6FG","Fv4L","wDAk"]},"IbhRovXx":{"uv":{"Fv4L":[12.19065,16.23034],"I6FG":[12.09033,16.8608],"3e0s":[13.2151,16.45106],"SUtx":[13.13269,16.96895]},"texture":2,"vertices":["I6FG","SUtx","3e0s","Fv4L"]},"3jaOsWMF":{"uv":{"3e0s":[13.2151,16.45106],"SUtx":[13.13269,16.96895],"fTrh":[14.23883,16.67623],"EqAn":[14.17575,17.07264]},"texture":2,"vertices":["SUtx","EqAn","fTrh","3e0s"]},"pHzrhNXM":{"uv":{"fTrh":[14.23883,16.67623],"EqAn":[14.17575,17.07264],"Twy7":[15.26202,16.90486],"IJYO":[15.21937,17.17288]},"texture":2,"vertices":["EqAn","IJYO","Twy7","fTrh"]},"iQXQ1QCQ":{"uv":{"Twy7":[15.26202,16.90486],"IJYO":[15.21937,17.17288],"Vgvl":[16.28484,17.13575],"Kh3Z":[16.26334,17.27085]},"texture":2,"vertices":["IJYO","Kh3Z","Vgvl","Twy7"]},"dCo1CRS3":{"uv":{"XlmK":[17.32438,17.35332],"Kh3Z":[16.2772,17.29817],"Vgvl":[16.29329,17.16232]},"texture":2,"vertices":["Vgvl","Kh3Z","XlmK"]},"1Qp5Cmw6":{"uv":{"dzS6":[6.32489,6.2813],"v5b9":[5.33304,6.62169],"vwX0":[5.29717,6.48968]},"texture":2,"vertices":["vwX0","v5b9","dzS6"]},"7ivXfxc5":{"uv":{"v5b9":[5.33304,6.62169],"vwX0":[5.29717,6.48968],"eCta":[4.3409,6.96101],"KiMd":[4.26973,6.69911]},"texture":2,"vertices":["vwX0","KiMd","eCta","v5b9"]},"VtLklTl6":{"uv":{"eCta":[4.3409,6.96101],"KiMd":[4.26973,6.69911],"ApXF":[3.34815,7.29812],"29rM":[3.2429,6.91076]},"texture":2,"vertices":["KiMd","29rM","ApXF","eCta"]},"usXfrGYb":{"uv":{"ApXF":[3.34815,7.29812],"29rM":[3.2429,6.91076],"JXSP":[2.35449,7.63185],"JpVz":[2.21699,7.1258]},"texture":2,"vertices":["29rM","JpVz","JXSP","ApXF"]},"jNJHlKNb":{"uv":{"JXSP":[2.35449,7.63185],"JpVz":[2.21699,7.1258],"xxUF":[1.35965,7.96123],"gM7e":[1.19226,7.34517]},"texture":2,"vertices":["JpVz","gM7e","xxUF","JXSP"]},"cMx2s8MR":{"uv":{"xxUF":[1.35965,7.96123],"gM7e":[1.19226,7.34517],"Go6q":[0.3634,8.2854],"kqon":[0.16894,7.56975]},"texture":2,"vertices":["gM7e","kqon","Go6q","xxUF"]},"qWv1FIqr":{"uv":{"Go6q":[9.52564,17],"kqon":[8.7868,17.06395],"muxV":[9.6609,18.0386],"ZT83":[8.832,18.11035]},"texture":2,"vertices":["kqon","ZT83","muxV","Go6q"]},"yJscByRl":{"uv":{"muxV":[8.47603,21.15401],"ZT83":[7.64414,21.14001],"pzDb":[8.49652,22.2009],"IgDs":[7.58845,22.18562]},"texture":2,"vertices":["ZT83","IgDs","pzDb","muxV"]},"AfV6tFxZ":{"uv":{"pzDb":[8.49652,22.2009],"IgDs":[7.58845,22.18562],"hDxT":[8.50922,23.24766],"lmg4":[7.54055,23.23137]},"texture":2,"vertices":["IgDs","lmg4","hDxT","pzDb"]},"y3LBnb8X":{"uv":{"hDxT":[8.50922,23.24766],"lmg4":[7.54055,23.23137],"vARC":[8.51372,24.29428],"h6Nj":[7.50086,24.27725]},"texture":2,"vertices":["lmg4","h6Nj","vARC","hDxT"]},"uzhHoBnh":{"uv":{"vARC":[8.51372,24.29428],"h6Nj":[7.50086,24.27725],"iheR":[8.50951,25.34076],"QwaE":[7.46986,25.32327]},"texture":2,"vertices":["h6Nj","QwaE","iheR","vARC"]},"NggEUoCy":{"uv":{"iheR":[8.50951,25.34076],"QwaE":[7.46986,25.32327],"P8GP":[8.49631,26.38709],"yldl":[7.44786,26.36945]},"texture":2,"vertices":["QwaE","yldl","P8GP","iheR"]},"VjbYxCRW":{"uv":{"P8GP":[8.49631,26.38709],"yldl":[7.44786,26.36945],"AOLK":[8.47432,27.43327],"idZ5":[7.43466,27.41578]},"texture":2,"vertices":["yldl","idZ5","AOLK","P8GP"]},"A8pjgX8T":{"uv":{"AOLK":[8.47358,27.48691],"idZ5":[7.43441,27.52307],"d6ZH":[8.49658,28.53315],"24Fn":[7.48419,28.56837]},"texture":2,"vertices":["idZ5","24Fn","d6ZH","AOLK"]},"wGyUGYSw":{"uv":{"d6ZH":[8.49658,28.53315],"24Fn":[7.48419,28.56837],"QsTD":[8.51088,29.57968],"EVnZ":[7.54267,29.61337]},"texture":2,"vertices":["24Fn","EVnZ","QsTD","d6ZH"]},"j3tmzldG":{"uv":{"QsTD":[8.51088,29.57968],"EVnZ":[7.54267,29.61337],"6wYi":[8.51699,30.6265],"8L0A":[7.60934,30.65808]},"texture":2,"vertices":["EVnZ","8L0A","6wYi","QsTD"]},"CDjtv5tI":{"uv":{"6wYi":[8.51699,30.6265],"8L0A":[7.60934,30.65808],"Mmyl":[8.5153,31.67359],"yTY5":[7.6838,31.70253]},"texture":2,"vertices":["8L0A","yTY5","Mmyl","6wYi"]},"uJJlFKbZ":{"uv":{"Mmyl":[8.5153,31.67359],"yTY5":[7.6838,31.70253],"U56R":[8.50651,32.72093],"wDAk":[7.76536,32.74672]},"texture":2,"vertices":["yTY5","wDAk","U56R","Mmyl"]},"0uJ8fsm9":{"uv":{"U56R":[11.38975,15.23713],"wDAk":[11.18035,15.94856],"PlRc":[12.379,15.58209],"Fv4L":[12.19874,16.19451]},"texture":2,"vertices":["wDAk","Fv4L","PlRc","U56R"]},"2hgdcMs5":{"uv":{"PlRc":[12.379,15.58209],"Fv4L":[12.19874,16.19451],"3HzV":[13.36672,15.93223],"3e0s":[13.21866,16.43529]},"texture":2,"vertices":["Fv4L","3e0s","3HzV","PlRc"]},"jHbEYadR":{"uv":{"3HzV":[13.36672,15.93223],"3e0s":[13.21866,16.43529],"hrOa":[14.35318,16.28669],"fTrh":[14.23984,16.67175]},"texture":2,"vertices":["3e0s","fTrh","hrOa","3HzV"]},"79WOjwOq":{"uv":{"hrOa":[14.35318,16.28669],"fTrh":[14.23984,16.67175],"9otK":[15.33865,16.6445],"Twy7":[15.26202,16.90486]},"texture":2,"vertices":["fTrh","Twy7","9otK","hrOa"]},"0CaIzCZR":{"uv":{"9otK":[15.33865,16.6445],"Twy7":[15.26202,16.90486],"WFtQ":[16.32347,17.00452],"Vgvl":[16.28484,17.13575]},"texture":2,"vertices":["Twy7","Vgvl","WFtQ","9otK"]},"qEtqqlMx":{"uv":{"XlmK":[17.32438,17.35332],"Vgvl":[16.29329,17.16232],"WFtQ":[16.32693,17.02972]},"texture":2,"vertices":["WFtQ","Vgvl","XlmK"]},"J4EC6DRX":{"uv":{"dzS6":[6.32489,6.2813],"YXW5":[5.38579,6.74791],"v5b9":[5.33304,6.62169]},"texture":2,"vertices":["v5b9","YXW5","dzS6"]},"Ku0nKnQo":{"uv":{"YXW5":[5.38579,6.74791],"v5b9":[5.33304,6.62169],"lTg6":[4.44626,7.2135],"eCta":[4.34161,6.96309]},"texture":2,"vertices":["v5b9","eCta","lTg6","YXW5"]},"lcjVcpsN":{"uv":{"lTg6":[4.44626,7.2135],"eCta":[4.34161,6.96309],"GOV0":[3.50585,7.67697],"ApXF":[3.35107,7.30661]},"texture":2,"vertices":["eCta","ApXF","GOV0","lTg6"]},"7M0okDee":{"uv":{"GOV0":[3.50585,7.67697],"ApXF":[3.35107,7.30661],"upzm":[2.56409,8.13721],"JXSP":[2.36188,7.65337]},"texture":2,"vertices":["ApXF","JXSP","upzm","GOV0"]},"gVivnyKk":{"uv":{"upzm":[2.56409,8.13721],"JXSP":[2.36188,7.65337],"hag1":[1.62059,8.5933],"xxUF":[1.37442,8.00427]},"texture":2,"vertices":["JXSP","xxUF","hag1","upzm"]},"Rn1cPUDv":{"uv":{"hag1":[1.62059,8.5933],"xxUF":[1.37442,8.00427],"VNqg":[0.67501,9.0444],"Go6q":[0.38905,8.36016]},"texture":2,"vertices":["xxUF","Go6q","VNqg","hag1"]},"gHJu8ZNU":{"uv":{"VNqg":[36.2731,0.47246],"Go6q":[35.70148,0],"cPju":[35.6413,1.30782],"muxV":[35,0.77777]},"texture":2,"vertices":["Go6q","muxV","cPju","VNqg"]},"Y0MJK479":{"uv":{"cPju":[9.5683,21.18047],"muxV":[8.73657,21.15949],"WyLA":[9.57999,22.2275],"pzDb":[8.67208,22.20459]},"texture":2,"vertices":["muxV","pzDb","WyLA","cPju"]},"BdBmYR4u":{"uv":{"WyLA":[9.57999,22.2275],"pzDb":[8.67208,22.20459],"pWdr":[9.58388,23.27433],"hDxT":[8.61539,23.24989]},"texture":2,"vertices":["pzDb","hDxT","pWdr","WyLA"]},"G8Pqw7bc":{"uv":{"pWdr":[9.58388,23.27433],"hDxT":[8.61539,23.24989],"smLB":[9.57958,24.32096],"vARC":[8.5669,24.2954]},"texture":2,"vertices":["hDxT","vARC","smLB","pWdr"]},"KINyPvOb":{"uv":{"smLB":[9.57958,24.32096],"vARC":[8.5669,24.2954],"XRVP":[9.56658,25.36736],"iheR":[8.52711,25.34113]},"texture":2,"vertices":["vARC","iheR","XRVP","smLB"]},"H8tMYbAR":{"uv":{"XRVP":[9.56658,25.36736],"iheR":[8.52711,25.34113],"jFdi":[9.54458,26.41354],"P8GP":[8.49631,26.38709]},"texture":2,"vertices":["iheR","P8GP","jFdi","XRVP"]},"P0105jmZ":{"uv":{"jFdi":[9.54458,26.41354],"P8GP":[8.49631,26.38709],"hWR2":[9.51379,27.4595],"AOLK":[8.47432,27.43327]},"texture":2,"vertices":["P8GP","AOLK","hWR2","jFdi"]},"6qdcjh0r":{"uv":{"hWR2":[9.51334,27.47738],"AOLK":[8.47358,27.48691],"Ymc1":[9.50954,28.52385],"d6ZH":[8.49658,28.53315]},"texture":2,"vertices":["AOLK","d6ZH","Ymc1","hWR2"]},"vYlE3y3B":{"uv":{"Ymc1":[9.50954,28.52385],"d6ZH":[8.49658,28.53315],"jLfZ":[9.49703,29.57041],"QsTD":[8.52827,29.5793]},"texture":2,"vertices":["d6ZH","QsTD","jLfZ","Ymc1"]},"V6lJBSnP":{"uv":{"jLfZ":[9.49703,29.57041],"QsTD":[8.52827,29.5793],"iqqm":[9.47633,30.61705],"6wYi":[8.56817,30.62538]},"texture":2,"vertices":["QsTD","6wYi","iqqm","jLfZ"]},"boxvQJnM":{"uv":{"iqqm":[9.47633,30.61705],"6wYi":[8.56817,30.62538],"Z9WE":[9.44783,31.66375],"Mmyl":[8.61587,31.67138]},"texture":2,"vertices":["6wYi","Mmyl","Z9WE","iqqm"]},"Q5t84P07":{"uv":{"Z9WE":[9.44783,31.66375],"Mmyl":[8.61587,31.67138],"BZgH":[9.41223,32.71052],"U56R":[8.67066,32.71732]},"texture":2,"vertices":["Mmyl","U56R","BZgH","Z9WE"]},"bpSGoVh2":{"uv":{"BZgH":[11.71192,14.49447],"U56R":[11.41311,15.17321],"2wP1":[12.64883,14.96331],"PlRc":[12.39161,15.5476]},"texture":2,"vertices":["U56R","PlRc","2wP1","BZgH"]},"X5CzzBCw":{"uv":{"2wP1":[12.64883,14.96331],"PlRc":[12.39161,15.5476],"KIyD":[13.58357,15.4371],"3HzV":[13.37227,15.91705]},"texture":2,"vertices":["PlRc","3HzV","KIyD","2wP1"]},"dU8B0fP5":{"uv":{"KIyD":[13.58357,15.4371],"3HzV":[13.37227,15.91705],"qkgq":[14.51649,15.915],"hrOa":[14.35476,16.28237]},"texture":2,"vertices":["3HzV","hrOa","qkgq","KIyD"]},"sXXZgjoI":{"uv":{"qkgq":[14.51649,15.915],"hrOa":[14.35476,16.28237],"Rusf":[15.448,16.39611],"9otK":[15.33865,16.6445]},"texture":2,"vertices":["hrOa","9otK","Rusf","qkgq"]},"bDL3i9Fm":{"uv":{"Rusf":[15.448,16.39611],"9otK":[15.33865,16.6445],"kjRb":[16.37859,16.87932],"WFtQ":[16.32347,17.00452]},"texture":2,"vertices":["9otK","WFtQ","kjRb","Rusf"]},"qlV54qQi":{"uv":{"XlmK":[17.32438,17.35332],"WFtQ":[16.32693,17.02972],"kjRb":[16.37754,16.90262]},"texture":2,"vertices":["kjRb","WFtQ","XlmK"]},"N8h8YaaL":{"uv":{"dzS6":[6.32489,6.2813],"RL2m":[5.45452,6.86619],"YXW5":[5.38579,6.74791]},"texture":2,"vertices":["YXW5","RL2m","dzS6"]},"wY2Z4xu9":{"uv":{"RL2m":[5.45452,6.86619],"YXW5":[5.38579,6.74791],"bEqR":[4.5836,7.45012],"lTg6":[4.44724,7.21547]},"texture":2,"vertices":["YXW5","lTg6","bEqR","RL2m"]},"ynpgSA6z":{"uv":{"bEqR":[4.5836,7.45012],"lTg6":[4.44724,7.21547],"a9pD":[3.71152,8.03207],"GOV0":[3.50985,7.68501]},"texture":2,"vertices":["lTg6","GOV0","a9pD","bEqR"]},"bdVGutSJ":{"uv":{"a9pD":[3.71152,8.03207],"GOV0":[3.50985,7.68501],"EOAd":[2.83769,8.61099],"upzm":[2.57421,8.15759]},"texture":2,"vertices":["GOV0","upzm","EOAd","a9pD"]},"f8pNN28B":{"uv":{"EOAd":[2.83769,8.61099],"upzm":[2.57421,8.15759],"k4sk":[1.96159,9.18602],"hag1":[1.64084,8.63405]},"texture":2,"vertices":["upzm","hag1","k4sk","EOAd"]},"gNcv6Fka":{"uv":{"k4sk":[1.96159,9.18602],"hag1":[1.64084,8.63405],"DCSD":[1.08278,9.75638],"VNqg":[0.71018,9.11518]},"texture":2,"vertices":["hag1","VNqg","DCSD","k4sk"]},"OQbinlpa":{"uv":{"DCSD":[36.88334,0.89386],"VNqg":[36.2731,0.47246],"bcwb":[36.32593,1.78059],"cPju":[35.6413,1.30782]},"texture":2,"vertices":["VNqg","cPju","bcwb","DCSD"]},"TqLBaWCl":{"uv":{"bcwb":[36.32593,1.78059],"cPju":[35.6413,1.30782],"jxTg":[35.76267,2.66329],"WyLA":[35.01535,2.14721]},"texture":2,"vertices":["cPju","WyLA","jxTg","bcwb"]},"CkGyDN89":{"uv":{"jxTg":[10.6632,22.26321],"WyLA":[9.75551,22.23267],"QCXS":[10.65829,23.31004],"pWdr":[9.69004,23.27746]},"texture":2,"vertices":["WyLA","pWdr","QCXS","jxTg"]},"CuGhEEsG":{"uv":{"QCXS":[10.65829,23.31004],"pWdr":[9.69004,23.27746],"upwH":[10.64518,24.35659],"smLB":[9.63276,24.32252]},"texture":2,"vertices":["pWdr","smLB","upwH","QCXS"]},"FvRqYgaj":{"uv":{"upwH":[10.64518,24.35659],"smLB":[9.63276,24.32252],"VNyA":[10.62338,25.40285],"XRVP":[9.58417,25.36788]},"texture":2,"vertices":["smLB","XRVP","VNyA","upwH"]},"827sLoS1":{"uv":{"VNyA":[10.62338,25.40285],"XRVP":[9.58417,25.36788],"PIKF":[10.59259,26.44881],"jFdi":[9.54458,26.41354]},"texture":2,"vertices":["XRVP","jFdi","PIKF","VNyA"]},"s4TM5HOg":{"uv":{"PIKF":[10.59259,26.44881],"jFdi":[9.54458,26.41354],"ZQum":[10.553,27.49447],"hWR2":[9.51379,27.4595]},"texture":2,"vertices":["jFdi","hWR2","ZQum","PIKF"]},"ivn3lAZ5":{"uv":{"ZQum":[10.553,27.49447],"hWR2":[9.51334,27.47738],"Omfl":[10.5224,28.54051],"Ymc1":[9.50954,28.52385]},"texture":2,"vertices":["hWR2","Ymc1","Omfl","ZQum"]},"mBj5qBae":{"uv":{"Omfl":[10.5224,28.54051],"Ymc1":[9.50954,28.52385],"wEqk":[10.4831,29.5864],"jLfZ":[9.51443,29.57048]},"texture":2,"vertices":["Ymc1","jLfZ","wEqk","Omfl"]},"7mJrlcc3":{"uv":{"wEqk":[10.4831,29.5864],"jLfZ":[9.51443,29.57048],"IzmP":[10.4356,30.63216],"iqqm":[9.52753,30.61723]},"texture":2,"vertices":["jLfZ","iqqm","IzmP","wEqk"]},"nhHHLOCm":{"uv":{"IzmP":[10.4356,30.63216],"iqqm":[9.52753,30.61723],"2ufM":[10.38031,31.67779],"Z9WE":[9.54842,31.66412]},"texture":2,"vertices":["iqqm","Z9WE","2ufM","IzmP"]},"bsKxElId":{"uv":{"2ufM":[0.832,15.13723],"Z9WE":[0,15.13723],"QfYQ":[0.7868,16.18363],"BZgH":[0.0452,16.18363]},"texture":2,"vertices":["Z9WE","BZgH","QfYQ","2ufM"]},"srDiukC9":{"uv":{"QfYQ":[12.12657,13.7992],"BZgH":[11.74328,14.43407],"5GRJ":[12.99571,14.3842],"2wP1":[12.66575,14.93072]},"texture":2,"vertices":["BZgH","2wP1","5GRJ","QfYQ"]},"mhbfi4eY":{"uv":{"5GRJ":[12.99571,14.3842],"2wP1":[12.66575,14.93072],"RcuW":[13.86205,14.97382],"KIyD":[13.59102,15.42275]},"texture":2,"vertices":["2wP1","KIyD","RcuW","5GRJ"]},"IDFTchBE":{"uv":{"RcuW":[13.86205,14.97382],"KIyD":[13.59102,15.42275],"KxTp":[14.72606,15.56729],"qkgq":[14.5186,15.91093]},"texture":2,"vertices":["KIyD","qkgq","KxTp","RcuW"]},"N7nS5XMk":{"uv":{"KxTp":[14.72606,15.56729],"qkgq":[14.5186,15.91093],"4sRy":[15.58827,16.16377],"Rusf":[15.448,16.39611]},"texture":2,"vertices":["qkgq","Rusf","4sRy","KxTp"]},"0zDTBOHO":{"uv":{"4sRy":[15.58827,16.16377],"Rusf":[15.448,16.39611],"rt42":[16.44929,16.7622],"kjRb":[16.37859,16.87932]},"texture":2,"vertices":["Rusf","kjRb","rt42","4sRy"]},"P1M6WXhc":{"uv":{"XlmK":[17.32438,17.35332],"kjRb":[16.37754,16.90262],"rt42":[16.44427,16.7832]},"texture":2,"vertices":["rt42","kjRb","XlmK"]},"Mudl2YO4":{"uv":{"dzS6":[6.32489,6.2813],"C97w":[5.53807,6.97452],"RL2m":[5.45452,6.86619]},"texture":2,"vertices":["RL2m","C97w","dzS6"]},"dJZkCGNY":{"uv":{"C97w":[5.53807,6.97452],"RL2m":[5.45452,6.86619],"04fu":[4.75057,7.66686],"bEqR":[4.58482,7.45195]},"texture":2,"vertices":["RL2m","bEqR","04fu","C97w"]},"yljgZrAI":{"uv":{"04fu":[4.75057,7.66686],"bEqR":[4.58482,7.45195],"gop8":[3.96167,8.35737],"a9pD":[3.71653,8.03953]},"texture":2,"vertices":["bEqR","a9pD","gop8","04fu"]},"X5TFOIp4":{"uv":{"gop8":[3.96167,8.35737],"a9pD":[3.71653,8.03953],"MPak":[3.17064,9.04512],"EOAd":[2.85038,8.62987]},"texture":2,"vertices":["a9pD","EOAd","MPak","gop8"]},"HqhnaaYc":{"uv":{"MPak":[3.17064,9.04512],"EOAd":[2.85038,8.62987],"2GFA":[2.37685,9.72931],"k4sk":[1.98697,9.22379]},"texture":2,"vertices":["EOAd","k4sk","2GFA","MPak"]},"yjmAe5Q2":{"uv":{"2GFA":[2.37685,9.72931],"k4sk":[1.98697,9.22379],"ekOn":[1.57977,10.40921],"DCSD":[1.12687,9.82198]},"texture":2,"vertices":["k4sk","DCSD","ekOn","2GFA"]},"ZtPtCs8y":{"uv":{"ekOn":[37.52764,1.26108],"DCSD":[36.88334,0.89386],"AmP8":[37.04877,2.19257],"bcwb":[36.32593,1.78059]},"texture":2,"vertices":["DCSD","bcwb","AmP8","ekOn"]},"6QOYY5Q5":{"uv":{"AmP8":[37.04877,2.19257],"bcwb":[36.32593,1.78059],"YprA":[36.56373,3.12055],"jxTg":[35.77468,2.67084]},"texture":2,"vertices":["bcwb","jxTg","YprA","AmP8"]},"2FKb7J24":{"uv":{"YprA":[36.56373,3.12055],"jxTg":[35.77468,2.67084],"YFT1":[36.07191,4.04466],"QCXS":[35.23022,3.56494]},"texture":2,"vertices":["jxTg","QCXS","YFT1","YprA"]},"qFxIR0oZ":{"uv":{"YFT1":[11.73236,23.35478],"QCXS":[10.76441,23.31406],"uO6o":[11.71045,24.40119],"upwH":[10.69835,24.35861]},"texture":2,"vertices":["QCXS","upwH","uO6o","YFT1"]},"0B2yvaKC":{"uv":{"uO6o":[11.71045,24.40119],"upwH":[10.69835,24.35861],"1XH3":[11.67985,25.44723],"VNyA":[10.64097,25.40352]},"texture":2,"vertices":["upwH","VNyA","1XH3","uO6o"]},"fMHaFKD9":{"uv":{"1XH3":[11.67985,25.44723],"VNyA":[10.64097,25.40352],"2Xn4":[11.64026,26.49289],"PIKF":[10.59259,26.44881]},"texture":2,"vertices":["VNyA","PIKF","2Xn4","1XH3"]},"cj0aaWXG":{"uv":{"2Xn4":[11.64026,26.49289],"PIKF":[10.59259,26.44881],"mSfG":[11.59188,27.53818],"ZQum":[10.553,27.49447]},"texture":2,"vertices":["PIKF","ZQum","mSfG","2Xn4"]},"qy41OAua":{"uv":{"mSfG":[11.59188,27.53818],"ZQum":[10.553,27.49447],"F6n8":[11.5345,28.58309],"Omfl":[10.5224,28.54051]},"texture":2,"vertices":["ZQum","Omfl","F6n8","mSfG"]},"A5wKXN0c":{"uv":{"F6n8":[11.5345,28.58309],"Omfl":[10.5224,28.54051],"62lB":[11.46844,29.62763],"wEqk":[10.50049,29.58691]},"texture":2,"vertices":["Omfl","wEqk","62lB","F6n8"]},"9UvEnafZ":{"uv":{"62lB":[11.46844,29.62763],"wEqk":[10.50049,29.58691],"wolx":[11.39418,30.67184],"IzmP":[10.48678,30.63366]},"texture":2,"vertices":["wEqk","IzmP","wolx","62lB"]},"aQIYo58q":{"uv":{"wolx":[1.78909,14.16976],"IzmP":[0.88427,14.09144],"yN0F":[1.6609,15.20897],"2ufM":[0.832,15.13723]},"texture":2,"vertices":["IzmP","2ufM","yN0F","wolx"]},"HX0MfrA8":{"uv":{"yN0F":[1.6609,15.20897],"2ufM":[0.832,15.13723],"dpg8":[1.52564,16.24758],"QfYQ":[0.7868,16.18363]},"texture":2,"vertices":["2ufM","QfYQ","dpg8","yN0F"]},"9JZkKnUX":{"uv":{"dpg8":[12.62688,13.16278],"QfYQ":[12.16542,13.74331],"Avzb":[13.41391,13.85429],"5GRJ":[13.01667,14.35404]},"texture":2,"vertices":["QfYQ","5GRJ","Avzb","dpg8"]},"vXv8hQeo":{"uv":{"Avzb":[13.41391,13.85429],"5GRJ":[13.01667,14.35404],"MEYc":[14.19758,14.55004],"RcuW":[13.87128,14.96055]},"texture":2,"vertices":["5GRJ","RcuW","MEYc","Avzb"]},"W2mwRoH8":{"uv":{"MEYc":[14.19758,14.55004],"RcuW":[13.87128,14.96055],"GvUN":[14.97846,15.2493],"KxTp":[14.72868,15.56353]},"texture":2,"vertices":["RcuW","KxTp","GvUN","MEYc"]},"kUdE9lVH":{"uv":{"GvUN":[14.97846,15.2493],"KxTp":[14.72868,15.56353],"1oWC":[15.75715,15.95131],"4sRy":[15.58827,16.16377]},"texture":2,"vertices":["KxTp","4sRy","1oWC","GvUN"]},"MLaKpKyN":{"uv":{"1oWC":[15.75715,15.95131],"4sRy":[15.58827,16.16377],"GSku":[16.53441,16.65511],"rt42":[16.44929,16.7622]},"texture":2,"vertices":["4sRy","rt42","GSku","1oWC"]},"ZA8UgfoS":{"uv":{"XlmK":[17.32438,17.35332],"rt42":[16.44427,16.7832],"GSku":[16.52598,16.67348]},"texture":2,"vertices":["GSku","rt42","XlmK"]},"hqdx3T39":{"uv":{"dzS6":[6.32489,6.2813],"2vZN":[5.635,7.07104],"C97w":[5.53807,6.97452]},"texture":2,"vertices":["C97w","2vZN","dzS6"]},"gyhdld1y":{"uv":{"2vZN":[5.635,7.07104],"C97w":[5.53807,6.97452],"KJWO":[4.94434,7.86001],"04fu":[4.75202,7.6685]},"texture":2,"vertices":["C97w","04fu","KJWO","2vZN"]},"p2XCawQE":{"uv":{"KJWO":[4.94434,7.86001],"04fu":[4.75202,7.6685],"E93b":[4.25204,8.64735],"gop8":[3.96761,8.36411]},"texture":2,"vertices":["04fu","gop8","E93b","KJWO"]},"Cz2PLKCJ":{"uv":{"E93b":[4.25204,8.64735],"gop8":[3.96761,8.36411],"Rlg6":[3.55726,9.43222],"MPak":[3.18568,9.06219]},"texture":2,"vertices":["gop8","MPak","Rlg6","E93b"]},"qXzR1AwR":{"uv":{"Rlg6":[3.55726,9.43222],"MPak":[3.18568,9.06219],"DFIb":[2.8593,10.21391],"2GFA":[2.40693,9.76345]},"texture":2,"vertices":["MPak","2GFA","DFIb","Rlg6"]},"paNWGvG6":{"uv":{"DFIb":[2.8593,10.21391],"2GFA":[2.40693,9.76345],"sk4q":[2.15751,10.9918],"ekOn":[1.63201,10.46851]},"texture":2,"vertices":["2GFA","ekOn","sk4q","DFIb"]},"TmD1RjtW":{"uv":{"sk4q":[38.20121,1.57137],"ekOn":[37.52764,1.26108],"6FHk":[37.80444,2.54068],"AmP8":[37.04877,2.19257]},"texture":2,"vertices":["ekOn","AmP8","6FHk","sk4q"]},"UZimeM5t":{"uv":{"6FHk":[37.80444,2.54068],"AmP8":[37.04877,2.19257],"g88F":[37.40123,3.50703],"YprA":[36.57634,3.12703]},"texture":2,"vertices":["AmP8","YprA","g88F","6FHk"]},"IfNuyxuS":{"uv":{"g88F":[37.40123,3.50703],"YprA":[36.57634,3.12703],"Kn70":[36.99093,4.47011],"YFT1":[36.111,4.06476]},"texture":2,"vertices":["YprA","YFT1","Kn70","g88F"]},"Ws7hr4wY":{"uv":{"Kn70":[36.99093,4.47011],"YFT1":[36.111,4.06476],"Rpiw":[36.57318,5.42976],"uO6o":[35.65311,5.00592]},"texture":2,"vertices":["YFT1","uO6o","Rpiw","Kn70"]},"OmcvesWm":{"uv":{"Rpiw":[36.57318,5.42976],"uO6o":[35.65311,5.00592],"1DtZ":[36.14753,6.38577],"1XH3":[35.20312,5.95071]},"texture":2,"vertices":["uO6o","1XH3","1DtZ","Rpiw"]},"ulBANYdT":{"uv":{"1DtZ":[18.0442,25],"1XH3":[17.0044,25],"kbjO":[18.0486,26],"2Xn4":[17,26]},"texture":2,"vertices":["1XH3","2Xn4","kbjO","1DtZ"]},"Fo5ZcQ0E":{"uv":{"kbjO":[22.10974,27.52727],"2Xn4":[21.06247,27.58015],"lOy2":[22.15812,28.57256],"mSfG":[21.11965,28.625]},"texture":2,"vertices":["2Xn4","mSfG","lOy2","kbjO"]},"JrmvRnVq":{"uv":{"lOy2":[26.04984,30.45488],"mSfG":[25.02229,30.61403],"lSRC":[26.19675,31.491],"F6n8":[25.19569,31.64605]},"texture":2,"vertices":["mSfG","F6n8","lSRC","lOy2"]},"zgdmioaK":{"uv":{"lSRC":[26.19675,31.491],"F6n8":[25.19569,31.64605],"lKGV":[26.33507,32.52845],"62lB":[25.37769,32.67673]},"texture":2,"vertices":["F6n8","62lB","lKGV","lSRC"]},"vJDeBhmT":{"uv":{"lKGV":[26.33507,32.52845],"62lB":[25.37769,32.67673],"Edzb":[26.46529,33.56716],"wolx":[25.56779,33.70617]},"texture":2,"vertices":["62lB","wolx","Edzb","lKGV"]},"hNmwYv0Z":{"uv":{"Edzb":[2.69785,14.32764],"wolx":[1.80316,14.17159],"YrEK":[2.48053,15.35193],"yN0F":[1.6609,15.20897]},"texture":2,"vertices":["wolx","yN0F","YrEK","Edzb"]},"v6K0i1wm":{"uv":{"YrEK":[2.48053,15.35193],"yN0F":[1.6609,15.20897],"6ddv":[2.25621,16.375],"dpg8":[1.52564,16.24758]},"texture":2,"vertices":["yN0F","dpg8","6ddv","YrEK"]},"njrMcaHf":{"uv":{"6ddv":[13.20459,12.59568],"dpg8":[12.67256,13.11233],"9N8e":[13.89655,13.38232],"Avzb":[13.43856,13.82707]},"texture":2,"vertices":["dpg8","Avzb","9N8e","6ddv"]},"tqRGfv2f":{"uv":{"9N8e":[13.89655,13.38232],"Avzb":[13.43856,13.82707],"1bQf":[14.58464,14.17272],"MEYc":[14.20843,14.53805]},"texture":2,"vertices":["Avzb","MEYc","1bQf","9N8e"]},"ld6nx1Al":{"uv":{"1bQf":[14.58464,14.17272],"MEYc":[14.20843,14.53805],"hl7t":[15.2695,14.96626],"GvUN":[14.98154,15.2459]},"texture":2,"vertices":["MEYc","GvUN","hl7t","1bQf"]},"iOTAvoiJ":{"uv":{"hl7t":[15.2695,14.96626],"GvUN":[14.98154,15.2459],"31fX":[15.95185,15.76224],"1oWC":[15.75715,15.95131]},"texture":2,"vertices":["GvUN","1oWC","31fX","hl7t"]},"TMo6oYwi":{"uv":{"31fX":[15.95185,15.76224],"1oWC":[15.75715,15.95131],"5Ahp":[16.63255,16.55981],"GSku":[16.53441,16.65511]},"texture":2,"vertices":["1oWC","GSku","5Ahp","31fX"]},"WWfP1gPU":{"uv":{"XlmK":[17.32438,17.35332],"GSku":[16.52598,16.67348],"5Ahp":[16.62127,16.57533]},"texture":2,"vertices":["5Ahp","GSku","XlmK"]},"AifZn2cx":{"uv":{"dzS6":[6.32489,6.2813],"GQNq":[5.74368,7.15413],"2vZN":[5.635,7.07104]},"texture":2,"vertices":["2vZN","GQNq","dzS6"]},"iWVQnVfI":{"uv":{"GQNq":[5.74368,7.15413],"2vZN":[5.635,7.07104],"XrBn":[5.16159,8.02629],"KJWO":[4.94599,7.86145]},"texture":2,"vertices":["2vZN","KJWO","XrBn","GQNq"]},"Mg5jwVQz":{"uv":{"XrBn":[5.16159,8.02629],"KJWO":[4.94599,7.86145],"OL7l":[4.57768,8.89705],"E93b":[4.2588,8.65326]},"texture":2,"vertices":["KJWO","E93b","OL7l","XrBn"]},"VxrO0Tfs":{"uv":{"OL7l":[4.57768,8.89705],"E93b":[4.2588,8.65326],"Gqmq":[3.99099,9.76569],"Rlg6":[3.5744,9.44719]},"texture":2,"vertices":["E93b","Rlg6","Gqmq","OL7l"]},"VBDuARB0":{"uv":{"Gqmq":[3.99099,9.76569],"Rlg6":[3.5744,9.44719],"qyTs":[3.40073,10.63159],"DFIb":[2.89357,10.24385]},"texture":2,"vertices":["Rlg6","DFIb","qyTs","Gqmq"]},"R6nEoyuo":{"uv":{"qyTs":[3.40073,10.63159],"DFIb":[2.89357,10.24385],"HUJf":[2.80617,11.49421],"sk4q":[2.21703,11.04379]},"texture":2,"vertices":["DFIb","sk4q","HUJf","qyTs"]},"xRPz2j2k":{"uv":{"HUJf":[38.89902,1.82242],"sk4q":[38.20121,1.57137],"RwGR":[38.58732,2.82234],"6FHk":[37.80444,2.54068]},"texture":2,"vertices":["sk4q","6FHk","RwGR","HUJf"]},"lfFOh0kI":{"uv":{"RwGR":[38.58732,2.82234],"6FHk":[37.80444,2.54068],"Z37U":[38.26893,3.81985],"g88F":[37.41435,3.5124]},"texture":2,"vertices":["6FHk","g88F","Z37U","RwGR"]},"1YGYM0Gr":{"uv":{"Z37U":[38.26893,3.81985],"g88F":[37.41435,3.5124],"r7uJ":[37.94321,4.81473],"Kn70":[37.03161,4.48676]},"texture":2,"vertices":["g88F","Kn70","r7uJ","Z37U"]},"et1DfqUU":{"uv":{"r7uJ":[22.98559,24.34844],"Kn70":[22.01764,24.38916],"DFtY":[23.05165,25.39298],"Rpiw":[22.03955,25.43557]},"texture":2,"vertices":["Kn70","Rpiw","DFtY","r7uJ"]},"WtTeK5vc":{"uv":{"DFtY":[23.05165,25.39298],"Rpiw":[22.03955,25.43557],"U7Kn":[23.10903,26.4379],"1DtZ":[22.07015,26.48161]},"texture":2,"vertices":["Rpiw","1DtZ","U7Kn","DFtY"]},"y2bnKn7D":{"uv":{"U7Kn":[23.10903,26.4379],"1DtZ":[22.07015,26.48161],"75kO":[23.15741,27.48319],"kbjO":[22.10974,27.52727]},"texture":2,"vertices":["1DtZ","kbjO","75kO","U7Kn"]},"zoqq2QXt":{"uv":{"75kO":[23.15741,27.48319],"kbjO":[22.10974,27.52727],"dsp6":[23.197,28.52885],"lOy2":[22.15812,28.57256]},"texture":2,"vertices":["kbjO","lOy2","dsp6","75kO"]},"IK4mranO":{"uv":{"dsp6":[27.08112,30.32209],"lOy2":[26.04984,30.45488],"0pjH":[27.20146,31.36164],"lSRC":[26.19675,31.491]},"texture":2,"vertices":["lOy2","lSRC","0pjH","dsp6"]},"GwU0lQ7i":{"uv":{"0pjH":[27.20146,31.36164],"lSRC":[26.19675,31.491],"wGpT":[27.31317,32.40229],"lKGV":[26.3523,32.52601]},"texture":2,"vertices":["lSRC","lKGV","wGpT","0pjH"]},"eqwUAmdQ":{"uv":{"wGpT":[27.31317,32.40229],"lKGV":[26.3523,32.52601],"KMtR":[27.41674,33.44399],"Edzb":[26.51598,33.55997]},"texture":2,"vertices":["lKGV","Edzb","KMtR","wGpT"]},"QEGjZfei":{"uv":{"KMtR":[27.41674,33.44399],"Edzb":[26.51598,33.55997],"Bj7W":[27.51258,34.48669],"YrEK":[26.68739,34.59294]},"texture":2,"vertices":["Edzb","YrEK","Bj7W","KMtR"]},"Q5ooFOpt":{"uv":{"Bj7W":[27.51258,34.48669],"YrEK":[26.68739,34.59294],"diJM":[27.60138,35.5303],"6ddv":[26.86585,35.625]},"texture":2,"vertices":["YrEK","6ddv","diJM","Bj7W"]},"ixJYlgzu":{"uv":{"diJM":[13.85018,12.10727],"6ddv":[13.25636,12.5515],"sdjk":[14.43567,12.97607],"9N8e":[13.92448,13.35848]},"texture":2,"vertices":["6ddv","9N8e","sdjk","diJM"]},"9efEjtHO":{"uv":{"sdjk":[14.43567,12.97607],"9N8e":[13.92448,13.35848],"C68M":[15.01684,13.84811],"1bQf":[14.59694,14.16223]},"texture":2,"vertices":["9N8e","1bQf","C68M","sdjk"]},"ZQkOAgS9":{"uv":{"C68M":[15.01684,13.84811],"1bQf":[14.59694,14.16223],"EoN8":[15.59441,14.72284],"hl7t":[15.27299,14.96328]},"texture":2,"vertices":["1bQf","hl7t","EoN8","C68M"]},"lPpU4O9n":{"uv":{"EoN8":[15.59441,14.72284],"hl7t":[15.27299,14.96328],"06J7":[16.16917,15.59966],"31fX":[15.95185,15.76224]},"texture":2,"vertices":["hl7t","31fX","06J7","EoN8"]},"f8fw1TqG":{"uv":{"06J7":[16.16917,15.59966],"31fX":[15.95185,15.76224],"2Eqp":[16.7421,16.47787],"5Ahp":[16.63255,16.55981]},"texture":2,"vertices":["31fX","5Ahp","2Eqp","06J7"]},"GOG5nBcj":{"uv":{"XlmK":[17.32438,17.35332],"5Ahp":[16.62127,16.57533],"2Eqp":[16.72853,16.49042]},"texture":2,"vertices":["2Eqp","5Ahp","XlmK"]},"Lk8kstnO":{"uv":{"dzS6":[6.32489,6.2813],"pvOL":[5.86225,7.22236],"GQNq":[5.74368,7.15413]},"texture":2,"vertices":["GQNq","pvOL","dzS6"]},"ua2lKs7l":{"uv":{"pvOL":[5.86225,7.22236],"GQNq":[5.74368,7.15413],"4tg6":[5.39865,8.16288],"XrBn":[5.16342,8.02751]},"texture":2,"vertices":["GQNq","XrBn","4tg6","pvOL"]},"l9pzN0ci":{"uv":{"4tg6":[5.39865,8.16288],"XrBn":[5.16342,8.02751],"i0OO":[4.93306,9.10224],"OL7l":[4.58516,8.90203]},"texture":2,"vertices":["XrBn","OL7l","i0OO","4tg6"]},"cr1laMqc":{"uv":{"i0OO":[4.93306,9.10224],"OL7l":[4.58516,8.90203],"JaP1":[4.46444,10.03986],"Gqmq":[4.00993,9.7783]},"texture":2,"vertices":["OL7l","Gqmq","JaP1","i0OO"]},"l56fMGXF":{"uv":{"JaP1":[4.46444,10.03986],"Gqmq":[4.00993,9.7783],"uOTQ":[3.99192,10.97523],"qyTs":[3.4386,10.65681]},"texture":2,"vertices":["Gqmq","qyTs","uOTQ","JaP1"]},"JRZ8BU2X":{"uv":{"uOTQ":[3.99192,10.97523],"qyTs":[3.4386,10.65681],"8ira":[3.51472,11.90791],"HUJf":[2.87195,11.53802]},"texture":2,"vertices":["qyTs","HUJf","8ira","uOTQ"]},"OGH8Vx7B":{"uv":{"8ira":[39.61588,2.01236],"HUJf":[38.89902,1.82242],"barW":[39.39156,3.03544],"RwGR":[38.58732,2.82234]},"texture":2,"vertices":["HUJf","RwGR","barW","8ira"]},"NikFuPpC":{"uv":{"barW":[39.39156,3.03544],"RwGR":[38.58732,2.82234],"cVzt":[39.16038,4.05669],"Z37U":[38.28248,3.82408]},"texture":2,"vertices":["RwGR","Z37U","cVzt","barW"]},"GneIlDOd":{"uv":{"cVzt":[23.99449,23.26705],"Z37U":[23.0868,23.29759],"n2k2":[24.05996,24.31184],"r7uJ":[23.09171,24.34442]},"texture":2,"vertices":["Z37U","r7uJ","n2k2","cVzt"]},"JMIRtUTA":{"uv":{"n2k2":[24.05996,24.31184],"r7uJ":[23.09171,24.34442],"L4DM":[24.11724,25.3569],"DFtY":[23.10482,25.39097]},"texture":2,"vertices":["r7uJ","DFtY","L4DM","n2k2"]},"ECbLWsTA":{"uv":{"L4DM":[24.11724,25.3569],"DFtY":[23.10482,25.39097],"VG8S":[24.16583,26.40226],"U7Kn":[23.12662,26.43723]},"texture":2,"vertices":["DFtY","U7Kn","VG8S","L4DM"]},"75V9t9fS":{"uv":{"VG8S":[24.16583,26.40226],"U7Kn":[23.12662,26.43723],"AwKv":[24.20542,27.44792],"75kO":[23.15741,27.48319]},"texture":2,"vertices":["U7Kn","75kO","AwKv","VG8S"]},"798oPtU6":{"uv":{"AwKv":[24.20542,27.44792],"75kO":[23.15741,27.48319],"UYAS":[24.23621,28.49388],"dsp6":[23.197,28.52885]},"texture":2,"vertices":["75kO","dsp6","UYAS","AwKv"]},"cZgMJTMd":{"uv":{"UYAS":[28.11547,30.21576],"dsp6":[27.08112,30.32209],"fmmo":[28.20915,31.25805],"0pjH":[27.20146,31.36164]},"texture":2,"vertices":["dsp6","0pjH","fmmo","UYAS"]},"b5toWWp6":{"uv":{"fmmo":[28.20915,31.25805],"0pjH":[27.20146,31.36164],"nL7U":[28.29417,32.30122],"wGpT":[27.33045,32.40029]},"texture":2,"vertices":["0pjH","wGpT","nL7U","fmmo"]},"i9xBZDyE":{"uv":{"nL7U":[28.29417,32.30122],"wGpT":[27.33045,32.40029],"fpR9":[28.37104,33.34523],"KMtR":[27.4676,33.43811]},"texture":2,"vertices":["wGpT","KMtR","fpR9","nL7U"]},"bi3Gjs28":{"uv":{"fpR9":[28.37104,33.34523],"KMtR":[27.4676,33.43811],"tkJ3":[28.44014,34.39004],"Bj7W":[27.61251,34.47512]},"texture":2,"vertices":["KMtR","Bj7W","tkJ3","fpR9"]},"CpQXlolw":{"uv":{"tkJ3":[28.44014,34.39004],"Bj7W":[27.61251,34.47512],"udA9":[28.50219,35.43558],"diJM":[27.76448,35.51142]},"texture":2,"vertices":["Bj7W","diJM","udA9","tkJ3"]},"Mxgzl5n3":{"uv":{"udA9":[14.55302,11.70558],"diJM":[13.90718,12.07008],"5QyY":[15.0224,12.64223],"sdjk":[14.46643,12.95601]},"texture":2,"vertices":["diJM","sdjk","5QyY","udA9"]},"NZCHJm8T":{"uv":{"5QyY":[15.0224,12.64223],"sdjk":[14.46643,12.95601],"UOg5":[15.48707,13.58153],"C68M":[15.03038,13.83927]},"texture":2,"vertices":["sdjk","C68M","UOg5","5QyY"]},"IsSmloGk":{"uv":{"UOg5":[15.48707,13.58153],"C68M":[15.03038,13.83927],"EZQG":[15.94782,14.52304],"EoN8":[15.59826,14.72033]},"texture":2,"vertices":["C68M","EoN8","EZQG","UOg5"]},"6zTIcxMP":{"uv":{"EZQG":[15.94782,14.52304],"EoN8":[15.59826,14.72033],"Z4OK":[16.40553,15.46627],"06J7":[16.16917,15.59966]},"texture":2,"vertices":["EoN8","06J7","Z4OK","EZQG"]},"ixmNqq5T":{"uv":{"Z4OK":[16.40553,15.46627],"06J7":[16.16917,15.59966],"GNA4":[16.86123,16.41063],"2Eqp":[16.7421,16.47787]},"texture":2,"vertices":["06J7","2Eqp","GNA4","Z4OK"]},"7LH3AvfR":{"uv":{"XlmK":[17.32438,17.35332],"2Eqp":[16.72853,16.49042],"GNA4":[16.84593,16.4202]},"texture":2,"vertices":["GNA4","2Eqp","XlmK"]},"qaV7JN49":{"uv":{"dzS6":[6.32489,6.2813],"nPVe":[5.98869,7.27458],"pvOL":[5.86225,7.22236]},"texture":2,"vertices":["pvOL","nPVe","dzS6"]},"4z5odGsF":{"uv":{"nPVe":[5.98869,7.27458],"pvOL":[5.86225,7.22236],"Tp8r":[5.65147,8.26744],"4tg6":[5.40062,8.16384]},"texture":2,"vertices":["pvOL","4tg6","Tp8r","nPVe"]},"34yLB04X":{"uv":{"Tp8r":[5.65147,8.26744],"4tg6":[5.40062,8.16384],"p2ot":[5.31213,9.25942],"i0OO":[4.94112,9.1062]},"texture":2,"vertices":["4tg6","i0OO","p2ot","Tp8r"]},"Zp6sd7kQ":{"uv":{"p2ot":[5.31213,9.25942],"i0OO":[4.94112,9.1062],"Uo34":[4.96955,10.25007],"JaP1":[4.48486,10.0499]},"texture":2,"vertices":["i0OO","JaP1","Uo34","p2ot"]},"QOoUTeaH":{"uv":{"Uo34":[4.96955,10.25007],"JaP1":[4.48486,10.0499],"eJLi":[4.62282,11.23899],"uOTQ":[4.03276,10.99531]},"texture":2,"vertices":["JaP1","uOTQ","eJLi","Uo34"]},"R1DyrK3R":{"uv":{"eJLi":[4.62282,11.23899],"uOTQ":[4.03276,10.99531],"kc1W":[4.27109,12.22586],"8ira":[3.58564,11.94278]},"texture":2,"vertices":["uOTQ","8ira","kc1W","eJLi"]},"mqPnCxjK":{"uv":{"kc1W":[40.34645,2.13978],"8ira":[39.61588,2.01236],"f6xl":[40.21119,3.17839],"barW":[39.39156,3.03544]},"texture":2,"vertices":["8ira","barW","f6xl","kc1W"]},"VJqnxjBI":{"uv":{"f6xl":[25.01343,22.19386],"barW":[24.1817,22.21485],"dBX1":[25.07792,23.23897],"cVzt":[24.17001,23.26188]},"texture":2,"vertices":["barW","cVzt","dBX1","f6xl"]},"96PPlQsb":{"uv":{"dBX1":[25.07792,23.23897],"cVzt":[24.17001,23.26188],"G86p":[25.13461,24.28427],"n2k2":[24.16612,24.30871]},"texture":2,"vertices":["cVzt","n2k2","G86p","dBX1"]},"F0ZeAqz5":{"uv":{"G86p":[25.13461,24.28427],"n2k2":[24.16612,24.30871],"iM7o":[25.1831,25.32978],"L4DM":[24.17042,25.35534]},"texture":2,"vertices":["n2k2","L4DM","iM7o","G86p"]},"avh8zfcW":{"uv":{"iM7o":[25.1831,25.32978],"L4DM":[24.17042,25.35534],"xLjY":[25.22289,26.37551],"VG8S":[24.18342,26.40174]},"texture":2,"vertices":["L4DM","VG8S","xLjY","iM7o"]},"qjC6h9Yt":{"uv":{"xLjY":[25.22289,26.37551],"VG8S":[24.18342,26.40174],"ux6s":[25.25369,27.42147],"AwKv":[24.20542,27.44792]},"texture":2,"vertices":["VG8S","AwKv","ux6s","xLjY"]},"jOtae8SZ":{"uv":{"ux6s":[25.25369,27.42147],"AwKv":[24.20542,27.44792],"IIsT":[25.27568,28.46764],"UYAS":[24.23621,28.49388]},"texture":2,"vertices":["AwKv","UYAS","IIsT","ux6s"]},"zdnP8RuS":{"uv":{"IIsT":[29.1522,30.13595],"UYAS":[28.11547,30.21576],"cPv6":[29.21916,31.18029],"fmmo":[28.20915,31.25805]},"texture":2,"vertices":["UYAS","fmmo","cPv6","IIsT"]},"FYMBCmmu":{"uv":{"cPv6":[29.21916,31.18029],"fmmo":[28.20915,31.25805],"d9jn":[29.27744,32.2253],"nL7U":[28.3115,32.29966]},"texture":2,"vertices":["fmmo","nL7U","d9jn","cPv6"]},"n8yOBZaZ":{"uv":{"d9jn":[29.27744,32.2253],"nL7U":[28.3115,32.29966],"DVgN":[29.32755,33.27094],"fpR9":[28.42203,33.34065]},"texture":2,"vertices":["nL7U","fpR9","DVgN","d9jn"]},"8uRCLJeE":{"uv":{"DVgN":[29.32755,33.27094],"fpR9":[28.42203,33.34065],"tmoQ":[29.36988,34.31718],"tkJ3":[28.54033,34.38104]},"texture":2,"vertices":["fpR9","tkJ3","tmoQ","DVgN"]},"GYLhNFp4":{"uv":{"tmoQ":[29.36988,34.31718],"tkJ3":[28.54033,34.38104],"VF7f":[29.40513,35.36396],"udA9":[28.66571,35.42088]},"texture":2,"vertices":["tkJ3","udA9","VF7f","tmoQ"]},"YbfPl9sp":{"uv":{"VF7f":[15.30153,11.39724],"udA9":[14.61432,11.67601],"dsWZ":[15.64705,12.3863],"5QyY":[15.05547,12.62627]},"texture":2,"vertices":["udA9","5QyY","dsWZ","VF7f"]},"JvLlTFUR":{"uv":{"dsWZ":[15.64705,12.3863],"5QyY":[15.05547,12.62627],"9yZp":[15.98757,13.37738],"UOg5":[15.50163,13.5745]},"texture":2,"vertices":["5QyY","UOg5","9yZp","dsWZ"]},"eGNxioIX":{"uv":{"9yZp":[15.98757,13.37738],"UOg5":[15.50163,13.5745],"ogeH":[16.32392,14.37016],"EZQG":[15.95196,14.52104]},"texture":2,"vertices":["UOg5","EZQG","ogeH","9yZp"]},"yygLRxce":{"uv":{"ogeH":[16.32392,14.37016],"EZQG":[15.95196,14.52104],"gMbt":[16.65703,15.36425],"Z4OK":[16.40553,15.46627]},"texture":2,"vertices":["EZQG","Z4OK","gMbt","ogeH"]},"gODoiPda":{"uv":{"gMbt":[16.65703,15.36425],"Z4OK":[16.40553,15.46627],"XROB":[16.988,16.35921],"GNA4":[16.86123,16.41063]},"texture":2,"vertices":["Z4OK","GNA4","XROB","gMbt"]},"g1Wc8FVo":{"uv":{"XlmK":[17.32438,17.35332],"GNA4":[16.84593,16.4202],"XROB":[16.97147,16.36586]},"texture":2,"vertices":["XROB","GNA4","XlmK"]},"e1WQCgTt":{"uv":{"dzS6":[6.32489,6.2813],"RGy9":[6.12085,7.3099],"nPVe":[5.98869,7.27458]},"texture":2,"vertices":["nPVe","RGy9","dzS6"]},"juXM6mDt":{"uv":{"RGy9":[6.12085,7.3099],"nPVe":[5.98869,7.27458],"teMv":[5.91575,8.3382],"Tp8r":[5.65355,8.26814]},"texture":2,"vertices":["nPVe","Tp8r","teMv","RGy9"]},"9rRO2qbY":{"uv":{"teMv":[5.91575,8.3382],"Tp8r":[5.65355,8.26814],"H0mk":[5.70843,9.36592],"p2ot":[5.32064,9.2623]},"texture":2,"vertices":["Tp8r","p2ot","H0mk","teMv"]},"Dh7ytw7C":{"uv":{"H0mk":[5.70843,9.36592],"p2ot":[5.32064,9.2623],"Qf1r":[5.49773,10.39273],"Uo34":[4.9911,10.25736]},"texture":2,"vertices":["p2ot","Uo34","Qf1r","H0mk"]},"qK2idCpM":{"uv":{"Qf1r":[5.49773,10.39273],"Uo34":[4.9911,10.25736],"oq1V":[5.28268,11.41838],"eJLi":[4.66592,11.25358]},"texture":2,"vertices":["Uo34","eJLi","oq1V","Qf1r"]},"bjdF0e4B":{"uv":{"oq1V":[5.28268,11.41838],"eJLi":[4.66592,11.25358],"SzlM":[5.06241,12.44263],"kc1W":[4.34595,12.2512]},"texture":2,"vertices":["eJLi","kc1W","SzlM","oq1V"]},"u8zwbhaL":{"uv":{"SzlM":[41.08529,2.20373],"kc1W":[40.34645,2.13978],"utmE":[41.04009,3.25013],"f6xl":[40.21119,3.17839]},"texture":2,"vertices":["kc1W","f6xl","utmE","SzlM"]},"kwwodT1b":{"uv":{"utmE":[26.10586,22.17439],"f6xl":[25.27397,22.18839],"7wmI":[26.16155,23.22],"dBX1":[25.25348,23.23528]},"texture":2,"vertices":["f6xl","dBX1","7wmI","utmE"]},"Ag1u1o4e":{"uv":{"7wmI":[26.16155,23.22],"dBX1":[25.25348,23.23528],"yRPj":[26.20945,24.26575],"G86p":[25.24078,24.28204]},"texture":2,"vertices":["dBX1","G86p","yRPj","7wmI"]},"aA2v54KM":{"uv":{"yRPj":[26.20945,24.26575],"G86p":[25.24078,24.28204],"gIei":[26.24914,25.31163],"iM7o":[25.23628,25.32866]},"texture":2,"vertices":["G86p","iM7o","gIei","yRPj"]},"I0eqnGxJ":{"uv":{"gIei":[26.24914,25.31163],"iM7o":[25.23628,25.32866],"eGfa":[26.28014,26.35765],"xLjY":[25.24049,26.37514]},"texture":2,"vertices":["iM7o","xLjY","eGfa","gIei"]},"3I4X5IsM":{"uv":{"eGfa":[26.28014,26.35765],"xLjY":[25.24049,26.37514],"Ulik":[26.30214,27.40383],"ux6s":[25.25369,27.42147]},"texture":2,"vertices":["xLjY","ux6s","Ulik","eGfa"]},"Dy0R1NHh":{"uv":{"Ulik":[26.30214,27.40383],"ux6s":[25.25369,27.42147],"scDS":[26.31534,28.45016],"IIsT":[25.27568,28.46764]},"texture":2,"vertices":["ux6s","IIsT","scDS","Ulik"]},"bF6ImM3E":{"uv":{"scDS":[30.19064,30.08272],"IIsT":[29.1522,30.13595],"hIN2":[30.23083,31.12843],"cPv6":[29.21916,31.18029]},"texture":2,"vertices":["IIsT","cPv6","hIN2","scDS"]},"X9EpIfZi":{"uv":{"hIN2":[30.23083,31.12843],"cPv6":[29.21916,31.18029],"ARpU":[30.26233,32.17459],"d9jn":[29.29481,32.22419]},"texture":2,"vertices":["cPv6","d9jn","ARpU","hIN2"]},"PvuOI4T1":{"uv":{"ARpU":[30.26233,32.17459],"d9jn":[29.29481,32.22419],"6rkc":[30.28565,33.22117],"DVgN":[29.37864,33.26766]},"texture":2,"vertices":["d9jn","DVgN","6rkc","ARpU"]},"0ibqpz1b":{"uv":{"6rkc":[30.28565,33.22117],"DVgN":[29.37864,33.26766],"ze0S":[30.30117,34.26815],"tmoQ":[29.47026,34.31074]},"texture":2,"vertices":["DVgN","tmoQ","ze0S","6rkc"]},"9xCVWkKT":{"uv":{"ze0S":[30.30117,34.26815],"tmoQ":[29.47026,34.31074],"Eusq":[30.3096,35.31549],"VF7f":[29.56898,35.35346]},"texture":2,"vertices":["tmoQ","VF7f","Eusq","ze0S"]},"keyhtua9":{"uv":{"Eusq":[16.08337,11.18732],"VF7f":[15.36611,11.37576],"JXeL":[16.29935,12.21249],"dsWZ":[15.6819,12.3747]},"texture":2,"vertices":["VF7f","dsWZ","JXeL","Eusq"]},"FXXqn7JC":{"uv":{"JXeL":[16.29935,12.21249],"dsWZ":[15.6819,12.3747],"qWnI":[16.5101,13.23903],"9yZp":[16.00291,13.37228]},"texture":2,"vertices":["dsWZ","9yZp","qWnI","JXeL"]},"XvpbUSIB":{"uv":{"qWnI":[16.5101,13.23903],"9yZp":[16.00291,13.37228],"2VVD":[16.7165,14.26672],"ogeH":[16.32828,14.36871]},"texture":2,"vertices":["9yZp","ogeH","2VVD","qWnI"]},"vvZEcdYW":{"uv":{"2VVD":[16.7165,14.26672],"ogeH":[16.32828,14.36871],"H60O":[16.91952,15.29529],"gMbt":[16.65703,15.36425]},"texture":2,"vertices":["ogeH","gMbt","H60O","2VVD"]},"wfKssaAG":{"uv":{"H60O":[16.91952,15.29529],"gMbt":[16.65703,15.36425],"NrV4":[17.12031,16.32445],"XROB":[16.988,16.35921]},"texture":2,"vertices":["gMbt","XROB","NrV4","H60O"]},"ly7jauO0":{"uv":{"XlmK":[17.32438,17.35332],"XROB":[16.97147,16.36586],"NrV4":[17.10302,16.32832]},"texture":2,"vertices":["NrV4","XROB","XlmK"]},"ZVo3BQna":{"uv":{"dzS6":[6.32489,6.2813],"AjSu":[6.25649,7.3277],"RGy9":[6.12085,7.3099]},"texture":2,"vertices":["RGy9","AjSu","dzS6"]},"hN4cFsBF":{"uv":{"AjSu":[6.25649,7.3277],"RGy9":[6.12085,7.3099],"os9i":[6.187,8.37396],"teMv":[5.91791,8.33863]},"texture":2,"vertices":["RGy9","teMv","os9i","AjSu"]},"kN7vBrCL":{"uv":{"os9i":[6.187,8.37396],"teMv":[5.91791,8.33863],"1gw9":[6.11523,9.41992],"H0mk":[5.71724,9.36767]},"texture":2,"vertices":["teMv","H0mk","1gw9","os9i"]},"ykVSNd6S":{"uv":{"1gw9":[6.11523,9.41992],"H0mk":[5.71724,9.36767],"dNrd":[6.03998,10.46542],"Qf1r":[5.52005,10.39716]},"texture":2,"vertices":["H0mk","Qf1r","dNrd","1gw9"]},"2wOlposZ":{"uv":{"dNrd":[6.03998,10.46542],"Qf1r":[5.52005,10.39716],"EgMG":[5.96028,11.51034],"oq1V":[5.32731,11.42723]},"texture":2,"vertices":["Qf1r","oq1V","EgMG","dNrd"]},"WcMxMeTF":{"uv":{"EgMG":[5.96028,11.51034],"oq1V":[5.32731,11.42723],"UZ3Y":[5.87522,12.55455],"SzlM":[5.13994,12.45801]},"texture":2,"vertices":["oq1V","SzlM","UZ3Y","EgMG"]},"wPbKuLT0":{"uv":{"UZ3Y":[41.82689,2.20373],"SzlM":[41.08529,2.20373],"E3QV":[41.87209,3.25013],"utmE":[41.04009,3.25013]},"texture":2,"vertices":["SzlM","utmE","E3QV","UZ3Y"]},"OhPfZoCo":{"uv":{"E3QV":[27.1984,22.16411],"utmE":[26.36643,22.1711],"I0M0":[27.2453,23.21015],"7wmI":[26.33714,23.21779]},"texture":2,"vertices":["utmE","7wmI","I0M0","E3QV"]},"fwLBCVaD":{"uv":{"I0M0":[27.2453,23.21015],"7wmI":[26.33714,23.21779],"NFSR":[27.2844,24.25626],"yRPj":[26.31564,24.26441]},"texture":2,"vertices":["7wmI","yRPj","NFSR","I0M0"]},"ysWfTeN1":{"uv":{"NFSR":[27.2844,24.25626],"yRPj":[26.31564,24.26441],"HI9i":[27.3153,25.30244],"gIei":[26.30234,25.31095]},"texture":2,"vertices":["yRPj","gIei","HI9i","NFSR"]},"0Ltqyb3F":{"uv":{"HI9i":[27.3153,25.30244],"gIei":[26.30234,25.31095],"fyyp":[27.3375,26.34869],"eGfa":[26.29774,26.35743]},"texture":2,"vertices":["gIei","eGfa","fyyp","HI9i"]},"gGCRszsa":{"uv":{"fyyp":[27.3375,26.34869],"eGfa":[26.29774,26.35743],"mKVr":[27.3507,27.39501],"Ulik":[26.30214,27.40383]},"texture":2,"vertices":["eGfa","Ulik","mKVr","fyyp"]},"7bGfyV7c":{"uv":{"mKVr":[27.3507,27.39501],"Ulik":[26.30214,27.40383],"gdQD":[27.3551,28.44141],"scDS":[26.31534,28.45016]},"texture":2,"vertices":["Ulik","scDS","gdQD","mKVr"]},"6kxHEEba":{"uv":{"gdQD":[31.2301,30.05609],"scDS":[30.19064,30.08272],"aUro":[31.2435,31.10249],"hIN2":[30.23083,31.12843]},"texture":2,"vertices":["scDS","hIN2","aUro","gdQD"]},"w28kez7r":{"uv":{"aUro":[31.2435,31.10249],"hIN2":[30.23083,31.12843],"0HiU":[31.2482,32.14911],"ARpU":[30.27972,32.17392]},"texture":2,"vertices":["hIN2","ARpU","0HiU","aUro"]},"mc4ZSyLB":{"uv":{"0HiU":[31.2482,32.14911],"ARpU":[30.27972,32.17392],"9TWT":[31.24471,33.19594],"6rkc":[30.33681,33.2192]},"texture":2,"vertices":["ARpU","6rkc","9TWT","0HiU"]},"kUG2ZmIq":{"uv":{"9TWT":[31.24471,33.19594],"6rkc":[30.33681,33.2192],"C8OL":[31.23342,34.24298],"ze0S":[30.40169,34.26428]},"texture":2,"vertices":["6rkc","ze0S","C8OL","9TWT"]},"Rpt5deKK":{"uv":{"C8OL":[31.23342,34.24298],"ze0S":[30.40169,34.26428],"1Z88":[31.21503,35.29019],"Eusq":[30.47367,35.30918]},"texture":2,"vertices":["ze0S","Eusq","1Z88","C8OL"]},"BghmO7Hm":{"uv":{"1Z88":[16.88566,11.07929],"Eusq":[16.15017,11.17429],"UinS":[16.96853,12.12368],"JXeL":[16.33539,12.20546]},"texture":2,"vertices":["Eusq","JXeL","UinS","1Z88"]},"5wY9yvGt":{"uv":{"UinS":[16.96853,12.12368],"JXeL":[16.33539,12.20546],"fzjW":[17.04605,13.16876],"qWnI":[16.52597,13.23594]},"texture":2,"vertices":["JXeL","qWnI","fzjW","UinS"]},"2q9A1jla":{"uv":{"fzjW":[17.04605,13.16876],"qWnI":[16.52597,13.23594],"Mz4d":[17.1191,14.21442],"2VVD":[16.72101,14.26584]},"texture":2,"vertices":["qWnI","2VVD","Mz4d","fzjW"]},"bjWoCtxU":{"uv":{"Mz4d":[17.1191,14.21442],"2VVD":[16.72101,14.26584],"dSMw":[17.18868,15.26052],"H60O":[16.91952,15.29529]},"texture":2,"vertices":["2VVD","H60O","dSMw","Mz4d"]},"MUWtzD7l":{"uv":{"dSMw":[17.18868,15.26052],"H60O":[16.91952,15.29529],"tR1X":[17.25598,16.30692],"NrV4":[17.12031,16.32445]},"texture":2,"vertices":["H60O","NrV4","tR1X","dSMw"]},"VTMJMWfq":{"uv":{"XlmK":[17.32438,17.35332],"NrV4":[17.10302,16.32832],"tR1X":[17.23834,16.30822]},"texture":2,"vertices":["tR1X","NrV4","XlmK"]},"9lcAUUyI":{"uv":{"dzS6":[6.32489,6.2813],"3EOa":[6.39329,7.3277],"AjSu":[6.25649,7.3277]},"texture":2,"vertices":["AjSu","3EOa","dzS6"]},"qbYwmgNc":{"uv":{"3EOa":[6.39329,7.3277],"AjSu":[6.25649,7.3277],"z4aC":[6.46059,8.3741],"os9i":[6.18919,8.3741]},"texture":2,"vertices":["AjSu","os9i","z4aC","3EOa"]},"yuLnrXSk":{"uv":{"z4aC":[6.46059,8.3741],"os9i":[6.18919,8.3741],"2Fya":[6.52559,9.4205],"1gw9":[6.12419,9.4205]},"texture":2,"vertices":["os9i","1gw9","2Fya","z4aC"]},"SUpD1h36":{"uv":{"2Fya":[6.52559,9.4205],"1gw9":[6.12419,9.4205],"gZCo":[6.58709,10.4669],"dNrd":[6.06269,10.4669]},"texture":2,"vertices":["1gw9","dNrd","gZCo","2Fya"]},"dQmeuWuc":{"uv":{"gZCo":[6.58709,10.4669],"dNrd":[6.06269,10.4669],"3Yp0":[6.64409,11.5133],"EgMG":[6.00569,11.5133]},"texture":2,"vertices":["dNrd","EgMG","3Yp0","gZCo"]},"vCEWZB9R":{"uv":{"3Yp0":[6.64409,11.5133],"EgMG":[6.00569,11.5133],"qKsy":[6.69569,12.5597],"UZ3Y":[5.95409,12.5597]},"texture":2,"vertices":["EgMG","UZ3Y","qKsy","3Yp0"]},"T56NMjT0":{"uv":{"qKsy":[28.35142,21.11492],"UZ3Y":[27.60992,21.10245],"LgQF":[28.37901,22.16193],"E3QV":[27.54713,22.14794]},"texture":2,"vertices":["UZ3Y","E3QV","LgQF","qKsy"]},"CfFQfH8F":{"uv":{"LgQF":[28.37901,22.16193],"E3QV":[27.54713,22.14794],"BWc9":[28.39951,23.20882],"I0M0":[27.49143,23.19355]},"texture":2,"vertices":["E3QV","I0M0","BWc9","LgQF"]},"wulDKrBJ":{"uv":{"BWc9":[28.39951,23.20882],"I0M0":[27.49143,23.19355],"KLHF":[28.4122,24.25559],"NFSR":[27.44354,24.23929]},"texture":2,"vertices":["I0M0","NFSR","KLHF","BWc9"]},"LeLaDjcb":{"uv":{"KLHF":[28.4122,24.25559],"NFSR":[27.44354,24.23929],"N1WI":[28.4167,25.30221],"HI9i":[27.40384,25.28517]},"texture":2,"vertices":["NFSR","HI9i","N1WI","KLHF"]},"Wj6pHzYL":{"uv":{"N1WI":[28.4167,25.30221],"HI9i":[27.40384,25.28517],"TpEY":[28.4125,26.34869],"fyyp":[27.37285,26.3312]},"texture":2,"vertices":["HI9i","fyyp","TpEY","N1WI"]},"4FPG2SoG":{"uv":{"TpEY":[28.4125,26.34869],"fyyp":[27.37285,26.3312],"iVCT":[28.3993,27.39501],"mKVr":[27.35085,27.37738]},"texture":2,"vertices":["fyyp","mKVr","iVCT","TpEY"]},"1V4soiLu":{"uv":{"iVCT":[28.3993,27.39501],"mKVr":[27.3507,27.39501],"760b":[28.3949,28.44141],"gdQD":[27.3551,28.44141]},"texture":2,"vertices":["mKVr","gdQD","760b","iVCT"]},"2IwT7gbn":{"uv":{"760b":[32.2699,30.05609],"gdQD":[31.2301,30.05609],"oBfU":[32.2565,31.10249],"aUro":[31.2435,31.10249]},"texture":2,"vertices":["gdQD","aUro","oBfU","760b"]},"xdIP37e1":{"uv":{"oBfU":[32.2565,31.10249],"aUro":[31.24364,31.11933],"FAD7":[32.2518,32.14911],"0HiU":[31.28313,32.16522]},"texture":2,"vertices":["aUro","0HiU","FAD7","oBfU"]},"RQKU4JV6":{"uv":{"FAD7":[32.2518,32.14911],"0HiU":[31.28313,32.16522],"npZg":[32.2389,33.19587],"9TWT":[31.33082,33.21097]},"texture":2,"vertices":["0HiU","9TWT","npZg","FAD7"]},"ENN4CiFV":{"uv":{"npZg":[32.2389,33.19587],"9TWT":[31.33082,33.21097],"JVmh":[32.21819,34.24276],"C8OL":[31.38631,34.25659]},"texture":2,"vertices":["9TWT","C8OL","JVmh","npZg"]},"utYVroaT":{"uv":{"JVmh":[32.21819,34.24276],"C8OL":[31.38631,34.25659],"JFca":[32.1904,35.28977],"1Z88":[31.4489,35.30209]},"texture":2,"vertices":["C8OL","1Z88","JFca","JVmh"]},"nPfH4M1F":{"uv":{"JFca":[17.69518,11.07492],"1Z88":[16.95358,11.07492],"jkRk":[17.64358,12.12132],"UinS":[17.00518,12.12132]},"texture":2,"vertices":["1Z88","UinS","jkRk","JFca"]},"5BxnPwIw":{"uv":{"jkRk":[17.64358,12.12132],"UinS":[17.00518,12.12132],"hz0R":[17.58658,13.16772],"fzjW":[17.06218,13.16772]},"texture":2,"vertices":["UinS","fzjW","hz0R","jkRk"]},"AkyhDLHW":{"uv":{"hz0R":[17.58658,13.16772],"fzjW":[17.06218,13.16772],"gwWe":[17.52508,14.21412],"Mz4d":[17.12368,14.21412]},"texture":2,"vertices":["fzjW","Mz4d","gwWe","hz0R"]},"FfHEpjUJ":{"uv":{"gwWe":[17.52508,14.21412],"Mz4d":[17.12368,14.21412],"KEuE":[17.46008,15.26052],"dSMw":[17.18868,15.26052]},"texture":2,"vertices":["Mz4d","dSMw","KEuE","gwWe"]},"465KPgWn":{"uv":{"KEuE":[17.46008,15.26052],"dSMw":[17.18868,15.26052],"dpwi":[17.39278,16.30692],"tR1X":[17.25598,16.30692]},"texture":2,"vertices":["dSMw","tR1X","dpwi","KEuE"]},"AeAKbkjU":{"uv":{"XlmK":[17.32438,17.35332],"tR1X":[17.25598,16.30692],"dpwi":[17.39278,16.30692]},"texture":2,"vertices":["dpwi","tR1X","XlmK"]},"yzxhApdP":{"uv":{"dzS6":[6.32708,6.28116],"8MFF":[6.52896,7.31018],"3EOa":[6.39329,7.3277]},"texture":2,"vertices":["3EOa","8MFF","dzS6"]},"z6MOqs4M":{"uv":{"8MFF":[6.52896,7.31018],"3EOa":[6.39329,7.3277],"mQyo":[6.72975,8.33934],"z4aC":[6.46059,8.3741]},"texture":2,"vertices":["3EOa","z4aC","mQyo","8MFF"]},"lGfo8J7C":{"uv":{"mQyo":[6.7299,8.34052],"z4aC":[6.46059,8.3741],"wyx4":[6.9239,9.37083],"2Fya":[6.52559,9.4205]},"texture":2,"vertices":["z4aC","2Fya","wyx4","mQyo"]},"8je7O6CQ":{"uv":{"wyx4":[6.9239,9.37083],"2Fya":[6.52559,9.4205],"3yNM":[7.11443,10.40157],"gZCo":[6.59406,10.46647]},"texture":2,"vertices":["2Fya","gZCo","3yNM","wyx4"]},"rWsdFhbI":{"uv":{"3yNM":[7.11443,10.40157],"gZCo":[6.59406,10.46647],"u4hw":[7.30049,11.43287],"3Yp0":[6.667,11.51188]},"texture":2,"vertices":["gZCo","3Yp0","u4hw","3yNM"]},"4KlaKHFt":{"uv":{"u4hw":[7.30049,11.43287],"3Yp0":[6.667,11.51188],"3Wjd":[7.4812,12.46484],"qKsy":[6.7453,12.55662]},"texture":2,"vertices":["3Yp0","qKsy","3Wjd","u4hw"]},"Wfqiftbm":{"uv":{"3Wjd":[14.78971,2.20373],"qKsy":[14.04811,2.20373],"rdXu":[14.83491,3.25013],"LgQF":[14.00291,3.25013]},"texture":2,"vertices":["qKsy","LgQF","rdXu","3Wjd"]},"cuWGbH4G":{"uv":{"rdXu":[29.38357,22.1711],"LgQF":[28.5516,22.16411],"xBAV":[29.41286,23.21779],"BWc9":[28.5047,23.21015]},"texture":2,"vertices":["LgQF","BWc9","xBAV","rdXu"]},"GAdJac2G":{"uv":{"xBAV":[29.41286,23.21779],"BWc9":[28.5047,23.21015],"kOgf":[29.43436,24.26441],"KLHF":[28.4656,24.25626]},"texture":2,"vertices":["BWc9","KLHF","kOgf","xBAV"]},"W9XhWRA9":{"uv":{"kOgf":[29.43436,24.26441],"KLHF":[28.4656,24.25626],"Xy8o":[29.44766,25.31095],"N1WI":[28.4347,25.30244]},"texture":2,"vertices":["KLHF","N1WI","Xy8o","kOgf"]},"pthOOuhh":{"uv":{"Xy8o":[29.44766,25.31095],"N1WI":[28.4347,25.30244],"LGDx":[29.45226,26.35743],"TpEY":[28.4125,26.34869]},"texture":2,"vertices":["N1WI","TpEY","LGDx","Xy8o"]},"h1wtygZ9":{"uv":{"LGDx":[29.45226,26.35743],"TpEY":[28.4125,26.34869],"9LGl":[29.44786,27.40383],"iVCT":[28.3993,27.39501]},"texture":2,"vertices":["TpEY","iVCT","9LGl","LGDx"]},"JYnREbiQ":{"uv":{"9LGl":[29.44786,27.40383],"iVCT":[28.3993,27.39501],"9HF3":[29.43466,28.45016],"760b":[28.3949,28.44141]},"texture":2,"vertices":["iVCT","760b","9HF3","9LGl"]},"71rFAN3C":{"uv":{"9HF3":[33.30936,30.08272],"760b":[32.2699,30.05609],"xc4o":[33.26917,31.12843],"oBfU":[32.2565,31.10249]},"texture":2,"vertices":["760b","oBfU","xc4o","9HF3"]},"VXwaKqhy":{"uv":{"xc4o":[33.26917,31.12843],"oBfU":[32.2565,31.10249],"aAGw":[33.22028,32.17392],"FAD7":[32.2518,32.14911]},"texture":2,"vertices":["oBfU","FAD7","aAGw","xc4o"]},"CeoBndcI":{"uv":{"aAGw":[33.22028,32.17392],"FAD7":[32.2518,32.14911],"kSHw":[33.16319,33.2192],"npZg":[32.25529,33.19594]},"texture":2,"vertices":["FAD7","npZg","kSHw","aAGw"]},"7PlWXLQ3":{"uv":{"kSHw":[33.16319,33.2192],"npZg":[32.25529,33.19594],"zoMw":[33.09831,34.26428],"JVmh":[32.26658,34.24298]},"texture":2,"vertices":["npZg","JVmh","zoMw","kSHw"]},"qJd5xMrw":{"uv":{"zoMw":[33.09831,34.26428],"JVmh":[32.26658,34.24298],"L2YT":[33.02633,35.30918],"JFca":[32.28497,35.29019]},"texture":2,"vertices":["JVmh","JFca","L2YT","zoMw"]},"wtz33cwd":{"uv":{"L2YT":[18.50933,11.17662],"JFca":[17.77404,11.08008],"EHc6":[18.32196,12.2074],"jkRk":[17.68899,12.12429]},"texture":2,"vertices":["JFca","jkRk","EHc6","L2YT"]},"rK0RHM9W":{"uv":{"EHc6":[18.32196,12.2074],"jkRk":[17.68899,12.12429],"ocOi":[18.12922,13.23747],"hz0R":[17.60928,13.16921]},"texture":2,"vertices":["jkRk","hz0R","ocOi","EHc6"]},"H8nzN0xc":{"uv":{"ocOi":[18.12922,13.23747],"hz0R":[17.60928,13.16921],"C3Ll":[17.93203,14.26696],"gwWe":[17.53404,14.21471]},"texture":2,"vertices":["hz0R","gwWe","C3Ll","ocOi"]},"QuisbM80":{"uv":{"C3Ll":[17.93203,14.26696],"gwWe":[17.53404,14.21471],"w45q":[17.73136,15.296],"KEuE":[17.46227,15.26066]},"texture":2,"vertices":["gwWe","KEuE","w45q","C3Ll"]},"1ZAcH8wj":{"uv":{"w45q":[17.73136,15.296],"KEuE":[17.46227,15.26066],"Acv9":[17.52842,16.32473],"dpwi":[17.39278,16.30692]},"texture":2,"vertices":["KEuE","dpwi","Acv9","w45q"]},"F5Ts4FJZ":{"uv":{"XlmK":[17.32438,17.35332],"dpwi":[17.39278,16.30692],"Acv9":[17.52842,16.32473]},"texture":2,"vertices":["Acv9","dpwi","XlmK"]},"BMBClKKA":{"uv":{"dzS6":[6.32923,6.28074],"9X1q":[6.66127,7.27542],"8MFF":[6.52896,7.31018]},"texture":2,"vertices":["8MFF","9X1q","dzS6"]},"VEy3jH2Q":{"uv":{"9X1q":[6.66127,7.27542],"8MFF":[6.52896,7.31018],"vGNK":[6.99224,8.27038],"mQyo":[6.72975,8.33934]},"texture":2,"vertices":["8MFF","mQyo","vGNK","9X1q"]},"VdqdIige":{"uv":{"vGNK":[6.99299,8.27386],"mQyo":[6.7299,8.34052],"q2Nn":[7.31301,9.27224],"wyx4":[6.9239,9.37083]},"texture":2,"vertices":["mQyo","wyx4","q2Nn","vGNK"]},"XstIUeTP":{"uv":{"q2Nn":[7.31301,9.27224],"wyx4":[6.9239,9.37083],"HNcK":[7.62963,10.27148],"3yNM":[7.1213,10.40028]},"texture":2,"vertices":["wyx4","3yNM","HNcK","q2Nn"]},"ZNUgaUEL":{"uv":{"HNcK":[7.62963,10.27148],"3yNM":[7.1213,10.40028],"pGec":[7.9419,11.27183],"u4hw":[7.32305,11.42863]},"texture":2,"vertices":["3yNM","u4hw","pGec","HNcK"]},"ERCxYomC":{"uv":{"pGec":[7.9419,11.27183],"u4hw":[7.32305,11.42863],"fGjb":[8.24892,12.2735],"3Wjd":[7.53004,12.45565]},"texture":2,"vertices":["u4hw","3Wjd","fGjb","pGec"]},"62bnYgKK":{"uv":{"fGjb":[15.52855,2.13978],"3Wjd":[14.78971,2.20373],"JLMc":[15.66381,3.17839],"rdXu":[14.83491,3.25013]},"texture":2,"vertices":["3Wjd","rdXu","JLMc","fGjb"]},"Qpw5mKVd":{"uv":{"JLMc":[30.47603,22.18839],"rdXu":[29.64414,22.17439],"ZoWp":[30.49652,23.23528],"xBAV":[29.58845,23.22]},"texture":2,"vertices":["rdXu","xBAV","ZoWp","JLMc"]},"EmXPmMcA":{"uv":{"ZoWp":[30.49652,23.23528],"xBAV":[29.58845,23.22],"dyxS":[30.50922,24.28204],"kOgf":[29.54055,24.26575]},"texture":2,"vertices":["xBAV","kOgf","dyxS","ZoWp"]},"cSLKStu8":{"uv":{"dyxS":[30.50922,24.28204],"kOgf":[29.54055,24.26575],"DBir":[30.51372,25.32866],"Xy8o":[29.50086,25.31163]},"texture":2,"vertices":["kOgf","Xy8o","DBir","dyxS"]},"frIZ7542":{"uv":{"DBir":[30.51372,25.32866],"Xy8o":[29.50086,25.31163],"oaaM":[30.50951,26.37514],"LGDx":[29.46986,26.35765]},"texture":2,"vertices":["Xy8o","LGDx","oaaM","DBir"]},"96YGOJSX":{"uv":{"oaaM":[30.50951,26.37514],"LGDx":[29.46986,26.35765],"OTbw":[30.49631,27.42147],"9LGl":[29.44786,27.40383]},"texture":2,"vertices":["LGDx","9LGl","OTbw","oaaM"]},"8qqIO970":{"uv":{"OTbw":[30.49631,27.42147],"9LGl":[29.44786,27.40383],"z7Iq":[30.47432,28.46764],"9HF3":[29.43466,28.45016]},"texture":2,"vertices":["9LGl","9HF3","z7Iq","OTbw"]},"wC5c0oWs":{"uv":{"z7Iq":[34.3478,30.13595],"9HF3":[33.30936,30.08272],"oo72":[34.28084,31.18029],"xc4o":[33.26917,31.12843]},"texture":2,"vertices":["9HF3","xc4o","oo72","z7Iq"]},"nL889xlX":{"uv":{"oo72":[34.28084,31.18029],"xc4o":[33.26917,31.12843],"HkvK":[34.20519,32.22419],"aAGw":[33.23767,32.17459]},"texture":2,"vertices":["xc4o","aAGw","HkvK","oo72"]},"p0ONQKwO":{"uv":{"HkvK":[34.20519,32.22419],"aAGw":[33.23767,32.17459],"Z3pv":[34.12136,33.26766],"kSHw":[33.21435,33.22117]},"texture":2,"vertices":["aAGw","kSHw","Z3pv","HkvK"]},"erSupPQa":{"uv":{"Z3pv":[34.12136,33.26766],"kSHw":[33.21435,33.22117],"yJpj":[34.02974,34.31074],"zoMw":[33.19883,34.26815]},"texture":2,"vertices":["kSHw","zoMw","yJpj","Z3pv"]},"a5PHHQeA":{"uv":{"yJpj":[34.02974,34.31074],"zoMw":[33.19883,34.26815],"U22n":[33.93102,35.35346],"L2YT":[33.1904,35.31549]},"texture":2,"vertices":["zoMw","L2YT","U22n","yJpj"]},"xKGwmyDy":{"uv":{"U22n":[19.30332,11.38343],"L2YT":[18.58686,11.19199],"BG8g":[18.98335,12.38105],"EHc6":[18.36659,12.21625]},"texture":2,"vertices":["L2YT","EHc6","BG8g","U22n"]},"gsQjDWOe":{"uv":{"BG8g":[18.98335,12.38105],"EHc6":[18.36659,12.21625],"Qvs0":[18.65817,13.37727],"ocOi":[18.15154,13.2419]},"texture":2,"vertices":["EHc6","ocOi","Qvs0","BG8g"]},"mFztPJ6G":{"uv":{"Qvs0":[18.65817,13.37727],"ocOi":[18.15154,13.2419],"gevK":[18.32863,14.37233],"C3Ll":[17.94084,14.26871]},"texture":2,"vertices":["ocOi","C3Ll","gevK","Qvs0"]},"7kDKEZ50":{"uv":{"gevK":[18.32863,14.37233],"C3Ll":[17.94084,14.26871],"uINs":[17.99572,15.36648],"w45q":[17.73352,15.29642]},"texture":2,"vertices":["C3Ll","w45q","uINs","gevK"]},"iKANJtin":{"uv":{"uINs":[17.99572,15.36648],"w45q":[17.73352,15.29642],"Pph3":[17.66058,16.36004],"Acv9":[17.52842,16.32473]},"texture":2,"vertices":["w45q","Acv9","Pph3","uINs"]},"aaPtOJ4n":{"uv":{"XlmK":[17.32438,17.35332],"Acv9":[17.52842,16.32473],"Pph3":[17.66058,16.36004]},"texture":2,"vertices":["Pph3","Acv9","XlmK"]},"uXqv6jk7":{"uv":{"dzS6":[6.33132,6.28005],"thUa":[6.78804,7.224],"9X1q":[6.66127,7.27542]},"texture":2,"vertices":["9X1q","thUa","dzS6"]},"xNWNe51a":{"uv":{"thUa":[6.78804,7.224],"9X1q":[6.66127,7.27542],"7aRf":[7.24374,8.16836],"vGNK":[6.99224,8.27038]},"texture":2,"vertices":["9X1q","vGNK","7aRf","thUa"]},"M9G3Jro2":{"uv":{"7aRf":[7.2458,8.17515],"vGNK":[6.99299,8.27386],"ID9S":[7.68692,9.12625],"q2Nn":[7.31301,9.27224]},"texture":2,"vertices":["vGNK","q2Nn","ID9S","7aRf"]},"84PmKAqr":{"uv":{"ID9S":[7.68692,9.12625],"q2Nn":[7.31301,9.27224],"V1xz":[8.12477,10.07863],"HNcK":[7.63629,10.26935]},"texture":2,"vertices":["q2Nn","HNcK","V1xz","ID9S"]},"84VOiMP1":{"uv":{"V1xz":[8.12477,10.07863],"HNcK":[7.63629,10.26935],"q3GW":[8.55844,11.03264],"pGec":[7.96376,11.26482]},"texture":2,"vertices":["HNcK","pGec","q3GW","V1xz"]},"JRs56fbH":{"uv":{"q3GW":[8.55844,11.03264],"pGec":[7.96376,11.26482],"X76u":[8.98707,11.98861],"fGjb":[8.29626,12.25833]},"texture":2,"vertices":["pGec","fGjb","X76u","q3GW"]},"k42cucqJ":{"uv":{"X76u":[16.25912,2.01236],"fGjb":[15.52855,2.13978],"W8bp":[16.48344,3.03544],"JLMc":[15.66381,3.17839]},"texture":2,"vertices":["fGjb","JLMc","W8bp","X76u"]},"Vd6fyBTA":{"uv":{"W8bp":[31.5683,22.21485],"JLMc":[30.73657,22.19386],"a27S":[31.57999,23.26188],"ZoWp":[30.67208,23.23897]},"texture":2,"vertices":["JLMc","ZoWp","a27S","W8bp"]},"ChgRyUt8":{"uv":{"a27S":[31.57999,23.26188],"ZoWp":[30.67208,23.23897],"9K9C":[31.58388,24.30871],"dyxS":[30.61539,24.28427]},"texture":2,"vertices":["ZoWp","dyxS","9K9C","a27S"]},"hpcH1KQQ":{"uv":{"9K9C":[31.58388,24.30871],"dyxS":[30.61539,24.28427],"1ONC":[31.57958,25.35534],"DBir":[30.5669,25.32978]},"texture":2,"vertices":["dyxS","DBir","1ONC","9K9C"]},"JffDWynD":{"uv":{"1ONC":[31.57958,25.35534],"DBir":[30.5669,25.32978],"G39W":[31.56658,26.40174],"oaaM":[30.52711,26.37551]},"texture":2,"vertices":["DBir","oaaM","G39W","1ONC"]},"YSnFdYcf":{"uv":{"G39W":[31.56658,26.40174],"oaaM":[30.52711,26.37551],"qNWc":[31.54458,27.44792],"OTbw":[30.49631,27.42147]},"texture":2,"vertices":["oaaM","OTbw","qNWc","G39W"]},"6xwHhEIp":{"uv":{"qNWc":[31.54458,27.44792],"OTbw":[30.49631,27.42147],"SVBU":[31.51379,28.49388],"z7Iq":[30.47432,28.46764]},"texture":2,"vertices":["OTbw","z7Iq","SVBU","qNWc"]},"hTA4FKxY":{"uv":{"SVBU":[35.38453,30.21576],"z7Iq":[34.3478,30.13595],"chD0":[35.29085,31.25805],"oo72":[34.28084,31.18029]},"texture":2,"vertices":["z7Iq","oo72","chD0","SVBU"]},"9B3osZ1y":{"uv":{"chD0":[35.29085,31.25805],"oo72":[34.28084,31.18029],"CBSe":[35.1885,32.29966],"HkvK":[34.22256,32.2253]},"texture":2,"vertices":["oo72","HkvK","CBSe","chD0"]},"8sKWKY88":{"uv":{"CBSe":[35.1885,32.29966],"HkvK":[34.22256,32.2253],"oQrB":[35.07797,33.34065],"Z3pv":[34.17245,33.27094]},"texture":2,"vertices":["HkvK","Z3pv","oQrB","CBSe"]},"SkeOorjb":{"uv":{"oQrB":[35.07797,33.34065],"Z3pv":[34.17245,33.27094],"AKRW":[34.95967,34.38104],"yJpj":[34.13012,34.31718]},"texture":2,"vertices":["Z3pv","yJpj","AKRW","oQrB"]},"5hMirpcb":{"uv":{"AKRW":[34.95967,34.38104],"yJpj":[34.13012,34.31718],"nato":[34.83429,35.42088],"U22n":[34.09487,35.36396]},"texture":2,"vertices":["yJpj","U22n","nato","AKRW"]},"GwBCRk8Y":{"uv":{"nato":[20.06363,11.69184],"U22n":[19.37818,11.40877],"P8FM":[19.61651,12.63932],"BG8g":[19.02645,12.39563]},"texture":2,"vertices":["U22n","BG8g","P8FM","nato"]},"SaLOpbMf":{"uv":{"P8FM":[19.61651,12.63932],"BG8g":[19.02645,12.39563],"rSO3":[19.16441,13.58473],"Qvs0":[18.67972,13.38456]},"texture":2,"vertices":["BG8g","Qvs0","rSO3","P8FM"]},"Y7rcKNkS":{"uv":{"rSO3":[19.16441,13.58473],"Qvs0":[18.67972,13.38456],"SKqG":[18.70815,14.52842],"gevK":[18.33714,14.37521]},"texture":2,"vertices":["Qvs0","gevK","SKqG","rSO3"]},"DNUHadDm":{"uv":{"SKqG":[18.70815,14.52842],"gevK":[18.33714,14.37521],"gkD4":[18.24865,15.47078],"uINs":[17.9978,15.36719]},"texture":2,"vertices":["gevK","uINs","gkD4","SKqG"]},"rPnirNpW":{"uv":{"gkD4":[18.24865,15.47078],"uINs":[17.9978,15.36719],"rLWa":[17.78702,16.41226],"Pph3":[17.66058,16.36004]},"texture":2,"vertices":["uINs","Pph3","rLWa","gkD4"]},"9uxORudS":{"uv":{"XlmK":[17.32438,17.35332],"Pph3":[17.66058,16.36004],"rLWa":[17.78702,16.41226]},"texture":2,"vertices":["rLWa","Pph3","XlmK"]},"vaFpbVyp":{"uv":{"dzS6":[6.33329,6.2791],"lj05":[6.90717,7.15676],"thUa":[6.78804,7.224]},"texture":2,"vertices":["thUa","lj05","dzS6"]},"snorC7od":{"uv":{"lj05":[6.90717,7.15676],"thUa":[6.78804,7.224],"qX59":[7.4801,8.03496],"7aRf":[7.24374,8.16836]},"texture":2,"vertices":["thUa","7aRf","qX59","lj05"]},"Ta1bHgVb":{"uv":{"qX59":[7.48446,8.04592],"7aRf":[7.2458,8.17515],"PgQ5":[8.03989,8.93511],"ID9S":[7.68692,9.12625]},"texture":2,"vertices":["7aRf","ID9S","PgQ5","qX59"]},"9pVrKpP8":{"uv":{"PgQ5":[8.03989,8.93511],"ID9S":[7.68692,9.12625],"rShO":[8.59224,9.82598],"V1xz":[8.13111,10.07569]},"texture":2,"vertices":["ID9S","V1xz","rShO","PgQ5"]},"2pjc0Lrz":{"uv":{"rShO":[8.59224,9.82598],"V1xz":[8.13111,10.07569],"RFaQ":[9.14064,10.71899],"q3GW":[8.57926,11.02298]},"texture":2,"vertices":["V1xz","q3GW","RFaQ","rShO"]},"znPyhRPS":{"uv":{"RFaQ":[9.14064,10.71899],"q3GW":[8.57926,11.02298],"5myN":[9.68429,11.61457],"X76u":[9.03216,11.9677]},"texture":2,"vertices":["q3GW","X76u","5myN","RFaQ"]},"sH3377mi":{"uv":{"5myN":[16.97598,1.82242],"X76u":[16.25912,2.01236],"Uk6i":[17.28768,2.82234],"W8bp":[16.48344,3.03544]},"texture":2,"vertices":["X76u","W8bp","Uk6i","5myN"]},"pjnSpkir":{"uv":{"Uk6i":[17.28768,2.82234],"W8bp":[16.48344,3.03544],"4I6h":[17.59252,3.82408],"a27S":[16.71462,4.05669]},"texture":2,"vertices":["W8bp","a27S","4I6h","Uk6i"]},"gDLTrdAQ":{"uv":{"4I6h":[32.6632,23.29759],"a27S":[31.75551,23.26705],"QSXZ":[32.65829,24.34442],"9K9C":[31.69004,24.31184]},"texture":2,"vertices":["a27S","9K9C","QSXZ","4I6h"]},"J5BtEQC2":{"uv":{"QSXZ":[32.65829,24.34442],"9K9C":[31.69004,24.31184],"TJGl":[32.64518,25.39097],"1ONC":[31.63276,25.3569]},"texture":2,"vertices":["9K9C","1ONC","TJGl","QSXZ"]},"MF8CBDov":{"uv":{"TJGl":[32.64518,25.39097],"1ONC":[31.63276,25.3569],"AJLW":[32.62338,26.43723],"G39W":[31.58417,26.40226]},"texture":2,"vertices":["1ONC","G39W","AJLW","TJGl"]},"f8W3t7Sc":{"uv":{"AJLW":[32.62338,26.43723],"G39W":[31.58417,26.40226],"8VBb":[32.59259,27.48319],"qNWc":[31.54458,27.44792]},"texture":2,"vertices":["G39W","qNWc","8VBb","AJLW"]},"aFN1JpVp":{"uv":{"8VBb":[32.59259,27.48319],"qNWc":[31.54458,27.44792],"ndRs":[32.553,28.52885],"SVBU":[31.51379,28.49388]},"texture":2,"vertices":["qNWc","SVBU","ndRs","8VBb"]},"fKQppdD4":{"uv":{"ndRs":[36.41888,30.32209],"SVBU":[35.38453,30.21576],"gFzj":[36.29854,31.36164],"chD0":[35.29085,31.25805]},"texture":2,"vertices":["SVBU","chD0","gFzj","ndRs"]},"VjtlgfzV":{"uv":{"gFzj":[36.29854,31.36164],"chD0":[35.29085,31.25805],"eZbP":[36.16955,32.40029],"CBSe":[35.20583,32.30122]},"texture":2,"vertices":["chD0","CBSe","eZbP","gFzj"]},"dhVIXVq2":{"uv":{"eZbP":[36.16955,32.40029],"CBSe":[35.20583,32.30122],"tW39":[36.0324,33.43811],"oQrB":[35.12896,33.34523]},"texture":2,"vertices":["CBSe","oQrB","tW39","eZbP"]},"o4KnveHQ":{"uv":{"tW39":[36.0324,33.43811],"oQrB":[35.12896,33.34523],"zhd6":[35.88749,34.47512],"AKRW":[35.05986,34.39004]},"texture":2,"vertices":["oQrB","AKRW","zhd6","tW39"]},"lTDa9og4":{"uv":{"zhd6":[35.88749,34.47512],"AKRW":[35.05986,34.39004],"VMop":[35.73552,35.51142],"nato":[34.99781,35.43558]},"texture":2,"vertices":["AKRW","nato","VMop","zhd6"]},"mVgnz22Q":{"uv":{"VMop":[20.77732,12.09661],"nato":[20.13455,11.72671],"nfWu":[20.21067,12.97781],"P8FM":[19.65735,12.65939]},"texture":2,"vertices":["nato","P8FM","nfWu","VMop"]},"7u13s9rW":{"uv":{"nfWu":[20.21067,12.97781],"P8FM":[19.65735,12.65939],"qSjr":[19.63934,13.85633],"rSO3":[19.18483,13.59477]},"texture":2,"vertices":["P8FM","rSO3","qSjr","nfWu"]},"Gt975cK8":{"uv":{"qSjr":[19.63934,13.85633],"rSO3":[19.18483,13.59477],"HlK7":[19.06411,14.7326],"SKqG":[18.71621,14.53239]},"texture":2,"vertices":["rSO3","SKqG","HlK7","qSjr"]},"ADZVLXTR":{"uv":{"HlK7":[19.06411,14.7326],"SKqG":[18.71621,14.53239],"evfH":[18.48585,15.60712],"gkD4":[18.25062,15.47175]},"texture":2,"vertices":["SKqG","gkD4","evfH","HlK7"]},"jU6ZV273":{"uv":{"evfH":[18.48585,15.60712],"gkD4":[18.25062,15.47175],"v78p":[17.90559,16.48049],"rLWa":[17.78702,16.41226]},"texture":2,"vertices":["gkD4","rLWa","v78p","evfH"]},"yyzjxwFp":{"uv":{"XlmK":[17.32438,17.35332],"rLWa":[17.78702,16.41226],"v78p":[17.90559,16.48049]},"texture":2,"vertices":["v78p","rLWa","XlmK"]},"PgpQZKyl":{"uv":{"dzS6":[6.33513,6.2779],"7lhW":[7.01671,7.07481],"lj05":[6.90717,7.15676]},"texture":2,"vertices":["lj05","7lhW","dzS6"]},"j3gnCkOG":{"uv":{"7lhW":[7.01671,7.07481],"lj05":[6.90717,7.15676],"oUUx":[7.69742,7.87239],"qX59":[7.4801,8.03496]},"texture":2,"vertices":["lj05","qX59","oUUx","7lhW"]},"S62GcQQ1":{"uv":{"oUUx":[7.70528,7.88814],"qX59":[7.48446,8.04592],"ZaKM":[8.36649,8.70176],"PgQ5":[8.03989,8.93511]},"texture":2,"vertices":["qX59","PgQ5","ZaKM","oUUx"]},"gdSTeZWE":{"uv":{"ZaKM":[8.36649,8.70176],"PgQ5":[8.03989,8.93511],"Krxi":[9.02485,9.51742],"rShO":[8.59817,9.82228]},"texture":2,"vertices":["PgQ5","rShO","Krxi","ZaKM"]},"Qo6qskZf":{"uv":{"Krxi":[9.02485,9.51742],"rShO":[8.59817,9.82228],"kyGC":[9.67955,10.3357],"RFaQ":[9.16011,10.70683]},"texture":2,"vertices":["rShO","RFaQ","kyGC","Krxi"]},"xuy2A8lg":{"uv":{"kyGC":[9.67955,10.3357],"RFaQ":[9.16011,10.70683],"pfeJ":[10.32985,11.15711],"5myN":[9.72644,11.58823]},"texture":2,"vertices":["RFaQ","5myN","pfeJ","kyGC"]},"zoxRI4NG":{"uv":{"pfeJ":[17.67379,1.57137],"5myN":[16.97598,1.82242],"EcGu":[18.07056,2.54068],"Uk6i":[17.28768,2.82234]},"texture":2,"vertices":["5myN","Uk6i","EcGu","pfeJ"]},"vSmOYOUH":{"uv":{"EcGu":[18.07056,2.54068],"Uk6i":[17.28768,2.82234],"6nlf":[18.46065,3.5124],"4I6h":[17.60607,3.81985]},"texture":2,"vertices":["Uk6i","4I6h","6nlf","EcGu"]},"3zUzsv8C":{"uv":{"6nlf":[18.46065,3.5124],"4I6h":[17.60607,3.81985],"bIDo":[18.84339,4.48676],"QSXZ":[17.93179,4.81473]},"texture":2,"vertices":["4I6h","QSXZ","bIDo","6nlf"]},"huKKsh41":{"uv":{"bIDo":[33.73236,24.38916],"QSXZ":[32.76441,24.34844],"2eJu":[33.71045,25.43557],"TJGl":[32.69835,25.39298]},"texture":2,"vertices":["QSXZ","TJGl","2eJu","bIDo"]},"699QdcHv":{"uv":{"2eJu":[33.71045,25.43557],"TJGl":[32.69835,25.39298],"0tPl":[33.67985,26.48161],"AJLW":[32.64097,26.4379]},"texture":2,"vertices":["TJGl","AJLW","0tPl","2eJu"]},"RalCh3f3":{"uv":{"0tPl":[33.67985,26.48161],"AJLW":[32.64097,26.4379],"TG4t":[33.64026,27.52727],"8VBb":[32.59259,27.48319]},"texture":2,"vertices":["AJLW","8VBb","TG4t","0tPl"]},"GA9qYlGc":{"uv":{"TG4t":[33.64026,27.52727],"8VBb":[32.59259,27.48319],"Q7NG":[33.59188,28.57256],"ndRs":[32.553,28.52885]},"texture":2,"vertices":["8VBb","ndRs","Q7NG","TG4t"]},"nMZBZYB2":{"uv":{"Q7NG":[37.45016,30.45488],"ndRs":[36.41888,30.32209],"dSs6":[37.30325,31.491],"gFzj":[36.29854,31.36164]},"texture":2,"vertices":["ndRs","gFzj","dSs6","Q7NG"]},"waEbq9eO":{"uv":{"dSs6":[37.30325,31.491],"gFzj":[36.29854,31.36164],"ZPf9":[37.1477,32.52601],"eZbP":[36.18683,32.40229]},"texture":2,"vertices":["gFzj","eZbP","ZPf9","dSs6"]},"gTWtxIaY":{"uv":{"ZPf9":[37.1477,32.52601],"eZbP":[36.18683,32.40229],"5zQo":[36.98402,33.55997],"tW39":[36.08326,33.44399]},"texture":2,"vertices":["eZbP","tW39","5zQo","ZPf9"]},"n629NsFd":{"uv":{"5zQo":[36.98402,33.55997],"tW39":[36.08326,33.44399],"UmnM":[36.81261,34.59294],"zhd6":[35.98742,34.48669]},"texture":2,"vertices":["tW39","zhd6","UmnM","5zQo"]},"rtNublsk":{"uv":{"UmnM":[36.81261,34.59294],"zhd6":[35.98742,34.48669],"BxFW":[36.63415,35.625],"VMop":[35.89862,35.5303]},"texture":2,"vertices":["zhd6","VMop","BxFW","UmnM"]},"mQqq80Lf":{"uv":{"BxFW":[21.43224,12.59083],"VMop":[20.8431,12.14041],"AXiu":[20.7557,13.39078],"nfWu":[20.24854,13.00303]},"texture":2,"vertices":["VMop","nfWu","AXiu","BxFW"]},"sDo9oYSR":{"uv":{"AXiu":[20.7557,13.39078],"nfWu":[20.24854,13.00303],"ZrjD":[20.07487,14.18744],"qSjr":[19.65828,13.86894]},"texture":2,"vertices":["nfWu","qSjr","ZrjD","AXiu"]},"AH6tpXRG":{"uv":{"ZrjD":[20.07487,14.18744],"qSjr":[19.65828,13.86894],"eOFj":[19.39047,14.98137],"HlK7":[19.07159,14.73757]},"texture":2,"vertices":["qSjr","HlK7","eOFj","ZrjD"]},"Le8dlYM5":{"uv":{"eOFj":[19.39047,14.98137],"HlK7":[19.07159,14.73757],"7DA0":[18.70328,15.77318],"evfH":[18.48767,15.60834]},"texture":2,"vertices":["HlK7","evfH","7DA0","eOFj"]},"7xTB7ldi":{"uv":{"7DA0":[18.70328,15.77318],"evfH":[18.48767,15.60834],"yKIQ":[18.01427,16.56358],"v78p":[17.90559,16.48049]},"texture":2,"vertices":["evfH","v78p","yKIQ","7DA0"]},"jkig5OcC":{"uv":{"XlmK":[17.32438,17.35332],"v78p":[17.90559,16.48049],"yKIQ":[18.01427,16.56358]},"texture":2,"vertices":["yKIQ","v78p","XlmK"]},"zs793UIW":{"uv":{"dzS6":[6.3368,6.27647],"WuQN":[7.11486,6.97951],"7lhW":[7.01671,7.07481]},"texture":2,"vertices":["7lhW","WuQN","dzS6"]},"9uDks2Y8":{"uv":{"WuQN":[7.11486,6.97951],"7lhW":[7.01671,7.07481],"y2RU":[7.89212,7.68332],"oUUx":[7.69742,7.87239]},"texture":2,"vertices":["7lhW","oUUx","y2RU","WuQN"]},"XW39huHB":{"uv":{"y2RU":[7.90489,7.70425],"oUUx":[7.70528,7.88814],"HkLA":[8.6617,8.42979],"ZaKM":[8.36649,8.70176]},"texture":2,"vertices":["oUUx","ZaKM","HkLA","y2RU"]},"8tex7KvE":{"uv":{"HkLA":[8.6617,8.42979],"ZaKM":[8.36649,8.70176],"rQu5":[9.41594,9.1577],"Krxi":[9.03027,9.51302]},"texture":2,"vertices":["ZaKM","Krxi","rQu5","HkLA"]},"TcEtr7rr":{"uv":{"rQu5":[9.41594,9.1577],"Krxi":[9.03027,9.51302],"nfqI":[10.16688,9.88866],"kyGC":[9.69736,10.32122]},"texture":2,"vertices":["Krxi","kyGC","nfqI","rQu5"]},"eSISfosA":{"uv":{"nfqI":[10.16688,9.88866],"kyGC":[9.69736,10.32122],"hQue":[10.91384,10.62328],"pfeJ":[10.36842,11.12576]},"texture":2,"vertices":["kyGC","pfeJ","hQue","nfqI"]},"lS5nRLb9":{"uv":{"hQue":[18.34736,1.26108],"pfeJ":[17.67379,1.57137],"tAeb":[18.82623,2.19257],"EcGu":[18.07056,2.54068]},"texture":2,"vertices":["pfeJ","EcGu","tAeb","hQue"]},"B9u6eEWK":{"uv":{"tAeb":[18.82623,2.19257],"EcGu":[18.07056,2.54068],"ZnOQ":[19.29866,3.12703],"6nlf":[18.47377,3.50703]},"texture":2,"vertices":["EcGu","6nlf","ZnOQ","tAeb"]},"cs5gEJfN":{"uv":{"ZnOQ":[19.29866,3.12703],"6nlf":[18.47377,3.50703],"F1XN":[19.764,4.06476],"bIDo":[18.88407,4.47011]},"texture":2,"vertices":["6nlf","bIDo","F1XN","ZnOQ"]},"URCGAw7W":{"uv":{"F1XN":[19.764,4.06476],"bIDo":[18.88407,4.47011],"ViGI":[20.22189,5.00592],"2eJu":[19.30182,5.42976]},"texture":2,"vertices":["bIDo","2eJu","ViGI","F1XN"]},"LqqYh0zv":{"uv":{"ViGI":[20.22189,5.00592],"2eJu":[19.30182,5.42976],"vJrv":[20.67188,5.95071],"0tPl":[19.72747,6.38577]},"texture":2,"vertices":["2eJu","0tPl","vJrv","ViGI"]},"0f8qIkQ9":{"uv":{"vJrv":[18.1206,27],"0tPl":[17.0808,27],"UgB2":[18.125,28],"TG4t":[17.0764,28]},"texture":2,"vertices":["0tPl","TG4t","UgB2","vJrv"]},"l9sQvcca":{"uv":{"UgB2":[34.68753,27.58015],"TG4t":[33.64026,27.52727],"1Qqm":[34.63035,28.625],"Q7NG":[33.59188,28.57256]},"texture":2,"vertices":["TG4t","Q7NG","1Qqm","UgB2"]},"NPigh89R":{"uv":{"1Qqm":[38.47771,30.61403],"Q7NG":[37.45016,30.45488],"uKK1":[38.30431,31.64605],"dSs6":[37.30325,31.491]},"texture":2,"vertices":["Q7NG","dSs6","uKK1","1Qqm"]},"XEhGmWp3":{"uv":{"uKK1":[38.30431,31.64605],"dSs6":[37.30325,31.491],"8Eei":[38.12231,32.67673],"ZPf9":[37.16493,32.52845]},"texture":2,"vertices":["dSs6","ZPf9","8Eei","uKK1"]},"62KPSPx5":{"uv":{"8Eei":[38.12231,32.67673],"ZPf9":[37.16493,32.52845],"9I1n":[37.93221,33.70617],"5zQo":[37.03471,33.56716]},"texture":2,"vertices":["ZPf9","5zQo","9I1n","8Eei"]},"LDGijFU4":{"uv":{"9I1n":[4.94684,14.17159],"5zQo":[4.05215,14.32764],"1vE0":[5.0891,15.20897],"UmnM":[4.26947,15.35193]},"texture":2,"vertices":["5zQo","UmnM","1vE0","9I1n"]},"71Sn1Cy9":{"uv":{"1vE0":[5.0891,15.20897],"UmnM":[4.26947,15.35193],"7HDn":[5.22436,16.24758],"BxFW":[4.49379,16.375]},"texture":2,"vertices":["UmnM","BxFW","7HDn","1vE0"]},"sjhyK2QZ":{"uv":{"7HDn":[22.01726,13.16611],"BxFW":[21.49176,12.64283],"lbRU":[21.24234,13.87118],"AXiu":[20.78997,13.42071]},"texture":2,"vertices":["BxFW","AXiu","lbRU","7HDn"]},"LpZPZ2Bv":{"uv":{"lbRU":[21.24234,13.87118],"AXiu":[20.78997,13.42071],"Mfa1":[20.46359,14.57243],"ZrjD":[20.09201,14.20241]},"texture":2,"vertices":["AXiu","ZrjD","Mfa1","lbRU"]},"NquxTfSw":{"uv":{"Mfa1":[20.46359,14.57243],"ZrjD":[20.09201,14.20241],"vMG5":[19.68166,15.27051],"eOFj":[19.39723,14.98728]},"texture":2,"vertices":["ZrjD","eOFj","vMG5","Mfa1"]},"vIJTl7Yd":{"uv":{"vMG5":[19.68166,15.27051],"eOFj":[19.39723,14.98728],"JRnG":[18.89725,15.96612],"7DA0":[18.70493,15.77462]},"texture":2,"vertices":["eOFj","7DA0","JRnG","vMG5"]},"uzRpQD1N":{"uv":{"JRnG":[18.89725,15.96612],"7DA0":[18.70493,15.77462],"0gSl":[18.1112,16.66011],"yKIQ":[18.01427,16.56358]},"texture":2,"vertices":["7DA0","yKIQ","0gSl","JRnG"]},"uRmbK2Ur":{"uv":{"XlmK":[17.32438,17.35332],"yKIQ":[18.01427,16.56358],"0gSl":[18.1112,16.66011]},"texture":2,"vertices":["0gSl","yKIQ","XlmK"]},"Do8Sm6ku":{"uv":{"dzS6":[6.33828,6.27484],"yznU":[7.19998,6.87242],"WuQN":[7.11486,6.97951]},"texture":2,"vertices":["WuQN","yznU","dzS6"]},"uGFNBt7R":{"uv":{"yznU":[7.19998,6.87242],"WuQN":[7.11486,6.97951],"XciA":[8.061,7.47086],"y2RU":[7.89212,7.68332]},"texture":2,"vertices":["WuQN","y2RU","XciA","yznU"]},"nMj4npxD":{"uv":{"XciA":[8.0802,7.49706],"y2RU":[7.90489,7.70425],"rIAG":[8.92099,8.12336],"HkLA":[8.6617,8.42979]},"texture":2,"vertices":["y2RU","HkLA","rIAG","XciA"]},"U1EyOwu1":{"uv":{"rIAG":[8.92099,8.12336],"HkLA":[8.6617,8.42979],"YgL1":[9.75951,8.75234],"rQu5":[9.42078,9.15265]},"texture":2,"vertices":["HkLA","rQu5","YgL1","rIAG"]},"X8EzRwRh":{"uv":{"YgL1":[9.75951,8.75234],"rQu5":[9.42078,9.15265],"9hk5":[10.59514,9.38474],"nfqI":[10.18276,9.87209]},"texture":2,"vertices":["rQu5","nfqI","9hk5","YgL1"]},"kE9Pwy5t":{"uv":{"9hk5":[10.59514,9.38474],"nfqI":[10.18276,9.87209],"ABzV":[11.42727,10.02127],"hQue":[10.94824,10.5874]},"texture":2,"vertices":["nfqI","hQue","ABzV","9hk5"]},"vu7PthFA":{"uv":{"ABzV":[18.99166,0.89386],"hQue":[18.34736,1.26108],"L4j2":[19.54907,1.78059],"tAeb":[18.82623,2.19257]},"texture":2,"vertices":["hQue","tAeb","L4j2","ABzV"]},"HfVe7MdL":{"uv":{"L4j2":[19.54907,1.78059],"tAeb":[18.82623,2.19257],"I4LJ":[20.10032,2.67084],"ZnOQ":[19.31127,3.12055]},"texture":2,"vertices":["tAeb","ZnOQ","I4LJ","L4j2"]},"2fAOV1xY":{"uv":{"I4LJ":[20.10032,2.67084],"ZnOQ":[19.31127,3.12055],"zSpU":[20.64478,3.56494],"F1XN":[19.80309,4.04466]},"texture":2,"vertices":["ZnOQ","F1XN","zSpU","I4LJ"]},"AzEN3Srz":{"uv":{"zSpU":[22.98559,3.31406],"F1XN":[22.01764,3.35478],"OIYI":[23.05165,4.35861],"ViGI":[22.03955,4.40119]},"texture":2,"vertices":["F1XN","ViGI","OIYI","zSpU"]},"6sJ0upbG":{"uv":{"OIYI":[23.05165,4.35861],"ViGI":[22.03955,4.40119],"aGqh":[23.10903,5.40352],"vJrv":[22.07015,5.44723]},"texture":2,"vertices":["ViGI","vJrv","aGqh","OIYI"]},"DHyKG1Eg":{"uv":{"aGqh":[23.10903,5.40352],"vJrv":[22.07015,5.44723],"f6ye":[23.15741,6.44881],"UgB2":[22.10974,6.49289]},"texture":2,"vertices":["vJrv","UgB2","f6ye","aGqh"]},"31ulWK8t":{"uv":{"f6ye":[23.15741,6.44881],"UgB2":[22.10974,6.49289],"J9yL":[23.197,7.49447],"1Qqm":[22.15812,7.53818]},"texture":2,"vertices":["UgB2","1Qqm","J9yL","f6ye"]},"39QvjoPh":{"uv":{"J9yL":[23.197,7.49447],"1Qqm":[22.15812,7.53818],"3bte":[23.2276,8.54051],"uKK1":[22.2155,8.58309]},"texture":2,"vertices":["1Qqm","uKK1","3bte","J9yL"]},"ifkZBcYz":{"uv":{"3bte":[23.2276,8.54051],"uKK1":[22.2155,8.58309],"h4xO":[23.24951,9.58691],"8Eei":[22.28156,9.62763]},"texture":2,"vertices":["uKK1","8Eei","h4xO","3bte"]},"IJTFSk2t":{"uv":{"h4xO":[23.24951,9.58691],"8Eei":[22.28156,9.62763],"Vh6B":[23.26322,10.63366],"9I1n":[22.35582,10.67184]},"texture":2,"vertices":["8Eei","9I1n","Vh6B","h4xO"]},"p7yVCECq":{"uv":{"Vh6B":[5.86573,14.09144],"9I1n":[4.96091,14.16976],"O925":[5.918,15.13723],"1vE0":[5.0891,15.20897]},"texture":2,"vertices":["9I1n","1vE0","O925","Vh6B"]},"19n0xmVW":{"uv":{"O925":[5.918,15.13723],"1vE0":[5.0891,15.20897],"VmCQ":[5.9632,16.18363],"7HDn":[5.22436,16.24758]},"texture":2,"vertices":["1vE0","7HDn","VmCQ","O925"]},"xmGOFDfs":{"uv":{"VmCQ":[22.5224,13.81265],"7HDn":[22.0695,13.22541],"XAmZ":[21.6623,14.41084],"lbRU":[21.27242,13.90532]},"texture":2,"vertices":["7HDn","lbRU","XAmZ","VmCQ"]},"4efndIpS":{"uv":{"XAmZ":[21.6623,14.41084],"lbRU":[21.27242,13.90532],"W2Rq":[20.79889,15.00475],"Mfa1":[20.47863,14.5895]},"texture":2,"vertices":["lbRU","Mfa1","W2Rq","XAmZ"]},"pWqRaWIS":{"uv":{"W2Rq":[20.79889,15.00475],"Mfa1":[20.47863,14.5895],"UNZ8":[19.93274,15.5951],"vMG5":[19.6876,15.27725]},"texture":2,"vertices":["Mfa1","vMG5","UNZ8","W2Rq"]},"uC5dalvO":{"uv":{"UNZ8":[19.93274,15.5951],"vMG5":[19.6876,15.27725],"gQXr":[19.06445,16.18268],"JRnG":[18.8987,15.96777]},"texture":2,"vertices":["vMG5","JRnG","gQXr","UNZ8"]},"SrijnwHw":{"uv":{"gQXr":[19.06445,16.18268],"JRnG":[18.8987,15.96777],"ucpN":[18.19475,16.76844],"0gSl":[18.1112,16.66011]},"texture":2,"vertices":["JRnG","0gSl","ucpN","gQXr"]},"BXlaDYCB":{"uv":{"XlmK":[17.32438,17.35332],"0gSl":[18.1112,16.66011],"ucpN":[18.19475,16.76844]},"texture":2,"vertices":["ucpN","0gSl","XlmK"]},"pWaEdUSb":{"uv":{"dzS6":[6.33953,6.27304],"hMxM":[7.27068,6.75531],"yznU":[7.19998,6.87242]},"texture":2,"vertices":["yznU","hMxM","dzS6"]},"wv43CWJF":{"uv":{"hMxM":[7.27068,6.75531],"yznU":[7.19998,6.87242],"vpSN":[8.20127,7.23852],"XciA":[8.061,7.47086]},"texture":2,"vertices":["yznU","XciA","vpSN","hMxM"]},"rmO1Bk5W":{"uv":{"vpSN":[8.22852,7.26978],"XciA":[8.0802,7.49706],"1qy0":[9.14035,7.78721],"rIAG":[8.92099,8.12336]},"texture":2,"vertices":["XciA","rIAG","1qy0","vpSN"]},"nApI68oX":{"uv":{"1qy0":[9.14035,7.78721],"rIAG":[8.92099,8.12336],"D5YV":[10.05028,8.30757],"YgL1":[9.76369,8.74673]},"texture":2,"vertices":["rIAG","YgL1","D5YV","1qy0"]},"Iy2QunQy":{"uv":{"D5YV":[10.05028,8.30757],"YgL1":[9.76369,8.74673],"2wMO":[10.95774,8.8317],"9hk5":[10.60885,9.36633]},"texture":2,"vertices":["YgL1","9hk5","2wMO","D5YV"]},"q7sYeBRs":{"uv":{"2wMO":[10.95774,8.8317],"9hk5":[10.60885,9.36633],"obO5":[11.86225,9.36035],"ABzV":[11.45696,9.98141]},"texture":2,"vertices":["9hk5","ABzV","obO5","2wMO"]},"UUPCmSGw":{"uv":{"obO5":[19.6019,0.47246],"ABzV":[18.99166,0.89386],"Envs":[20.2337,1.30782],"L4j2":[19.54907,1.78059]},"texture":2,"vertices":["ABzV","L4j2","Envs","obO5"]},"3Qw2vNIX":{"uv":{"Envs":[20.2337,1.30782],"L4j2":[19.54907,1.78059],"TZSf":[20.85965,2.14721],"I4LJ":[20.11233,2.66329]},"texture":2,"vertices":["L4j2","I4LJ","TZSf","Envs"]},"PE4j8I0R":{"uv":{"TZSf":[23.99449,2.23267],"I4LJ":[23.0868,2.26321],"gCMP":[24.05996,3.27746],"zSpU":[23.09171,3.31004]},"texture":2,"vertices":["I4LJ","zSpU","gCMP","TZSf"]},"sQVluPPr":{"uv":{"gCMP":[24.05996,3.27746],"zSpU":[23.09171,3.31004],"QA8u":[24.11724,4.32252],"OIYI":[23.10482,4.35659]},"texture":2,"vertices":["zSpU","OIYI","QA8u","gCMP"]},"MXN9TtWX":{"uv":{"QA8u":[24.11724,4.32252],"OIYI":[23.10482,4.35659],"jShx":[24.16583,5.36788],"aGqh":[23.12662,5.40285]},"texture":2,"vertices":["OIYI","aGqh","jShx","QA8u"]},"A28dyL8c":{"uv":{"jShx":[24.16583,5.36788],"aGqh":[23.12662,5.40285],"3aXk":[24.20542,6.41354],"f6ye":[23.15741,6.44881]},"texture":2,"vertices":["aGqh","f6ye","3aXk","jShx"]},"e9Gomamw":{"uv":{"3aXk":[24.20542,6.41354],"f6ye":[23.15741,6.44881],"keeZ":[24.23621,7.4595],"J9yL":[23.197,7.49447]},"texture":2,"vertices":["f6ye","J9yL","keeZ","3aXk"]},"LtoSjjIb":{"uv":{"keeZ":[24.23666,7.47738],"J9yL":[23.197,7.49447],"btJ1":[24.24046,8.52385],"3bte":[23.2276,8.54051]},"texture":2,"vertices":["J9yL","3bte","btJ1","keeZ"]},"iFmkQxfb":{"uv":{"btJ1":[24.24046,8.52385],"3bte":[23.2276,8.54051],"gu8S":[24.23557,9.57048],"h4xO":[23.2669,9.5864]},"texture":2,"vertices":["3bte","h4xO","gu8S","btJ1"]},"YTTfsGC8":{"uv":{"gu8S":[24.23557,9.57048],"h4xO":[23.2669,9.5864],"IV6K":[24.22247,10.61723],"Vh6B":[23.3144,10.63216]},"texture":2,"vertices":["h4xO","Vh6B","IV6K","gu8S"]},"UN8n6bhf":{"uv":{"IV6K":[24.22247,10.61723],"Vh6B":[23.3144,10.63216],"uPiY":[24.20158,11.66412],"O925":[23.36969,11.67779]},"texture":2,"vertices":["Vh6B","O925","uPiY","IV6K"]},"tUoPBYfk":{"uv":{"uPiY":[6.75,15.13723],"O925":[5.918,15.13723],"yFGN":[6.7048,16.18363],"VmCQ":[5.9632,16.18363]},"texture":2,"vertices":["O925","VmCQ","yFGN","uPiY"]},"5MLueW51":{"uv":{"yFGN":[22.93909,14.51945],"VmCQ":[22.56649,13.87825],"tayt":[22.00843,15.00058],"XAmZ":[21.68768,14.44861]},"texture":2,"vertices":["VmCQ","XAmZ","tayt","yFGN"]},"cJ5Ir01r":{"uv":{"tayt":[22.00843,15.00058],"XAmZ":[21.68768,14.44861],"wrr7":[21.07506,15.47704],"W2Rq":[20.81158,15.02364]},"texture":2,"vertices":["XAmZ","W2Rq","wrr7","tayt"]},"8hs4hgXH":{"uv":{"wrr7":[21.07506,15.47704],"W2Rq":[20.81158,15.02364],"Eb45":[20.13942,15.94961],"UNZ8":[19.93775,15.60256]},"texture":2,"vertices":["W2Rq","UNZ8","Eb45","wrr7"]},"NnrUvZth":{"uv":{"Eb45":[20.13942,15.94961],"UNZ8":[19.93775,15.60256],"GyTl":[19.20203,16.41916],"gQXr":[19.06567,16.1845]},"texture":2,"vertices":["UNZ8","gQXr","GyTl","Eb45"]},"uj5yvOem":{"uv":{"GyTl":[19.20203,16.41916],"gQXr":[19.06567,16.1845],"ezHH":[18.26348,16.88672],"ucpN":[18.19475,16.76844]},"texture":2,"vertices":["gQXr","ucpN","ezHH","GyTl"]},"dmu3HQGu":{"uv":{"XlmK":[17.32438,17.35332],"ucpN":[18.19475,16.76844],"ezHH":[18.26348,16.88672]},"texture":2,"vertices":["ezHH","ucpN","XlmK"]},"Z5UC1GpK":{"uv":{"dzS6":[6.34054,6.27109],"rKaz":[7.3258,6.63011],"hMxM":[7.27068,6.75531]},"texture":2,"vertices":["hMxM","rKaz","dzS6"]},"GjEcIIM3":{"uv":{"rKaz":[7.3258,6.63011],"hMxM":[7.27068,6.75531],"BXok":[8.31062,6.99013],"vpSN":[8.20127,7.23852]},"texture":2,"vertices":["hMxM","vpSN","BXok","rKaz"]},"uD2VF6hD":{"uv":{"BXok":[8.34757,7.02589],"vpSN":[8.22852,7.26978],"jPXa":[9.31643,7.42649],"1qy0":[9.14035,7.78721]},"texture":2,"vertices":["vpSN","1qy0","jPXa","BXok"]},"7lDScmvQ":{"uv":{"jPXa":[9.31643,7.42649],"1qy0":[9.14035,7.78721],"yAv5":[10.28376,7.83024],"D5YV":[10.05372,8.3015]},"texture":2,"vertices":["1qy0","D5YV","yAv5","jPXa"]},"j53qnPkd":{"uv":{"yAv5":[10.28376,7.83024],"D5YV":[10.05372,8.3015],"Bil6":[11.24911,8.23804],"2wMO":[10.96907,8.81174]},"texture":2,"vertices":["D5YV","2wMO","Bil6","yAv5"]},"nBGES0X1":{"uv":{"Bil6":[11.24911,8.23804],"2wMO":[10.96907,8.81174],"YQas":[12.2121,8.65069],"obO5":[11.88678,9.31713]},"texture":2,"vertices":["2wMO","obO5","YQas","Bil6"]},"Ssa97jRC":{"uv":{"YQas":[20.17352,0],"obO5":[19.6019,0.47246],"kF9T":[20.875,0.77777],"Envs":[20.2337,1.30782]},"texture":2,"vertices":["obO5","Envs","kF9T","YQas"]},"bJV7pk5i":{"uv":{"kF9T":[25.01343,1.15949],"Envs":[24.1817,1.18047],"I3BP":[25.07792,2.20459],"TZSf":[24.17001,2.2275]},"texture":2,"vertices":["Envs","TZSf","I3BP","kF9T"]},"Sr9WaQLi":{"uv":{"I3BP":[25.07792,2.20459],"TZSf":[24.17001,2.2275],"wjp1":[25.13461,3.24989],"gCMP":[24.16612,3.27433]},"texture":2,"vertices":["TZSf","gCMP","wjp1","I3BP"]},"oyHv82fx":{"uv":{"wjp1":[25.13461,3.24989],"gCMP":[24.16612,3.27433],"S3Le":[25.1831,4.2954],"QA8u":[24.17042,4.32096]},"texture":2,"vertices":["gCMP","QA8u","S3Le","wjp1"]},"7MqA4uRV":{"uv":{"S3Le":[25.1831,4.2954],"QA8u":[24.17042,4.32096],"59Gg":[25.22289,5.34113],"jShx":[24.18342,5.36736]},"texture":2,"vertices":["QA8u","jShx","59Gg","S3Le"]},"zH2Vkipu":{"uv":{"59Gg":[25.22289,5.34113],"jShx":[24.18342,5.36736],"jmNr":[25.25369,6.38709],"3aXk":[24.20542,6.41354]},"texture":2,"vertices":["jShx","3aXk","jmNr","59Gg"]},"tey5DYXI":{"uv":{"jmNr":[25.25369,6.38709],"3aXk":[24.20542,6.41354],"gCtA":[25.27568,7.43327],"keeZ":[24.23621,7.4595]},"texture":2,"vertices":["3aXk","keeZ","gCtA","jmNr"]},"tBdT4btZ":{"uv":{"gCtA":[25.27642,7.48691],"keeZ":[24.23666,7.47738],"uClA":[25.25342,8.53315],"btJ1":[24.24046,8.52385]},"texture":2,"vertices":["keeZ","btJ1","uClA","gCtA"]},"TQ03l6rx":{"uv":{"uClA":[25.25342,8.53315],"btJ1":[24.24046,8.52385],"47ib":[25.22173,9.5793],"gu8S":[24.25297,9.57041]},"texture":2,"vertices":["btJ1","gu8S","47ib","uClA"]},"hDClMme7":{"uv":{"47ib":[25.22173,9.5793],"gu8S":[24.25297,9.57041],"8Yr8":[25.18183,10.62538],"IV6K":[24.27367,10.61705]},"texture":2,"vertices":["gu8S","IV6K","8Yr8","47ib"]},"k02oNTbV":{"uv":{"8Yr8":[25.18183,10.62538],"IV6K":[24.27367,10.61705],"nUN2":[25.13413,11.67138],"uPiY":[24.30217,11.66375]},"texture":2,"vertices":["IV6K","uPiY","nUN2","8Yr8"]},"EKeS88xW":{"uv":{"nUN2":[25.13413,11.67138],"uPiY":[24.30217,11.66375],"pHhQ":[25.07934,12.71732],"yFGN":[24.33777,12.71052]},"texture":2,"vertices":["uPiY","yFGN","pHhQ","nUN2"]},"NFzH5DHt":{"uv":{"pHhQ":[23.26022,15.27447],"yFGN":[22.97426,14.59022],"llyd":[22.27485,15.63036],"tayt":[22.02868,15.04133]},"texture":2,"vertices":["yFGN","tayt","llyd","pHhQ"]},"RfL7Tl87":{"uv":{"llyd":[22.27485,15.63036],"tayt":[22.02868,15.04133],"pUPD":[21.28739,15.98126],"wrr7":[21.08518,15.49742]},"texture":2,"vertices":["tayt","wrr7","pUPD","llyd"]},"kmDKcEJm":{"uv":{"pUPD":[21.28739,15.98126],"wrr7":[21.08518,15.49742],"UvKH":[20.2982,16.32801],"Eb45":[20.14342,15.95765]},"texture":2,"vertices":["wrr7","Eb45","UvKH","pUPD"]},"y69aMfh8":{"uv":{"UvKH":[20.2982,16.32801],"Eb45":[20.14342,15.95765],"09Bg":[19.30766,16.67154],"GyTl":[19.20301,16.42112]},"texture":2,"vertices":["Eb45","GyTl","09Bg","UvKH"]},"NGWwRwA7":{"uv":{"09Bg":[19.30766,16.67154],"GyTl":[19.20301,16.42112],"oEM1":[18.31623,17.01294],"ezHH":[18.26348,16.88672]},"texture":2,"vertices":["GyTl","ezHH","oEM1","09Bg"]},"O42aW02p":{"uv":{"XlmK":[17.32438,17.35332],"ezHH":[18.26348,16.88672],"oEM1":[18.31623,17.01294]},"texture":2,"vertices":["oEM1","ezHH","XlmK"]},"lAB298bY":{"uv":{"dzS6":[6.3413,6.26903],"RH3H":[7.36443,6.49887],"rKaz":[7.3258,6.63011]},"texture":2,"vertices":["rKaz","RH3H","dzS6"]},"QnMixygi":{"uv":{"RH3H":[7.36443,6.49887],"rKaz":[7.3258,6.63011],"i7o6":[8.38725,6.72977],"BXok":[8.31062,6.99013]},"texture":2,"vertices":["rKaz","BXok","i7o6","RH3H"]},"VVxQOalw":{"uv":{"i7o6":[8.43553,6.76913],"BXok":[8.34757,7.02589],"sZQl":[9.44652,7.04675],"jPXa":[9.31643,7.42649]},"texture":2,"vertices":["BXok","jPXa","sZQl","i7o6"]},"BBxKKHNy":{"uv":{"sZQl":[9.44652,7.04675],"jPXa":[9.31643,7.42649],"3OYa":[10.45638,7.32769],"yAv5":[10.28643,7.82379]},"texture":2,"vertices":["jPXa","yAv5","3OYa","sZQl"]},"ITNBl7pC":{"uv":{"3OYa":[10.45638,7.32769],"yAv5":[10.28643,7.82379],"TFGY":[11.46477,7.61288],"Bil6":[11.25788,8.21682]},"texture":2,"vertices":["yAv5","Bil6","TFGY","3OYa"]},"IqUqAgRT":{"uv":{"TFGY":[11.46477,7.61288],"Bil6":[11.25788,8.21682],"Tav5":[12.47142,7.90318],"YQas":[12.23109,8.60475]},"texture":2,"vertices":["Bil6","YQas","Tav5","TFGY"]},"lnPWHQX0":{"uv":{"Tav5":[0.9632,18.06395],"YQas":[0.22436,18],"dfeP":[0.918,19.11035],"kF9T":[0.0891,19.0386]},"texture":2,"vertices":["YQas","kF9T","dfeP","Tav5"]},"GC9oJ5BJ":{"uv":{"dfeP":[26.10586,1.14001],"kF9T":[25.27397,1.15401],"hyCD":[26.16155,2.18562],"I3BP":[25.25348,2.2009]},"texture":2,"vertices":["kF9T","I3BP","hyCD","dfeP"]},"hHNo5map":{"uv":{"hyCD":[26.16155,2.18562],"I3BP":[25.25348,2.2009],"FsZs":[26.20945,3.23137],"wjp1":[25.24078,3.24766]},"texture":2,"vertices":["I3BP","wjp1","FsZs","hyCD"]},"9mZYm18E":{"uv":{"FsZs":[26.20945,3.23137],"wjp1":[25.24078,3.24766],"p3vK":[26.24914,4.27725],"S3Le":[25.23628,4.29428]},"texture":2,"vertices":["wjp1","S3Le","p3vK","FsZs"]},"oeEY1w37":{"uv":{"p3vK":[26.24914,4.27725],"S3Le":[25.23628,4.29428],"NEI0":[26.28014,5.32327],"59Gg":[25.24049,5.34076]},"texture":2,"vertices":["S3Le","59Gg","NEI0","p3vK"]},"nwJ4EinG":{"uv":{"NEI0":[26.28014,5.32327],"59Gg":[25.24049,5.34076],"R2Uz":[26.30214,6.36945],"jmNr":[25.25369,6.38709]},"texture":2,"vertices":["59Gg","jmNr","R2Uz","NEI0"]},"OaUfPA8A":{"uv":{"R2Uz":[26.30214,6.36945],"jmNr":[25.25369,6.38709],"lFyV":[26.31534,7.41578],"gCtA":[25.27568,7.43327]},"texture":2,"vertices":["jmNr","gCtA","lFyV","R2Uz"]},"sj9nA9bm":{"uv":{"lFyV":[26.31559,7.52307],"gCtA":[25.27642,7.48691],"9z2O":[26.26581,8.56837],"uClA":[25.25342,8.53315]},"texture":2,"vertices":["gCtA","uClA","9z2O","lFyV"]},"Onknn47M":{"uv":{"9z2O":[26.26581,8.56837],"uClA":[25.25342,8.53315],"oFeA":[26.20733,9.61337],"47ib":[25.23912,9.57968]},"texture":2,"vertices":["uClA","47ib","oFeA","9z2O"]},"qV3BL3ET":{"uv":{"oFeA":[26.20733,9.61337],"47ib":[25.23912,9.57968],"tP84":[26.14066,10.65808],"8Yr8":[25.23301,10.6265]},"texture":2,"vertices":["47ib","8Yr8","tP84","oFeA"]},"LS3GwPs6":{"uv":{"tP84":[26.14066,10.65808],"8Yr8":[25.23301,10.6265],"muf3":[26.0662,11.70253],"nUN2":[25.2347,11.67359]},"texture":2,"vertices":["8Yr8","nUN2","muf3","tP84"]},"JdGtZCF4":{"uv":{"muf3":[26.0662,11.70253],"nUN2":[25.2347,11.67359],"jQ3p":[25.98464,12.74672],"pHhQ":[25.24349,12.72093]},"texture":2,"vertices":["nUN2","pHhQ","jQ3p","muf3"]},"LR6UfSZm":{"uv":{"jQ3p":[23.48033,16.06487],"pHhQ":[23.28587,15.34922],"2Ule":[22.45701,16.28946],"llyd":[22.28962,15.6734]},"texture":2,"vertices":["pHhQ","llyd","2Ule","jQ3p"]},"4PQGLoxF":{"uv":{"2Ule":[22.45701,16.28946],"llyd":[22.28962,15.6734],"c52v":[21.43228,16.50883],"pUPD":[21.29478,16.00278]},"texture":2,"vertices":["llyd","pUPD","c52v","2Ule"]},"FpJo4QE5":{"uv":{"c52v":[21.43228,16.50883],"pUPD":[21.29478,16.00278],"b4Qf":[20.40637,16.72386],"UvKH":[20.30112,16.33651]},"texture":2,"vertices":["pUPD","UvKH","b4Qf","c52v"]},"StG6CO66":{"uv":{"b4Qf":[20.40637,16.72386],"UvKH":[20.30112,16.33651],"GrEh":[19.37954,16.93552],"09Bg":[19.30837,16.67361]},"texture":2,"vertices":["UvKH","09Bg","GrEh","b4Qf"]},"jMq3Itva":{"uv":{"GrEh":[19.37954,16.93552],"09Bg":[19.30837,16.67361],"NWKo":[18.3521,17.14495],"oEM1":[18.31623,17.01294]},"texture":2,"vertices":["09Bg","oEM1","NWKo","GrEh"]},"epc3XR6F":{"uv":{"XlmK":[17.32438,17.35332],"oEM1":[18.31623,17.01294],"NWKo":[18.3521,17.14495]},"texture":2,"vertices":["NWKo","oEM1","XlmK"]},"AflVEAbo":{"uv":{"dzS6":[6.34178,6.26689],"So0f":[7.38593,6.36377],"RH3H":[7.36443,6.49887]},"texture":2,"vertices":["RH3H","So0f","dzS6"]},"jlXG9XnI":{"uv":{"So0f":[7.38593,6.36377],"RH3H":[7.36443,6.49887],"nsIx":[8.4299,6.46174],"i7o6":[8.38725,6.72977]},"texture":2,"vertices":["RH3H","i7o6","nsIx","So0f"]},"MIZX1mN6":{"uv":{"nsIx":[8.49103,6.50347],"i7o6":[8.43553,6.76913],"gazF":[9.52861,6.65384],"sZQl":[9.44652,7.04675]},"texture":2,"vertices":["i7o6","sZQl","gazF","nsIx"]},"r7OuGdcK":{"uv":{"gazF":[9.52861,6.65384],"sZQl":[9.44652,7.04675],"bmNU":[10.56547,6.80763],"3OYa":[10.45823,7.32095]},"texture":2,"vertices":["sZQl","3OYa","bmNU","gazF"]},"GSAcGBE6":{"uv":{"bmNU":[10.56547,6.80763],"3OYa":[10.45823,7.32095],"wXTa":[11.60141,6.96583],"TFGY":[11.47085,7.59074]},"texture":2,"vertices":["3OYa","TFGY","wXTa","bmNU"]},"DTdylvJU":{"uv":{"wXTa":[11.60141,6.96583],"TFGY":[11.47085,7.59074],"Fluo":[12.63625,7.12932],"Tav5":[12.48459,7.85525]},"texture":2,"vertices":["TFGY","Tav5","Fluo","wXTa"]},"0awRsCDc":{"uv":{"Fluo":[1.7048,18.06395],"Tav5":[0.9632,18.06395],"KKMo":[1.75,19.11035],"dfeP":[0.918,19.11035]},"texture":2,"vertices":["Tav5","dfeP","KKMo","Fluo"]},"uHXimAGz":{"uv":{"KKMo":[27.1984,1.12973],"dfeP":[26.36643,1.13673],"RXqQ":[27.2453,2.17577],"hyCD":[26.33714,2.18341]},"texture":2,"vertices":["dfeP","hyCD","RXqQ","KKMo"]},"oqW3b6Ym":{"uv":{"RXqQ":[27.2453,2.17577],"hyCD":[26.33714,2.18341],"VDSg":[27.2844,3.22188],"FsZs":[26.31564,3.23003]},"texture":2,"vertices":["hyCD","FsZs","VDSg","RXqQ"]},"d2AsplUt":{"uv":{"VDSg":[27.2844,3.22188],"FsZs":[26.31564,3.23003],"3gHD":[27.3153,4.26806],"p3vK":[26.30234,4.27658]},"texture":2,"vertices":["FsZs","p3vK","3gHD","VDSg"]},"5YRnBdHm":{"uv":{"3gHD":[27.3153,4.26806],"p3vK":[26.30234,4.27658],"FRTT":[27.3375,5.31431],"NEI0":[26.29774,5.32305]},"texture":2,"vertices":["p3vK","NEI0","FRTT","3gHD"]},"P6rJEOko":{"uv":{"FRTT":[27.3375,5.31431],"NEI0":[26.29774,5.32305],"QS7w":[27.3507,6.36063],"R2Uz":[26.30214,6.36945]},"texture":2,"vertices":["NEI0","R2Uz","QS7w","FRTT"]},"XcfuKDlk":{"uv":{"3045":[27.3551,7.40703],"QS7w":[27.3507,6.36063],"R2Uz":[26.30214,6.36945],"lFyV":[26.31534,7.41578]},"texture":2,"vertices":["R2Uz","lFyV","3045","QS7w"]},"0BcTJ1Ni":{"uv":{"3045":[27.35349,7.58583],"lFyV":[26.31559,7.52307],"Cmul":[27.27696,8.62951],"9z2O":[26.26581,8.56837]},"texture":2,"vertices":["lFyV","9z2O","Cmul","3045"]},"YN2WrZOn":{"uv":{"Cmul":[27.27696,8.62951],"9z2O":[26.26581,8.56837],"PuwW":[27.19175,9.67267],"oFeA":[26.22471,9.6142]},"texture":2,"vertices":["9z2O","oFeA","PuwW","Cmul"]},"0U0imQkE":{"uv":{"PuwW":[27.19175,9.67267],"oFeA":[26.22471,9.6142],"9su0":[27.09835,10.71533],"tP84":[26.1918,10.66052]},"texture":2,"vertices":["oFeA","tP84","9su0","PuwW"]},"7XNycvoh":{"uv":{"9su0":[27.09835,10.71533],"tP84":[26.1918,10.66052],"R30j":[26.99716,11.75753],"muf3":[26.16668,11.70731]},"texture":2,"vertices":["tP84","muf3","R30j","9su0"]},"h5Gpuww3":{"uv":{"R30j":[26.99716,11.75753],"muf3":[26.16668,11.70731],"qCNz":[26.88889,12.79929],"jQ3p":[26.14864,12.75453]},"texture":2,"vertices":["muf3","jQ3p","qCNz","R30j"]},"gmoupJUn":{"uv":{"qCNz":[23.59567,16.8772],"jQ3p":[23.49603,16.14233],"BaLj":[22.55183,16.96666],"2Ule":[22.46606,16.33405]},"texture":2,"vertices":["jQ3p","2Ule","BaLj","qCNz"]},"9XhpzIAd":{"uv":{"BaLj":[22.55183,16.96666],"2Ule":[22.46606,16.33405],"cysY":[21.50726,17.05077],"c52v":[21.4368,16.53113]},"texture":2,"vertices":["2Ule","c52v","cysY","BaLj"]},"5HiAOk4I":{"uv":{"cysY":[21.50726,17.05077],"c52v":[21.4368,16.53113],"ezGJ":[20.46208,17.13042],"b4Qf":[20.40815,16.73266]},"texture":2,"vertices":["c52v","b4Qf","ezGJ","cysY"]},"LLrABdao":{"uv":{"ezGJ":[20.46208,17.13042],"b4Qf":[20.40815,16.73266],"pLpA":[19.41644,17.20661],"GrEh":[19.37997,16.93767]},"texture":2,"vertices":["b4Qf","GrEh","pLpA","ezGJ"]},"stflYuV1":{"uv":{"pLpA":[19.41644,17.20661],"GrEh":[19.37997,16.93767],"CckC":[18.37048,17.28051],"NWKo":[18.3521,17.14495]},"texture":2,"vertices":["GrEh","NWKo","CckC","pLpA"]},"keYCIeOF":{"uv":{"XlmK":[17.32438,17.35332],"NWKo":[18.3521,17.14495],"CckC":[18.37048,17.28051]},"texture":2,"vertices":["CckC","NWKo","XlmK"]},"VzNSu6us":{"uv":{"dzS6":[6.34198,6.2647],"ISzJ":[7.38994,6.22703],"So0f":[7.38593,6.36377]},"texture":2,"vertices":["So0f","ISzJ","dzS6"]},"TZ96fQZy":{"uv":{"ISzJ":[7.38994,6.22703],"So0f":[7.38593,6.36377],"guLm":[8.43786,6.19046],"nsIx":[8.4299,6.46174]},"texture":2,"vertices":["So0f","nsIx","guLm","ISzJ"]},"YU3jnnZA":{"uv":{"guLm":[8.51323,6.23298],"nsIx":[8.49103,6.50347],"tbnY":[9.56144,6.25378],"gazF":[9.52861,6.65384]},"texture":2,"vertices":["nsIx","gazF","tbnY","guLm"]},"eSr9LYEF":{"uv":{"tbnY":[9.56144,6.25378],"gazF":[9.52861,6.65384],"Infw":[10.60936,6.27808],"bmNU":[10.56647,6.80072]},"texture":2,"vertices":["gazF","bmNU","Infw","tbnY"]},"LdvXBZsp":{"uv":{"Infw":[10.60936,6.27808],"bmNU":[10.56647,6.80072],"gPPI":[11.65692,6.30686],"wXTa":[11.6047,6.94312]},"texture":2,"vertices":["bmNU","wXTa","gPPI","Infw"]},"EGoOTczS":{"uv":{"gPPI":[11.65692,6.30686],"wXTa":[11.6047,6.94312],"j8HG":[12.70403,6.34102],"Fluo":[12.64338,7.08013]},"texture":2,"vertices":["wXTa","Fluo","j8HG","gPPI"]},"KtyDgSDX":{"uv":{"j8HG":[28.35142,0.08054],"Fluo":[27.60992,0.06807],"p5Dn":[28.37901,1.12755],"KKMo":[27.54713,1.11356]},"texture":2,"vertices":["Fluo","KKMo","p5Dn","j8HG"]},"y8k2ZAFc":{"uv":{"p5Dn":[28.37901,1.12755],"KKMo":[27.54713,1.11356],"AHO9":[28.39951,2.17444],"RXqQ":[27.49143,2.15917]},"texture":2,"vertices":["KKMo","RXqQ","AHO9","p5Dn"]},"ZCBeCxri":{"uv":{"AHO9":[28.39951,2.17444],"RXqQ":[27.49143,2.15917],"Xw5k":[28.4122,3.22121],"VDSg":[27.44354,3.20491]},"texture":2,"vertices":["RXqQ","VDSg","Xw5k","AHO9"]},"lrTIFIdf":{"uv":{"Xw5k":[28.4122,3.22121],"VDSg":[27.44354,3.20491],"QrBY":[28.4167,4.26783],"3gHD":[27.40384,4.25079]},"texture":2,"vertices":["VDSg","3gHD","QrBY","Xw5k"]},"hSwnKXMv":{"uv":{"QrBY":[28.4167,4.26783],"3gHD":[27.40384,4.25079],"FSoG":[28.4125,5.31431],"FRTT":[27.37285,5.29682]},"texture":2,"vertices":["3gHD","FRTT","FSoG","QrBY"]},"RZaufD72":{"uv":{"FSoG":[28.4125,5.31431],"FRTT":[27.37285,5.29682],"eS9L":[28.3993,6.36063],"QS7w":[27.35085,6.343]},"texture":2,"vertices":["FRTT","QS7w","eS9L","FSoG"]},"2b0bpjFk":{"uv":{"3045":[27.3551,7.40703],"eS9L":[28.3993,6.36063],"QS7w":[27.3507,6.36063],"dIB1":[28.3949,7.40703]},"texture":2,"vertices":["QS7w","3045","dIB1","eS9L"]},"twtjLqkT":{"uv":{"3045":[27.36055,7.67514],"dIB1":[28.39651,7.58583],"ZI9Q":[28.47304,8.62951],"Cmul":[27.46378,8.71653]},"texture":2,"vertices":["3045","Cmul","ZI9Q","dIB1"]},"Ykm6RoSf":{"uv":{"ZI9Q":[28.47304,8.62951],"Cmul":[27.46378,8.71653],"jf7m":[28.5409,9.67394],"PuwW":[27.57568,9.75716]},"texture":2,"vertices":["Cmul","PuwW","jf7m","ZI9Q"]},"YdCnAPGY":{"uv":{"jf7m":[28.5409,9.67394],"PuwW":[27.57568,9.75716],"hMcN":[28.6006,10.71908],"9su0":[27.69575,10.79709]},"texture":2,"vertices":["PuwW","9su0","hMcN","jf7m"]},"k9FlsQUd":{"uv":{"hMcN":[28.6006,10.71908],"9su0":[27.69575,10.79709],"SeVW":[28.65252,11.76488],"R30j":[27.82359,11.83635]},"texture":2,"vertices":["9su0","R30j","SeVW","hMcN"]},"hTA0wmUy":{"uv":{"SeVW":[28.65252,11.76488],"R30j":[27.82359,11.83635],"ZW9F":[28.69737,12.8113],"qCNz":[27.95851,12.875]},"texture":2,"vertices":["R30j","qCNz","ZW9F","SeVW"]},"jq0PaMG9":{"uv":{"ZW9F":[23.60429,17.69764],"qCNz":[23.60116,16.95604],"nRWm":[22.55768,17.65045],"BaLj":[22.55499,17.01206]},"texture":2,"vertices":["qCNz","BaLj","nRWm","ZW9F"]},"yoF1KqMM":{"uv":{"nRWm":[22.55768,17.65045],"BaLj":[22.55499,17.01206],"ZAZC":[21.51105,17.59787],"cysY":[21.50884,17.07347]},"texture":2,"vertices":["BaLj","cysY","ZAZC","nRWm"]},"baZkLJen":{"uv":{"ZAZC":[21.51105,17.59787],"cysY":[21.50884,17.07347],"yq80":[20.4644,17.54078],"ezGJ":[20.46271,17.13938]},"texture":2,"vertices":["cysY","ezGJ","yq80","ZAZC"]},"H2N6j40x":{"uv":{"yq80":[20.4644,17.54078],"ezGJ":[20.46271,17.13938],"sMx1":[19.41774,17.48019],"pLpA":[19.41659,17.2088]},"texture":2,"vertices":["ezGJ","pLpA","sMx1","yq80"]},"cISEj99i":{"uv":{"sMx1":[19.41774,17.48019],"pLpA":[19.41659,17.2088],"Vi7v":[18.37106,17.41731],"CckC":[18.37048,17.28051]},"texture":2,"vertices":["pLpA","CckC","Vi7v","sMx1"]},"OJaGtE4f":{"uv":{"XlmK":[17.32438,17.35332],"CckC":[18.37048,17.28051],"Vi7v":[18.37106,17.41731]},"texture":2,"vertices":["Vi7v","CckC","XlmK"]},"enAwaha2":{"uv":{"dzS6":[6.34191,6.26251],"UhaD":[7.3764,6.0909],"ISzJ":[7.38994,6.22703]},"texture":2,"vertices":["ISzJ","UhaD","dzS6"]},"YRdmIC0X":{"uv":{"UhaD":[7.3764,6.0909],"ISzJ":[7.38994,6.22703],"Zznd":[8.41101,5.92039],"guLm":[8.43786,6.19046]},"texture":2,"vertices":["ISzJ","guLm","Zznd","UhaD"]},"jMwAiwDg":{"uv":{"Zznd":[8.50178,5.96182],"guLm":[8.51323,6.23298],"8yYW":[9.54451,5.85274],"tbnY":[9.56144,6.25378]},"texture":2,"vertices":["guLm","tbnY","8yYW","Zznd"]},"eMiucavk":{"uv":{"8yYW":[9.54451,5.85274],"tbnY":[9.56144,6.25378],"7vTG":[10.58738,5.74716],"Infw":[10.6095,6.27109]},"texture":2,"vertices":["tbnY","Infw","7vTG","8yYW"]},"pSJ22aJ9":{"uv":{"7vTG":[10.58738,5.74716],"Infw":[10.6095,6.27109],"8HlW":[11.63045,5.64607],"gPPI":[11.65737,6.2839]},"texture":2,"vertices":["Infw","gPPI","8HlW","7vTG"]},"UJxYiXX4":{"uv":{"8HlW":[11.63045,5.64607],"gPPI":[11.65737,6.2839],"NHCY":[12.67374,5.55038],"j8HG":[12.70502,6.29132]},"texture":2,"vertices":["gPPI","j8HG","NHCY","8HlW"]},"1BknUupY":{"uv":{"NHCY":[18.7868,8.06395],"j8HG":[18.0452,8.06395],"U5uS":[18.832,9.11035],"p5Dn":[18,9.11035]},"texture":2,"vertices":["j8HG","p5Dn","U5uS","NHCY"]},"JoVEvsUR":{"uv":{"U5uS":[29.38357,1.13673],"p5Dn":[28.5516,1.12973],"LvYa":[29.41286,2.18341],"AHO9":[28.5047,2.17577]},"texture":2,"vertices":["p5Dn","AHO9","LvYa","U5uS"]},"qQWmPp1i":{"uv":{"LvYa":[29.41286,2.18341],"AHO9":[28.5047,2.17577],"k9ri":[29.43436,3.23003],"Xw5k":[28.4656,3.22188]},"texture":2,"vertices":["AHO9","Xw5k","k9ri","LvYa"]},"iaDlj1Za":{"uv":{"k9ri":[29.43436,3.23003],"Xw5k":[28.4656,3.22188],"4uTJ":[29.44766,4.27658],"QrBY":[28.4347,4.26806]},"texture":2,"vertices":["Xw5k","QrBY","4uTJ","k9ri"]},"mllA1PLC":{"uv":{"4uTJ":[29.44766,4.27658],"QrBY":[28.4347,4.26806],"ChS0":[29.45226,5.32305],"FSoG":[28.4125,5.31431]},"texture":2,"vertices":["QrBY","FSoG","ChS0","4uTJ"]},"wYyuTvUN":{"uv":{"ChS0":[29.45226,5.32305],"FSoG":[28.4125,5.31431],"rPZe":[29.44786,6.36945],"eS9L":[28.3993,6.36063]},"texture":2,"vertices":["FSoG","eS9L","rPZe","ChS0"]},"bnRAO59C":{"uv":{"rPZe":[29.44786,6.36945],"eS9L":[28.3993,6.36063],"pXgz":[29.43466,7.41578],"dIB1":[28.3949,7.40703]},"texture":2,"vertices":["eS9L","dIB1","pXgz","rPZe"]},"LUj7iups":{"uv":{"pXgz":[29.43441,7.52307],"dIB1":[28.39651,7.58583],"iCHQ":[29.48419,8.56837],"ZI9Q":[28.47304,8.62951]},"texture":2,"vertices":["dIB1","ZI9Q","iCHQ","pXgz"]},"PQbH5Z6Y":{"uv":{"iCHQ":[29.48419,8.56837],"ZI9Q":[28.47304,8.62951],"inv3":[29.52529,9.6142],"jf7m":[28.55825,9.67267]},"texture":2,"vertices":["ZI9Q","jf7m","inv3","iCHQ"]},"J3Vc6jLH":{"uv":{"inv3":[29.52529,9.6142],"jf7m":[28.55825,9.67267],"kTXY":[29.5582,10.66052],"hMcN":[28.65165,10.71533]},"texture":2,"vertices":["jf7m","hMcN","kTXY","inv3"]},"Qrh4OzTL":{"uv":{"kTXY":[29.5582,10.66052],"hMcN":[28.65165,10.71533],"ithN":[29.58332,11.70731],"SeVW":[28.75284,11.75753]},"texture":2,"vertices":["hMcN","SeVW","ithN","kTXY"]},"ZnesFDSZ":{"uv":{"ithN":[29.58332,11.70731],"SeVW":[28.75284,11.75753],"HhGp":[29.60136,12.75453],"ZW9F":[28.86111,12.79929]},"texture":2,"vertices":["SeVW","ZW9F","HhGp","ithN"]},"5ZRZtr8c":{"uv":{"HhGp":[23.50603,18.51221],"ZW9F":[23.59947,17.77652],"GUyn":[22.47447,18.32918],"nRWm":[22.5549,17.69587]},"texture":2,"vertices":["ZW9F","nRWm","GUyn","HhGp"]},"vR4onlJK":{"uv":{"GUyn":[22.47447,18.32918],"nRWm":[22.5549,17.69587],"c6Md":[21.44359,18.1408],"ZAZC":[21.50966,17.62057]},"texture":2,"vertices":["nRWm","ZAZC","c6Md","GUyn"]},"nuZRelOE":{"uv":{"c6Md":[21.44359,18.1408],"ZAZC":[21.50966,17.62057],"yxnG":[20.41328,17.94795],"yq80":[20.46385,17.54974]},"texture":2,"vertices":["ZAZC","yq80","yxnG","c6Md"]},"scmTm9n0":{"uv":{"yxnG":[20.41328,17.94795],"yq80":[20.46385,17.54974],"zC3O":[19.38341,17.75162],"sMx1":[19.4176,17.48238]},"texture":2,"vertices":["yq80","sMx1","zC3O","yxnG"]},"0bQPsuJ6":{"uv":{"zC3O":[19.38341,17.75162],"sMx1":[19.4176,17.48238],"BGhj":[18.35382,17.55302],"Vi7v":[18.37106,17.41731]},"texture":2,"vertices":["sMx1","Vi7v","BGhj","zC3O"]},"wqYP3TGg":{"uv":{"XlmK":[17.32438,17.35332],"Vi7v":[18.37106,17.41731],"BGhj":[18.35382,17.55302]},"texture":2,"vertices":["BGhj","Vi7v","XlmK"]},"esu79itQ":{"uv":{"dzS6":[6.34155,6.26034],"uYCz":[7.34554,5.95763],"UhaD":[7.3764,6.0909]},"texture":2,"vertices":["UhaD","uYCz","dzS6"]},"Spm4XcW6":{"uv":{"uYCz":[7.34554,5.95763],"UhaD":[7.3764,6.0909],"XYnB":[8.34978,5.65599],"Zznd":[8.41101,5.92039]},"texture":2,"vertices":["UhaD","Zznd","XYnB","uYCz"]},"4qlLF89x":{"uv":{"XYnB":[8.45686,5.69416],"Zznd":[8.50178,5.96182],"jueJ":[9.47808,5.45688],"8yYW":[9.54451,5.85274]},"texture":2,"vertices":["Zznd","8yYW","jueJ","XYnB"]},"YcVGYjJI":{"uv":{"jueJ":[9.47808,5.45688],"8yYW":[9.54451,5.85274],"k156":[10.49987,5.22304],"7vTG":[10.58666,5.74021]},"texture":2,"vertices":["8yYW","7vTG","k156","jueJ"]},"uhob4Xza":{"uv":{"k156":[10.49987,5.22304],"7vTG":[10.58666,5.74021],"BgPL":[11.5224,4.99364],"8HlW":[11.62806,5.62324]},"texture":2,"vertices":["7vTG","8HlW","BgPL","k156"]},"OzYf5Pju":{"uv":{"BgPL":[11.5224,4.99364],"8HlW":[11.62806,5.62324],"Hxu2":[12.54583,4.76957],"NHCY":[12.66857,5.50095]},"texture":2,"vertices":["8HlW","NHCY","Hxu2","BgPL"]},"Ygdo7XE4":{"uv":{"Hxu2":[19.52564,8],"NHCY":[18.7868,8.06395],"7s5K":[19.6609,9.0386],"U5uS":[18.832,9.11035]},"texture":2,"vertices":["NHCY","U5uS","7s5K","Hxu2"]},"xugsToI4":{"uv":{"7s5K":[30.47603,1.15401],"U5uS":[29.64414,1.14001],"P9oa":[30.49652,2.2009],"LvYa":[29.58845,2.18562]},"texture":2,"vertices":["U5uS","LvYa","P9oa","7s5K"]},"9Qhw3tFn":{"uv":{"P9oa":[30.49652,2.2009],"LvYa":[29.58845,2.18562],"APw9":[30.50922,3.24766],"k9ri":[29.54055,3.23137]},"texture":2,"vertices":["LvYa","k9ri","APw9","P9oa"]},"HfxMsgE0":{"uv":{"APw9":[30.50922,3.24766],"k9ri":[29.54055,3.23137],"lwm2":[30.51372,4.29428],"4uTJ":[29.50086,4.27725]},"texture":2,"vertices":["k9ri","4uTJ","lwm2","APw9"]},"40rXH65u":{"uv":{"lwm2":[30.51372,4.29428],"4uTJ":[29.50086,4.27725],"i5jm":[30.50951,5.34076],"ChS0":[29.46986,5.32327]},"texture":2,"vertices":["4uTJ","ChS0","i5jm","lwm2"]},"Z9l5MzFN":{"uv":{"i5jm":[30.50951,5.34076],"ChS0":[29.46986,5.32327],"QRUB":[30.49631,6.38709],"rPZe":[29.44786,6.36945]},"texture":2,"vertices":["ChS0","rPZe","QRUB","i5jm"]},"j5wbvwqn":{"uv":{"QRUB":[30.49631,6.38709],"rPZe":[29.44786,6.36945],"4vCg":[30.47432,7.43327],"pXgz":[29.43466,7.41578]},"texture":2,"vertices":["rPZe","pXgz","4vCg","QRUB"]},"nZj2ezKF":{"uv":{"4vCg":[30.47358,7.48691],"pXgz":[29.43441,7.52307],"SEcq":[30.49658,8.53315],"iCHQ":[29.48419,8.56837]},"texture":2,"vertices":["pXgz","iCHQ","SEcq","4vCg"]},"IiMXIERP":{"uv":{"SEcq":[30.49658,8.53315],"iCHQ":[29.48419,8.56837],"l5Pi":[30.51088,9.57968],"inv3":[29.54267,9.61337]},"texture":2,"vertices":["iCHQ","inv3","l5Pi","SEcq"]},"lQXyrMqS":{"uv":{"l5Pi":[30.51088,9.57968],"inv3":[29.54267,9.61337],"9O92":[30.51699,10.6265],"kTXY":[29.60934,10.65808]},"texture":2,"vertices":["inv3","kTXY","9O92","l5Pi"]},"arqYYTvs":{"uv":{"9O92":[30.51699,10.6265],"kTXY":[29.60934,10.65808],"CiiH":[30.5153,11.67359],"ithN":[29.6838,11.70253]},"texture":2,"vertices":["kTXY","ithN","CiiH","9O92"]},"KDjsMrQR":{"uv":{"CiiH":[30.5153,11.67359],"ithN":[29.6838,11.70253],"m6vM":[30.50651,12.72093],"HhGp":[29.76536,12.74672]},"texture":2,"vertices":["ithN","HhGp","m6vM","CiiH"]},"EpZZwhx8":{"uv":{"m6vM":[23.30257,19.30706],"HhGp":[23.49098,18.5898],"UCzw":[22.30361,18.99131],"GUyn":[22.4658,18.37385]},"texture":2,"vertices":["HhGp","GUyn","UCzw","m6vM"]},"HkOOhRqq":{"uv":{"UCzw":[22.30361,18.99131],"GUyn":[22.4658,18.37385],"tuV9":[21.30603,18.67032],"c6Md":[21.43926,18.16313]},"texture":2,"vertices":["GUyn","c6Md","tuV9","UCzw"]},"Rn3HTejo":{"uv":{"tuV9":[21.30603,18.67032],"c6Md":[21.43926,18.16313],"S4A2":[20.30959,18.34499],"yxnG":[20.41157,17.95676]},"texture":2,"vertices":["c6Md","yxnG","S4A2","tuV9"]},"c1phdjVh":{"uv":{"S4A2":[20.30959,18.34499],"yxnG":[20.41157,17.95676],"gB8v":[19.31404,18.01627],"zC3O":[19.38299,17.75378]},"texture":2,"vertices":["yxnG","zC3O","gB8v","S4A2"]},"TbA98a62":{"uv":{"gB8v":[19.31404,18.01627],"zC3O":[19.38299,17.75378],"rjCo":[18.31907,17.68533],"BGhj":[18.35382,17.55302]},"texture":2,"vertices":["zC3O","BGhj","rjCo","gB8v"]},"Och2IHQR":{"uv":{"XlmK":[17.32438,17.35332],"BGhj":[18.35382,17.55302],"rjCo":[18.31907,17.68533]},"texture":2,"vertices":["rjCo","BGhj","XlmK"]},"qYob9BRS":{"uv":{"dzS6":[6.34092,6.25824],"W1bv":[7.29786,5.82941],"uYCz":[7.34554,5.95763]},"texture":2,"vertices":["uYCz","W1bv","dzS6"]},"23aEbxgL":{"uv":{"W1bv":[7.29786,5.82941],"uYCz":[7.34554,5.95763],"rdMy":[8.25518,5.40161],"XYnB":[8.34978,5.65599]},"texture":2,"vertices":["uYCz","XYnB","rdMy","W1bv"]},"7tLMVboL":{"uv":{"rdMy":[8.37917,5.43412],"XYnB":[8.45686,5.69416],"OtDu":[9.36316,5.07228],"jueJ":[9.47808,5.45688]},"texture":2,"vertices":["XYnB","jueJ","OtDu","rdMy"]},"UOrry4ij":{"uv":{"OtDu":[9.36316,5.07228],"jueJ":[9.47808,5.45688],"zWPv":[10.34816,4.71378],"k156":[10.49828,5.21624]},"texture":2,"vertices":["jueJ","k156","zWPv","OtDu"]},"B7O4qlWx":{"uv":{"zWPv":[10.34816,4.71378],"k156":[10.49828,5.21624],"COEF":[11.33444,4.3596],"BgPL":[11.51721,4.97128]},"texture":2,"vertices":["k156","BgPL","COEF","zWPv"]},"t9WhfGlG":{"uv":{"COEF":[11.33444,4.3596],"BgPL":[11.51721,4.97128],"rNA7":[12.32227,4.0106],"Hxu2":[12.53458,4.72116]},"texture":2,"vertices":["BgPL","Hxu2","rNA7","COEF"]},"f5OoVGWV":{"uv":{"rNA7":[37.2731,21.47246],"Hxu2":[36.70148,21],"CDr8":[36.6413,22.30782],"7s5K":[36,21.77777]},"texture":2,"vertices":["Hxu2","7s5K","CDr8","rNA7"]},"EJriuc7I":{"uv":{"CDr8":[31.5683,1.18047],"7s5K":[30.73657,1.15949],"Zivo":[31.57999,2.2275],"P9oa":[30.67208,2.20459]},"texture":2,"vertices":["7s5K","P9oa","Zivo","CDr8"]},"9CsfZmkc":{"uv":{"Zivo":[31.57999,2.2275],"P9oa":[30.67208,2.20459],"0lNG":[31.58388,3.27433],"APw9":[30.61539,3.24989]},"texture":2,"vertices":["P9oa","APw9","0lNG","Zivo"]},"asw26cTl":{"uv":{"0lNG":[31.58388,3.27433],"APw9":[30.61539,3.24989],"XLfp":[31.57958,4.32096],"lwm2":[30.5669,4.2954]},"texture":2,"vertices":["APw9","lwm2","XLfp","0lNG"]},"2maArMtX":{"uv":{"XLfp":[31.57958,4.32096],"lwm2":[30.5669,4.2954],"SZz5":[31.56658,5.36736],"i5jm":[30.52711,5.34113]},"texture":2,"vertices":["lwm2","i5jm","SZz5","XLfp"]},"04F4m4tY":{"uv":{"SZz5":[31.56658,5.36736],"i5jm":[30.52711,5.34113],"tOKG":[31.54458,6.41354],"QRUB":[30.49631,6.38709]},"texture":2,"vertices":["i5jm","QRUB","tOKG","SZz5"]},"ygwLc6AQ":{"uv":{"tOKG":[31.54458,6.41354],"QRUB":[30.49631,6.38709],"1ZcN":[31.51379,7.4595],"4vCg":[30.47432,7.43327]},"texture":2,"vertices":["QRUB","4vCg","1ZcN","tOKG"]},"HLQ8s9kN":{"uv":{"1ZcN":[31.51334,7.47738],"4vCg":[30.47358,7.48691],"vc5H":[31.50954,8.52385],"SEcq":[30.49658,8.53315]},"texture":2,"vertices":["4vCg","SEcq","vc5H","1ZcN"]},"BuCc31Mu":{"uv":{"vc5H":[31.50954,8.52385],"SEcq":[30.49658,8.53315],"dsdG":[31.49703,9.57041],"l5Pi":[30.52827,9.5793]},"texture":2,"vertices":["SEcq","l5Pi","dsdG","vc5H"]},"7eu2XiWJ":{"uv":{"dsdG":[31.49703,9.57041],"l5Pi":[30.52827,9.5793],"59mn":[31.47633,10.61705],"9O92":[30.56817,10.62538]},"texture":2,"vertices":["l5Pi","9O92","59mn","dsdG"]},"9UH5REzs":{"uv":{"59mn":[31.47633,10.61705],"9O92":[30.56817,10.62538],"YRwD":[31.44783,11.66375],"CiiH":[30.61587,11.67138]},"texture":2,"vertices":["9O92","CiiH","YRwD","59mn"]},"z1mMRc1Q":{"uv":{"YRwD":[31.44783,11.66375],"CiiH":[30.61587,11.67138],"HHZh":[31.41223,12.71052],"m6vM":[30.67066,12.71732]},"texture":2,"vertices":["CiiH","m6vM","HHZh","YRwD"]},"ISs9oFiS":{"uv":{"HHZh":[22.99736,20.06867],"m6vM":[23.27754,19.38203],"QZzK":[22.04801,19.62555],"UCzw":[22.2892,19.03447]},"texture":2,"vertices":["m6vM","UCzw","QZzK","HHZh"]},"78cBSmOe":{"uv":{"QZzK":[22.04801,19.62555],"UCzw":[22.2892,19.03447],"GcxP":[21.1007,19.17744],"tuV9":[21.29882,18.69191]},"texture":2,"vertices":["UCzw","tuV9","GcxP","QZzK"]},"9MNXTuLC":{"uv":{"GcxP":[21.1007,19.17744],"tuV9":[21.29882,18.69191],"Kfi6":[20.15509,18.72516],"S4A2":[20.30674,18.35351]},"texture":2,"vertices":["tuV9","S4A2","Kfi6","GcxP"]},"oZ2nZREP":{"uv":{"Kfi6":[20.15509,18.72516],"S4A2":[20.30674,18.35351],"BHSp":[19.2108,18.26964],"gB8v":[19.31334,18.01835]},"texture":2,"vertices":["S4A2","gB8v","BHSp","Kfi6"]},"vCgF3eiZ":{"uv":{"BHSp":[19.2108,18.26964],"gB8v":[19.31334,18.01835],"kujo":[18.26739,17.81199],"rjCo":[18.31907,17.68533]},"texture":2,"vertices":["gB8v","rjCo","kujo","BHSp"]},"vMeC28aL":{"uv":{"XlmK":[17.32438,17.35332],"rjCo":[18.31907,17.68533],"kujo":[18.26739,17.81199]},"texture":2,"vertices":["kujo","rjCo","XlmK"]},"aMfLwj4b":{"uv":{"dzS6":[6.34002,6.25624],"Af6K":[7.23414,5.70835],"W1bv":[7.29786,5.82941]},"texture":2,"vertices":["W1bv","Af6K","dzS6"]},"dKHUZtGc":{"uv":{"Af6K":[7.23414,5.70835],"W1bv":[7.29786,5.82941],"yUFO":[8.12878,5.16144],"rdMy":[8.25518,5.40161]},"texture":2,"vertices":["W1bv","rdMy","yUFO","Af6K"]},"AZJLNhWC":{"uv":{"yUFO":[8.26988,5.1857],"rdMy":[8.37917,5.43412],"RtQK":[9.20153,4.70486],"OtDu":[9.36316,5.07228]},"texture":2,"vertices":["rdMy","OtDu","RtQK","yUFO"]},"cI4Qv1nz":{"uv":{"RtQK":[9.20153,4.70486],"OtDu":[9.36316,5.07228],"l9lX":[10.13459,4.22722],"zWPv":[10.34575,4.70723]},"texture":2,"vertices":["OtDu","zWPv","l9lX","RtQK"]},"4OkYj2Dc":{"uv":{"l9lX":[10.13459,4.22722],"zWPv":[10.34575,4.70723],"vOS4":[11.06946,3.7537],"COEF":[11.32652,4.33806]},"texture":2,"vertices":["zWPv","COEF","vOS4","l9lX"]},"sl72bjuS":{"uv":{"vOS4":[11.06946,3.7537],"COEF":[11.32652,4.33806],"sJle":[12.00651,3.28513],"rNA7":[12.30512,3.96395]},"texture":2,"vertices":["COEF","rNA7","sJle","vOS4"]},"P8rKjp91":{"uv":{"sJle":[37.88334,21.89386],"rNA7":[37.2731,21.47246],"Z0Po":[37.32593,22.78059],"CDr8":[36.6413,22.30782]},"texture":2,"vertices":["rNA7","CDr8","Z0Po","sJle"]},"zuDAOwHw":{"uv":{"Z0Po":[37.32593,22.78059],"CDr8":[36.6413,22.30782],"5SAR":[36.76267,23.66329],"Zivo":[36.01535,23.14721]},"texture":2,"vertices":["CDr8","Zivo","5SAR","Z0Po"]},"WEqblCLw":{"uv":{"5SAR":[32.6632,2.26321],"Zivo":[31.75551,2.23267],"SLXQ":[32.65829,3.31004],"0lNG":[31.69004,3.27746]},"texture":2,"vertices":["Zivo","0lNG","SLXQ","5SAR"]},"yuuNx41Y":{"uv":{"SLXQ":[32.65829,3.31004],"0lNG":[31.69004,3.27746],"UiKU":[32.64518,4.35659],"XLfp":[31.63276,4.32252]},"texture":2,"vertices":["0lNG","XLfp","UiKU","SLXQ"]},"CD4djdxl":{"uv":{"UiKU":[32.64518,4.35659],"XLfp":[31.63276,4.32252],"yhJ5":[32.62338,5.40285],"SZz5":[31.58417,5.36788]},"texture":2,"vertices":["XLfp","SZz5","yhJ5","UiKU"]},"vDHiUYXJ":{"uv":{"yhJ5":[32.62338,5.40285],"SZz5":[31.58417,5.36788],"rWeN":[32.59259,6.44881],"tOKG":[31.54458,6.41354]},"texture":2,"vertices":["SZz5","tOKG","rWeN","yhJ5"]},"3ZPXatKD":{"uv":{"rWeN":[32.59259,6.44881],"tOKG":[31.54458,6.41354],"pf2w":[32.553,7.49447],"1ZcN":[31.51379,7.4595]},"texture":2,"vertices":["tOKG","1ZcN","pf2w","rWeN"]},"M8uifI6R":{"uv":{"pf2w":[32.553,7.49447],"1ZcN":[31.51334,7.47738],"FMk4":[32.5224,8.54051],"vc5H":[31.50954,8.52385]},"texture":2,"vertices":["1ZcN","vc5H","FMk4","pf2w"]},"22wVn9sN":{"uv":{"FMk4":[32.5224,8.54051],"vc5H":[31.50954,8.52385],"D9Bk":[32.4831,9.5864],"dsdG":[31.51443,9.57048]},"texture":2,"vertices":["vc5H","dsdG","D9Bk","FMk4"]},"uNUWCl9H":{"uv":{"D9Bk":[32.4831,9.5864],"dsdG":[31.51443,9.57048],"1NYp":[32.4356,10.63216],"59mn":[31.52753,10.61723]},"texture":2,"vertices":["dsdG","59mn","1NYp","D9Bk"]},"ScSNBjPV":{"uv":{"1NYp":[32.4356,10.63216],"59mn":[31.52753,10.61723],"m90d":[32.38031,11.67779],"YRwD":[31.54842,11.66412]},"texture":2,"vertices":["59mn","YRwD","m90d","1NYp"]},"o5uOgW8t":{"uv":{"m90d":[13.832,26.13723],"YRwD":[13,26.13723],"vUZJ":[13.7868,27.18363],"HHZh":[13.0452,27.18363]},"texture":2,"vertices":["YRwD","HHZh","vUZJ","m90d"]},"M3xJLRxW":{"uv":{"vUZJ":[22.59561,20.78406],"HHZh":[22.96279,20.13974],"bgQ5":[21.71202,20.22113],"QZzK":[22.02811,19.66647]},"texture":2,"vertices":["HHZh","QZzK","bgQ5","vUZJ"]},"TTns2eB9":{"uv":{"bgQ5":[21.71202,20.22113],"QZzK":[22.02811,19.66647],"jAum":[20.83111,19.65351],"GcxP":[21.09075,19.1979]},"texture":2,"vertices":["QZzK","GcxP","jAum","bgQ5"]},"Fc8jAlXh":{"uv":{"jAum":[20.83111,19.65351],"GcxP":[21.09075,19.1979],"RPjM":[19.95242,19.08198],"Kfi6":[20.15116,18.73324]},"texture":2,"vertices":["GcxP","Kfi6","RPjM","jAum"]},"yI8q8rWx":{"uv":{"RPjM":[19.95242,19.08198],"Kfi6":[20.15116,18.73324],"uq6l":[19.07547,18.50741],"BHSp":[19.20984,18.27161]},"texture":2,"vertices":["Kfi6","BHSp","uq6l","RPjM"]},"14LrylX6":{"uv":{"uq6l":[19.07547,18.50741],"BHSp":[19.20984,18.27161],"m6jg":[18.19965,17.93084],"kujo":[18.26739,17.81199]},"texture":2,"vertices":["BHSp","kujo","m6jg","uq6l"]},"W1APUmZQ":{"uv":{"XlmK":[17.32438,17.35332],"kujo":[18.26739,17.81199],"m6jg":[18.19965,17.93084]},"texture":2,"vertices":["m6jg","kujo","XlmK"]},"gf3G4nWJ":{"uv":{"dzS6":[6.33888,6.25436],"Ouzi":[7.15545,5.59645],"Af6K":[7.23414,5.70835]},"texture":2,"vertices":["Af6K","Ouzi","dzS6"]},"preFrWlu":{"uv":{"Ouzi":[7.15545,5.59645],"Af6K":[7.23414,5.70835],"7kpW":[7.97265,4.93944],"yUFO":[8.12878,5.16144]},"texture":2,"vertices":["Af6K","yUFO","7kpW","Ouzi"]},"aJdBY6Jz":{"uv":{"7kpW":[8.1307,4.9527],"yUFO":[8.26988,5.1857],"KwO1":[8.99568,4.36026],"RtQK":[9.20153,4.70486]},"texture":2,"vertices":["yUFO","RtQK","KwO1","7kpW"]},"s5jBk5JZ":{"uv":{"KwO1":[8.99568,4.36026],"RtQK":[9.20153,4.70486],"9wAH":[9.86245,3.77082],"l9lX":[10.13139,4.22101]},"texture":2,"vertices":["RtQK","l9lX","9wAH","KwO1"]},"3aIYJxIs":{"uv":{"9wAH":[9.86245,3.77082],"l9lX":[10.13139,4.22101],"OQKa":[10.73153,3.18525],"vOS4":[11.05893,3.7333]},"texture":2,"vertices":["l9lX","vOS4","OQKa","9wAH"]},"CVBR3hMj":{"uv":{"OQKa":[10.73153,3.18525],"vOS4":[11.05893,3.7333],"UFfV":[11.60339,2.60431],"sJle":[11.98371,3.24096]},"texture":2,"vertices":["vOS4","sJle","UFfV","OQKa"]},"YG0taOny":{"uv":{"UFfV":[38.52764,22.26108],"sJle":[37.88334,21.89386],"tVEh":[38.04877,23.19257],"Z0Po":[37.32593,22.78059]},"texture":2,"vertices":["sJle","Z0Po","tVEh","UFfV"]},"gPdDayuJ":{"uv":{"tVEh":[38.04877,23.19257],"Z0Po":[37.32593,22.78059],"hn89":[37.56373,24.12055],"5SAR":[36.77468,23.67084]},"texture":2,"vertices":["Z0Po","5SAR","hn89","tVEh"]},"8rIySq9n":{"uv":{"hn89":[37.56373,24.12055],"5SAR":[36.77468,23.67084],"BgKJ":[37.07191,25.04466],"SLXQ":[36.23022,24.56494]},"texture":2,"vertices":["5SAR","SLXQ","BgKJ","hn89"]},"PmnPYEVW":{"uv":{"BgKJ":[33.73236,3.35478],"SLXQ":[32.76441,3.31406],"RS9d":[33.71045,4.40119],"UiKU":[32.69835,4.35861]},"texture":2,"vertices":["SLXQ","UiKU","RS9d","BgKJ"]},"iFtrlqbt":{"uv":{"RS9d":[33.71045,4.40119],"UiKU":[32.69835,4.35861],"iPx7":[33.67985,5.44723],"yhJ5":[32.64097,5.40352]},"texture":2,"vertices":["UiKU","yhJ5","iPx7","RS9d"]},"hDrsh2sk":{"uv":{"iPx7":[33.67985,5.44723],"yhJ5":[32.64097,5.40352],"jgCo":[33.64026,6.49289],"rWeN":[32.59259,6.44881]},"texture":2,"vertices":["yhJ5","rWeN","jgCo","iPx7"]},"WZcXMzL0":{"uv":{"jgCo":[33.64026,6.49289],"rWeN":[32.59259,6.44881],"MtqK":[33.59188,7.53818],"pf2w":[32.553,7.49447]},"texture":2,"vertices":["rWeN","pf2w","MtqK","jgCo"]},"GMuSb7Ei":{"uv":{"MtqK":[33.59188,7.53818],"pf2w":[32.553,7.49447],"Lwwg":[33.5345,8.58309],"FMk4":[32.5224,8.54051]},"texture":2,"vertices":["pf2w","FMk4","Lwwg","MtqK"]},"Pibz7ydD":{"uv":{"Lwwg":[33.5345,8.58309],"FMk4":[32.5224,8.54051],"hu1N":[33.46844,9.62763],"D9Bk":[32.50049,9.58691]},"texture":2,"vertices":["FMk4","D9Bk","hu1N","Lwwg"]},"egERW5aq":{"uv":{"hu1N":[33.46844,9.62763],"D9Bk":[32.50049,9.58691],"qRBa":[33.39418,10.67184],"1NYp":[32.48678,10.63366]},"texture":2,"vertices":["D9Bk","1NYp","qRBa","hu1N"]},"XtVkd2Hu":{"uv":{"qRBa":[14.78909,25.16976],"1NYp":[13.88427,25.09144],"drhF":[14.6609,26.20897],"m90d":[13.832,26.13723]},"texture":2,"vertices":["1NYp","m90d","drhF","qRBa"]},"EY4eaWRP":{"uv":{"drhF":[14.6609,26.20897],"m90d":[13.832,26.13723],"lY4S":[14.52564,27.24758],"vUZJ":[13.7868,27.18363]},"texture":2,"vertices":["m90d","vUZJ","lY4S","drhF"]},"ymU3q6Uj":{"uv":{"lY4S":[22.10415,21.44106],"vUZJ":[22.55209,20.85002],"6ww5":[21.30136,20.7679],"bgQ5":[21.68696,20.25911]},"texture":2,"vertices":["vUZJ","bgQ5","6ww5","lY4S"]},"4wrap22j":{"uv":{"6ww5":[21.30136,20.7679],"bgQ5":[21.68696,20.25911],"Ukn6":[20.50184,20.09043],"jAum":[20.81858,19.6725]},"texture":2,"vertices":["bgQ5","jAum","Ukn6","6ww5"]},"hlxUkFgt":{"uv":{"Ukn6":[20.50184,20.09043],"jAum":[20.81858,19.6725],"b9ij":[19.70503,19.40938],"RPjM":[19.94748,19.08948]},"texture":2,"vertices":["jAum","RPjM","b9ij","Ukn6"]},"FXkmMUC4":{"uv":{"b9ij":[19.70503,19.40938],"RPjM":[19.94748,19.08948],"yEkT":[18.91033,18.72554],"uq6l":[19.07426,18.50924]},"texture":2,"vertices":["RPjM","uq6l","yEkT","b9ij"]},"uyRz02u5":{"uv":{"yEkT":[18.91033,18.72554],"uq6l":[19.07426,18.50924],"Drb8":[18.11702,18.03987],"m6jg":[18.19965,17.93084]},"texture":2,"vertices":["uq6l","m6jg","Drb8","yEkT"]},"yc0yPZ0d":{"uv":{"XlmK":[17.32438,17.35332],"m6jg":[18.19965,17.93084],"Drb8":[18.11702,18.03987]},"texture":2,"vertices":["Drb8","m6jg","XlmK"]},"UYbiyb0I":{"uv":{"dzS6":[6.3375,6.25265],"V2jG":[7.06307,5.49556],"Ouzi":[7.15545,5.59645]},"texture":2,"vertices":["Ouzi","V2jG","dzS6"]},"aVtvzhui":{"uv":{"V2jG":[7.06307,5.49556],"Ouzi":[7.15545,5.59645],"9aEQ":[7.78937,4.73928],"7kpW":[7.97265,4.93944]},"texture":2,"vertices":["Ouzi","7kpW","9aEQ","V2jG"]},"tG9bCICT":{"uv":{"9aEQ":[7.96375,4.73873],"7kpW":[8.1307,4.9527],"K0vm":[8.74876,4.04379],"KwO1":[8.99568,4.36026]},"texture":2,"vertices":["7kpW","KwO1","K0vm","9aEQ"]},"Q39EHpYg":{"uv":{"K0vm":[8.74876,4.04379],"KwO1":[8.99568,4.36026],"uZtG":[9.53592,3.35161],"9wAH":[9.8585,3.76506]},"texture":2,"vertices":["KwO1","9wAH","uZtG","K0vm"]},"EkKTttfI":{"uv":{"uZtG":[9.53592,3.35161],"9wAH":[9.8585,3.76506],"d2Wd":[10.32585,2.66299],"OQKa":[10.71856,3.16631]},"texture":2,"vertices":["9wAH","OQKa","d2Wd","uZtG"]},"groTI24p":{"uv":{"d2Wd":[10.32585,2.66299],"OQKa":[10.71856,3.16631],"UQUc":[11.1191,1.97861],"UFfV":[11.5753,2.5633]},"texture":2,"vertices":["OQKa","UFfV","UQUc","d2Wd"]},"42EM8o5n":{"uv":{"UQUc":[39.20121,22.57137],"UFfV":[38.52764,22.26108],"W5m4":[38.80444,23.54068],"tVEh":[38.04877,23.19257]},"texture":2,"vertices":["UFfV","tVEh","W5m4","UQUc"]},"JUy5QoCf":{"uv":{"W5m4":[38.80444,23.54068],"tVEh":[38.04877,23.19257],"NuNY":[38.40123,24.50703],"hn89":[37.57634,24.12703]},"texture":2,"vertices":["tVEh","hn89","NuNY","W5m4"]},"R5i3kSyG":{"uv":{"NuNY":[38.40123,24.50703],"hn89":[37.57634,24.12703],"loYR":[37.99093,25.47011],"BgKJ":[37.111,25.06476]},"texture":2,"vertices":["hn89","BgKJ","loYR","NuNY"]},"eQETR02A":{"uv":{"loYR":[37.99093,25.47011],"BgKJ":[37.111,25.06476],"MZ35":[37.57318,26.42976],"RS9d":[36.65311,26.00592]},"texture":2,"vertices":["BgKJ","RS9d","MZ35","loYR"]},"UVNQOUyl":{"uv":{"MZ35":[37.57318,26.42976],"RS9d":[36.65311,26.00592],"8La3":[37.14753,27.38577],"iPx7":[36.20312,26.95071]},"texture":2,"vertices":["RS9d","iPx7","8La3","MZ35"]},"RzZrh6eo":{"uv":{"8La3":[14.0442,0],"iPx7":[13.0044,0],"32cN":[14.0486,1],"jgCo":[13,1]},"texture":2,"vertices":["iPx7","jgCo","32cN","8La3"]},"9XhCPFu1":{"uv":{"32cN":[12.10974,35.52727],"jgCo":[11.06247,35.58015],"Wv6p":[12.15812,36.57256],"MtqK":[11.11965,36.625]},"texture":2,"vertices":["jgCo","MtqK","Wv6p","32cN"]},"yRXFUPTs":{"uv":{"Wv6p":[26.04984,14.48239],"MtqK":[25.02229,14.64153],"VY4a":[26.19675,15.51851],"Lwwg":[25.19569,15.67355]},"texture":2,"vertices":["MtqK","Lwwg","VY4a","Wv6p"]},"UQUJoRmS":{"uv":{"VY4a":[26.19675,15.51851],"Lwwg":[25.19569,15.67355],"zBz2":[26.33507,16.55596],"hu1N":[25.37769,16.70424]},"texture":2,"vertices":["Lwwg","hu1N","zBz2","VY4a"]},"UEU3YLpC":{"uv":{"zBz2":[26.33507,16.55596],"hu1N":[25.37769,16.70424],"SXaq":[26.46529,17.59467],"qRBa":[25.56779,17.73368]},"texture":2,"vertices":["hu1N","qRBa","SXaq","zBz2"]},"WhCh5gYH":{"uv":{"SXaq":[15.69785,25.32764],"qRBa":[14.80316,25.17159],"ey0d":[15.48053,26.35193],"drhF":[14.6609,26.20897]},"texture":2,"vertices":["qRBa","drhF","ey0d","SXaq"]},"XpzgXqov":{"uv":{"ey0d":[15.48053,26.35193],"drhF":[14.6609,26.20897],"Su7W":[15.25621,27.375],"lY4S":[14.52564,27.24758]},"texture":2,"vertices":["drhF","lY4S","Su7W","ey0d"]},"hcQ8TbH0":{"uv":{"Su7W":[21.53135,22.02849],"lY4S":[22.05241,21.5008],"mK8f":[20.82302,21.25656],"6ww5":[21.27157,20.80229]},"texture":2,"vertices":["lY4S","6ww5","mK8f","Su7W"]},"gEWtJull":{"uv":{"mK8f":[20.82302,21.25656],"6ww5":[21.27157,20.80229],"BLe7":[20.11849,20.48078],"Ukn6":[20.48694,20.10763]},"texture":2,"vertices":["6ww5","Ukn6","BLe7","mK8f"]},"4NtLtHvl":{"uv":{"BLe7":[20.11849,20.48078],"Ukn6":[20.48694,20.10763],"7xTb":[19.41711,19.70179],"b9ij":[19.69915,19.41617]},"texture":2,"vertices":["Ukn6","b9ij","7xTb","BLe7"]},"RzCSLI6s":{"uv":{"7xTb":[19.41711,19.70179],"b9ij":[19.69915,19.41617],"Jp2Y":[18.7182,18.92032],"yEkT":[18.90889,18.7272]},"texture":2,"vertices":["b9ij","yEkT","Jp2Y","7xTb"]},"Wf2necZo":{"uv":{"Jp2Y":[18.7182,18.92032],"yEkT":[18.90889,18.7272],"yXFy":[18.02091,18.13721],"Drb8":[18.11702,18.03987]},"texture":2,"vertices":["yEkT","Drb8","yXFy","Jp2Y"]},"QcDFvRKQ":{"uv":{"XlmK":[17.32438,17.35332],"Drb8":[18.11702,18.03987],"yXFy":[18.02091,18.13721]},"texture":2,"vertices":["yXFy","Drb8","XlmK"]},"O9H2gII2":{"uv":{"dzS6":[6.33592,6.25113],"lrbM":[6.95852,5.40733],"V2jG":[7.06307,5.49556]},"texture":2,"vertices":["V2jG","lrbM","dzS6"]},"CyI4wbkg":{"uv":{"lrbM":[6.95852,5.40733],"V2jG":[7.06307,5.49556],"FRHO":[7.58196,4.56424],"9aEQ":[7.78937,4.73928]},"texture":2,"vertices":["V2jG","9aEQ","FRHO","lrbM"]},"By1K43af":{"uv":{"FRHO":[7.7716,4.54706],"9aEQ":[7.96375,4.73873],"cnP4":[8.46457,3.76031],"K0vm":[8.74876,4.04379]},"texture":2,"vertices":["9aEQ","K0vm","cnP4","FRHO"]},"CoPH8IVg":{"uv":{"cnP4":[8.46457,3.76031],"K0vm":[8.74876,4.04379],"wDPt":[9.16002,2.97604],"uZtG":[9.53129,3.34638]},"texture":2,"vertices":["K0vm","uZtG","wDPt","cnP4"]},"89CopZ3w":{"uv":{"wDPt":[9.16002,2.97604],"uZtG":[9.53129,3.34638],"keAy":[9.85865,2.19495],"d2Wd":[10.31064,2.6458]},"texture":2,"vertices":["uZtG","d2Wd","keAy","wDPt"]},"zTBapu0m":{"uv":{"keAy":[9.85865,2.19495],"d2Wd":[10.31064,2.6458],"VpKU":[10.56111,1.41766],"UQUc":[11.08616,1.9414]},"texture":2,"vertices":["d2Wd","UQUc","VpKU","keAy"]},"fyUyBq6W":{"uv":{"VpKU":[39.89902,22.82242],"UQUc":[39.20121,22.57137],"5wyI":[39.58732,23.82234],"W5m4":[38.80444,23.54068]},"texture":2,"vertices":["UQUc","W5m4","5wyI","VpKU"]},"tfDyNTpq":{"uv":{"5wyI":[39.58732,23.82234],"W5m4":[38.80444,23.54068],"rFN9":[39.26893,24.81985],"NuNY":[38.41435,24.5124]},"texture":2,"vertices":["W5m4","NuNY","rFN9","5wyI"]},"EPqEofQm":{"uv":{"rFN9":[39.26893,24.81985],"NuNY":[38.41435,24.5124],"lyGa":[38.94321,25.81473],"loYR":[38.03161,25.48676]},"texture":2,"vertices":["NuNY","loYR","lyGa","rFN9"]},"Fx4anZEn":{"uv":{"lyGa":[12.98559,32.34844],"loYR":[12.01764,32.38916],"1zwT":[13.05165,33.39298],"MZ35":[12.03955,33.43557]},"texture":2,"vertices":["loYR","MZ35","1zwT","lyGa"]},"VOy8fTtR":{"uv":{"1zwT":[13.05165,33.39298],"MZ35":[12.03955,33.43557],"Cs8v":[13.10903,34.4379],"8La3":[12.07015,34.48161]},"texture":2,"vertices":["MZ35","8La3","Cs8v","1zwT"]},"1JxqZqw2":{"uv":{"Cs8v":[13.10903,34.4379],"8La3":[12.07015,34.48161],"glJk":[13.15741,35.48319],"32cN":[12.10974,35.52727]},"texture":2,"vertices":["8La3","32cN","glJk","Cs8v"]},"AMJf3QBO":{"uv":{"glJk":[13.15741,35.48319],"32cN":[12.10974,35.52727],"I7Yg":[13.197,36.52885],"Wv6p":[12.15812,36.57256]},"texture":2,"vertices":["32cN","Wv6p","I7Yg","glJk"]},"9O02FVt6":{"uv":{"I7Yg":[27.08112,14.3496],"Wv6p":[26.04984,14.48239],"eevK":[27.20146,15.38915],"VY4a":[26.19675,15.51851]},"texture":2,"vertices":["Wv6p","VY4a","eevK","I7Yg"]},"wVSFTnqE":{"uv":{"eevK":[27.20146,15.38915],"VY4a":[26.19675,15.51851],"nZ5c":[27.31317,16.4298],"zBz2":[26.3523,16.55352]},"texture":2,"vertices":["VY4a","zBz2","nZ5c","eevK"]},"1WcIexSg":{"uv":{"nZ5c":[27.31317,16.4298],"zBz2":[26.3523,16.55352],"U0lB":[27.41674,17.4715],"SXaq":[26.51598,17.58748]},"texture":2,"vertices":["zBz2","SXaq","U0lB","nZ5c"]},"sWcV8jEG":{"uv":{"U0lB":[27.41674,17.4715],"SXaq":[26.51598,17.58748],"tsct":[27.51258,18.5142],"ey0d":[26.68739,18.62045]},"texture":2,"vertices":["SXaq","ey0d","tsct","U0lB"]},"H9flQhbW":{"uv":{"tsct":[27.51258,18.5142],"ey0d":[26.68739,18.62045],"zoG1":[27.60138,19.55781],"Su7W":[26.86585,19.65251]},"texture":2,"vertices":["ey0d","Su7W","zoG1","tsct"]},"diWdCigQ":{"uv":{"zoG1":[20.88695,22.53636],"Su7W":[21.47227,22.08099],"YqTy":[20.28513,21.67879],"mK8f":[20.789,21.28678]},"texture":2,"vertices":["Su7W","mK8f","YqTy","zoG1"]},"E67CyIMi":{"uv":{"YqTy":[20.28513,21.67879],"mK8f":[20.789,21.28678],"zTo8":[19.68759,20.81789],"BLe7":[20.10148,20.49589]},"texture":2,"vertices":["mK8f","BLe7","zTo8","YqTy"]},"b48pyqkL":{"uv":{"zTo8":[19.68759,20.81789],"BLe7":[20.10148,20.49589],"l8Xk":[19.09359,19.95424],"7xTb":[19.4104,19.70776]},"texture":2,"vertices":["BLe7","7xTb","l8Xk","zTo8"]},"sRGDaSEP":{"uv":{"l8Xk":[19.09359,19.95424],"7xTb":[19.4104,19.70776],"s4zu":[18.50235,19.08843],"Jp2Y":[18.71656,18.92178]},"texture":2,"vertices":["7xTb","Jp2Y","s4zu","l8Xk"]},"qmIBcLUV":{"uv":{"s4zu":[18.50235,19.08843],"Jp2Y":[18.71656,18.92178],"tapj":[17.91293,18.22121],"yXFy":[18.02091,18.13721]},"texture":2,"vertices":["Jp2Y","yXFy","tapj","s4zu"]},"oMKoMBhD":{"uv":{"XlmK":[17.32438,17.35332],"yXFy":[18.02091,18.13721],"tapj":[17.91293,18.22121]},"texture":2,"vertices":["tapj","yXFy","XlmK"]},"Qy1W7oEO":{"uv":{"dzS6":[6.33415,6.24983],"KXeI":[6.84353,5.33322],"lrbM":[6.95852,5.40733]},"texture":2,"vertices":["lrbM","KXeI","dzS6"]},"QQbxYjjT":{"uv":{"KXeI":[6.84353,5.33322],"lrbM":[6.95852,5.40733],"CQM1":[7.35384,4.41721],"FRHO":[7.58196,4.56424]},"texture":2,"vertices":["lrbM","FRHO","CQM1","KXeI"]},"SjMvOaZm":{"uv":{"CQM1":[7.55721,4.38065],"FRHO":[7.7716,4.54706],"nk1J":[8.14748,3.51419],"cnP4":[8.46457,3.76031]},"texture":2,"vertices":["FRHO","cnP4","nk1J","CQM1"]},"O4qN5G4C":{"uv":{"nk1J":[8.14748,3.51419],"cnP4":[8.46457,3.76031],"cuaN":[8.74053,2.64987],"wDPt":[9.15478,2.97142]},"texture":2,"vertices":["cnP4","wDPt","cuaN","nk1J"]},"DCJMpMIr":{"uv":{"cuaN":[8.74053,2.64987],"wDPt":[9.15478,2.97142],"bai3":[9.33713,1.78832],"keAy":[9.84143,2.17977]},"texture":2,"vertices":["wDPt","keAy","bai3","cuaN"]},"5rHQfDpd":{"uv":{"bai3":[9.33713,1.78832],"keAy":[9.84143,2.17977],"gB1A":[9.93799,0.93008],"VpKU":[10.52381,1.38481]},"texture":2,"vertices":["keAy","VpKU","gB1A","bai3"]},"TszGhpVt":{"uv":{"gB1A":[40.61588,23.01236],"VpKU":[39.89902,22.82242],"spSN":[40.39156,24.03544],"5wyI":[39.58732,23.82234]},"texture":2,"vertices":["VpKU","5wyI","spSN","gB1A"]},"fsIb8tMk":{"uv":{"spSN":[40.39156,24.03544],"5wyI":[39.58732,23.82234],"vjCD":[40.16038,25.05669],"rFN9":[39.28248,24.82408]},"texture":2,"vertices":["5wyI","rFN9","vjCD","spSN"]},"RuvHI1qi":{"uv":{"vjCD":[13.99449,31.26705],"rFN9":[13.0868,31.29759],"Em6A":[14.05996,32.31184],"lyGa":[13.09171,32.34442]},"texture":2,"vertices":["rFN9","lyGa","Em6A","vjCD"]},"4ZzOnf82":{"uv":{"Em6A":[14.05996,32.31184],"lyGa":[13.09171,32.34442],"sBAM":[14.11724,33.3569],"1zwT":[13.10482,33.39097]},"texture":2,"vertices":["lyGa","1zwT","sBAM","Em6A"]},"PXQRGlDw":{"uv":{"sBAM":[14.11724,33.3569],"1zwT":[13.10482,33.39097],"vQ0k":[14.16583,34.40226],"Cs8v":[13.12662,34.43723]},"texture":2,"vertices":["1zwT","Cs8v","vQ0k","sBAM"]},"gv2EcerO":{"uv":{"vQ0k":[14.16583,34.40226],"Cs8v":[13.12662,34.43723],"CVIV":[14.20542,35.44792],"glJk":[13.15741,35.48319]},"texture":2,"vertices":["Cs8v","glJk","CVIV","vQ0k"]},"lpXe33bd":{"uv":{"CVIV":[14.20542,35.44792],"glJk":[13.15741,35.48319],"a7FH":[14.23621,36.49388],"I7Yg":[13.197,36.52885]},"texture":2,"vertices":["glJk","I7Yg","a7FH","CVIV"]},"rJNqnouj":{"uv":{"a7FH":[28.11547,14.24327],"I7Yg":[27.08112,14.3496],"ZbTK":[28.20915,15.28555],"eevK":[27.20146,15.38915]},"texture":2,"vertices":["I7Yg","eevK","ZbTK","a7FH"]},"mVaevrDd":{"uv":{"ZbTK":[28.20915,15.28555],"eevK":[27.20146,15.38915],"WAet":[28.29417,16.32873],"nZ5c":[27.33045,16.4278]},"texture":2,"vertices":["eevK","nZ5c","WAet","ZbTK"]},"av0WRxc7":{"uv":{"WAet":[28.29417,16.32873],"nZ5c":[27.33045,16.4278],"W08E":[28.37104,17.37274],"U0lB":[27.4676,17.46562]},"texture":2,"vertices":["nZ5c","U0lB","W08E","WAet"]},"iS7XwbtS":{"uv":{"W08E":[28.37104,17.37274],"U0lB":[27.4676,17.46562],"klpn":[28.44014,18.41755],"tsct":[27.61251,18.50263]},"texture":2,"vertices":["U0lB","tsct","klpn","W08E"]},"zxRL7mWo":{"uv":{"klpn":[28.44014,18.41755],"tsct":[27.61251,18.50263],"YYc7":[28.50219,19.46309],"zoG1":[27.76448,19.53893]},"texture":2,"vertices":["tsct","zoG1","YYc7","klpn"]},"gDW54c2R":{"uv":{"YYc7":[20.18191,22.95603],"zoG1":[20.82154,22.58072],"i6hg":[19.69686,22.0274],"YqTy":[20.24747,21.70433]},"texture":2,"vertices":["zoG1","YqTy","i6hg","YYc7"]},"joPGCBc0":{"uv":{"i6hg":[19.69686,22.0274],"YqTy":[20.24747,21.70433],"yiuy":[19.21647,21.09605],"zTo8":[19.66876,20.83066]},"texture":2,"vertices":["YqTy","zTo8","yiuy","i6hg"]},"HVMK1QJM":{"uv":{"yiuy":[19.21647,21.09605],"zTo8":[19.66876,20.83066],"VYTo":[18.73995,20.16242],"l8Xk":[19.08616,19.95928]},"texture":2,"vertices":["zTo8","l8Xk","VYTo","yiuy"]},"6xOHjXEw":{"uv":{"VYTo":[18.73995,20.16242],"l8Xk":[19.08616,19.95928],"MpNe":[18.26646,19.22701],"s4zu":[18.50054,19.08966]},"texture":2,"vertices":["l8Xk","s4zu","MpNe","VYTo"]},"u6JliktH":{"uv":{"MpNe":[18.26646,19.22701],"s4zu":[18.50054,19.08966],"uxVl":[17.79494,18.29045],"tapj":[17.91293,18.22121]},"texture":2,"vertices":["s4zu","tapj","uxVl","MpNe"]},"TkOG9yCF":{"uv":{"XlmK":[17.32438,17.35332],"tapj":[17.91293,18.22121],"uxVl":[17.79494,18.29045]},"texture":2,"vertices":["uxVl","tapj","XlmK"]},"IX87pOtV":{"uv":{"dzS6":[6.33224,6.24876],"lvZg":[6.72,5.27445],"KXeI":[6.84353,5.33322]},"texture":2,"vertices":["KXeI","lvZg","dzS6"]},"wKaGYIPJ":{"uv":{"lvZg":[6.72,5.27445],"KXeI":[6.84353,5.33322],"1S9p":[7.10876,4.30062],"CQM1":[7.35384,4.41721]},"texture":2,"vertices":["KXeI","CQM1","1S9p","lvZg"]},"bxvZKbIP":{"uv":{"1S9p":[7.32387,4.24204],"CQM1":[7.55721,4.38065],"sO3C":[7.80238,3.30919],"nk1J":[8.14748,3.51419]},"texture":2,"vertices":["CQM1","nk1J","sO3C","1S9p"]},"vWB2F9ez":{"uv":{"sO3C":[7.80238,3.30919],"nk1J":[8.14748,3.51419],"TigE":[8.2839,2.37813],"cuaN":[8.73475,2.64594]},"texture":2,"vertices":["nk1J","cuaN","TigE","sO3C"]},"nRUmEbUD":{"uv":{"TigE":[8.2839,2.37813],"cuaN":[8.73475,2.64594],"YVsP":[8.76928,1.44937],"bai3":[9.31815,1.7754]},"texture":2,"vertices":["cuaN","bai3","YVsP","TigE"]},"OxkyXwf9":{"uv":{"YVsP":[8.76928,1.44937],"bai3":[9.31815,1.7754],"vJyf":[9.25931,0.52336],"gB1A":[9.89691,0.9021]},"texture":2,"vertices":["bai3","gB1A","vJyf","YVsP"]},"dVe4xP5s":{"uv":{"vJyf":[41.34645,23.13978],"gB1A":[40.61588,23.01236],"wJ8N":[41.21119,24.17839],"spSN":[40.39156,24.03544]},"texture":2,"vertices":["gB1A","spSN","wJ8N","vJyf"]},"UDVZ8o5G":{"uv":{"wJ8N":[15.01343,30.19386],"spSN":[14.1817,30.21485],"8hSH":[15.07792,31.23897],"vjCD":[14.17001,31.26188]},"texture":2,"vertices":["spSN","vjCD","8hSH","wJ8N"]},"KhORBpB7":{"uv":{"8hSH":[15.07792,31.23897],"vjCD":[14.17001,31.26188],"sWpp":[15.13461,32.28427],"Em6A":[14.16612,32.30871]},"texture":2,"vertices":["vjCD","Em6A","sWpp","8hSH"]},"LyMRsGM9":{"uv":{"sWpp":[15.13461,32.28427],"Em6A":[14.16612,32.30871],"nlKq":[15.1831,33.32978],"sBAM":[14.17042,33.35534]},"texture":2,"vertices":["Em6A","sBAM","nlKq","sWpp"]},"JW8HAmHB":{"uv":{"nlKq":[15.1831,33.32978],"sBAM":[14.17042,33.35534],"e8HN":[15.22289,34.37551],"vQ0k":[14.18342,34.40174]},"texture":2,"vertices":["sBAM","vQ0k","e8HN","nlKq"]},"ZQQeUnT1":{"uv":{"e8HN":[15.22289,34.37551],"vQ0k":[14.18342,34.40174],"Amc5":[15.25369,35.42147],"CVIV":[14.20542,35.44792]},"texture":2,"vertices":["vQ0k","CVIV","Amc5","e8HN"]},"NxE2oMdX":{"uv":{"Amc5":[15.25369,35.42147],"CVIV":[14.20542,35.44792],"G921":[15.27568,36.46764],"a7FH":[14.23621,36.49388]},"texture":2,"vertices":["CVIV","a7FH","G921","Amc5"]},"nR248neA":{"uv":{"G921":[29.1522,14.16346],"a7FH":[28.11547,14.24327],"fWiS":[29.21916,15.2078],"ZbTK":[28.20915,15.28555]},"texture":2,"vertices":["a7FH","ZbTK","fWiS","G921"]},"JDrBrjrZ":{"uv":{"fWiS":[29.21916,15.2078],"ZbTK":[28.20915,15.28555],"LRgP":[29.27744,16.25281],"WAet":[28.3115,16.32717]},"texture":2,"vertices":["ZbTK","WAet","LRgP","fWiS"]},"y5wTgFhY":{"uv":{"LRgP":[29.27744,16.25281],"WAet":[28.3115,16.32717],"vIls":[29.32755,17.29845],"W08E":[28.42203,17.36816]},"texture":2,"vertices":["WAet","W08E","vIls","LRgP"]},"yDmCftKr":{"uv":{"vIls":[29.32755,17.29845],"W08E":[28.42203,17.36816],"S6zf":[29.36988,18.34469],"klpn":[28.54033,18.40855]},"texture":2,"vertices":["W08E","klpn","S6zf","vIls"]},"rveuKjeG":{"uv":{"S6zf":[29.36988,18.34469],"klpn":[28.54033,18.40855],"a3mr":[29.40513,19.39147],"YYc7":[28.66571,19.44839]},"texture":2,"vertices":["klpn","YYc7","a3mr","S6zf"]},"XlNOYBv1":{"uv":{"a3mr":[19.42825,23.28034],"YYc7":[20.11129,22.99149],"X9Yi":[19.06821,22.29648],"i6hg":[19.6562,22.04782]},"texture":2,"vertices":["YYc7","i6hg","X9Yi","a3mr"]},"fmO8Aprp":{"uv":{"X9Yi":[19.06821,22.29648],"i6hg":[19.6562,22.04782],"Tt4O":[18.71315,21.31051],"yiuy":[19.19613,21.10626]},"texture":2,"vertices":["i6hg","yiuy","Tt4O","X9Yi"]},"9e4CY7pd":{"uv":{"Tt4O":[18.71315,21.31051],"yiuy":[19.19613,21.10626],"z8dF":[18.36222,20.32279],"VYTo":[18.73193,20.16645]},"texture":2,"vertices":["yiuy","VYTo","z8dF","Tt4O"]},"vs868zLB":{"uv":{"z8dF":[18.36222,20.32279],"VYTo":[18.73193,20.16645],"6c8h":[18.01453,19.33371],"MpNe":[18.26449,19.228]},"texture":2,"vertices":["VYTo","MpNe","6c8h","z8dF"]},"m9wVAAKt":{"uv":{"6c8h":[18.01453,19.33371],"MpNe":[18.26449,19.228],"ZGtB":[17.66895,18.34373],"uxVl":[17.79494,18.29045]},"texture":2,"vertices":["MpNe","uxVl","ZGtB","6c8h"]},"hV1ayah6":{"uv":{"XlmK":[17.32438,17.35332],"uxVl":[17.79494,18.29045],"ZGtB":[17.66895,18.34373]},"texture":2,"vertices":["ZGtB","uxVl","XlmK"]},"s0VQ06uV":{"uv":{"dzS6":[6.3302,6.24794],"1ITj":[6.58996,5.23199],"lvZg":[6.72,5.27445]},"texture":2,"vertices":["lvZg","1ITj","dzS6"]},"bbIvBKBN":{"uv":{"1ITj":[6.58996,5.23199],"lvZg":[6.72,5.27445],"WjOG":[6.85076,4.21638],"1S9p":[7.10876,4.30062]},"texture":2,"vertices":["lvZg","1S9p","WjOG","1ITj"]},"pTOGrv8q":{"uv":{"WjOG":[7.07517,4.13338],"1S9p":[7.32387,4.24204],"dDSA":[7.43455,3.14848],"sO3C":[7.80238,3.30919]},"texture":2,"vertices":["1S9p","sO3C","dDSA","WjOG"]},"eakASkGa":{"uv":{"dDSA":[7.43455,3.14848],"sO3C":[7.80238,3.30919],"eRfm":[7.79714,2.16499],"TigE":[8.27768,2.37494]},"texture":2,"vertices":["sO3C","TigE","eRfm","dDSA"]},"cJDyhvYT":{"uv":{"eRfm":[7.79714,2.16499],"TigE":[8.27768,2.37494],"Er0W":[8.16386,1.1833],"YVsP":[8.74886,1.43889]},"texture":2,"vertices":["TigE","YVsP","Er0W","eRfm"]},"EjoBUO0m":{"uv":{"Er0W":[8.16386,1.1833],"YVsP":[8.74886,1.43889],"PWvD":[8.53552,0.20376],"vJyf":[9.21509,0.50068]},"texture":2,"vertices":["YVsP","vJyf","PWvD","Er0W"]},"OeOt15Av":{"uv":{"PWvD":[42.08529,23.20373],"vJyf":[41.34645,23.13978],"dEDz":[42.04009,24.25013],"wJ8N":[41.21119,24.17839]},"texture":2,"vertices":["vJyf","wJ8N","dEDz","PWvD"]},"iAC7J9H5":{"uv":{"dEDz":[16.10586,30.17439],"wJ8N":[15.27397,30.18839],"JEJX":[16.16155,31.22],"8hSH":[15.25348,31.23528]},"texture":2,"vertices":["wJ8N","8hSH","JEJX","dEDz"]},"sVdlf4di":{"uv":{"JEJX":[16.16155,31.22],"8hSH":[15.25348,31.23528],"7ct9":[16.20945,32.26575],"sWpp":[15.24078,32.28204]},"texture":2,"vertices":["8hSH","sWpp","7ct9","JEJX"]},"czLWCMKg":{"uv":{"7ct9":[16.20945,32.26575],"sWpp":[15.24078,32.28204],"8sRT":[16.24914,33.31163],"nlKq":[15.23628,33.32866]},"texture":2,"vertices":["sWpp","nlKq","8sRT","7ct9"]},"FxC2w0s2":{"uv":{"8sRT":[16.24914,33.31163],"nlKq":[15.23628,33.32866],"DnAa":[16.28014,34.35765],"e8HN":[15.24049,34.37514]},"texture":2,"vertices":["nlKq","e8HN","DnAa","8sRT"]},"bKigPqc8":{"uv":{"DnAa":[16.28014,34.35765],"e8HN":[15.24049,34.37514],"Zpr9":[16.30214,35.40383],"Amc5":[15.25369,35.42147]},"texture":2,"vertices":["e8HN","Amc5","Zpr9","DnAa"]},"MJ7JVwcX":{"uv":{"Zpr9":[16.30214,35.40383],"Amc5":[15.25369,35.42147],"8HL2":[16.31534,36.45016],"G921":[15.27568,36.46764]},"texture":2,"vertices":["Amc5","G921","8HL2","Zpr9"]},"UCGN4c0E":{"uv":{"8HL2":[30.19064,14.11022],"G921":[29.1522,14.16346],"djuW":[30.23083,15.15594],"fWiS":[29.21916,15.2078]},"texture":2,"vertices":["G921","fWiS","djuW","8HL2"]},"fyeWkFoD":{"uv":{"djuW":[30.23083,15.15594],"fWiS":[29.21916,15.2078],"5OCP":[30.26233,16.2021],"LRgP":[29.29481,16.2517]},"texture":2,"vertices":["fWiS","LRgP","5OCP","djuW"]},"yRp3LqUE":{"uv":{"5OCP":[30.26233,16.2021],"LRgP":[29.29481,16.2517],"oCzm":[30.28565,17.24868],"vIls":[29.37864,17.29517]},"texture":2,"vertices":["LRgP","vIls","oCzm","5OCP"]},"qBFEn87t":{"uv":{"oCzm":[30.28565,17.24868],"vIls":[29.37864,17.29517],"6JK9":[30.30117,18.29565],"S6zf":[29.47026,18.33825]},"texture":2,"vertices":["vIls","S6zf","6JK9","oCzm"]},"4pfR8xsz":{"uv":{"6JK9":[30.30117,18.29565],"S6zf":[29.47026,18.33825],"mIsF":[30.3096,19.343],"a3mr":[29.56898,19.38096]},"texture":2,"vertices":["S6zf","a3mr","mIsF","6JK9"]},"YYK1vpIL":{"uv":{"mIsF":[18.63878,23.50378],"a3mr":[19.35361,23.30631],"pYCB":[18.40988,22.48142],"X9Yi":[19.02524,22.31143]},"texture":2,"vertices":["a3mr","X9Yi","pYCB","mIsF"]},"Tlu1nwZb":{"uv":{"pYCB":[18.40988,22.48142],"X9Yi":[19.02524,22.31143],"QVfu":[18.18619,21.45762],"Tt4O":[18.69166,21.31798]},"texture":2,"vertices":["X9Yi","Tt4O","QVfu","pYCB"]},"MNwVmemf":{"uv":{"QVfu":[18.18619,21.45762],"Tt4O":[18.69166,21.31798],"fbdX":[17.96683,20.43263],"z8dF":[18.35374,20.32574]},"texture":2,"vertices":["Tt4O","z8dF","fbdX","QVfu"]},"pTwZPoDz":{"uv":{"fbdX":[17.96683,20.43263],"z8dF":[18.35374,20.32574],"ZMjx":[17.75085,19.4067],"6c8h":[18.01245,19.33443]},"texture":2,"vertices":["z8dF","6c8h","ZMjx","fbdX"]},"FJgjtVLT":{"uv":{"ZMjx":[17.75085,19.4067],"6c8h":[18.01245,19.33443],"UUcD":[17.53709,18.38016],"ZGtB":[17.66895,18.34373]},"texture":2,"vertices":["6c8h","ZGtB","UUcD","ZMjx"]},"G5bYif2m":{"uv":{"XlmK":[17.32438,17.35332],"ZGtB":[17.66895,18.34373],"UUcD":[17.53709,18.38016]},"texture":2,"vertices":["UUcD","ZGtB","XlmK"]},"UaDtILvY":{"uv":{"dzS6":[6.32489,6.2813],"AUrI":[6.38446,5.23436],"1ITj":[6.52024,5.25103]},"texture":2,"vertices":["1ITj","AUrI","dzS6"]},"GxMuPvKp":{"uv":{"AUrI":[6.45554,5.20654],"1ITj":[6.58996,5.23199],"BHsq":[6.5841,4.16589],"WjOG":[6.85076,4.21638]},"texture":2,"vertices":["1ITj","WjOG","BHsq","AUrI"]},"rF1YsDK8":{"uv":{"BHsq":[6.5841,4.16589],"WjOG":[6.85076,4.21638],"SklY":[6.71491,3.12566],"dDSA":[7.1093,3.20034]},"texture":2,"vertices":["WjOG","dDSA","SklY","BHsq"]},"lsOe2sgW":{"uv":{"SklY":[6.71491,3.12566],"dDSA":[7.1093,3.20034],"Vvco":[6.84917,2.08609],"eRfm":[7.36441,2.18366]},"texture":2,"vertices":["dDSA","eRfm","Vvco","SklY"]},"F9OVW2r3":{"uv":{"Vvco":[6.84917,2.08609],"eRfm":[7.36441,2.18366],"K9YG":[6.98784,1.04736],"Er0W":[7.6151,1.16613]},"texture":2,"vertices":["eRfm","Er0W","K9YG","Vvco"]},"NdGDI8PS":{"uv":{"K9YG":[6.98784,1.04736],"Er0W":[7.6151,1.16613],"qcjr":[7.13182,0.00963],"PWvD":[7.86047,0.1476]},"texture":2,"vertices":["Er0W","PWvD","qcjr","K9YG"]},"4Vo7crsQ":{"uv":{"qcjr":[42.82689,23.20373],"PWvD":[42.08529,23.20373],"SiUx":[42.87209,24.25013],"dEDz":[42.04009,24.25013]},"texture":2,"vertices":["PWvD","dEDz","SiUx","qcjr"]},"naQm6gCA":{"uv":{"SiUx":[17.1984,30.16411],"dEDz":[16.36643,30.1711],"qMYt":[17.2453,31.21015],"JEJX":[16.33714,31.21779]},"texture":2,"vertices":["dEDz","JEJX","qMYt","SiUx"]},"a71kdfdE":{"uv":{"qMYt":[17.2453,31.21015],"JEJX":[16.33714,31.21779],"4cDn":[17.2844,32.25626],"7ct9":[16.31564,32.26441]},"texture":2,"vertices":["JEJX","7ct9","4cDn","qMYt"]},"MdSz9VTz":{"uv":{"4cDn":[17.2844,32.25626],"7ct9":[16.31564,32.26441],"tQGS":[17.3153,33.30244],"8sRT":[16.30234,33.31095]},"texture":2,"vertices":["7ct9","8sRT","tQGS","4cDn"]},"lleumDcN":{"uv":{"tQGS":[17.3153,33.30244],"8sRT":[16.30234,33.31095],"8DGA":[17.3375,34.34869],"DnAa":[16.29774,34.35743]},"texture":2,"vertices":["8sRT","DnAa","8DGA","tQGS"]},"29uzsnls":{"uv":{"8DGA":[17.3375,34.34869],"DnAa":[16.29774,34.35743],"Ccev":[17.3507,35.39501],"Zpr9":[16.30214,35.40383]},"texture":2,"vertices":["DnAa","Zpr9","Ccev","8DGA"]},"hvAIWTjy":{"uv":{"Ccev":[17.3507,35.39501],"Zpr9":[16.30214,35.40383],"Xlsp":[17.3551,36.44141],"8HL2":[16.31534,36.45016]},"texture":2,"vertices":["Zpr9","8HL2","Xlsp","Ccev"]},"D9IOFwQT":{"uv":{"Xlsp":[31.2301,14.0836],"8HL2":[30.19064,14.11022],"V7Fq":[31.2435,15.13],"djuW":[30.23083,15.15594]},"texture":2,"vertices":["8HL2","djuW","V7Fq","Xlsp"]},"15iLKSWM":{"uv":{"V7Fq":[31.2435,15.13],"djuW":[30.23083,15.15594],"6mvS":[31.2482,16.17662],"5OCP":[30.27972,16.20143]},"texture":2,"vertices":["djuW","5OCP","6mvS","V7Fq"]},"Yu6UAjp1":{"uv":{"6mvS":[31.2482,16.17662],"5OCP":[30.27972,16.20143],"gI2R":[31.24471,17.22345],"oCzm":[30.33681,17.24671]},"texture":2,"vertices":["5OCP","oCzm","gI2R","6mvS"]},"cQvwqsGi":{"uv":{"gI2R":[31.24471,17.22345],"oCzm":[30.33681,17.24671],"mj3Z":[31.23342,18.27049],"6JK9":[30.40169,18.29179]},"texture":2,"vertices":["oCzm","6JK9","mj3Z","gI2R"]},"eROxFlft":{"uv":{"mj3Z":[31.23342,18.27049],"6JK9":[30.40169,18.29179],"rDDX":[31.21503,19.3177],"mIsF":[30.47367,19.33669]},"texture":2,"vertices":["6JK9","mIsF","rDDX","mj3Z"]},"G05v0R56":{"uv":{"rDDX":[17.82695,23.62255],"mIsF":[18.56139,23.51981],"E1Gc":[17.73308,22.57909],"pYCB":[18.36533,22.49065]},"texture":2,"vertices":["mIsF","pYCB","E1Gc","rDDX"]},"M6JpqsRT":{"uv":{"E1Gc":[17.73308,22.57909],"pYCB":[18.36533,22.49065],"iSHi":[17.64457,21.53489],"QVfu":[18.16391,21.46224]},"texture":2,"vertices":["pYCB","QVfu","iSHi","E1Gc"]},"eyup5rTo":{"uv":{"iSHi":[17.64457,21.53489],"QVfu":[18.16391,21.46224],"EwKL":[17.56051,20.49006],"fbdX":[17.95804,20.43445]},"texture":2,"vertices":["QVfu","fbdX","EwKL","iSHi"]},"LwgMgVfa":{"uv":{"EwKL":[17.56051,20.49006],"fbdX":[17.95804,20.43445],"Fxvo":[17.47992,19.44474],"ZMjx":[17.7487,19.40714]},"texture":2,"vertices":["fbdX","ZMjx","Fxvo","EwKL"]},"mDOL3W5J":{"uv":{"Fxvo":[17.47992,19.44474],"ZMjx":[17.7487,19.40714],"hi0e":[17.40161,18.39911],"UUcD":[17.53709,18.38016]},"texture":2,"vertices":["ZMjx","UUcD","hi0e","Fxvo"]},"QVTahEB8":{"uv":{"XlmK":[17.32438,17.35332],"UUcD":[17.53709,18.38016],"hi0e":[17.40161,18.39911]},"texture":2,"vertices":["hi0e","UUcD","XlmK"]},"ouh4pj1L":{"uv":{"dzS6":[6.32489,6.2813],"FCnd":[6.24766,5.23552],"AUrI":[6.38446,5.23436]},"texture":2,"vertices":["AUrI","FCnd","dzS6"]},"mUtv6cAK":{"uv":{"FCnd":[6.24766,5.23552],"AUrI":[6.38446,5.23436],"eUcZ":[6.17154,4.18972],"BHsq":[6.44293,4.18743]},"texture":2,"vertices":["AUrI","BHsq","eUcZ","FCnd"]},"tkio61Rf":{"uv":{"eUcZ":[6.17154,4.18972],"BHsq":[6.44293,4.18743],"8SQa":[6.09771,3.14391],"SklY":[6.4991,3.14052]},"texture":2,"vertices":["BHsq","SklY","8SQa","eUcZ"]},"ZIX7xn05":{"uv":{"8SQa":[6.09771,3.14391],"SklY":[6.4991,3.14052],"shRT":[6.02739,2.09807],"Vvco":[6.55177,2.09364]},"texture":2,"vertices":["SklY","Vvco","shRT","8SQa"]},"4lJ2pDhS":{"uv":{"shRT":[6.02739,2.09807],"Vvco":[6.55177,2.09364],"wXX2":[5.96157,1.05218],"K9YG":[6.59994,1.0468]},"texture":2,"vertices":["Vvco","K9YG","wXX2","shRT"]},"a9FK1STS":{"uv":{"wXX2":[5.96157,1.05218],"K9YG":[6.59994,1.0468],"Yp9W":[5.90114,0.00626],"qcjr":[6.64271,0]},"texture":2,"vertices":["K9YG","qcjr","Yp9W","wXX2"]},"weERCFfR":{"uv":{"Yp9W":[18.35142,29.11492],"qcjr":[17.60992,29.10245],"Gdcn":[18.37901,30.16193],"SiUx":[17.54713,30.14794]},"texture":2,"vertices":["qcjr","SiUx","Gdcn","Yp9W"]},"7xYQlBXh":{"uv":{"Gdcn":[18.37901,30.16193],"SiUx":[17.54713,30.14794],"RJ71":[18.39951,31.20882],"qMYt":[17.49143,31.19355]},"texture":2,"vertices":["SiUx","qMYt","RJ71","Gdcn"]},"Aro3CBVH":{"uv":{"RJ71":[18.39951,31.20882],"qMYt":[17.49143,31.19355],"NQfv":[18.4122,32.25559],"4cDn":[17.44354,32.23929]},"texture":2,"vertices":["qMYt","4cDn","NQfv","RJ71"]},"SL8wzNMv":{"uv":{"NQfv":[18.4122,32.25559],"4cDn":[17.44354,32.23929],"d34b":[18.4167,33.30221],"tQGS":[17.40384,33.28517]},"texture":2,"vertices":["4cDn","tQGS","d34b","NQfv"]},"vRtLZCYS":{"uv":{"d34b":[18.4167,33.30221],"tQGS":[17.40384,33.28517],"KknJ":[18.4125,34.34869],"8DGA":[17.37285,34.3312]},"texture":2,"vertices":["tQGS","8DGA","KknJ","d34b"]},"XuHGCnBT":{"uv":{"KknJ":[18.4125,34.34869],"8DGA":[17.37285,34.3312],"NNfL":[18.3993,35.39501],"Ccev":[17.35085,35.37738]},"texture":2,"vertices":["8DGA","Ccev","NNfL","KknJ"]},"0h5d87iv":{"uv":{"NNfL":[18.3993,35.39501],"Ccev":[17.3507,35.39501],"LFWo":[18.3949,36.44141],"Xlsp":[17.3551,36.44141]},"texture":2,"vertices":["Ccev","Xlsp","LFWo","NNfL"]},"GqJIpBaY":{"uv":{"LFWo":[32.2699,14.0836],"Xlsp":[31.2301,14.0836],"VKkl":[32.2565,15.13],"V7Fq":[31.2435,15.13]},"texture":2,"vertices":["Xlsp","V7Fq","VKkl","LFWo"]},"5DbD4YlE":{"uv":{"VKkl":[32.2565,15.13],"V7Fq":[31.24364,15.14684],"34tU":[32.2518,16.17662],"6mvS":[31.28313,16.19272]},"texture":2,"vertices":["V7Fq","6mvS","34tU","VKkl"]},"iKvHreOF":{"uv":{"34tU":[32.2518,16.17662],"6mvS":[31.28313,16.19272],"Kdxx":[32.2389,17.22338],"gI2R":[31.33082,17.23848]},"texture":2,"vertices":["6mvS","gI2R","Kdxx","34tU"]},"3CJerwWr":{"uv":{"Kdxx":[32.2389,17.22338],"gI2R":[31.33082,17.23848],"OtIy":[32.21819,18.27027],"mj3Z":[31.38631,18.2841]},"texture":2,"vertices":["gI2R","mj3Z","OtIy","Kdxx"]},"BHe0iQy0":{"uv":{"OtIy":[32.21819,18.27027],"mj3Z":[31.38631,18.2841],"FrWA":[32.1904,19.31727],"rDDX":[31.4489,19.3296]},"texture":2,"vertices":["mj3Z","rDDX","FrWA","OtIy"]},"8ObFm8U2":{"uv":{"FrWA":[32.1904,19.31727],"rDDX":[31.4489,19.3296],"ILnb":[32.1562,20.36439],"E1Gc":[31.51788,20.375]},"texture":2,"vertices":["rDDX","E1Gc","ILnb","FrWA"]},"wRkPuVLR":{"uv":{"ILnb":[17.04933,22.58783],"E1Gc":[17.6877,22.58244],"Sd05":[17.0975,21.54098],"iSHi":[17.62188,21.53656]},"texture":2,"vertices":["E1Gc","iSHi","Sd05","ILnb"]},"Qvn2MA7n":{"uv":{"Sd05":[17.0975,21.54098],"iSHi":[17.62188,21.53656],"vVEA":[17.15017,20.4941],"EwKL":[17.55155,20.49072]},"texture":2,"vertices":["iSHi","EwKL","vVEA","Sd05"]},"cpCggca7":{"uv":{"vVEA":[17.15017,20.4941],"EwKL":[17.55155,20.49072],"VdGI":[17.20634,19.44719],"Fxvo":[17.47773,19.4449]},"texture":2,"vertices":["EwKL","Fxvo","VdGI","vVEA"]},"wLWAAszG":{"uv":{"VdGI":[17.20634,19.44719],"Fxvo":[17.47773,19.4449],"3mNB":[17.26481,18.40026],"hi0e":[17.40161,18.39911]},"texture":2,"vertices":["Fxvo","hi0e","3mNB","VdGI"]},"BbihstZ4":{"uv":{"XlmK":[17.32438,17.35332],"hi0e":[17.40161,18.39911],"3mNB":[17.26481,18.40026]},"texture":2,"vertices":["3mNB","hi0e","XlmK"]}},"type":"mesh","uuid":"bf6f9e08-1882-cd5a-b65a-430063b11f84"}],"groups":[{"name":"root","uuid":"030ff1bd-2cfd-4248-b952-5a9f3c0f6836","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,0,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"Head","uuid":"62450b89-d51e-4e5b-ae9b-bce23e852201","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,4.745,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"Body","uuid":"d89dc57f-2487-4447-b640-56417100abf0","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,15.12,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"LeftArm","uuid":"2d2df11f-ffc2-49fe-87d7-93f91b771208","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-3.15,13.86,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"RightArm","uuid":"3a7eccac-cff5-46b7-b9b0-24228c115b51","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[3.15,13.86,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"LeftLeg","uuid":"527dc90c-4d83-4485-9b1e-545eb730375f","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-1.197,7.56,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"RightLeg","uuid":"db46d6ff-aac3-4dc3-a572-c259b7208cfe","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[1.197,7.56,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"hip2","uuid":"ead22b2f-c333-ac2c-77ac-3e0269572572","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-1.7,13.52,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false}],"outliner":[{"uuid":"030ff1bd-2cfd-4248-b952-5a9f3c0f6836","isOpen":true,"children":[{"uuid":"62450b89-d51e-4e5b-ae9b-bce23e852201","isOpen":true,"children":["bf6f9e08-1882-cd5a-b65a-430063b11f84"]},{"uuid":"d89dc57f-2487-4447-b640-56417100abf0","isOpen":true,"children":[]},{"uuid":"2d2df11f-ffc2-49fe-87d7-93f91b771208","isOpen":true,"children":[]},{"uuid":"3a7eccac-cff5-46b7-b9b0-24228c115b51","isOpen":true,"children":[]},{"uuid":"527dc90c-4d83-4485-9b1e-545eb730375f","isOpen":true,"children":[]},{"uuid":"db46d6ff-aac3-4dc3-a572-c259b7208cfe","isOpen":true,"children":[]}]},{"uuid":"ead22b2f-c333-ac2c-77ac-3e0269572572","isOpen":false,"children":[]}],"textures":[{"name":"Verity.png","relative_path":"Verity.png","folder":"block","namespace":"","id":"0","group":"","scope":0,"width":512,"height":512,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"eedd3261-5fdd-40a4-63eb-f7de5655ee45","source":"data:image/png;base64,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"},{"name":"VerityTalk.png","relative_path":"VerityTalk.png","folder":"block","namespace":"","id":"0","group":"","scope":0,"width":512,"height":512,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"9208d00a-36d4-2fac-e369-6692094ec23d","source":"data:image/png;base64,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"},{"name":"VerityDisturbing.png","relative_path":"VerityDisturbing.png","folder":"block","namespace":"","id":"0","group":"","scope":0,"width":512,"height":512,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"6da33269-0a2b-5641-fd72-e5bc8eb94522","source":"data:image/png;base64,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"},{"name":"VerityDisturbingTalk.png","relative_path":"VerityDisturbingTalk.png","folder":"block","namespace":"","id":"0","group":"","scope":0,"width":512,"height":512,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"7258cd8b-4a5b-792c-f13a-abf292bb26fa","source":"data:image/png;base64,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"},{"name":"VerityDisturbingYell.png","relative_path":"VerityDisturbingYell.png","folder":"block","namespace":"","id":"0","group":"","scope":0,"width":512,"height":512,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"bcbfa700-ecbe-da79-5705-8cee5daa2721","source":"data:image/png;base64,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"},{"name":"VerityBad.png","relative_path":"VerityBad.png","folder":"block","namespace":"","id":"0","group":"","scope":0,"width":512,"height":512,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"ce27bdab-354a-9205-3774-add63942aeb4","source":"data:image/png;base64,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"},{"name":"VerityVeryBad.png","relative_path":"VerityVeryBad.png","folder":"block","namespace":"","id":"0","group":"","scope":0,"width":512,"height":512,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"2191ea41-e23b-283a-828a-f6aa52ad713a","source":"data:image/png;base64,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"}],"animations":[{"uuid":"e5fcf687-1906-a7bb-ebc3-132ca97db7cb","name":"Talk","loop":"once","override":false,"length":0.33333,"snapping":24,"selected":true,"group_name":"","scope":0,"anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"030ff1bd-2cfd-4248-b952-5a9f3c0f6836":{"name":"root","type":"bone","rotation_global":false,"quaternion_interpolation":false},"62450b89-d51e-4e5b-ae9b-bce23e852201":{"name":"Head","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"b206d1af-3d5f-2396-fb6d-3e9b191cbe33","time":0,"color":-1,"interpolation":"catmullrom"},{"channel":"position","data_points":[{"x":"0","y":"3.05","z":"0"}],"uuid":"4ef72471-8a16-961a-f46c-17868cca5a8c","time":0.16667,"color":-1,"interpolation":"catmullrom"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"a80c2959-1b5b-66f1-168e-1cdd6ac55b87","time":0.33333,"color":-1,"interpolation":"catmullrom"},{"channel":"scale","data_points":[{"x":"1","y":"1","z":"1"}],"uuid":"af26b21f-e25a-3f86-83cb-49575c6b2f85","time":0,"color":-1,"uniform":true,"interpolation":"catmullrom"},{"channel":"scale","data_points":[{"x":"1","y":"1.7","z":"1"}],"uuid":"c3d42d80-df35-6276-498f-68a25a85dd21","time":0.16667,"color":-1,"uniform":false,"interpolation":"catmullrom"},{"channel":"scale","data_points":[{"x":"1","y":"1","z":"1"}],"uuid":"cbd89feb-121b-5c87-14db-036ca35d3e20","time":0.33333,"color":-1,"uniform":true,"interpolation":"catmullrom"}]},"d89dc57f-2487-4447-b640-56417100abf0":{"name":"Body","type":"bone","rotation_global":false,"quaternion_interpolation":false},"2d2df11f-ffc2-49fe-87d7-93f91b771208":{"name":"LeftArm","type":"bone","rotation_global":false,"quaternion_interpolation":false},"3a7eccac-cff5-46b7-b9b0-24228c115b51":{"name":"RightArm","type":"bone","rotation_global":false,"quaternion_interpolation":false},"527dc90c-4d83-4485-9b1e-545eb730375f":{"name":"LeftLeg","type":"bone","rotation_global":false,"quaternion_interpolation":false},"db46d6ff-aac3-4dc3-a572-c259b7208cfe":{"name":"RightLeg","type":"bone","rotation_global":false,"quaternion_interpolation":false},"ead22b2f-c333-ac2c-77ac-3e0269572572":{"name":"hip2","type":"bone","rotation_global":false,"quaternion_interpolation":false}}}]} \ No newline at end of file diff --git a/mod/src/main/resources/assets/lovisual/models/verity/verity.png b/mod/src/main/resources/assets/lovisual/models/verity/verity.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5b71d8d91ac5f548e9c2502d3994ca72dfea72 GIT binary patch literal 7779 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 R<6o#v8%)>VU*~xG{{Zqp^fdqg literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/verity/veritydisturbing.png b/mod/src/main/resources/assets/lovisual/models/verity/veritydisturbing.png new file mode 100644 index 0000000000000000000000000000000000000000..3f4ed23d3202d57ff54632dc90f061ac815b3551 GIT binary patch literal 7533 zcmZu$d0b8D|3CNYQa4MR7KUyiEmWhij_MjJO-TwB>6R@^lopdp_huQ(G|JLqNcTH3 zeDQTNXi>S1L8y_b$dYQZ6h+cd((-#h=Q+Rs&dVPh&v`$e=l$89&->hc-d=9Q#G}Lv z!whquKhK9@g!reB(HxAw{*A5aVHh38ecqhKv4XZo?psGc9;xAdz4c7ekop1ZV(o=j zMl4I!*k}It>dr3(PB+c9R`(}tF})XZWZ+}}+Yj%4N~%V-n+0bUe_>CZQm)@zQUSgb>crt}9nDb-o>=$ditLpj6(JqK*n=yqyt4Pa~hY>YV=tj(_O7)xP` z0gJx4l7n>u7G>H_txW)ILans{g%!hEvEBzK3iAdm;=kru`USn6{Y#r#>kPtO))u^q z?Q|Au2t`3|OPQe2g)0{&wVIa2%T6@~RXW8zJR0xp+!^<LohEB%sRe$FH4n!GTu-ZrDW zymf;tqA+lO#iHvuTbDNLOLA8Px2B0pms-_M9v9KKvr9d2tz>)uS>5+N=S!N$7KWBP zI5n5_2ek$)f3;NeDYf+Dh^8{t$&=6S&FC!q7}x&x_@$`hj?FEd&)gK! z5lL?=7c+Uw3nR^v2714I*!m^Tp!L(9&QE=R$JEw_*9NL(a=Xtlj-8)Aw$(kIn%|ys zq2%SYM0xbjwOTs;w`(w+8r=}0%8%&@1_I!-5yjJq5CBXF33VC95 z7GBPj1uqnef>Y8rj?=gxA0IAr6J{57J@34CJgTUxr|ZtPPI(M_EDmmXBrbKb^P@>S0cADep``{5dfQ(rrfp=DBMmx&;2*rt zocI`-*^gXFboha$*lW1vwVx$hemUA--BB@LEs7e!!ZMN2nF&d^CXx(}PFjU>T($X~ zIi3VUUu{dqS5^6*R#wC}YGK6Ud)wKf3tlM@1vkAk$)Z(!pxKW(@U-wSYr)e-$#@pc z+DVR#lN`lKOdPvt*1F>)?na?uq?YCz&B%}mW;8c%CQlOkQwpK|%O^t@(4G;Bo)Ic~ zwvcTn76#soMc^+7wZKQRqA>wAUi=?@norTlr)V1od+L)Tw^hs$@94ploF~YIh1{Az z$xQ*dDF?jFC^@tt-~W~8QgYtbYN7Y{RWm6$bCCOWjY%3MclV_qb2nhtK1yyJ$X&AD zN&ANMPOn(%z97^^E3ki?{Ao|j&c|_m>8+bXd%WPzaX6Xo)UJ8jb^SBCT#eTps2_e} zp~OuY<|9&`KV5BTRM7wTn8{6h9e!TBdaO|6n%I(&EhzquW&ESQrDLklds)r4a&dC6 z?8&&wytX0V*$WRNCWr0rceBTqcsrdGde_(N(-EFHEaRIgjosP1tN?moyQg&>bYmWHJMExI7ToszKqUd)T+$z2JF2O5y%E=sTA zBISW|zQo&#()(a>zx8Xbt<|8>)EtVjW&LZ6wq_hV({&v6Zyfv^m*<7FhO7Prn?Eny z3g-Ol0RQ^dKBoTlhJWwhH2#VD_suIm=1tEmHkCAo;_yQY4d>F9Cw&Y5ZVEv&AQl8j z9zn*+@ickPWXl9+!rQdymNT$rL7MSiy5+JLe#|n8eQKU?}+)S$`2~J8%4>6$T)*)Bdg}!yC=8R!3bBXaT&Kwvl z+YoO^or3$wc(v{=_Q=smc`%n(f5MeURR`w$cbakLVqoq{K{MeBb}%PM57yw!f!(_B zcl%g#$|8mE{&vw|Zp*RQa_pNE?(CMckPul$jUD90RNMQwH1C%^qoI@f2}DX8^&VP? zQWbn@x2=*CgFrY2zC6%9mMgZt4>n9+o8wVJM>AUAo4NXTJXcWvR;ZYNYr5EqmE3oi z3R*PUFLK7F!&q%YHJc|=BN)>z+QSt_JB+mti=`J*i$uvpOS|S%YAvAFq8_AAz5Gfj zmPSR67*B(vi-U{{`(r4jeG#;c>z-3@1t+7C7{}X-STC=$Rx;nb{A5qJG@hUq+TXRP zn8Uhc6jE>4MaTU#IJeO5k}qi=rsmedoWq6@q`@H<4ia;l{+vY39fUc}C#yJf=V8wO zi#=`@tgbVMxsXpfoVm#`_r$egE;XkKbE%FyICHqblk@fUX;9z5T+GT5T;O!k)5dMS z=}FD~t`K^gJmLapzcx`6Tv3wA9$ItpNN?ushgrwzmagdY$yZIH=$8AjrAwe2*If&c z3tN6zHH92Z;*HznjB9H!cgmSK<%g{mH1({}@6v+Da1+@oH0)dTDX$4vg>)oBCq6fq zcGuv4LA+)36jPS?8H8@JG-f<`$k9$l=#1rV79?5%;Z5XFQ_gTMbSChnL)e{UN-h`V zjBB=#hg4g8H;_Bvc=QnAqiFzg`y*#1Q*vt&o{HbCqUimw1LWp-y3y({oegr^wyyD^ ze2*Tjf@e6%<|)(J;9o5j<0K>VEC;c$M`*xp8c{PT?EFEQz<*VW4~4A&%+}V3 zOFe7AmQ1r6LSbfrl}1`|u)~0bW*nlhzW`fnZN%~Z95IFzv(|WW%G63^1H{!VMC*1O__1Qzl z;*iD6hiM$_C}2@49|}7SnD5wd?vQ5*x9K)U6o%rT{YMAe-gC6i9|P=%{6iGB2e7%L z!Z~Yq3AcQk(G-S5&Q^3x;jCo=7O$?-U1uBdxw+)CgJUX_)CV*>rM;im*!T41ouYbk z`;^i*hpm}&;r>oEGu$vC?rfSsGsE9mEzIpdFo71J3|EHT_#iGvccJB8PhUfqvaz&K zlE_UyXr0nqCr;5NIf_NTrF%E6KOdB>)v7^doFy_ZoUL ziN4)Qbm8sKY{fWfkm}O0OVv~|<2SEZOX%+fqRAN&m-LiWMDKQ8Q4RZ= zt&-U#XKrAKm0p!@NEAt8IwRREy{r)GlqCLxVgUkyyZx->1&f%ZWHjt#(QIvuM@b#Z zxBHd^>IRDK;yEMId0z`3gGyVU2RnoQ2c4;<=_Z;3OvJ%NpT2}Gw0S@r+-O9~|FsY- z{$CM8glPs|y$x&gjZz2RE)cx8B7qVJldw}`l?&M^Pw_AA=*F{+tb?GgEtwE)BjO)y zHGrWvaaQ+qHktOq$G<+DJc$j=3pHMxu7zQZbnjGfyd1WOh!)qsh%%(f+#cRK>`|yK|0{ZFAn_`a^Jh#X8B z?2e)C&K0o>84U!VW$>|TS1}bJhKPk>;Mw_HG_L^mC@*5WzNF_M0UK!}OQ?>~0!` znE-Zli5TN6fpx)J{N+GeY=*jk1>_iWux!98%O6mf7GV3Pisx`JSc|_I$Z#3k_J}Wo;7cC0N6PpMIvbzb zL%`cnN_=XM7*oL*kJ=-~>S2se?Gb7S9G}`F)W#tz`P3e~HDHV?<5PRs(s@5}n@{Z_ zI4Sr(!>9IGbKuRV_J}!unB!A>#N011$EWs)xrs2xqxM*H=w^Is55AOpqTu<|9@!Gz zl27dsKW{;L@u@v>O2|n*wMPP8hS`lz?GfTFAkL@ukPM~>9iQ4GKD9^44F@?s zwFh#Q7^V5t9wE04iO#3?2)V-`$D{TLxn^9Jd}@!73j;YmwFh$97)tom9!n09<5PQt zoEOOPsXamtk>gW)EICAuPwf$Mmq3n3?Xlz#IX<;V$hCnSpV}kj5IH`zM@}*lZst>a zfXU|K8#0gDBd{fa@u@umgGAv|djysS7@yiBFb}|Z)EZz;k8qAV0XrQrbGK(=#Wv3r^`Q=d$1GKHEh_R+slo&omeW)^1!GCqV)!hsSs1j z4Q*yV?oz#cTL&`f+yJ7(RKT!Pd^Rqk)$dkpAj6C%=9TNtOp`u4uAEf}Q?G6-B+5my z48IBnsqq5^$|&1L$-Hg#$wv oW?*1?qwQ<_XgZiEq(O|~y58k~tZsA zsXWv)_4CUP>n#$cbj~ljCX?77yLSBdqP(SBw@yWR-~RYk$Ho+X+R6!p`eGBYSyZ$) z_k5D06aVSStuqjtNTf=sN^AM3LzrzBMZUOLCxJ*3TJzkLm@aDlKUpY?t=jhSV@xo# z<-A^4CX; z908N>)ex%cqvkdn%VkV82Bu3}i|MR3D}^RQe(7yUM)0c%*&wRPh$|*vN~sbir=Pns zQ#4GMeqYV2wC{yR+V_1echMQv*UshYPevv1lXq}ba}I8c-tlwttJwfq(e~B+h}sIs zDqdLZq%v#BtZzl7Qker}qZjc=b{GiR$a!a( zYz<`j2{S2e4`h1+EVfbELdX^xeo|4IEo82ZSbJYT&fym9xO_y78xoVq#(c#6> z=Kha1>WgKL*$u5mTDJjnyCdpc>6qx2yxONJ zn)SIQx@f=2O066bkvApP9oIH*YW)-uc_3A@cV61HAF39+W#ts=bWIZJqNTCzkIj|s zKA8(-HDfzA#8g?gELlD_xy9N)>#5?-!|0t~3j-6PABHwOtqQqaFs6Qe-58;MB<8I0 zo&H(6=*y6TG1d#-|M&LoXB8K_ zMzmA4K;U|`wz5_fHg-=-O6r!eYuj@!gr)ZMYtntxw1kDM?JreoXGjHkQ=|Gfj<0DB zSljUF`kCu)MVgkkg-Z_2i{oOaigxy#FL14^4d#nI8x@^>?Yk{}ELX-J!|FMMu$9$A>TDx9i|0X_G&IyR+XQ~7of~u&B;cMG$8Ye zT^VZ+oc-E*8;Uamu4~y@hLZz#F!d6x=_KHi0u(_Mmv_)#kT>x428ufZ+_Sq@2PiHR zxXd5ru@pA|xZ%zQh$g|A0%yAIfuzyBrad7+b1t|N_0k}Rj0x3+EaAJy@y zFf1#iVHpZ-lDVy-zepW_Y|eQ7u(1W2SGuz+UOh^QPQCtBUtDUV=1PAWoc6X~cDpt# z!K137a@DBn=10Gt-7YrS@1wqd*+MyM&x78L6Kc>o2c&+E1M02FT-jW=%GknFINo6J zu-K!*T1#*4Pha`(bi#cxVV8jhBqEsb9!z-8!3TY4e2~RN<3ESc_^3lSh}5Uk{^@(mbT^_7|id37$dokcT|9Dy{f-SRwlNC@nvYg`5fqT8kYC8b{R|ni@IbU;P zV>{qRSZ*b8Lli54tGx1nt_3|*nO@iHyJ_cCqfe`g&i1559S&T0-v|lC1;M+ZBca_W zZa;93q*nZHS0So|ca^SHTc~#^1mmB&ZY8S*I3M7ADw^pU(!-vn*X61g!}$Ss_`+d| za{|ukShxwp!MmW7%Lh|j9B?-!R-34ImGG`|ZPgBn>kZtHPFvZMeE{5p=glOv0-+vi zM9=tgcZORJTw#7sKA6(g0+ITQ*oyoZ0=5<&tWB??%W|cqCpWU2wwZ3Ccd@_TEqR*B z@2~0%rSR_F>N;k!hiSSF<%F$LeGI1V)eo3yFihpTGHN;m(+=GYW^#eayIMz0i7*-J za+zs3Ob@H;scAb*Tb};GOrv0m7BU{D%t^t!m}SXRk5x2#?34)euzOD37tSV18eb*C&O4#dcC*jj>)c!;BzB& zN3eS5o}qDEq-rzLy5@wNQk)F9Nz3~(oE>l#LshgChMEF5uIe`$;~Reh_fxktS_(7Z zLI2WWtV;eOxEa^hP@Eocf^&lyt^l|wmxw+*&eKmSNcRZUW4Ix}J)flxw zh2ctp8_^?;wu?FN?o@##>$F}?zUs{oJDcSo$aJ$y%~<=?%sJ7ZBpj&&S;#R<*p97Bi)@gsfqBe zPrN0|-D85AQM!iW1i*1eZ5XZyxOFayB|I+N7hAY2h&Y3D>wc2E7xz{CP9-4!J8GF+7dzR082X;HIw&W80Q5f|=t{me1p~2xg5iWj+h04!D9GMI^<^r2^L( zuO=}Z$z9V2743;C;5@G6^NFkw)ggDKW5%Y@wUq{(cW4-EmyZc<=G{*eX9%4B!THR) zufVmrB#}Ali>;8Ku8H~lLaPw@AU~&_CVtPST#FpkNcP`mv)lpM4~nFXRE9WrjmY0m zJ|MdVne)^UREAjAaLLn|>@Z{_bCNdmvNxcu^3G>xZy%)R^w1f;ROTTNEgFz?n@#cz zWH|2ei4?y9ZPk!`viB0&ZODdst)a56kQwZm&SZsyt?LexvXzbK4Ab|DqH{3$HYM}DMcjsXY;bPHrGyN499Ni%{*Hs`fW4uTHu4`}!SwzY z$058a%9~qf$UD4H(p@T;qPkd0b`q1pYVKN$h~uw%5^P1gMyx)`hZDU=+#!sc$#2{D z+l-|DzO3cfT#!H{S=)BSj9d;S*r9ffioV4w=0Ray^qODJQ;?>9GyPW)H{+0rC6foc zVjge>3+QpvKE5lDN1wWTdHW0=@d1d>!=?PWH4ZNJDRCUiD-f}7*JU+spROx+gSN|2 z(ouCtSTmn*3Hm~eq&>1-hLJ)A{|razdN~?{mvR+Vv~8u)x34u=NO)h_yw}{JsQX>0&b3w zohY%lqOzENYHswNcWzXMgw2b}JIZ7wkOlmhN@+_WTRPePJ0?SUkG^Nu`1nh&ULv2f z`n=p0*OjD?ZMl^tsSVY-rcUG^@At^Qs(`Qm-+lWZ;rn7l{Qumy5lWKH5Xdg^!7eUt#M}gw@j{i#M(U-U;Q;Sh4wH$kVDXbjWKM^4e9!O1>l9j9G}CZpACw zew@zWu>AJ56?x+T&L6nU*ZK5KNrs0K*+|zCENg;$2wcd9da}p`LT_9Jym#I?!f&D=9k&-#T#Ox#4N1p;rQS^dZo<__^1yYx^G$yboKgap*-+dL;O?Yb zB{3ZO#a=Tdygp$OjLD&QS|t2e_f1MYnKM~c%2PTxIp z0>dGgwkv`sQd|LWZE;p)tAKY8;azaLoL&=*kvn5INeKW1_ba>`ndw7MNbbm;dqT-G z08kDwgMdpu{VNTo7C7zIh@lKO6DQ2TkfjuN8n`z>R%9O}ICvNQulx|c^u@-=o$<); zN>Cg;4&GfX@}Wl-cjV4}=k+5Dw;Z_K?2iYoH?#P{c{N>&ZhrXe{kk?Le z9B`a_IC;!LsZ=9(K`X*0^SHYx)7Nf712*Iscwqf+Gd(aL#`tA=+2m2KLiDl$?+hOz zH1>R#dyP1+tksNQChXWB_Gsw-@fr_?E3avOVkUIt4>=kaszSI{9@CJmmkfw2_lNtM z;ndU*rj43G%!DTT;iG00HNoqZi#6nMKvXyad`MBY^LdjRz)ii2gIK}F;H$$}#h;19 zLwk5~2NSDUQ6`}E#5;)sN%t2Bcfhk7HMy)P0}#4^(#v*yu%zA?#7=XE#<9Z|p|ed4 zr!QZ3JrTLM<@Pj=V|OA`WezHO)*Olx(m}5(RwW5=Cw^#`Kw1hr5YRmL@a~jZ6>$b@AOSItceMzl zJ#jC*`%|0D+GPOBKA`OSNs2?qQV-0!P6O7F4qSR-gd>mh^g`9gg)C#ZOyKH6RrItu z8{VDzOV0XN0v?RwNB0b*mA4n(P0LPZ{VM>AI-tDdABwX8&M0Fd!@UOXwOJ&6^Ya`B zoHBSS!xaJdHC{!Jo96ItTcVuht{k~5b+QShRk;P;T~Q~q+$oSdMd>X&S`J>o*`{4* z!E^x5Au*D6d{5-gHg1_6!zBP$ep*F3ByNrHZkv~!<*vLRa6<suTFH9$bqZ4j@&%ahl+p0 z^Yaa>6HJCUyDxBLn{EbV8M0Y)*@YvPuFBe3OonBbUFKjzm)0fFp3Zh;yO}-GV?V>2 z%*#ZQ?JX5NGOTrGvSi2}j6T6+p!vxh**1{@S;manbk$|MLl*nel*zE_vUM^Wy0Qj? zwr_&tH{XyQdyhH&d0Hbv5+!&Uz+`_wR=3~;mCb}KZL}MkWCmmz9zJx@HR41Zwebac z86qLUqRXxiwV?~E8)RFDx_zS|IrcN>4x==LB#L`M-ZhCV7qaGcC#Y;SWS1Ot-)N9! z%$!HpT=-;^$)@Lnm<($!`)j-neiF4&jgYM9r(-ljToA4#Eu|)Zm4xeA zHIe&4aYQTG4pCfbNSj?^GTr*u;aKaoIBF`6+bad16c_`)_n1ad`WuMKwt%swV!(>? zOX+%x!F*%fqgZBqVR}$-f||y{u~g%)?sUL=81Ve>x2Mwq0Um48h7ZDOf~nxZbliKu z(wTGqO_wTnd292{2!4;*Q5Xd literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/verity/veritydisturbingyell.png b/mod/src/main/resources/assets/lovisual/models/verity/veritydisturbingyell.png new file mode 100644 index 0000000000000000000000000000000000000000..f81398840d79649329eddad7f78c26e05ebf549a GIT binary patch literal 8209 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 VQMYn%9sY+|yg)oZcdq}={{!@CG;II? literal 0 HcmV?d00001 diff --git a/mod/src/main/resources/assets/lovisual/models/verity/veritytalk.png b/mod/src/main/resources/assets/lovisual/models/verity/veritytalk.png new file mode 100644 index 0000000000000000000000000000000000000000..efb6e96e665f8ef919cdc3ebb3ae0bd3fa31cfe5 GIT binary patch literal 7761 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 16 & 0xFF) <= 0xFF && (out >> 16 & 0xFF) >= Math.round(0xFF * 0.6f) - 1); + assertTrue((out >> 8 & 0xFF) <= 0x80); + } + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTintTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTintTest.java new file mode 100644 index 0000000..f8c30b3 --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/items/glint/GlintTintTest.java @@ -0,0 +1,44 @@ +package dev.loki.lovisual.features.module.modules.visuals.items.glint; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public final class GlintTintTest { + private static final int RED = 0xFF0000; + private static final int BLUE = 0x0000FF; + + @Test + void solidKeepsBrightnessPatternAndAlpha() { + assertEquals(0xFF00FF00, GlintTint.pixel(0xFF8040FF, 0f, 0f, GlintTint.SOLID, 0x00FF00, 0, 1.0f)); + assertEquals(0x80000000, GlintTint.pixel(0x80000000, 0f, 0f, GlintTint.SOLID, 0xFFFFFF, 0, 1.0f)); + assertEquals(0xFF800000, GlintTint.pixel(0xFF808080, 0f, 0f, GlintTint.SOLID, RED, 0, 1.0f)); + } + + @Test + void strengthBrightensButNeverOverflows() { + assertEquals(0xFF800000, GlintTint.pixel(0xFF404040, 0f, 0f, GlintTint.SOLID, RED, 0, 2.0f)); + assertEquals(0xFFFF0000, GlintTint.pixel(0xFFC0C0C0, 0f, 0f, GlintTint.SOLID, RED, 0, 3.0f)); + } + + @Test + void gradientBlendsAcrossTheTexture() { + int left = GlintTint.pixel(0xFFFFFFFF, 0.0f, 0.0f, GlintTint.GRADIENT, RED, BLUE, 1.0f); + int right = GlintTint.pixel(0xFFFFFFFF, 0.99f, 0.99f, GlintTint.GRADIENT, RED, BLUE, 1.0f); + assertEquals(0xFFFF0000, left); + assertEquals(true, (right & 0xFF) > 0xF0 && (right >> 16 & 0xFF) < 0x10); + } + + @Test + void rainbowChangesHueAlongTheTexture() { + int a = GlintTint.pixel(0xFFFFFFFF, 0.0f, 0.0f, GlintTint.RAINBOW, 0, 0, 1.0f); + int b = GlintTint.pixel(0xFFFFFFFF, 0.5f, 0.0f, GlintTint.RAINBOW, 0, 0, 1.0f); + assertEquals(0xFFFF0000, a); + assertEquals(true, a != b); + } + + @Test + void hiddenMakesTheTextureTransparent() { + assertEquals(0x00FFFFFF, GlintTint.pixel(0xFFFFFFFF, 0f, 0f, GlintTint.HIDDEN, RED, BLUE, 1.0f)); + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcLibClientTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcLibClientTest.java deleted file mode 100644 index c016a9c..0000000 --- a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcLibClientTest.java +++ /dev/null @@ -1,59 +0,0 @@ -package dev.loki.lovisual.features.module.modules.visuals.lyrics; - -import org.junit.jupiter.api.Test; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; -import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LrcLibClient; -import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; - -public final class LrcLibClientTest { - - @Test - void cleanTrackNameRemovesParenthetical() { - assertEquals("Song Title", LrcLibClient.cleanTrackName("Song Title (feat. Guest)")); - assertEquals("Song Title", LrcLibClient.cleanTrackName("Song Title (Remix)")); - assertEquals("", LrcLibClient.cleanTrackName("(Song)")); - } - - @Test - void cleanTrackNameRemovesBrackets() { - assertEquals("Song Title", LrcLibClient.cleanTrackName("Song Title [Deluxe]")); - assertEquals("", LrcLibClient.cleanTrackName("[Song]")); - } - - @Test - void cleanTrackNameHandlesNull() { - assertEquals("", LrcLibClient.cleanTrackName(null)); - } - - @Test - void cleanTrackNameHandlesEmpty() { - assertEquals("", LrcLibClient.cleanTrackName("")); - } - - @Test - void cleanTrackNameHandlesWhitespaceOnly() { - assertEquals("", LrcLibClient.cleanTrackName(" ")); - } - - @Test - void cleanTrackNameTrims() { - assertEquals("Song Title", LrcLibClient.cleanTrackName(" Song Title ")); - } - - @Test - void fetchLyricsAsyncReturnsEmptyForBlankTrack() { - var future = LrcLibClient.fetchLyricsAsync("", "Artist", false); - List result = future.join(); - assertTrue(result.isEmpty()); - } - - @Test - void fetchLyricsAsyncReturnsEmptyForNullTrack() { - var future = LrcLibClient.fetchLyricsAsync(null, "Artist", false); - List result = future.join(); - assertTrue(result.isEmpty()); - } -} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/SourceParsingTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/SourceParsingTest.java new file mode 100644 index 0000000..2d888e7 --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/source/SourceParsingTest.java @@ -0,0 +1,70 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.TrackQuery; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public final class SourceParsingTest { + private static final TrackQuery QUERY = new TrackQuery("Insomnia", "Nürnberg", 190); + + private static JsonObject hit(String json) { + return JsonParser.parseString(json).getAsJsonObject(); + } + + @Test + void syncedHitOutranksAnIdenticalPlainOne() { + double synced = LrcLibSource.scoreOf(hit("{\"trackName\":\"Insomnia\",\"artistName\":\"Nürnberg\",\"duration\":190,\"syncedLyrics\":\"[00:01.00] a\"}"), QUERY); + double plain = LrcLibSource.scoreOf(hit("{\"trackName\":\"Insomnia\",\"artistName\":\"Nürnberg\",\"duration\":190,\"plainLyrics\":\"a\"}"), QUERY); + assertTrue(synced > plain); + assertTrue(plain > 0.9); + } + + @Test + void instrumentalOrLyriclessHitsScoreZero() { + assertEquals(0.0, LrcLibSource.scoreOf(hit("{\"trackName\":\"Insomnia\",\"artistName\":\"Nürnberg\",\"instrumental\":true,\"plainLyrics\":\"a\"}"), QUERY)); + assertEquals(0.0, LrcLibSource.scoreOf(hit("{\"trackName\":\"Insomnia\",\"artistName\":\"Nürnberg\",\"duration\":190}"), QUERY)); + assertEquals(0.0, LrcLibSource.scoreOf(hit("{\"trackName\":\"Insomnia\",\"artistName\":\"Nürnberg\",\"syncedLyrics\":null}"), QUERY)); + } + + @Test + void searchUrlsStartWithTheFieldSearchAndEndWithTitleOnly() { + List urls = List.copyOf(LrcLibSource.searchUrls(QUERY)); + assertTrue(urls.get(0).contains("track_name=Insomnia") && urls.get(0).contains("artist_name=N%C3%BCrnberg")); + assertTrue(urls.get(urls.size() - 1).endsWith("search?track_name=Insomnia")); + assertEquals(3, urls.size(), "primary artist equals the full artist, so that variant collapses"); + } + + @Test + void neteaseSearchPicksTheClosestSong() { + String json = "{\"result\":{\"songs\":[" + + "{\"id\":1,\"name\":\"Insomnia\",\"dt\":420000,\"ar\":[{\"name\":\"Faithless\"}]}," + + "{\"id\":2,\"name\":\"Insomnia\",\"dt\":190500,\"ar\":[{\"name\":\"Nürnberg\"}]}]}}"; + assertEquals(2L, NeteaseSource.bestSongId(json, QUERY)); + } + + @Test + void neteaseSearchReturnsZeroForNoMatchOrGarbage() { + assertEquals(0L, NeteaseSource.bestSongId("{\"result\":{\"songs\":[{\"id\":9,\"name\":\"Other\",\"dt\":1,\"ar\":[]}]}}", QUERY)); + assertEquals(0L, NeteaseSource.bestSongId("not json", QUERY)); + assertEquals(0L, NeteaseSource.bestSongId("{\"result\":{}}", QUERY)); + } + + @Test + void neteaseCreditLinesAtTheStartAreStripped() { + List lines = List.of( + new LyricLine(0, "作词 : Someone"), + new LyricLine(0, "作曲 : Other"), + new LyricLine(15_000, "first real line: with a colon"), + new LyricLine(20_000, "second")); + List out = NeteaseSource.stripCredits(lines); + assertEquals(2, out.size()); + assertEquals("first real line: with a colon", out.get(0).text()); + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/LyricMatchTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/LyricMatchTest.java new file mode 100644 index 0000000..d5be7ef --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/LyricMatchTest.java @@ -0,0 +1,51 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.match; + +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.LyricMatch; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.TrackQuery; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public final class LyricMatchTest { + private static final TrackQuery QUERY = new TrackQuery("Insomnia", "Nürnberg", 190); + + @Test + void similarityIgnoresCaseAndPunctuation() { + assertEquals(1.0, LyricMatch.similarity("Hello, World", "hello world"), 1e-9); + assertEquals(0.85, LyricMatch.similarity("Insomnia", "Insomnia (live)"), 1e-9); + assertEquals(0.0, LyricMatch.similarity("abc", "xyz"), 1e-9); + assertEquals(0.0, LyricMatch.similarity("", "xyz"), 1e-9); + } + + @Test + void exactHitScoresAboveAcceptanceAndNearCertain() { + double score = LyricMatch.score("Insomnia", "Nürnberg", 190, QUERY); + assertTrue(score >= LyricMatch.CERTAIN, "score was " + score); + } + + @Test + void differentTitleIsRejectedOutright() { + assertEquals(0.0, LyricMatch.score("Completely Other", "Nürnberg", 190, QUERY), 1e-9); + } + + @Test + void sameTitleByAnotherArtistAndLengthFallsBelowAcceptance() { + double score = LyricMatch.score("Insomnia", "Faithless", 420, QUERY); + assertTrue(score < LyricMatch.ACCEPT, "score was " + score); + } + + @Test + void durationScoreFallsOffBetweenCloseAndFar() { + assertEquals(1.0, LyricMatch.durationScore(191, 190), 1e-9); + assertEquals(0.0, LyricMatch.durationScore(220, 190), 1e-9); + assertEquals(0.5, LyricMatch.durationScore(0, 190), 1e-9); + double mid = LyricMatch.durationScore(198, 190); + assertTrue(mid > 0.0 && mid < 1.0); + } + + @Test + void unknownArtistIsNeutral() { + assertEquals(0.5, LyricMatch.artistScore("Anyone", new TrackQuery("x", "", 0)), 1e-9); + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/PlainLyricTimerTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/PlainLyricTimerTest.java new file mode 100644 index 0000000..c1292e0 --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/PlainLyricTimerTest.java @@ -0,0 +1,46 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.match; + +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.PlainLyricTimer; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public final class PlainLyricTimerTest { + + @Test + void emptyWithoutTextOrDuration() { + assertTrue(PlainLyricTimer.estimate(null, 100).isEmpty()); + assertTrue(PlainLyricTimer.estimate("a\nb", 0).isEmpty()); + assertTrue(PlainLyricTimer.estimate("\n \n", 100).isEmpty()); + } + + @Test + void sectionMarkersAndBlankLinesAreDropped() { + List lines = PlainLyricTimer.estimate("[Chorus]\nfirst line here\n\nsecond line here", 200); + assertEquals(2, lines.size()); + assertEquals("first line here", lines.get(0).text()); + } + + @Test + void timelineStartsAfterTheIntroAndStaysInsideTheSong() { + List lines = PlainLyricTimer.estimate("one two three\nfour five six\nseven eight nine", 200); + assertEquals(3, lines.size()); + assertEquals(12_000, lines.get(0).timestampMs()); + for (int i = 1; i < lines.size(); i++) { + assertTrue(lines.get(i).timestampMs() > lines.get(i - 1).timestampMs()); + } + assertTrue(lines.get(2).timestampMs() < 200_000); + } + + @Test + void longerLinesGetMoreTime() { + List lines = PlainLyricTimer.estimate("short line!\nthis one is a much much longer line of lyrics\nend line!!", 300); + long first = lines.get(1).timestampMs() - lines.get(0).timestampMs(); + long second = lines.get(2).timestampMs() - lines.get(1).timestampMs(); + assertTrue(second > first); + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/TrackQueryTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/TrackQueryTest.java new file mode 100644 index 0000000..c668438 --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/match/TrackQueryTest.java @@ -0,0 +1,37 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.match; + +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.TrackQuery; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public final class TrackQueryTest { + + @Test + void cleanRemovesBracketsAndTrims() { + assertEquals("Song Title", TrackQuery.clean("Song Title (feat. Guest)")); + assertEquals("Song Title", TrackQuery.clean("Song Title [Deluxe]")); + assertEquals("Song Title", TrackQuery.clean(" Song Title ")); + assertEquals("", TrackQuery.clean("(Song)")); + assertEquals("", TrackQuery.clean(null)); + } + + @Test + void cleanTitleFallsBackToRawWhenEverythingWasDecoration() { + assertEquals("(Intro)", new TrackQuery("(Intro)", "A", 0).cleanTitle()); + } + + @Test + void primaryArtistIsTheFirstCredit() { + assertEquals("Nürnberg", new TrackQuery("x", "Nürnberg", 0).primaryArtist()); + assertEquals("A", new TrackQuery("x", "A, B & C", 0).primaryArtist()); + assertEquals("A", new TrackQuery("x", "A feat. B", 0).primaryArtist()); + assertEquals("", new TrackQuery("x", null, 0).primaryArtist()); + } + + @Test + void searchTextJoinsCleanedTitleAndArtist() { + assertEquals("Insomnia Nürnberg", new TrackQuery("Insomnia (Remix)", "Nürnberg", 190).searchText()); + assertEquals("Insomnia", new TrackQuery("Insomnia", "", 190).searchText()); + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/source/LyricSourcesTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/source/LyricSourcesTest.java new file mode 100644 index 0000000..e1fbf0a --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/source/LyricSourcesTest.java @@ -0,0 +1,32 @@ +package dev.loki.lovisual.features.module.modules.visuals.lyrics.source; + +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.match.TrackQuery; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.source.LyricsFinder; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public final class LyricSourcesTest { + + @Test + void blankTitleFindsNothingWithoutRetry() { + LyricsFinder.Result result = LyricsFinder.findAsync("", "Artist", 100, false).join(); + assertTrue(result.lines().isEmpty()); + assertTrue(!result.retryLater()); + } + + @Test + void nullTitleFindsNothing() { + List lines = LyricsFinder.findAsync(null, "Artist", 100, false).join().lines(); + assertTrue(lines.isEmpty()); + } + + @Test + void queryKeepsRawFieldsTrimmed() { + TrackQuery query = new TrackQuery(" T ", " A ", 5); + assertTrue(query.title().equals("T") && query.artist().equals("A")); + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModelsTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModelsTest.java new file mode 100644 index 0000000..8398c77 --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/models/CustomModelsTest.java @@ -0,0 +1,74 @@ +package dev.loki.lovisual.features.module.modules.visuals.models; + +import dev.loki.lovisual.features.module.modules.visuals.models.mesh.blockbench.BbModelParser; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public final class CustomModelsTest { + private static final String QUAD = "{\"resolution\":{\"width\":32,\"height\":16},\"elements\":[{" + + "\"origin\":[0,0,0],\"rotation\":[0,0,0],\"vertices\":{\"a\":[0,0,0],\"b\":[16,0,0],\"c\":[16,16,0],\"d\":[0,16,0]}," + + "\"faces\":{\"f\":{\"vertices\":[\"a\",\"b\",\"c\",\"d\"],\"uv\":{\"a\":[0,0],\"b\":[32,0],\"c\":[32,16],\"d\":[0,16]}}}}]}"; + + @Test + void faceNamesMapToTextureFilesWithNormalAsFallback() { + assertEquals("verity", CustomModels.faceFile("Normal")); + assertEquals("veritytalk", CustomModels.faceFile("Talking")); + assertEquals("verityverybad", CustomModels.faceFile("Very bad")); + assertEquals("verity", CustomModels.faceFile("nonsense")); + } + + @Test + void aQuadBecomesTwoTrianglesWithNormalisedUvAndScaledPositions() { + float[] out = BbModelParser.parse(QUAD, 0.5f); + assertEquals(2 * 3 * 8, out.length); + // first corner is "a" at the origin, second is "b" at x = 16 * 0.5 + assertEquals(0.0f, out[0], 1e-6f); + assertEquals(8.0f, out[8], 1e-5f); + // uv of "b" is 32/32 = 1 across, 0 down + assertEquals(1.0f, out[8 + 3], 1e-6f); + assertEquals(0.0f, out[8 + 4], 1e-6f); + // y grows downwards in entity model space, so "c" at y = 16 lands at -8 + assertEquals(-8.0f, out[16 + 1], 1e-5f); + } + + @Test + void normalsAreUnitLength() { + float[] out = BbModelParser.parse(QUAD, 1.0f); + for (int v = 0; v < out.length; v += 8) { + float length = (float) Math.sqrt(out[v + 5] * out[v + 5] + out[v + 6] * out[v + 6] + out[v + 7] * out[v + 7]); + assertEquals(1.0f, length, 1e-4f); + } + } + + @Test + void elementsWithoutFacesAreSkipped() { + assertEquals(0, BbModelParser.parse("{\"elements\":[{\"origin\":[0,0,0]}]}", 1.0f).length); + } + + @Test + void bundledVerityModelParsesToAMeshOfWholeTriangles() throws IOException { + try (InputStream stream = getClass().getResourceAsStream("/assets/lovisual/models/verity/verity.bbmodel")) { + assertNotNull(stream); + float[] mesh = BbModelParser.parse(new String(stream.readAllBytes(), StandardCharsets.UTF_8), 2.2f / 16.0f); + assertTrue(mesh.length > 0); + assertEquals(0, mesh.length % (3 * 8)); + } + } + + @Test + void bundledChickenPartsExist() { + for (String part : new String[]{"body", "head", "right_arm", "left_arm", "right_leg", "left_leg"}) { + for (int material = 0; material < 2; material++) { + assertNotNull(getClass().getResourceAsStream("/assets/lovisual/models/chicken/mesh_" + part + "_" + material + ".bin"), part); + } + } + assertNotNull(getClass().getResourceAsStream("/assets/lovisual/models/rabbit.png")); + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceMotionTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceMotionTest.java new file mode 100644 index 0000000..00dbde4 --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/placeanimation/PlaceMotionTest.java @@ -0,0 +1,75 @@ +package dev.loki.lovisual.features.module.modules.visuals.placeanimation; + +import net.minecraft.core.Direction; +import org.joml.Vector3f; +import org.junit.jupiter.api.Test; + +import java.util.EnumSet; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public final class PlaceMotionTest { + + @Test + void easeStartsAtZeroAndEndsAtOne() { + for (float base : new float[]{PlaceMotion.easeBase(0.9f), PlaceMotion.easeBase(-0.08f), PlaceMotion.easeBase(-0.7f)}) { + assertEquals(0.0f, PlaceMotion.ease(0.0f, base), 1e-5f); + assertEquals(1.0f, PlaceMotion.ease(1.0f, base), 1e-5f); + } + } + + @Test + void slideRemainingShrinksMonotonicallyToZero() { + assertEquals(1.0f, PlaceMotion.slideRemaining(0.0f), 1e-5f); + assertEquals(0.0f, PlaceMotion.slideRemaining(1.0f), 1e-5f); + float previous = 1.0f; + for (float p = 0.1f; p <= 1.0f; p += 0.1f) { + float now = PlaceMotion.slideRemaining(p); + assertTrue(now <= previous + 1e-6f); + previous = now; + } + } + + @Test + void tiltSettlesAndScaleLandsJustUnderFull() { + assertEquals(0.5f, PlaceMotion.tilt(0.0f, 0.5f), 1e-5f); + assertEquals(0.0f, PlaceMotion.tilt(1.0f, 0.5f), 1e-5f); + assertEquals(0.4f, PlaceMotion.scale(0.4f, 0.0f), 1e-5f); + assertEquals(PlaceMotion.FINAL_SCALE, PlaceMotion.scale(0.4f, 1.0f), 1e-5f); + } + + @Test + void progressIsCappedAtOne() { + assertEquals(0.0f, PlaceMotion.progress(0, 0.0f, 3), 1e-6f); + assertEquals(0.5f, PlaceMotion.progress(1, 1.0f, 3), 1e-6f); + assertEquals(1.0f, PlaceMotion.progress(10, 0.5f, 3), 1e-6f); + } + + @Test + void slideStartPointsBackTowardsThePlayerAndFlipsWithTheHand() { + // yaw 0 faces +Z, so "back" is -Z + Vector3f right = PlaceMotion.slideStart(0.0f, 0.0f, true, 1.0f); + Vector3f left = PlaceMotion.slideStart(0.0f, 0.0f, false, 1.0f); + assertTrue(right.z < 0.0f); + assertEquals(right.z, left.z, 1e-6f); + assertEquals(-right.x, left.x, 1e-6f); + assertEquals(0.0f, PlaceMotion.slideStart(0.0f, 0.0f, true, 0.0f).length(), 1e-6f); + } + + @Test + void slideStartDipsWhenLookingUpAndRisesWhenLookingDown() { + assertTrue(PlaceMotion.slideStart(0.0f, -30.0f, true, 1.0f).y < 0.0f); + assertTrue(PlaceMotion.slideStart(0.0f, 30.0f, true, 1.0f).y > 0.0f); + } + + @Test + void restrictZeroesOnlyComponentsPushingIntoBlockedSides() { + Vector3f offset = new Vector3f(1.0f, -1.0f, 1.0f); + Vector3f out = PlaceMotion.restrict(offset, EnumSet.of(Direction.EAST, Direction.UP)); + assertEquals(0.0f, out.x); + assertEquals(-1.0f, out.y); + assertEquals(1.0f, out.z); + assertEquals(1.0f, offset.x, "input is not modified"); + } +} diff --git a/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/totems/TotemCounterTest.java b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/totems/TotemCounterTest.java new file mode 100644 index 0000000..08bed75 --- /dev/null +++ b/mod/src/test/java/dev/loki/lovisual/features/module/modules/visuals/totems/TotemCounterTest.java @@ -0,0 +1,35 @@ +package dev.loki.lovisual.features.module.modules.visuals.totems; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +public final class TotemCounterTest { + + @Test + void labelShowsCount() { + assertEquals("x3", TotemCounter.label(3, true)); + assertEquals("x3", TotemCounter.label(3, false)); + } + + @Test + void zeroIsHiddenWhenDisabled() { + assertEquals("x0", TotemCounter.label(0, true)); + assertNull(TotemCounter.label(0, false)); + } + + @Test + void negativeCountNeverLeaksIntoLabel() { + assertEquals("x0", TotemCounter.label(-4, true)); + } + + @Test + void colorTurnsRedAtThreshold() { + assertEquals(0xFFFFFFFF, TotemCounter.color(3, 2)); + assertEquals(0xFFFF5555, TotemCounter.color(2, 2)); + assertEquals(0xFFFF5555, TotemCounter.color(0, 2)); + assertEquals(0xFFFFFFFF, TotemCounter.color(1, 0)); + assertEquals(0xFFFF5555, TotemCounter.color(0, 0)); + } +}