From 5d4b406f962940e7e73702f023c3b16ee0b29871 Mon Sep 17 00:00:00 2001 From: daret Date: Mon, 2 Nov 2020 22:27:42 +0100 Subject: [PATCH] display_modpack instead of signs_lib --- buildscripts/02_build_pa.sh | 2 +- mod_sources.txt | 8 +- mods/lib_api/modpack.conf | 10 +- mods/special/display_modpack/.gitmodules | 3 + mods/special/display_modpack/LICENSE.txt | 165 ++++++ mods/special/display_modpack/README.md | 115 ++++ mods/special/display_modpack/_config.yml | 1 + .../display_modpack/boards/LICENSE.txt | 166 ++++++ .../display_modpack/boards/LICENSE_FONT.txt | 4 + .../display_modpack/boards/copyright.txt | 2 + .../display_modpack/boards/depends.txt | 2 + .../display_modpack/boards/font_tinycurs.lua | 27 + mods/special/display_modpack/boards/init.lua | 139 +++++ .../display_modpack/boards/intllib.lua | 45 ++ .../display_modpack/boards/locale/fr.po | 40 ++ .../display_modpack/boards/locale/ms.po | 35 ++ .../boards/locale/template.pot | 34 ++ mods/special/display_modpack/boards/mod.conf | 3 + .../boards/textures/board_black_front.png | Bin 0 -> 392 bytes .../boards/textures/board_green_front.png | Bin 0 -> 232 bytes .../boards/textures/font_tinycurs_0000.png | Bin 0 -> 83 bytes .../boards/textures/font_tinycurs_0020.png | Bin 0 -> 82 bytes .../boards/textures/font_tinycurs_0021.png | Bin 0 -> 82 bytes .../boards/textures/font_tinycurs_0022.png | Bin 0 -> 77 bytes .../boards/textures/font_tinycurs_0023.png | Bin 0 -> 89 bytes .../boards/textures/font_tinycurs_0024.png | Bin 0 -> 111 bytes .../boards/textures/font_tinycurs_0025.png | Bin 0 -> 90 bytes .../boards/textures/font_tinycurs_0026.png | Bin 0 -> 105 bytes .../boards/textures/font_tinycurs_0027.png | Bin 0 -> 75 bytes .../boards/textures/font_tinycurs_0028.png | Bin 0 -> 81 bytes .../boards/textures/font_tinycurs_0029.png | Bin 0 -> 79 bytes .../boards/textures/font_tinycurs_002a.png | Bin 0 -> 81 bytes .../boards/textures/font_tinycurs_002b.png | Bin 0 -> 82 bytes .../boards/textures/font_tinycurs_002c.png | Bin 0 -> 72 bytes .../boards/textures/font_tinycurs_002d.png | Bin 0 -> 73 bytes .../boards/textures/font_tinycurs_002e.png | Bin 0 -> 71 bytes .../boards/textures/font_tinycurs_002f.png | Bin 0 -> 80 bytes .../boards/textures/font_tinycurs_0030.png | Bin 0 -> 90 bytes .../boards/textures/font_tinycurs_0031.png | Bin 0 -> 86 bytes .../boards/textures/font_tinycurs_0032.png | Bin 0 -> 94 bytes .../boards/textures/font_tinycurs_0033.png | Bin 0 -> 93 bytes .../boards/textures/font_tinycurs_0034.png | Bin 0 -> 97 bytes .../boards/textures/font_tinycurs_0035.png | Bin 0 -> 95 bytes .../boards/textures/font_tinycurs_0036.png | Bin 0 -> 92 bytes .../boards/textures/font_tinycurs_0037.png | Bin 0 -> 86 bytes .../boards/textures/font_tinycurs_0038.png | Bin 0 -> 94 bytes .../boards/textures/font_tinycurs_0039.png | Bin 0 -> 91 bytes .../boards/textures/font_tinycurs_003a.png | Bin 0 -> 76 bytes .../boards/textures/font_tinycurs_003b.png | Bin 0 -> 78 bytes .../boards/textures/font_tinycurs_003c.png | Bin 0 -> 75 bytes .../boards/textures/font_tinycurs_003d.png | Bin 0 -> 75 bytes .../boards/textures/font_tinycurs_003e.png | Bin 0 -> 75 bytes .../boards/textures/font_tinycurs_003f.png | Bin 0 -> 86 bytes .../boards/textures/font_tinycurs_0040.png | Bin 0 -> 102 bytes .../boards/textures/font_tinycurs_0041.png | Bin 0 -> 87 bytes .../boards/textures/font_tinycurs_0042.png | Bin 0 -> 86 bytes .../boards/textures/font_tinycurs_0043.png | Bin 0 -> 87 bytes .../boards/textures/font_tinycurs_0044.png | Bin 0 -> 88 bytes .../boards/textures/font_tinycurs_0045.png | Bin 0 -> 86 bytes .../boards/textures/font_tinycurs_0046.png | Bin 0 -> 88 bytes .../boards/textures/font_tinycurs_0047.png | Bin 0 -> 100 bytes .../boards/textures/font_tinycurs_0048.png | Bin 0 -> 95 bytes .../boards/textures/font_tinycurs_0049.png | Bin 0 -> 87 bytes .../boards/textures/font_tinycurs_004a.png | Bin 0 -> 107 bytes .../boards/textures/font_tinycurs_004b.png | Bin 0 -> 93 bytes .../boards/textures/font_tinycurs_004c.png | Bin 0 -> 89 bytes .../boards/textures/font_tinycurs_004d.png | Bin 0 -> 91 bytes .../boards/textures/font_tinycurs_004e.png | Bin 0 -> 88 bytes .../boards/textures/font_tinycurs_004f.png | Bin 0 -> 83 bytes .../boards/textures/font_tinycurs_0050.png | Bin 0 -> 87 bytes .../boards/textures/font_tinycurs_0051.png | Bin 0 -> 91 bytes .../boards/textures/font_tinycurs_0052.png | Bin 0 -> 89 bytes .../boards/textures/font_tinycurs_0053.png | Bin 0 -> 94 bytes .../boards/textures/font_tinycurs_0054.png | Bin 0 -> 86 bytes .../boards/textures/font_tinycurs_0055.png | Bin 0 -> 93 bytes .../boards/textures/font_tinycurs_0056.png | Bin 0 -> 92 bytes .../boards/textures/font_tinycurs_0057.png | Bin 0 -> 94 bytes .../boards/textures/font_tinycurs_0058.png | Bin 0 -> 95 bytes .../boards/textures/font_tinycurs_0059.png | Bin 0 -> 100 bytes .../boards/textures/font_tinycurs_005a.png | Bin 0 -> 103 bytes .../boards/textures/font_tinycurs_005b.png | Bin 0 -> 84 bytes .../boards/textures/font_tinycurs_005c.png | Bin 0 -> 75 bytes .../boards/textures/font_tinycurs_005d.png | Bin 0 -> 83 bytes .../boards/textures/font_tinycurs_005e.png | Bin 0 -> 81 bytes .../boards/textures/font_tinycurs_005f.png | Bin 0 -> 73 bytes .../boards/textures/font_tinycurs_0060.png | Bin 0 -> 79 bytes .../boards/textures/font_tinycurs_0061.png | Bin 0 -> 81 bytes .../boards/textures/font_tinycurs_0062.png | Bin 0 -> 85 bytes .../boards/textures/font_tinycurs_0063.png | Bin 0 -> 82 bytes .../boards/textures/font_tinycurs_0064.png | Bin 0 -> 83 bytes .../boards/textures/font_tinycurs_0065.png | Bin 0 -> 83 bytes .../boards/textures/font_tinycurs_0066.png | Bin 0 -> 85 bytes .../boards/textures/font_tinycurs_0067.png | Bin 0 -> 87 bytes .../boards/textures/font_tinycurs_0068.png | Bin 0 -> 84 bytes .../boards/textures/font_tinycurs_0069.png | Bin 0 -> 78 bytes .../boards/textures/font_tinycurs_006a.png | Bin 0 -> 84 bytes .../boards/textures/font_tinycurs_006b.png | Bin 0 -> 85 bytes .../boards/textures/font_tinycurs_006c.png | Bin 0 -> 79 bytes .../boards/textures/font_tinycurs_006d.png | Bin 0 -> 83 bytes .../boards/textures/font_tinycurs_006e.png | Bin 0 -> 83 bytes .../boards/textures/font_tinycurs_006f.png | Bin 0 -> 82 bytes .../boards/textures/font_tinycurs_0070.png | Bin 0 -> 92 bytes .../boards/textures/font_tinycurs_0071.png | Bin 0 -> 88 bytes .../boards/textures/font_tinycurs_0072.png | Bin 0 -> 81 bytes .../boards/textures/font_tinycurs_0073.png | Bin 0 -> 86 bytes .../boards/textures/font_tinycurs_0074.png | Bin 0 -> 82 bytes .../boards/textures/font_tinycurs_0075.png | Bin 0 -> 80 bytes .../boards/textures/font_tinycurs_0076.png | Bin 0 -> 83 bytes .../boards/textures/font_tinycurs_0077.png | Bin 0 -> 86 bytes .../boards/textures/font_tinycurs_0078.png | Bin 0 -> 87 bytes .../boards/textures/font_tinycurs_0079.png | Bin 0 -> 87 bytes .../boards/textures/font_tinycurs_007a.png | Bin 0 -> 87 bytes .../boards/textures/font_tinycurs_007b.png | Bin 0 -> 88 bytes .../boards/textures/font_tinycurs_007c.png | Bin 0 -> 78 bytes .../boards/textures/font_tinycurs_007d.png | Bin 0 -> 89 bytes .../boards/textures/font_tinycurs_007e.png | Bin 0 -> 80 bytes .../boards/textures/font_tinycurs_2018.png | Bin 0 -> 74 bytes .../boards/textures/font_tinycurs_2019.png | Bin 0 -> 74 bytes .../boards/textures/font_tinycurs_201c.png | Bin 0 -> 76 bytes .../boards/textures/font_tinycurs_201d.png | Bin 0 -> 76 bytes .../display_modpack/boards/tools/updatepo.sh | 25 + .../display_modpack/display_api/API.md | 92 +++ .../display_modpack/display_api/LICENSE.txt | 166 ++++++ .../display_modpack/display_api/README.md | 34 ++ .../display_modpack/display_api/copyright.txt | 5 + .../display_modpack/display_api/depends.txt | 0 .../display_api/deprecation.lua | 78 +++ .../display_modpack/display_api/display.lua | 325 +++++++++++ .../display_modpack/display_api/init.lua | 31 + .../display_modpack/display_api/mod.conf | 2 + mods/special/display_modpack/font_api/API.md | 201 +++++++ .../display_modpack/font_api/LICENSE.txt | 166 ++++++ .../display_modpack/font_api/README.md | 31 + .../display_modpack/font_api/copyright.txt | 3 + .../display_modpack/font_api/depends.txt | 1 + .../display_modpack/font_api/deprecation.lua | 59 ++ .../display_modpack/font_api/display_api.lua | 76 +++ .../display_modpack/font_api/doc/font.svg | 463 +++++++++++++++ .../display_modpack/font_api/doc/lines.svg | 544 ++++++++++++++++++ .../display_modpack/font_api/fallbacks.lua | 175 ++++++ .../special/display_modpack/font_api/font.lua | 274 +++++++++ .../display_modpack/font_api/fontform.lua | 166 ++++++ .../special/display_modpack/font_api/init.lua | 35 ++ .../special/display_modpack/font_api/mod.conf | 3 + .../display_modpack/font_api/registry.lua | 160 ++++++ .../display_modpack/font_api/settingtypes.txt | 1 + .../font_api/textures/font_api_center.png | Bin 0 -> 224 bytes .../font_api/textures/font_api_font.png | Bin 0 -> 238 bytes .../font_api/textures/font_api_left.png | Bin 0 -> 220 bytes .../font_api/textures/font_api_right.png | Bin 0 -> 222 bytes .../font_api/tools/make_font_lua.sh | 71 +++ .../font_api/tools/make_font_textures.sh | 111 ++++ .../display_modpack/font_metro/CC-BY-SA.txt | 60 ++ .../display_modpack/font_metro/LGPL.txt | 458 +++++++++++++++ .../display_modpack/font_metro/README.md | 19 + .../display_modpack/font_metro/copyright.txt | 3 + .../display_modpack/font_metro/depends.txt | 1 + .../display_modpack/font_metro/init.lua | 24 + .../display_modpack/font_metro/mod.conf | 3 + .../display_modpack/font_metro/screenshot.png | Bin 0 -> 1121 bytes .../font_metro/textures/font_metro_0000.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_0020.png | Bin 0 -> 82 bytes .../font_metro/textures/font_metro_0021.png | Bin 0 -> 78 bytes .../font_metro/textures/font_metro_0022.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_0023.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0024.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0025.png | Bin 0 -> 114 bytes .../font_metro/textures/font_metro_0026.png | Bin 0 -> 107 bytes .../font_metro/textures/font_metro_0027.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_0028.png | Bin 0 -> 86 bytes .../font_metro/textures/font_metro_0029.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_002a.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_002b.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_002c.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_002d.png | Bin 0 -> 74 bytes .../font_metro/textures/font_metro_002e.png | Bin 0 -> 74 bytes .../font_metro/textures/font_metro_002f.png | Bin 0 -> 78 bytes .../font_metro/textures/font_metro_0030.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_0031.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0032.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0033.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_0034.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_0035.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_0036.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_0037.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_0038.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_0039.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_003a.png | Bin 0 -> 76 bytes .../font_metro/textures/font_metro_003b.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_003c.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_003d.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_003e.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_003f.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_0040.png | Bin 0 -> 118 bytes .../font_metro/textures/font_metro_0041.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0042.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0043.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0044.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_0045.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0046.png | Bin 0 -> 86 bytes .../font_metro/textures/font_metro_0047.png | Bin 0 -> 109 bytes .../font_metro/textures/font_metro_0048.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_0049.png | Bin 0 -> 75 bytes .../font_metro/textures/font_metro_004a.png | Bin 0 -> 86 bytes .../font_metro/textures/font_metro_004b.png | Bin 0 -> 107 bytes .../font_metro/textures/font_metro_004c.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_004d.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_004e.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_004f.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_0050.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0051.png | Bin 0 -> 113 bytes .../font_metro/textures/font_metro_0052.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0053.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_0054.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_0055.png | Bin 0 -> 86 bytes .../font_metro/textures/font_metro_0056.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_0057.png | Bin 0 -> 107 bytes .../font_metro/textures/font_metro_0058.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_0059.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_005a.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_005b.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_005c.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_005d.png | Bin 0 -> 80 bytes .../font_metro/textures/font_metro_005e.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_005f.png | Bin 0 -> 74 bytes .../font_metro/textures/font_metro_0060.png | Bin 0 -> 75 bytes .../font_metro/textures/font_metro_0061.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_0062.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0063.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0064.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_0065.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0066.png | Bin 0 -> 88 bytes .../font_metro/textures/font_metro_0067.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0068.png | Bin 0 -> 89 bytes .../font_metro/textures/font_metro_0069.png | Bin 0 -> 80 bytes .../font_metro/textures/font_metro_006a.png | Bin 0 -> 86 bytes .../font_metro/textures/font_metro_006b.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_006c.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_006d.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_006e.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_006f.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0070.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0071.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_0072.png | Bin 0 -> 86 bytes .../font_metro/textures/font_metro_0073.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_0074.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_0075.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0076.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0077.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0078.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_0079.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_007a.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_007b.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_007c.png | Bin 0 -> 75 bytes .../font_metro/textures/font_metro_007d.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_007e.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_00a0.png | Bin 0 -> 71 bytes .../font_metro/textures/font_metro_00a1.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_00a2.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_00a3.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_00a4.png | Bin 0 -> 107 bytes .../font_metro/textures/font_metro_00a5.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00a6.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_00a7.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00a8.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_00a9.png | Bin 0 -> 117 bytes .../font_metro/textures/font_metro_00aa.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_00ab.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_00ac.png | Bin 0 -> 78 bytes .../font_metro/textures/font_metro_00ad.png | Bin 0 -> 74 bytes .../font_metro/textures/font_metro_00ae.png | Bin 0 -> 118 bytes .../font_metro/textures/font_metro_00af.png | Bin 0 -> 75 bytes .../font_metro/textures/font_metro_00b0.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_00b1.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_00b2.png | Bin 0 -> 88 bytes .../font_metro/textures/font_metro_00b3.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_00b4.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_00b5.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_00b6.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_00b7.png | Bin 0 -> 74 bytes .../font_metro/textures/font_metro_00b8.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_00b9.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_00ba.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_00bb.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_00bc.png | Bin 0 -> 115 bytes .../font_metro/textures/font_metro_00bd.png | Bin 0 -> 109 bytes .../font_metro/textures/font_metro_00be.png | Bin 0 -> 115 bytes .../font_metro/textures/font_metro_00bf.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_00c0.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_00c1.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_00c2.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00c3.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_00c4.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_00c5.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_00c6.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_00c7.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_00c8.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_00c9.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_00ca.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_00cb.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_00cc.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_00cd.png | Bin 0 -> 80 bytes .../font_metro/textures/font_metro_00ce.png | Bin 0 -> 82 bytes .../font_metro/textures/font_metro_00cf.png | Bin 0 -> 82 bytes .../font_metro/textures/font_metro_00d0.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_00d1.png | Bin 0 -> 109 bytes .../font_metro/textures/font_metro_00d2.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_00d3.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_00d4.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00d5.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_00d6.png | Bin 0 -> 110 bytes .../font_metro/textures/font_metro_00d7.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_00d8.png | Bin 0 -> 113 bytes .../font_metro/textures/font_metro_00d9.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_00da.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_00db.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_00dc.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_00dd.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_00de.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_00df.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_00e0.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_00e1.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_00e2.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00e3.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_00e4.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_00e5.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00e6.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_00e7.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_00e8.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00e9.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00ea.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_00eb.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_00ec.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_00ed.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_00ee.png | Bin 0 -> 80 bytes .../font_metro/textures/font_metro_00ef.png | Bin 0 -> 82 bytes .../font_metro/textures/font_metro_00f0.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_00f1.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_00f2.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_00f3.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_00f4.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_00f5.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_00f6.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_00f7.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_00f8.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_00f9.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_00fa.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_00fb.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_00fc.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_00fd.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_00fe.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_00ff.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0100.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_0101.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_0102.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_0103.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0104.png | Bin 0 -> 106 bytes .../font_metro/textures/font_metro_0105.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_0106.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_0107.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_0108.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_0109.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_010a.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_010b.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_010c.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_010d.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_010e.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_010f.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_0110.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_0111.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_0112.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0113.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_0114.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_0115.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_0116.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0117.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_0118.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_0119.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_011a.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_011b.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_011c.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_011d.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_011e.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_011f.png | Bin 0 -> 106 bytes .../font_metro/textures/font_metro_0120.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0121.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_0122.png | Bin 0 -> 112 bytes .../font_metro/textures/font_metro_0123.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_0124.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_0125.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0126.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_0127.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0128.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_0129.png | Bin 0 -> 82 bytes .../font_metro/textures/font_metro_012a.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_012b.png | Bin 0 -> 77 bytes .../font_metro/textures/font_metro_012c.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_012d.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_012e.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_012f.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_0130.png | Bin 0 -> 80 bytes .../font_metro/textures/font_metro_0131.png | Bin 0 -> 74 bytes .../font_metro/textures/font_metro_0132.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0133.png | Bin 0 -> 88 bytes .../font_metro/textures/font_metro_0134.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_0135.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0136.png | Bin 0 -> 110 bytes .../font_metro/textures/font_metro_0137.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_0138.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_0139.png | Bin 0 -> 86 bytes .../font_metro/textures/font_metro_013a.png | Bin 0 -> 82 bytes .../font_metro/textures/font_metro_013b.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_013c.png | Bin 0 -> 80 bytes .../font_metro/textures/font_metro_013d.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_013e.png | Bin 0 -> 86 bytes .../font_metro/textures/font_metro_013f.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_0140.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_0141.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0142.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_0143.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_0144.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_0145.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0146.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_0147.png | Bin 0 -> 108 bytes .../font_metro/textures/font_metro_0148.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0149.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_014a.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_014b.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_014c.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_014d.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_014e.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_014f.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_0150.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0151.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_0152.png | Bin 0 -> 111 bytes .../font_metro/textures/font_metro_0153.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0154.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0155.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_0156.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_0157.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0158.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0159.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_015a.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_015b.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_015c.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_015d.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_015e.png | Bin 0 -> 106 bytes .../font_metro/textures/font_metro_015f.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0160.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0161.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_0162.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_0163.png | Bin 0 -> 88 bytes .../font_metro/textures/font_metro_0164.png | Bin 0 -> 89 bytes .../font_metro/textures/font_metro_0165.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0166.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0167.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_0168.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0169.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_016a.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_016b.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_016c.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_016d.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_016e.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_016f.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0170.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_0171.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0172.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_0173.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_0174.png | Bin 0 -> 110 bytes .../font_metro/textures/font_metro_0175.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_0176.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0177.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_0178.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_0179.png | Bin 0 -> 89 bytes .../font_metro/textures/font_metro_017a.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_017b.png | Bin 0 -> 88 bytes .../font_metro/textures/font_metro_017c.png | Bin 0 -> 89 bytes .../font_metro/textures/font_metro_017d.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_017e.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_017f.png | Bin 0 -> 82 bytes .../font_metro/textures/font_metro_037e.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_0391.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0392.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0393.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_0394.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0395.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0396.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_0397.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_0398.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_0399.png | Bin 0 -> 75 bytes .../font_metro/textures/font_metro_039a.png | Bin 0 -> 107 bytes .../font_metro/textures/font_metro_039b.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_039c.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_039d.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_039e.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_039f.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_03a0.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_03a1.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_03a3.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_03a4.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_03a5.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_03a6.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_03a7.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_03a8.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_03a9.png | Bin 0 -> 108 bytes .../font_metro/textures/font_metro_03b1.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_03b2.png | Bin 0 -> 108 bytes .../font_metro/textures/font_metro_03b3.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_03b4.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_03b5.png | Bin 0 -> 89 bytes .../font_metro/textures/font_metro_03b6.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_03b7.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_03b8.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_03b9.png | Bin 0 -> 76 bytes .../font_metro/textures/font_metro_03ba.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_03bb.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_03bc.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_03bd.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_03be.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_03bf.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_03c0.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_03c1.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_03c2.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_03c3.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_03c4.png | Bin 0 -> 82 bytes .../font_metro/textures/font_metro_03c5.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_03c6.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_03c7.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_03c8.png | Bin 0 -> 92 bytes .../font_metro/textures/font_metro_03c9.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_0402.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0404.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0409.png | Bin 0 -> 108 bytes .../font_metro/textures/font_metro_040a.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_040b.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_040d.png | Bin 0 -> 106 bytes .../font_metro/textures/font_metro_040f.png | Bin 0 -> 85 bytes .../font_metro/textures/font_metro_0410.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0411.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0412.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0413.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_0414.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_0415.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_0416.png | Bin 0 -> 117 bytes .../font_metro/textures/font_metro_0417.png | Bin 0 -> 99 bytes .../font_metro/textures/font_metro_0418.png | Bin 0 -> 96 bytes .../font_metro/textures/font_metro_0419.png | Bin 0 -> 111 bytes .../font_metro/textures/font_metro_041a.png | Bin 0 -> 107 bytes .../font_metro/textures/font_metro_041b.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_041c.png | Bin 0 -> 104 bytes .../font_metro/textures/font_metro_041d.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_041e.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_041f.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_0420.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0421.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0422.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_0423.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_0424.png | Bin 0 -> 102 bytes .../font_metro/textures/font_metro_0425.png | Bin 0 -> 105 bytes .../font_metro/textures/font_metro_0426.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_0427.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0428.png | Bin 0 -> 83 bytes .../font_metro/textures/font_metro_0429.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_042a.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_042b.png | Bin 0 -> 97 bytes .../font_metro/textures/font_metro_042c.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_042d.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_042e.png | Bin 0 -> 116 bytes .../font_metro/textures/font_metro_042f.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0430.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_0431.png | Bin 0 -> 101 bytes .../font_metro/textures/font_metro_0432.png | Bin 0 -> 89 bytes .../font_metro/textures/font_metro_0433.png | Bin 0 -> 78 bytes .../font_metro/textures/font_metro_0434.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0435.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0436.png | Bin 0 -> 103 bytes .../font_metro/textures/font_metro_0437.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0438.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_0439.png | Bin 0 -> 111 bytes .../font_metro/textures/font_metro_043a.png | Bin 0 -> 98 bytes .../font_metro/textures/font_metro_043b.png | Bin 0 -> 88 bytes .../font_metro/textures/font_metro_043c.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_043d.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_043e.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_043f.png | Bin 0 -> 78 bytes .../font_metro/textures/font_metro_0440.png | Bin 0 -> 95 bytes .../font_metro/textures/font_metro_0441.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_0442.png | Bin 0 -> 80 bytes .../font_metro/textures/font_metro_0443.png | Bin 0 -> 94 bytes .../font_metro/textures/font_metro_0444.png | Bin 0 -> 108 bytes .../font_metro/textures/font_metro_0445.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_0446.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_0447.png | Bin 0 -> 89 bytes .../font_metro/textures/font_metro_0448.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_0449.png | Bin 0 -> 84 bytes .../font_metro/textures/font_metro_044a.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_044b.png | Bin 0 -> 90 bytes .../font_metro/textures/font_metro_044c.png | Bin 0 -> 87 bytes .../font_metro/textures/font_metro_044d.png | Bin 0 -> 91 bytes .../font_metro/textures/font_metro_044e.png | Bin 0 -> 100 bytes .../font_metro/textures/font_metro_044f.png | Bin 0 -> 93 bytes .../font_metro/textures/font_metro_2018.png | Bin 0 -> 78 bytes .../font_metro/textures/font_metro_2019.png | Bin 0 -> 79 bytes .../font_metro/textures/font_metro_201c.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_201d.png | Bin 0 -> 81 bytes .../font_metro/textures/font_metro_20ac.png | Bin 0 -> 105 bytes mods/special/display_modpack/modpack.txt | 0 .../display_modpack/ontime_clocks/LICENSE.txt | 166 ++++++ .../display_modpack/ontime_clocks/README.md | 49 ++ .../display_modpack/ontime_clocks/common.lua | 61 ++ .../ontime_clocks/copyright.txt | 8 + .../display_modpack/ontime_clocks/crafts.lua | 75 +++ .../display_modpack/ontime_clocks/depends.txt | 5 + .../display_modpack/ontime_clocks/init.lua | 31 + .../display_modpack/ontime_clocks/intllib.lua | 45 ++ .../ontime_clocks/locale/fr.po | 43 ++ .../ontime_clocks/locale/ms.po | 42 ++ .../ontime_clocks/locale/template.pot | 42 ++ .../display_modpack/ontime_clocks/mod.conf | 4 + .../display_modpack/ontime_clocks/nodes.lua | 246 ++++++++ .../textures/ontime_clocks_digital.png | Bin 0 -> 82 bytes .../ontime_clocks_digital_background.png | Bin 0 -> 98 bytes .../textures/ontime_clocks_digital_digit.png | Bin 0 -> 128 bytes .../textures/ontime_clocks_frameless.png | Bin 0 -> 118 bytes .../ontime_clocks_frameless_inventory.png | Bin 0 -> 246 bytes .../ontime_clocks_green_digital_inventory.png | Bin 0 -> 175 bytes .../textures/ontime_clocks_needle_h36.png | Bin 0 -> 669 bytes .../textures/ontime_clocks_needle_h48.png | Bin 0 -> 929 bytes .../textures/ontime_clocks_needle_m36.png | Bin 0 -> 759 bytes .../textures/ontime_clocks_needle_m48.png | Bin 0 -> 935 bytes .../ontime_clocks_red_digital_inventory.png | Bin 0 -> 176 bytes .../textures/ontime_clocks_white.png | Bin 0 -> 117 bytes .../ontime_clocks_white_inventory.png | Bin 0 -> 228 bytes .../ontime_clocks/tools/updatepo.sh | 25 + mods/special/display_modpack/screenshot.png | Bin 0 -> 256614 bytes .../special/display_modpack/signs/LICENSE.txt | 166 ++++++ mods/special/display_modpack/signs/README.md | 30 + mods/special/display_modpack/signs/common.lua | 37 ++ .../display_modpack/signs/compatibility.lua | 117 ++++ .../display_modpack/signs/copyright.txt | 10 + mods/special/display_modpack/signs/crafts.lua | 61 ++ .../special/display_modpack/signs/depends.txt | 4 + mods/special/display_modpack/signs/init.lua | 36 ++ .../special/display_modpack/signs/intllib.lua | 45 ++ .../display_modpack/signs/locale/fr.po | 54 ++ .../display_modpack/signs/locale/ms.po | 51 ++ .../display_modpack/signs/locale/template.pot | 51 ++ mods/special/display_modpack/signs/mod.conf | 4 + .../signs/models/signs_dir_left.obj | 51 ++ .../signs/models/signs_dir_right.obj | 51 ++ mods/special/display_modpack/signs/nodes.lua | 253 ++++++++ .../signs/svg/black_direction.svg | 128 +++++ .../display_modpack/signs/svg/blue_street.svg | 139 +++++ .../signs/svg/green_street.svg | 104 ++++ .../signs/svg/poster-formspec.svg | 88 +++ .../display_modpack/signs/svg/poster.svg | 465 +++++++++++++++ .../signs/textures/signs_label.png | Bin 0 -> 294 bytes .../textures/signs_label_medium_inventory.png | Bin 0 -> 252 bytes .../textures/signs_label_small_inventory.png | Bin 0 -> 173 bytes .../signs/textures/signs_poster.png | Bin 0 -> 1250 bytes .../signs/textures/signs_poster_formspec.png | Bin 0 -> 166856 bytes .../signs/textures/signs_poster_inventory.png | Bin 0 -> 1120 bytes .../signs/textures/signs_poster_sides.png | Bin 0 -> 916 bytes .../signs/textures/signs_wooden.png | Bin 0 -> 337 bytes .../signs/textures/signs_wooden_direction.png | Bin 0 -> 381 bytes .../signs_wooden_direction_inventory.png | Bin 0 -> 321 bytes .../signs/textures/signs_wooden_inventory.png | Bin 0 -> 343 bytes .../signs/textures/signs_wooden_long.png | Bin 0 -> 317 bytes .../textures/signs_wooden_long_inventory.png | Bin 0 -> 323 bytes .../display_modpack/signs/tools/updatepo.sh | 25 + .../display_modpack/signs_api/LICENSE.txt | 166 ++++++ .../display_modpack/signs_api/README.md | 33 ++ .../display_modpack/signs_api/copyright.txt | 10 + .../display_modpack/signs_api/depends.txt | 4 + .../display_modpack/signs_api/init.lua | 251 ++++++++ .../display_modpack/signs_api/intllib.lua | 45 ++ .../display_modpack/signs_api/locale/fr.po | 49 ++ .../display_modpack/signs_api/locale/ms.po | 46 ++ .../signs_api/locale/template.pot | 31 + .../display_modpack/signs_api/mod.conf | 4 + .../signs_api/tools/updatepo.sh | 25 + .../display_modpack/signs_road/LICENSE.txt | 166 ++++++ .../display_modpack/signs_road/README.md | 76 +++ .../signs_road/compatibility.lua | 90 +++ .../display_modpack/signs_road/copyright.txt | 9 + .../display_modpack/signs_road/crafts.lua | 201 +++++++ .../display_modpack/signs_road/depends.txt | 4 + .../display_modpack/signs_road/init.lua | 37 ++ .../display_modpack/signs_road/intllib.lua | 45 ++ .../display_modpack/signs_road/locale/fr.po | 56 ++ .../display_modpack/signs_road/locale/ms.po | 54 ++ .../signs_road/locale/template.pot | 54 ++ .../display_modpack/signs_road/mod.conf | 4 + .../display_modpack/signs_road/nodes.lua | 451 +++++++++++++++ .../signs_road/svg/signs_road_black.svg | 128 +++++ .../signs_road/svg/signs_road_direction.svg | 316 ++++++++++ .../signs_road/svg/signs_road_rectangle.svg | 188 ++++++ .../signs_road/svg/signs_road_street_blue.svg | 139 +++++ .../signs_road_black_dir_inventory.png | Bin 0 -> 145 bytes .../textures/signs_road_black_dir_left.png | Bin 0 -> 136 bytes .../textures/signs_road_black_dir_right.png | Bin 0 -> 130 bytes .../signs_road/textures/signs_road_blue.png | Bin 0 -> 177 bytes .../signs_road_blue_dir_inventory.png | Bin 0 -> 198 bytes .../textures/signs_road_blue_direction.png | Bin 0 -> 533 bytes .../textures/signs_road_blue_street.png | Bin 0 -> 161 bytes .../signs_road/textures/signs_road_green.png | Bin 0 -> 177 bytes .../signs_road_green_dir_inventory.png | Bin 0 -> 198 bytes .../textures/signs_road_green_direction.png | Bin 0 -> 536 bytes .../textures/signs_road_large_white.png | Bin 0 -> 92 bytes .../signs_road/textures/signs_road_red.png | Bin 0 -> 177 bytes .../textures/signs_road_red_dir_inventory.png | Bin 0 -> 190 bytes .../textures/signs_road_red_direction.png | Bin 0 -> 533 bytes .../textures/signs_road_red_white.png | Bin 0 -> 201 bytes .../signs_road/textures/signs_road_sides.png | Bin 0 -> 297 bytes .../signs_road/textures/signs_road_white.png | Bin 0 -> 129 bytes .../signs_road_white_dir_inventory.png | Bin 0 -> 167 bytes .../textures/signs_road_white_direction.png | Bin 0 -> 552 bytes .../signs_road/textures/signs_road_yellow.png | Bin 0 -> 164 bytes .../signs_road_yellow_dir_inventory.png | Bin 0 -> 192 bytes .../textures/signs_road_yellow_direction.png | Bin 0 -> 536 bytes .../signs_road/tools/updatepo.sh | 25 + .../display_modpack/steles/LICENSE.txt | 166 ++++++ mods/special/display_modpack/steles/README.md | 25 + .../special/display_modpack/steles/config.lua | 37 ++ .../display_modpack/steles/copyright.txt | 9 + .../special/display_modpack/steles/crafts.lua | 33 ++ .../display_modpack/steles/depends.txt | 5 + mods/special/display_modpack/steles/init.lua | 31 + .../display_modpack/steles/intllib.lua | 45 ++ .../display_modpack/steles/locale/fr.po | 47 ++ .../display_modpack/steles/locale/ms.po | 46 ++ .../steles/locale/template.pot | 46 ++ mods/special/display_modpack/steles/mod.conf | 4 + mods/special/display_modpack/steles/nodes.lua | 94 +++ .../display_modpack/steles/tools/updatepo.sh | 25 + mods/special/modpack.conf | 3 + 736 files changed, 10794 insertions(+), 8 deletions(-) create mode 100644 mods/special/display_modpack/.gitmodules create mode 100644 mods/special/display_modpack/LICENSE.txt create mode 100644 mods/special/display_modpack/README.md create mode 100644 mods/special/display_modpack/_config.yml create mode 100644 mods/special/display_modpack/boards/LICENSE.txt create mode 100644 mods/special/display_modpack/boards/LICENSE_FONT.txt create mode 100644 mods/special/display_modpack/boards/copyright.txt create mode 100644 mods/special/display_modpack/boards/depends.txt create mode 100644 mods/special/display_modpack/boards/font_tinycurs.lua create mode 100644 mods/special/display_modpack/boards/init.lua create mode 100644 mods/special/display_modpack/boards/intllib.lua create mode 100644 mods/special/display_modpack/boards/locale/fr.po create mode 100644 mods/special/display_modpack/boards/locale/ms.po create mode 100644 mods/special/display_modpack/boards/locale/template.pot create mode 100644 mods/special/display_modpack/boards/mod.conf create mode 100644 mods/special/display_modpack/boards/textures/board_black_front.png create mode 100644 mods/special/display_modpack/boards/textures/board_green_front.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0000.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0020.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0021.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0022.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0023.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0024.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0025.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0026.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0027.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0028.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0029.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_002a.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_002b.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_002c.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_002d.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_002e.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_002f.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0030.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0031.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0032.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0033.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0034.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0035.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0036.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0037.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0038.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0039.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_003a.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_003b.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_003c.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_003d.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_003e.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_003f.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0040.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0041.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0042.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0043.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0044.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0045.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0046.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0047.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0048.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0049.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_004a.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_004b.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_004c.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_004d.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_004e.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_004f.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0050.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0051.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0052.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0053.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0054.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0055.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0056.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0057.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0058.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0059.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_005a.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_005b.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_005c.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_005d.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_005e.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_005f.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0060.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0061.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0062.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0063.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0064.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0065.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0066.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0067.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0068.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0069.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_006a.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_006b.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_006c.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_006d.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_006e.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_006f.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0070.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0071.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0072.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0073.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0074.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0075.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0076.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0077.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0078.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_0079.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_007a.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_007b.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_007c.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_007d.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_007e.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_2018.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_2019.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_201c.png create mode 100644 mods/special/display_modpack/boards/textures/font_tinycurs_201d.png create mode 100755 mods/special/display_modpack/boards/tools/updatepo.sh create mode 100644 mods/special/display_modpack/display_api/API.md create mode 100644 mods/special/display_modpack/display_api/LICENSE.txt create mode 100644 mods/special/display_modpack/display_api/README.md create mode 100644 mods/special/display_modpack/display_api/copyright.txt create mode 100644 mods/special/display_modpack/display_api/depends.txt create mode 100644 mods/special/display_modpack/display_api/deprecation.lua create mode 100644 mods/special/display_modpack/display_api/display.lua create mode 100644 mods/special/display_modpack/display_api/init.lua create mode 100644 mods/special/display_modpack/display_api/mod.conf create mode 100644 mods/special/display_modpack/font_api/API.md create mode 100644 mods/special/display_modpack/font_api/LICENSE.txt create mode 100644 mods/special/display_modpack/font_api/README.md create mode 100644 mods/special/display_modpack/font_api/copyright.txt create mode 100644 mods/special/display_modpack/font_api/depends.txt create mode 100644 mods/special/display_modpack/font_api/deprecation.lua create mode 100644 mods/special/display_modpack/font_api/display_api.lua create mode 100644 mods/special/display_modpack/font_api/doc/font.svg create mode 100644 mods/special/display_modpack/font_api/doc/lines.svg create mode 100644 mods/special/display_modpack/font_api/fallbacks.lua create mode 100644 mods/special/display_modpack/font_api/font.lua create mode 100644 mods/special/display_modpack/font_api/fontform.lua create mode 100644 mods/special/display_modpack/font_api/init.lua create mode 100644 mods/special/display_modpack/font_api/mod.conf create mode 100644 mods/special/display_modpack/font_api/registry.lua create mode 100644 mods/special/display_modpack/font_api/settingtypes.txt create mode 100644 mods/special/display_modpack/font_api/textures/font_api_center.png create mode 100644 mods/special/display_modpack/font_api/textures/font_api_font.png create mode 100644 mods/special/display_modpack/font_api/textures/font_api_left.png create mode 100644 mods/special/display_modpack/font_api/textures/font_api_right.png create mode 100755 mods/special/display_modpack/font_api/tools/make_font_lua.sh create mode 100755 mods/special/display_modpack/font_api/tools/make_font_textures.sh create mode 100644 mods/special/display_modpack/font_metro/CC-BY-SA.txt create mode 100644 mods/special/display_modpack/font_metro/LGPL.txt create mode 100644 mods/special/display_modpack/font_metro/README.md create mode 100644 mods/special/display_modpack/font_metro/copyright.txt create mode 100644 mods/special/display_modpack/font_metro/depends.txt create mode 100644 mods/special/display_modpack/font_metro/init.lua create mode 100644 mods/special/display_modpack/font_metro/mod.conf create mode 100644 mods/special/display_modpack/font_metro/screenshot.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0000.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0020.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0021.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0022.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0023.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0024.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0025.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0026.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0027.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0028.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0029.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_002a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_002b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_002c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_002d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_002e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_002f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0030.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0031.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0032.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0033.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0034.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0035.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0036.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0037.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0038.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0039.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_003a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_003b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_003c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_003d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_003e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_003f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0040.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0041.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0042.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0043.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0044.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0045.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0046.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0047.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0048.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0049.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_004a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_004b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_004c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_004d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_004e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_004f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0050.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0051.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0052.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0053.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0054.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0055.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0056.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0057.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0058.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0059.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_005a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_005b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_005c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_005d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_005e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_005f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0060.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0061.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0062.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0063.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0064.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0065.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0066.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0067.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0068.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0069.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_006a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_006b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_006c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_006d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_006e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_006f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0070.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0071.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0072.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0073.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0074.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0075.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0076.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0077.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0078.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0079.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_007a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_007b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_007c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_007d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_007e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a0.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a2.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00a9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00aa.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ab.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ac.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ad.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ae.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00af.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b0.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b2.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00b9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ba.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00bb.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00bc.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00bd.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00be.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00bf.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c0.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c2.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00c9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ca.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00cb.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00cc.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00cd.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ce.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00cf.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d0.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d2.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00d9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00da.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00db.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00dc.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00dd.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00de.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00df.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e0.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e2.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00e9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ea.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00eb.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ec.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ed.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ee.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ef.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f0.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f2.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00f9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00fa.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00fb.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00fc.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00fd.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00fe.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_00ff.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0100.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0101.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0102.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0103.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0104.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0105.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0106.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0107.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0108.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0109.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_010a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_010b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_010c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_010d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_010e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_010f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0110.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0111.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0112.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0113.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0114.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0115.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0116.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0117.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0118.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0119.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_011a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_011b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_011c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_011d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_011e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_011f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0120.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0121.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0122.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0123.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0124.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0125.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0126.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0127.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0128.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0129.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_012a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_012b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_012c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_012d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_012e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_012f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0130.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0131.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0132.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0133.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0134.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0135.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0136.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0137.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0138.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0139.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_013a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_013b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_013c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_013d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_013e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_013f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0140.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0141.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0142.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0143.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0144.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0145.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0146.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0147.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0148.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0149.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_014a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_014b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_014c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_014d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_014e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_014f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0150.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0151.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0152.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0153.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0154.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0155.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0156.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0157.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0158.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0159.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_015a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_015b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_015c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_015d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_015e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_015f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0160.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0161.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0162.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0163.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0164.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0165.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0166.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0167.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0168.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0169.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_016a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_016b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_016c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_016d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_016e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_016f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0170.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0171.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0172.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0173.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0174.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0175.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0176.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0177.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0178.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0179.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_017a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_017b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_017c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_017d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_017e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_017f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_037e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0391.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0392.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0393.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0394.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0395.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0396.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0397.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0398.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0399.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_039a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_039b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_039c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_039d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_039e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_039f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a0.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03a9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b2.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03b9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03ba.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03bb.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03bc.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03bd.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03be.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03bf.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c0.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c1.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c2.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c3.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c4.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c5.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c6.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c7.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c8.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_03c9.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0402.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0404.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0409.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_040a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_040b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_040d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_040f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0410.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0411.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0412.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0413.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0414.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0415.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0416.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0417.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0418.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0419.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_041a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_041b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_041c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_041d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_041e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_041f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0420.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0421.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0422.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0423.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0424.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0425.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0426.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0427.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0428.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0429.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_042a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_042b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_042c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_042d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_042e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_042f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0430.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0431.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0432.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0433.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0434.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0435.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0436.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0437.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0438.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0439.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_043a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_043b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_043c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_043d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_043e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_043f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0440.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0441.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0442.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0443.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0444.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0445.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0446.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0447.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0448.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_0449.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_044a.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_044b.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_044c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_044d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_044e.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_044f.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_2018.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_2019.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_201c.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_201d.png create mode 100644 mods/special/display_modpack/font_metro/textures/font_metro_20ac.png create mode 100644 mods/special/display_modpack/modpack.txt create mode 100644 mods/special/display_modpack/ontime_clocks/LICENSE.txt create mode 100644 mods/special/display_modpack/ontime_clocks/README.md create mode 100644 mods/special/display_modpack/ontime_clocks/common.lua create mode 100644 mods/special/display_modpack/ontime_clocks/copyright.txt create mode 100644 mods/special/display_modpack/ontime_clocks/crafts.lua create mode 100644 mods/special/display_modpack/ontime_clocks/depends.txt create mode 100644 mods/special/display_modpack/ontime_clocks/init.lua create mode 100644 mods/special/display_modpack/ontime_clocks/intllib.lua create mode 100644 mods/special/display_modpack/ontime_clocks/locale/fr.po create mode 100644 mods/special/display_modpack/ontime_clocks/locale/ms.po create mode 100644 mods/special/display_modpack/ontime_clocks/locale/template.pot create mode 100644 mods/special/display_modpack/ontime_clocks/mod.conf create mode 100644 mods/special/display_modpack/ontime_clocks/nodes.lua create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_digital.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_digital_background.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_digital_digit.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_frameless.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_frameless_inventory.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_green_digital_inventory.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_needle_h36.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_needle_h48.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_needle_m36.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_needle_m48.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_red_digital_inventory.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_white.png create mode 100644 mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_white_inventory.png create mode 100755 mods/special/display_modpack/ontime_clocks/tools/updatepo.sh create mode 100644 mods/special/display_modpack/screenshot.png create mode 100644 mods/special/display_modpack/signs/LICENSE.txt create mode 100644 mods/special/display_modpack/signs/README.md create mode 100644 mods/special/display_modpack/signs/common.lua create mode 100644 mods/special/display_modpack/signs/compatibility.lua create mode 100644 mods/special/display_modpack/signs/copyright.txt create mode 100644 mods/special/display_modpack/signs/crafts.lua create mode 100644 mods/special/display_modpack/signs/depends.txt create mode 100644 mods/special/display_modpack/signs/init.lua create mode 100644 mods/special/display_modpack/signs/intllib.lua create mode 100644 mods/special/display_modpack/signs/locale/fr.po create mode 100644 mods/special/display_modpack/signs/locale/ms.po create mode 100644 mods/special/display_modpack/signs/locale/template.pot create mode 100644 mods/special/display_modpack/signs/mod.conf create mode 100644 mods/special/display_modpack/signs/models/signs_dir_left.obj create mode 100644 mods/special/display_modpack/signs/models/signs_dir_right.obj create mode 100644 mods/special/display_modpack/signs/nodes.lua create mode 100644 mods/special/display_modpack/signs/svg/black_direction.svg create mode 100644 mods/special/display_modpack/signs/svg/blue_street.svg create mode 100644 mods/special/display_modpack/signs/svg/green_street.svg create mode 100644 mods/special/display_modpack/signs/svg/poster-formspec.svg create mode 100644 mods/special/display_modpack/signs/svg/poster.svg create mode 100644 mods/special/display_modpack/signs/textures/signs_label.png create mode 100644 mods/special/display_modpack/signs/textures/signs_label_medium_inventory.png create mode 100644 mods/special/display_modpack/signs/textures/signs_label_small_inventory.png create mode 100644 mods/special/display_modpack/signs/textures/signs_poster.png create mode 100644 mods/special/display_modpack/signs/textures/signs_poster_formspec.png create mode 100644 mods/special/display_modpack/signs/textures/signs_poster_inventory.png create mode 100644 mods/special/display_modpack/signs/textures/signs_poster_sides.png create mode 100644 mods/special/display_modpack/signs/textures/signs_wooden.png create mode 100644 mods/special/display_modpack/signs/textures/signs_wooden_direction.png create mode 100644 mods/special/display_modpack/signs/textures/signs_wooden_direction_inventory.png create mode 100644 mods/special/display_modpack/signs/textures/signs_wooden_inventory.png create mode 100644 mods/special/display_modpack/signs/textures/signs_wooden_long.png create mode 100644 mods/special/display_modpack/signs/textures/signs_wooden_long_inventory.png create mode 100755 mods/special/display_modpack/signs/tools/updatepo.sh create mode 100644 mods/special/display_modpack/signs_api/LICENSE.txt create mode 100644 mods/special/display_modpack/signs_api/README.md create mode 100644 mods/special/display_modpack/signs_api/copyright.txt create mode 100644 mods/special/display_modpack/signs_api/depends.txt create mode 100644 mods/special/display_modpack/signs_api/init.lua create mode 100644 mods/special/display_modpack/signs_api/intllib.lua create mode 100644 mods/special/display_modpack/signs_api/locale/fr.po create mode 100644 mods/special/display_modpack/signs_api/locale/ms.po create mode 100644 mods/special/display_modpack/signs_api/locale/template.pot create mode 100644 mods/special/display_modpack/signs_api/mod.conf create mode 100755 mods/special/display_modpack/signs_api/tools/updatepo.sh create mode 100644 mods/special/display_modpack/signs_road/LICENSE.txt create mode 100644 mods/special/display_modpack/signs_road/README.md create mode 100644 mods/special/display_modpack/signs_road/compatibility.lua create mode 100644 mods/special/display_modpack/signs_road/copyright.txt create mode 100644 mods/special/display_modpack/signs_road/crafts.lua create mode 100644 mods/special/display_modpack/signs_road/depends.txt create mode 100644 mods/special/display_modpack/signs_road/init.lua create mode 100644 mods/special/display_modpack/signs_road/intllib.lua create mode 100644 mods/special/display_modpack/signs_road/locale/fr.po create mode 100644 mods/special/display_modpack/signs_road/locale/ms.po create mode 100644 mods/special/display_modpack/signs_road/locale/template.pot create mode 100644 mods/special/display_modpack/signs_road/mod.conf create mode 100644 mods/special/display_modpack/signs_road/nodes.lua create mode 100644 mods/special/display_modpack/signs_road/svg/signs_road_black.svg create mode 100644 mods/special/display_modpack/signs_road/svg/signs_road_direction.svg create mode 100644 mods/special/display_modpack/signs_road/svg/signs_road_rectangle.svg create mode 100644 mods/special/display_modpack/signs_road/svg/signs_road_street_blue.svg create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_black_dir_inventory.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_black_dir_left.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_black_dir_right.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_blue.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_blue_dir_inventory.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_blue_direction.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_blue_street.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_green.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_green_dir_inventory.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_green_direction.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_large_white.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_red.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_red_dir_inventory.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_red_direction.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_red_white.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_sides.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_white.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_white_dir_inventory.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_white_direction.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_yellow.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_yellow_dir_inventory.png create mode 100644 mods/special/display_modpack/signs_road/textures/signs_road_yellow_direction.png create mode 100755 mods/special/display_modpack/signs_road/tools/updatepo.sh create mode 100644 mods/special/display_modpack/steles/LICENSE.txt create mode 100644 mods/special/display_modpack/steles/README.md create mode 100644 mods/special/display_modpack/steles/config.lua create mode 100644 mods/special/display_modpack/steles/copyright.txt create mode 100644 mods/special/display_modpack/steles/crafts.lua create mode 100644 mods/special/display_modpack/steles/depends.txt create mode 100644 mods/special/display_modpack/steles/init.lua create mode 100644 mods/special/display_modpack/steles/intllib.lua create mode 100644 mods/special/display_modpack/steles/locale/fr.po create mode 100644 mods/special/display_modpack/steles/locale/ms.po create mode 100644 mods/special/display_modpack/steles/locale/template.pot create mode 100644 mods/special/display_modpack/steles/mod.conf create mode 100644 mods/special/display_modpack/steles/nodes.lua create mode 100755 mods/special/display_modpack/steles/tools/updatepo.sh create mode 100644 mods/special/modpack.conf diff --git a/buildscripts/02_build_pa.sh b/buildscripts/02_build_pa.sh index 904d91e..067762b 100755 --- a/buildscripts/02_build_pa.sh +++ b/buildscripts/02_build_pa.sh @@ -14,7 +14,6 @@ mod_install minetest_game --exclude=farming minetest_game/mods/* # Install all other mods mod_install blocks_functions -mod_install building_blocks mod_install buildings mod_install environment mod_install flora @@ -22,3 +21,4 @@ mod_install gui mod_install lib_api mod_install mobs mod_install player +mod_install special diff --git a/mod_sources.txt b/mod_sources.txt index 2d630ab..db0ff72 100644 --- a/mod_sources.txt +++ b/mod_sources.txt @@ -37,10 +37,6 @@ origin https://github.com/sirrobzeroone/comboblock (fetch) * master 279a5e2 [origin/master] version increment Mod: blocks_functions/comboblock -origin https://gitlab.com/VanessaE/signs_lib (fetch) -* master 1a6b9f3 [origin/master] enable static save on signs' entities -Mod: building_blocks/signs_lib - origin https://github.com/Sokomine/cottages (fetch) * master 8cfaaed [origin/master] added listring to shelf Mod: buildings/cottages @@ -144,3 +140,7 @@ Mod: player/wield3d origin https://github.com/minetest-mods/wielded_light.git (fetch) * master 4376b55 [origin/master] Code maintanance Mod: player/wielded_light + +origin git@github.com:pyrollo/display_modpack.git (fetch) +* master 6135b3a [origin/master] Merge pull request #42 from mnh48-minetest/update_malay_july2020 +Mod: special/display_modpack diff --git a/mods/lib_api/modpack.conf b/mods/lib_api/modpack.conf index 8c3e277..31c4e44 100644 --- a/mods/lib_api/modpack.conf +++ b/mods/lib_api/modpack.conf @@ -1,5 +1,9 @@ description = Libraries and apis for mods -modlib, cmdlib - for character_anim -entitycontrol - for clumpfall -mobkit - for petz +cmdlib - for character_anim +display_modpack - for signs +mobkit - for petz and other mod mods +mobs_redo - for some mob mods +modlib - for character_anim + + diff --git a/mods/special/display_modpack/.gitmodules b/mods/special/display_modpack/.gitmodules new file mode 100644 index 0000000..a28a34b --- /dev/null +++ b/mods/special/display_modpack/.gitmodules @@ -0,0 +1,3 @@ +[submodule "display_api"] + path = display_api + url = https://github.com/pyrollo/display_api.git diff --git a/mods/special/display_modpack/LICENSE.txt b/mods/special/display_modpack/LICENSE.txt new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/mods/special/display_modpack/LICENSE.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/mods/special/display_modpack/README.md b/mods/special/display_modpack/README.md new file mode 100644 index 0000000..c37a469 --- /dev/null +++ b/mods/special/display_modpack/README.md @@ -0,0 +1,115 @@ +# Display Modpack +Version 1.3.1 + +This modpack provides mods with dynamic display. Mods are : + +- **[display_api](https://github.com/pyrollo/display_modpack/tree/master/display_api)**: A library for adding display entities to nodes; +- **[font_api](https://github.com/pyrollo/display_modpack/tree/master/font_api)**: A library for displaying fonts on entities; +- **[signs_api](https://github.com/pyrollo/display_modpack/tree/master/signs_api)**: A library for the easy creation of signs; +- **[font_metro](https://github.com/pyrollo/display_modpack/tree/master/font_metro)**: A font mod used as default font (includes uppercase, lowercase and accentuated latin letters, usual signs, cyrillic and greek letters) + +- **[boards](https://github.com/pyrollo/display_modpack/tree/master/boards)**: A mod providing school boards (includes *tiny cursive font*, a handwriting style font); +- **[ontime_clocks](https://github.com/pyrollo/display_modpack/tree/master/ontime_clocks)**: A mod providing clocks which display the ingame time; +- **[signs](https://github.com/pyrollo/display_modpack/tree/master/signs)**: A mod providing signs and direction signs displaying text; +- **[signs_road](https://github.com/pyrollo/display_modpack/tree/master/signs_road)**: A mod providing road signs displaying text; +- **[steles](https://github.com/pyrollo/display_modpack/tree/master/steles)**: A mod providing stone steles with text; + +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=19365) at the Minetest forums. + +![Presentation image of Display_Modpack](screenshot.png) + +## Extra fonts + +*Metro* and *Tiny Cursive* fonts are provided in **Display Modpack** (in **font_metro** and **boards** mods) but you can add more fonts by installing font mods. Be aware that each font mod comes with numerous textures. This can result in slowing media downloading and/or client display. + +Extra font mods can be found here: + * [OldWizard](https://github.com/pyrollo/font_oldwizard): An old style gothic font. + * [Botic](https://github.com/pyrollo/font_botic): A scifi style font. + +## Deprecation notice (for modders) + +### December 2018 +Following objects are deprecated, shows a warning in log when used: +* `display_modpack_node` group (use `display_api` group instead); +* `display_lib_node` group (use `display_api` group instead); +* `display_lib` global table (use `display_api` global table instead); +* `font_lib` global table (use `font_api` global table instead); + +These objects will be removed in the future. + +## Changelog +### 2019-03-14 (Version 1.3.1) +- __dispay_api__: Display API now detects automatically whenr rotation restrictions have to be applied. +- __sign_api__: Screwdriver behavior changed. Now, left click rotates and changes direction. + +### 2019-03-09 (Version 1.3) +- __display_api__: Display nodes can be rotated in every directions (if running Minetest 5 or above). +- __display_api__: New setting to restrict rotations to Minetest 0.4 abilities (restriction enabled by default). +- __sign_api__: Changed behavior of screwdriver if no rotation restriction. + +### 2018-12-14 (Version 1.2.3) +- __display_api__: New `yaw` attributes, entities can now have different angles with node. +- __font_api__: New `Font:render` method for texture creation +- __font_api__: Specific management for fixed width font. Allows number of columns based texture width. +- __font_api__: Improve `display_api` integration into `font_api`. Display API fully optional. `font_api.on_display_update` defined only if `display_api` enabled. +- __font_api__: Improve management of invalid UTF strings (should not crash anymore) +- __font_api__: Deprecation of `font_lib` +- __signs__: Fixed craft recipe for labels + +### 2018-12-02 (Version 1.2.2) +- Fixed a bug that prevented Display API from working on some systems (Raspberry Pi) + +### 2018-11-01 (Version 1.2.1) +- Now font can be chosen per sign / stele + +### 2018-11-01 (Version 1.2) +- Labels and woodend signs added. +- Fallback mechanism for missing chars (For example: "é" --> "e" --> "E"). +- Several bug fixes by 12Me21 and naturefreshmilk. + +### 2018-07-16 (Version 1.1.1) +- Boards mod added. +- Bug fix in default font chosing when multiple font registered. + +### 2018-07-13 (Version 1.1.0) +- Font API rework introducing Font class. +- Replaced default Epilepsy Font by Metro Font for licensing purposes, +- Rework of all nodes displaying text accordingly to the Font API rework. + +As font_epilepsy mod has been replaced by font_metro mod, **don't forget to activate font_metro mod after updating** or you won't have any text displayed. + +### 2018-05-30 (Version 1.0.1) +Mostly bug fixes : +- Fix steles orientation when placing +- Update entity on mapblock load +- Use default formspec style +- Fix ndef nill value in steles mod when technics not installed +- Seperate signs API from signs définitions +- Allow a greater offset between display and block + +### 2018-01-13 (Version 1.0) +- Switch to Epilepsy font by KREATIVE SOFTWARE +- Add settings "default_font" +- Add horizontal alignment +- Add tool for creating font textures from .ttf font files +- Fix UTF 8 to Unicode decoding +- Updated forum thread link in README.md + +### 2017-12-19 +This change is a preparation to merge Andrzej Pieńkowski fork (apienk) : new font and support of UTF chars. +- Font\_lib support for multiple fonts (nothing yet visible in mods) ; +- Font\_lib support for Unicode characters (limited to Unicode Plane 0: 0000-FFFF, see [Wikipedia](https://en.wikipedia.org/wiki/Unicode)) ; +- New "default" font with original textures from Vanessa Ezekowitz (VanessaE) ; + +### 2017-12-10 +- Compatibility of signs mod with signs_lib (thanks to gpcf) ; +- Added large banner in road signs (thanks to gpcf) ; + +### 2017-08-26 +- Changed signs from wallmounted to facedir to improve textures and make it possible to use screwdriver. +**IMPORTANT** : Map will be updated to change to new nodes but inventory items will turn into "Unknown items" and have to be re-crafted. +- Intllib support added with french translation (whole modpack, thanks to fat115) ; +- Punch on nodes to update entity (signs, signs_road and steles). Usefull in case of /clearobjects ; +- Changed wooden direction sign textures (signs) ; +- Added back and side textures to all signs (road_signs) ; +- Added more sign types : White/yellow/green signs and direction signs (signs_road) ; diff --git a/mods/special/display_modpack/_config.yml b/mods/special/display_modpack/_config.yml new file mode 100644 index 0000000..2f7efbe --- /dev/null +++ b/mods/special/display_modpack/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-minimal \ No newline at end of file diff --git a/mods/special/display_modpack/boards/LICENSE.txt b/mods/special/display_modpack/boards/LICENSE.txt new file mode 100644 index 0000000..341c30b --- /dev/null +++ b/mods/special/display_modpack/boards/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/mods/special/display_modpack/boards/LICENSE_FONT.txt b/mods/special/display_modpack/boards/LICENSE_FONT.txt new file mode 100644 index 0000000..29d0f9b --- /dev/null +++ b/mods/special/display_modpack/boards/LICENSE_FONT.txt @@ -0,0 +1,4 @@ +The FontStruction “Tiny Cursive” +(https://fontstruct.com/fontstructions/show/63155) by “cyfry77” is licensed +under a Creative Commons Attribution Share Alike license +(http://creativecommons.org/licenses/by-sa/3.0/). diff --git a/mods/special/display_modpack/boards/copyright.txt b/mods/special/display_modpack/boards/copyright.txt new file mode 100644 index 0000000..ad83a10 --- /dev/null +++ b/mods/special/display_modpack/boards/copyright.txt @@ -0,0 +1,2 @@ +Code by Pierre-Yves Rollo (pyrollo) +Font by (cyfry77) diff --git a/mods/special/display_modpack/boards/depends.txt b/mods/special/display_modpack/boards/depends.txt new file mode 100644 index 0000000..8c807e3 --- /dev/null +++ b/mods/special/display_modpack/boards/depends.txt @@ -0,0 +1,2 @@ +default +signs_api diff --git a/mods/special/display_modpack/boards/font_tinycurs.lua b/mods/special/display_modpack/boards/font_tinycurs.lua new file mode 100644 index 0000000..a9a323a --- /dev/null +++ b/mods/special/display_modpack/boards/font_tinycurs.lua @@ -0,0 +1,27 @@ +--[[ + Tinycurs font for Font API + + Original font Tiny Cursive + by cyfry77 + G and J textures by Pierre-Yves Rollo (pyrollo) + released under CC-BY-SA license + + https://fontstruct.com/fontstructions/show/63155/tiny_cursive + + Derivative texture are under CC-BY-SA license + Code is under LGPL v3 license +--]] + +font_api.register_font('tinycurs', + { + default = false, -- Don't register this font as a possible default font + margintop = -2, + marginbottom = -2, + linespacing = -4, + height = 19, + widths = { + [0]=9, [32]=9, [33]=6, [34]=7, [35]=10, [36]=14, [37]=14, [38]=12, [39]=3, [40]=6, [41]=6, [42]=9, [43]=8, [44]=3, [45]=7, [46]=3, [47]=9, [48]=9, [49]=7, [50]=10, [51]=9, [52]=9, [53]=10, [54]=10, [55]=9, [56]=10, [57]=8, [58]=5, [59]=5, [60]=8, [61]=8, [62]=8, [63]=8, [64]=12, [65]=9, [66]=7, [67]=9, [68]=10, [69]=8, [70]=8, [71]=8, [72]=10, [73]=7, [74]=8, [75]=9, [76]=9, [77]=12, [78]=10, [79]=9, [80]=9, [81]=9, [82]=11, [83]=11, [84]=8, [85]=11, [86]=11, [87]=12, [88]=12, [89]=11, [90]=11, [91]=8, [92]=5, [93]=8, [94]=8, [95]=8, [96]=5, [97]=6, [98]=6, [99]=6, [100]=7, [101]=6, [102]=5, [103]=6, [104]=6, [105]=4, [106]=5, [107]=7, [108]=5, [109]=9, [110]=8, [111]=6, [112]=9, [113]=8, [114]=7, [115]=7, [116]=6, [117]=8, [118]=8, [119]=11, [120]=10, [121]=8, [122]=8, [123]=8, [124]=6, [125]=9, [126]=10, [8216]=4, [8217]=4, [8220]=6, [8221]=6 + }, + } +); + diff --git a/mods/special/display_modpack/boards/init.lua b/mods/special/display_modpack/boards/init.lua new file mode 100644 index 0000000..4126a6c --- /dev/null +++ b/mods/special/display_modpack/boards/init.lua @@ -0,0 +1,139 @@ +--[[ + boards mod for Minetest. Black boards with text on it. + (c) Pierre-Yves Rollo + + This file is part of boards. + + boards is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + boards is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with boards. If not, see . +--]] + +boards = {} +boards.name = minetest.get_current_modname() +boards.path = minetest.get_modpath(boards.name) + +-- Load support for intllib. +local S, NS = dofile(boards.path.."/intllib.lua") +boards.intllib = S +local F = function(...) return minetest.formspec_escape(S(...)) end + +-- Load font +dofile(boards.path.."/font_tinycurs.lua") + +local function set_formspec(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", + "size[6,4]"..default.gui_bg..default.gui_bg_img..default.gui_slots.. + "textarea[0.5,0.7;5.5,3;display_text;"..F("Text")..";${display_text}]".. + "button_exit[3,3.5;2,1;ok;"..F("Write").."]".. + "button_exit[1,3.5;2,1;wipe;"..F("Wipe").."]") +end + +-- On boards, everyone is allowed to write and wipe +local function on_receive_fields(pos, formname, fields, player) + if fields then + if fields.ok or fields.key_enter then + signs_api.set_display_text(pos, fields.display_text, fields.font) + end + if fields.wipe then + signs_api.set_display_text(pos, "", fields.font) + end + end +end + +models = { + black_board = { + depth = 1/16, width = 1, height = 1, + entity_fields = { + top = -1/32, + size = { x = 1, y = 15/16 }, + maxlines = 5, + color = "#fff", + font_name = "tinycurs", + valign = "top", + }, + node_fields = { + description = S("Black board"), + tiles = { "default_wood.png", "default_wood.png", + "default_wood.png", "default_wood.png", + "default_wood.png", "board_black_front.png" }, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 7/16, 0.5, 0.5, 0.5}, + {-0.5, -7/16, 6/16, 0.5, -0.5, 7/16} + }, + }, + on_construct = function(pos) + set_formspec(pos) + display_api.on_construct(pos) + end, + on_receive_fields = on_receive_fields, + }, + }, + green_board = { + depth = 1/16, width = 1, height = 1, + entity_fields = { + top = -1/32, + size = { x = 1, y = 15/16 }, + maxlines = 5, + color = "#fff", + font_name = "tinycurs", + valign = "top", + }, + node_fields = { + description = S("Green board"), + tiles = { "default_wood.png", "default_wood.png", + "default_wood.png", "default_wood.png", + "default_wood.png", "board_green_front.png" }, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 7/16, 0.5, 0.5, 0.5}, + {-0.5, -7/16, 6/16, 0.5, -0.5, 7/16} + }, + }, + on_construct = function(pos) + set_formspec(pos) + display_api.on_construct(pos) + end, + on_receive_fields = on_receive_fields, + }, + }, +} + +-- Node registration +for name, model in pairs(models) +do + signs_api.register_sign("boards", name, model) +end + +-- Recipes +minetest.register_craft( + { + output = "boards:black_board", + recipe = { + {"group:wood", "group:stone", "dye:black"}, + } + }) + +minetest.register_craft( + { + output = "boards:green_board", + recipe = { + {"group:wood", "group:stone", "dye:dark_green"}, + } + }) + diff --git a/mods/special/display_modpack/boards/intllib.lua b/mods/special/display_modpack/boards/intllib.lua new file mode 100644 index 0000000..6669d72 --- /dev/null +++ b/mods/special/display_modpack/boards/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/special/display_modpack/boards/locale/fr.po b/mods/special/display_modpack/boards/locale/fr.po new file mode 100644 index 0000000..1b081be --- /dev/null +++ b/mods/special/display_modpack/boards/locale/fr.po @@ -0,0 +1,40 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-16 10:00+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: init.lua +msgid "Text" +msgstr "Texte" + +#: init.lua +msgid "Write" +msgstr "Ecrire" + +#: init.lua +msgid "Wipe" +msgstr "Effacer" + +#: init.lua +msgid "Black board" +msgstr "Tableau noir" + +#: init.lua +msgid "Green board" +msgstr "Tableau vert" + + diff --git a/mods/special/display_modpack/boards/locale/ms.po b/mods/special/display_modpack/boards/locale/ms.po new file mode 100644 index 0000000..fe360aa --- /dev/null +++ b/mods/special/display_modpack/boards/locale/ms.po @@ -0,0 +1,35 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Yaya (Nurul Azeera Hidayah @ Muhammad Nur Hidayat) , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: Display Modpack\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-16 10:00+0200\n" +"PO-Revision-Date: 2020-07-05 11:31+0000\n" +"Language-Team: Malay \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: Yaya MNH48 \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Language: ms\n" + +#: init.lua +msgid "Text" +msgstr "Teks" + +#: init.lua +msgid "Write" +msgstr "Tulis" + +#: init.lua +msgid "Wipe" +msgstr "Padam" + +#: init.lua +msgid "Black board" +msgstr "Papan hitam" diff --git a/mods/special/display_modpack/boards/locale/template.pot b/mods/special/display_modpack/boards/locale/template.pot new file mode 100644 index 0000000..8db98b8 --- /dev/null +++ b/mods/special/display_modpack/boards/locale/template.pot @@ -0,0 +1,34 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-16 10:00+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: init.lua +msgid "Text" +msgstr "" + +#: init.lua +msgid "Write" +msgstr "" + +#: init.lua +msgid "Wipe" +msgstr "" + +#: init.lua +msgid "Black board" +msgstr "" diff --git a/mods/special/display_modpack/boards/mod.conf b/mods/special/display_modpack/boards/mod.conf new file mode 100644 index 0000000..2343d07 --- /dev/null +++ b/mods/special/display_modpack/boards/mod.conf @@ -0,0 +1,3 @@ +name=boards +description=Writable school boards using sign_api +depends=default,signs_api diff --git a/mods/special/display_modpack/boards/textures/board_black_front.png b/mods/special/display_modpack/boards/textures/board_black_front.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4a53414ed5481023127f2d78411907fc8c8445 GIT binary patch literal 392 zcmV;30eAk1P)-NFSi@i_~i$lNmrPMy!UbUhnLh?0JMvNpj?Y#w423u0nl zfNO@Ozl*6UM-C=X7kNP88)?@VSs44E45b1+cFXAR(z>2+oV&Dby@oDWl(if?$RdP5 zuh+LNP~K;CKvKFIX(qg|Y}=;CN;6!qRP!$u!*wgq_K&f%3G zv%;XGOoW)7TolZ}k7?wLK!WcS`(-v9-q=w0N#t{w3GZCRri#Kzx$|2=#A732UI m`1$<{(A^5sqO8nJa6teu9S}R)W+^cM0000s2 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/board_green_front.png b/mods/special/display_modpack/boards/textures/board_green_front.png new file mode 100644 index 0000000000000000000000000000000000000000..dd7758d9fd456af2c3651162adec83d7b4bb67c0 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VtE!)!n!kgJw~exwwW^P; zdVr&Pkdv~9l}50$MyQLDyXCS*uZ49U?b)`inKpF^293$aCne^e1Zpqvba4!+V6^RP zWpr}nagNs)P5Gbsk>P*P_a;Y{4O33Kg-%d0ab)<&IO+GDd!en(t!j76y^b?Td2)(v zH&7~?zSdavmqn@C0m*OnSNH#xKK@tjfW^D#|L5zopr0N}zpF literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0000.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..981fe5bb699b645894a46e4ec0d264813a9bee69 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq@+Au978G?lM{aQGd6lKNFHi= g(6Hgc3IQt?hR|R$TaIv{J3v(op00i_>zopr00&7GZ~y=R literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0020.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0020.png new file mode 100644 index 0000000000000000000000000000000000000000..78711f4c2a0ce27e055fbb00529987e76dd87036 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth2qYM?mPFVdQ&MBb@02)9J?EnA( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0021.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0021.png new file mode 100644 index 0000000000000000000000000000000000000000..30454f5c7ad8c0d86d3e1a248e7cb22e25f62237 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?SvqC8z3Ln;`P6&U_8E9&tvm+`T7 f8RRY(WMJ5`l>2MT;|Vu_iWody{an^LB{Ts5ks%Ya literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0022.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0022.png new file mode 100644 index 0000000000000000000000000000000000000000..cab4525781b56f44937a76e579c7102e15599864 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bc!2%?|$=tsRq(nSj978G?lNA{LF)Pk!;dVGV bk%3|3Cf47I=dOwY zmLzy6FA-2l^z>;qJXpVG+ro+eKYAwJYCE2=hq1vcnSYleAHyF#mdKI;Vst0FNCQ@&Et; literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0026.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0026.png new file mode 100644 index 0000000000000000000000000000000000000000..e77f57fe62e63d93cb5debf05d33e185132f7940 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eW!2%@t{-`JcDFaUz$B+ufWCgZA>`pm{0)&Dk z<{zmK%4tYY%KgzF`@Ej#E(cqp?Ei~j4k$XMOkiSg%94AOo9}S|sF%Uh)z4*}Q$iB} D5iuSb literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0027.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0027.png new file mode 100644 index 0000000000000000000000000000000000000000..46530fd63c042a26ce269a8893992f5f14bce6c0 GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^%s?#6!2%@zf3IH;q=YmdKI;Vst08^0?ivR!s literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0028.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0028.png new file mode 100644 index 0000000000000000000000000000000000000000..beec16500ab736be770ed08963760d6ca26d3afe GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Svq$E6D978G?lMk@{Q#LH@4qnG` f@ZjmCj0_B^U%0>iU9I2?RKwuu>gTe~DWM4f-fb2i literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0029.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0029.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d850625aaf226a564c6a2028497faace6a3981 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Svq{KX3978G?lMk@`zqsQ`fksG6 d!X*v{20tF|uWH{ncL7x}c)I$ztaD0e0syw!6)gY& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_002a.png b/mods/special/display_modpack/boards/textures/font_tinycurs_002a.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f86948dd8df9d9e70b290cd5ed49f8c2af711e GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq$E6D978G?lNAL2xIh2bKA|Gi f&>^%pg@NJDU-qBTTgx5+)i8Lv`njxgN@xNA1_u{a literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_002b.png b/mods/special/display_modpack/boards/textures/font_tinycurs_002b.png new file mode 100644 index 0000000000000000000000000000000000000000..ae0496967a58b361e05b519e135c33a24fc137f7 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl%%JNV@L&K@&cAW?vEc${NLZu gVydvinUR6v{~_+L@$IqufQlGAUHx3vIVCg!0LOwA>Hq)$ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_002c.png b/mods/special/display_modpack/boards/textures/font_tinycurs_002c.png new file mode 100644 index 0000000000000000000000000000000000000000..bff8fdcc3aaf7e75ed3f4dd9568211a707924e61 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^%s?#6!2%@zf3IH;r1(8u978G?lNWIQ;9uOq%n+`} V_}^dKQx_=3;OXk;vd$@?2>=A65Ox3n literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_002d.png b/mods/special/display_modpack/boards/textures/font_tinycurs_002d.png new file mode 100644 index 0000000000000000000000000000000000000000..246a1868300d5fbd0ea5b46503a3b5dba8758ab5 GIT binary patch literal 73 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bc!2%?|$=tsRqy#)&978G?lNTud;BR*pVPIG{ WljRSK-qj00IR;NxKbLh*2~7YMPZ5p) literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_002e.png b/mods/special/display_modpack/boards/textures/font_tinycurs_002e.png new file mode 100644 index 0000000000000000000000000000000000000000..08a2e41352060746c50fd4140919827f0533aac1 GIT binary patch literal 71 zcmeAS@N?(olHy`uVBq!ia0vp^%s?#6!2%@zf3IH;r1(5t978G?lNWIQ@Sj!0pdZG_ U&@gR-EKr8Q)78&qol`;+0QrCrhX4Qo literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_002f.png b/mods/special/display_modpack/boards/textures/font_tinycurs_002f.png new file mode 100644 index 0000000000000000000000000000000000000000..4397f28ac1dc24da7b5fa2024f23fe2d12378134 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq{Ka4978G?lNDJ02@5H$Y5O-Tz#Jgq!c|}978G?lNC7susez{vh-@U oBur3qnP|rH*?!q=b^!(k_8PHQPqOZE0~IrPy85}Sb4q9e0Al+VkpKVy literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0031.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0031.png new file mode 100644 index 0000000000000000000000000000000000000000..cb5516d28eefa040587364f25f6636c8a033f3a4 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bc!2%?|$=tsRq+~r^978G?lNE&ixIg{l{wU#; kk-$mS=;!qoOEei6R{sUftDnm{r-UW|ybl>f literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0033.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0033.png new file mode 100644 index 0000000000000000000000000000000000000000..34ca0715fab82e7155057ba69749044fe5b4bf19 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq*Odz978G?lNC7susez{TJ$nh rw0z)p;88!j-Tz#Jgq%=HT978G?lNAL2usek?YPfMI vOw>5@--1=*B2VfO1OB^yK8%-IUhp%Vk>USrWPDfwsE5JR)z4*}Q$iB}Dl-|T literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0035.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0035.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b4b070d2b095176e06f26fbd365497af82633a GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs|E3y@@f6p{+0)I41rLn;`P6(s+(JGTgwmCkUg sIO8nrvaHjTWA>Z+J!wjBFVdQ&MBb@0PB1iZU6uP literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0036.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0036.png new file mode 100644 index 0000000000000000000000000000000000000000..35fe54f6016428828c82c331d0682e5dd00756c3 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs|E3y@@f6p{+0ls#P>Ln;`P6`23DJFzqra&S(} pxmEvW*8j-Tz#Jgq+~r^978G?lNE&ixHrzYq{68% kyUBkB%WMvAUIPY(I8~81m(R8(0~IoOy85}Sb4q9e04KH;(EtDd literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0038.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0038.png new file mode 100644 index 0000000000000000000000000000000000000000..882d8bc028ec132805d957f5f4a70eedea9e307f GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs|E3y@@f6p{+0R6SiBLn;`P6`239JC-Q2^d>wK r`{RGZMWXYv3k!4b1e@LLatsV>)FoatKiuC1)WG2B>gTe~DWM4fq*E9~ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0039.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0039.png new file mode 100644 index 0000000000000000000000000000000000000000..23c8ea0c35a5cad08367714694449b8d148616e6 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl#-{5V@L&KvVzbbc4roGM`aBk o#ul{}&i{tJZVanVT$W^Dxb7?bHkv~r4yc;J)78&qol`;+0P6P?8UO$Q literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_003a.png b/mods/special/display_modpack/boards/textures/font_tinycurs_003a.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ead96ac05c44bbd7405f1655991f18e68328f0 GIT binary patch literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTx!2%>dz2tuZ;&{3^hEy;nD+vB!cVd~$GW81+ YgT_PlpX}x;pMcT~p00i_>zopr06Yv4&;S4c literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_003b.png b/mods/special/display_modpack/boards/textures/font_tinycurs_003b.png new file mode 100644 index 0000000000000000000000000000000000000000..28a08d26b783c32a78628b46508d59615ebc5e87 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTx!2%>dz2tuZq(nVk978G?lNAL2usg9#=9zk8 c(G~`VyE>fTXG)pZ0TnQKy85}Sb4q9e0CHp#761SM literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_003c.png b/mods/special/display_modpack/boards/textures/font_tinycurs_003c.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa8e08b04af888cfa4c15778f54f7afedab0861 GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl#r*3V@L&KvI6IyFVdQ&MBb@0QrIu82|tP literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_003d.png b/mods/special/display_modpack/boards/textures/font_tinycurs_003d.png new file mode 100644 index 0000000000000000000000000000000000000000..1761935e9db3c85fcc0870d532a6345ec65c42be GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl#r*3V@L&K@&eHx{LL&++pQQF YLgP8VTV_t00F-6$boFyt=akR{0POb=VgLXD literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_003e.png b/mods/special/display_modpack/boards/textures/font_tinycurs_003e.png new file mode 100644 index 0000000000000000000000000000000000000000..aeebbba918a55d231ea1792cb4dd685f14b4d68d GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl#r*3V@L&KvVzbb_2`aScN{qx YYBf22T+d2N0m?FXy85}Sb4q9e0PochssI20 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_003f.png b/mods/special/display_modpack/boards/textures/font_tinycurs_003f.png new file mode 100644 index 0000000000000000000000000000000000000000..06f0fe357f9e1610e2c2064ef917f4fc3e16bff3 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl&q(VV@L&KvVzbbc4roGx5Ju$ jn4T0GKJ6?}zstzL`jzj~U4Awlph5;uS3j3^P6?rI_6r}4hRXp25MyRboFyt=akR{0L4KZ Av;Y7A literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0041.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0041.png new file mode 100644 index 0000000000000000000000000000000000000000..271e95873b07638988cab745b77946c40da60372 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq~ttZ978G?lNYf6;BV4kGMMF| l$kNQR@V|s#!zE@WhKysvZ$lXZ5`iiiJYD@<);T3K0RT9v70&_9Bc!2%?|$=tsRq+~r^978G?lNXr%;BVpJYdLcC k=o5t<22$4IT$wx!N1h73Q#;iB9jK7O)78&qol`;+09Sq(0ssI2 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0043.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0043.png new file mode 100644 index 0000000000000000000000000000000000000000..0bac54c34124bdfb0e968f13a600d92bbc585935 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq~ttZ978G?lNYf6;BQip(rZ{? l*lO_f1Gk_yM>{hU!=5mK4{MhA1p`$wc)I$ztaD0e0su(-7Iy#u literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0044.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0044.png new file mode 100644 index 0000000000000000000000000000000000000000..8546bbab1afdd03b52e1815e281f3f9bc5f66ed5 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs|E3y@@f6p{+0Z*dTEZ!r*SYE_9Bc!2%?|$=tsRq~ttZ978G?lNYf5;BWDeVGG*v le<6>A%L#=i4}GMV84TNn--?;uu?MPT@O1TaS?83{1OQC-7PtTa literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_004a.png b/mods/special/display_modpack/boards/textures/font_tinycurs_004a.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c792211f2c78d6ebf919e65d367ad6dbe0f72a GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^96&702qYLvX?^8)8L$g8k3cq9o#^gjt&0W!tY)z4*}Q$iB} DD?c6P literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_004b.png b/mods/special/display_modpack/boards/textures/font_tinycurs_004b.png new file mode 100644 index 0000000000000000000000000000000000000000..9d351e7c7c60cfaf8071385c955777dd3051a706 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq*Odz978G?lNZ?j;BQHg(qlNz s(XftfA>U=4L$@xl{$DKZP|v_nyj$qq`?qfw0@X8ky85}Sb4q9e05?w@asU7T literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_004c.png b/mods/special/display_modpack/boards/textures/font_tinycurs_004c.png new file mode 100644 index 0000000000000000000000000000000000000000..45104cc9554aada91f2e8523f83d814c3899e701 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq!c_|978G?lNX5p;BQ&Mu$m#! nl!f;n|1l0TCjlOI4h9DO<9wf{R^H12s%7wW^>bP0l+XkKTYnZX literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_004d.png b/mods/special/display_modpack/boards/textures/font_tinycurs_004d.png new file mode 100644 index 0000000000000000000000000000000000000000..96a27a8bb209f73c495d3a90cd59ed3dff5a869b GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eW!2%@t{-`JcDJ4%A$B+ufWQm9m@*Ir}Zb@EB o9xM(kj_Et@tYQ*Mu*hI!m~d6*i9m|o7NBYdPgg&ebxsLQ02KTc1ONa4 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_004e.png b/mods/special/display_modpack/boards/textures/font_tinycurs_004e.png new file mode 100644 index 0000000000000000000000000000000000000000..d7ac6e92ee6a27aa65eadc86eac7d3f4d0ac4fb4 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs|E3y@@f6p{+0yok<568Ge@vzumi|q70~%!PC{xWt~$(697CR7oh+E literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_004f.png b/mods/special/display_modpack/boards/textures/font_tinycurs_004f.png new file mode 100644 index 0000000000000000000000000000000000000000..58055b03f631c7a0dcae5b4a591d39f5fb3afa62 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq@+Au978G?lNYf6;BPKqWbuvY gNXq3<=TTr_C_OIx)+fGVB2X2Br>mdKI;Vst0MMuu4*&oF literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0050.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0050.png new file mode 100644 index 0000000000000000000000000000000000000000..500aa9ab3cac970b8f9cf217778a41b7225c08cf GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq~ttZ978G?lNYf6;BQ>v#36N1 lL8m26Y}3MuRyG+1hVZ% literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0051.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0051.png new file mode 100644 index 0000000000000000000000000000000000000000..37b30aeb7106fbc926ee04557587e43826d10223 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq?9~e978G?lNa#+;BV4kDv)9{ pX!)?(QKDC^LBTMj@nHi4!>kIy_qTouO$VxG@O1TaS?83{1OU2E83zCW literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0052.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0052.png new file mode 100644 index 0000000000000000000000000000000000000000..840cc1b9ed295016611903271b3313ea246065e2 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bM!2%@TDA-2>DFsg#$B+ufWC@KA@=S&;ff+3A mB8d_zDSC;M1&{G+F)*xC6nka!Y4SIqS_V&7KbLh*2~7aDOFDw$B+ufWC@QC@*IY&i7Lws rmSxp6&2T%A@kZ-^@-9Y3c2S`A86t01)?aJ^YGCkm^>bP0l+XkKszDf0 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0054.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0054.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4ee5cdef6bb704ab4f1150690e7f9591fb3872 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl&q(VV@L&K@&cnD{YO}wS=gPD kGY&iu5>hy@)S7|eAS2J0A2lqifeINsUHx3vIVCg!0M|wo@c;k- literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0055.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0055.png new file mode 100644 index 0000000000000000000000000000000000000000..8667c359d054989a3eb2425d93ce061b6ed025a6 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bM!2%@TDA-2>DHTr_$B+ufDP>O=$B+ufFVdQ&MBb@0P?aLGynhq literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0058.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0058.png new file mode 100644 index 0000000000000000000000000000000000000000..ab59eb3e2b42b5dab8dd876ea469fc89f7916b5c GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eW!2%@t{-`JcDK$?Q$B+ufDQ!;|$B+ufDLqdY$B+uf_?tDFPUJKl zlCUz&Js{!~>^<+KLC5(N4e?+BH(?Q%2v;5khSf2O_g8HE^8%=o!PC{xWt~$(69B__ B98mxO literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_005b.png b/mods/special/display_modpack/boards/textures/font_tinycurs_005b.png new file mode 100644 index 0000000000000000000000000000000000000000..dc3c17581f94d4a93d2638133a18a744c3ac1bc1 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl(eUdV@L&KazoSqgboG)zF7>3 hKONJVBrb_DFw}JkzF*dE>kL%J;OXk;vd$@?2>_Wt6J!7Y literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_005c.png b/mods/special/display_modpack/boards/textures/font_tinycurs_005c.png new file mode 100644 index 0000000000000000000000000000000000000000..77f2ef194cdfa2be0505140b81af149aae65aee3 GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTx!2%>dz2tuZq=Y&g}rE1)ccr>mdKI;Vst06fJKH~;_u literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_005d.png b/mods/special/display_modpack/boards/textures/font_tinycurs_005d.png new file mode 100644 index 0000000000000000000000000000000000000000..996e0e6064fe8fb4372b36f58dcb1d8b4abd7adf GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl$587V@L&KazoSqgbp?X)(@xo g^@IiPEz)IR@Y^N${^o^{2B0biPgg&ebxsLQ0HS;pdH?_b literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_005e.png b/mods/special/display_modpack/boards/textures/font_tinycurs_005e.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9275709666ca439453d77bfba667acaa91f71a GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl!T{?V@L&KazoR90j_hc2_ZNC ebLcghaxt8{&h|_6e(h|a8U{~SKbLh*2~7Z!KoqF} literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_005f.png b/mods/special/display_modpack/boards/textures/font_tinycurs_005f.png new file mode 100644 index 0000000000000000000000000000000000000000..153ffec0d85956b6de483e8b250b41824bcee7cb GIT binary patch literal 73 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPlz^v;V@L&KvP9Sed!Z%L3=H!Q Wvi`R3t9%TUWAJqKb6Mw<&;$U+m=EOu literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0060.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0060.png new file mode 100644 index 0000000000000000000000000000000000000000..df31daf3030774d184910e928847121796c14132 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTx!2%>dz2tuZq{KX3978G?lNp-+^AvoLKlrm> d%Pxe0A#nxk??=yBx_~MeJYD@<);T3K0RXl%6-xjB literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0061.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0061.png new file mode 100644 index 0000000000000000000000000000000000000000..7aaff242dd321b15601580c90338ecddab6409cf GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Svq$E6D978G?lNTue;BPTdYdLb- f@daa&7Bj=zCa!OHmq^V5s$uYS^>bP0l+XkK%?TBC literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0062.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0062.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff008ebe3b6afc42c6e08792f6cea7f36edf29f GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Svq+~o@978G?lNYf4=s$E&m9J@q j(f^MH0=o{VOl4%yH01lFe%A8?P#uG(tDnm{r-UW|R4W({ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0063.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0063.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bb6c2a41a4e2253481f3cd35c08b00719e9f7e GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?SvqC8z3Ln;`P7bySWZ!u7t;}TH7 e$0g3Sl83?g59jwPXE8ybA_h-aKbLh*2~7Z^cM|6S literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0064.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0064.png new file mode 100644 index 0000000000000000000000000000000000000000..c85812542b160dfe72d5908950964d9d8f2b366b GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bc!2%?|$=tsRq@+Au978G?lNYf5@R#{+&#|aW h=$XFRh6#W9KgvDVy$Mvs;OXk;vd$@?2>=Mo7Lxz~ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0065.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0065.png new file mode 100644 index 0000000000000000000000000000000000000000..5e09ff081ac8808c51dd2d6f9943c717a1df89ea GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Svq@+Au978G?lNTue;BPTdo6-`@ fA!%Z1u*3?ePMiCyuaxpmpehDWS3j3^P6dz2tuZq+~o@978G?lNIFuxTpO&e%@t; j>-BH*7jPQz6*4gFtP**{F~x%qsE)zY)z4*}Q$iB}S7#S= literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0067.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0067.png new file mode 100644 index 0000000000000000000000000000000000000000..f872c2f37211a218b282f8cc9011eecb6d7f7806 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Svq~ttZ978G?lNTue;BPTdYdLcG kXa6GhV+XG^2e<(>%IgYzaKE%I8K{!M)78&qol`;+0Df~Ag8%>k literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0068.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0068.png new file mode 100644 index 0000000000000000000000000000000000000000..730e2b489d3f97428b7eaa8d67dd4c8cee5bd479 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Svq@+Dv978G?lNa#)=s%=#<|lvC iibwwoiyJ1KVqoas!~0pjYK8_-8H1;*pUXO@geCxF(-{B& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0069.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0069.png new file mode 100644 index 0000000000000000000000000000000000000000..5dff58100c7e42bfcdfcafe34d6798bd9f17a2f6 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&G0U~9!Q?3CiQBN1gkP61+1#Cb1yZ_5O|FajE a#K~~*JL_*buCy0G1q`09elF{r5}E*MOcS>N literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_006a.png b/mods/special/display_modpack/boards/textures/font_tinycurs_006a.png new file mode 100644 index 0000000000000000000000000000000000000000..19c16b846475a899b834d65e119a3e80e486a687 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTx!2%>dz2tuZq@+Dv978G?lNZ?i=#T$m-}6)c i&_R)-DTgFm7#R$1@_zohNUIH~jKR~@&t;ucLK6UFN*L+@ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_006b.png b/mods/special/display_modpack/boards/textures/font_tinycurs_006b.png new file mode 100644 index 0000000000000000000000000000000000000000..312fc631dc8f9b9c3eb5820c077aef17a725f04c GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bc!2%?|$=tsRq+~o@978G?lNZ?i=s$MwIICmG j&i^-_8l*ftWWvHAS10fxBdz2tuZq{KX3978G?lNa#(aW@c1dgA$? d-ARjq;m<$L@0mAN?FOn~@O1TaS?83{1OT*g6{-LL literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_006d.png b/mods/special/display_modpack/boards/textures/font_tinycurs_006d.png new file mode 100644 index 0000000000000000000000000000000000000000..6b8b0fe1815db37262690fb6ffe4cffd66e77b97 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq@+Au978G?lO?hq*b6XunlM_p g85mwwj9_M9xc-Ibi^xLpNT4bPPgg&ebxsLQ0J@YDa{vGU literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_006e.png b/mods/special/display_modpack/boards/textures/font_tinycurs_006e.png new file mode 100644 index 0000000000000000000000000000000000000000..a6cc6aa579de42257cd47435332839909c1e8942 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl$587V@L&Kvc#PS_8f}}7Mk=p h2{sr!G?~l5@MS93w~8enVt}d`JYD@<);T3K0RXXD6+Hj| literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_006f.png b/mods/special/display_modpack/boards/textures/font_tinycurs_006f.png new file mode 100644 index 0000000000000000000000000000000000000000..5e197670663810ed77629410df0bd2a66e35c79e GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?SvqC8z3Ln;`P7bySWZ!u77aw+(? e_|yT{Oa_MI8C>7&_nZUiVDNPHb6Mw<&;$VTZWdDj literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0070.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0070.png new file mode 100644 index 0000000000000000000000000000000000000000..634f1690b7f146ecc3254c22eb25b7eb053fe4c4 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq?A2f978G?lO?V^u$TDnF5IwT r1NXurgDrTMz|gNM_`W#bp%$o=!PC{xWt~$(69DX+6wm+w literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0072.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0072.png new file mode 100644 index 0000000000000000000000000000000000000000..a460efa24ed29eaddbcd48e865c308292212af1c GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bc!2%?|$=tsRq$E6D978G?lO+N^$nz*N98x&Z f8f+lO%g8Y8EY~-s#>KCIY8X6S{an^LB{Ts5o+A_A literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0073.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0073.png new file mode 100644 index 0000000000000000000000000000000000000000..38a37076ac61d2adf5e4575f119a740ea8bb8a12 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bc!2%?|$=tsRq+~r^978G?lNZ?k=s)$dU+c4c kXY(P~X@C2d%xPm_C}QCG!e6zZ5vY*C)78&qol`;+0IE0{;s5{u literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0074.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0074.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd4d16075503dcb176f94c830a6b0c93a780637 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?SvqC8z3Ln;`P7l{4nKju>KPubA( fDx>%UBL)U5A)YT&G&4(piWody{an^LB{Ts5)-4p7 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0075.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0075.png new file mode 100644 index 0000000000000000000000000000000000000000..0daa657c283a82b02f9d936f8cb4b45ec37c1397 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl(?shV@L&KvP8%O`<5dD3ax-W;G322WQ%mvv4FO#oFp5{3W( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_0076.png b/mods/special/display_modpack/boards/textures/font_tinycurs_0076.png new file mode 100644 index 0000000000000000000000000000000000000000..a97bf6503432493d1df35a7018e42fb8d45e7ee5 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl$587V@L&KvV_Y6`<`PWKloD@ goIGr>%d&)(ADOpb!$B+ufWQn>5_FO;ZR~z(v kmG_n4S`ZXabb*nfwg81is4GtWtOhI(g_HzDsjeSj(%JYD@<);T3K0RSCA7S{j( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_007a.png b/mods/special/display_modpack/boards/textures/font_tinycurs_007a.png new file mode 100644 index 0000000000000000000000000000000000000000..219e18081f7616886f0b24148da75844031d5da1 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl$@uFV@L&KvP8-Qd$sTOZ46T4 kUP>t(S%*RxTb?j6Z22hgVd;v6AwZQ3p00i_>zopr0NY0uWdHyG literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_007b.png b/mods/special/display_modpack/boards/textures/font_tinycurs_007b.png new file mode 100644 index 0000000000000000000000000000000000000000..bd8b1c7097fce7d58b0a06ff65d8730ce13f5323 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^96&70!2%@N#akkPl)R^lV@L&KazpcfhYp4UzC=bA l@v{b9J_}-)52D?`?Svq(nVk978G?lN*};D=^8kAC#$( cox;p8^%C!A{rMC9fC?BqUHx3vIVCg!0BaT#1ONa4 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_007d.png b/mods/special/display_modpack/boards/textures/font_tinycurs_007d.png new file mode 100644 index 0000000000000000000000000000000000000000..b4affd24f978997c4c00c9ce3653c490b78499ed GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^oIoth!2%>-Tz#Jgq!c_|978G?lN*};J9M!AQFnS_ n|MFJBtzYx`_#7g9{TUea_ys;>tT|QzRLkJ$>gTe~DWM4f;Z+(3 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_007e.png b/mods/special/display_modpack/boards/textures/font_tinycurs_007e.png new file mode 100644 index 0000000000000000000000000000000000000000..175176da6c03039a1a4f37a5f44825c915775dfc GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs|E3y@@f6p{+0#64XcLn;`PB{V+B&-^Lx%;B_% bs~0H#jEDVar2pS4Ad|t<)z4*}Q$iB}T+I@L literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_2018.png b/mods/special/display_modpack/boards/textures/font_tinycurs_2018.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d9c2d4fe39678ddbd4be6704b62270599f06b1 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&G0U~9!Q?3CiK~ERQkP61+15E!8OFCFoFfeT3 WWcqjBr^gy7$>8bg=d#Wzp$P!?8W5`h literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_2019.png b/mods/special/display_modpack/boards/textures/font_tinycurs_2019.png new file mode 100644 index 0000000000000000000000000000000000000000..4f389ee1676e4f4886408345ff7a288b5ac1fb8d GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&G0U~9!Q?3CiK~ERQkP61+15E#z73Wx1FfeRq WV*0o17JCj*lEKr}&t;ucLK6V({t$Hl literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_201c.png b/mods/special/display_modpack/boards/textures/font_tinycurs_201c.png new file mode 100644 index 0000000000000000000000000000000000000000..06b34d622b39aa307229a84e20aa489f5475b223 GIT binary patch literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Sv;&{3^hEy;nA7K91Y%qtp^)NF7 Z!>v%(-;t}9?FULTc)I$ztaD0e0svn56OjM_ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/textures/font_tinycurs_201d.png b/mods/special/display_modpack/boards/textures/font_tinycurs_201d.png new file mode 100644 index 0000000000000000000000000000000000000000..435d6f401b513e1a290ed7690c7865f232ecf231 GIT binary patch literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol`!2%>D?`?Sv;&{3^hEy;nA7K9HtT2cB*kNV{ Yh7b0vzs-UgQ-RV9p00i_>zopr08dB~kN^Mx literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/boards/tools/updatepo.sh b/mods/special/display_modpack/boards/tools/updatepo.sh new file mode 100755 index 0000000..feb2504 --- /dev/null +++ b/mods/special/display_modpack/boards/tools/updatepo.sh @@ -0,0 +1,25 @@ +#! /bin/bash + +# To create a new translation: +# msginit --locale=ll_CC -o locale/ll_CC.po -i locale/template.pot + +cd "$(dirname "${BASH_SOURCE[0]}")/.."; + +# Extract translatable strings. +xgettext --from-code=UTF-8 \ + --language=Lua \ + --sort-by-file \ + --keyword=S \ + --keyword=NS:1,2 \ + --keyword=N_ \ + --keyword=F \ + --add-comments='Translators:' \ + --add-location=file \ + -o locale/template.pot \ + $(find . -name '*.lua') + +# Update translations. +find locale -name '*.po' | while read -r file; do + echo $file + msgmerge --update $file locale/template.pot; +done diff --git a/mods/special/display_modpack/display_api/API.md b/mods/special/display_modpack/display_api/API.md new file mode 100644 index 0000000..2dfff21 --- /dev/null +++ b/mods/special/display_modpack/display_api/API.md @@ -0,0 +1,92 @@ +# Display API +This document describes Display API. Display API allows to add a dynamic display on a node. Display API limits node rotations. For wallmounted, only vertical positionning is available. For facedir, only first four position are availabel (those with default axis). + +## Provided methods +### update\_entities +**display\_api.update\_entities(pos)** + +This method triggers entities update for the display node at pos. Actual entity update is made by `on_display_update` callback associated to the entity. + +`pos`: Position of the node +### register\_display\_entity +**display\_api.register\_display\_entity(entity_name)** + +This is a helper to register entities used for display. + +`entity_name`: Name of the entity to register. + +## Provided callback implementations +### on_place +**display\_api.on\_place(itemstack, placer, pointed\_thing)** + +`on_place` node callback implementation. Display nodes should have this callback (avoid placement of horizontal display node). +### on_construct +**display\_api.on\_construct(pos)** + +`on_construct` node callback implementation. Display nodes should have this callback (creates, places and updates display entities on node construction). +### on_destruct +**display\_api.on_destruct(pos)** + +`on_destruct` node callback implementation. Display nodes should have this callback (removes display entities on node destruction). +### on_rotate +**display\_api.on\_rotate(pos, node, user, mode, new_param2)** + +`on_rotate` node callback implementation. Display nodes should have this callback (restricts rotations and rotates display entities associated with node). +### on_activate +**display\_api.on_activate(entity, staticdata)** + +`On_activate` entity callback implementation for display entities. No need of this method if display entities have been registered using `register_display_entity` (callback is already set). + +## Howto register a display node +* Register display entities with `register_display_entity` + +* Register node with : + - `on_place`, `on_construct`, `on_destruct` and `on_rotate` callbacks using display_api callbacks.\ + - `display_api` group. This will make this node have their entities updated as soon as the mapblock is loaded (Useful after /clearobjects).\ + - a `display_entities` field in node definition containing a entity name indexed table. See below for description of each display_entities fields.\ + +### Display_entities fields +`on_display_update` is a callback in charge of setting up entity texture. If not set, entity will have no texture and will be displayed as unknown item.\ +`depth`, `right` and `top`: Entity position regarding to node facedir/wallmounted main axis.\ +Values for these fields can be any number between -1.5 and 1.5 (default value is 0). Position 0,0,0 is the center of the node.\ +`depth` goes from front (-0.5) to rear (0.5), `top` goes from bottom (-0.5) to top (0.5) and `right` goes from left (-0.5) to right (0.5).\ +`yaw`: Entity yaw in radians, regarding to main axis. Default is 0, aligned to node face. + +In order to avoid flickering text, it's better to have text a little behind node surface. A good spacing value is given by `display_api.entity_spacing` variable. + +### Example + + display_api.register_display_entity("mymod:entity1") + display_api.register_display_entity("mymod:entity2") + + function my_display_update1(pos, objref) + objref:set_properties({ textures= {"mytexture1.png"}, + visual_size = {x=1, y=1} }) + end + + function my_display_update2(pos, objref) + objref:set_properties({ textures= {"mytexture2.png"}, +                         visual_size = {x=1, y=1} }) + end + + minetest.register_node("mymod:test_display_node", { + ... + paramtype2 = "facedir", + ... + groups = { display_api = 1, ... }, + ... + display_entities = { + ["mymod:entity1"] = { + depth = 0.3, + on_display_update = my_display_update1 }, + ["mymod:entity1"] = { + depth = 0.2, top = 0.1, + on_display_update = my_display_update2 }, + }, + ... + on_place = display_api.on_place, + on_construct = display_api.on_construct, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, + ... + }) diff --git a/mods/special/display_modpack/display_api/LICENSE.txt b/mods/special/display_modpack/display_api/LICENSE.txt new file mode 100644 index 0000000..341c30b --- /dev/null +++ b/mods/special/display_modpack/display_api/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/mods/special/display_modpack/display_api/README.md b/mods/special/display_modpack/display_api/README.md new file mode 100644 index 0000000..73acdf9 --- /dev/null +++ b/mods/special/display_modpack/display_api/README.md @@ -0,0 +1,34 @@ +# Display API + +This library's purpose is to ease creation of nodes with one or more displays on sides. For example, signs and clocks. Display can be dynamic and/or different for each node instance. + +**Limitations**: This lib uses entities to draw display. This means display has to be vertical (and "upside up") on Minetest before version 5.0. + +**Dependancies**:default + +**License**: LGPLv2 + +**API**: See [API.md](https://github.com/pyrollo/display_modpack/blob/master/display_api/API.md) document please. + +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=19365) at the Minetest forums. + +## Deprecation notice (for modders) + +### December 2018 +Following objects are deprecated, shows a warning in log when used: +* `display_modpack_node` group (use `display_api` group instead); +* `display_lib_node` group (use `display_api` group instead); +* `display_lib` global table (use `display_api` global table instead); + +These objects will be removed in the future. + +## Change log +### 2019-03-14 +- __dispay_api__: Display API now detects automatically whenr rotation restrictions have to be applied. + +### 2019-03-09 +- __display_api__: Display nodes can be rotated in every directions (if running Minetest 5 or above). +- __display_api__: New setting to restrict rotations to Minetest 0.4 abilities (restriction enabled by default). + +### 2018-12-14 +- __display_api__: New `yaw` attributes, entities can now have different angles with node. diff --git a/mods/special/display_modpack/display_api/copyright.txt b/mods/special/display_modpack/display_api/copyright.txt new file mode 100644 index 0000000..e242c7c --- /dev/null +++ b/mods/special/display_modpack/display_api/copyright.txt @@ -0,0 +1,5 @@ +Code by Pierre-Yves Rollo (pyrollo) +Contributors: +(gpcf): Compatibility with signs lib +(Thomas--S): Fix /clearobjects bug +(12Me21): on_place and on_rotate improvements diff --git a/mods/special/display_modpack/display_api/depends.txt b/mods/special/display_modpack/display_api/depends.txt new file mode 100644 index 0000000..e69de29 diff --git a/mods/special/display_modpack/display_api/deprecation.lua b/mods/special/display_modpack/display_api/deprecation.lua new file mode 100644 index 0000000..b041f6f --- /dev/null +++ b/mods/special/display_modpack/display_api/deprecation.lua @@ -0,0 +1,78 @@ +--[[ + display_api mod for Minetest - Library to add dynamic display + capabilities to nodes + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +-- Deprecation + +function deprecated_group(deprecated_group, replacement_group) + for name, ndef in pairs(minetest.registered_nodes) do + if ndef.groups and ndef.groups[deprecated_group] then + minetest.log("warning", string.format( + 'Node %s belongs to deprecated "%s" group which should be replaced with new "%s" group.', + name, deprecated_group, replacement_group)) + end + end +end + +function deprecated_global_table(deprecated_global_name, replacement_global_name) + assert(type(deprecated_global_name) == 'string', "deprecated_global_name should be a string.") + assert(type(replacement_global_name) == 'string', "replacement_global_name should be a string.") + assert(deprecated_global_name ~= '', "deprecated_global_name should not be empty.") + assert(replacement_global_name ~= '', "replacement_global_name should not be empty.") + assert(rawget(_G, deprecated_global_name) == nil, "deprecated global does not exist.") + if _G[replacement_global_name] == nil then + minetest.log('warning', string.format( + 'Replacement global "%s" does not exists.', replacement_global_name)) + return + end + local meta = { + deprecated = deprecated_global_name, + replacement = replacement_global_name, + __index = function(table, key) + local meta = getmetatable(table) + local dbg = debug.getinfo(2, "lS") + minetest.log("warning", string.format( + 'Accessing deprecated "%s" table, "%s" should be used instead (%s:%d).', + meta.deprecated, meta.replacement, (dbg.short_src or 'unknown'), + (dbg.currentline or 0))) + return _G[meta.replacement][key] + end, + __newindex = function(table, key, value) + local meta = getmetatable(table) + local dbg = debug.getinfo(2, "lS") + minetest.log("warning", string.format( + 'Accessing deprecated "%s" table, "%s" should be used instead (%s:%d).', + meta.deprecated, meta.replacement, (dbg.short_src or 'unknown'), + (dbg.currentline or 0))) + _G[meta.replacement][key]=value + end, + } + rawset(_G, deprecated_global_name, {}) + setmetatable(_G[deprecated_global_name], meta) +end + + +-- deprecated(1) -- December 2018 - Deprecation of groups display_modpack_node and display_lib_node +-- Group to be removed from display API register_lbm +minetest.after(0, function() + deprecated_group("display_modpack_node", "display_api") + deprecated_group("display_lib_node", "display_api") +end) + +-- deprecated(2) -- December 2018 - Deprecation of display_lib +deprecated_global_table('display_lib', 'display_api') diff --git a/mods/special/display_modpack/display_api/display.lua b/mods/special/display_modpack/display_api/display.lua new file mode 100644 index 0000000..fa7c854 --- /dev/null +++ b/mods/special/display_modpack/display_api/display.lua @@ -0,0 +1,325 @@ +--[[ + display_api mod for Minetest - Library to add dynamic display + capabilities to nodes + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +-- Prefered gap between node and entity +-- Entity positionment is up to mods but it is a good practice to use this +-- variable as spacing between entity and node +display_api.entity_spacing = 0.002 + +-- Maximum entity position relative to the node pos +local max_entity_pos = 1.5 + +local wallmounted_rotations = { + [0]={x=1, y=0, z=0}, [1]={x=3, y=0, z=0}, + [2]={x=0, y=3, z=0}, [3]={x=0, y=1, z=0}, + [4]={x=0, y=0, z=0}, [5]={x=0, y=2, z=0}, + [6]={x=1, y=0, z=0}, [7]={x=1, y=1, z=1}, +} + +local facedir_rotations = { + [ 0]={x=0, y=0, z=0}, [ 1]={x=0, y=3, z=0}, + [ 2]={x=0, y=2, z=0}, [ 3]={x=0, y=1, z=0}, + [ 4]={x=3, y=0, z=0}, [ 5]={x=0, y=3, z=3}, + [ 6]={x=1, y=0, z=2}, [ 7]={x=0, y=1, z=1}, + [ 8]={x=1, y=0, z=0}, [ 9]={x=0, y=3, z=1}, + [10]={x=3, y=0, z=2}, [11]={x=0, y=1, z=3}, + [12]={x=0, y=0, z=1}, [13]={x=3, y=0, z=1}, + [14]={x=2, y=0, z=1}, [15]={x=1, y=0, z=1}, + [16]={x=0, y=0, z=3}, [17]={x=1, y=0, z=3}, + [18]={x=2, y=0, z=3}, [19]={x=3, y=0, z=3}, + [20]={x=0, y=0, z=2}, [21]={x=0, y=1, z=2}, + [22]={x=0, y=2, z=2}, [23]={x=0, y=3, z=2}, +} + +-- Compute other useful values depending on wallmounted and facedir param +local wallmounted_values = {} +local facedir_values = {} + +local function compute_values(r) + local function rx(v) return { x=v.x, y=v.z, z=-v.y} end + local function ry(v) return { x=-v.z, y=v.y, z=v.x} end + local function rz(v) return { x=v.y, y=-v.x, z=v.z} end + + local d = { x = 0, y = 0, z = 1 } + local w = { x = 1, y = 0, z = 0 } + local h = { x = 0, y = 1, z = 0 } + + -- Important to keep z rotation first (not same results) + for _ = 1, r.z do d, w, h = rz(d), rz(w), rz(h) end + for _ = 1, r.x do d, w, h = rx(d), rx(w), rx(h) end + for _ = 1, r.y do d, w, h = ry(d), ry(w), ry(h) end + + return { + rotation=r, depth=d, width=w, height=h, + restricted=(r.x==0 and r.z==0) } +end + +for i, r in pairs(facedir_rotations) do + facedir_values[i] = compute_values(r) +end + +for i, r in pairs(wallmounted_rotations) do + wallmounted_values[i] = compute_values(r) +end + +-- Detect rotation restriction +local rotation_restricted = nil +minetest.register_entity('display_api:dummy_entity', { + collisionbox = { 0, 0, 0, 0, 0, 0 }, + visual = "upright_sprite", + textures = {} }) + +function display_api.is_rotation_restricted() + if rotation_restricted == nil then + local objref = minetest.add_entity( + {x=0, y=0, z=0}, 'display_api:dummy_entity') + if objref then + rotation_restricted = objref.set_rotation == nil + objref:remove() + end + end + return rotation_restricted +end + +-- Clip position property to maximum entity position + +local function clip_pos_prop(posprop) + if posprop then + return math.max(-max_entity_pos, math.min(max_entity_pos, posprop)) + else + return 0 + end +end + +-- Get values needed for orientation computation of node + +local function get_orientation_values(node) + local ndef = minetest.registered_nodes[node.name] + + if ndef then + local paramtype2 = ndef.paramtype2 + if paramtype2 == "wallmounted" or paramtype2 == "colorwallmounted" then + return wallmounted_values[node.param2 % 8] + elseif paramtype2 == "facedir" or paramtype2 == "colorfacedir" then + return facedir_values[node.param2 % 32] + else + -- No orientation or unknown orientation type + return facedir_values[0] + end + end +end + +-- Gets the display entities attached with a node. +-- Add missing and remove duplicates + +local function get_display_objrefs(pos, create) + local objrefs = {} + local ndef = minetest.registered_nodes[minetest.get_node(pos).name] + if ndef and ndef.display_entities then + for _, objref in + ipairs(minetest.get_objects_inside_radius(pos, max_entity_pos)) do + local entity = objref:get_luaentity() + if entity and ndef.display_entities[entity.name] and + entity.nodepos and vector.equals(pos, entity.nodepos) then + if objrefs[entity.name] then + objref:remove() -- Remove duplicates + else + objrefs[entity.name] = objref + end + end + end + if create then + -- Add missing + for name, _ in pairs(ndef.display_entities) do + if not objrefs[name] then + objrefs[name] = minetest.add_entity(pos, name, + minetest.serialize({ nodepos = pos })) + end + end + end + end + return objrefs +end + +--- Force entity update : position and texture +function display_api.update_entities(pos) + + local node = minetest.get_node(pos) + local ndef = minetest.registered_nodes[node.name] + local ov = get_orientation_values(node) + if not ndef or not ov then + return + end + + for _, objref in pairs(get_display_objrefs(pos, true)) do + local edef = ndef.display_entities[objref:get_luaentity().name] + local depth = clip_pos_prop(edef.depth) + local right = clip_pos_prop(edef.right) + local top = clip_pos_prop(edef.top) + + objref:set_pos({ + x = pos.x + ov.depth.x*depth + ov.width.x*right - ov.height.x*top, + y = pos.y + ov.depth.y*depth + ov.width.y*right - ov.height.y*top, + z = pos.z + ov.depth.z*depth + ov.width.z*right - ov.height.z*top, + }) + + if objref.set_rotation then + objref:set_rotation({ + x = ov.rotation.x*math.pi/2, + y = ov.rotation.y*math.pi/2 + (edef.yaw or 0), + z = ov.rotation.z*math.pi/2, + }) + else + if ov.rotation.x ~=0 or ov.rotation.y ~= 0 then + minetest.log("warning", string.format( + "[display_api] unable to rotate correctly entity for node at %s without set_rotation method.", + minetest.pos_to_string(pos))) + end + objref:set_yaw(ov.rotation.y*math.pi/2 + (edef.yaw or 0)) + end + + -- Call on_display_update callback of a node for one of its display entities + if edef.on_display_update then + edef.on_display_update(pos, objref) + end + end +end + +--- On_activate callback for display_api entities. Calls on_display_update callbacks +--- of corresponding node for each entity. +function display_api.on_activate(entity, staticdata) + if entity then + if string.sub(staticdata, 1, string.len("return")) == "return" then + local data = minetest.deserialize(staticdata) + if data and type(data) == "table" then + entity.nodepos = data.nodepos + end + entity.object:set_armor_groups({immortal=1}) + end + + if entity.nodepos then + local node = minetest.get_node(entity.nodepos) + local ndef = minetest.registered_nodes[node.name] + if ndef and ndef.display_entities then + local edef = ndef.display_entities[entity.name] + if edef then + -- Call on_display_update callback of the entity to build texture + if edef.on_display_update then + edef.on_display_update(entity.nodepos, entity.object) + end + return + end + end + end + -- If we got here, this display entity is buggy and should be removed + entity.object:remove() + end +end + +--- On_place callback for display_api items. +-- Does nothing more than preventing node from being placed on ceiling or ground +-- TODO:When MT<5 is not in use anymore, simplify this +function display_api.on_place(itemstack, placer, pointed_thing, override_param2) + local ndef = itemstack:get_definition() + local dir = { + x = pointed_thing.under.x - pointed_thing.above.x, + y = pointed_thing.under.y - pointed_thing.above.y, + z = pointed_thing.under.z - pointed_thing.above.z, + } + + local rotation_restriction = display_api.is_rotation_restricted() + + if rotation_restriction then + -- If item is not placed on a wall, use the player's view direction instead + if dir.x == 0 and dir.z == 0 then + dir = placer:get_look_dir() + end + dir.y = 0 + end + + local param2 = 0 + if ndef then + if ndef.paramtype2 == "wallmounted" or + ndef.paramtype2 == "colorwallmounted" then + param2 = minetest.dir_to_wallmounted(dir) + + elseif ndef.paramtype2 == "facedir" or + ndef.paramtype2 == "colorfacedir" then + param2 = minetest.dir_to_facedir(dir, not rotation_restriction) + end + end + return minetest.item_place(itemstack, placer, pointed_thing, + param2 + (override_param2 or 0)) +end + +--- On_construct callback for display_api items. +-- Creates entities and update them. +function display_api.on_construct(pos) + display_api.update_entities(pos) +end + +--- On_destruct callback for display_api items. +-- Removes entities. +function display_api.on_destruct(pos) + for _, objref in pairs(get_display_objrefs(pos)) do + objref:remove() + end +end + +-- On_rotate (screwdriver) callback for display_api items. Prevents invalid +-- rotations and reorients entities. +function display_api.on_rotate(pos, node, user, _, new_param2) + node.param2 = new_param2 + local ov = get_orientation_values(node) + if not ov then + return + end + + if ov.restricted or not display_api.is_rotation_restricted() then + minetest.swap_node(pos, node) + display_api.update_entities(pos) + return true + else + return false + end +end + +--- Creates display entity with some fields and the on_activate callback +function display_api.register_display_entity(entity_name) + if not minetest.registered_entities[entity_name] then + minetest.register_entity(':'..entity_name, { + collisionbox = { 0, 0, 0, 0, 0, 0 }, + visual = "upright_sprite", + textures = {}, + on_activate = display_api.on_activate, + get_staticdata = function(self) + return minetest.serialize({ nodepos = self.nodepos }) + end, + }) + end +end + +minetest.register_lbm({ + label = "Update display_api entities", + name = "display_api:update_entities", + run_at_every_load = true, + nodenames = {"group:display_api", + "group:display_modpack_node", "group:display_lib_node"}, -- See deprecated(1) + action = function(pos, node) display_api.update_entities(pos) end, +}) diff --git a/mods/special/display_modpack/display_api/init.lua b/mods/special/display_modpack/display_api/init.lua new file mode 100644 index 0000000..f1e54e8 --- /dev/null +++ b/mods/special/display_modpack/display_api/init.lua @@ -0,0 +1,31 @@ +--[[ + display_api mod for Minetest - Library to add dynamic display + capabilities to nodes + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +-- Global variables +------------------- + +display_api = {} +display_api.name = minetest.get_current_modname() +display_api.path = minetest.get_modpath(display_api.name) + +-- Inclusions +------------- + +dofile(display_api.path.."/display.lua") +dofile(display_api.path.."/deprecation.lua") diff --git a/mods/special/display_modpack/display_api/mod.conf b/mods/special/display_modpack/display_api/mod.conf new file mode 100644 index 0000000..d0b1da7 --- /dev/null +++ b/mods/special/display_modpack/display_api/mod.conf @@ -0,0 +1,2 @@ +name=display_api +description=A library for adding dynamic textures on nodes diff --git a/mods/special/display_modpack/font_api/API.md b/mods/special/display_modpack/font_api/API.md new file mode 100644 index 0000000..80b1121 --- /dev/null +++ b/mods/special/display_modpack/font_api/API.md @@ -0,0 +1,201 @@ +# Font API +This document describes Font API. Font API creates textures for font display on entities. + +## Settings +### default_font +Name of the font to be used when no font is given. The font should be registered. + +If no default\_font given or if default\_font given but not registered, the first registered font will be used as default. + +## Use font_api with display_api (to display text on nodes) +### Base setup +Font_api offers a direct integration with display_api to display text on nodes. + +First of all, create a display node with an entity. +To do this, refer to API.md in display_api mod, in particular "Howto register a display node". + +The only requirement then is to connect the `on_display_update` callback of the display entity to `font_api.on_display_update`: + +``` +minetest.register_node("mymod:test_text_node", { + ... + paramtype2 = "facedir", + ... + groups = { display_api = 1, ... }, + ... + display_entities = { + ["mymod:text"] = { + depth = -0.5 - display_api.entity_spacing, + on_display_update = font_api.on_display_update }, + } + ... + on_place = display_api.on_place, + on_construct = display_api.on_construct, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, + ... +}) +``` + +At this step, your node already displays text form "display_text" (by default) node meta. If you want to store your text into another meta data field, add a `meta_text` field to display entity definition. + +But it uses defaults (default font, default size, default color). Likely you need something more. + +### Style your text +Font style and size can be chosen by adding some more entries to the display_entities definition table. + +#### Font size +Font size can be defined in various ways (maybe more in the future). +Start with a number of lines, and font_api will make it fit to the entity size. + * `maxlines` or `lines`: Number of maximum lines of text to be displayed. The font height will be adjusted accordingly. + +Then specify the char width. Two methods available: + * `aspect_ratio`: Defines the aspect ratio of chars. Works with all fonts. Should not be used if `columns` is specified. + * `columns`: Only if using a fixed width font, specifies the number of columns to display. + +#### Font style + * `font_name`: name of the font to use. Should correspond to a registered font (from a font mod). If not specified or font not found, default font is used. + * `color`: color to be used (default black). + * `halign`: Horizontal alignment: "left", "center" or "right" (default "center"). + * `valign`: Vertical alignement: "top", "middle" or "bottom" (default "middle"). + +### Example +Using blue //botic// font, three lines height, aligned top left. Text stored in "text" node meta. +``` +minetest.register_node("mymod:test_text_node", { + ... + ... + display_entities = { + ["mymod:text"] = { + depth = -0.5 - display_api.entity_spacing, + on_display_update = font_api.on_display_update + meta_text = "text", + font_name = "botic", + color = "#0000FF", + maxlines = 3, + aspect_ratio = 0.5, + halign = "left", + valign = "top", + }, + } + ... +}) +``` +## Provided methods +### font_api.get_default_font_name() +Returns de default font name. + +### font_api.register_font(font_name, font_def) +Register a new font. + * `font_name`: Name of the font to register. If registering different sizes of the same font, add size in the font name (e.g. times_10, times_12...). + * `font_def`: Font definition table (see **Font definition table** below). + +### font_api.on_display_update(pos, objref) +Standard on_display_update entity callback. + * `pos`: Node position + * `objref`: Object reference of entity + +Node should have a corresponding display_entity with size, resolution and maxlines fields and optionally halign, valign and color fields. + +## Font definition table +Font definition table used by **font_api.register_font** and **font\_api.Font:new** may/can contain following elements: + +* `height` (required): Font height in pixels (all font textures should have the same height) . +* `widths` (required): Array of character widths in pixels, indexed by UTF codepoints. +* `margintop` (optional): Margin (in texture pixels) added on top of each char texture. +* `marginbottom` (optional): Margin (in texture pixels) added at bottom of each char texture. +* `linespacing` (optional): Spacing (in texture pixels) between each lines. + +`margintop`, `marginbottom` and `linespacing` can be negative numbers (default 0) and are to be used to adjust various font styles to each other. + +Font attributes around a single char:\ +![Font attributes on a char](doc/font.svg) + +Font attributes effects on several lines:\ +![Font attributes on lines](doc/lines.svg) + +#### Additional requirements + +Font must have a char 0 which will be used to display any unknown char. + +All textures corresponding to the indexes in widths array should be present in textures directory with a name matching the pattern : + +> font\_**{font_name}**_**{utf_code}**.png + +**{font\_name}**: Name of the font as given in the first argument + +**{utf\_code}**: UTF code of the char in 4 hexadecimal digits + +Example : font_courrier_0041.png is for the "A" char in the "courrier" font. + +To ease that declaration (specially to build the **widths** array), a shell is provided to build a {font\_name}.lua file from the texture files (see provided tools). + +## Provided tools + +Still in early stage of development, these tools are helpers to create font mods. + +### make_font_texture.sh + +This scripts takes a .ttf file as input and create one .png file per char, that can be used as font texture. Launch it from your future font mod directory. + +__Advice__ + +This script works much better with pixels font, providing the correct height. There is no antialiasing at all, vector fonts and bad heights gives very ugly results. + +__Syntax__ + +**make\_font\_texture.sh {fontfile} {fontname} {fontsize}** + +**{fontfile}**: A TTF font file to use to create textures. +**{fontname}**: The font name to be used in font_api (should be simple, with no spaces). +**{fontsize}**: Font height to be rendered. + +### make_font_lua.sh + +This script analyses textures in textures directory and creates a font\_{font\_name}.lua files with a call to register_font with images information. Launch it from your future font mod directory. + +Once the font\_{font\_name}.lua created, it can be included by a init.lua file or directly renamed to init.lua if you are creating a simple font mod. + +__Syntax__ + +**make\_font_lua.sh {fontname}** + +**{fontname}**: The font name to be used in font_api (same as given to make\_font\_texture.sh) + +### An exemple generating a font mod + + mkdir font_myfont + cd font_myfont + //tools/make_font_texture.sh myfont.ttf myfont 12 + //tools/make_font_lua.sh myfont + mv font_myfont.lua init.lua + +## Font class +A font usable with font API. This class is supposed to be for internal use but who knows. + +### font\_api.Font:new(def) +Create a new font object. + * `def` is a table containing font definition. See **Font definition table** above. + +### font:get_char_width(codepoint) +Returns the width of char `codepoint` in texture pixels. + * `codepoint`: Unicode codepoint of char. + +### font:get_height(nb_of_lines) +Returns line(s) height. Takes care of top and bottom margins and line spacing. + * `nb_of_lines`: Number of lines in the text. + +### font:get_width(line) +Returns the width of a text line. Beware, if line contains any new line char, they are ignored. + * `line`: Line of text which the width will be computed. + +### font:renter(text, texturew, textureh, style) +Builds texture for a multiline colored text. + * `text`: Text to be rendered. + * `texturew`: Width of the texture (extra text will be truncated). + * `textureh`: Height of the texture (extra text will be truncated). + * `style`: A table with style indications: + - `lines` or `maxlines`: Maximum number of lines (default none). + - `halign`: Horizontal text align: "left"/"center"/"right" (default "center") + - `valign`: Vertical text align: "top"/"middle"/"bottom" (default "middle") + - `color`: Color of the text (default black) diff --git a/mods/special/display_modpack/font_api/LICENSE.txt b/mods/special/display_modpack/font_api/LICENSE.txt new file mode 100644 index 0000000..341c30b --- /dev/null +++ b/mods/special/display_modpack/font_api/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/mods/special/display_modpack/font_api/README.md b/mods/special/display_modpack/font_api/README.md new file mode 100644 index 0000000..ff1dd98 --- /dev/null +++ b/mods/special/display_modpack/font_api/README.md @@ -0,0 +1,31 @@ +# Font API + +A library for rendernig text on textures (to be used with display_api for sign creation). + +**Dependancies**: default + +**License**: LGPL + +(Default font taken from VanessaE's homedecor/signs_lib, originally under WTFPL) + +**API**: See [API.md](https://github.com/pyrollo/display_modpack/blob/master/font_api/API.md) document please. + +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=13563) at the Minetest forums. + +## Extra fonts + +You can add fonts by installing fonts mod. Be aware that each font comes with numerous textures. This can result in slowing media downloading and/or client display. + +Font mods can be found here: + + * [Metro](https://github.com/pyrollo/display_modpack/tree/master/font_metro): A multipurpose font with many chars (uppercase, lowercase and accentuated latin letters, usual signs, cyrillic and greek letters). + * [OldWizard](https://github.com/pyrollo/font_oldwizard): An old style gothic font. + * [Botic](https://github.com/pyrollo/font_botic): A scifi style font. + + ## Deprecation notice (for modders) + + ### December 2018 + Following object is deprecate, shows a warning in log when used: + * `font_lib` global table (use `font_api` global table instead); + + This object will be removed in the future. diff --git a/mods/special/display_modpack/font_api/copyright.txt b/mods/special/display_modpack/font_api/copyright.txt new file mode 100644 index 0000000..ceb5446 --- /dev/null +++ b/mods/special/display_modpack/font_api/copyright.txt @@ -0,0 +1,3 @@ +Code by Pierre-Yves Rollo (pyrollo) +Contributors: +Andrzej Pieńkowski (apienk): Unicode support and tool for creating texturess diff --git a/mods/special/display_modpack/font_api/depends.txt b/mods/special/display_modpack/font_api/depends.txt new file mode 100644 index 0000000..88fa963 --- /dev/null +++ b/mods/special/display_modpack/font_api/depends.txt @@ -0,0 +1 @@ +display_api? diff --git a/mods/special/display_modpack/font_api/deprecation.lua b/mods/special/display_modpack/font_api/deprecation.lua new file mode 100644 index 0000000..1ffed11 --- /dev/null +++ b/mods/special/display_modpack/font_api/deprecation.lua @@ -0,0 +1,59 @@ +--[[ + font_api mod for Minetest - Library creating textures with fonts and text + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +-- Deprecation + +function deprecated_global_table(deprecated_global_name, replacement_global_name) + assert(type(deprecated_global_name) == 'string', "deprecated_global_name should be a string.") + assert(type(replacement_global_name) == 'string', "replacement_global_name should be a string.") + assert(deprecated_global_name ~= '', "deprecated_global_name should not be empty.") + assert(replacement_global_name ~= '', "replacement_global_name should not be empty.") + assert(rawget(_G, deprecated_global_name) == nil, "deprecated global does not exist.") + if _G[replacement_global_name] == nil then + minetest.log('warning', string.format( + 'Replacement global "%s" does not exists.', replacement_global_name)) + return + end + local meta = { + deprecated = deprecated_global_name, + replacement = replacement_global_name, + __index = function(table, key) + local meta = getmetatable(table) + local dbg = debug.getinfo(2, "lS") + minetest.log("warning", string.format( + 'Accessing deprecated "%s" table, "%s" should be used instead (%s:%d).', + meta.deprecated, meta.replacement, (dbg.short_src or 'unknown'), + (dbg.currentline or 0))) + return _G[meta.replacement][key] + end, + __newindex = function(table, key, value) + local meta = getmetatable(table) + local dbg = debug.getinfo(2, "lS") + minetest.log("warning", string.format( + 'Accessing deprecated "%s" table, "%s" should be used instead (%s:%d).', + meta.deprecated, meta.replacement, (dbg.short_src or 'unknown'), + (dbg.currentline or 0))) + _G[meta.replacement][key]=value + end, + } + rawset(_G, deprecated_global_name, {}) + setmetatable(_G[deprecated_global_name], meta) +end + +-- deprecated(2) -- December 2018 - Deprecation of font_lib +deprecated_global_table('font_lib', 'font_api') diff --git a/mods/special/display_modpack/font_api/display_api.lua b/mods/special/display_modpack/font_api/display_api.lua new file mode 100644 index 0000000..51a396d --- /dev/null +++ b/mods/special/display_modpack/font_api/display_api.lua @@ -0,0 +1,76 @@ +--[[ + font_api mod for Minetest - Library creating textures with fonts and text + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] +-- Integration with display API + +if minetest.get_modpath("display_api") then + --- Standard on_display_update entity callback. + -- Node should have properly configured display_entity. + -- @param pos Node position + -- @param objref Object reference of entity + + font_api.on_display_update = function (pos, objref) + local meta = minetest.get_meta(pos) + local ndef = minetest.registered_nodes[minetest.get_node(pos).name] + local entity = objref:get_luaentity() + + if not entity or not ndef.display_entities[entity.name] then + return + end + + local def = ndef.display_entities[entity.name] + local font = font_api.get_font(meta:get_string("font") ~= "" + and meta:get_string("font") or def.font_name) + + local text = meta:get_string(def.meta_text or "display_text") + + -- Compute entity resolution accroding to given attributes + local texturew, textureh + textureh = font:get_height(def.lines or def.maxlines or 1) + + if def.columns then + if font.fixedwidth then + texturew = def.columns * font.fixedwidth + if def.aspect_ratio then + minetest.log('warning', "[font_api] 'aspect_ratio' ignored because 'columns' is specified") + end + else + minetest.log('warning', "[font_api] 'columns' ignored because '"..font.name.."' is not a fixed width font.") + end + end + + if not texturew then + if not def.aspect_ratio then + minetest.log('warning', "[font_api] No 'aspect_ratio' specified, using default 1.") + end + texturew = textureh * def.size.x / def.size.y / (def.aspect_ratio or 1) + end + + objref:set_properties({ + textures={ font:render(text, texturew, textureh, { + lines = def.maxlines or def.lines, + halign = def.halign, + valign = def.valign, + color = def.color} ) }, + visual_size = def.size, + }) + end +else + font_api.on_display_update = function (pos, objref) + minetest.log('error', '[font_api] font_api.on_display_update called but display_api mod not enabled.') + end +end diff --git a/mods/special/display_modpack/font_api/doc/font.svg b/mods/special/display_modpack/font_api/doc/font.svg new file mode 100644 index 0000000..e4e8757 --- /dev/null +++ b/mods/special/display_modpack/font_api/doc/font.svg @@ -0,0 +1,463 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + Texture Height + + Texture Width + + + + MarginTop + Margin Bottom + + Line Height + + + diff --git a/mods/special/display_modpack/font_api/doc/lines.svg b/mods/special/display_modpack/font_api/doc/lines.svg new file mode 100644 index 0000000..f75880f --- /dev/null +++ b/mods/special/display_modpack/font_api/doc/lines.svg @@ -0,0 +1,544 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + Line Height + + + Text Height + Line Spacing + + + + + + + + + diff --git a/mods/special/display_modpack/font_api/fallbacks.lua b/mods/special/display_modpack/font_api/fallbacks.lua new file mode 100644 index 0000000..da3ff03 --- /dev/null +++ b/mods/special/display_modpack/font_api/fallbacks.lua @@ -0,0 +1,175 @@ +--[[ + font_api mod for Minetest - Library creating textures with fonts and text + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +-- This is the unicode char fallback map. If a char is not present in +-- font, this maps indicates which char to try to use instead next. + +return { + -- Lowercase chars + ['a'] = 'A', ['b'] = 'B', ['c'] = 'C', ['d'] = 'D', + ['e'] = 'E', ['f'] = 'F', ['g'] = 'G', ['h'] = 'H', + ['i'] = 'I', ['j'] = 'J', ['k'] = 'K', ['l'] = 'L', + ['m'] = 'M', ['n'] = 'N', ['o'] = 'O', ['p'] = 'P', + ['q'] = 'Q', ['r'] = 'R', ['s'] = 'S', ['t'] = 'T', + ['u'] = 'U', ['v'] = 'V', ['w'] = 'W', ['x'] = 'X', + ['y'] = 'Y', ['z'] = 'Z', + + -- Special + ['¢'] = 'c', ['£'] = 'L', ['¥'] = 'Y', ['€'] = 'E', + ['©'] = '(C)', ['®'] = '(R)', ['™'] = 'TM', + ['ª'] = 'a', ['º'] = 'o', + ['«'] = '"', ['»'] = '"', ['´'] = '\'', + ['¹'] = '1', ['²'] = '2', ['³'] = '3', + ['µ'] = 'u', ['¤'] = 'o', + ['¼'] = '1/4', ['½'] = '1/2', ['¾'] = '3/4', + ['⅛'] = '1/8', ['⅜'] = '3/8', ['⅝'] = '5/8', ['⅞'] = '7/8', + ['¿'] = '?', + + -- Upper case accents + ['À'] = 'A', ['Á'] = 'A', ['Â'] = 'A', ['Ã'] = 'A', + ['Ä'] = 'A', ['Å'] = 'A', + ['Æ'] = 'AE', ['Ç'] = 'C', + ['È'] = 'E', ['É'] = 'E', ['Ê'] = 'E', ['Ë'] = 'E', + ['Ì'] = 'I', ['Í'] = 'I', ['Î'] = 'I', ['Ï'] = 'I', + ['Ð'] = 'D', ['Ñ'] = 'N', + ['Ò'] = 'O', ['Ó'] = 'O', ['Ô'] = 'O', ['Õ'] = 'O', + ['Ö'] = 'O', ['Ø'] = 'O', + ['Ú'] = 'U', ['Ù'] = 'U', ['Û'] = 'U', ['Ü'] = 'U', + ['×'] = 'x', ['Ý'] = 'Y', + + -- Lower case accents + ['à'] = 'a', ['à'] = 'a', ['á'] = 'a', ['â'] = 'a', + ['ã'] = 'a', ['ä'] = 'a', ['å'] = 'a', + ['æ'] = 'ae', ['ç'] = 'c', + ['è'] = 'e', ['é'] = 'e', ['ê'] = 'e', ['ë'] = 'e', + ['ì'] = 'i', ['í'] = 'i', ['î'] = 'i', ['ï'] = 'i', + ['ð'] = 'd', ['ñ'] = 'n', + ['ò'] = 'o', ['ó'] = 'o', ['ô'] = 'o', ['õ'] = 'o', + ['ö'] = 'o', ['ø'] = 'o', + ['ù'] = 'u', ['ú'] = 'u', ['û'] = 'u', ['ü'] = 'u', + ['ý'] = 'y', ['ÿ'] = 'y', + + -- Extended latin A + + ['Ā'] = 'A', ['ā'] = 'a', ['Ă'] = 'A', ['ă'] = 'a', + ['Ą'] = 'A', ['ą'] = 'a', ['Ć'] = 'C', ['ć'] = 'c', + ['Ĉ'] = 'C', ['ĉ'] = 'c', ['Ċ'] = 'C', ['ċ'] = 'c', + ['Č'] = 'C', ['č'] = 'c', ['Ď'] = 'D', ['ď'] = 'd', + ['Đ'] = 'D', ['đ'] = 'd', ['Ē'] = 'E', ['ē'] = 'e', + ['Ĕ'] = 'E', ['ĕ'] = 'e', ['Ė'] = 'E', ['ė'] = 'e', + ['Ę'] = 'E', ['ę'] = 'e', ['Ě'] = 'E', ['ě'] = 'e', + ['Ĝ'] = 'G', ['Ğ'] = 'G', ['ğ'] = 'g', ['ĝ'] = 'g', + ['Ġ'] = 'G', ['ġ'] = 'g', ['Ģ'] = 'G', ['ģ'] = 'g', + ['Ĥ'] = 'H', ['ĥ'] = 'h', ['Ħ'] = 'H', ['ħ'] = 'h', + ['Ĩ'] = 'I', ['ĩ'] = 'i', ['Ī'] = 'I', ['ī'] = 'i', + ['Ĭ'] = 'I', ['ĭ'] = 'i', ['Į'] = 'I', ['į'] = 'i', + ['ı'] = 'i', ['İ'] = 'I', ['IJ'] = 'IJ', ['ij'] = 'ij', + ['Ĵ'] = 'J', ['ĵ'] = 'j', ['ķ'] = 'k', ['Ķ'] = 'K', + ['ĸ'] = 'k', + ['Ĺ'] = 'L', ['ĺ'] = 'l', ['Ļ'] = 'L', ['ļ'] = 'l', + ['Ľ'] = 'L', ['ľ'] = 'l', ['Ŀ'] = 'L', ['ŀ'] = 'l', + ['Ł'] = 'L', ['ł'] = 'l', ['Ń'] = 'N', ['ń'] = 'n', + ['Ņ'] = 'N', ['ņ'] = 'n', ['Ň'] = 'N', ['ň'] = 'n', + ['ʼn'] = 'n', ['Ŋ'] = 'n', ['ŋ'] = 'n', + ['Ō'] = 'O', ['ō'] = 'o', ['Ŏ'] = 'O', ['ŏ'] = 'o', + ['ő'] = 'o', ['Ő'] = 'O', ['œ'] = 'oe', ['Œ'] = 'OE', + ['Ŕ'] = 'R', ['ŕ'] = 'r', ['Ŗ'] = 'R', ['ŗ'] = 'r', + ['Ř'] = 'R', ['ř'] = 'r', ['Ś'] = 'S', ['ś'] = 's', + ['Ŝ'] = 'S', ['ŝ'] = 's', ['Ş'] = 'S', ['ş'] = 's', + ['Š'] = 'S', ['š'] = 's', ['Ţ'] = 'T', ['ţ'] = 't', + ['ť'] = 't', ['Ŧ'] = 'T', ['Ť'] = 'T', ['ŧ'] = 't', + ['Ũ'] = 'U', ['ũ'] = 'u', ['Ū'] = 'U', ['ū'] = 'u', + ['Ŭ'] = 'U', ['ŭ'] = 'u', ['Ů'] = 'U', ['ů'] = 'u', + ['Ű'] = 'U', ['ű'] = 'u', ['Ų'] = 'U', ['ų'] = 'u', + ['Ŵ'] = 'W', ['ŵ'] = 'w', ['Ŷ'] = 'Y', ['ŷ'] = 'y', + ['Ÿ'] = 'Y', + ['Ź'] = 'Z', ['ź'] = 'z', ['Ż'] = 'Z', ['ż'] = 'z', + ['Ž'] = 'Z', ['ž'] = 'z', ['ſ'] = 's', + + -- Extended latin B + ['ƀ'] = 'b', ['Ɓ'] = 'B', ['Ƃ'] = 'B', ['ƃ'] = 'b', + ['Ɔ'] = 'O', + ['Ƈ'] = 'C', ['ƈ'] = 'c', ['Ɖ'] = 'D', ['Ɗ'] = 'D', + ['Ƌ'] = 'D', ['ƌ'] = 'd', ['Ǝ'] = 'E', ['Ə'] = 'e', + ['Ɛ'] = 'E', + ['Ƒ'] = 'F', ['ƒ'] = 'f', ['Ɠ'] = 'G', + ['ƕ'] = 'hv', ['Ɨ'] = 'I', ['Ƙ'] = 'K', ['ƙ'] = 'k', + ['ƚ'] = 'l', ['Ɯ'] = 'M', ['Ɲ'] = 'N', ['ƞ'] = 'n', + ['Ɵ'] = 'O', + ['Ơ'] = 'O', ['ơ'] = 'o', ['Ƣ'] = 'OI', ['ƣ'] = 'oi', + ['Ƥ'] = 'P', ['ƥ'] = 'p', ['Ʀ'] = 'YR', + ['Ƨ'] = 'S', ['ƨ'] = 's', ['ƫ'] = 't', + ['Ƭ'] = 'T', ['ƭ'] = 't', ['Ʈ'] = 'T', + ['Ư'] = 'U', ['ư'] = 'u', ['Ʋ'] = 'V', + ['Ƴ'] = 'Y', ['ƴ'] = 'y', ['Ƶ'] = 'Z', ['ƶ'] = 'z', + ['ƻ'] = '2', ['Ƽ'] = '5', ['ƽ'] = '5', + ['DŽ'] = 'DZ', ['Dž'] = 'Dz', ['dž'] = 'dz', + ['LJ'] = 'LJ', ['Lj'] = 'Lj', ['lj'] = 'lj', + ['NJ'] = 'NJ', ['Nj'] = 'Nj', ['nj'] = 'nj', + ['Ǎ'] = 'A', ['ǎ'] = 'a', ['Ǐ'] = 'I', ['ǐ'] = 'i', + ['Ǒ'] = 'O', ['ǒ'] = 'o', ['Ǔ'] = 'U', ['ǔ'] = 'u', + ['Ǖ'] = 'U', ['ǖ'] = 'u', ['Ǘ'] = 'U', ['ǘ'] = 'u', + ['Ǚ'] = 'U', ['ǚ'] = 'u', ['Ǜ'] = 'U', ['ǜ'] = 'u', + ['ǝ'] = 'e', + ['Ǟ'] = 'A', ['ǟ'] = 'a', ['Ǡ'] = 'A', ['ǡ'] = 'a', + ['Ǣ'] = 'Æ', ['ǣ'] = 'æ', ['Ǥ'] = 'G', ['ǥ'] = 'g', + ['Ǧ'] = 'G', ['ǧ'] = 'g', ['Ǩ'] = 'K', ['ǩ'] = 'k', + ['Ǫ'] = 'Q', ['ǫ'] = 'q', ['Ǭ'] = 'Q', ['ǭ'] = 'q', + ['ǰ'] = 'J', + ['DZ'] = 'DZ', ['Dz'] = 'Dz', ['dz'] = 'dz', + ['Ǵ'] = 'G', ['ǵ'] = 'g', ['Ƕ'] = 'H', + ['Ǹ'] = 'N', ['ǹ'] = 'n', ['Ǻ'] = 'A', ['ǻ'] = 'a', + ['Ǽ'] = 'Æ', ['ǽ'] = 'æ', ['Ǿ'] = 'Ø', ['ǿ'] = 'ø', + ['Ȁ'] = 'A', ['ȁ'] = 'a', ['Ȃ'] = 'A', ['ȃ'] = 'a', + ['Ȅ'] = 'E', ['ȅ'] = 'e', ['Ȇ'] = 'E', ['ȇ'] = 'e', + ['Ȉ'] = 'I', ['ȉ'] = 'i', ['Ȋ'] = 'I', ['ȋ'] = 'i', + ['Ȍ'] = 'O', ['ȍ'] = 'o', ['Ȏ'] = 'O', ['ȏ'] = 'o', + ['Ȑ'] = 'R', ['ȑ'] = 'r', ['Ȓ'] = 'R', ['ȓ'] = 'r', + ['Ȕ'] = 'U', ['ȕ'] = 'u', ['Ȗ'] = 'U', ['ȗ'] = 'u', + ['Ș'] = 'S', ['ș'] = 's', ['Ț'] = 'T', ['ț'] = 't', + ['Ȟ'] = 'H', ['ȟ'] = 'h', ['Ƞ'] = 'N', + ['ȡ'] = 'd', + ['Ȣ'] = 'OU', ['ȣ'] = 'ou', ['Ȥ'] = 'Z', ['ȥ'] = 'z', + ['Ȧ'] = 'A', ['ȧ'] = 'a', ['Ȩ'] = 'E', ['ȩ'] = 'e', + ['Ȫ'] = 'O', ['ȫ'] = 'o', ['Ȭ'] = 'O', ['ȭ'] = 'o', + ['Ȯ'] = 'O', ['ȯ'] = 'o', ['Ȱ'] = 'O', ['ȱ'] = 'o', + ['Ȳ'] = 'Y', ['ȳ'] = 'y', ['ȴ'] = 'l', + ['ȵ'] = 'n', ['ȶ'] = 't', ['ȷ'] = 'j', + ['ȸ'] = 'db', ['ȹ'] = 'qp', ['Ⱥ'] = 'A', + ['Ȼ'] = 'C', ['ȼ'] = 'c', ['Ƚ'] = 'L', + ['Ⱦ'] = 'T', ['ȿ'] = 's', ['ɀ'] = 'z', + ['Ƀ'] = 'B', ['Ʉ'] = 'U', ['Ʌ'] = 'V', + ['Ɇ'] = 'E', ['ɇ'] = 'e', ['Ɉ'] = 'J', ['ɉ'] = 'j', + ['Ɋ'] = 'Q', ['ɋ'] = 'q', ['Ɍ'] = 'R', ['ɍ'] = 'r', + ['Ɏ'] = 'Y', ['ɏ'] = 'y', ['ɐ'] = 'a', + ['ɓ'] = 'b', ['ɔ'] = 'o', + ['ɕ'] = 'c', ['ɖ'] = 'd', ['ɗ'] = 'd', + ['ɘ'] = 'e', ['ə'] = 'e', ['ɚ'] = 'e', + ['ɛ'] = 'e', ['ɜ'] = 'e', ['ɝ'] = 'e', ['ɞ'] = 'e', + ['ɟ'] = 'j', + ['ɠ'] = 'g', ['ɡ'] = 'g', ['ɢ'] = 'G', + ['ɥ'] = 'h', ['ɦ'] = 'h', ['ɧ'] = 'h', + ['ɨ'] = 'i', ['ɪ'] = 'I', + ['ɫ'] = 'l', ['ɬ'] = 'l', ['ɭ'] = 'l', + ['ɮ'] = 'lz', + ['ɯ'] = 'm', ['ɰ'] = 'm', ['ɱ'] = 'm', + ['ɲ'] = 'n', ['ɳ'] = 'n', ['ɴ'] = 'N', + ['ɵ'] = 'o', ['ɶ'] = 'Œ', + ['ɹ'] = 'r', ['ɺ'] = 'r', ['ɻ'] = 'r', + ['ɼ'] = 'r', ['ɽ'] = 'r', ['ɾ'] = 'r', ['ɿ'] = 'r', +} diff --git a/mods/special/display_modpack/font_api/font.lua b/mods/special/display_modpack/font_api/font.lua new file mode 100644 index 0000000..5794867 --- /dev/null +++ b/mods/special/display_modpack/font_api/font.lua @@ -0,0 +1,274 @@ +--[[ + font_api mod for Minetest - Library creating textures with fonts and text + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +-- Fallback table +local fallbacks = dofile(font_api.path.."/fallbacks.lua") + +-- Local functions +------------------ + +-- Returns number of UTF8 bytes of the first char of the string +local function get_char_bytes(str) + local msb = str:byte(1) + if msb ~= nil then + if msb < 0x80 then return 1 end + if msb >= 0xF0 then return 4 end + if msb >= 0xE0 then return 3 end + if msb >= 0xC2 then return 2 end + end +end + +-- Returns the unicode codepoint of the first char of the string +local function char_to_codepoint(str) + local bytes = get_char_bytes(str) + if bytes == 1 then + return str:byte(1) + elseif bytes == 2 and str:byte(2) ~= nil then + return (str:byte(1) - 0xC2) * 0x40 + + str:byte(2) + elseif bytes == 3 and str:byte(2) ~= nil and str:byte(3) ~= nil then + return (str:byte(1) - 0xE0) * 0x1000 + + str:byte(2) % 0x40 * 0x40 + + str:byte(3) % 0x40 + elseif bytes == 4 and str:byte(2) ~= nil and str:byte(3) ~= nil + and str:byte(4) ~= nil then -- Not tested + return (str:byte(1) - 0xF0) * 0x40000 + + str:byte(2) % 0x40 * 0x1000 + + str:byte(3) % 0x40 * 0x40 + + str:byte(4) % 0x40 + end +end + +-------------------------------------------------------------------------------- +--- Font class + +local Font = {} +font_api.Font = Font + +function Font:new(def) + + if type(def) ~= "table" then + minetest.log("error", + "[font_api] Font definition must be a table.") + return nil + end + + if def.height == nil or def.height <= 0 then + minetest.log("error", + "[font_api] Font definition must have a positive height.") + return nil + end + + if type(def.widths) ~= "table" then + minetest.log("error", + "[font_api] Font definition must have a widths array.") + return nil + end + + if def.widths[0] == nil then + minetest.log("error", + "[font_api] Font must have a char with codepoint 0 (=unknown char).") + return nil + end + + local font = table.copy(def) + setmetatable(font, self) + self.__index = self + + -- Check if fixedwidth + for codepoint, width in pairs(font.widths) do + font.fixedwidth = font.fixedwidth or width + if width ~= font.fixedwidth then + font.fixedwidth = nil + break + end + end + + return font +end + +--- Gets the next char of a text +-- @return Codepoint of first char, +-- @return Remaining string without this first char + +function Font:get_next_char(text) + local bytes = get_char_bytes(text) + + if bytes == nil then + minetest.log("warning", + "[font_api] Encountered a non UTF char, not displaying text.") + return nil, '' + end + + local codepoint = char_to_codepoint(text) + + if codepoint == nil then + minetest.log("warning", + "[font_api] Encountered a non UTF char, not displaying text.") + return nil, '' + end + + -- Fallback mechanism + if self.widths[codepoint] == nil then + local char = text:sub(1, bytes) + + if fallbacks[char] then + return self:get_next_char(fallbacks[char]..text:sub(bytes+1)) + else + return 0, text:sub(bytes+1) -- Ultimate fallback + end + else + return codepoint, text:sub(bytes+1) + end +end + +--- Returns the width of a given char +-- @param char : codepoint of the char +-- @return Char width +function Font:get_char_width(codepoint) + if self.fixedwidth then + return self.fixedwidth + elseif self.widths[codepoint] then + return self.widths[codepoint] + else + return self.widths[0] + end +end + +--- Text height for multiline text including margins and line spacing +-- @param nb_of_lines : number of text lines (default 1) +-- @return Text height + +function Font:get_height(nb_of_lines) + if nb_of_lines == nil then nb_of_lines = 1 end + + if nb_of_lines > 0 then + return + ( + (self.height or 0) + + (self.margintop or 0) + + (self.marginbottom or 0) + ) * nb_of_lines + + (self.linespacing or 0) * (nb_of_lines -1) + else + return nb_of_lines == 0 and 0 or nil + end +end + +--- Computes text width for a given text (ignores new lines) +-- @param line Line of text which the width will be computed. +-- @return Text width + +function Font:get_width(line) + local codepoint + local width = 0 + line = line or '' + + while line ~= "" do + codepoint, line = self:get_next_char(line) + if codepoint == nil then return 0 end -- UTF Error + width = width + self:get_char_width(codepoint) + end + + return width +end + +--- Legacy make_text_texture method (replaced by "render" - Dec 2018) + +function Font:make_text_texture(text, texturew, textureh, maxlines, + halign, valign, color) + return self:render(text, texturew, textureh, { + lines = maxlines, + valign = valign, + halign = halign, + color = color + }) +end + +--- Render text with the font in a view +-- @param text Text to be rendered +-- @param texturew Width (in pixels) of the texture (extra text will be truncated) +-- @param textureh Height (in pixels) of the texture (extra text will be truncated) +-- @param style Style of the rendering: +-- - lines: maximum number of text lines (if text is limited) +-- - halign: horizontal align ("left"/"center"/"right") +-- - valign: vertical align ("top"/"center"/"bottom") +-- - color: color of the text ("#rrggbb") +-- @return Texture string + +function Font:render(text, texturew, textureh, style) + local style = style or {} + + -- Split text into lines (and limit to style.lines # of lines) + local lines = {} + local pos = 1 + local found, line + repeat + found = string.find(text, "\n", pos) or (#text + 1) + line = string.sub(text, pos, found - 1) + lines[#lines + 1] = { text = line, width = self:get_width(line) } + pos = found + 1 + until (style.lines and (#lines >= style.lines)) or (pos > (#text + 1)) + + if not #lines then + return "" + end + + local x, y, codepoint + local texture = "" + local textheight = self:get_height(#lines) + + if style.valign == "top" then + y = 0 + elseif style.valign == "bottom" then + y = textureh - textheight + else + y = (textureh - textheight) / 2 + end + + y = y + (self.margintop or 0) + + for _, line in pairs(lines) do + if style.halign == "left" then + x = 0 + elseif style.halign == "right" then + x = texturew - line.width + else + x = (texturew - line.width) / 2 + end + + while line.text ~= '' do + codepoint, line.text = self:get_next_char(line.text) + if codepoint == nil then return '' end -- UTF Error + + -- Add image only if it is visible (at least partly) + if x + self.widths[codepoint] >= 0 and x <= texturew then + texture = texture.. + string.format(":%d,%d=font_%s_%04x.png", x, y, self.name, codepoint) + end + x = x + self.widths[codepoint] + end + + y = y + self:get_height() + (self.linespacing or 0) + end + texture = string.format("[combine:%dx%d", texturew, textureh)..texture + if style.color then + texture = texture.."^[colorize:"..style.color + end + return texture +end diff --git a/mods/special/display_modpack/font_api/fontform.lua b/mods/special/display_modpack/font_api/fontform.lua new file mode 100644 index 0000000..b7e6724 --- /dev/null +++ b/mods/special/display_modpack/font_api/fontform.lua @@ -0,0 +1,166 @@ +--[[ + font_api mod for Minetest - Library creating textures with fonts and text + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +local modname = minetest.get_current_modname() + +local contexts = {} + +minetest.register_on_leaveplayer(function(player) + if minetest.is_player(player) then + contexts[player:get_player_name()] = nil + end +end) + +local function get_context(playername) + if not contexts[playername] then + contexts[playername] = { playername = playername } + end + return contexts[playername] +end + +-- Show node formspec functions +local function show_node_formspec(playername, pos) + local meta = minetest.get_meta(pos) + + -- Decontextualize formspec + local fs = meta:get_string('formspec') + + if not fs then + return + end + + -- Change context and currrent_name references to nodemeta references + -- Change context and currrent_name references to nodemeta references + local nodemeta = string.format("nodemeta:%i,%i,%i", pos.x, pos.y ,pos.z) + fs = fs:gsub("current_name", nodemeta) + fs = fs:gsub("context", nodemeta) + + -- Change all ${} to their corresponding metadata values + local s, e + repeat + s, e = fs:find('%${.*}') + if s and e then + fs = fs:sub(1, s-1).. + minetest.formspec_escape(meta:get_string(fs:sub(s+2,e-1))).. + fs:sub(e+1) + end + until s == nil + + local context = get_context(playername) + context.node_pos = pos + + -- Find node on_receive_fields + local ndef = minetest.registered_nodes[minetest.get_node(pos).name] + if ndef and ndef.on_receive_fields then + context.on_receive_fields = ndef.on_receive_fields + end + + -- Show formspec + minetest.show_formspec(playername, modname..':context_formspec', fs) +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= modname..':context_formspec' then + return + end + + if not minetest.is_player(player) then + return true + end + + local context = get_context(player:get_player_name()) + if context.on_receive_fields then + context.on_receive_fields(context.pos, '', fields, player) + end + return true +end) + +-- Specific functions + +local function show_font_formspec(playername) + local context = get_context(playername) + local fonts = {} + for name, _ in pairs(font_api.registered_fonts) do + fonts[#fonts+1] = name + end + table.sort(fonts) + + local fs = string.format( + "size[4,%s]%s%s%sbutton_exit[0,%s;4,1;cancel;Cancel]", + #fonts + 0.8, default.gui_bg, default.gui_bg_img, default.gui_slots, + #fonts) + + for line = 1, #fonts do + local font = font_api.get_font(fonts[line]) + local texture = font:make_text_texture(font.name, font:get_height()*5, + font:get_height()*1.2, 1, "center", "top", "#fff") + fs = string.format( + "%simage[0.1,%s;4.5,0.8;%s]button_exit[0,%s;4,1;font_%s;]", + fs, line-0.9, texture, line-1, font.name) + end + minetest.show_formspec(context.playername, modname..':font_list', fs) +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= modname..':font_list' then + return + end + + if not minetest.is_player(player) then + return true + end + + local playername = player:get_player_name() + local context = get_context(playername) + + if not context.pos + or minetest.is_protected(context.pos, playername) then + return true + end + + if fields.quit == 'true' then + for name, _ in pairs(font_api.registered_fonts) do + if fields['font_'..name] then + local meta = minetest.get_meta(context.pos) + meta:set_string("font", name) + display_api.update_entities(context.pos) + end + end + + if context.callback and type(context.callback) == "function" then + -- Using after to avoid the "double close" bug + minetest.after(0, context.callback, playername, context.pos) + else + -- Using after to avoid the "double close" bug + minetest.after(0, show_node_formspec, playername, context.pos) + end + end + return true +end) + +-- @param player Player viewing the form +-- @param pos Node pos +-- @param callback function(playername, pos) to be called on form close +function font_api.show_font_list(player, pos, callback) + if minetest.is_player(player) then + local context = get_context(player:get_player_name()) + context.pos = pos + context.callback = callback + show_font_formspec(player:get_player_name()) + end +end diff --git a/mods/special/display_modpack/font_api/init.lua b/mods/special/display_modpack/font_api/init.lua new file mode 100644 index 0000000..c5858f4 --- /dev/null +++ b/mods/special/display_modpack/font_api/init.lua @@ -0,0 +1,35 @@ +--[[ + font_api mod for Minetest - Library creating textures with fonts and text + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +-- Global variables +------------------- + +font_api = {} +font_api.name = minetest.get_current_modname() +font_api.path = minetest.get_modpath(font_api.name) + +-- Inclusions +------------- + +dofile(font_api.path.."/font.lua") +dofile(font_api.path.."/registry.lua") +dofile(font_api.path.."/fontform.lua") +if minetest.get_modpath("display_api") then + dofile(font_api.path.."/display_api.lua") +end +dofile(font_api.path.."/deprecation.lua") diff --git a/mods/special/display_modpack/font_api/mod.conf b/mods/special/display_modpack/font_api/mod.conf new file mode 100644 index 0000000..1aaccc0 --- /dev/null +++ b/mods/special/display_modpack/font_api/mod.conf @@ -0,0 +1,3 @@ +name=font_api +description=A library for rendernig text on textures +optional_depends=display_api diff --git a/mods/special/display_modpack/font_api/registry.lua b/mods/special/display_modpack/font_api/registry.lua new file mode 100644 index 0000000..e183675 --- /dev/null +++ b/mods/special/display_modpack/font_api/registry.lua @@ -0,0 +1,160 @@ +--[[ + font_api mod for Minetest - Library creating textures with fonts and text + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +--]] + +-- Global variables +------------------- + +font_api.registered_fonts = {} +font_api.registered_fonts_number = 0 + +-- Local variables +------------------ + +local default_font = false + +-- Local functions +------------------ + +-- Gets a default (settings or fist font) +local function get_default_font() + -- First call + if default_font == false then + default_font = nil + + -- First, try with settings + local settings_font = minetest.settings:get("default_font") + + if settings_font ~= nil and settings_font ~= "" then + default_font = font_api.registered_fonts[settings_font] + + if default_font == nil then + minetest.log("warning", "Default font in settings (\"".. + settings_font.."\") is not registered.") + end + end + + -- If failed, choose first font without default = false + if default_font == nil then + for _, font in pairs(font_api.registered_fonts) do + if font.default then + default_font = font + break + end + end + end + + -- If failed, chose first font + if default_font == nil then + for _, font in pairs(font_api.registered_fonts) do + default_font = font + break + end + end + + -- Error, no font registered + if default_font == nil then + minetest.log("error", + "No font registred, unable to choose a default font.") + end + end + + return default_font +end + +--- Returns font object to be used according to font_name +-- @param font_name: Name of the font +-- @return Font object if font found (or default font) + +function font_api.get_font(font_name) + local font = font_api.registered_fonts[font_name] + + if font == nil then + local message + + if font_name == nil then + message = "No font given" + else + message = "Font \""..font_name.."\" unregistered" + end + + font = get_default_font() + + if font ~= nil then + minetest.log("info", message..", using font \""..font.name.."\".") + end + end + + return font +end + +-- API functions +---------------- + +--- Returns de default font name +-- @return Default font name + +function font_api.get_default_font_name() + return get_default_font().name +end + +--- Register a new font +-- Textures corresponding to the font should be named after following patern : +-- font__.png +-- : name of the font +-- : 4 digit hexadecimal unicode of the char +-- @param font_name Name of the font to register +-- If registering different sizes of the same font, add size in the font name +-- (e.g. times_10, times_12...). +-- @param def font definition. A associative array with following keys : +-- @key default True (by default) if this font may be used as default font +-- @key height (mandatory) Height in pixels of all font textures +-- @key widths (mandatory) Array of character widths in pixels, indexed by +-- UTF codepoints +-- @key margintop (optional) Margin (in texture pixels) added on top of each +-- char texture. +-- @key marginbottom (optional) dded at bottom of each char texture. +-- @key linespacing (optional) Spacing (in texture pixels) between each lines. +-- margintop, marginbottom and linespacing can be negative numbers (default 0) +-- and are to be used to adjust various font styles to each other. + +-- TODO: Add something to remove common accent if not defined in font + +function font_api.register_font(font_name, font_def) + + if font_api.registered_fonts[font_name] ~= nil then + minetest.log("error", "Font \""..font_name.."\" already registered.") + return + end + + local font = font_api.Font:new(font_def) + + if font == nil then + minetest.log("error", "Unable to register font \""..font_name.."\".") + return + end + + font.name = font_name + font_api.registered_fonts[font_name] = font + font_api.registered_fonts_number = font_api.registered_fonts_number + 1 + + -- Force to choose again default font + -- (allows use of fonts registered after start) + default_font = false + + minetest.log("action", "New font registered in font_api: "..font_name..".") +end diff --git a/mods/special/display_modpack/font_api/settingtypes.txt b/mods/special/display_modpack/font_api/settingtypes.txt new file mode 100644 index 0000000..d111159 --- /dev/null +++ b/mods/special/display_modpack/font_api/settingtypes.txt @@ -0,0 +1 @@ +default_font(Default font) string diff --git a/mods/special/display_modpack/font_api/textures/font_api_center.png b/mods/special/display_modpack/font_api/textures/font_api_center.png new file mode 100644 index 0000000000000000000000000000000000000000..967db6aded151e4f0d2e47878b4430e70164d795 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t_%$6K<5Ad|IeP;yA#M_ zED7=pW^j0RBMrn!@^*J&=wOxg04Xoqg z4pt^Mb~ZLQjg48NJq_KKYoo4mC{DPNxwb*Dz;Hq!gTEr5{xg|-tst{JUHx3vIVCg! E092tkF#rGn literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_api/textures/font_api_font.png b/mods/special/display_modpack/font_api/textures/font_api_font.png new file mode 100644 index 0000000000000000000000000000000000000000..e45033859af8885cabdca76db63acc5f1e228527 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t_%$6K<5Ad|IeP;yA#M_ zED7=pW^j0RBMrn!@^*J&=wOxg04XooU649-QVi6yBi3gww484B*6z5ywEsq8>;Q%@Ji5RU7~ z9IQ-i>}+gq3I|z~Ei9xOS;Qw?2nuKs>XwpFYzaQhq_C08qrx!5fpY_+!eWL`PQ31y Se3PbtO!jp3b6Mw<&;$TshdSW^ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_api/textures/font_api_left.png b/mods/special/display_modpack/font_api/textures/font_api_left.png new file mode 100644 index 0000000000000000000000000000000000000000..727410bd23c9f1f4d337f8875f76d87eef8a5e58 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t_%$6K<5Ad|IeP;yA#M_ zED7=pW^j0RBMrn!@^*J&=wOxg04XoLV0FMhJw4NZ$OG(DmzeI+0(@_gyVWL z2P+dBI~$uD$HT2zj8h!MqFGfZ98F+x;zWVZS literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_api/textures/font_api_right.png b/mods/special/display_modpack/font_api/textures/font_api_right.png new file mode 100644 index 0000000000000000000000000000000000000000..16401d30ba6d6ad425a5a3a8f8e6655300f3d763 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t_%$6K<5Ad|IeP;yA#M_ zED7=pW^j0RBMrn!@^*J&=wOxg04XooU649-QVi6yBi3gww484B*6z5ywEsq8>;RZkbk5RU7~ z9IQ-i>}+gq8V9##DNb?dSj$uxzOc)%VW&ot!eWLrfBxuq(L0xbO!9Q~b6Mw<&;$Sh Cb2vBv literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_api/tools/make_font_lua.sh b/mods/special/display_modpack/font_api/tools/make_font_lua.sh new file mode 100755 index 0000000..e858360 --- /dev/null +++ b/mods/special/display_modpack/font_api/tools/make_font_lua.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +scriptname=$(basename $0) +identify="identify" + +usage() { + echo "Usage: $0 fontname" + echo "fontname: The name of the font. Must correspond to existing texture/font__????.png files" +} + +if [ $# -ne 1 ] +then + usage + exit 1 +fi + +font_name=$1 + +for f in textures/font_${font_name}_????.png +do + if [[ $f =~ textures/font_${font_name}_([0-9a-fA-F]{4}).png ]] + then + code=$((16#${BASH_REMATCH[1]})) + size=$(identify $f | cut -d " " -f 3) + w=$(echo $size | cut -d "x" -f 1) + h=$(echo $size | cut -d "x" -f 2) + + if [ -z "$font_height" ] + then + font_height=$h + else + if [ $font_height -ne $h ] + then + echo "Error : $f as height of $h pixels, previous textures have a height of $font_height pixels. All textures should have the same height." + fi + fi + + if [ -z "$font_widths" ] + then + font_widths="[$code]=$w" + else + font_widths="$font_widths, [$code]=$w" + fi + fi +done + +echo "--[[ + +$luafile generated by $scriptname $(LANG=en_US date) + +--]] + +font_api.register_font( + '$font_name', + { + height = $font_height, + widths = { + $font_widths + }, + } +); +" > font_$font_name.lua + +if grep -q font_api depends.txt &>/dev/null +then + echo "font_api already in depends.txt." +else + echo "adding font_api to depends.txt." + echo "font_api" >> depends.txt +fi + diff --git a/mods/special/display_modpack/font_api/tools/make_font_textures.sh b/mods/special/display_modpack/font_api/tools/make_font_textures.sh new file mode 100755 index 0000000..4a3191c --- /dev/null +++ b/mods/special/display_modpack/font_api/tools/make_font_textures.sh @@ -0,0 +1,111 @@ +#!/bin/bash + +# This program generates a bitmap font for font_api mod for Minetest game. +# (c) Andrzej Pieńkowski +# (c) Pierre-Yves Rollo +# License: GPL + +usage() { + echo "Usage: $0 fontfile fontname fontsize" + echo "fontfile: A TTF font file to use to create textures." + echo "fontname: The font name to be used in font_api (should be simple, with no spaces)." + echo "fontsize: Font height to be rendered." +} + +if [ $# -ne 3 ] +then + usage + exit 1 +fi + +fontfile=$1 +fontname=$2 +fontsize=$3 + +if [ ! -r "$fontfile" ] +then + echo "$fontfile not readable." + exit 1 +fi + +# check imagemagick +hash convert &>/dev/null +if [ $? -eq 1 ]; then + echo -e "Error: This program requires convert from ImageMagick! Please install it by typing 'sudo apt-get install imagemagick' in terminal." + abort=1 +fi + +# check ttx +hash ttx &>/dev/null +if [ $? -eq 1 ]; then + echo -e "Error: This program requires ttx from FontTools! Please install it by typing 'sudo apt-get install fonttools' in terminal." + abort=1 +fi + +if [ $abort ] +then + exit 1 +fi + +generate() { + for i in $(seq $((0x$1)) $((0x$2))) + do + if echo "$codepoints" | grep -qi $(printf "0x%x" $i) + then + hex=$(printf "%04x" $i) + echo -e "Generating textures/font_${fontname}_$hex.png file for \"\\U$hex\" char." + if [[ "$hex" == "005c" ]] # Backslash char + then + convert -background none -fill black -font "$fontfile" -pointsize $fontsize label:"\\\\" -colorspace gray -channel alpha -threshold 50% textures/font_${fontname}_$hex.png + else + convert -background none -fill black -font "$fontfile" -pointsize $fontsize label:"$(echo -en "\\U$hex")" -colorspace gray -channel alpha -threshold 50% textures/font_${fontname}_$hex.png + fi + fi + done +} + +mkdir textures + +# Reads all available code points in the font. +codepoints=$(ttx -o - "$fontfile" | grep " z!zrJ-nA;OsG?-)-0;4aQD==%>edOr((W{#7AcS4 z!&S8WyrJ*zb6vY$iah^y?%k&)KljA-si<6%U9kRn*}C5h40@9VZuVFg+`K5TbL*-b zJ7?U#RXe4j;MkvfF1^VUn9uH5<9p&dH-obhSEK*It+h)O8&oe=?eBRir1+Pk>gjsU zhVutcwZ1uZYK_Zgi51gqb-tTF;dP$FA918TBgR%QvaLh^Cx?!fz&R%q;Z*m!tx3x{ z*I#b@@Jh91x{m&9#XaG7!l!NJ;_S@ec%a0wE}m)P`fIbDjx>Bs>Ui{enqs8YA&2|+ z&39fix@8`lz{oG5&hv0@ddHvaqvm_WJ@VEG%n}G!t7qdpdrD0$ox@;e=hf+{*`NO! zJn7!~RC9$~klkC2j^7`re0F{^Pf&yN;o?#WCAdtllbbMWB85;51nzy0P z?48lSCHEO(vSb;LUR>3>u+FNJwJ#_sjdTTm%I+wy7ybdj+KZ zJh0f}Yt@!@PG%yDPE3&d&n|fOm4fBn2W_98DNa2(d-1B@m3JiakEZ@vKi9e;Lyd>o z;@^j#S(Y9d0St>34VWYN7O*fJV0hT@z?4HzL5hLNtjVHDfRV?+jbS1Shcef_2epUg zj_-ZFYWJ`IjPs6vWWIA)_PK(BLjwaN6U&Ky78VWx2E3csNNh0*&IBaLd83ceV1mwIN#-*Uc-O zdy~ml;(k46=KURdObWSwC04&$wR8tZiqiZw{46Kp+kmD#(fjsS_GRiDsjCRdf)%ZlO_{Z;XT`TmOkZ85{`&HK zasNvH`K8uwqN43RPq=sU?K-CZ@ckQzKRs5zw)*I;FML00uENZySzdJ@;h;2!1{s%i zsfBCLdwJLNo+w?SSoL!8R0fauT$9|)&Qlp470^&BewOW#H+yFO)}{#!*)_L+&AQqG z3O$Yqg+})m*mx}3wPn>|mF>x|rB~dXAurC32vb-%e&YM@XCOP*`*szm?C^B;b6Mw< G&;$Sl!{uxM literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0000.png b/mods/special/display_modpack/font_metro/textures/font_metro_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..6e8202f5c45ecf1b7e958ea95c27e53ae03c512d GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%NqD+AhEy;nC;aGVWtzyK)xxRN dI8n8Old<)O{^k8KjTJyO44$rjF6*2UngFN06h{C6 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0020.png b/mods/special/display_modpack/font_metro/textures/font_metro_0020.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6370a6c998860e3e124723529ce67d53df5f6d GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^AT~cEkYM=QlDrs5F_i@Q1v4;|O+IS@_E)V!2%?kIAl$Ml!T{?V@L&Ka>5V(7K2HQbGeh0 eJXq3SFfe3(2>edzUQU=mAv8;OXk;vd$@?2>@ox7q0*S literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0024.png b/mods/special/display_modpack/font_metro/textures/font_metro_0024.png new file mode 100644 index 0000000000000000000000000000000000000000..3c088714d817921cc17b057d2c13205d87c1845e GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3O<1hEy;nH#Gfs=wSPISkZ|? zQmI8ig?X34vd$$O&K@;Q9C}@o3#{a(yPsrW5UQ{~x@}qK8K6!EPgg&ebxsLQ0P+VM A)c^nh literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0025.png b/mods/special/display_modpack/font_metro/textures/font_metro_0025.png new file mode 100644 index 0000000000000000000000000000000000000000..34358d8010bfb916d42203c693ba18b70d5829c3 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDN9cm$B+ufWQL~y2^>rkd;S-6 zJWyWUGLfTJ!pd+-K3o$ bQN_scXg%})m6En1Kotz0u6{1-oD!MsY k61sxVDXtNi+s(<)e@^=8;gY%AfC?ErUHx3vIVCg!0P_A81poj5 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0029.png b/mods/special/display_modpack/font_metro/textures/font_metro_0029.png new file mode 100644 index 0000000000000000000000000000000000000000..3e95af4c15e3e38872e6359366e8c083d211cc17 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJSESod~L;gGIr?(}pTLD!vc)I$ztaD0e0stW~7GVGY literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_002a.png b/mods/special/display_modpack/font_metro/textures/font_metro_002a.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ba27972ce040456a3fee322188cf9c737cf77e GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nH#Gfs;9%s?Yii+I r&!{d2YGCkm^>bP0l+XkK;QJX= literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_002b.png b/mods/special/display_modpack/font_metro/textures/font_metro_002b.png new file mode 100644 index 0000000000000000000000000000000000000000..15e42c7d6c95f39803a0c891dda04dd3c1544eaa GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DG5&($B+ufP5?cTO literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_002d.png b/mods/special/display_modpack/font_metro/textures/font_metro_002d.png new file mode 100644 index 0000000000000000000000000000000000000000..165f144b95287a3358c97c438d3677b29bf6edfb GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml%S`JV@L&K@&d&l{LL?7s+bsd X$8mnwDmp$1D9PaI>gTe~DWM4f?H>^K literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_002e.png b/mods/special/display_modpack/font_metro/textures/font_metro_002e.png new file mode 100644 index 0000000000000000000000000000000000000000..74da73d7c06d5fbc16c7fa909d34799ac5bedfc4 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6K~ERQkP61+1&TlTTMF3f7#OC0 WWd7?@I8`1f$>8bg=d#Wzp$P!?p%A$M literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_002f.png b/mods/special/display_modpack/font_metro/textures/font_metro_002f.png new file mode 100644 index 0000000000000000000000000000000000000000..409ea8fa9ba9e5075a920419a844cc74526a6fc5 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%iF&#?hEy;nJ23ul6ksu6b)RE( ah=HMUzw}f6$GUw$1q`09elF{r5}E*5ToQf& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0030.png b/mods/special/display_modpack/font_metro/textures/font_metro_0030.png new file mode 100644 index 0000000000000000000000000000000000000000..3194fefe6e25171ca74c27a48a33a18c18e0f831 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSNs&hEy;nGc^AX=wSJ$tguR< p$<078=NFgK42gF~o~yrNVCXw+eD+9y`!S$$22WQ%mvv4FO#tR(8g2jp literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0031.png b/mods/special/display_modpack/font_metro/textures/font_metro_0031.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ad9890e221b536894c1409146b119df5eac684 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml$@uFV@L&KazoR9hZ7BFe)gaG l$^U%8$we=hT22pPV8~6Ddo-W(k_}KLgQu&X%Q~loCIE$J8N&bo literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0032.png b/mods/special/display_modpack/font_metro/textures/font_metro_0032.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3febdaa0cdedac64a17606e7285ce1ebf7f85f GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nGc^AX=wMLLn`O|{ rtk;vEc*BB4@K&ZyOT!ITO?HL_Q;pAFZL8Y>)WG2B>gTe~DWM4f?CBZ3 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0033.png b/mods/special/display_modpack/font_metro/textures/font_metro_0033.png new file mode 100644 index 0000000000000000000000000000000000000000..c349bb42ffc2e70bbc3ff1c4d5fe4865aefe2b93 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?eOhhEy;nGc^AX=wMLLn`O|{ wtk$!LUG#z3^u`GajNKd-FYWE@1KAlEg8mzy)wa084b;Wp>FVdQ&MBb@09L6P#sB~S literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0034.png b/mods/special/display_modpack/font_metro/textures/font_metro_0034.png new file mode 100644 index 0000000000000000000000000000000000000000..ead3d8e2d22c5c011a07350b357a99493a1fd960 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%se8IOhEy;nH#GlG;9#p@{V%M} t@lZ&prI>^JpL=Tsi($_}ktJ*l3|oo~&*z(DegbM?@O1TaS?83{1OO4H8HNA= literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0035.png b/mods/special/display_modpack/font_metro/textures/font_metro_0035.png new file mode 100644 index 0000000000000000000000000000000000000000..8d4c2e52ac62702bc4630a9a015ddce53b72f228 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?eOhhEy;nGc^6z5a9U0rNrRG xv07nM*q>_(n?KC>FCQr|zpSMDLhDLq2HtLq69pnS9D%wRJYD@<);T3K0RW*R9Gw6F literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0036.png b/mods/special/display_modpack/font_metro/textures/font_metro_0036.png new file mode 100644 index 0000000000000000000000000000000000000000..96dd761ae9da197b3b9c082160880fd88a5acca3 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3F(0hEy;nH#GeZIMJZgpw^SH zh+C1tX+nnZ|HT_8Jmut2nlWRUQp<(bmCOt`7g?OxTEX=asE@(Z)z4*}Q$iB}AP*lR literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0037.png b/mods/special/display_modpack/font_metro/textures/font_metro_0037.png new file mode 100644 index 0000000000000000000000000000000000000000..4f857ed8c05cc3a0adbbbc403e3c6a15c892cf0d GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%$#}XrhEy;nC;aGVYh(x(5ET$m iTGRJ#mSEErW`>zz%6FY?dg_7d7(8A5T-G@yGywqof)!%` literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0038.png b/mods/special/display_modpack/font_metro/textures/font_metro_0038.png new file mode 100644 index 0000000000000000000000000000000000000000..335261944198eb37534dc0b3d967cd80418c06b6 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?VIghEy;nGc^AX=wMLLYcuF^ uc9`THmwy%>3O<1hEy;nGc^AX=wMLLn`O|{ ztk-emm^w##(yXqBOcLUu0+)j%nk9r6PKaV)SbN9fg!mK_X`oI9Pgg&ebxsLQ0OVO4 A>;M1& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_003a.png b/mods/special/display_modpack/font_metro/textures/font_metro_003a.png new file mode 100644 index 0000000000000000000000000000000000000000..a9df9cbb632ea3c41b9b955111fb27df68205f04 GIT binary patch literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6VNVywkP61+1ML5p73Vav2dtB2 YP^)GC8L(e^FHoAn)78&qol`;+02B!kHUIzs literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_003b.png b/mods/special/display_modpack/font_metro/textures/font_metro_003b.png new file mode 100644 index 0000000000000000000000000000000000000000..1e505bf2a1708857b7226bf6d1948cece2058a8e GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6F;5rAkP61+1ML5p6`LF-1g`Z7 bII=SMhH-vhm^AwtPz8ghtDnm{r-UW|ML`lg literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_003c.png b/mods/special/display_modpack/font_metro/textures/font_metro_003c.png new file mode 100644 index 0000000000000000000000000000000000000000..9d27c2593f457c1152884902bc4d90545df03b59 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%Nqf3DhEy;nFHrlz-?D;9z$1cT hz9olamRA5DL+fVQ$1^9&SpbzWc)I$ztaD0e0sz$g6f6J$ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_003d.png b/mods/special/display_modpack/font_metro/textures/font_metro_003d.png new file mode 100644 index 0000000000000000000000000000000000000000..21d79cce4a47551b7ad61c4ae6280e1bd0c0bb59 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQX-x%jv*C{$qP(>^fMW@p1AH& a&A_n9PWoxW=g+%<@(iA?elF{r5}E*V2o!t( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_003e.png b/mods/special/display_modpack/font_metro/textures/font_metro_003e.png new file mode 100644 index 0000000000000000000000000000000000000000..4b65092b5b00e65f7cb2ecfe66bd3b248964df3d GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%NqM?BhEy;nFA({|?v&FMGUdSP hNgEiPChTHhm^)kc@$?^4%z>&HJYD@<);T3K0RRzH7cT$+ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_003f.png b/mods/special/display_modpack/font_metro/textures/font_metro_003f.png new file mode 100644 index 0000000000000000000000000000000000000000..3138476a94ffb18fa517ce28b6b327dd1f9e7387 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?VIghEy;nGc^AX=wMLLn`O|{ utjEJ@;K-BgA?7s0%|n3E8 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0041.png b/mods/special/display_modpack/font_metro/textures/font_metro_0041.png new file mode 100644 index 0000000000000000000000000000000000000000..3573b793f6bea45c8de82bc77b00fd120e48643c GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDLqdY$B+ufWCy1IjRL{~)Bf-` zF7a||6*NioY!OkLz2Ql{kH-|1rp`q&`&HgDFg)!wKUr|eg&(Ms!PC{xWt~$(69Cg@ B9S8sb literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0042.png b/mods/special/display_modpack/font_metro/textures/font_metro_0042.png new file mode 100644 index 0000000000000000000000000000000000000000..074ef01a520da49b77ecf1f2e3656474d2dee68a GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nC;aGVdHBFyERkh$ pgTl|Wf5#0t=PN8L+aso^PzqF>?r=bV11CrygQu&X%Q~loCIBWI8N&bo literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0043.png b/mods/special/display_modpack/font_metro/textures/font_metro_0043.png new file mode 100644 index 0000000000000000000000000000000000000000..83ec60222ffb91258e955d90524912d3ba03489c GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};+MX_sAr*|t4bA@pI@ta#cJkr$ y+56(yfyx^>4i}wwiE#enu$b2{-Ee6pJ44eS^OM;pd?o|6F?hQAxvX_nEc%hq;x!8978G?lM{aMw|g)s^=Ps_ yUf`)1R lX=#XP)i9p7;k70sgW(P1vu|Hp{06FI@O1TaS?83{1OPp27sLPn literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0046.png b/mods/special/display_modpack/font_metro/textures/font_metro_0046.png new file mode 100644 index 0000000000000000000000000000000000000000..190ce02f257c05d92cf411417b2c4ee09b8b41dc GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQnH>djv*C{$q7IDnHm|E3&>1R jX=z|-5ojn&7TSKK!psRu6{1-oD!M<1UeP3 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0047.png b/mods/special/display_modpack/font_metro/textures/font_metro_0047.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0f7d6c3bfa8d4eda21c99b6ae5695d64a57b13 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};CY~;iAr*|t4bA@pI@ta#cJkr$ z+56(y0*?chGrlF<@|bd^Ugnv=gr;J{+BUw8Z5&fvxfvLKdw6cISgB$U)X(7Q>gTe~ HDWM4fceNti literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0048.png b/mods/special/display_modpack/font_metro/textures/font_metro_0048.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7d1b8d5f4da7ebe07ed18c4e5a3eaf81503ac6 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq@+Au978G?lM{aMw-_)yzZfII h$jNc}cHk6l literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0049.png b/mods/special/display_modpack/font_metro/textures/font_metro_0049.png new file mode 100644 index 0000000000000000000000000000000000000000..72c3e644fd6e702615be315fc044bb8b32ef46d7 GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6Ax{^_kP61+gdhAZ4i4FDbqow! XO~hY56q5J{lx6UA^>bP0l+XkK{~Zv| literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_004a.png b/mods/special/display_modpack/font_metro/textures/font_metro_004a.png new file mode 100644 index 0000000000000000000000000000000000000000..758bbb54be61aba2e88e0c97dd9ff680bbad3b32 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQnH>djv*C{$qr2a8wEJnHeaac j;B4bib7Bac090Q+U;g2?rI&636*73b`njxgN@xNA=MaW978G?lM{aMw-|ho=Mj`K zNn{ZZmQZXIaPv5zsO2E4wubpKUs7zVrt69489`TA8M=>K9drH=v=XSB!PC{xWt~$( F696*M9eDr% literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_004c.png b/mods/special/display_modpack/font_metro/textures/font_metro_004c.png new file mode 100644 index 0000000000000000000000000000000000000000..67ec255505b0715ee4ab2f7e61dc51007d68a72c GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQevJijv*C{$q7IBTQm|@a4IU8 cDS9z5v@TY>ueRFg98d*=r>mdKI;Vst094!(7XSbN literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_004d.png b/mods/special/display_modpack/font_metro/textures/font_metro_004d.png new file mode 100644 index 0000000000000000000000000000000000000000..61642dcb4fa9097b5a136298a13e4841c70542a4 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^f#?07Q^Na=gJIEGX(CNnhuPvBsiQS(as zXMbzEK+}X5H9=Dscu!o$($C5v*3|ex=jzl8!VCbP0l+XkK Dqn;p& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_004e.png b/mods/special/display_modpack/font_metro/textures/font_metro_004e.png new file mode 100644 index 0000000000000000000000000000000000000000..58876c3aeef607aa4f47044d9e4be42abffb4726 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq|`iJ978G?lM{aMw*@dH3k&@7 t-(%3C5+>m$tjUu;QQ=HO{ER3D27LqPz0>^nKLqMv@O1TaS?83{1OVmL7}o#* literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_004f.png b/mods/special/display_modpack/font_metro/textures/font_metro_004f.png new file mode 100644 index 0000000000000000000000000000000000000000..021a8e9945b509a8ccfc82ef0656d5170f04bab3 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDFaUz$B+uf<74Nfx{SljU0}+QY#l~+!Eann9R(T}gTe~DWM4f D{D>RS literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0050.png b/mods/special/display_modpack/font_metro/textures/font_metro_0050.png new file mode 100644 index 0000000000000000000000000000000000000000..bcce469f6596a38487056098f1c9703f3c5aeec7 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nC;aGVdHBHIERjW6 su}7!hUm)1puls`qC!dD+5*Y@DA~oZ)?wWUh0d+8Vy85}Sb4q9e0Pz_Zg#Z8m literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0051.png b/mods/special/display_modpack/font_metro/textures/font_metro_0051.png new file mode 100644 index 0000000000000000000000000000000000000000..364b8461bcb112ee646d64f32be60ee47e32f2a7 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^{24M*;YukG#1I=LY MboFyt=akR{09Ozu?*IS* literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0052.png b/mods/special/display_modpack/font_metro/textures/font_metro_0052.png new file mode 100644 index 0000000000000000000000000000000000000000..6b516db9e6a66b6df483b0f6e31808e1749d3776 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq_jO<978G?lM{aQvjiTfmkHv~ yn{uKbLh*2~7aL$Q`THmwy%>3X_2hEy;nGc^AX=wSJ$tk5MO y#T_X(+ly^Ynvlq`tPAxii7|dng&%%)S^>4En4YeEE?xuF$l&Sf=d#Wzp$P!bIvkP! literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0054.png b/mods/special/display_modpack/font_metro/textures/font_metro_0054.png new file mode 100644 index 0000000000000000000000000000000000000000..9bafdba54886867277be8a2f058f0dcc799e6e71 GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq$E6D978G?lM{aQvobO2ak4mw eNkj@wVP@btp?)*eCMgc6hQZU-&t;ucLK6UeD-qTJ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0055.png b/mods/special/display_modpack/font_metro/textures/font_metro_0055.png new file mode 100644 index 0000000000000000000000000000000000000000..d50772d107df0c104092fd73ac1e31a3619c7880 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%$$GjthEy;nC;Z@V5nxE?*FE@O jLx+W3u|>~EmVv>6#rW)RH&Z|p-S{XcD{an^LB{Ts5 D2eKWK literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0057.png b/mods/special/display_modpack/font_metro/textures/font_metro_0057.png new file mode 100644 index 0000000000000000000000000000000000000000..993df3bedfe7a2925b532c9835bbb69dfa778705 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^f#?07Q^NEvy$IEGX(CMW#hZ!!2F-^|W( zC4?zG@q?g`MDICeSI%XuOSBma6$P5x8D2PrggWIjFfen3trE??oCeg*;OXk;vd$@? F2>?{>99#eZ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0058.png b/mods/special/display_modpack/font_metro/textures/font_metro_0058.png new file mode 100644 index 0000000000000000000000000000000000000000..111f3b45d3d6bebf2bf96a757eee64811c168eb2 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlqzpV=978G?lM{aMw+S?yIy}K4 zyftB=hhjzuCyNU!N8%x&8E%5xWG?Tlu`THmwy%$#}XrhEy;nC;aGVYh;KOU{2uT iGb^28=hQrfnL+xW?&V)6UzY*ZF?hQAxvX literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_005c.png b/mods/special/display_modpack/font_metro/textures/font_metro_005c.png new file mode 100644 index 0000000000000000000000000000000000000000..aec81f504e270c64ea77143a8fe8ecbb3ca7bb66 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%iFmp=hEy;nC;Z@V$zW)Iup&x? ZfuVB0^wUqG7MwtN22WQ%mvv4FO#o#R65jv- literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_005d.png b/mods/special/display_modpack/font_metro/textures/font_metro_005d.png new file mode 100644 index 0000000000000000000000000000000000000000..103eeb5c137fb7a1b6701e006f2adf2db691a874 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJmdKI;Vst0NP9x6aWAK literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_005f.png b/mods/special/display_modpack/font_metro/textures/font_metro_005f.png new file mode 100644 index 0000000000000000000000000000000000000000..99d7cf787d2a6057c17f38a60c7c7a770713d489 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQi7f?jv*C{$r6GO?2V47ws10N X2=RXQoO-VYD9PaI>gTe~DWM4f_B0T6 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0060.png b/mods/special/display_modpack/font_metro/textures/font_metro_0060.png new file mode 100644 index 0000000000000000000000000000000000000000..787b86cd581a95529c0e76d2727137f0441ce336 GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ{3CD5>Wf~3T%4YOF6YBDn1ov(MP@Yn6nK=llsu6{1-oD!M<>|`4A literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0062.png b/mods/special/display_modpack/font_metro/textures/font_metro_0062.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1f8f364f4d73863fc8cc2c86a023f423b9fbde GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nC;Z@V$!I7!_#ft$)I@uOF8pepkfA3S3j3^P6`THmwy%X?nUihEy;nJ23ul6yWd>{lnk1 wqUnF2f)mHVLk8_Jjx951Y`THmwy%sd~CNhEy;nFJSw@->Bil(V^6G r%t`oHf2{E`E*|5LH~KVvWEmJFcj;bc7S;l?7#KWV{an^LB{Ts5*K-%D literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0066.png b/mods/special/display_modpack/font_metro/textures/font_metro_0066.png new file mode 100644 index 0000000000000000000000000000000000000000..a00c487a1c5d7782b3fb4b1491bc86c54ee0fcc0 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml)R^lV@L&KazoR91*UV1j%#Gt kO!#<`iVQ`A}c|2-o2D2R)#3aFI9)78&qol`;+0Kmo*J^%m! literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0067.png b/mods/special/display_modpack/font_metro/textures/font_metro_0067.png new file mode 100644 index 0000000000000000000000000000000000000000..dc920e8fa5b9e928fb586ac35a08c3cc2f476727 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQrey_jv*C{$qJHx*qu`NR$ZtU yI3nV3AwX?T>$0v5krI3d3KW`THmwy%DR{a#hEy;nC;Z@V$!I7!_djv*C{$qdc^9ZobPC^1aZ k;GOY5@y!1fmtHV1%&m}mHfyo-aiBs5Pgg&ebxsLQ0A}qOHvj+t literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_006b.png b/mods/special/display_modpack/font_metro/textures/font_metro_006b.png new file mode 100644 index 0000000000000000000000000000000000000000..95472aadab61a022deacd7ca69cf5cc113d99c22 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?wajhEy;nC;Z@V$!M@S_+OzT xL8(RHQ-+g)-mH@nPBXL$XLw#HYcY7rz~FY-@O*{F3P+$e22WQ%mvv4FO#tc69e)4- literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_006c.png b/mods/special/display_modpack/font_metro/textures/font_metro_006c.png new file mode 100644 index 0000000000000000000000000000000000000000..1c6c1341badbf5f54d81f04b4be2546bb60d024e GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQX-x%jv*C{$q7IBTM``P)wJ3z a7#Nxsioe`gWmW=|XYh3Ob6Mw<&;$TP`4S5N literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_006d.png b/mods/special/display_modpack/font_metro/textures/font_metro_006d.png new file mode 100644 index 0000000000000000000000000000000000000000..e59d9b4cad18d972b1539a8d195a6da1602e1ae9 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDJ4%A$B+uf`THmwy%$$7dshEy;nFA({|?!@s^-c^7x kkmX{;iBDfdm&hFVdQ&MBb@05C2V4gdfE literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_006f.png b/mods/special/display_modpack/font_metro/textures/font_metro_006f.png new file mode 100644 index 0000000000000000000000000000000000000000..03d320ba6a3d395a0013fd97c1f1a2cf0021849d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSEm%hEy;nFJSw@->Bil(V^6G n%xRjsx4^L@8@T2#Uct;@U88-q#a{F+P%(q2tDnm{r-UW|keL`a literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0070.png b/mods/special/display_modpack/font_metro/textures/font_metro_0070.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1ae85387de47099fb8a149f2142addd311da3a GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nFA({|?!@s^-c^7x skmX{;iBC_sl4f=CaPAbI-p|3zFw5QeY>scp3!n}LPgg&ebxsLQ00-F_qW}N^ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0071.png b/mods/special/display_modpack/font_metro/textures/font_metro_0071.png new file mode 100644 index 0000000000000000000000000000000000000000..75be22f6d6c0ac9cddd2e3e6abce6d19d3ce9dce GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%se8IOhEy;nFJSw@-xMIF*wWzP tq@fd{o5HDd=18{nGV4IbL`NS62CePJXVcm3T!2~_JYD@<);T3K0RZ727j^&u literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0072.png b/mods/special/display_modpack/font_metro/textures/font_metro_0072.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd185c477de937b8f55ca247e50921cdfa0246a GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DOpb!$B+ufWCiv=>`n%p;tmce jjBFvI2@bi8rx+OSJ(YaEI(zyoph5;uS3j3^P6t{lf4 nf*Y^%_>>B;buHYXqbAP4ApBDKE~A4SNE3sntDnm{r-UW|6{Qp+ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0074.png b/mods/special/display_modpack/font_metro/textures/font_metro_0074.png new file mode 100644 index 0000000000000000000000000000000000000000..055f6daa4bed7b370c211e7db5de68bb064bc53a GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml#Hi~V@L&K@&T6rjRNA|?Rgdz iUKE*pQdP&nih&_4PUea7zNQSIItEWyKbLh*2~7aInG`bs literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0075.png b/mods/special/display_modpack/font_metro/textures/font_metro_0075.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9ef20514b7ed18fa07750fe4064ec0789cdda6 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%$$7dshEy;nFA({|?v!Hom-YYR k4G&~kQXB-^E=^%(=w{NqUN=u745*U9)78&qol`;+09&0GI{*Lx literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0076.png b/mods/special/display_modpack/font_metro/textures/font_metro_0076.png new file mode 100644 index 0000000000000000000000000000000000000000..e07528dd5d481d2bc5e382260a8e7b5b04e1daa6 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQgWUyjv*C{$qMp+*qto8Jrr4l k-6pB9JUYb6!5zrOp!r|n!9I5hb)ZTHPgg&ebxsLQ0MTROyeGkCiCxvXGId9;YzAR*(hK!an6?hi(WoBnFICh9C&2Gqdd>FVdQ&MBb@0IR+jH2?qr literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_007a.png b/mods/special/display_modpack/font_metro/textures/font_metro_007a.png new file mode 100644 index 0000000000000000000000000000000000000000..503662788abf2949f4cd9c646ce4493125e124e9 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DJf4E$B+ufWCiv=?hYl4DGh24 gJ8hVfxF)bOWK<|TSRb)v7El#~r>mdKI;Vst0DyQC7XSbN literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_007b.png b/mods/special/display_modpack/font_metro/textures/font_metro_007b.png new file mode 100644 index 0000000000000000000000000000000000000000..45908ea8323382f1230f42202e0967034881b5ff GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml#-{5V@L&KazoR91*UV1j%#Gt pB-p1j)Xi=A`e>rEP6ICkgVZefhnlbP0l+XkK_FWKU literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_007d.png b/mods/special/display_modpack/font_metro/textures/font_metro_007d.png new file mode 100644 index 0000000000000000000000000000000000000000..81eb399f25fd9f585b3bcb2cf634517c988cd76a GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml(MIbV@L&KGDFjU9*+n10zzU9 pj5S3ZcQay?zCOC#xl&x5fkCTF{$aiJk7+>V44$rjF6*2UngCP!7drp| literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_007e.png b/mods/special/display_modpack/font_metro/textures/font_metro_007e.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6250219adb2f869428ba6b0f355603c980bde2 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq~ttZ978G?lO-xX$g@1mX))kg lq~R$1tA7!*>+=O{43`&*zl>V{k^`uc!PC{xWt~$(6993@7+C-S literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00a0.png b/mods/special/display_modpack/font_metro/textures/font_metro_00a0.png new file mode 100644 index 0000000000000000000000000000000000000000..eaf42aa0e571c4616ab08de799baa813ad4240c0 GIT binary patch literal 71 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ`THmwy%X?VIghEy;nA7KB-teAN4KL>}n vQ!9rf%gF}K6Alv<@@^Zpp8TMu#=syhZ+U#lziG>WdKf%i{an^LB{Ts5PNo|x literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00a3.png b/mods/special/display_modpack/font_metro/textures/font_metro_00a3.png new file mode 100644 index 0000000000000000000000000000000000000000..32edfe3911178c8f32451c32f275fa8ad2c56b96 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?VIghEy;nH#GlG=wSMHSfNcz uWGaU!3(J3H1wY3_X+mO7tv6UT*%>@97@mKrp`ZcO!{F)a=d#Wzp$Pyv4;fVe literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00a4.png b/mods/special/display_modpack/font_metro/textures/font_metro_00a4.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae56f7563068867b4e492bf4ac37229af79e92f GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDI-r8$B+ufWQL~yJTD&D&tYsb zkUHq(k?h3c!0}-6p(hJhtNIEZRK4gpV?u$#11`HLCWd7m-diUWyiNk@X7F_Nb6Mw< G&;$U8ARmeV literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00a5.png b/mods/special/display_modpack/font_metro/textures/font_metro_00a5.png new file mode 100644 index 0000000000000000000000000000000000000000..232aa03982bf7eefce182588724434b5fb9442cf GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq;x!8978G?lM{aMw+S?yIy}K4 zyftB=hvMaos)SdDOFpbRzG2RUM4l_gU1kgnPqsMj=UBP#6i^?7r>mdKI;Vst0ENdP AVE_OC literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00a6.png b/mods/special/display_modpack/font_metro/textures/font_metro_00a6.png new file mode 100644 index 0000000000000000000000000000000000000000..1aa23c64c6ff80937f4dc1d059d2eeffab27eec2 GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=65l>9i5u5-3 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00a7.png b/mods/special/display_modpack/font_metro/textures/font_metro_00a7.png new file mode 100644 index 0000000000000000000000000000000000000000..5556ab065b9eafa0bbfb296750f1ba2c42242680 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DIHH2$B+ufWQL~y0URtGdQKe2 z9KspdEzTqyNMmziSjg5cIioDmka_y!P8NpsUrkTHIu!UGsE@(Z)z4*}Q$iB}B-0wE literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00a8.png b/mods/special/display_modpack/font_metro/textures/font_metro_00a8.png new file mode 100644 index 0000000000000000000000000000000000000000..656be286d2ae74a26900c31991e04cc5ba494ebc GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DG^T>$B+ufWIZp;Zeiw%?fCISft7)Qud=wer{-cg P&>RL&S3j3^P6_nEc%hq{KX3978G?lNT`m;BPUQRpglE dc|n4K;dQq3)63INgaK7Bc)I$ztaD0e0sxtJ6tMsR literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00ac.png b/mods/special/display_modpack/font_metro/textures/font_metro_00ac.png new file mode 100644 index 0000000000000000000000000000000000000000..3070214eb1d5e277f2543136e678b2d181a3139e GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%iF&#?hEy;nOC)@d7flj(Vc)^} al9QphQ26aq4xf8K1q`09elF{r5}E*3KoVL2 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00ad.png b/mods/special/display_modpack/font_metro/textures/font_metro_00ad.png new file mode 100644 index 0000000000000000000000000000000000000000..7466708b2481fb9d320b7fd6961dd0e641fff274 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJgDq}KuHEqS3j3^P6G^~tYs>5YGVX>50zcx)JaQvSYUh-o-oy2MZIwXbvF)-304JC)1Tt*$;t RtAGYEc)I$ztaD0e0su8*C3XM+ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00af.png b/mods/special/display_modpack/font_metro/textures/font_metro_00af.png new file mode 100644 index 0000000000000000000000000000000000000000..2b0791b23c9d87e606b0aa8a5fde2d6bf3eda42f GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DIrf6$B+ufzopr0HJ~uX#fBK literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00b1.png b/mods/special/display_modpack/font_metro/textures/font_metro_00b1.png new file mode 100644 index 0000000000000000000000000000000000000000..74ca0224bc98004998799b0d1c0829ab967b3499 GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DH%@}$B+ufWCig*>`r%>{tF7M jW^fXaosh)#l!3u$f$ZaFKX;u0s$=kU^>bP0l+XkK!j}~( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00b2.png b/mods/special/display_modpack/font_metro/textures/font_metro_00b2.png new file mode 100644 index 0000000000000000000000000000000000000000..fea5e5ad2388b2d74b8ecea852639ef4d12a637a GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQu3ZIjv*C{$qY^Z3pf}B_?9U+ l39$*R(iC@aka7CL&XAR^apU=q?Yuyx44$rjF6*2UngHzG6rcbA literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00b3.png b/mods/special/display_modpack/font_metro/textures/font_metro_00b3.png new file mode 100644 index 0000000000000000000000000000000000000000..2be789b385894a80751b25b97f508862b56fdb33 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQp%n#jv*C{$qY^Z3pf}B_?9U+ q2{9&Q8MIztt)!YA5510UzGkCiCxvX$B+ufWQL~y2`3tkxD>Pj Z1*ep<|MZ`Dqz1@j@O1TaS?83{1OQMi6AJ(U literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00b5.png b/mods/special/display_modpack/font_metro/textures/font_metro_00b5.png new file mode 100644 index 0000000000000000000000000000000000000000..29fce11883848658c4b8fc2a261dadb0016e5677 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSEm%hEy;nFA({|?v!Hom-YYR ojSV6qi#QieHq)$ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00b6.png b/mods/special/display_modpack/font_metro/textures/font_metro_00b6.png new file mode 100644 index 0000000000000000000000000000000000000000..e581e0851eca48a0f40556fd133da6e6da760301 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQi`4~jv*C{$qdc^3piLg-qp`w ocryJP8Q8Y3=FCT W%zqWW|J)0dWbkzLb6Mw<&;$VFU=WD_ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00b8.png b/mods/special/display_modpack/font_metro/textures/font_metro_00b8.png new file mode 100644 index 0000000000000000000000000000000000000000..b7e4f52372e8f8c0ce91e14c9ebb194c2fb10dd2 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml$587V@L&KvV_kAdx1qohEE>y gg#7%U(80^VP}a`#h4*!R8Bi62r>mdKI;Vst0H<#hx&QzG literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00b9.png b/mods/special/display_modpack/font_metro/textures/font_metro_00b9.png new file mode 100644 index 0000000000000000000000000000000000000000..5093e1fc03e95153fe7e9aa3cf9d78f45099e9df GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml$@uFV@L&KazoR9hZ7BFe)gaG l$^U%8$we}ec(LL_d`THmwy%DS5g$hEy;nGc^AX=wSJ$tk5MO o#T_|M$5BG~uvSf_nEc%hq{KX3978G?lNV_I;BN_-)g?5A d>k=yi19Ot}Q>LFrXMidgJYD@<);T3K0RVtP6FUF^ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00bc.png b/mods/special/display_modpack/font_metro/textures/font_metro_00bc.png new file mode 100644 index 0000000000000000000000000000000000000000..d7310248e63fe383e82c016221cb5be2de54b495 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDJxGG$B+uft-XeP3 PrZ9NA`njxgN@xNAICLje literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00bd.png b/mods/special/display_modpack/font_metro/textures/font_metro_00bd.png new file mode 100644 index 0000000000000000000000000000000000000000..5574dbf52c727fdf789bf00dc4c94cc9b93e74f0 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDHBf@$B+uft*02-7z`Ph5B~Xo zxmxBZL#v*^y!_)Nl{$-VQJRbt(7w>b~bK>8G)j<6Wp00i_ I>zopr0Q_ts-T(jq literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00be.png b/mods/special/display_modpack/font_metro/textures/font_metro_00be.png new file mode 100644 index 0000000000000000000000000000000000000000..d66098bdaf3f28fb6390b16c34dc81a9f37741e9 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDJxGG$B+uftvv@h859H#->HA8 z<#dsw@>X?gjCI(i^^8l)4V_9=OhnVye*N<1=&y=PFFUkOs;DgZV=Nq4?73YsaLXQ` ODGZ*jelF{r5}E)cpe9xT literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00bf.png b/mods/special/display_modpack/font_metro/textures/font_metro_00bf.png new file mode 100644 index 0000000000000000000000000000000000000000..cc4e0fbd40fb2abc3d3d954c1d0e642d817d62db GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nFW~#Z-*SWH@?zmW=*Y2<`!O@a;#kG|3u~4!0W~mqy85}Sb4q9e042g2Y5)KL literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00c0.png b/mods/special/display_modpack/font_metro/textures/font_metro_00c0.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb61983085a21429085e2afbd721a31d1a0c0d8 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq_jL;978G?lN*};J9Mydct5=8 xIO#~ehKf$3fZK%@)qjhfnuIvin*3uK7-mnlu_9 zw0xSFT38ZUIXV=5_b{>9+*5XEbm9m$Ol1AS$e{K)c4i}wwiE#enu$b2{-Eiqf=0oQcc^JgYtd4!y*6|gnmBG{1&t;ucLK6VK Cnjy*n literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00c8.png b/mods/special/display_modpack/font_metro/textures/font_metro_00c8.png new file mode 100644 index 0000000000000000000000000000000000000000..704883a4b89ddbac2ef50e5289b77e9126982847 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQi`4~jv*C{$qdc^9Xj|7SPh>F n3d|Rf>t$&%FrD;K*bE6u6{1-oD!M!5 oH#(x;;;zi7=+moW-6X`okP&ToewImdKI;Vst09g?gxBvhE literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00ca.png b/mods/special/display_modpack/font_metro/textures/font_metro_00ca.png new file mode 100644 index 0000000000000000000000000000000000000000..11d6c46bf9681823175cf72dc91e03ca0deb0747 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQp%n#jv*C{$qdc^6FL|a^rjr) q{ip0)<5XcHByi}8$0lVBMuxh4lQU))(mjC689ZJ6T-G@yGywpYB^R&& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00cb.png b/mods/special/display_modpack/font_metro/textures/font_metro_00cb.png new file mode 100644 index 0000000000000000000000000000000000000000..551fe4635dfbc6f3f8865848735cdb108439ab38 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQp%n#jv*C{$qY^Z9XJ#pGAOo4 q|8Z~o(efcfMWJQo#1!`cCWc9wrl;rYpM3*V&fw|l=d#Wzp$P!TTN%y( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00cc.png b/mods/special/display_modpack/font_metro/textures/font_metro_00cc.png new file mode 100644 index 0000000000000000000000000000000000000000..4c16bbca3fcbe1f70ab1c39c8cb17d0eca753c2c GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQevJijv*C{$q7IBTLKzRISMXS doNU0rU~^OSwferF`++JLJYD@<);T3K0RWIW6m9?j literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00cd.png b/mods/special/display_modpack/font_metro/textures/font_metro_00cd.png new file mode 100644 index 0000000000000000000000000000000000000000..2e645f5bfccafffd7795e2ad3898de98de2457a5 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQsSO2jv*C{$qY^Z9ZobPC@{oK dS>|(yfgxe5=k literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00d0.png b/mods/special/display_modpack/font_metro/textures/font_metro_00d0.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3f9c14f49947438e72beff8b7209e9f1276fde GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq;x%9978G?lNp-+7j&=)2+f#e zpw}j1#NN*`r#;V3k<(}K2agAZdWrmp6muCEuK#r1z0$;O9#A8Lr>mdKI;Vst0NVl_ AsQ>@~ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00d1.png b/mods/special/display_modpack/font_metro/textures/font_metro_00d1.png new file mode 100644 index 0000000000000000000000000000000000000000..4b0b072b79e8823cea38ee2a7442fcadcbfce2bc GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq)a?r978G?mv%R@F(`;IfB$b^ zJJCm1*lNk$$|!|r)eVQaU3BU*W-Z&fCHd8!TUD2{tgg#5OH8mhad`iPWT1WqPgg&e IbxsLQ05Ak2Q2+n{ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00d2.png b/mods/special/display_modpack/font_metro/textures/font_metro_00d2.png new file mode 100644 index 0000000000000000000000000000000000000000..f370f968f138f2d2ac7cafa52db87248670f2ffa GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq_jL;978G?lN*};J9Mydcs>m5 xU-{f#%Vp|;6y+Hlb~A-$lszaFU8bVTz;Jts{zcw68%3Zl22WQ%mvv4FO#s$M9AW?f literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00d3.png b/mods/special/display_modpack/font_metro/textures/font_metro_00d3.png new file mode 100644 index 0000000000000000000000000000000000000000..8570d5509061aaf27bd8ac4341a1300c8e1e7b69 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq_jO<978G?lO34;HwtiFX!T_L yzfd4pfH6?j;3kJ!lm9Z7WwI5qt(u`THmwy%DSEm%hEy;nFW~&a-?AcyMcDCh ntD?Ys#Ti^>bP0l+XkKZYUO3 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00d8.png b/mods/special/display_modpack/font_metro/textures/font_metro_00d8.png new file mode 100644 index 0000000000000000000000000000000000000000..b57e7805bfe97d5ff8134804c0a9cc5f62c3f82b GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDGN^*$B+ufXH0*j&VfrlIx(wEI9H8U)1`NqKTVqN&kiE}RL0?lCX MboFyt=akR{01Z1KKL7v# literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00d9.png b/mods/special/display_modpack/font_metro/textures/font_metro_00d9.png new file mode 100644 index 0000000000000000000000000000000000000000..29e69827b1ac58e31a12bf0503118324821476a3 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DS5g$hEy;nGc^Bq=`THmwy%sd&0LhEy;nC;Z@VabQ@UC?nCS q){($3cJRN34hy?ti=K}x14Hl!`THmwy%sd&0LhEy;nH#Gfs=wSPoEP5>D qt9+|({lWhlIxOspEqXq(3=B*4bgpdEC{P8eXYh3Ob6Mw<&;$VeFc|~@ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00dc.png b/mods/special/display_modpack/font_metro/textures/font_metro_00dc.png new file mode 100644 index 0000000000000000000000000000000000000000..344ab0165eb3c9fbcbf4e6155136077e015868d6 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DS5g$hEy;nC;Z@VS)sxl=O|+K o^p>XhpZ-Hm1p-bl4qahnsIaj<`ZLD+K2SA-r>mdKI;Vst0M!Q?LI3~& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00dd.png b/mods/special/display_modpack/font_metro/textures/font_metro_00dd.png new file mode 100644 index 0000000000000000000000000000000000000000..79e4533c9d8de339d353667baad79edfa8fff618 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq_jL;978G?lO34;Hwtil;QG(* xxW=Z0lgE}rtV=|%T0r2kZ^c~iXwFlN419f>*Dt%g_yp9&;OXk;vd$@?2>@e88nplb literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00de.png b/mods/special/display_modpack/font_metro/textures/font_metro_00de.png new file mode 100644 index 0000000000000000000000000000000000000000..f23793d137964f847e8f0d6ef356ea1517916e7e GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQtF;Ajv*C{$q7IBTQnGU3-BZf u|LR{SsMwJpAaLkPM}vf!P>EJ414CV+{zZiiXD0)-FnGH9xvX`THmwy%8F;!lhEy;nGc^AX=wMLLn`O|% zyj;+SXDWxHk0Zx{5YHPvCW$GPCXOwiH_rC7WMB}QVtw@d;tyMadKo-j{an^LB{Ts5 D0R0_r literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e0.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e0.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb11d8a05641a7325364616f30ea72b84bb2e56 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQd*uajv*C{$qdc^9Xj|7SPerD xC^|88D};Uikm<^CAo2tcPiVy1rb|;87})n1olA1*`3=;?;OXk;vd$@?2>@6A8%F>D literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e1.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e1.png new file mode 100644 index 0000000000000000000000000000000000000000..e44e7343c270fc0db559a3308225ae6b68fe136a GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQrey_jv*C{$qh~a9XMDy7@Z#2 x%P6sI;7BqRoFCT0FsJp*fq>SlIvTz}o$Pyz&TV2jlMd9z;OXk;vd$@?2>?588La>S literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e2.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e2.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7a91c339fee710bc0e22dad79bd5ca7b418ba0 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQaYY4jv*C{$qdc^6FL|a^rjqP z|94o?iD9;alMv&F4A)}eE&(U5^}QV5gP9m)FPNUbDj4<=sE@(Z)z4*}Q$iB}g)|#1 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e3.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e3.png new file mode 100644 index 0000000000000000000000000000000000000000..df0a7f24edced6566c4b2621e19abb8af16a7d41 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQhJ^)jv*C{$qdc^9XOO8KCllF zu>Zl|&cT?|#No+uV7aIwL%O1|K}e!0w^uL|gUn%*GaVd4e}Os~JYD@<);T3K0RVMq B88ZL? literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e4.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e4.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc60ce9e01beb049d6cb7677d311ac96a2c7a43 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQo5cljv*C{$qY^Z9XJ#pGAOq2 z|7mw_VK8%SQDJ&;xl5p7^8`tWRU2lpF4bgYFg#^;ihWD>RiH)&Pgg&ebxsLQ0I-`J AH~;_u literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e5.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e5.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b35cb3691ce916765e912df6997b88f59289bc GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQaYY4jv*C{$qh~a4cKBBRx3z} y^9eHDU=f_e(crJ`#Bk0jEn&r>EU_uefSMj&Hae#fXZ8rFkHOQ`&t;ucLK6T*0~zrE literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e6.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e6.png new file mode 100644 index 0000000000000000000000000000000000000000..9badef6ac8f34aa915ac324e6ce89e616c4e4e1c GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^{2tL zatP~4NZj1Oc$mq_E%}ubL(U|XT{4%Msu&nnYx-~O`PujwsFA_b)z4*}Q$iB}vCJGa literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e7.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e7.png new file mode 100644 index 0000000000000000000000000000000000000000..5485a779dc11beb2695e4abe710d1e6e84545cfc GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQmURVjv*C{$qRV?v^$hAwkR}l shPSS1bWxn4z$b0U8pv4ZZNSJdak|Q#?!aA(fEpM)UHx3vIVCg!0H`THmwy%>3F(0hEy;nGc^Bq=wK?~ejL!g z?wdW+B94U{FSPtizTUHv>9CK@wq&kgb_Ry+A%^Fj%NC literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00e9.png b/mods/special/display_modpack/font_metro/textures/font_metro_00e9.png new file mode 100644 index 0000000000000000000000000000000000000000..a2bb5f75330fa81fde07f179fa466d407a805f34 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3F(0hEy;nH#Glu;9%!aOgd1{ y;UehdAfjj@HtRzDn^}gT2{Ss6m-!^VVqjPwV|c#dYnnJvAA_f>pUXO@geCy0r5tAf literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00ea.png b/mods/special/display_modpack/font_metro/textures/font_metro_00ea.png new file mode 100644 index 0000000000000000000000000000000000000000..9af106509adb8ec7ddbfb13eb6bb529a7adf6b53 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3X_2hEy;nH#Gfs=wSQj+{)Sf zU!X&&r9s0fL&s#{{~M;ss}2|l_rINS=n5mlId7wLMOxhrK#dHZu6{1-oD!M`THmwy%>3X_2hEy;nGc^5o=LPUns|BczlLK+j*th<89MIphgByS3j3^P6gTe~DWM4fRyq=t literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00ed.png b/mods/special/display_modpack/font_metro/textures/font_metro_00ed.png new file mode 100644 index 0000000000000000000000000000000000000000..a253c2ecca406ab5b2a395714a598b10e0726a54 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6F;5rAkP60RhNk}x97_clw46-Y b>KGW#@ru4ym3)5{sDi=M)z4*}Q$iB}Cy5aU literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00ee.png b/mods/special/display_modpack/font_metro/textures/font_metro_00ee.png new file mode 100644 index 0000000000000000000000000000000000000000..0e501c43cc0ff94cc7e21a7eb0910c076e2ef4a5 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6aZeY=kP60RhNk}x9E%qCSTuZC ddF%i?gX|fxS9=egW&$c<@O1TaS?83{1OSz@6!HK7 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00ef.png b/mods/special/display_modpack/font_metro/textures/font_metro_00ef.png new file mode 100644 index 0000000000000000000000000000000000000000..28a0ac61fff306f2a11f40b331d365549ccd203b GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQj(r7jv*C{$q7HsGcf&c6zJq+ fHxQIE;$&t>Iw<~9&E&HTP!WTttDnm{r-UW|o4OL# literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f0.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f0.png new file mode 100644 index 0000000000000000000000000000000000000000..818a1d933a81eed52f79d8639168235585944dee GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3X_2hEy;nGc^Af;7D~mSg+E- zmEiQFg>&W)c~6dmhfLZxJgDc%49PZVUCGRFZK=fx9-n=dK#dHZu6{1-oD!M<0qz~L literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f1.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f1.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4dd8fa6e5247b2cccae7bd53d108623692093f GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nGc^Bq;809tP-1AS rU~tl&m6p<>)N#yd+Vb@ZPZ<~%Pcl4j;AnLLsDZ)L)z4*}Q$iB}$D0_q literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f2.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f2.png new file mode 100644 index 0000000000000000000000000000000000000000..fa278c234b78110a1b08e3dd3f82ed86fde77d81 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?VIghEy;nGc^Bq=wK?~ejL!g v?wdW+B94U{CpgTe~DWM4frK25i literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f3.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f3.png new file mode 100644 index 0000000000000000000000000000000000000000..1267a6f4f83e91188659a16b160b27bc7d2f4678 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?nUihEy;nH#Glu;9%!aOgd1{ v;UehdAfjj@w#g>4$v~|w^oNYAECa(uIsJ=gOZBsWnixD?{an^LB{Ts51xXlJ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f4.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f4.png new file mode 100644 index 0000000000000000000000000000000000000000..79966603f4dee8610375d8ea6293a6fae830984e GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?eOhhEy;nH#Gfs=wSQj+{)Sf wU!X&&r9s0fLnozj6HB5G&*~4BT~-VXA9xKe{JWpu4%Efq>FVdQ&MBb@0KoJeH2?qr literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f5.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f5.png new file mode 100644 index 0000000000000000000000000000000000000000..bbaf390cd3a1d087c77d6f5e3c237f6839a1c90d GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3F(0hEy;nGc^Bq;809tP-19n yIau#A^}nEiD@Sjuj{h`;p3X#3JNH0#28NuI#%C8VJ|7I!$KdJe=d#Wzp$Pzi#TxYh literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f6.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f6.png new file mode 100644 index 0000000000000000000000000000000000000000..99d890abf1b13310d0a900c853f2a57439da9892 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?eOhhEy;nGc^5o=Ld1zrDV&F9NQ6Bs7Aa+5$UAO)*5tq5M4&DPPgg&ebxsLQ0C?UTng9R* literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f7.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f7.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab6087e105af10cddb987467c672aa12069d4cc GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%NqM?BhEy;nFW~#Z-*SV6Gux## gg7xI~xyu+Bu33n`yxg-+1*nR_)78&qol`;+0Qk5TMgRZ+ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f8.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f8.png new file mode 100644 index 0000000000000000000000000000000000000000..3e253f8dd7c0f5f3b1e89264f81bfb91737a66b3 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?nUihEy;nFJSw@->4uK!@=6b v(8Rf1(8p&ghmfMj4F;dxg0BRGt}rs_oi{%FY;lw-P!ofvtDnm{r-UW|1V|XX literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00f9.png b/mods/special/display_modpack/font_metro/textures/font_metro_00f9.png new file mode 100644 index 0000000000000000000000000000000000000000..09261efa60df9454662473acd6d87d2705c3564c GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd&0LhEy;nGc^Bq=wLKxEnMxm q;idi$`Bv8F3JT0!22+;FFfeGW*1cTy^JN)OJ%gvKpUXO@geCy_D;h)q literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00fa.png b/mods/special/display_modpack/font_metro/textures/font_metro_00fa.png new file mode 100644 index 0000000000000000000000000000000000000000..5c927ad3f21586e6cb27018f7d7a61609e0ca076 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nH#Glu;9#q0mDsS_ ral=dfAM&lN&lMDyy9}l*lVM;`*sOc`QD*E0paup{S3j3^P6`THmwy%sd>6MhEy;nH#Gfs=wSPoEP5>D st9+|({lWhlIu`7V6Sp3$b+u$*uwSHi>Bp`^AR`z&UHx3vIVCg!0BV#RVgLXD literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00fc.png b/mods/special/display_modpack/font_metro/textures/font_metro_00fc.png new file mode 100644 index 0000000000000000000000000000000000000000..2d88de17ea1f165c8d931baccae500747535267b GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nGc^5o=FVdQ&MBb@0190h7XSbN literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_00fd.png b/mods/special/display_modpack/font_metro/textures/font_metro_00fd.png new file mode 100644 index 0000000000000000000000000000000000000000..6b91ae04203d120b4227c586ffa38b158a8ddf8a GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQd*uajv*C{$qmi_9XQxI7=0R6 xG96UXX-PQbF{#BNhG%+W#$ka5$4h_M8Gff~T}w$mc@L`THmwy%X?nUihEy;nC;Z@V$!I7!_S9LUef!ZEDFh09pcF}2|9tKZWKbLh*2~7YTiW*)3 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0102.png b/mods/special/display_modpack/font_metro/textures/font_metro_0102.png new file mode 100644 index 0000000000000000000000000000000000000000..1b89caf8900c7c36a9d9e61a5a2f916d64369cf5 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq;x!8978G?lNp--J8&$%c%WWG zh0)=v@U#P4nm4d4E9Uh68C^F&*?u~3F;FLir>mdKI;Vst0M98L AZ2$lO literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0104.png b/mods/special/display_modpack/font_metro/textures/font_metro_0104.png new file mode 100644 index 0000000000000000000000000000000000000000..74a7935d476377ea276b15ef128a5f50d898a221 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDML>e$B+uf+LMfI3;{fcFWmco z>94%Apr_$Cqp$tNZ_Wy4u2T@+oRHY&efyux<0E$}_|I*!Ir3$xqc2c1gQu&X%Q~lo FCIIlXBZvS1 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0105.png b/mods/special/display_modpack/font_metro/textures/font_metro_0105.png new file mode 100644 index 0000000000000000000000000000000000000000..33c148006427d7837195bf41578fa580bf91cecb GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQktGFjv*C{$qQKiv^%#jm^rqn wFg>{3CD5>Wf~3T%4YOJkm3J}h%JN}gXyh_J`+MJ$lR!-jp00i_>zopr0C#vClK=n! literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0106.png b/mods/special/display_modpack/font_metro/textures/font_metro_0106.png new file mode 100644 index 0000000000000000000000000000000000000000..509f572e055f1624abdf4300ea28d652f47dc0be GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq%=KU978G?lO34;Hwy3>uyQv4 w7wFJzX_&EW5vLM^FVdQ&MBb@064W7@&Et; literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0107.png b/mods/special/display_modpack/font_metro/textures/font_metro_0107.png new file mode 100644 index 0000000000000000000000000000000000000000..1aea6a11877c257a2317a50d3c0918abd23905e9 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQW~Bvjv*C{$qmi_9XMDy7@Z#2 vvm|jSun3;{AHky*$f4G8*v-fB6a#~|nCk8JJ(q2PdKf%i{an^LB{Ts5(v}zY literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0108.png b/mods/special/display_modpack/font_metro/textures/font_metro_0108.png new file mode 100644 index 0000000000000000000000000000000000000000..81a981acb66d81d37e705bfa1e2ddc974c2a875e GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq_jL;978G?lN*}n!ZTVANuG_Sj<~AI&T#hHai2H$Ht^*aXzY;OXk;vd$@?2>@&K8$192 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0109.png b/mods/special/display_modpack/font_metro/textures/font_metro_0109.png new file mode 100644 index 0000000000000000000000000000000000000000..865c6b8afbab4322c39838d2deb20221d680438b GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQd*uajv*C{$qdc^6FL|a^rjr) x|F<~%Z+}CEo3m#~vZqKB=c5gR!4r%a7&4VKZd8BU{}`x?!PC{xWt~$(69AUX9FhP4 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_010a.png b/mods/special/display_modpack/font_metro/textures/font_metro_010a.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b8621baf296b6ad0ece2a8fa852a6e7f0d6013 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq%=KU978G?lN*}~r>mdKI;Vst0Ju3EmjD0& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_010b.png b/mods/special/display_modpack/font_metro/textures/font_metro_010b.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec4f102e5e54fc66a4f9427ce293771532efda6 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQW~Bvjv*C{$qh~a9XQxI6rCQ} uvm|jSun3;{-||LDheh~EqVh6@R0alrA=TT`i_1ZVF?hQAxvX_nEc%hq_jO<978G?lN*};J8&pHWQc5v y_#n?@*eW1!ImE<~MZsC(a*mDO!6}Q>7#PkQXx!LocjXXJ8-u5-pUXO@geCxo-5YiQ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_010d.png b/mods/special/display_modpack/font_metro/textures/font_metro_010d.png new file mode 100644 index 0000000000000000000000000000000000000000..2558067924f60e065ddf3b597cd18bcd52e3e44b GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQrey_jv*C{$qY^Z9XM14AJ|I> yG5x=I^{=~wN$~=eRlX`*2U!YlbZB}=GBDKeYuw=Yn;{0&#^CAd=d#Wzp$PzQ6dGOt literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_010e.png b/mods/special/display_modpack/font_metro/textures/font_metro_010e.png new file mode 100644 index 0000000000000000000000000000000000000000..2a9888c0e78445601eeb3c0c8b3a0b2c103f124b GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?eOhhEy;nGc^5o;7|-aP;a2Z w^6#+1EQL0frcT9mdKI;Vst0CN5s>;M1& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_010f.png b/mods/special/display_modpack/font_metro/textures/font_metro_010f.png new file mode 100644 index 0000000000000000000000000000000000000000..6a7a9f830ffce6716984398c6503fbafc5ec9e3c GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};x}GkMAr*|t4vhaB1>B4#D6uXT zbmI6rLx`h;frIf)P=LcSk;L5`y96%BZ((L|inKoZ|IPJUphgByS3j3^P6mdKI;Vst0NVl_ AsQ>@~ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0111.png b/mods/special/display_modpack/font_metro/textures/font_metro_0111.png new file mode 100644 index 0000000000000000000000000000000000000000..58345eeb1d07fa7c1534328cafea3d6d70c907aa GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?nUihEy;nJ23ul6gcM6%yT1D w>B^(aeF9D!49+Nq3nZ#7d%NSVrzHc!p0n0RT>?%e05vgqy85}Sb4q9e0JirXasU7T literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0112.png b/mods/special/display_modpack/font_metro/textures/font_metro_0112.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa4ba57782c18d03a9c8d5a2e82996559700337 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQi`4~jv*C{$qY^Z3p%9#xVKfb n8kjyZ<__lA?>6bKD^R`bHj^_3Q}3MyDrWF>^>bP0l+XkKkK-7K literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0113.png b/mods/special/display_modpack/font_metro/textures/font_metro_0113.png new file mode 100644 index 0000000000000000000000000000000000000000..6b0d45c40188e87094473be4ac49a491841e8dbe GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%se8IOhEy;nA7K5b?5LrzWLiTR t3;RJQ;a~l+#>=>Pj6dG!)AW&LU^tj&e0FoT+$o?I22WQ%mvv4FO#m~Y8h`)* literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0114.png b/mods/special/display_modpack/font_metro/textures/font_metro_0114.png new file mode 100644 index 0000000000000000000000000000000000000000..040ed783f72da49e768e3782cf985005ac746508 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQYxMbP0l+XkK|H2x8 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0115.png b/mods/special/display_modpack/font_metro/textures/font_metro_0115.png new file mode 100644 index 0000000000000000000000000000000000000000..cd0ac1c0051a4414a6ad8b9f2c2e710beabdd102 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3X_2hEy;nGc^5o;8-sBz+NPY zoh9U-yMu_LiP)?Q^*m>P%xxAplx)4spp=2Zm(}$2p05FBK#dHZu6{1-oD!M<#>E^z literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0116.png b/mods/special/display_modpack/font_metro/textures/font_metro_0116.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa5191399a9e4bb7180b427bfe5a8b828b21ee6 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQi`4~jv*C{$qh~a9XMDmS`D5G n3d|Rf>t$&%FrD;pkfA3S3j3^P6`THmwy%>3F(0hEy;nH#Gfs;9y_T)N-(% z!$r`^K}69+Y}SSPH?s^w6J~TCFY`%!#lWyR!tngd81R qX=#XP)i9d3;Wej3LqI<-1H)Alixb}tFiQcIGkCiCxvX`THmwy%X?nUihEy;nFJSw@->Bil(V^6G v%t`oHf2{E`E*@jfn|+xqvsm)#A2Kmq`Db+QxN)5sP!ofvtDnm{r-UW|Wn&v) literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_011a.png b/mods/special/display_modpack/font_metro/textures/font_metro_011a.png new file mode 100644 index 0000000000000000000000000000000000000000..b1534416228d5b3b88f5a80efffb4d130c642989 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQYxMKQy;{an^LB{Ts5e{dFV literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_011b.png b/mods/special/display_modpack/font_metro/textures/font_metro_011b.png new file mode 100644 index 0000000000000000000000000000000000000000..dd428240501b0b1a1faf10b5d879fad8f856f6e8 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3O<1hEy;nGc^Bq;81$Vpyzopr0NU9c A{{R30 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_011c.png b/mods/special/display_modpack/font_metro/textures/font_metro_011c.png new file mode 100644 index 0000000000000000000000000000000000000000..305cc506396822a1e300bdebfa4af8d8d3803ef4 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hqzpV=978G?lN*}11&^OWl*YnI@(rN54`o))n<5x)Iy4NxzGr>mdKI;Vst E0LRxNr2qf` literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_011e.png b/mods/special/display_modpack/font_metro/textures/font_metro_011e.png new file mode 100644 index 0000000000000000000000000000000000000000..88b3cb850d9a109db379777afce626dde4847292 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hqzpV=978G?lNp--J8&!xJW#K3 zgxw%CnQNh^qOl>Xp|7hcm+OoPH~)X!&7#PfqEG{UHx3vIVCg! E01$~B+yDRo literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_011f.png b/mods/special/display_modpack/font_metro/textures/font_metro_011f.png new file mode 100644 index 0000000000000000000000000000000000000000..8308151d1758af061e3c031b3c9e1c2867c156c4 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQih%`jv*C{$qY^Z9XfoREdn~2 z6+#YrwwU=avhb!Jip*HWF}wAl50Cl7fcC@Q6@NGwu8Ub7-yW5E7pR%R)78&qol`;+ E04&xXU;qFB literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0120.png b/mods/special/display_modpack/font_metro/textures/font_metro_0120.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9947b6179fb7ea5bccf10e41401f21d1371d46 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hr1U&p978G?lN*}+fNG$tXFX25@%rOb~8VDM_4)+sF%Uh)z4*}Q$iB} D>!cfL literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0122.png b/mods/special/display_modpack/font_metro/textures/font_metro_0122.png new file mode 100644 index 0000000000000000000000000000000000000000..cca4596e905665ded6bf3dcd646a80be350dd096 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};=AJH&Ar*|Rea9IY6nL2K)@M}P zn>4DM>MU_oXjICWX1e_VYub)yUN0{{_NdL-)N@sNq3-OK#s9nW|Jpk4+~S3j3^P6_nEc%hq?A2f978G?lN*};CvY%xIBIl? pD_l{iNa0de2s~8aV4Il5$Plk^VT?44$rjF6*2UngD`THmwy%sd>6MhEy;nC;Z@VabQ?J(c=F@ sof1(AEyFF!3SA0P+>!J4HBDh=cu{V0M)$sY08j^mr>mdKI;Vst021pNx&QzG literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0126.png b/mods/special/display_modpack/font_metro/textures/font_metro_0126.png new file mode 100644 index 0000000000000000000000000000000000000000..9323f4037c73bca89d9cb9217e334a5bbdd5bbba GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};%APKcAr*|t3{C$XIM_Ml;#U5@ pp}-j1vQ%J#il)Va-6FXR40)>^4qW$^3_nEc%hq*Og!978G?lNp-+J9IGqTkI6V s$+qTI;;sUzX1$(-#96i*4ozWZ=&>+8T@{y*57fZm>FVdQ&MBb@03$&fu>b%7 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0128.png b/mods/special/display_modpack/font_metro/textures/font_metro_0128.png new file mode 100644 index 0000000000000000000000000000000000000000..bd317839b0bf54e7add1c700b3649b576704287f GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DQQm^$B+ufWQL~y4jhV(42Kw< hYZw&mKQKLEW~fb;e181%m%Bh^44$rjF6*2UngFL!6wv?x literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0129.png b/mods/special/display_modpack/font_metro/textures/font_metro_0129.png new file mode 100644 index 0000000000000000000000000000000000000000..1b85b3f28fe642d65409f7de0f5939d99a75761b GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQj(r7jv*C{$q7IBTLgq$8WoKi ex-L!dlmIH#m3R?yJSq^Vh{4m<&t;ucLK6U?Lla2= literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_012a.png b/mods/special/display_modpack/font_metro/textures/font_metro_012a.png new file mode 100644 index 0000000000000000000000000000000000000000..9679e9fb0a001b6df75098ad87c05927f7645dcf GIT binary patch literal 77 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ$B+uf#5<>t0 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_012c.png b/mods/special/display_modpack/font_metro/textures/font_metro_012c.png new file mode 100644 index 0000000000000000000000000000000000000000..6d126fd1d12fbf53c9170533735932b49c17b113 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DQQm^$B+ufX~_zHhG$&nCu^sBX9HC-c)I$ztaD0e0subW7H0qe literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0133.png b/mods/special/display_modpack/font_metro/textures/font_metro_0133.png new file mode 100644 index 0000000000000000000000000000000000000000..4f13ea7ea3e94204b96d185b2dfe969f78e9f91a GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DS1y9$B+uf`THmwy%sd&0LhEy;nJ23rk6yW{S&h?m` qhHKIAUi+F)%DzBKN3T=XWzuJ%gvKpUXO@geCytd>LK< literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0135.png b/mods/special/display_modpack/font_metro/textures/font_metro_0135.png new file mode 100644 index 0000000000000000000000000000000000000000..10f452838b9f04973fdac48741f43f5983981652 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQgWUyjv*C{$qdc^9XJvdEI1eh k7c+jg@A)YoDkaOnp!Ze!Y4ekUuRxUyp00i_>zopr01QeM^#A|> literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0136.png b/mods/special/display_modpack/font_metro/textures/font_metro_0136.png new file mode 100644 index 0000000000000000000000000000000000000000..63c9b242e19435f5d535d9178b8679a1f3b8c5fa GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq)a_s978G?d(SHhF*tA>KJe%N zY>AK_h!^xy;xM~9`yL$6m~gh+rul`)*b*Fz~JfX K=d#Wzp$PyMttTu1 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0137.png b/mods/special/display_modpack/font_metro/textures/font_metro_0137.png new file mode 100644 index 0000000000000000000000000000000000000000..7700a9c3821632a2754e8642cdbc82dfe06a1d82 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3h03hEy;nC;Z@V$!M@S_+OzT zL8(RHQ-+g)-mH@nPBXL$XLw#HYcXJY@JUpWf#GnN$(etjJ}LmUGI+ZBxvX`THmwy%X?nUihEy;nFA({|?!@xizNu5d v>4b92gQkKG1_`GbT7@$_FO;djv*C{$q7IBTO1e`3;MJ$ k7^Q#UR8%li^kQIGzEkz~yPUNLfC?ErUHx3vIVCg!0Px)vX#fBK literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_013a.png b/mods/special/display_modpack/font_metro/textures/font_metro_013a.png new file mode 100644 index 0000000000000000000000000000000000000000..1deb03e6ae3c8f6f43b48bd6481e396fe91b8956 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ_E)V!2%?kIAl$Ml&q(VV@L&Ka>5V(7K2HQ?9&-z jr!l%t6N~X-{KUYpO-lB$xKZdrph5;uS3j3^P6a)o2$`9fPN_E)V!2%?kIAl$Ml$587V@L&Ka>5V(mI4Puai>Lv gCk?rR8*CUD)O)3$a&cVj0jgr~boFyt=akR{0B_O~Q~&?~ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0141.png b/mods/special/display_modpack/font_metro/textures/font_metro_0141.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1cf34b3982729c32a23aa4f79a4fa001cf39f2 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSEm%hEy;nGc^5o=wQ?kKQiS{ ne}jb6idmZ5Wf?be2k|j{zNmdQuu|_E)V!2%?kIAl$Ml#Hi~V@L&KGDFjU2M*>b#ez=% jFYZv0YSnb$V_^7rNcOSGxoO9M>KHs-{an^LB{Ts5w*(a7 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0143.png b/mods/special/display_modpack/font_metro/textures/font_metro_0143.png new file mode 100644 index 0000000000000000000000000000000000000000..e98ef00c31fb8aef18b75ac8798d8f4a113a1ad3 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hqzpV=978G?lO34;Hwy4@a0&&q zKKRS-7<1@vyJBop!`;*xzCdKXYK)no}u6{1-oD!M< DKdl|$ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0144.png b/mods/special/display_modpack/font_metro/textures/font_metro_0144.png new file mode 100644 index 0000000000000000000000000000000000000000..09662da9b0f347c699dfa3494bb77b06c74384be GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd&0LhEy;nH#Glu;9#q0mDsTQ qXaA~i_C_v(F3F0gFNaSkVqjqZrhA$B!5)5~dInEdKbLh*2~7YQ(i*n_ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0145.png b/mods/special/display_modpack/font_metro/textures/font_metro_0145.png new file mode 100644 index 0000000000000000000000000000000000000000..aff3363994ed46c11a931a7ac362c53217d1bfa2 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq_jO<978G?lM{aMw*@dH3k&@7 y-(%3C5+>m$tjUu;QQ?e(hXmt=ogAetj0~GsyY0$!nfC;!jlt8^&t;ucLK6UOKN{cw literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0146.png b/mods/special/display_modpack/font_metro/textures/font_metro_0146.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9fbe04ebdaa90440f5797ec6841b61ae563aed GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DS5g$hEy;nFA({|?!@s^-c^7x okmX{;iBDg|T{sfHi`OwQyf~+G_nEc%hq>MdX978G?lNp--J8&poJWy|- z!XgkQXwy;_bLf8|=l|mZZJvv`lV3R*Y~WH>DcCtXih&_5!1DN%604O!?F^o-elF{r G5}E*?Js%eU literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0148.png b/mods/special/display_modpack/font_metro/textures/font_metro_0148.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf35b6a3e404599ecd68f2599ff412735df6d15 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nGc^Bq;81$Vpx7g> suw~Jzzx_OcEEgkAeEK4~M23OE_MG0OlVY!S05vdpy85}Sb4q9e03c@@b^rhX literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0149.png b/mods/special/display_modpack/font_metro/textures/font_metro_0149.png new file mode 100644 index 0000000000000000000000000000000000000000..80c948e9c2e0dd02f12f33eadb4224426c0bd611 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq|`iJ978G?lM{aMw?r_=ak9;^ ta**)*=RVn`O+tu6ER3CJ4@)T{gLl0C#Yu4|b^vuSc)I$ztaD0e0szq|7qkEX literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_014a.png b/mods/special/display_modpack/font_metro/textures/font_metro_014a.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c360aad801b6ce9b6d104bf3483e85fa465803 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq*Odz978G?lM{aMw>SuKJ$zuV r`THmwy%sd&0LhEy;nFA({|?!@s^-c^7x qkmX{;iBBbhF2&lr1a=wNF)$Q_>RmFa$qWaoXYh3Ob6Mw<&;$UvzZcX1 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_014c.png b/mods/special/display_modpack/font_metro/textures/font_metro_014c.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ca226c289f545568325f1b7223211d1bd0b683 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq|`iJ978G?lNp--dra_Xi2Yk1 t(xKIO(#=4yCd)e^s_**F8I!g!FsR-%J?)Svy9%g-!PC{xWt~$(699Q697F&B literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_014d.png b/mods/special/display_modpack/font_metro/textures/font_metro_014d.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0b46a249c52b8e86f74c26e60610909efc096e GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSNs&hEy;nA7K5b?5LrzWLiTR q3;RK*Y3kkr$Bt~^n!k7jGs9yI!}G__X{`n-XYh3Ob6Mw<&;$V6U>XSk literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_014e.png b/mods/special/display_modpack/font_metro/textures/font_metro_014e.png new file mode 100644 index 0000000000000000000000000000000000000000..e5052ee2a33c219600a4b5ae27058fe73f815547 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq;x!8978G?lNp--J8&$%c%WY6 z2sg*;AN^c`ss=YX)SCR4u`H9Vh;7yM`THmwy%X?eOhhEy;nGc^5o;8-sBz+NPY woh9U-yMu_LiP$Ea$R-1|w$L9kuCfdadB=^FVdQ&MBb@07GFK2><{9 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0150.png b/mods/special/display_modpack/font_metro/textures/font_metro_0150.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e60774b8f6df9b742b13c02441a42e7ac83c7e GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq_jO<978G?lN*};J9M}_7E|N- y=d8F)foYLf!X`lXnHU>{uKbLh*2~7aa(Hx8b literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0151.png b/mods/special/display_modpack/font_metro/textures/font_metro_0151.png new file mode 100644 index 0000000000000000000000000000000000000000..03a4752e8af7a2b06f758b771c8f56bf26f75a8d GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?nUihEy;nGc^Bq;8u3cvJ4Dq=Z()6*@)-@H8FU)`njxgN@xNAZF?Gp literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0152.png b/mods/special/display_modpack/font_metro/textures/font_metro_0152.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a9e2f103e9c044752d8723b07839a9df60b9d0 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&V!2%?m`@?4fDKk$O$B+ufFr;4g-?;o#mL*UpgQu&X%Q~loCIIR@ B9j*WX literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0154.png b/mods/special/display_modpack/font_metro/textures/font_metro_0154.png new file mode 100644 index 0000000000000000000000000000000000000000..e570d9fb64eb2e87135873f68d4791f9c4b6675d GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq_jO<978G?lN*};J8-bSXlglF y&vHcdk9_yeBV5V~fniLHb=v12@kApk4+~S3j3^P6`n%p;tmce njBFvI2@cYXEC-ge2{SOb_R2ijD$rvARLtP%>gTe~DWM4fvtAN0 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0158.png b/mods/special/display_modpack/font_metro/textures/font_metro_0158.png new file mode 100644 index 0000000000000000000000000000000000000000..08fe03540cbfa38d8d439df57d8bb01317bdaeb5 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hr1U&p978G?lNp-+J8&poJWy|- z!uH4Ap(N3VlchZ(kwxW{m%@Skr}ZU?Ei79Z7=ElbKgneKQVgh*!PC{xWt~$(69Df4 B9MJ#( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0159.png b/mods/special/display_modpack/font_metro/textures/font_metro_0159.png new file mode 100644 index 0000000000000000000000000000000000000000..9c409033ec941e51bbf0cdd9f1f7d4077fa01d37 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DP>O=$B+uf`THmwy%X?eOhhEy;nH#Glu;9%!aJoLbx w=}>EcVq4}6Eza4UvFuHaNrH;*fy@jHUgwR^D%J<-0d+BWy85}Sb4q9e09UUWX8-^I literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_015b.png b/mods/special/display_modpack/font_metro/textures/font_metro_015b.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8640bbc8ed79093ad0c586369473adfbcf9629 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DNRoo$B+ufFVdQ&MBb@0RF%k1^@s6 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_015c.png b/mods/special/display_modpack/font_metro/textures/font_metro_015c.png new file mode 100644 index 0000000000000000000000000000000000000000..9d5662c1c9432e93c8adda4c23f32126091dd346 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?wajhEy;nH#Gfs=wSQj+{)Sb xpMyi(sZ}B@VUG$sxbbGu;qO3Q44$rjF6*2UngF8*9y$O3 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_015e.png b/mods/special/display_modpack/font_metro/textures/font_metro_015e.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ffaa4d75cc2895ffb3d9378af0ee7f7c951f79 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%8G5=nhEy;nGc^AX=wSJ$tk5MO z#T_X(+ly^Ynvlq`tPAxii7|dng&%%$%0Ad6Y0tpW@Ydo)e#faupk@Y7S3j3^P6t{lf4 qf*X(Xta`THmwy%X?wajhEy;nGc^Bq;81$Vpy(s< x$K7FvfYuQM-eA>4_E)V!2%?kIAl$Ml)R^lV@L&K@&T6rjRNA|?Rgdz mUKE*pQdOsc$3QfhnPDZj{KHER;=+MS89ZJ6T-G@yGywns+!c=i literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0164.png b/mods/special/display_modpack/font_metro/textures/font_metro_0164.png new file mode 100644 index 0000000000000000000000000000000000000000..07624101913a7bc598ce4b292979c57792d6a0ba GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq!c_|978G?lN*};J8&okGB|Zv ne2^D@G*uzz_yO+=Yzz$1s%p1Vr3JnK)iQXx`njxgN@xNAj6@f( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0165.png b/mods/special/display_modpack/font_metro/textures/font_metro_0165.png new file mode 100644 index 0000000000000000000000000000000000000000..b6bfcc11a9eb4fa3214954e394c006c0a46f7947 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQi`4~jv*C{$qr2a8wCy?QDR9x nsKJurAb!YXnw66ZM-U%F0k6_M`$MX^K*bE6u6{1-oD!M_E)V!2%?kIAl$Ml#Hi~V@L&K@&T6rjRNA|?Rk<4 jIA5!-nX!T4B?H4sN%@CwE+!QM)iHRw`njxgN@xNA)ms&> literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0168.png b/mods/special/display_modpack/font_metro/textures/font_metro_0168.png new file mode 100644 index 0000000000000000000000000000000000000000..d4efcfcddb1aebd88f54404cc4e642fcff5caf81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nGc^Bq;809tP-1A? s!RVyj`THmwy%X?VIghEy;nGc^Bq;809tP-1A? u!RVyj`THmwy%$$7dshEy;nGc^785a4e(p?ss+ k^@F_>_ht7NhpsR(7=AN6|7XW)CZI|NPgg&ebxsLQ0CSNU0RR91 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_016b.png b/mods/special/display_modpack/font_metro/textures/font_metro_016b.png new file mode 100644 index 0000000000000000000000000000000000000000..39fc3191c09ca78ceb49f66f418c8e882fd1d981 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSEm%hEy;nA7K5b>}bQF)t_)V n{)0Ui_c2EY6MM(ZQ;ZBod-X4RKM6btRLtP%>gTe~DWM4fg`THmwy%sd&0LhEy;nGc^5o;8-sBz+U7L q8;384*oVq{Q$p?|UA>4b2gdInEdKbLh*2~7aw@fq^~ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_016d.png b/mods/special/display_modpack/font_metro/textures/font_metro_016d.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1a3902e779b58c9314b8df45ee503953d79707 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%se8IOhEy;nGc^5o;8-sBz+U7L u8;384*|7(8A5T-G@yGywo4v>E*X literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_016e.png b/mods/special/display_modpack/font_metro/textures/font_metro_016e.png new file mode 100644 index 0000000000000000000000000000000000000000..870068dac0549cdf8e9e8816a13b7c9bc43df909 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd&0LhEy;nH#Gfs=-^Udy3z7K qxkxbQ7xzE+L`4e@#gfEV3=A_obuS`THmwy%sd>6MhEy;nH#Gfs=-^Udy3z7K sxkxbQ7xzE+#DkU`CmNJ^mTIyy812=+ctO2yAy5Z{r>mdKI;Vst08E=3Pyhe` literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0170.png b/mods/special/display_modpack/font_metro/textures/font_metro_0170.png new file mode 100644 index 0000000000000000000000000000000000000000..bd8d70ee4fc93732c00735dd4ece018ab915d94c GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSNs&hEy;nGc^Bq;8Ao{ua8gY*aeix~^fi2{`~c)I$ztaD0e0sx`U7nJ}2 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0171.png b/mods/special/display_modpack/font_metro/textures/font_metro_0171.png new file mode 100644 index 0000000000000000000000000000000000000000..210ae6afa011f86ae0b5d592eb985d8d5656b59a GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nGc^Bq;8`THmwy%DS5g$hEy;nC;Z@V5nxE?*FE^3 oL(EBzQIH{+<8X@4)g6ostiBc}7Vmyj2~^GC>FVdQ&MBb@0BY`THmwy%sd&0LhEy;nFA({|?v!Hom-YYR q4G&~kQXB-^F8tVYuwfmuH3Nf9yxyh5eAN*^^$eb_elF{r5}E)Vlp3)B literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0174.png b/mods/special/display_modpack/font_metro/textures/font_metro_0174.png new file mode 100644 index 0000000000000000000000000000000000000000..e460684d6798d8857814d60493e9a3aeee0d3147 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^{2>=u+VNOUvG80u5mBboFyt I=akR{0O_hA-T(jq literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0175.png b/mods/special/display_modpack/font_metro/textures/font_metro_0175.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb49f81ddc84854c057b6c322f179bee91a5ac0 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^{2) vF5c66YFUib!6Pb~)7@@#om%EGOOAoTHPv;ulta}4pe6=SS3j3^P6+Lahbug!YSSXd<=$;8aMR6Y&8PvWbkzLb6Mw<&;$Uu C+909; literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0177.png b/mods/special/display_modpack/font_metro/textures/font_metro_0177.png new file mode 100644 index 0000000000000000000000000000000000000000..60f47ec95983430fa0bf4f812a98fc0eb85122b9 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQd*uajv*C{$qh~a6FL|a^rjqP x71+cfmZ<3SxKs4d%Mdo7+!@ajzAM%-FmU(jUUskl?+Vn#;OXk;vd$@?2>^WJ8^izr literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0178.png b/mods/special/display_modpack/font_metro/textures/font_metro_0178.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7e8006c689d69e7fa720298dc4f5dbf516b10f GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq;x%9978G?lNp--J8&#s$PnCQ z@Pof8qVk1MM%9I@!X=_ii8eI9E}Um(N45E-a_b!(0(FHj?cr>mdKI;Vst01S>C AzyJUM literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0179.png b/mods/special/display_modpack/font_metro/textures/font_metro_0179.png new file mode 100644 index 0000000000000000000000000000000000000000..aedee48089e99fe0e287b62ea5c8363c2657dfde GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DR{a#hEy;nH#Glu;9%!abb4T~ mbwsseW&1LxmbosL3=DJgjLtpp{9gi8%i!ti=d#Wzp$Pzk8W^`THmwy%$$PpuhEy;nH#Gfs;9##{F}%9K lDW+*gRfd+!4bLge3=6Z2&Q&S+D*%-;c)I$ztaD0e0svh97T^E? literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_017c.png b/mods/special/display_modpack/font_metro/textures/font_metro_017c.png new file mode 100644 index 0000000000000000000000000000000000000000..77fbd88842cf2da6f2f95db32e7f53a09dd932b8 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DFsg#$B+ufWQOMd4jimESTCds m3Me|95IOZ!P$0O$hJiupo5~%V%`THmwy%DSEm%hEy;nGc^Bq;81$VpyO=$B+ufWQL~y4jf7g8Pr;& p|F}DpFtXiQ7NFPPFoWp{BZD-L>g|bg?NLDG44$rjF6*2UngCHG790Qo literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_017f.png b/mods/special/display_modpack/font_metro/textures/font_metro_017f.png new file mode 100644 index 0000000000000000000000000000000000000000..cdfd39ad42139e491a93cb55374ce0c862b711fd GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQj(r7jv*C{$qdc^9e5HO6q^{6 fjV?^^lwe?ZYbNpHl-101pdtoOS3j3^P6`THmwy%sd~CNhEy;nC;aGVdHBFyERkh$ pgTl|Wf5#0t=PN8L+aso^PzqF>?r=bV11CrygQu&X%Q~loCIBWI8N&bo literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0393.png b/mods/special/display_modpack/font_metro/textures/font_metro_0393.png new file mode 100644 index 0000000000000000000000000000000000000000..c412f32085caec62fbb5140fee70652770aea502 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQevJijv*C{$q7IDnHm|E3&`;B cDxP9wc(p+BzT(wSGC&m!p00i_>zopr0A-gF=l}o! literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0394.png b/mods/special/display_modpack/font_metro/textures/font_metro_0394.png new file mode 100644 index 0000000000000000000000000000000000000000..cafb55aa6cfd9333f909980d75bef0b2cf17e843 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDLqdY$B+ufWCy1IjRL{~)Bf-` zF7a||5j08kY!OkLy+Ng^`+>0PPkHMj`kvMd3@rK9NB_UPDi74j;OXk;vd$@?2>`LW B92x)s literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0395.png b/mods/special/display_modpack/font_metro/textures/font_metro_0395.png new file mode 100644 index 0000000000000000000000000000000000000000..4b746e175fe34e397912349e1ec20993cf1a1983 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQgWUyjv*C{$q7IDnHm|E3&>1R lX=#XP)i9p7;k70sgW(P1vu|Hp{06FI@O1TaS?83{1OPp27sLPn literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0396.png b/mods/special/display_modpack/font_metro/textures/font_metro_0396.png new file mode 100644 index 0000000000000000000000000000000000000000..749ad752f4b5040b172a3f707deeb12201b6db2c GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%$#}XrhEy;nC;aGVYh;KOU{2uT iGb^28=hQrfnL+xW?&V)6UzY*ZF?hQAxvX_nEc%hq@+Au978G?lM{aMw-_)yzZfII h$jNc}cHk6l literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0398.png b/mods/special/display_modpack/font_metro/textures/font_metro_0398.png new file mode 100644 index 0000000000000000000000000000000000000000..cddcaa749c9fb20a968905e3faffd854e7f97956 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDSb~D$B+uf<74Nfx{Sk&nbYf$>9mGsj%rp#7mFzw{0z%Hyths>o?-^n%HZkh=d#Wzp$P!r CPaB5- literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0399.png b/mods/special/display_modpack/font_metro/textures/font_metro_0399.png new file mode 100644 index 0000000000000000000000000000000000000000..72c3e644fd6e702615be315fc044bb8b32ef46d7 GIT binary patch literal 75 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6Ax{^_kP61+gdhAZ4i4FDbqow! XO~hY56q5J{lx6UA^>bP0l+XkK{~Zv| literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_039a.png b/mods/special/display_modpack/font_metro/textures/font_metro_039a.png new file mode 100644 index 0000000000000000000000000000000000000000..99456948a9b17efb5c468572257804bc9492e2a3 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq>MaW978G?lM{aMw-|ho=Mj`K zNn{ZZmQZXIaPv5zsO2E4wubpKUs7zVrt69489`TA8M=>K9drH=v=XSB!PC{xWt~$( F696*M9eDr% literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_039b.png b/mods/special/display_modpack/font_metro/textures/font_metro_039b.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec431d47db21d709061beb90e28f325fe9542d1 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDSb~D$B+ufWCy1IjRL{~)Bf-` zF7a||5j08kY!OkLy+Ng^`+@K@7lVsSKYCvR>fY?HeRZ|rTw9=422WQ%mvv4FO#tg! B9Wej^ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_039c.png b/mods/special/display_modpack/font_metro/textures/font_metro_039c.png new file mode 100644 index 0000000000000000000000000000000000000000..61642dcb4fa9097b5a136298a13e4841c70542a4 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^f#?07Q^Na=gJIEGX(CNnhuPvBsiQS(as zXMbzEK+}X5H9=Dscu!o$($C5v*3|ex=jzl8!VCbP0l+XkK Dqn;p& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_039d.png b/mods/special/display_modpack/font_metro/textures/font_metro_039d.png new file mode 100644 index 0000000000000000000000000000000000000000..58876c3aeef607aa4f47044d9e4be42abffb4726 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq|`iJ978G?lM{aMw*@dH3k&@7 t-(%3C5+>m$tjUu;QQ=HO{ER3D27LqPz0>^nKLqMv@O1TaS?83{1OVmL7}o#* literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_039e.png b/mods/special/display_modpack/font_metro/textures/font_metro_039e.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7261595828ee53d2f295defc7ec128b4d0f108 GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%$#}XrhEy;nC;jMWYi#Ij+{KWk iw#szNrj9&2CI$yT(eJFx6<>hr7(8A5T-G@yGywo9Sr%jf literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_039f.png b/mods/special/display_modpack/font_metro/textures/font_metro_039f.png new file mode 100644 index 0000000000000000000000000000000000000000..021a8e9945b509a8ccfc82ef0656d5170f04bab3 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDFaUz$B+uf<74Nfx{SljU0}+QY#l~+!Eann9R(T}gTe~DWM4f D{D>RS literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03a0.png b/mods/special/display_modpack/font_metro/textures/font_metro_03a0.png new file mode 100644 index 0000000000000000000000000000000000000000..998f7811ad0ca264fd5377cab794c19c6f5a2b27 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq{KX3978G?lM{aQGd41;H<00R cPt0Ou=$>tPJhaTG5~zZ~)78&qol`;+0CV^f#{d8T literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03a1.png b/mods/special/display_modpack/font_metro/textures/font_metro_03a1.png new file mode 100644 index 0000000000000000000000000000000000000000..bcce469f6596a38487056098f1c9703f3c5aeec7 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nC;aGVdHBHIERjW6 su}7!hUm)1puls`qC!dD+5*Y@DA~oZ)?wWUh0d+8Vy85}Sb4q9e0Pz_Zg#Z8m literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03a3.png b/mods/special/display_modpack/font_metro/textures/font_metro_03a3.png new file mode 100644 index 0000000000000000000000000000000000000000..73f50b689bdaf6c081449ec6d1def4c03a442436 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%$$7dshEy;nC;aGVb7Tk>h?L;d j5IZKaB&NedK9G;0^_%%g2Z6h$K$Q%hu6{1-oD!M<2Okvd literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03a4.png b/mods/special/display_modpack/font_metro/textures/font_metro_03a4.png new file mode 100644 index 0000000000000000000000000000000000000000..9bafdba54886867277be8a2f058f0dcc799e6e71 GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq$E6D978G?lM{aQvobO2ak4mw eNkj@wVP@btp?)*eCMgc6hQZU-&t;ucLK6UeD-qTJ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03a5.png b/mods/special/display_modpack/font_metro/textures/font_metro_03a5.png new file mode 100644 index 0000000000000000000000000000000000000000..6db6a2822f935471e328705249b93ce6e6105392 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq%=KU978G?lM{aMw+S?yIy}K4 wyftB=hhjzuCyNU!MHm9 zC`t6uv|xAq*Y3UGQj4lV@1aCX#^*vWi*GS7mdKI;Vst06VcC AJ^%m! literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03a7.png b/mods/special/display_modpack/font_metro/textures/font_metro_03a7.png new file mode 100644 index 0000000000000000000000000000000000000000..111f3b45d3d6bebf2bf96a757eee64811c168eb2 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlqzpV=978G?lM{aMw+S?yIy}K4 zyftB=hhjzuCyNU!N8%x&8E%5xWG?TluUKTUG{%u r-{SURK~RPOV*%&l8?N4*rx+RJr&%9$POMD;s%P+Y^>bP0l+XkKAJ`fa literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03a9.png b/mods/special/display_modpack/font_metro/textures/font_metro_03a9.png new file mode 100644 index 0000000000000000000000000000000000000000..4aefd9724aa4b553a7c998c96f3ff11a7d9d0019 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDPvC;$B+uf<74Nfx{SljU0{kzijErl^mGB8GYk$-A5LE)%fO&C#d~YK%*2^M?F^o-elF{r G5}E*8>m6SJ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03b1.png b/mods/special/display_modpack/font_metro/textures/font_metro_03b1.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5b8001415f53bb1240c58db9d881772482ea57 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSNs&hEy;nFJSw@-xMIF*wWzP pq@fd{o5HDd=18{nGHXqChN*V?7c<>evw+GOJYD@<);T3K0RV@87NY`THmwy%8GE`ohEy;nGc^BC=wSMHSYejH ztSlB`X8~u`Jmde5jX&GBee`Hr5hiFPJo{}xgPw;30|WDZr+t@l1P=hUGkCiCxvXzopr0GQ|&&j0`b literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03b4.png b/mods/special/display_modpack/font_metro/textures/font_metro_03b4.png new file mode 100644 index 0000000000000000000000000000000000000000..2346d00fd5c152f714e57ad8c59c0274f94a4a59 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%se8IOhEy;nC;aGVb7Tk>h?HRd ub9};q^^ymjrm1@i96PdsYyRRD%nS$Q><;~1;Iav*g~8L+&t;ucLK6U7U>rXH literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03b5.png b/mods/special/display_modpack/font_metro/textures/font_metro_03b5.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8ba5ef9ec44a5280863a3cdbbf1032854f2520 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQVO0fjv*C{$qQKiv^%#j%u;A- nT*-A=XAaYkGl!n@oMK>Du}b~sCW#LbK(!2>u6{1-oD!M`THmwy%DSEm%hEy;nFA({|?!@s^-c^7x nkmX{;iBDg|T^J5E&0t_)-=}*y_v^InK*bE6u6{1-oD!M`THmwy%X?nUihEy;nGc^AX=wSJ$tguR< v$<078r>2R+BVfXYnHfGj<&QoKmohNaYFZ!V%F$N_YGUwo^>bP0l+XkKSJ4^! literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03b9.png b/mods/special/display_modpack/font_metro/textures/font_metro_03b9.png new file mode 100644 index 0000000000000000000000000000000000000000..e9022cc43f707b6bf532260dd4b6d20de07a7086 GIT binary patch literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1q!2%@P{+{IkQo^1tjv*C{$qGFGm=(XySRwO> af#LUi!S@UPxTyf889ZJ6T-G@yGywoyQxnPn literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03ba.png b/mods/special/display_modpack/font_metro/textures/font_metro_03ba.png new file mode 100644 index 0000000000000000000000000000000000000000..babed00b5047e43fabad71d754459b6b970f5df3 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?nUihEy;nFA({|?!@xizNu5d v>4b92gQkKG1_`GbT7@$_FO;+zMOf??zj42aB8%`rB^?(#28M$tHLuI4iHZTWFnGH9xvX`THmwy%DSEm%hEy;nFA({|?v!Hom-YYR ojSV6qi#QieHq)$ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03bd.png b/mods/special/display_modpack/font_metro/textures/font_metro_03bd.png new file mode 100644 index 0000000000000000000000000000000000000000..e07528dd5d481d2bc5e382260a8e7b5b04e1daa6 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQgWUyjv*C{$qMp+*qto8Jrr4l k-6pB9JUYb6!5zrOp!r|n!9I5hb)ZTHPgg&ebxsLQ0MTR`THmwy%DSEm%hEy;nFJSw@->Bil(V^6G n%xRjsx4^L@8@T2#Uct;@U88-q#a{F+P%(q2tDnm{r-UW|keL`a literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c0.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c0.png new file mode 100644 index 0000000000000000000000000000000000000000..6f493438b5f418b217dbc20aa092715bc90f367c GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq+~o@978G?lNa#)=;tfsI;=V& jvPAS)31^e9EdxW$ZQaY=4Tqir)iHRw`njxgN@xNA9$OaV literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c1.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c1.png new file mode 100644 index 0000000000000000000000000000000000000000..562f2ec1720d111d7e8e3ad669fdf48da3c33d0e GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nFJSw@->Bil(V^6G s%xRi>xWHu}nQh9e4;cu@PB36#*v(~lexE?BH&6$Ir>mdKI;Vst0QKS+w*UYD literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c2.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c2.png new file mode 100644 index 0000000000000000000000000000000000000000..416069af102c1706a990c9f92a95fa31e6c7c471 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQp%n#jv*C{$qRV?v^$hAwkR}l qhPSS1EK&4vlsF=waw{Z;fkBB~`R@E{uS9^#89ZJ6T-G@yGywpUq8FI} literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c3.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c3.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9650bcbd01a9e46c1b5f6edbe10bb48a7d74a2 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nFJSx8-%y~)<0v5< qEIY|$mjbgQkh%QrjXR#Q3=9h#^)KpqABX~KVDNPHb6Mw<&;$U;8yFY> literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c4.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c4.png new file mode 100644 index 0000000000000000000000000000000000000000..e0bbae6cdcf41284d3980a79dc173f36de07c42c GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%NqV|ChEy;nFA(|T-g<*okm2Cc foeFx1S&R&V39^sNW|o`+Dq`?-^>bP0l+XkK&$blx literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c5.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c5.png new file mode 100644 index 0000000000000000000000000000000000000000..00c0416543a3785b49c781d8ef1cb9cb49a84451 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nFA({|?xevT{J~x# sX;sVSiBC@o9Z3~sI>hKS!-|1n%>#`a5of$?ff^V*UHx3vIVCg!01%rRNB{r; literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c6.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c6.png new file mode 100644 index 0000000000000000000000000000000000000000..561ef9197df06f3528ed91762df5736d4aa99714 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlr1U*q978G?lNXr%;9vf~`DVtQ z{{|htGZ>D~3=E#GelF{r5}E+1 Csvl7R literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c7.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c7.png new file mode 100644 index 0000000000000000000000000000000000000000..564b38cc84dd042ffd763a0cf927bb11ef27abb5 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQp%n#jv*C{$qMp+*qubggyl*( quKHMFLcg9&SeOV@&fw|l=d#Wzp$Pzw4j5Sg literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c8.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c8.png new file mode 100644 index 0000000000000000000000000000000000000000..ad61c3509ffae3edf5c9a33cdfb8a21423a41332 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq?A2f978G?lNYG{;BU$JqA>9X q|3X2V6(UkD3^9i^${tQq;9;nDw>>Pee`ym?IfJLGpUXO@geCy@!Wpgr literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_03c9.png b/mods/special/display_modpack/font_metro/textures/font_metro_03c9.png new file mode 100644 index 0000000000000000000000000000000000000000..8f9e42a65fa456c37cfbedc21c7d32e86420691a GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq?9~e978G?lNXr%=s)CC;2t%QF)%cko}SD4YbH=NgQu&X%Q~loCIIvC8WsQm literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0402.png b/mods/special/display_modpack/font_metro/textures/font_metro_0402.png new file mode 100644 index 0000000000000000000000000000000000000000..5c24c6231fd7d08a4fe2bce942dd12ff2901ae87 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDQ!;|$B+uf^`J44$rjF6*2UngA%@87u$* literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0404.png b/mods/special/display_modpack/font_metro/textures/font_metro_0404.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9a6cc1a903f73b547d68e8a2ace62a5e5cbdb2 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};+MX_sAr*|t4bA@pI@ta#cJkr$ x+56&H!c>I>e$F5bhJF>sa?%x?V>k3dCgQu&X%Q~loCIG3&8-M@+ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0409.png b/mods/special/display_modpack/font_metro/textures/font_metro_0409.png new file mode 100644 index 0000000000000000000000000000000000000000..bc248f26fc9f36c8af9e6b97e503ba8d56d72159 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^f#?07Q^NEv&&IEGX(CO0(w_YmNnu!4nS z#Znf=&cILeC%AIBMyM=kFj3`DHq>=WepLLfUS^?BJ_CdAtAGs&7jJwAYG?3t^>bP0 Hl+XkKy5Jx% literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_040a.png b/mods/special/display_modpack/font_metro/textures/font_metro_040a.png new file mode 100644 index 0000000000000000000000000000000000000000..65a761e46f7dba5865750fd41ea9e46b084cb65b GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^f#?07Q^NNIVxIEGX(CMW#hZz*Vapm=~m y%h91lA+IBtbCU(*_J9>F8(cX&Ze0Gt#<2WE=<4}L7n}s@V(@hJb6Mw<&;$V8kRFQw literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_040b.png b/mods/special/display_modpack/font_metro/textures/font_metro_040b.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa6bacb3477d970edbe0e6f37ccc461b6ea640d GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDOFDw$B+uf_nEc%hqzpY>978G?lN*};J9IE{cqFWH zdYZ`f|G3&8`Pm=pa}NEVn86b|!28c`#7__nEc%hq+~o@978G?lM{aMw-_)y=XFnH jQBmnxDH}XPfPo<})%NharDv0Y>KHs-{an^LB{Ts5^N`THmwy%sd>6MhEy;nC;aGVYh>tG5IUgS su~77~56@c*9i=dV<&QVs^pj;^_`THmwy%sd~CNhEy;nC;aGVdHBFyERkh$ pgTl|Wf5#0t=PN8L+aso^PzqF>?r=bV11CrygQu&X%Q~loCIBWI8N&bo literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0413.png b/mods/special/display_modpack/font_metro/textures/font_metro_0413.png new file mode 100644 index 0000000000000000000000000000000000000000..3c41a2e80035f1073fbcc9a23a752f9e6b1b3823 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%iFvv>hEy;nC;aGVYh>tG5R$mn bG=-T#;H~oA;3a&*Kotz0u6{1-oD!M1R lX=#XP)i9p7;k70sgW(P1vu|Hp{06FI@O1TaS?83{1OPp27sLPn literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0416.png b/mods/special/display_modpack/font_metro/textures/font_metro_0416.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed5206cc704ef0da4d0d61df0f3ec215604626a GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&V!2%?m`@?4fDH~50$B+ufWQL~y2^@?ZVooBl z4338*XPgpHapGKN#KOYlbm{}cAuo?jJPUh5?hEp%A5!c)>6qHA_?MC4UsCwW`WD-% QKyw&8UHx3vIVCg!028|)KL7v# literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0417.png b/mods/special/display_modpack/font_metro/textures/font_metro_0417.png new file mode 100644 index 0000000000000000000000000000000000000000..805b5e3513011aaf3d5b05200a296213f11543a9 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?eOhhEy;nGc^AX=wMLLn`O|{ wtk$!LU39_h-}3uIPc$^R{+QcxU+EPC!_nEc%hq|`lK978G?lM{aMw-|hoKc}qo uXTC)ui*JO)K~+DALyC?w8aEhhWnj=ZaNhfyvt$!c3xlVtpUXO@geCw#6B>d5 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0419.png b/mods/special/display_modpack/font_metro/textures/font_metro_0419.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f347f4bdf763e75d376fa788b5be227e0beb23 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq|7{B978G?TTV2xGC1%Yz3^^- z$vTCuf}a=m-Mo<-*Y^8p!2Q%NO|^&}I&AwF?q<2GyW@_pE(62mf7VCS3-(L~n!w=c L>gTe~DWM4fDX}LF literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_041a.png b/mods/special/display_modpack/font_metro/textures/font_metro_041a.png new file mode 100644 index 0000000000000000000000000000000000000000..99456948a9b17efb5c468572257804bc9492e2a3 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq>MaW978G?lM{aMw-|ho=Mj`K zNn{ZZmQZXIaPv5zsO2E4wubpKUs7zVrt69489`TA8M=>K9drH=v=XSB!PC{xWt~$( F696*M9eDr% literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_041b.png b/mods/special/display_modpack/font_metro/textures/font_metro_041b.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a29a5cc6841ac28d049a2a42e8c06a92d21040 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq*Odz978G?lN*};dkC;_a5FRh rZ4s0?bm+fft6#?07Q^Na=gJIEGX(CNnhuPvBsiQS(as zXMbzEK+}X5H9=Dscu!o$($C5v*3|ex=jzl8!VCbP0l+XkK Dqn;p& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_041d.png b/mods/special/display_modpack/font_metro/textures/font_metro_041d.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7d1b8d5f4da7ebe07ed18c4e5a3eaf81503ac6 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq@+Au978G?lM{aMw-_)yzZfII h$jNc}cHk6l literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_041e.png b/mods/special/display_modpack/font_metro/textures/font_metro_041e.png new file mode 100644 index 0000000000000000000000000000000000000000..021a8e9945b509a8ccfc82ef0656d5170f04bab3 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDFaUz$B+uf<74Nfx{SljU0}+QY#l~+!Eann9R(T}gTe~DWM4f D{D>RS literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_041f.png b/mods/special/display_modpack/font_metro/textures/font_metro_041f.png new file mode 100644 index 0000000000000000000000000000000000000000..998f7811ad0ca264fd5377cab794c19c6f5a2b27 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq{KX3978G?lM{aQGd41;H<00R cPt0Ou=$>tPJhaTG5~zZ~)78&qol`;+0CV^f#{d8T literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0420.png b/mods/special/display_modpack/font_metro/textures/font_metro_0420.png new file mode 100644 index 0000000000000000000000000000000000000000..bcce469f6596a38487056098f1c9703f3c5aeec7 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nC;aGVdHBHIERjW6 su}7!hUm)1puls`qC!dD+5*Y@DA~oZ)?wWUh0d+8Vy85}Sb4q9e0Pz_Zg#Z8m literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0421.png b/mods/special/display_modpack/font_metro/textures/font_metro_0421.png new file mode 100644 index 0000000000000000000000000000000000000000..83ec60222ffb91258e955d90524912d3ba03489c GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};+MX_sAr*|t4bA@pI@ta#cJkr$ y+56(yfyx^>4i}wwiE#enu$b2{-Ee6pJ44eS^OM;pd?o|6F?hQAxvX}~> zKrp99h(oVQO{H;y6Nm7$1DQM$$x%KhYHl$ygeL1=p75G`7f>UEr>mdKI;Vst0N*7X AZ2$lO literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0424.png b/mods/special/display_modpack/font_metro/textures/font_metro_0424.png new file mode 100644 index 0000000000000000000000000000000000000000..94c283f9a459a8b7004126337bf35af24fa6b232 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq;x%9978G?lN*}Hm9 zC`t6uv|xAq*Y3UGQj4lV@1aCX#^*vWi*GS7mdKI;Vst06VcC AJ^%m! literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0425.png b/mods/special/display_modpack/font_metro/textures/font_metro_0425.png new file mode 100644 index 0000000000000000000000000000000000000000..111f3b45d3d6bebf2bf96a757eee64811c168eb2 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlqzpV=978G?lM{aMw+S?yIy}K4 zyftB=hhjzuCyNU!N8%x&8E%5xWG?TluF{R~o}ksp!0<%F{^0X%Z9PC`44$rjF6*2UngAV87M%b9 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0427.png b/mods/special/display_modpack/font_metro/textures/font_metro_0427.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ef3237dbf2f291502c04901a58ed0dcb44fc3d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSEm%hEy;nC;Z@V5nxEa>>k>^IsMMhH=O?Cz~0o}{4RlAk|6*G9c`njxgN@xNATRavt literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0428.png b/mods/special/display_modpack/font_metro/textures/font_metro_0428.png new file mode 100644 index 0000000000000000000000000000000000000000..a99d9d4d2dd8142d0b61286026f149303f49b259 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!2%@RtJ;?UDJf4E$B+uf#?07Q^NXdD+IEGX(CMW#hZxLu{_U)V$ lsQN>}(CY)U*OUY%h68(J7yteH)C{PS!PC{xWt~$(699mP88QF> literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_042a.png b/mods/special/display_modpack/font_metro/textures/font_metro_042a.png new file mode 100644 index 0000000000000000000000000000000000000000..9214696cf9326bc67ea9cc8062652b58d8db3bbe GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};nw~C>Ar*|t2|xJTB^VT2WhZF2 vHvCxf@3Db^v(QZMRU(HR7R_yJ*uumREoOOqp8p9ape6=SS3j3^P6>aci<1 uQU59*%;hP_xBJATLnZ=}LXRt=7#LbMdT-4sQCI}j!{F)a=d#Wzp$PyHG#OU_ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_042c.png b/mods/special/display_modpack/font_metro/textures/font_metro_042c.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa9a80476e42f6610fea94ecda4c420bcaf7a7a GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd~CNhEy;nC;Z@V$!I8YWI3Yu rLq6ErNg`5izQVGyJz|Oqr3?&S=Z(+qXyE<;)WG2B>gTe~DWM4f@2?p_ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_042d.png b/mods/special/display_modpack/font_metro/textures/font_metro_042d.png new file mode 100644 index 0000000000000000000000000000000000000000..30c4e41d7209125ee7ba8f66f42e2f152d528134 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};dY&$hAr*|t4Nd<8I@ta#cH-e& zQx({I&_FD9(uCTUr5C0=EM-eP?yRs-V4*4l!}K)A{qY`)ErB{2JYD@<);T3K0RT}l B9<=}f literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_042e.png b/mods/special/display_modpack/font_metro/textures/font_metro_042e.png new file mode 100644 index 0000000000000000000000000000000000000000..993c33a6f32bd499aafff8a6b0e58db66e844072 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^f#?07Q^NLhQjIEGX(CMW#hZ!utasOTcl zWFV&H63DdJ@a7D!2@GvQC5r=H1bP0l+XkKg0 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_042f.png b/mods/special/display_modpack/font_metro/textures/font_metro_042f.png new file mode 100644 index 0000000000000000000000000000000000000000..12fc85bae084c285e2bcb3fbccbf2d8e41fa1baa GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq_jO<978G?lN*}{3CD5>Wf~3T%4YOF6YBDn1ov(MP@Yn6nK=llsu6{1-oD!M<>|`4A literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0431.png b/mods/special/display_modpack/font_metro/textures/font_metro_0431.png new file mode 100644 index 0000000000000000000000000000000000000000..673a9367259219ebdf4053a89f9d718e32206419 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%>3F(0hEy;nGc^AX=wSKxSjdH; yMIg+v!Gd6qc1qu+N{rf|)_z(Ciey>edZFeGHzielF{r5}E+a?Hl|6 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0432.png b/mods/special/display_modpack/font_metro/textures/font_metro_0432.png new file mode 100644 index 0000000000000000000000000000000000000000..7577eb1f7e82a7e761da6181edf319362bf41849 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQVO0fjv*C{$qMp++MQbj+7x;` mJw)3SnjAei7!6xBm>Jqx^e>)Uv3@yFErX}4pUXO@geCwWi4}za literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0433.png b/mods/special/display_modpack/font_metro/textures/font_metro_0433.png new file mode 100644 index 0000000000000000000000000000000000000000..92cb61d83673ff4cbd31f54a749de536499acc10 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^96-#^!2%?Unca2(DN#=s$B+ufWCiv=?hZCg0S?KG brx+L%Hc3ABd=@+tsDQ!K)z4*}Q$iB}8KDsk literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0434.png b/mods/special/display_modpack/font_metro/textures/font_metro_0434.png new file mode 100644 index 0000000000000000000000000000000000000000..71245de0af667257d07682bdec93d422770d7fd0 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq*Og!978G?lNYG{;BR)}HWm`THmwy%sd~CNhEy;nFJSw@->Bil(V^6G r%t`oHf2{E`E*|5LH~KVvWEmJFcj;bc7S;l?7#KWV{an^LB{Ts5*K-%D literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0436.png b/mods/special/display_modpack/font_metro/textures/font_metro_0436.png new file mode 100644 index 0000000000000000000000000000000000000000..45d7e53c35c7aaebb96068722ee7476e087ec270 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!2%@RtJ;?UDLqdY$B+uf_nEc%hq_jO<978G?*Pd7?$Y8+J;P5Se z)~b$}i3dO4Q8}i&?M6~FyBNP%u#cg={1=9bP0l+XkK0rDPH literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0439.png b/mods/special/display_modpack/font_metro/textures/font_metro_0439.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f347f4bdf763e75d376fa788b5be227e0beb23 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq|7{B978G?TTV2xGC1%Yz3^^- z$vTCuf}a=m-Mo<-*Y^8p!2Q%NO|^&}I&AwF?q<2GyW@_pE(62mf7VCS3-(L~n!w=c L>gTe~DWM4fDX}LF literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_043a.png b/mods/special/display_modpack/font_metro/textures/font_metro_043a.png new file mode 100644 index 0000000000000000000000000000000000000000..babed00b5047e43fabad71d754459b6b970f5df3 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%X?nUihEy;nFA({|?!@xizNu5d v>4b92gQkKG1_`GbT7@$_FO;`THmwy%$$PpuhEy;nFJSx8-_XM9DDtw2 lLoM;({~aMpuNTTNFzmmrelzNBfhkZagQu&X%Q~loCIFIk87lw) literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_043c.png b/mods/special/display_modpack/font_metro/textures/font_metro_043c.png new file mode 100644 index 0000000000000000000000000000000000000000..63e422d09a0cc4fa7b5a46e87a8a930d10c922bb GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};ik>cxAr*|t3s`^fH@(O?we+8I ngon@!mBJv7XpKpWSQ!{ZjO`BPOw;-aRLtP%>gTe~DWM4fm5&$F literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_043d.png b/mods/special/display_modpack/font_metro/textures/font_metro_043d.png new file mode 100644 index 0000000000000000000000000000000000000000..c32a14ef8332a8558b8ae34e2a89c45ceb24a001 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%Nqf3DhEy;nFA({|?xbS&vWdeZ hLV#<9qK72|L%)Xh)%NYbX9JZnc)I$ztaD0e0sz~G6zc#0 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_043e.png b/mods/special/display_modpack/font_metro/textures/font_metro_043e.png new file mode 100644 index 0000000000000000000000000000000000000000..03d320ba6a3d395a0013fd97c1f1a2cf0021849d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DSEm%hEy;nFJSw@->Bil(V^6G n%xRjsx4^L@8@T2#Uct;@U88-q#a{F+P%(q2tDnm{r-UW|keL`a literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_043f.png b/mods/special/display_modpack/font_metro/textures/font_metro_043f.png new file mode 100644 index 0000000000000000000000000000000000000000..bf2a31c1c215597882cc15c975cffd8f94007ea9 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%iF&#?hEy;nFA(|T-pay~nDBsA blbxZ}Py6b#LsuDr3K%?H{an^LB{Ts5ZTS;B literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0440.png b/mods/special/display_modpack/font_metro/textures/font_metro_0440.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1ae85387de47099fb8a149f2142addd311da3a GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%sd>6MhEy;nFA({|?!@s^-c^7x skmX{;iBC_sl4f=CaPAbI-p|3zFw5QeY>scp3!n}LPgg&ebxsLQ00-F_qW}N^ literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0441.png b/mods/special/display_modpack/font_metro/textures/font_metro_0441.png new file mode 100644 index 0000000000000000000000000000000000000000..354d641423c9b78e86f5b2a97139c1b4d08f228b GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQi`4~jv*C{$qRV?v^$hAwkR}l nhPSS1bWxn4z$b0Us>#ft$)I@uOF8pepkfA3S3j3^P6`THmwy%iF>*@hEy;nFA(|T-g<*okl~GId9;YzAR*(hK!an6?hi(WoBnFICh9C&2Gqdd>FVdQ&MBb@0IR+jH2?qr literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0444.png b/mods/special/display_modpack/font_metro/textures/font_metro_0444.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ad27de6d793fa2af5b0108ab13809f86a429db GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!2%@RtJ;?UDPvC;$B+ufWCzCojRL#@-UsVf zh&27_SM22sT%xE`Vm52*RW%b_P#ZKbLh* G2~7ZQl^&J= literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0445.png b/mods/special/display_modpack/font_metro/textures/font_metro_0445.png new file mode 100644 index 0000000000000000000000000000000000000000..47fdaf326e3d01c7e2e3be41b2196f7bd6ae9726 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQYxMOyeGkCiCxvX`THmwy%Nqf3DhEy;nFA({|?qrcYfn$-= ho2C~H6BN`K7#97|zgXd#@D`|y!PC{xWt~$(695;F7XAPL literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0447.png b/mods/special/display_modpack/font_metro/textures/font_metro_0447.png new file mode 100644 index 0000000000000000000000000000000000000000..51ac105974e9efdc99a95b7762a27997e45569f5 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQVO0fjv*C{$qMp+*qto8Ll*w$ nP*ic8A+k(COTn>2h=IZUzvBI67kTS}Y8gCT{an^LB{Ts5DMJ;z literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_0448.png b/mods/special/display_modpack/font_metro/textures/font_metro_0448.png new file mode 100644 index 0000000000000000000000000000000000000000..e7fac3d5a75dd9b430528816d12e463de989840b GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2%@fWX=8qDG5&($B+uf>wqs fqS7lJpwtVL{OrCnb5HegAdA7%)z4*}Q$iB}=z_nEc%hq?9~e978G?lNa#);BRbc5oB0y o!1PGyU;j~oM=gm0+YP<~)nC!Rx@hXWM?lpKp00i_>zopr0MykQWdHyG literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_044b.png b/mods/special/display_modpack/font_metro/textures/font_metro_044b.png new file mode 100644 index 0000000000000000000000000000000000000000..18601eac6d6a11fb8278a5ed527a5d24ba8e2fdf GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!2%?!UOYPlq!c|}978G?lNYG{;BU#O*`z8U ou>DB=8n=l`jSVe2%k>x-+C?po@7eL;5>PRNr>mdKI;Vst0M^$ULjV8( literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_044c.png b/mods/special/display_modpack/font_metro/textures/font_metro_044c.png new file mode 100644 index 0000000000000000000000000000000000000000..3f801e9e7bcc6123e7faae4993cf10a8ea54be30 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!2%@b9Mo+CQgWUyjv*C{$qMp+*quJL2nfu+ jP;b)P0%Qbt7%?!Y3aQ_mWB7C)P$h$>tDnm{r-UW|6g?H8 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_044d.png b/mods/special/display_modpack/font_metro/textures/font_metro_044d.png new file mode 100644 index 0000000000000000000000000000000000000000..bf1494bd28d551ff7feebb55ae0800983d2bb369 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-3y>`THmwy%DS5g$hEy;nFJSw@-#Wu-#vu+* oA7u`1C6x`cJWrHqEa78d$QDt(9iiFj4phzH>FVdQ&MBb@0D;LCmjD0& literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_044e.png b/mods/special/display_modpack/font_metro/textures/font_metro_044e.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa601ccbce99cd23f097f8541abbdb7cde1b478 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<0wkwu_5J};+MX_sAr*|t3+#UIw*-i>BzgUH wcL>pJ5ol^%IW0qztwfWlOt4I`OJywsgP5=V!Bkc!Euc0APgg&ebxsLQ08XA5s{jB1 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_044f.png b/mods/special/display_modpack/font_metro/textures/font_metro_044f.png new file mode 100644 index 0000000000000000000000000000000000000000..e1a09ac747725d453ebebe5b1025e99a2e3632b2 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^+(69F!2%>_nEc%hq*Odz978G?lNYG{=x^|7+R=Kj rAtI4Q<(!uUx2wQGH&K@lD_9wlj~QHGX8gwqRL|h)>gTe~DWM4f{C62s literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_2018.png b/mods/special/display_modpack/font_metro/textures/font_metro_2018.png new file mode 100644 index 0000000000000000000000000000000000000000..e70e65a7ab92fb5140d6f38ff5ae43cad7607702 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6QBN1gkP60RhNk}xJPQ+g{&TR^ bGB9lV!20{-^gSnl3K%?H{an^LB{Ts5T;vn* literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_2019.png b/mods/special/display_modpack/font_metro/textures/font_metro_2019.png new file mode 100644 index 0000000000000000000000000000000000000000..90f1424e9f909f280d556ba3b9969e816b8e4929 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c90U|T)mze=6F;5rAkP61+gdhAZ4hN1ju>3o$ bQN_scXg%})m6En1Kotz0u6{1-oD!M_E)V!2%?kIAl$Ml!T{?V@L&KGDFjU9uA>{jfMZ6 eJxbmMFfx3K=l&{~eklj2hQZU-&t;ucLK6UPLKA`j literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/font_metro/textures/font_metro_201d.png b/mods/special/display_modpack/font_metro/textures/font_metro_201d.png new file mode 100644 index 0000000000000000000000000000000000000000..84861facbac3229b34223f990dc92970f65d3a35 GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)V!2%?kIAl$Ml!T{?V@L&Ka>5V(7K2HQbGeh0 eJXq3SFfe3(B*M|#NADf_*V_eqYtsnPyNhOb>htG+N>h*Hd6iw)XU)M>gTe~DWM4f D#?v74 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/modpack.txt b/mods/special/display_modpack/modpack.txt new file mode 100644 index 0000000..e69de29 diff --git a/mods/special/display_modpack/ontime_clocks/LICENSE.txt b/mods/special/display_modpack/ontime_clocks/LICENSE.txt new file mode 100644 index 0000000..341c30b --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/mods/special/display_modpack/ontime_clocks/README.md b/mods/special/display_modpack/ontime_clocks/README.md new file mode 100644 index 0000000..d9db998 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/README.md @@ -0,0 +1,49 @@ +# Ontime Clocks + +This mod provides clocks that display real ingame time. + +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=19365) at the Minetest forums. + +**Dependancies**: display_api, default + +**License**: Code under LGPL, textures under CC-BY-SA + +## Recipes + +**Green and red digital clocks** + + - D - + G M G + - - - + +G = Glass, D = Dye, M = Mese Crystal, - = Empty + +Green dye for green clock, red dye for red clock + +**White clock** + + S P S + - M - + - - - + +P = Paper, S = Steel Ingot, M = Mese Crystal, - = Empty + + +**Frameless clock** + + S D S + - M - + - - - + +D = Dye, S = Steel Ingot, M = Mese Crystal, - = Empty + +Black dye for black clock, White dye for white clock + +**Gold frameless clock** + + G - G + - M - + - - - + +G = Gold Ingot, M = Mese Crystal, - = Empty + diff --git a/mods/special/display_modpack/ontime_clocks/common.lua b/mods/special/display_modpack/ontime_clocks/common.lua new file mode 100644 index 0000000..cced299 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/common.lua @@ -0,0 +1,61 @@ +--[[ + ontime_clocks mod for Minetest - Clock nodes displaying ingame time + (c) Pierre-Yves Rollo + + This file is part of ontime_clocks. + + ontime_clocks is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ontime_clocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ontime_clocks. If not, see . +--]] + +-- Entity for time display +display_api.register_display_entity("ontime_clocks:display") + +function ontime_clocks.get_h24() + return math.floor(minetest.get_timeofday()*24)%24 +end + +function ontime_clocks.get_h12() + return math.floor(minetest.get_timeofday()*24)%12 +end + +function ontime_clocks.get_m12() + return math.floor(minetest.get_timeofday()*288)%12 +end + +function ontime_clocks.get_digital_properties(color_off, color_on, hour, minute) + return + { + textures={"ontime_clocks_digital_background.png^[colorize:"..color_off + .."^([combine:21x7" + ..":0,"..(-7*(math.floor(hour/10))).."=ontime_clocks_digital_digit.png" + ..":5,"..(-7*(hour%10)).."=ontime_clocks_digital_digit.png" + ..":9,-70=ontime_clocks_digital_digit.png" + ..":12,"..(-7*(math.floor(minute/2))).."=ontime_clocks_digital_digit.png" + ..":17,"..(-35*(minute%2)).."=ontime_clocks_digital_digit.png" + .."^[colorize:"..color_on..")"}, + visual_size = {x=21/32, y=7/32} + } +end + +function ontime_clocks.get_needles_properties(color, size, hour, minute) + return + { + textures={"[combine:"..size.."x"..size + ..":0,"..(-size*hour).."=ontime_clocks_needle_h"..size..".png" + ..":0,"..(-size*minute).."=ontime_clocks_needle_m"..size..".png" + .."^[colorize:"..color}, + visual_size = {x=size/64, y=size/64} + } +end + diff --git a/mods/special/display_modpack/ontime_clocks/copyright.txt b/mods/special/display_modpack/ontime_clocks/copyright.txt new file mode 100644 index 0000000..a2afd94 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/copyright.txt @@ -0,0 +1,8 @@ +Code, Textures and Models by Pierre-Yves Rollo (pyrollo) +intllib support (i18n) by (fat115) +intllib fallback code and tools by Diego Martínez (kaeza) +Extra contibutors: +(Thomas--S) +Translations: +Muhammad Nur Hidayat Yasuyoshi (MuhdNurHidayat) +(fat115) diff --git a/mods/special/display_modpack/ontime_clocks/crafts.lua b/mods/special/display_modpack/ontime_clocks/crafts.lua new file mode 100644 index 0000000..c94352a --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/crafts.lua @@ -0,0 +1,75 @@ +--[[ + ontime_clocks mod for Minetest - Clock nodes displaying ingame time + (c) Pierre-Yves Rollo + + This file is part of ontime_clocks. + + ontime_clocks is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ontime_clocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ontime_clocks. If not, see . +--]] + +minetest.register_craft({ + output = 'ontime_clocks:green_digital', + recipe = { + {'', 'dye:green', ''}, + {'default:glass', 'default:mese_crystal', 'default:glass'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'ontime_clocks:red_digital', + recipe = { + {'', 'dye:red', ''}, + {'default:glass', 'default:mese_crystal', 'default:glass'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'ontime_clocks:white', + recipe = { + {'default:steel_ingot', 'default:paper', 'default:steel_ingot'}, + {'', 'default:mese_crystal', ''}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'ontime_clocks:frameless_black', + recipe = { + {'default:steel_ingot', 'dye:black', 'default:steel_ingot'}, + {'', 'default:mese_crystal', ''}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'ontime_clocks:frameless_gold', + recipe = { + {'default:gold_ingot', '', 'default:gold_ingot'}, + {'', 'default:mese_crystal', ''}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'ontime_clocks:frameless_white', + recipe = { + {'default:steel_ingot', 'dye:white', 'default:steel_ingot'}, + {'', 'default:mese_crystal', ''}, + {'', '', ''}, + } +}) + + diff --git a/mods/special/display_modpack/ontime_clocks/depends.txt b/mods/special/display_modpack/ontime_clocks/depends.txt new file mode 100644 index 0000000..07a2ec1 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/depends.txt @@ -0,0 +1,5 @@ +default +dye +display_api + +intllib? diff --git a/mods/special/display_modpack/ontime_clocks/init.lua b/mods/special/display_modpack/ontime_clocks/init.lua new file mode 100644 index 0000000..d0ac334 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/init.lua @@ -0,0 +1,31 @@ +--[[ + ontime_clocks mod for Minetest - Clock nodes displaying ingame time + (c) Pierre-Yves Rollo + + This file is part of ontime_clocks. + + ontime_clocks is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ontime_clocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ontime_clocks. If not, see . +--]] + +ontime_clocks = {} +ontime_clocks.name = minetest.get_current_modname() +ontime_clocks.path = minetest.get_modpath(ontime_clocks.name) + +-- Load support for intllib. +local S, NS = dofile(ontime_clocks.path.."/intllib.lua") +ontime_clocks.intllib = S + +dofile(ontime_clocks.path.."/common.lua") +dofile(ontime_clocks.path.."/nodes.lua") +dofile(ontime_clocks.path.."/crafts.lua") diff --git a/mods/special/display_modpack/ontime_clocks/intllib.lua b/mods/special/display_modpack/ontime_clocks/intllib.lua new file mode 100644 index 0000000..6669d72 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/special/display_modpack/ontime_clocks/locale/fr.po b/mods/special/display_modpack/ontime_clocks/locale/fr.po new file mode 100644 index 0000000..ed5d2b4 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/locale/fr.po @@ -0,0 +1,43 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-05 09:50+0200\n" +"PO-Revision-Date: 2017-05-08 06:20+0200\n" +"Last-Translator: Peppy \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: nodes.lua +msgid "Green digital clock" +msgstr "Horloge numérique verte" + +#: nodes.lua +msgid "Red digital clock" +msgstr "Horloge numérique rouge" + +#: nodes.lua +msgid "White clock" +msgstr "Horloge blanche" + +#: nodes.lua +msgid "Frameless clock" +msgstr "Horloge sans cadre" + +#: nodes.lua +msgid "Frameless gold clock" +msgstr "Horloge dorée sans cadre" + +#: nodes.lua +msgid "Frameless white clock" +msgstr "Horloge blanche sans cadre" diff --git a/mods/special/display_modpack/ontime_clocks/locale/ms.po b/mods/special/display_modpack/ontime_clocks/locale/ms.po new file mode 100644 index 0000000..4d52ac2 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/locale/ms.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Yaya (Nurul Azeera Hidayah @ Muhammad Nur Hidayat) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: Display Modpack\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 11:21+0200\n" +"PO-Revision-Date: 2020-07-05 11:32+0000\n" +"Last-Translator: Yaya MNH48 \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.3\n" + +#: nodes.lua +msgid "Green digital clock" +msgstr "Jam digital hijau" + +#: nodes.lua +msgid "Red digital clock" +msgstr "Jam digital merah" + +#: nodes.lua +msgid "White clock" +msgstr "Jam putih" + +#: nodes.lua +msgid "Frameless clock" +msgstr "Jam tanpa bingkai" + +#: nodes.lua +msgid "Frameless gold clock" +msgstr "Jam emas tanpa bingkai" + +#: nodes.lua +msgid "Frameless white clock" +msgstr "Jam putih tanpa bingkai" diff --git a/mods/special/display_modpack/ontime_clocks/locale/template.pot b/mods/special/display_modpack/ontime_clocks/locale/template.pot new file mode 100644 index 0000000..dca736f --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/locale/template.pot @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 11:21+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: nodes.lua +msgid "Green digital clock" +msgstr "" + +#: nodes.lua +msgid "Red digital clock" +msgstr "" + +#: nodes.lua +msgid "White clock" +msgstr "" + +#: nodes.lua +msgid "Frameless clock" +msgstr "" + +#: nodes.lua +msgid "Frameless gold clock" +msgstr "" + +#: nodes.lua +msgid "Frameless white clock" +msgstr "" diff --git a/mods/special/display_modpack/ontime_clocks/mod.conf b/mods/special/display_modpack/ontime_clocks/mod.conf new file mode 100644 index 0000000..9c1a2e6 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/mod.conf @@ -0,0 +1,4 @@ +name=ontime_clocks +description=Clocks displaing real ingame time +depends=default,dye,display_api +optional_depends=intllib diff --git a/mods/special/display_modpack/ontime_clocks/nodes.lua b/mods/special/display_modpack/ontime_clocks/nodes.lua new file mode 100644 index 0000000..107d2e9 --- /dev/null +++ b/mods/special/display_modpack/ontime_clocks/nodes.lua @@ -0,0 +1,246 @@ +--[[ + ontime_clocks mod for Minetest - Clock nodes displaying ingame time + (c) Pierre-Yves Rollo + + This file is part of ontime_clocks. + + ontime_clocks is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ontime_clocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ontime_clocks. If not, see . +--]] + +local S = ontime_clocks.intllib + +-- Green digital clock +minetest.register_node("ontime_clocks:green_digital", { + description = S("Green digital clock"), + inventory_image = "ontime_clocks_green_digital_inventory.png", + wield_image = "ontime_clocks_green_digital_inventory.png", + paramtype = "light", + paramtype2 = "wallmounted", + drawtype = "nodebox", + node_box = { + type = "wallmounted", + wall_side = { -0.5, -3/16, -7/16, -13/32, 7/32, 7/16 }, + wall_top = { -7/16, 0.5, -7/32, 7/16, 13/32, 3/16 }, + wall_bottom = { -7/16, -0.5, -3/16, 7/16, -13/32, 7/32 }, + }, + tiles = {"ontime_clocks_digital.png"}, + groups = {oddly_breakable_by_hand=1, not_blocking_trains=1, display_api=1}, + display_entities = { + ["ontime_clocks:display"] = { + depth = 13/32 - 0.01, + on_display_update = function(pos, objref) + objref:set_properties( + ontime_clocks.get_digital_properties( + "#040", "#0F0", ontime_clocks.get_h24(), ontime_clocks.get_m12())) + end }, + }, + on_place = display_api.on_place, + on_construct = display_api.on_construct, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, +}) + +minetest.register_abm({ + nodenames = {"ontime_clocks:green_digital"}, + interval = 5, + chance = 1, + action = display_api.update_entities, +}) + +-- Red digital clock +minetest.register_node("ontime_clocks:red_digital", { + description = S("Red digital clock"), + inventory_image = "ontime_clocks_red_digital_inventory.png", + wield_image = "ontime_clocks_red_digital_inventory.png", + paramtype = "light", + paramtype2 = "wallmounted", + drawtype = "nodebox", + node_box = { + type = "wallmounted", + wall_side = { -0.5, -3/16, -7/16, -13/32, 7/32, 7/16 }, + wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + wall_top = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + tiles = {"ontime_clocks_digital.png"}, + groups = {oddly_breakable_by_hand=1, not_blocking_trains=1, display_api=1}, + display_entities = { + ["ontime_clocks:display"] = { + depth = 13/32 - 0.01, + on_display_update = function(pos, objref) + objref:set_properties( + ontime_clocks.get_digital_properties( + "#400", "#F00", ontime_clocks.get_h24(), ontime_clocks.get_m12())) + end }, + }, + on_place = display_api.on_place, + on_construct = display_api.on_construct, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, +}) + +minetest.register_abm({ + nodenames = {"ontime_clocks:red_digital"}, + interval = 5, + chance = 1, + action = display_api.update_entities, +}) + + +minetest.register_node("ontime_clocks:white", { + description = S("White clock"), + inventory_image = "ontime_clocks_white_inventory.png", + wield_image = "ontime_clocks_white_inventory.png", + paramtype = "light", + paramtype2 = "wallmounted", + drawtype = "nodebox", + node_box = { + type = "wallmounted", + wall_side = { -0.5, -7/16, -7/16, -6/16, 7/16, 7/16}, + wall_bottom = { -7/16, -0.5, -7/16, 7/16, -7/16, 7/16}, + wall_top = { -7/16, 0.5, -7/16, 7/16, 7/16, 7/16}, + }, + tiles = {"ontime_clocks_white.png"}, + groups = {oddly_breakable_by_hand=1, not_blocking_trains=1, display_api=1}, + display_entities = { + ["ontime_clocks:display"] = { + depth = 6/16 - 0.01, + on_display_update = function(pos, objref) + objref:set_properties( + ontime_clocks.get_needles_properties( + "#000", 36, ontime_clocks.get_h12(), ontime_clocks.get_m12())) + end }, + }, + on_place = display_api.on_place, + on_construct = display_api.on_construct, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, +}) + +minetest.register_abm({ + nodenames = {"ontime_clocks:white"}, + interval = 5, + chance = 1, + action = display_api.update_entities, +}) + +minetest.register_node("ontime_clocks:frameless_black", { + description = S("Frameless clock"), + inventory_image = "ontime_clocks_frameless_inventory.png", + wield_image = "ontime_clocks_frameless_inventory.png", + paramtype = "light", + paramtype2 = "wallmounted", + drawtype = "nodebox", + node_box = { + type = "wallmounted", + wall_side = { -0.5, -7/16, -7/16, -0.45, 7/16, 7/16 }, + wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + wall_top = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + tiles = {"ontime_clocks_frameless.png"}, + groups = {oddly_breakable_by_hand=1, not_blocking_trains=1, display_api=1}, + display_entities = { + ["ontime_clocks:display"] = { + depth = 7/16, + on_display_update = function(pos, objref) + objref:set_properties( + ontime_clocks.get_needles_properties( + "#000", 48, ontime_clocks.get_h12(), ontime_clocks.get_m12())) + end }, + }, + on_place = display_api.on_place, + on_construct = display_api.on_construct, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, +}) + +minetest.register_abm({ + nodenames = {"ontime_clocks:frameless_black"}, + interval = 5, + chance = 1, + action = display_api.update_entities, +}) + +minetest.register_node("ontime_clocks:frameless_gold", { + description = S("Frameless gold clock"), + inventory_image = "ontime_clocks_frameless_inventory.png^[colorize:#FF0", + wield_image = "ontime_clocks_frameless_inventory.png^[colorize:#FF0", + paramtype = "light", + paramtype2 = "wallmounted", + drawtype = "nodebox", + node_box = { + type = "wallmounted", + wall_side = { -0.5, -7/16, -7/16, -0.45, 7/16, 7/16 }, + wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + wall_top = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + tiles = {"ontime_clocks_frameless.png^[colorize:#FF0"}, + groups = {oddly_breakable_by_hand=1, not_blocking_trains=1, display_api=1}, + display_entities = { + ["ontime_clocks:display"] = { + depth = 7/16, + on_display_update = function(pos, objref) + objref:set_properties( + ontime_clocks.get_needles_properties( + "#FF0", 48, ontime_clocks.get_h12(), ontime_clocks.get_m12())) + end }, + }, + on_place = display_api.on_place, + on_construct = display_api.on_construct, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, +}) + +minetest.register_abm({ + nodenames = {"ontime_clocks:frameless_gold"}, + interval = 5, + chance = 1, + action = display_api.update_entities, +}) + +minetest.register_node("ontime_clocks:frameless_white", { + description = S("Frameless white clock"), + inventory_image = "ontime_clocks_frameless_inventory.png^[colorize:#FFF", + wield_image = "ontime_clocks_frameless_inventory.png^[colorize:#FFF", + paramtype = "light", + paramtype2 = "wallmounted", + drawtype = "nodebox", + node_box = { + type = "wallmounted", + wall_side = { -0.5, -7/16, -7/16, -0.45, 7/16, 7/16 }, + wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + wall_top = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + tiles = {"ontime_clocks_frameless.png^[colorize:#FFF"}, + groups = {oddly_breakable_by_hand=1, not_blocking_trains=1, display_api=1}, + display_entities = { + ["ontime_clocks:display"] = { + depth = 7/16, + on_display_update = function(pos, objref) + objref:set_properties( + ontime_clocks.get_needles_properties( + "#FFF", 48, ontime_clocks.get_h12(), ontime_clocks.get_m12())) + end }, + }, + on_place = display_api.on_place, + on_construct = display_api.on_construct, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, +}) + +minetest.register_abm({ + nodenames = {"ontime_clocks:frameless_white"}, + interval = 5, + chance = 1, + action = display_api.update_entities, +}) diff --git a/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_digital.png b/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_digital.png new file mode 100644 index 0000000000000000000000000000000000000000..a4876cdd5f8d264b5d7ca04d21dc9093500663bd GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk^Bp4k4Udp%toLn;`PfA}jd*~+NU^p8zp zOTwuD8Mech8CaS2&!zIRh*o^)eok}tkTqaR=ZlC0 zfrJ<7KX_AWQf8bt;LnJWZ)R9m&?qb+B*k-k;hB;csgIHjg82-=_gZ)y9L`vLWOH&` twd}~nGc5tOQXL|qufMFH$yTkv#9+&M&qtCa@dVH#44$rjF6*2UngCsPSZn|Q literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_green_digital_inventory.png b/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_green_digital_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..2bf9043293235b37fd70d92a76393ea03886a057 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W*h+%@f*JmUpm~IJEl?!I)5S5Q zg7NKCZngssJTApsY<=I?H)}e!N*yxsIwO2F^%3W9PM+jOR;xnZ&7K1DKdonoOu5-p zc(79H)b>9mNlgrqlOEXqKDo*yDW>7l0rdxlffK&4e%_sN-7)!x+1J@Qj5<3QIrcFA Udz$=yKF~e}Pgg&ebxsLQ0M2+op8x;= literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_needle_h36.png b/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_needle_h36.png new file mode 100644 index 0000000000000000000000000000000000000000..e08302f317c844b41e08b333116abb505f42f10a GIT binary patch literal 669 zcmeAS@N?(olHy`uVBq!ia0vp^Dhv#a8#tJOtZ#AV-asldz$e7@|Ns9$CLO@GvQ1q; zYm`fZ{DK+&8`y4AVLJOWHR+!z--`uZpCv2rvbzPcT-}@ZM_2gW)P`KfUGG-_9elvk z#WAFU@$F4lsoPNkE)Vr?GZ`CK|F1Ubz308iE^$r$nvZ{1^*_45NWK2c`r4E}Qj+A#sq?N)yp^N+R%!e65(~Fi zCDTee?}T3ZDYEnI+cnV(E|&_YeLF5)(tPIF-(4M7itMId={!@laC?}E)w?fYTNj^v zS#;s_itx1l8{W2(&(1##UVfmxba&Ss-{*hT4m_*kGTwZD;=kwD>r>Lcb$^I?{P4K& zq~jXrqvTH5Y~7!^<@2BC&Q1P8#=rL#iaj}SV&$a8>d%AuHqI%rR7}{?f5-1qnefW3^TH-Z=^ferEk@|> zt<5W!cs@Bc$?dQQ@2^Q!6JK8o3T4x<%4&bU^yc~fXTR6XUcc>!jF{}+*u@tMf?jJ@ zFFJkCL%;pB=BzE+d*Ak5T(NZfQK|LcUegeb1Q>S?whds5C; z#n&HJb4RZCFEVJ!aVfHC%&}6oY|nEn+S!z|m-ElrZ7Su}C;0wYIh9#W-s4cNTDjZ# zTg9Xr$M0%CYaGgd+5B{zaQt`6{N%K>FkMBL-GPa6n-aIX8clD_FiOy3KAB~gw&;g= zS8e7=m%T9!k9H)lifn#Vm$>SF4XEMAmnrIDI!m5=JUlpgUdYRf)8@6ld>A=ri*Nt)FE;-C3}24~^h+qGPO9oy zxqM!g&#LFEvIL~(&z$-5|025w%yt4m=KIHX2fr8QzldvWzVg@Y6W86=CqG$kPK;+i z@y&Wt^b0Q)^XwC0-jldrJX1*zKB1O8N%=$@^Q6CWDY12>3fbE|%ob)(SaV%rb(qIA z=K9S^jEtWw|G7@cVM|N+;q6t4)l5tNtq8 zT(@v-{LI(WKmFReUrx-$OZJvBXhd187%Rlk?-#X!4wxUiy{-?T5Oj{cx@WSLx&9W(p z=hsau@|xk#mUms-EAs4{Ja5hRUfXxtPpfWKTgqxa{I;WFd)$HZ3v2H@;(z^D=gY2_ zXIllD>OZBo-}B*6{P5v1=gH(L>AL(W^KKd3Vmx2J$K$|M7CrL<-(TOIIAkO&LyNvV zsX3)MZL;3+#B*n4)^IM*?|U)lvE`f3!i@H24>q&fG%WDRS7@pD(C_?FmQ6wN-827* z?Ug-o`gYxOYD6sGlt)kOy{@FKFV6IN=5i(Bes`wBjlY#_%U!MVwzJIQz3!T|E{tW< zCU2#qPIk-RCq=aFm_7ez-agw~9}e$|cwbX_XNtiry}kCaQ!mNip4}W26PU}LpRy!|EsoZ^0P-9BA@5H2K|3f(x@11n!_~U-I{-=#xM%#e}jhQS7DFNin)7(}w-4Kl7*7ZbSXs<0sCn3P*s8UHx3vIVCg!0I?e!U;qFB literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_needle_m48.png b/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_needle_m48.png new file mode 100644 index 0000000000000000000000000000000000000000..fd83f41faea5d4c71f875767730981ccdf4ed6c6 GIT binary patch literal 935 zcmeAS@N?(olHy`uVBq!ia0vp^1`G^L4jjxt)}KVtSRl11z$e7@|Ns9$=3oXdbnln} z-Dg%3y|owmAO=#$tn0IY~rEc ze+_rc_W3BrdaGD@b(#1?py%s6T^vIy7~kG;U6gGu!SZnb*)#hR($a4HzqYBdL2J&Q zf6rz`ueIv4?|#B;_kj8TEM_~P?93d6n=$(YTmqLCF-%>R<#^>P$D*5Ak5OpmWu^H)cmaa;86L-5)v)gaUA zp!Jd~(~>hkT8m z`ovK4d}yV>>B-S@Uq9u{Xg`^j_ALKT%>nkB1Myd9Nj~_#!%0AYqvNZ(%cdRO=N#ws zwfhKEziqmawV5wr>Sd#j)@M%{(t>@PB(gbrW^RX%=MB}%bo@vB&a zG}?hdw7SM+z>% literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_red_digital_inventory.png b/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_red_digital_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..5400167017cc2eed4f6979da300c2dd4133b2cbf GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W*h+%@f*JmUpm~IJEl?!Y)5S5Q zf-(7rf3iUqqfAefL6)NwFT*ZYo)A{%tb_FihmIay-?M?$jHf1mw?JsBql4sAu|Mj! znS9P4TFatjF}=a4N$ijNrG~rgKc)ueF*2r>c)K1pSbULzXa1wAD@}piZn_K%_f|MN Ue_F&j6=)%Yr>mdKI;Vst03+i#$p8QV literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_white.png b/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_white.png new file mode 100644 index 0000000000000000000000000000000000000000..e4843032a3c3ba4d55eefcf25cd9ec25d864ef64 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*Q=ji-xaNCji^4IhRJ-UsVt7-loE zv3ZF&JQd)%leeIgiLJzw&1yHJppAy3TfjjNZjCc6&XKcJ?(#CvH)rg96Yuup@WU36 Nd7iF*F6*2UngGEv9?<{* literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_white_inventory.png b/mods/special/display_modpack/ontime_clocks/textures/ontime_clocks_white_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..743640899313d34d6440f8aacb00edc5651861e3 GIT binary patch literal 228 zcmVkdg00021Nkl{kg*DDV3jFI$O^b6yyNcrP;q{@_tGcl7Sg252$+%@WmZ74 zNKinCJP8Q?zR6V#@*p7mg$eT_5epu4S@9X`I<%Q15dkAYxgH0ABmL@)dm%9a=LS^? z)rQ>|Q)|Gvzhm&NXf|~Up-Q{WZ^e~>0GQFL*%OHg;5(k|l~y4^6k#*vX`tkPCMF(( e{BNfGZ|8TV8J-oOmtc|r0000E>vXrF_r4W_9 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
g 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 z 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 + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/mods/special/display_modpack/signs/README.md b/mods/special/display_modpack/signs/README.md new file mode 100644 index 0000000..0282d2e --- /dev/null +++ b/mods/special/display_modpack/signs/README.md @@ -0,0 +1,30 @@ +# Signs + +This mod provides various signs with text display. Text is locked if area is protected. + +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=19365) at the Minetest forums. + +**Dependancies**: default, display\_lib, font\_lib + +**License**: Code under LGPL, Textures and models under CC-BY-SA + +## Recipes + +**Poster** + + P P - + P P - + P P - + +P = Paper + +Poster displays only title, much more text can be read by right-clicking on it. + +**Wooden direction sign** + + W W W + W W - + - - - + +W = Wooden Plank (group) + diff --git a/mods/special/display_modpack/signs/common.lua b/mods/special/display_modpack/signs/common.lua new file mode 100644 index 0000000..733a44c --- /dev/null +++ b/mods/special/display_modpack/signs/common.lua @@ -0,0 +1,37 @@ +--[[ + signs mod for Minetest - Various signs with text displayed on + (c) Pierre-Yves Rollo + + This file is part of signs. + + signs is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs. If not, see . +--]] + +local S = signs.intllib +local F = function(...) return minetest.formspec_escape(S(...)) end + +-- Generic callback for show_formspec displayed formspecs of "sign" mod + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local found, _, mod, node_name, pos = formname:find("^([%w_]+):([%w_]+)@([^:]+)") + if found then + if mod ~= 'signs' then return end + + local ndef = minetest.registered_nodes[mod..":"..node_name] + + if ndef and ndef.on_receive_fields then + ndef.on_receive_fields(minetest.string_to_pos(pos), formname, fields, player) + end + end +end) diff --git a/mods/special/display_modpack/signs/compatibility.lua b/mods/special/display_modpack/signs/compatibility.lua new file mode 100644 index 0000000..dea8750 --- /dev/null +++ b/mods/special/display_modpack/signs/compatibility.lua @@ -0,0 +1,117 @@ +--[[ + signs mod for Minetest - Various signs with text displayed on + (c) Pierre-Yves Rollo + + This file is part of signs. + + signs is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs. If not, see . +--]] + + +-- Wallmounted to facedir conversion +------------------------------------ + +local wallmounted_to_facedir = { + [0]=1, -- Should not happend with signs + [1]=1, -- Should not happend with signs + [2]=1, + [3]=3, + [4]=0, + [5]=2 +} + +-- Nodes conversions +local convert_nodes = { + ['signs:wooden_right'] = 'signs:wooden_right_sign', + ['signs:wooden_left'] = 'signs:wooden_left_sign', + ['signs:poster'] = 'signs:paper_poster' +} + +local function compatibility_check_1(pos, node) + -- Old wallmounted modes to new facedir nodes conversion + node.name = convert_nodes[node.name] + if node.name then + node.param2 = wallmounted_to_facedir[node.param2] + display_api.on_destruct(pos) + minetest.swap_node(pos, node) + display_api.on_construct(pos) + end +end + +minetest.register_lbm({ name = "signs:conpatibility_1", + nodenames = {"signs:wooden_right", "signs:wooden_left", "signs:poster"}, + action = compatibility_check_1, +}) + +-- Text entity name change because of signs_lib using signs prefix +------------------------------------------------------------------ + +-- If no other mod registered signs:text, register it. +-- We need to have this entity registered to be able to remove it. +if minetest.registered_entities["signs:text"] == nil then + minetest.register_entity("signs:text", { + collisionbox = { 0, 0, 0, 0, 0, 0 }, + visual = "upright_sprite", + textures = {}, + }) +end + +local function compatibility_check_2(pos, node) + -- Remove old entity + for _, objref in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local entity = objref:get_luaentity() + if entity and entity.name == "signs:text" then + objref:remove() + end + end + -- Create new entity + display_api.update_entities(pos) +end + +minetest.register_lbm({ name = "signs:conpatibility_2", + nodenames = {"signs:wooden_right_sign", "signs:wooden_left_sign", "signs:paper_poster"}, + action = compatibility_check_2, +}) + +--Backwards compatibility API functions + +signs.set_display_text = function(...) + minetest.log("warning", "signs.set_display_text() is deprecated, please use signs_api.set_display_text() instead.") + return signs_api.set_display_text(...) +end + +signs.set_formspec = function(...) + minetest.log("warning", "signs.set_formspec() is deprecated, please use signs_api.set_formspec() instead.") + return signs_api.set_formspec(...) +end + +signs.on_receive_fields = function(...) + minetest.log("warning", "signs.on_receive_fields() is deprecated, please use signs_api.on_receive_fields() instead.") + return signs_api.on_receive_fields(...) +end + +signs.on_place_direction = function(...) + minetest.log("warning", "signs.on_place_direction() is deprecated, please use signs_api.on_place_direction() instead.") + return signs_api.on_place_direction(...) +end + +signs.on_rotate = function(...) + minetest.log("warning", "signs.on_rotate() is deprecated, please use signs_api.on_rotate() instead.") + return signs_api.on_rotate(...) +end + +signs.register_sign = function(...) + minetest.log("warning", "signs.register_sign() is deprecated, please use signs_api.register_sign() instead.") + return signs_api.register_sign(...) +end diff --git a/mods/special/display_modpack/signs/copyright.txt b/mods/special/display_modpack/signs/copyright.txt new file mode 100644 index 0000000..9e3b294 --- /dev/null +++ b/mods/special/display_modpack/signs/copyright.txt @@ -0,0 +1,10 @@ +Code, Textures and Models by Pierre-Yves Rollo (pyrollo) +intllib support (i18n) by (fat115) +intllib fallback code and tools by Diego Martínez (kaeza) +Extra contributors: +(gpcf) +(Thomas--S) +Translations: +Muhammad Nur Hidayat Yasuyoshi (MuhdNurHidayat) +(fat115) + diff --git a/mods/special/display_modpack/signs/crafts.lua b/mods/special/display_modpack/signs/crafts.lua new file mode 100644 index 0000000..4242d5e --- /dev/null +++ b/mods/special/display_modpack/signs/crafts.lua @@ -0,0 +1,61 @@ +minetest.register_craft({ + output = 'signs:wooden_right_sign', + recipe = { + {'group:wood', 'group:wood', 'group:wood'}, + {'group:wood', 'group:wood', 'dye:black'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs:wooden_right_sign', + type = 'shapeless', + recipe = { 'signs:wooden_long_sign' } +}) + +minetest.register_craft({ + output = 'signs:wooden_long_sign', + recipe = { + {'group:wood', 'dye:black', 'group:wood'}, + {'group:wood', 'group:wood', 'group:wood'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs:wooden_long_sign', + type = 'shapeless', + recipe = { 'signs:wooden_right_sign' } +}) + +minetest.register_craft({ + output = 'signs:wooden_sign', + recipe = { + {'', 'dye:black', ''}, + {'group:wood', 'group:wood', 'group:wood'}, + {'group:wood', 'group:wood', 'group:wood'}, + } +}) + +minetest.register_craft({ + output = 'signs:paper_poster', + recipe = { + {'default:paper', 'default:paper', 'dye:black'}, + {'default:paper', 'default:paper', ''}, + {'default:paper', 'default:paper', ''}, + } +}) + +minetest.register_craft({ + output = 'signs:label_small', + recipe = { + {'default:paper', 'dye:black'}, + } +}) + +minetest.register_craft({ + output = 'signs:label_medium', + recipe = { + {'default:paper', 'default:paper', 'dye:black'}, + } +}) diff --git a/mods/special/display_modpack/signs/depends.txt b/mods/special/display_modpack/signs/depends.txt new file mode 100644 index 0000000..afeb838 --- /dev/null +++ b/mods/special/display_modpack/signs/depends.txt @@ -0,0 +1,4 @@ +default +dye +signs_api +intllib? diff --git a/mods/special/display_modpack/signs/init.lua b/mods/special/display_modpack/signs/init.lua new file mode 100644 index 0000000..4f9239f --- /dev/null +++ b/mods/special/display_modpack/signs/init.lua @@ -0,0 +1,36 @@ +--[[ + signs mod for Minetest - Various signs with text displayed on + (c) Pierre-Yves Rollo + + This file is part of signs. + + signs is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs. If not, see . +--]] + +signs = {} +signs.name = minetest.get_current_modname() +signs.path = minetest.get_modpath(signs.name) + +-- Load support for intllib. +local S, NS = dofile(signs.path.."/intllib.lua") +signs.intllib = S + +dofile(signs.path.."/common.lua") +dofile(signs.path.."/nodes.lua") +dofile(signs.path.."/crafts.lua") +dofile(signs.path.."/compatibility.lua") + + + + diff --git a/mods/special/display_modpack/signs/intllib.lua b/mods/special/display_modpack/signs/intllib.lua new file mode 100644 index 0000000..6669d72 --- /dev/null +++ b/mods/special/display_modpack/signs/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/special/display_modpack/signs/locale/fr.po b/mods/special/display_modpack/signs/locale/fr.po new file mode 100644 index 0000000..7a00544 --- /dev/null +++ b/mods/special/display_modpack/signs/locale/fr.po @@ -0,0 +1,54 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 13:20+0200\n" +"PO-Revision-Date: 2017-05-08 07:08+0200\n" +"Last-Translator: Peppy \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" + +#: common.lua nodes.lua +msgid "Text" +msgstr "Texte" + +#: common.lua nodes.lua +msgid "Write" +msgstr "Écrire" + +#: common.lua +#, lua-format +msgid " (first %s lines only)" +msgstr " (uniquement les %s premières lignes)" + +#: nodes.lua +msgid "Title" +msgstr "Titre" + +#: nodes.lua +msgid "Close" +msgstr "Fermer" + +#: nodes.lua +msgid "(right-click to read more text)" +msgstr "(Clic-droit pour afficher le texte entier)" + +#: nodes.lua +msgid "Wooden direction sign" +msgstr "Panneau de direction en bois" + +#: nodes.lua +msgid "Poster" +msgstr "Affiche" + +#~ msgid "Textd" +#~ msgstr "Texte" diff --git a/mods/special/display_modpack/signs/locale/ms.po b/mods/special/display_modpack/signs/locale/ms.po new file mode 100644 index 0000000..defee7b --- /dev/null +++ b/mods/special/display_modpack/signs/locale/ms.po @@ -0,0 +1,51 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Yaya (Nurul Azeera Hidayah @ Muhammad Nur Hidayat) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: Display Modpack\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 13:20+0200\n" +"PO-Revision-Date: 2020-07-05 11:34+0000\n" +"Last-Translator: Yaya MNH48 \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.3\n" + +#: common.lua nodes.lua +msgid "Text" +msgstr "Teks" + +#: common.lua nodes.lua +msgid "Write" +msgstr "Tulis" + +#: common.lua +#, lua-format +msgid " (first %s lines only)" +msgstr " (%s baris pertama sahaja)" + +#: nodes.lua +msgid "Title" +msgstr "Tajuk" + +#: nodes.lua +msgid "Close" +msgstr "Tutup" + +#: nodes.lua +msgid "(right-click to read more text)" +msgstr "(klik-kanan untuk baca teks penuh)" + +#: nodes.lua +msgid "Wooden direction sign" +msgstr "Papan tanda arah kayu" + +#: nodes.lua +msgid "Poster" +msgstr "Poster" diff --git a/mods/special/display_modpack/signs/locale/template.pot b/mods/special/display_modpack/signs/locale/template.pot new file mode 100644 index 0000000..a1fc065 --- /dev/null +++ b/mods/special/display_modpack/signs/locale/template.pot @@ -0,0 +1,51 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 13:20+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: common.lua nodes.lua +msgid "Text" +msgstr "" + +#: common.lua nodes.lua +msgid "Write" +msgstr "" + +#: common.lua +#, lua-format +msgid " (first %s lines only)" +msgstr "" + +#: nodes.lua +msgid "Title" +msgstr "" + +#: nodes.lua +msgid "Close" +msgstr "" + +#: nodes.lua +msgid "(right-click to read more text)" +msgstr "" + +#: nodes.lua +msgid "Wooden direction sign" +msgstr "" + +#: nodes.lua +msgid "Poster" +msgstr "" diff --git a/mods/special/display_modpack/signs/mod.conf b/mods/special/display_modpack/signs/mod.conf new file mode 100644 index 0000000..81d1358 --- /dev/null +++ b/mods/special/display_modpack/signs/mod.conf @@ -0,0 +1,4 @@ +name=signs +description=Basic signs and posters with text display using signs_api +depends=default,dye,signs_api +optional_depends=intllib diff --git a/mods/special/display_modpack/signs/models/signs_dir_left.obj b/mods/special/display_modpack/signs/models/signs_dir_left.obj new file mode 100644 index 0000000..91ead2d --- /dev/null +++ b/mods/special/display_modpack/signs/models/signs_dir_left.obj @@ -0,0 +1,51 @@ +# Blender v2.76 (sub 0) OBJ File: 'signs_dir_right.blend' +# www.blender.org +mtllib signs_dir_right.mtl +o Plane +v -0.500000 0.218750 0.437500 +v -0.500000 -0.218750 0.437500 +v 0.250000 0.218750 0.437500 +v 0.250000 -0.218750 0.437500 +v 0.437500 -0.000000 0.437500 +v -0.500000 0.218750 0.500000 +v -0.500000 -0.218750 0.500000 +v 0.250000 0.218750 0.500000 +v 0.250000 -0.218750 0.500000 +v 0.437500 -0.000000 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.937500 +vt 0.812500 0.937500 +vt 1.000000 0.718750 +vt 0.812500 0.500000 +vt 0.062500 0.437500 +vt 0.812500 0.437500 +vt 1.000000 0.218750 +vt 0.812500 0.000000 +vt 0.062500 0.000000 +vt 1.000000 0.312500 +vt 0.937500 0.312500 +vt 0.937500 0.625000 +vt 1.000000 0.625000 +vt 0.062500 1.000000 +vt 0.812500 1.000000 +vt 0.000000 0.312500 +vt 0.062500 0.312500 +vt 0.000000 0.000000 +vt 0.000000 0.500000 +vt 0.000000 0.937500 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.759300 0.650800 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.759300 -0.650800 -0.000000 +vn -1.000000 0.000000 0.000000 +usemtl None +s off +f 2/1/1 1/2/1 3/3/1 5/4/1 4/5/1 +f 7/6/2 9/7/2 10/8/2 8/9/2 6/10/2 +f 3/11/3 8/12/3 10/13/3 5/14/3 +f 1/2/4 6/15/4 8/16/4 3/3/4 +f 4/5/5 9/7/5 7/6/5 2/1/5 +f 5/17/6 10/18/6 9/10/6 4/19/6 +f 2/1/7 7/20/7 6/21/7 1/2/7 diff --git a/mods/special/display_modpack/signs/models/signs_dir_right.obj b/mods/special/display_modpack/signs/models/signs_dir_right.obj new file mode 100644 index 0000000..6597bfd --- /dev/null +++ b/mods/special/display_modpack/signs/models/signs_dir_right.obj @@ -0,0 +1,51 @@ +# Blender v2.76 (sub 0) OBJ File: 'signs_dir_left.blend' +# www.blender.org +mtllib signs_dir_left.mtl +o Plane +v 0.500000 -0.218750 0.437500 +v 0.500000 0.218750 0.437500 +v -0.250000 -0.218750 0.437500 +v -0.250000 0.218750 0.437500 +v -0.437500 -0.000000 0.437500 +v 0.500000 -0.218750 0.500000 +v 0.500000 0.218750 0.500000 +v -0.250000 -0.218750 0.500000 +v -0.250000 0.218750 0.500000 +v -0.437500 -0.000000 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.937500 +vt 0.812500 0.937500 +vt 1.000000 0.718750 +vt 0.812500 0.500000 +vt 0.062500 0.437500 +vt 0.812500 0.437500 +vt 1.000000 0.218750 +vt 0.812500 0.000000 +vt 0.062500 0.000000 +vt 1.000000 0.312500 +vt 0.937500 0.312500 +vt 0.937500 0.625000 +vt 1.000000 0.625000 +vt 0.062500 1.000000 +vt 0.812500 1.000000 +vt 0.000000 0.312500 +vt 0.062500 0.312500 +vt 0.000000 0.000000 +vt 0.000000 0.500000 +vt 0.000000 0.937500 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 1.000000 +vn -0.759300 -0.650800 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.759300 0.650800 0.000000 +vn 1.000000 0.000000 0.000000 +usemtl None +s off +f 2/1/1 1/2/1 3/3/1 5/4/1 4/5/1 +f 7/6/2 9/7/2 10/8/2 8/9/2 6/10/2 +f 3/11/3 8/12/3 10/13/3 5/14/3 +f 1/2/4 6/15/4 8/16/4 3/3/4 +f 4/5/5 9/7/5 7/6/5 2/1/5 +f 5/17/6 10/18/6 9/10/6 4/19/6 +f 2/1/7 7/20/7 6/21/7 1/2/7 diff --git a/mods/special/display_modpack/signs/nodes.lua b/mods/special/display_modpack/signs/nodes.lua new file mode 100644 index 0000000..7c238c4 --- /dev/null +++ b/mods/special/display_modpack/signs/nodes.lua @@ -0,0 +1,253 @@ +--[[ + signs mod for Minetest - Various signs with text displayed on + (c) Pierre-Yves Rollo + + This file is part of signs. + + signs is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs. If not, see . +--]] + +local S = signs.intllib +local F = function(...) return minetest.formspec_escape(S(...)) end + +-- Poster specific formspec +local function display_poster(pos, node, player) + local meta = minetest.get_meta(pos) + + local def = minetest.registered_nodes[node.name].display_entities["signs:display_text"] + local font = font_api.get_font(meta:get_string("font") or def.font_name) + + local fs + local fname = string.format("%s@%s:display", + node.name, minetest.pos_to_string(pos)) + + -- Title texture + local titletexture = font:render(meta:get_string("display_text"), + font:get_height()*8.4, font:get_height(), { lines = 1 }) + + fs = string.format([=[ + size[7,9]bgcolor[#0000] + background[0,0;7,9;signs_poster_formspec.png] + image[0,-0.2;8.4,2;%s] + style_type[textarea;textcolor=#111] + textarea[0.3,1.5;7,8;;%s;]]=], + titletexture, + minetest.colorize("#111", + minetest.formspec_escape(meta:get_string("text")))) + + if minetest.is_protected(pos, player:get_player_name()) then + fs = string.format("%sbutton_exit[2.5,8;2,1;ok;%s]", fs, F("Close")) + else + fs = string.format( + "%sbutton[1,8;2,1;edit;%s]button_exit[4,8;2,1;ok;%s]", + fs, F("Edit"), F("Close")) + end + minetest.show_formspec(player:get_player_name(), fname, fs) +end + +local function edit_poster(pos, node, player) + local meta = minetest.get_meta(pos) + + local fs + local fname = string.format("%s@%s:edit", + node.name, minetest.pos_to_string(pos)) + + if not minetest.is_protected(pos, player:get_player_name()) then + fs = string.format([=[ + size[6.5,7.5]%s%s%s + field[0.5,0.7;6,1;display_text;%s;%s] + textarea[0.5,1.7;6,6;text;%s;%s] + button[1.25,7;2,1;font;%s] + button_exit[3.25,7;2,1;write;%s]]=], + default.gui_bg, default.gui_bg_img, default.gui_slots, F("Title"), + minetest.formspec_escape(meta:get_string("display_text")), + F("Text"), minetest.formspec_escape(meta:get_string("text")), + F("Title font"), F("Write")) + minetest.show_formspec(player:get_player_name(), fname, fs) + end +end + +-- Poster specific on_receive_fields callback +local function on_receive_fields_poster(pos, formname, fields, player) + local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) + + if not minetest.is_protected(pos, player:get_player_name()) and fields then + if formname == node.name.."@"..minetest.pos_to_string(pos)..":display" + and fields.edit then + edit_poster(pos, node, player) + return true + end + if formname == node.name.."@"..minetest.pos_to_string(pos)..":edit" + then + if (fields.write or fields.font or fields.key_enter) then + meta:set_string("display_text", fields.display_text) + meta:set_string("text", fields.text) + meta:set_string("infotext", "\""..fields.display_text + .."\"\n"..S("(right-click to read more text)")) + display_api.update_entities(pos) + end + if (fields.write or fields.key_enter) then + display_poster(pos, node, player) + elseif (fields.font) then + font_api.show_font_list(player, pos, function (playername, pos) + local player = minetest.get_player_by_name(playername) + local node = minetest.get_node(pos) + if player and node then + edit_poster(pos, node, player) + end + end) + end + return true + end + end +end + +-- Text entity for all signs +display_api.register_display_entity("signs:display_text") + +-- Sign models and registration +local models = { + wooden_sign = { + depth = 1/16, width = 14/16, height = 12/16, + entity_fields = { + size = { x = 12/16, y = 10/16 }, + maxlines = 3, + color = "#000", + }, + node_fields = { + description = S("Wooden sign"), + tiles = { "signs_wooden.png" }, + inventory_image = "signs_wooden_inventory.png", + groups= { dig_immediate = 2 }, + }, + }, + wooden_long_sign = { + depth = 1/16, width = 1, height = 7/16, + entity_fields = { + size = { x = 1, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("Wooden long sign"), + tiles = { "signs_wooden_long.png", "signs_wooden_long.png", + "signs_wooden_long.png^[transformR90", + "signs_wooden_long.png^[transformR90", + "signs_wooden_long.png", "signs_wooden_long.png", + }, + inventory_image = "signs_wooden_long_inventory.png", + groups= { dig_immediate = 2 }, + }, + }, + wooden_right_sign = { + depth = 1/16, width = 14/16, height = 7/16, + entity_fields = { + right = -3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color="#000", + }, + node_fields = { + description = S("Wooden direction sign"), + tiles = { "signs_wooden_direction.png" }, + inventory_image = "signs_wooden_direction_inventory.png", + signs_other_dir = 'signs:wooden_left_sign', + on_place = signs_api.on_place_direction, + drawtype = "mesh", + mesh = "signs_dir_right.obj", + selection_box = { type="fixed", fixed = {-0.5, -7/32, 0.5, 7/16, 7/32, 7/16}}, + collision_box = { type="fixed", fixed = {-0,5, -7/32, 0.5, 7/16, 7/32, 7/16}}, + groups= { dig_immediate = 2 }, + }, + }, + wooden_left_sign = { + depth = 1/16, width = 14/16, height = 7/16, + entity_fields = { + right = 3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("Wooden direction sign"), + tiles = { "signs_wooden_direction.png" }, + inventory_image = "signs_wooden_direction_inventory.png", + signs_other_dir = 'signs:wooden_right_sign', + drawtype = "mesh", + mesh = "signs_dir_left.obj", + selection_box = { type="fixed", fixed = {-7/16, -7/32, 0.5, 0.5, 7/32, 7/16}}, + collision_box = { type="fixed", fixed = {-7/16, -7/32, 0.5, 0.5, 7/32, 7/16}}, + groups = { not_in_creative_inventory = 1, dig_immediate = 2 }, + drop = "signs:wooden_right_sign", + }, + }, + paper_poster = { + depth = 1/32, width = 26/32, height = 30/32, + entity_fields = { + top = -11/32, + size = { x = 26/32, y = 6/32 }, + maxlines = 1, + color = "#000", + }, + node_fields = { + description = S("Poster"), + tiles = { "signs_poster_sides.png", "signs_poster_sides.png", + "signs_poster_sides.png", "signs_poster_sides.png", + "signs_poster_sides.png", "signs_poster.png" }, + inventory_image = "signs_poster_inventory.png", + groups= { dig_immediate = 3 }, + on_construct = display_api.on_construct, + on_rightclick = display_poster, + on_receive_fields = on_receive_fields_poster, + on_punch = function(pos, node, player, pointed_thing) + display_api.update_entities(pos) + end, + }, + }, + label_small = { + depth = 1/32, width = 4/16, height = 4/16, + entity_fields = { + size = { x = 4/16, y = 4/16 }, + maxlines = 1, + color = "#000", + }, + node_fields = { + description = S("Small label"), + tiles = { "signs_label.png" }, + inventory_image = "signs_label_small_inventory.png", + groups= { dig_immediate = 3 }, + }, + }, + label_medium = { + depth = 1/32, width = 8/16, height = 8/16, + entity_fields = { + size = { x = 8/16, y = 8/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("Label"), + tiles = { "signs_label.png" }, + inventory_image = "signs_label_medium_inventory.png", + groups= { dig_immediate = 3 }, + }, + }, +} + +-- Node registration +for name, model in pairs(models) +do + signs_api.register_sign("signs", name, model) +end diff --git a/mods/special/display_modpack/signs/svg/black_direction.svg b/mods/special/display_modpack/signs/svg/black_direction.svg new file mode 100644 index 0000000..8e9b8a9 --- /dev/null +++ b/mods/special/display_modpack/signs/svg/black_direction.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/mods/special/display_modpack/signs/svg/blue_street.svg b/mods/special/display_modpack/signs/svg/blue_street.svg new file mode 100644 index 0000000..0aa87ff --- /dev/null +++ b/mods/special/display_modpack/signs/svg/blue_street.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/mods/special/display_modpack/signs/svg/green_street.svg b/mods/special/display_modpack/signs/svg/green_street.svg new file mode 100644 index 0000000..5d87509 --- /dev/null +++ b/mods/special/display_modpack/signs/svg/green_street.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/mods/special/display_modpack/signs/svg/poster-formspec.svg b/mods/special/display_modpack/signs/svg/poster-formspec.svg new file mode 100644 index 0000000..1aa8fa2 --- /dev/null +++ b/mods/special/display_modpack/signs/svg/poster-formspec.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/mods/special/display_modpack/signs/svg/poster.svg b/mods/special/display_modpack/signs/svg/poster.svg new file mode 100644 index 0000000..cc9e8fd --- /dev/null +++ b/mods/special/display_modpack/signs/svg/poster.svg @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + +   + + + + + + + + diff --git a/mods/special/display_modpack/signs/textures/signs_label.png b/mods/special/display_modpack/signs/textures/signs_label.png new file mode 100644 index 0000000000000000000000000000000000000000..fa38e6aa2a0171e4d2d7d84913dbaba2e64df70f GIT binary patch literal 294 zcmV+>0oneEP)p0002(Nkle$!veuwPTb3C;1hPuykB3y)jxd(aY`e*;7( zX`B=d#Y_-e^>|i%%iOdS+kozLgd*>?_Fa4RM^7ll7&YiMZ*Wj5n)gGu+$G~tITa&% zY#5k2Aa;Bq&+9S2cx-)s7&wdd;63~H_IfSWTYsu*1A#oyHy*U0b?@YIx!y>fJMDytS>te61}>Y3?c~j)e4w1nR|kr*x*3}X8ni&^ sC*vHChi3r?n)^Qn71qr^jC17jKhG0`iO65w6#xJL07*qoM6N<$f7MKTy~*?-0oSC z0|?U~FHC!NxZKnU(B%?6=nFcFFUZcyG!-4R=qXWIrF02$F54{g&}#aY84SJjEb>{; zE0m;4rf;4+!P5rkGW85-a0=hsg6TW(cUu0-kFf_P{`N#!1Z4aG0000eZPtcPCu+^E>$A*{Yru`#z?f(45u~4amn+t%?wM(za>yiw>22?y<6m+Z YKi}UVu=|q2PoVt_p00i_>zopr0O-Fngm>!JCysoS&y)NbH&C1-0TwmUu%+=*x zonDbznW2j@r%R-W^(7^wGWV(goGiR9tVo^AoJ`H-O&y=i={dR14^|YxHbxfailN5q znr!P$V^!sCOSVG=Z*V=?e)Yo-h+hn#9$XhVK)189aDXaEl}=>IvHuNIurJOjNHL1n z$kOS0qY*65@RuwD4d$J;Fb1@C1V54+5I_%OFo#8>hF4{B8vm26SKp%%{est-28c0u zccLK*5S)g2V@zQG*cJpU$E<->V9qJNCr+1~=Ld33%_|3Z=>cbW2mu(QNALo46No7o zw{^b7yigQoHy#&j$<+9@=9(p^`5xZc%f2RtoM!u$HJA~IjPWv%0d-UgD6+E|t!-TZ z40ztY#(i+8M4VrvQ}URY!H8|57l2!AaAyzSeU=AqD=`d2b^qi2-n)(UPcJSTq&>}p z3HN{yw9YO$oFORvJ;x?D#DHkXyRMznzXD$ zdVD24&2PWMOhnrP&Z}+;KJV-U-^{W+fS4FoX1l%oROKN?3r@&j%#Ut@ zG#lTse9g}?k>~J}N?A#3ptTNREspQY;Yho(v}K^6Wz|`P4f}K$q;t zEWu7U!W8?u_7PjB?jtLEn;)CD`P~mE47Qm6#St+K6E^tfjJ+kljy)5*d9%TMp~|$1 zwcTESv+0$A4cSDu=|Qg4*3AJXqceUTISiq;TKpM%!XmLm{_S|$4c;myrzgv z2pnxy{D9JV!x2ITSKs<`hUg9)0$1@JL|q*RY1?^pqQK%l&^Rra#|B1jEOTo=6O9e&4%K?-v+9yJu7URcL| zxSy-=LjtgNVb$4nOqf*p{O*sPj0WE*Sm5KdPPEM#c|urX9Hb5p&pq})qh(w#Cv{X+ z64=Jfkt;E>N`>!Rjx~U>nIkWR|E1Bspmow23e;(}Ez0V<`h|1fn}dU>yIoBX`8!vj z+^#B#q0|dBr&wR z=m&%nrjx;ruGj+twVR>(c1WA#*e~vi<{l zyS;d~y!+0Mn)Omm{8b!j<7%QvY|^FtE0*>Q-GQtD3o@47@X3Y#6~i^Z>565HX8-^I M07*qoM6N<$f_Ug!761SM literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs/textures/signs_poster_formspec.png b/mods/special/display_modpack/signs/textures/signs_poster_formspec.png new file mode 100644 index 0000000000000000000000000000000000000000..7b85bdf30bc702edfd1093fc2215bf158bd2a983 GIT binary patch literal 166856 zcmV()K;OTKP)DZb%{qj_md=%0|NmLUrO4>DHu@e&Pe6D zQ7Md8L3KtwpO2L*B7>qwN0~dHf#DPgTTgtot?b{E@nllzL~V;a38PvWyA9^?c!Vl_ zfz;8UHJe=>h)FWJc+MGSClmt*vcW4Or|?icx;AchqenVTaGyu6i<#YS_}jS%10&vv zR$|zDPhn@mo<6T$y*AN7tGzNW129dQX}%@eJZINAFDfbtzy?xE{-_&PXIE#g!0m;JYJ&_wdLGLup_RJN-ul&ExxjJQ&wF0CbDBXek_;J;)h9xeuG-JpB+q_Ikm!z~ zh6JdAYk~oG1v%`Bg0eCNzfv6wV<}CL%+r+Le)TE9p~MrSoY(EfOa{jTqvL=7{rg%s zGUuLY_7pYL1b9=Z1V(723AHFKg2~;piC`J3Pn^_EF9>P>oxHlmR)n*t^4`xUs16d$*0NRb6q~BiKM}AmJsd)= zQ+g^YzYzvPW|e@1Q<^M^6A33-mL^yF_89F2G+Mn%wlfv~2OEl45t z{|3XbRZ+;~1?>@$;*0M4{hmv+s@*{{gh1$WQWHkYq^WoP!thqPs%Sz~lQ3cCTb^Ou zBK<&Ou4wmI(Y??mIsJt!1nc>DNNeRG6~CdSv%y&F=3=EceNn20u%6SK>yO`mJ7>Rs z^%|tA(A=m%GOZlL^9bY|w89N2DOH z-HPYd7P4;4hzur9_n1TPx-DI5TqE{A`h?Q)_h5)jTFI(h5**XQ7Wz8Hl<3`^o^KR1 zIZ~J;6`?|$z0-p&bt!VXeh*CM65OCHbNNfIfFG6xSV9~NV4^8w=v=OYoIMQw^SpV_J5z0G!Yuovj6{Fnc12g zxeA06P_?g)-}KDB&zpBj0$iW6KY#JeFBI&}87MNg0e6 zTRErCKCCg1I_@M~Mj^z37*9^&e^^6~8V`)CZ0Pj9Z@CklF77+q+EMf1m_e{`82av% zj7h-q_3Qt>eE9+lSj_EFBpv}%&L$lKw2P5wcr}!~-8W?X@yqvbTixvBDI8n4G{M!u z12`YAkLjT>x&&KyB_uoH2i#3DMh#(;lO^paEPLOzf?Nq#c#N>+DZ3wvChZeq{;Hz= zS@{;q(9%2D6KfG{s25~3fVhfbnT-!&>yxxRlLi=Eq!2z(aw%%Qt*EdA2J2byUnjZ? zVncSQcR=UEjGYqXSKx{I%WKwPq=%}dvrj~b+Gwb?5Zr^I4lNQ18ShnaKFocnlOBPn zAdy)Av`!rP#{Y72@x^nYKtVrv7%=l076A;_%rbJ%C+?7udYs@030rs*|A5*7bSo^f zk<7%4;cpnLye*fDCcy?^WbfoEW?=GvijILrcd&#gkRN98>~euxz3XLsNG){#kDF%j z0k#!83VAm5I0c7Icr5d9Yj+>4_DR%XGPrU_;1 zeLCo+*?F)kZnB#vyf!&FW_PCo2Vj!6lCxMQiApXZ`+eAWW0Hz1y7 z4K&d?;j(VcKzQdQf#J2>##@&druUvsD#arNoq-6XV=6Z2ihN{)g~~pIt&5~q`Z;Q@ z%S4#bBXc!}KAF)$aL^VuPyR!cV1{&HnlrS*!o5!j0fQeM=d}6Bh$jN)QyJNT_3VR| z!PVxZA8|*sr^gxrgKZ<*-G(bh7C9D94>F@Dw3|683b6zVk4iG?0vBW+Ou%N?4VXPm z9#iw^M#-NhYXrUz%M;2j(y3|}lH?;X5=f63pj60um?jf73q=S18d4tR5pPg!RIbJf)K`&b!cW(#M8V$woKYe4D z1B$W}5nJlakwa{#%AfVr&-I;03tdoOy9Vk)WUfS8ZR$J4$#{2A>8$FQWQ2ln3eV?0)WL2XF?ku**e z>0rG8eYdDa@f|_I5Y<`QXMHa5g-}XqpMWzla9>NIv|?!{OhLhVZZ6Opq)3NXb`4^9 zLXPsD^Z`y%GQ=&%#IVpE!`YwSe9o|I3c#HzV)Tuc&0a;bo|q$$2%oAk0?9BbE5gfQ zdmWdKd=s1GkYw912!(23(%?a8fNILb7ep#-m=ie5tO}GhCq1Lt znq-Jj8R^6Eck6S5Vb!RpUN7e<_l!&$2)SnbAngbX3<3ZuTOqMraEq8<1I@=jmY;-xCo;RGMP-uV}`Ea7z|?x{HC4-X?(+TbYtUDxk0;W?k!Q zB`Y!BCIo{t=2b6NKQ?PJgsFHB=eK_divq1c0E`_mr`2IME+FQOE&%dJAfh5+DT-B_ z%!j8&IP~7NwrkW#^C<92plQR0mQihMC%I7)cu=w5+7vXAzQ>3O#DhB8^ zr$wv$fUFnrOaWBIP*^cXtxA1Z1~SQvrLJl^GG+JsZzT0h((nN@gqX#l?siFUrbV$K z-M6)Q%EUxE3(mVTEQBOzrEk-NjT+Eb2EPa6b&Ch<+ zwt2Q9fFdQ|TewygRubbSc()SX?{#jdsxmI?aZ4ZEtG;fkH8*^50dI5((j*mWW_Ow} z);6lL#jdrl0>=X3{3ycYY{mKx$6b5*fSJhS}%c{#QSKbRtsNV@~~J zduno8^#b#N3{vpz_4Kf6XR5XVwYb*87+Zup2}#;KJEGUo7f(qYkoLsx}ZgD4O>3rSW)3YH6Q|`!$9`k(yEZ8loPQSl5R; z!d@@RBJQ2;R>MX~+$t_{kJ!6(rx}j=_TCFHXJx?)GL$*jx}Ll4a8*6HuG3XSsHB4M z`s2EuL<$gCdn)l+h~Q;yC%FySQtcAZT@13<+>?|QF{Y-6&z%guBwujpXZB843l{q) z4T%_Wpb}lRje20v#6-ah*iHsTT@w>;5;)MPq%G*mF)urFgQOv1ZoTB{K^9;To_*lZ z#z#4rppg^Z^!v=W+7$E2`Sw0fd#YZ}25P0OA{dDv9K^*DhUF)tTc}86;ixu&f-{OK zy?(%ORgM4u|G%m(T>#l1ddJE;6~#^>$?-WHc;37N3 z7gY`@{_QV*v>V27k7-mP*%TQfXBpwrDHgoGex~znW;a1yi&CimDhCw${OcaR^J<#Y zu(JQES^T6+ch{#+-=Ne)9LwADIpFX|24IzOXNjohl=Vxci4)ofSge}D3SVU}&=hJ( zLLE%yo=}w(kLKec*kGqFUJZFUu9*%1+GQYD;C1y`VM*}5sTyv|y+BEC)?-weSyhEc z+1x>^yZ=bOOm;QoFwK%Sq|WiiC9C5$LZgt_UsIFzOr^u z6+I9f(c?VkO9Occ*NPR~&I$6nb6pz=N=^!1V7|@4NOm!p$9GU_Pe*bRG_H^v$th|> zjZS@|9=q7u)qw2~1$zw-3C3sMFIqth{>iaZ=90l<=A1)}7CAdL5=J}MP%T=m>$Cs= zZ`X6zbI!@3wB!3=U_l5(t$nQgea;7?pCloo3dUR`3_ zEGhn6RZ<5He}*1GVgAZ_bio|;O3^YV6dX;Ut7!}O0%pP5!A@e+r6dJ|4u_19ekX%GfRrpp8?7}nzq%fbRW_&D_)to6Y?F6qRb}x?h!Ba^Z zRR|d(rcW$WI_xN2O=MP`)A_zN7teaw^Ql@2B_f+W&o&S(_SEEWW7Qs_4->uK=T~VZ zNJq)QOYrUaz*P7Y+#2WVzN#q*AKU?Rw&WwPY!P7*TkS)LHLGe8=gw31|5CGd-o;5< z0)&r->Z-JgOJ)s65@|?pw5qRaRQUTdsLxM_?|xY|avO2-uXOW=*cdKFvw@HLDJLs>mxXT~oy%PIG;S zr;mmv6oN%gv3q+ceE^p#l9M%usd*}$qub5gv*b9rz~_a|<>%qhsdWfiYC{gSCc`9x zamdYLETJQSXP~#nP`Zki_dBuJX6C$%-$G{6RfY;GT&mjFIi48V-TZ2}$mnqrJn3|44&lv5pIc6qxi>I^n>F1c@)39R2%W|N6!^zo{+F z!d1iLr}}1F!EEp!+B>w-(xAl6<1-LA2rhTJ!9QiQ!x++N^ZoKe#iNaq9vdXC_qAtE z*{KAzY;W{jpObZ->uw`C5S0K?*Ylj4bI$wN8*PcbCJu1Eo*n*}vF}wNJD>|y1(=m> zh39=!;+55bo4nhy+iins0_?|}-?9W?krK=6S(ymRns$61-X+ybrS;hurnyHOd(q}~ zxOjB9v*v>=QW@z>(-T85QB28r$Hf}j(1PEho?SvUtdDFDUOC0tlQbEqLRi4~SSz=m z<$>V!-~SGvT&E_+)$fI&XXW#zvH><{jQQZwXEGfkqF$v}NfhIzn0mqGxfnt-xXq_N zfr{DbKaXim;R+`o{yx8XwnTb}lhmYgAPDZU<61 zzkA1&@x`e-*rlKgBiZVAZ;7XE$^&E0xz3_^-UfHIiCz2i&e>=eFoQJp^}IOCk*sZm z{MS09sW#w#EN6o_W5>Z9@f1mvs!Nhii%M)T%B4RZF^x!33;NM^7-(9!zfFW~PjAnl z;X`u9wEE_W$n?2_=ePCe&7-)VyAD)rJeN9*z6U((a41vt!uH!}cLNre++tngadslX z$eJg8J&_F{Mi6H}fVdrKRGQ&WNtBSMGILX1ce}>!Y;AJ;n9Oi+q z*XK&&I6tUqY{uFF>5_#RVj!zN2pF|U3Cs>C-n-=9YF68Hnr$$`{B6=A1_7FR3WfT! zbiEYeM^qL1PG0jy_;@~#ud&HQ@;qN;F_B@s)01OKS09x%d{Yi4*PPNS(+49+#0ei@ zL)oz&ItuZteNEFlh9qIa$bPWmUD602q$?!3f$+uJ@UClIoxmqh1!WMd5jKi+#!@rY zE!9AVl=IyW8)2!u1p@>=rJ13RT7jKpYPrp%zkcQ>8kd21$U7Pl_UJINdeQWvs(DV) zV)aD{ks6jjp@-o{VfWj{2*kC%I|Db<?yHY!dDYoT|#wRXg$P>;Yay&z62bZI^Apl-sPn-x zME{zs3)i;3+eF%UnmzfsJPQOtG0Bw3=o%uow~LkkSPNsN+ZqbPP+=~L>I!%qCqp^Q zcBZLgukQ2ZU5#zWIG%!|m>|e4fZgUC*X!d3&=uRI6$BKA!;>;2b~mz=o2!dwFg^71 zn-Y?l(~}hgkTUG5ueF&*H{;!j=@iMxxWc1Vag~`UUNW}JM1sNyU-J2 zHnLHDT;IZ1={obcf>S>F%+2I%lBR(*1S~aBCn9PW3}qVl)Cz?gk7^Yap{f}{f@_NZ zuZv*;rzo9Nho+qJ#JjN|GaVEw2Ijx=21M8}osssQ*;ea3F#&Q{Bk(QgxhVa`77Uom z>;AJ6AJVAFX-UKihFNiE;L zt0J$;zXQ{-OhH7U`t$5$bBG#YzcRf6o9<$;q)taqgQXZ;(X6(P4P%W&Bp2vU;!Mp> zc%C+LF`%+HdDzL*fM1H=Mr~$OzT9=dS!I(2QD?@(P=_aj$DI2ydd98PE^9L8_U`-n z>WFkvoNq_sN%Q=>+7O3EH$-n0%(2N6*Ljo+5FM zBHKgy=XiWCQ%|2b^VpHHV$FAQk0uvBD*x4sH2562TO1kj@O zeqC3oJmO~&tlAc%Ar$Sn!)1ixd+Qr(YC7;Ycc*-%?@4~t)7r8F`Q|sH(QH~uPn(RFiHs(!z|HtG1S_$_ z>-DAU#7B>Y6OvboA?7?R`5@u+CXIQX^|xd6lg6^bP=saUByXu3+E7s0?PRO<*(Cl% zBehEg!W-Y859p}MN; zXTwBN6;rr6jE(8Pt)xf;A-?m^zxiq9Q(Z!V8#D4j@>1vYK@LE%#@?P0S`I*K;>K?+ zA>O?z6IxLm3=$gBx=fj$6Ym*+QIF@Cg}bdli?Kz;b#*N@ER1f3D&Xij7PDk}nExMr zXd#FgkYY@34N{yn0p6r3YFb;y`AH1&@<^|W!q|3r#d1na`l#604>_Fx&sQ_X^n~qb zds`+fas(;`W6=P`AYAs~1H6Tt8clfo97DM+G_RjX?GtyTB>YlS@6C_W(0I}x_q^|1 zI#S1h#h5WrU~nmGGp1|kwAFyl<_u)zVvO!lI?v|OU|8TIj6%G?)TuYuj69dya`#3E z8xe77Me75aj~P#yO>{%*2U;<*$)qF6xLt}i0zZeP5>WrQF42&k@cdHsQC`#0dl;_Aab)JuG~~Z-9J8^Oi~ z?zA2Gv_NT|EPn~Il@oy(wZ)8%dQR620A4vXVb?=|g`1UvTuK)mp zEHJq!Z(~(5*qaOR5b8wKdAHG_2pu9imx(0p`^@HO2v1&-J1azgiDJ`mcgi|gCd!P` z)aRDfA?;u4zpAi|-n{;HCkxB9>^-(8$g6q4I@HQIQx>=ynK|@Y zZRB0&d%7&P{uK&dw({Y(3??b(a42Ve-DzLO%!eRf7-fVTEHG)!`G%%JZP4#0)0ZQI zpg-=wdq};o|DP(GaGSXle)+3#*(juL|5b>zC#i%(M!ZMJZ`N7{a47JCJSil%WiZ>m zcflObTHf__?NqcUkVt`#HNGPhm=;uAj%%b|FH=f_l;Dmi$Nd}GI>ZlNAnNxJ6+^N- zp8z8L)S9!dOo|CdHG|+=wx_>*n9ntX3)^C^2!V-xP=^ZQ&z{7spSWes)$P^c0Y==o zlDl;SJM_6)WLSU{B4wle_g6+-obL`>_KeD?a2DY})F;f4WhPRhRZE6F;;!+|-gssi z@|xTjfI<(qaDTPLb8;f-%9WcCYnjoDl7`Lc-U&(Z(TK-W!t#p9u{id>yaGXPU$Mzg zm*y?32D8B05?~0hl)8)^34+KxjNoVyU=C`J)u}f!;yVam-EDXaK!F=+3fVeL7eD^y zt_%la5KGq?f*N#6&~YRWKa`l#XHk0BLIrUO?sN zFQ4a}Nz*r>uNyw^cFLl|3B6@$d*Op&qe*^RNzh+2 zDeKNUu`V%cD@g09>jpaZz#Y;=XP2KtYStkoLa9jLDrab7OtNG>vwFwO;(b|^KW7?p zkNHeBIYUQJViu!}2&pmdcz#$#pn5sKQj$9-MR0(t!QXVUJ5Gansba#%q=P_D&LzSNWl1Wgjx z<3E33u3#!qe???jQJKJ`ybgtiU-bCyH6+YZFmPEQ(3&l)kuXyBO!W*ovUfWQV4S>}s_ zD`UaWj^oKA)A@vVTFGTvTgdY<3fHi;H@1Z0~l5^{2z@vI*$cLonzgkP<^HQ3i-k$EtaK9P; z0iR*h?8dJ3)MQO(D0hg1g9GC!XT~JxY5FOSCs9)blq|9)h^^Nnf>rNBw9`6Z&tFnJ z;vqZH`|6E#N0^*8xg`ggOz_A}fI7?A4YfKX^egQsD(50oGELJX;YBi+*t4n_NLiEo z3gnBedPWYbqc;6fWWbh{6p3vmmJS-B%s+RxfNVgUjU-013@k)Q)5rXEGP?d*W)0JQ z1lPG(*QrPfNckSA@@h)?YQPwe3IHoU?O`dfR62l?b&ZyC!cg~pLDV#S^H7$Hc;C7Z zh6Zb;;hUu?#DzJuQJHF~%Pcm2D<9Z|-LTT90YMaOlp2D$>Llu4*OCNhle4=iLTb0k zQ(reC!`KSnn8h3yu=*O~Z@>T5{Z^{-Z2=N1NXQza_gJ{plor(wBw>#S$?CMLj;Da@ zLn>3DdmbfETmThaeFG?kgh&T^DJMb*f7M#iRb2oqHl_~{BmtZ&A zmDo`l=lMU|%_I{>*5G_=tSbsweOjtS7Iyf4js_shccDC^YBRKnef|Ic|DS&P$&q=U z-4IMl3XPx3>aCw{4?6&P^px>AFO)s0GD=|UY+Qx(-L9SgW;Yq;-vz2V5=M&3Zhx0i8`547Or)Ca z_imA7Y)-e-^TZZTA($vNHPh0$Fon`A9cO2xY}A`P_06&P(2MpEq7qM+#hoP?xOo|( zmAoNkWXqKArpM>!^CrA}>;*uhb*plk3uL?L1Vpc_YWhGxMyMfCRoIU4B0j40);244 zEN-T>P^^*nnwobC~zC`H_SdwtN2S?LDir^Drg9cZ}VDRf&NjhTtT2tN92uiK4wF_h{ z^2CPyT50_eV^@>N_ve~mN-|pKp8jOEXoi^U&WqfVDNa6{bF%y7Ze)3`!Y;^&Xq;i| zcWL?(z|{x}oJXU-_z$5~{s2gc>H%m`ubows-%4E@fBw~fy$2tB8Rv)j!%1I-a}Zpn zs#f=es0l#`AvMfs+AIbU4lE$^h*EL4T~;@1+N{|SP7}mkRhc&HA@HLlpJ$wX?qgm% zRvHjEhd!^RU=YSai!8aFS-Z5@{jck)S)-&`G1KuB+WY=E7_du(`~d`JePIuR6O%?5EkMkZo|h>^^a{_OAY6 zKd|JO1JB@+TZvOF!qT}1TuXYiPO8H;Bkn1chDpoFg)LiILl@f~(Mk^2=L;jxDPqqu zPgm>53_P^31L33c1c;^ZuAh70`^EPhal6tnOvo7a`H0&YD_OC#Cp-|$9$KK%JKmdO z4D4O+U{gHSyj9N><(O0EB)JqdIijtxS914@xVOZ3RN;UZqBMF1=o+SFuA((nFHvxs z(@m^(DAp<(A^#Eub$jgic85}_!->b3=Il1d_# z&OoZUgF=m~w8F?r(m?k<^{Q#Php$b8vfPH3li;4?4?pjP^7;H8BhK-`Sz_}| zK~;&}+*4|GCj95lXJ=OQ#0!x(tVJ9p(<7|u6;mfAp|CDt*IP@_a@e#N)2(y0>0FpX zinE5*h8ZriqXA}qjywn%=;Ri%zdD&KmJa2qm3m?oUX1n8nAm03A)%K;zb@t7w2f4+ z6-i5CLHXmZRni;t^(grwBrCX3y>!TNUM5GMQbm`07SI9P=aedpZJP9lTdCURUAFyN z-rO+no_ksnv$Z2mGl19?4_)%U*v3`?nOc`7kJ|>;Ov?`p&TCDZ`jM?^Vl3nfbg$hzb18g5A~<{4sIv2_MEq)&V0TU z;1VvZ_4KJlhi7KVqrOT2B5vyG|F~1 zNs29y#MU^b1>4$Fj~EfA6`c}6flts^^CWmLoC>aH`XTG3Pv_Tv^UPiIms=-+E zX}r}E)ixZny1J6@U{jYp%|>3rbvl{I$v_0yk)Sa;=7EdTC2BT(pX<;w;-V2$RR%OtdSet1L(|WtTmc0pW;+BC>-e zDl{QK;Y`G6rIeUs9VH6qh^N$JpnSF%(i^)ZVQPtg%7KIh|F7!El|D;8S>{;h6P5xU z+4TL}x3$Y~D|3O>3ajgL&k+6c!}E{J?+NMM&%g+ zF%b8fP$zeFW!NLB-;Y3Ig)OJH@F zChM@Rej4VOweg|YwnhZE=lkMb{3dso%Ji0|5KJ&EVpm#OPZ!vFkwSf}Y-Z9Ux&=59 zM>4JEuI|aWSo|hSD3;5PJu~X6Si8Rk5(pRxB+iq9UGm+cT6Wh}R3tO~g&}}0=Ub4O zse-OW6}n%`h-FSw#pN~r{G0#ohc7?P)GruB5Z22|COM8VuteOsj1raDT55ez8W`|y z$EgquKA-U_J5n`|#k8r&=2`G;&PUGh$}=iKT^jY_B`sOP$=)8soJ3y+7wbldvaPod z|8gWB-yqrDCh|-dsx8JRo~sK%qT_aVIew>$pOymhPR`*0s*lbtGV*N<0uj18Y#xe3 z&}Z!qVI}``=@}lX*VEceGof(ny0F~DR^JT8h%R;h?m#mp#InHx?r$fyC&{uOi_nRHuyg%oDeZI{+jO*d+~;a(0-n;6 z4QY==FlrO=%N|A1Hao5M zV7OaxLi#c#bLO7gJRyIVO~eIM5l_D8I=1lpzti5V669nD`q!0_qRG1!e@-^GO$4W; zvCi==0thig+0jMp604w2N6E$8wkF)7FBSvpV&Tqoog0SZP9^rbXXFr?tr;$v)RX;f zDMg!9LPydY?iKlP-em2}eYoL`hN}O7YY-!vn{j5Epb$+Y{$dlXS8i-2b6P~rVAFZX zVZ>$omhvgpSCHh1W#^W;Li%&ZiC3TSo64G(%ZZJl`hLw{S(B*r zNqX`6E6bQDX@GJC64g;lHW@b2DxT_e7s4<~LFi?k{)2rHx9ZcmU3x57fR*siic^~Y zyvNZ4Y0>e|=QA519ySTDtJspeq2}k89TcWfz`#C(moE6nnKUrd2vp+A{YVyNqA6=E z-#0tJ?0`cVLs{oI};6T1?+pJtU31~iPVHRM(?xtW%0hUC~4pzA$w&QZ~rq= zJfcOF!rMTzqV(p|ewk)r5vpK6vRwu;0VB-G5>O1ciX2PHD~kJBd=QQjfbb=TV{V)Sp24Q`b$N;< z%aesp+N7THs9`%(5LEMLRfPAdW_Hw zI=^60(_x=ye|%O0WN%;)U$;C)t~Pdv{h4Y2$#FNiB^mBI4_Rm3he?us3|oKh1T>{^ zX|-p+BYXNh@3r^g^JF+p7(Of+PmJ4&P=MJL-}=`prFCzMh0t71%%wT5FL`uZp`+l* z+rk#)$+{C>UnZwnMN;otQ529wr7uH`+R_Wmwh|AqBI5KSYIc~M9U~LM_`+IyNnMgr z&W+igh!;;QJ8cGl;woxC2?O;8sj|gE4PIG9Yl|Hb?eg8e>zeJG4G-n2qqdN5oJ>TA zfxTEla>79JiVb`tl+*L*Gz)IiH;>uBs!wy`S6L)1MdkpX=Lb5DO&hj*Bn7oIC}d_N zmxV3UbG`Qx7qRhmiWC2aDl)c5L8N&OQsj$+{%|nX{+Ds3!KS7~R z=d840Ht91&$5YWMjCjEKK%w`-zbZdfyXO7{7i#mMDSW~0@4deI9_-=&@xT5ruR!HB zJ=>XvK-Y9=*k$!PZ1%W`EROlxN9!NXAmtn%ox2mcRTu0(rY3JcbMaKuQ{oJG8k4242!3<&`1`R~2@!BlnWZf}9 z+}kz)l%yywN?QAY(u^3HQ4&8Blo@OIGGzB+mJ~Jjx0U>w%eYL_|E#Swjt>{*t~@2M z)STMu>D@xkTx+3_r7L?f0{7tH0|n|zBIBL@F1T)32NK`A{AI={)=!0~%`nj3j^3`< zED;AOL*009E!u}syp|O6r;zTXL$DQzZG$gZLRZb&)gl#0;QA9a*-IJ?=A?&nQ zWlrtm)6bY5=BCT+Kdk8K_^;>lH4N^yM0_p8V~}#w6q`>2CtBAZMcO!2o0`g7z)bd0 z(1=ccTETmbXstjhBCJBtVRL^8T7T63j=>saQT6)u-kOsJl~oL97p;wI{lV3~yu}OOOsNA`jj&ZNv5e3iumA%tXm*)gXp;`UyF+UIR`p3lmy zhZ1)#U8mc!A=yyWFKt#`Jj^j(#Df2EoL^#~Db7;}Cq0mw#b$Xg=nNytd(Fk0gead2zP#8D?U9}kcCdw1$yaE!^*pM)XLkm z6>=F86D@+C$8w(98hW9oI%MdShsd3IoaYh;FtWB!kke^dYDlWsqr?NM)@QlVe!nd;csnd?q~*04 zGy%ehoZXPxFYb8T1wy3X72JawRu$1GK&ogAHt;YushPWM&S_bE37uOj^XO_Fn%lfdKl2w%IvNGCPCCjA4OGu8J zBK9$O6t;U4zHzpc95+y5))m#8IKtRd_Uw+YF<6Y<@rgBx3=7Fo#$uoQCd9MoW%aqy zu7#P{X-?qOW1Lu%&P}%!Q>jV|iYx%0R5dM)4QYPpgWzH@9 z{g1z4<=y(B;Ae+J+=A%!`FYibl%q0@&3b_!hqDzMCigS?OY9 z933QU?m?VFb=OhV8Oc+Y*W3}{fFGfFS~8?-J3l*RVk+kHYe zvYbl+R_ot8I&du3l3>#tSz$lUCU4**;RK2C|JCt(BdGzs(J?}WQ_yd96}z?9UNy3B zg3-2dW#1O-!G1lj%?J_rqKP@MsvkkhlY2)l7@eD{`Bl?<)2@KAL90hi7TD4(AA5&> zc_9O@cdDgsoi|FkE*^z}v@>1#bBZShiMio+aP?g5j*JK?@D@@lQj=iBK;3DS14hw- z8#znfQ>_K(zv?NWG)B|o9&wW6!hu^7 zBm?W}ghhlfar<6r`h_8DS#tpCqKZJ z=`hIWT$V%~P@2Q$Qh$ymasQxZQ|V#u1>NB|JCW@Em3+92AN$}bZ(I0-xHwwxiD`&P zx=c#m9fSbAqYc2mdc1MAE|<6P2x-u*t#Or0;~E(HKPz@q%-h$GMY7kWO==+5P=k=W zvk$PD4qrVC$v8$muPlrgPTlW330N%clXaRFa$tat&+oY(Sd`Hs_eT z=7t>$Vp1=y|Kze0`Q3ojp49T2T=)BaoIVWqp@s#e(Rs;Y*%(YjAX?D}cz9j~wi%4|xzkkU=_rqca0Sbn}rxp5f zTOxU$$&f1Y!L{k~m@^S5-~%AlYbGY@1aobc^;GB9nxF|Z+oh~1s^}Hc7A`Wrndr%& zNpI1+K+VGX{KaMzqK8G;4{CtM)YiWxD9Qt>;4xS&%5Kf)-1m5bl9CAb5q@uRlRp=t z>_V^%rF3Y%MQ6;|qf!VOn9HBd{D1k)|A5bVMNbtWcYPjK zJP!nQI_vpX+=j2;#b+m#Td&wO$fp}8t^1vwC#)inj<-gt3ZCtIHsP}BDPG`M*D9IU zVG1pd(NZ0!Fm-yNv=>dS6p=N~Q29Y&+@ja5@o_RULh}LOH)1&EM)>jb`zLxe#08?i zH7iWY~vV}Zu@IEbte8o zg&ag@(-+a$QWZ$52+UG$7(%yJMxYuLuUXAM37UprHXKxBdN`solRHbyHDEQfPI}Z$ zd7PKCd9BJ+5@ETJ=B8FFQrzRd*_xuuqgecDyjEkr{k7Ke9Lvl@GUg%xB|zH0nMfhC zxnldvYhwiwLDV5V(#f_4%-5XEUKLF9+0fL%smL&NEx@e|@F#TM= z{q5_|;~W}0D);KlyB4h;cNHU7p0z#=kGr>79{>yt~ML5rZ zp#xQ7lgLIW^dNc0_SxT=cD$PMW#6XAtm?~)?DBJv@J1W-P}&$eG&{NM9BT8V#py|- zc!d^de15iWS%UB-_ImshdJ~$a2HJZ=WG$+_`8Gzycu3=7uA1|;s%2_aApbVZMuQcm zS?uSgA6{spT zG`LqhYO&BdzActRB8qTWj>i%3=BYL|yYJZl(m2kIf0ZP0WX(w15s9Wt#j@tc>tUm~ z_HZ8Gzx{lUN-1i2o3ak5-5W*GT*9NQ0nv=oVh}9MZ#Ladr;f*uKitgtJGpzTZB#!_ z34TtIs2nKFnK@Gjoit?9yZPCjA`8Q%))0>4t|NZAA72MMoK|K$@600Xm(@2z0Ak3x zW-oidMKb<>Q5j-XM`EW$?fjheLGyt@2REY8TC<}|)bbzpm#HJ1)YekDb36>GqQS7a zo3>&5pCK#P)s}$H7z8|^Y)~jH?-*P8dfJHNlxl%x=xhRUy6!pL)jmp!!K|v9T9_C! ztKEvYWRqr#jD(gXfIiyavzty*a6~W!_wEsm1;+W@lb+(aLw@Pn`l_>rWxh+Mw|^5e z0yMm4IkT#Dp};#_00vXlRfAhC<5>H*iQaXRluzev)Rn!{bs(`V7BF_q*pV|UxzME)(tuPy|}7g)?4?1;4o4<-gp}IB6tm_D<=Og5^4bfhxqqr(*b$^rcgaewg}Ve_$S*V{BD6 zxZswXI#ybYGkO-=OSJY%3ej`fDiyA5n_bJu@=Dz)fLVM+Q4r?R@HGI`hi9 zk7cfVQFq{IiW%DR-bFP_V!{uJI8?~gn!EF*R?0S#c-?)8fU!7>W2_@=Mc#XOjE8wm z9Rz%R^o!=eP5qkSddGKn#)iFzui)l#w1{yRiX=Wu+1s!!>6Pt$p7l%*5$qdtT*#zW(c9w_?E&alYWF7#f!< zu5;(f#un8iMVF?fa=V&M$}Lr;a}P%vG)CCo5^`tRJX~MZt(zY%|AY6~Deh&-qaq`W zmm5P^eOXGY&1u%{a;`t7g$aqvIlO?)<4g?OCa6WTT_*cN>u;E4#JO@l>Xlz9lYu-Sss;*AP zOy!2}5-v8pv~C-8qxivYA@&TI01S=HhSQ2zn)6T*@MxPZ` zjTvecW;k){T)&6~asKe}!;icyb&KUb>|}MqPL}zLcil9c+{29MGbGmN97oO;R%oWi zXeIeY$4;-Qj|nS=t9L)^pvc^;>eUJ}aDG@GcI^Gz0REcxw`zb#q3;<8Bt%P7I2>Y; zqb`zbp_I`*yaq)k2?Sgs3=G55ifPLLaE2B3>{^$c`*?&NLQa!IqB)DxB%P_H-H~Z& ztw<5Ip5It4C7x&bsTACbs8szgqNf%+JJM0x8f>ER@0b8A9sydXwx|YbZm)oW+khVk zSzQ61h0b2E+e)H?_(+P0bbJdW^$FIb2sSy!Hg$zAL%&&dep^! zBW94c5_N9$2-rSDM%rPRYCXr?L{&TGwCeJ2(O+RZ0 za(}@-tqhg=h3a0K{iNvtFWO28S|kNdg?{2i%l!5Ius5*J=fpnBj0iE(O1)(hX074O z;}$RhJpXN*-8mT zFGOne!Dum>qVb00N#XUR-zYU8zIoqaK7fL2QJ7ISBj z=Z;}>JiY(fJ_5Sm)>ms=<2CBEYC;6>#n}qEyNZ*`@E(v_TaN93(f(GONbHJwV5qqR zF^vSsDz0@oxg(VgA&|5{Y2a+eDp+H~hRbxqHBl?d`#l0@3una^1r?NpdrBwc;PXVL zY2|^p<@ASYCsLNvfY+K-c3X6TO(m?bhSkQWLLz_uj-JN(Wqf3S zGxx7oJWQDR3TG32em<2(9pf~1ed9NqSw*CxfNq@H==J%z)qc;-tVO~Rh8rS&L$_ch zF6vLG_{*<%UX1HQY}Vokhuhl>oV`CVMs+S0ge=nv6I@U36JHq(iGt~tv3j%ET-R-V zUNE1962Fe0sTzMUD41ZaUI7WeObv-V7HrAaWUd;N$?s?-PL_zFL+_Q1W=^l~*M z@pF_y{=g!c7t72qv*yq@^POcAwX-CBTzrM@j!HZGE*m=ztpx}nFrVpPpI_J(Tk75ySPcHE|8ChCQ0vdKgMkI5m zTYS%=?!ALm2*1rAm_donBC zAX&n2-x)Cen$OL1DpXagzSp@9g%`UhupB6PKE~@ulr`e8*++3p1=QS^;x)SGP z35;7)z&k-bZ==%kYfd9C-7P02X|*B>YJ;GeVoBAIZ}a1F5cwW+Fz?iaDQy{fT#CBX zQW}`FQU`BU4rUR-#I6xLiJ3INl!x@U>dEz?F*g+2P>$YQMyo@vPyYMg|MZ((Bt9QC z2QAQS-ZKkKe}De|EsoNE`i}}_sc?Z;lGH%amN`MIBbTxp*R1Nh zpv=XpEXV`lOEfNZN_qAVE`3~3!Gi7URD z5=6|_MB1fL`&23{1y|xaR&^5_*Xi0t2Q@$|zx^Nzb5lpRn1&kkAZQMxWhn$Ij*I-f zQhG}YNbW{4{%gdh^&O-qG_XvEQGq1;=oG|YWEy77ITzJS___8>hlsP9Gcu^R#llF? z%89SoIFtgHY6PxZ|5L}Gs07p0pNH}cgm~MwT!0WSjTg$92F?gJh&e@dx0vn!Q$ z!MiDKzlI7Jyq99EKFf?-rR_xN{(()e7Gh++IDwSW^M0q7_@L~mh)^jl{#NY z98{g7v_^4>g4wGSa3Uge>I|e!z%?6EofbK%n?e4NscB`<5(`YyI}iN*kPqoeIgFld z!Ns#gV`J%f+-J^rs7|puLG=T<;;nn=>iR&3t`A|-8dcIZ+g(O0o8=4;Q!JT1%0V($ zR;?ABY4Nc`Q`a>3FfLu9(}i(K;Nm?L0GHvguL~tO;BevuqBEuRk1f)V z1;7B4v2i6XQ-Xvx=7ij)x&>_46N6&s(-AmtjfyJ#ld_Ew zJZQIvQ=paZ>n(l;MM`94vY;8YZA)xu|ZUG87t~c00(#zooIq_|O+{ zFV2p%1HtRmtH_ciy6XdtJ5a?To41R;J3KBSIU82?;{4%;Z~xG5 zX;|NiWkhG6-+!K4|L8d4)$vZk?&7)T#kF`D)VwscuzZl0AuD$@rfuYkuKBOo71-i9 z+XHO#G^e&o&9ZP7=-O743Y9w7`b(!VCp-K3oi%cfkJu>{RMI5p_$nRXTvH2i7}AxUnjaP*8L&9*0yDx1mzKZw*s2;0ecOx~y<{bV}WEvR~)U$)A1Sc#L!wd(;F znGQ$m(t7AH$oyq~!vl03(;MZ~t*KF|fX)V2Etf9ThCv-~-}BLX10!sj)+&{wX4;J= zDWY&62e)ZiB*%y%rSsD;(V{p$?0KSELQV_6!9=55NuB(*(e}jo#YeTUN%PV`+#iUS zy{zH4@89S&U?vg+9-p7zpgX`vPikH|2(@&EI1!CVI7a6Sj6w!2Wq=d8_zi4*zoe5r z-0MT$MVBoOm7=Dz_&d0fQSh$Ce?p=7`1pY*;%gNfQFdKE3Cebyk)w?3WhW7dl!Lf4 z@&z@w$&ni2h10?^HqnkQETbBiGiUzt`(NG{J#z^oy_Ec&2>RPwi#%$_ar^&=%4*fI zWn{Mvv-MO%iPvh#rBI3xE*FP$%X~+}yEjq*sAn1R`MDK14>G;t94doXP_fcZhS1BO z?Gh5V=C1=urn5D*5!Mwa6%Kd!klJCIj84vC`WWI_pp0sQ=0!M~tueeD*=DWBd_EVY zD#;H)tI(Enx!jA)OeGp5A86)8j?ExEW7y*YoplTu`Mfes8EG)YNIo=Pb{bt`=XBxh zrP5?1R~IjDr1^JKHl;cCIDLRkHKeBBXWt-Z($lZ|6plFR~9WzE^uR zFES^W_N5R5HGH)@Haz=UYYp`0ZWQK_mFgh5>~_Ry8aO*Qj_X0`oK3wO$gek%WPJZC z5McnN7ZOpLFd~W5nw44rh9{2R%*bm87V7Kd%{Vg4>ZDRrX=A41MK>h;g2sRG8jE&* zoP+6lJ8t3C`bFwhznsk;?K^g0yxVI_CM5%1SANT}b^S>_6St-wOow;yp zJK-=hoCNtJY{yDY1u#uj)aC|nM^rF&JIebIEeXo)-`w{n;AOD8`|Pwd|E2K2f3J7Mys4) z3(}fvb7}v6Ez9TU_t%}Wns%-ma{Uu^O}pDL<0b_v33G0 zOiW_i!qY-OIoH0hV!l=LIP<}(IW3wW$u=`hlEpWtq zo3*K3`J{xl2QPV@dF46WsIYS-#(Vph)75ODUE{BR_|=}&618o5(y`!N5WnqivbBp5 z%r$a}V_bRt+_qUBXASlA+CYpFg%OJzgGa-E0zt#E<9&z)Ht5>OyRFju-wgiU)%H&W z^l=9VU_{+}SH-buK?3a4mT_XY&+B=|$*)0!Yt66!`Wi88JeEwTiD_X9_SfGSsWb!B zM_N@mnedakBlqQc%FuvC!(Xhm?uO^ky}I0wGF7&K7`YscREAfu=EZs=<>61JV;kLA z+_cxM52^1uP1Fj{aYBZ+8w>CS@KI8`>;XBi#=M5jm_MiC$h_{gnhuis!?=@io2w2d zdgw*2>%wS}!Y8BESjk70q_*gCs$4v@krBhlsJ|D`RWq{QcH>n#b4Dat(zfeLJX;xf zGs=?lKS~kB`lccW_p2nXx3yN)w+%Pj;!2ILQYvuaF$^7u;0oQFF$M|3E|StHQf=+x zEf!DAeCZ^Mtu_84F~`_-?!6)rBO;slHNmWU{Qb!5z`qS#)%vxSA zIbC}L>xbow+pQ{SJ@&yz(q0HT29S-s#vRn0P+Du~>o^7^hNwfG6Q25xa>u%6k4ZIQ zOa=x?y%ipQ_=$lIECX{5$314EE9*VNG^%eAvo_~Gqm+O*x!aG&xT+!{s|d4e%jGyi z)`NgTpE0}If>sxqyLM`ueejN5v`y3kt7b@y9Q{TM?PkhWd|Zw!2t*w1$bN%|OV=3n zB}G$Z`x<2wI9{I%TI@JjDaZado%NDp4@o+h3)&T|Ic7bcV4>mxYD7 zfg=O7qGhf}lo$ZafnX0%yeoZ(Aep32K@T^#8X-VFl5J9*bST4D57fg$4BedNFfP@I z%8RM@4X?86JoGrN(n=GDQ0x6~iMUHO3xW+5UsRP^V&m8Vl9uTs+BK9&oInLG@(0w?~=MIq_I> zDqS+)fBx6YhDzxm^5uz`$5kfU*j2P5%Vy>aD@b$|)k3Oyu5L-lG|VgWT{wpunVMKt z$C${6+CwJ^4;>eJKY3!KIL7I^#DXG(Aa-&$zKju;+jo34c}76s81n0RSyCt|NHsUQ zu-Eec_J1eFqzC41OFq?$6Wm>dT^^RMjVVQTE+Q{3IsJnbSo+jFwK1Cn4HG~cuLM4= z`XlOEk}N}|yRK7y_b}5nBE;!dS1`Zy)p{R8ZzUuCa}L!}b|`?WhhRsmyAL%(`b2C@ z$!ZFUQ!cKj(~KJT_+;!m?Mzn*N}ApJl^QY?0-H*f5mTee?tJds{si71zQGOhOgCc@Ov}hNg$}g#W-vJ~z)u;ofINoT1i` zEi4Q->yvU^mh23CgMyUyd+KatGV3So*f)EiV`2Q`&%X_2BJbHp`2kX z77ZL%r>ZHZ1uAroQ#}utM_wN7e$UUnPELx9rWNW!0)A}6 zCw7C9#kKb}e&gO?_;4WAeYYuc=JW;l@=DILR@9WpjaP_+!dil|6hs)2sH_a)KH4=F z0|JJJ>#Wc|m&kjZ)JMy9(I2}{Z1q?-`DGK{CXz1%XgQtqkpRc_`FT9}61X7G7pd<& zi^5YCvZ2xTOFF?Kj*`n-MZNPSd+@ADHqYadO_U~6^cTX$IRW)({DE+^F~xu>1Tf2 zJ*#sJkVPx*hSo8{`Vq^^*}ga71)74%ssje}Jk=p#r?O-ar+dpk7O=noUyy4XXRj0X z%;1gLO!Zwdp;|}9@D^=(qlA9DqH(=|aEAAqzgOY2x^ty+kR(@NAdTA!ouU&4h#E~r zaEu=x27peN?Kkp92nu5;7Smx7(A`Ay@Yn#SD*e1f6&mv|HWTW}L__qS;?06quo=B- zsn7dv9k$#RC*BA48w?5<5s9cu!j4$WR=8yB5ZzN#&Y-$DS!(D6c z2WyjZ!vL^+xS|GxauOGNM$=kjEgFI};kuDGz3=w>w{I^qZOS5cp^*gwAluE|?&EUm zSs{f+ZIV7Lps=K*qzhL?+lNw_c{1x^pkXc8s=LVR5?AKh^ch{JwI`B>lYZiJ>lu@u zI}a-8LEV!eM4jw7VVQq^f4UQtkvEY{(=XiKK!C3IDuqKWU_BZaC_c!wc74>PKU=N` zF`=>BT)xY*VSjq)mg;XwXdqhA&7o$&e`i%OABKbpXEjoNW-9V~yx$ainKmYn($vid zB(ejW$X5#qMSezELq?jRP>krk>%}`wt7j~t_UxJxWhNCQZpwx|MXRZ&SxMotLIO=3 zJx!Kz1UiI2cr~^B{+g8Z4o5BFBKDtmKQZ3S3v~rB;rKjHH|Z=8L{(GB;#Isnxo(p$ zG?idE$)N2Wp0?)NL`%n@S782(#gs{@8`VW;XFUI^!B8$%#@!;w)ChK2RM3Rff1(Vr zCPh${bCWz_7R~Z??-?oz%e-y!2FY6iu~t{A(spLJ!P*^bHL==`OVDl!t>eJG2CGh9 z;akno;56Lf_FA>EQN6YxcQN7|$4UOH<I7eLDIjQbM>DhUuRFV9CWj0vG)$uQTwxTD|Xq9$hjqEj}uN6Za5kA4S zS0)j|`ElN}OE`Ot1$V^YbzK`|IFDmE>B}C>Ychoao5*Y8Y2*sGYl`n0*^Y|h-7eM_ z-^gYZ>c50|IDpM^BKa_93O9vwz`BrllRMgr5Dex~+OElZD}{!zc4=_PK9P0p24FBc9@-%Va8in3d0LjXGh0?Z2d`g) zRhvAcM9mLv!`LQ~MUi-(Q-K1Z9G^8uYk8A~z7fyQyEf$ARZ=-k8SE|;_Unm{J5B7s zd1&VVUr%Jpp)vKg?8vn#A%kSOA?R|j%--9+w2zg<>EgQWbGJjM(zx_uwuXZ5r>IyGu-0)=Pls1o9}ujkduh9{Z4AKF+~qx^Ep2_``KrlAGN6mX4q~+{6Xr|KEgFQ zsLHY*8jU|MP`TA7!^?yv(QC( z|IDMPl~%#UHANqbp0A>Hg$CZk?$oU$p!6#1I^DWHMuBjjxi*U*cuJBCv>NUK;w8#D z{Yh%~3AN=P8CLlix1!G3r9@>B+A!fo^7k^lS2A%s5x{s2gydJFON}`G%=lO1>ortJ zC}8LO*QnMl2he-8iKp!e_c%R-_G`0_?Xb6tm5G+C@Opl30Hs($05P@FjM;fn8KISk zqW=`x!F0UI0s0Eih}4ujNRZ7Gf7;HErC<@CZrAtW?Af!`jo)} zpIEGr{cAQMznREgdtJQ|#?~4o9k&a_`&AOJ&B!>$AhmCVOKjmd_LTWJdvj7}*oskd z5>_)WoqCe%&^$rreUGXMZ;N{k^>me_Q>+6RZfv^7dUZ9UgmG>VcEe0#?f`fMD9R`9r`(4HrCe-rp|~4`QlVDB8FU+@sB_K zAx4zpcc|I2DZwJ8Qe=2^<890{=nRVrdX#;YgcET!wW8Ih#t`lGS2pEu`m$3G4S|-lOeaQ_-mAAy4Xc;JdjTPNc-Iq_VC^m~E?|>d z1?*lF^lLG|{ewwI6I?ZF@ooAY7i&x0#Kn78d4*HW2Y7$WY%8^xr+pMstC~~nqg^#j zS@Vam!*k%4fgD3jN8pe7TV_FF+tu_QGYimmd_&wR22oBnc zPQq}32yufLwxce>!;!cfu!X9JJGuKk`H>yIfES(gLfcdg$$&WC)JQ9_Vg^4(sbnHr zov0WCJq8vq(?Ma;ton1cm^`q+mNN!e5{6J3B(+krT(SW&ART7AsAXG2`QbrfntqG3e5Zi;-{`AlvDaEI*?+%y zzpT~7+F5Uo{Gy4Zmsw0zguq08*4{S6Ajk1|b$ia=(i&yFEwD@X1&E3zZz;CA>hX`i{1*9iS#8Cp)tTpqhH9Z_ zJHp#$OGl-(Z_3je1Fx&45?0fFHQuLG#sC7x?yy{>ei68?N8W0|5KAVZp$Z0wIw-9K z@Gx28>L5^XEGojN9F{C{(q_$J=q}MtfmvJ5-sdZt&ftApE5^$%v@E3afvOhCMc(xN z>D*eF88)oppnSnRb(d+iSQpEbqw#Ez4CGht0WMDzL6Vg92a-+h3nW5LS8Eauf^nCx z*JB9VWh1Q{dW=y^-v^|qP$k4OU*#bdrZbnI=g18V6H6T^XW!9~wbutrRIy0&7;kk6 zFI79(p)N)EidjmyGz8}LBvoq2XPD2|*0>}UP&X>aTV=P|s`A`IDP;LLjAW0yeBb;8|C*SRv$i@i_%ctwQ|vKD z(B4^5ObS~2ca-mtAFz$X)GY&1aZ8r1L|(dA(JlCH2}d2_0QuVb!iaDast67emL0Iy zCDN-$mFDN?#y-2S@X39zWy$&OeBLhfmP3vh_(-p|VrC7F1)z|ojO9^n!x@G+H}74q z;)qR)P42$^Rdk{jRPW-mSuB$LZ5G;9pL)q&nK*5dGZfUo{@B%kw=l5hwi*rp16gmp z$S9@{@SNb3uTLB9Y7orAe+<5>4F_#yVzIxpYt{`7<)m4*ZPw$pY3GNQD%C)@biv%X zI5~^Ukv}R}qj!6>rqTD3C~Np_f)1y~Q^3XQnS77(q?l=ycso`G$iXWus&s_G+B-MT z90*BOn-V>j4_{o1ObtTmE@xA`E&^bp2B}rK0Z@7>I>5>or2}(%b_rmb5R|N2rd+EP zRUyQfkiU3OzqwDdX0%m_fpTmiZU-0SRwtwfAv2aI4NR83YH*6zs6<^W%xy5$t#}waZ@w`guU~!5Um*J$vd`wtFTl;zrfUNhy-r zsv%fgzMU!I`=aaz8Xyc!bEanYdI}AbTbFCkifY}UvU81v83P=uhO_HoQIKHvkLjws z0h9NTBG3z>ougli-@0LqZq;1#*a=RvexFHkhKd%Qe0xie%G$glxgo1)Ty*t5A1mdY za4KMkBX)GTUkwY`+C?Ev$JlX`MX)|OeDS01jk6t=5%5|qi-PxbUAK(CGkaO!UG&yQ z6VT``S7?j5R)c?HBgwNAsBCym4;+3R!Vvw3|GQB zOrUiXFrjAjbv?TzkiFlpL-vWK-ay4zEjk5c=F;jsH-(K+S^(0*Sc*5eENvY%Ok*Mu z%6TT73xFRN{i{ z`KBc!EjzE+DxnQno*ENqEQ9|4Mp2odIjX-cZuzsdNJ5PaMvNG}qiY*M%lx6-c&$$l z<4Md@kq5B2sY|=6>%0w6I~*J3V6V<^G!0}XqOqtG4Wxl_b*>2aBsryWu0*jznYS{E zHkxNwbaepeSITh2i6nV#p$-0BpWi?Ch+`^xj8|YwkXLtj-n_^>{62(`!EtyPvgZLi zl+ZO|_vNJll0x055)%lh25)t*GN`gl9YA}_N#VZ%XevjH` z2#R5vvpGr6l4|c)IfO>6*cRyLwSxsr`DS6SYfsx%FGz8QI4TR{IWRP-{1cHcCjdDm z_AxFM8#S9un`@S50YR!-lNdF8^YiwyT3%Oe6|zG`4AXcUGSjXa1{T#Y&<27IyY>iO z3E84##pap@yt~GD5n&Zm()Le7$WjWn4cUIiplocLcQ3Lp#N@79Bi*#<3fR9m+S*n+MRC$?QhuR?(5G|S(q~Huy zOpIKlDK&3=goJD~QN^c(z$GmC7kwikBh>d*MnRV@48O{hSKyE&7fXQ@c{$@IZRP-; zHr2JsY(htFSHl5s#+od#ONkaWHgDueg(SQ60I;{+n7tN8XW#qJU;p)3pSPsRuIIk~ zc=bFH{9eyHP}}Uy2DGgQ256;-l68_sF7}LF+qqj7jpln7_q*Vy1o|F*bmQgjGlthc z*=}VVzF~n2i-V=A{ad0Mj7lRK9NF1N^-%b~i{bR4SRi6!m;AJdmgDSOnvBC(>!xK! zd_3nu=T3A;Z3O4lpn|Bqh@;fnKEE9i459Q!c_d~xs`MAZ*NG8TU{P{muE|L&?6mF9 z>I~b!#w921I7i>nT4Oi*Z390=5NQm4$)woLL(eyw&|^eFo3?IE-#u5c(XP!;8U`hx&4 zaQj;k#tqZ1Uuh>|BEfQr=R`(WRh!$UqO^7Uh4dX}kZX58pa_26=fO2@Nn0qkchLq`Op?~0R&xT)iX3zr8R~?b6n3Uli+oc&@$r~=eTv}4{JfT zl}F;fK1mF^rxBUr=zWSpi3-cK^`qx+&4bDb2=}xOBHM43T3kuioo406=hm&5qJ1E# zB=0|WP-t2~0@p35@UcUxf#x^j%GJgg7t`5P*W2a>C@SP4c!TR8#vK3C-~YH9Upa!m zpkLupYX=Q~B*mgVaw|rir}aV$r8XejyU@F{@ zAe@nK^o}iyraX9pR@iBkBaWgC%S*mB$@=qyf))JThSO1p%l3M3zg zWpX3`XeN5ct@82M4p}lDXI_by*{GWa-99DDL%4D8-B)k(Naypv>oJsyi%bG4Hsj!u zVtlzPx#Q!@j$~i%?Z9$M69_3=6 zc7YDE`!}T07j9Bgr<+p1L7qTVE&OG2<*4w(R=W^NgREac;=e22@K3g|dORW?&bero z!P#pswaj0yK09AkJ>ggbu$G!s$IZdGA?W|`X6cvdTPt`rkI;=akvFURE%1S=IDA@xS+hFc-OvzY89HZ1b;q`d<>*Dybtgd$Rty7U8qVs@B!>UG>h%LcsEe+vd+)48ZpFkBSEY~t|28&knOYhJs zl{JO9VrXtkk_{_v{QWP#v0ANmlI|BofY(sGK}AvX2jdQ`cr}YzR z2!Gcs+yT()^7%e$2!fcpi%OI&D~g=Okn{#?n{HYGq@oT@2m}VvOEf{ z>xW|YMk{ZF(KveDJ7dq)%cG$aNnUByGB7?v`D7K%j8j-$GQxYcS7jKJ4B1uqPL{7| zCkeahh*vF~$Er(QT@NH>*KOC2QW$nM8vJZ`aaMP9@SP0AV$FlExeonC0xOD}RVm6= z;a=L;RaWXZd8kFk&O~x!Pe)iT)#(`+XLeJSEXHs-t;Q~rZRUe9g)9^s(f});2tdUf zlAwC8oKendn5Ej?O(?I|(RB08z4b}c+7tonU>cabs#gDXS$dZDF6gx-^=+nMYgg9+ zzybY$dnhI(ubF^vh5SB$Ny5+xFQ!*Tc$J6O#>)zD&T;JNr<}qBPrmUzsimg)I)f#A zqwZMlheu5aXNoD;jH_0dB}j?48B$G=raWUD%WdwyVrq?oLfD~dhU%glR_eugq^%rW z;pmbhWq)-*;<)T>ateTuH74%?$TA zd2bb4jsAht)7?+7v?AZ@QU7za)=!XCbu&)@6TpUlYcH%?Ga#9a8z%w*INZ(6wr$%M zO$DMECYx*a|H$s}5dvYhf6*=!$t4DkK^fgO00X4IVKe*R?jXt3ojZ3-F^t z^aDmrE5>4r7|4psXL^z4MQTbN$GdWEvb+f!4hKQ~0EO9^vL5sFRbs}QDO|{}T%><#`m;@ZZkZ~} zsS=a?Nd#3Ea5_2{4!zE<48Z}-WSs2DWQ_DyOb{XxCK2UP0eZ8Ln5qydz}LKNejV#_tDUoDWDdVVLFzuyYUOr0M8&*0$eCx|hKBBXEaCjvWjiH| z)7bsw6C^+z5hq)L^Xr`F&z$7!zP}<_SX5N?}CJV%gN$oaH6_#3t*&CU34cGwq)7_DJzc2 z1GV}9M=13w_S5off%H^8U!TG0R?B21M;bYFCHTV%+JG$&8ha!3@2OC91k2wqy27e@ zI@@r@7Z^+Ri5Nm{Tz7^S>F=H~W$eAQTo=G$PPf$DNtQPYH3-XUj^A#HW=1qWq@O_` zp%nM7o+Z1oWslYZ%LCA{3$s*|*M9WpTQvQGs~!bEKZe>jpNGg=8?U&>`wgKqI%ZjJ zvr$Qh{i8pgFafH{qn>jf^}Tbx!ivn)WZLdZn>4vc3&Je%fNH=O_E`o~;IWh{-9m2a z^YvO3{5;c`xkD@Y%tU`MhSUr0{7(kknOcf7YuJKxWHF%XA7i9zATaY*mj~v*``;x&30}dmJKgKGn-XbcdYYsPQ%w? zGAWN8b4CPp8T1*rC7G7|T;ja9io^TN5t5CUMD}N;Q?DG68vC3_^Y7$014C!@YTRnO z^_b3*;6siM1AP^sk64FbB?fWZ5_~Rwf+cogUq}R-JtRAJuD6Tcnzk`bt3zt#^|S8i=_T}ayc$jKCaG%WnUs| zwyW0Iwo_E9Ry&73mm1%Sub%S&q&pwn0$;E5-oyLn=Ek6>s>1+=fi0B7g+VCoabvF) zvJ5p}gTs<$L%S@S3}>!-jv1?c>Sh9x_dJF1oM~dkrdw~o+%Y5XFpS!ub89mQP{c+-w{2Ab1eVo%T2Mx12FF*qO3k8z5N&k+wdQQavYx_apGyMdcti7#}3S}0IHMmH*-`!lZ6W-||qK?E1V~MLU3dM4Sjf%+frd8*LvTryjE3K6o zd!1uj?2JX}$@h!e&NW9?igy-$FMa6RI#5kxj#ricBvPugh$0)e>%NMZ1C>|PdpX&* z{WW6u$#*J4J>xxbuVMknk9{f0`s{Og>+26+4P^V$3x>E;sD(2^Ff6tvE2XTOGZo_) z?TBLzpp5N1Sw3tj+c3UMx@1$fY39+Y)FbB67C_^*doYnX-6%>+k7sg(H8SI32;1*H zpLf%rHhfa@B$KQ`^bQ_(Lfw?L;WIOIaV}E%jB&CEKM|A#2fK^YOB`OT!4)qnibMH#j?$nmTS8K16C|%5Z77UO0x8`8J z=(qIEi&>d-RSWGJ5Gl8&SGVf6Wu#+$2yS#}Qz)r-a)wxN&FDL%#}3nvKR*?#O*N^3 zMF5b+gUG%<8IkEHY5NMA9?2U7Yzl=Xi7w)K<7D%@udA$*B~4H>ZoB?nmRBW4i?Xw@ z52^t8+^eu$1tJ>zm(qqUp6bOumsnteJ5UN3;<`+*gqe1cV2e9d7T5wrYTvTFyXRvl zlY-uOr9>QWwB(E-AB^{e=a4T%GVLgJ9LJMjHlQ@8Gxd4WVm{*ft)_wFO92Sk4l|*t znL*qC z7fiUsU<1}kL?f{dkGT>R(pPxUyzW;R0@8IQes1~j1N`0ifK8Dh~;SsT+_CFFT{(qY1YK0JG;yCnkWy)uQ-_+&D z`Nx5J&Zli5e+oY$o7VcR!W{(&xH6?b{W>eH9;e7&K7Y=PEnAA7)y;FE9xtB-G-X~X zC4e!pDq``*n7MxDY^AHVEF>#D-w$xpiE}I`dez-%uY0$3vvNRNb_8NFxvgZf)e?@x zM6KNXm{;O-=S&T~mQ?u{`|452pq>3$^P69ml}2Tciw-D#zXrSbeUCbMt84rD%U}Na zpa1DUzW@Hi0jVzawdEa`6}*G=4%2sEk~h-(LD^2h<<}w)$HtMhT%oJ>)MM20j^_H< zh!45#`u}0#*ku$g^A@ucrz0ErR+rs}o2s^V;h-g)-_!R$K*qyF< zkHg=Io~fo=K0GEBM7_v2d#~8a+9rOodiEudJO}x5C8nBji3_YnLIvT48T%I$P>Wc&Q+Hl!*XA!QtJZ0yTd?+Zr1jQj09d379Yh7fF zvvx#~{gY-r9+@^}$)q5Cd7afY=w;Pj+dY%sgd7tlzPa!!yBZnCSK^o$>3z!zN>w@B zAp4?T>H*CbR)O@MP?1uZPF1yQ9mmteSRO&^MrfU_5LfB38 zumdi6VyKE}87c3SC(Bi=XV(>Zmx9VjM=Z3V*x$5`tQBq_8ha-EQp?lY zLw>VsN-_wHduRP!B=S9dXX&}-C4@|)Lt1{TG_TQt#%VBQT0!CR`_yGrc&eDYM40in;2!IjRQ{TaFQXi*%(gpiiCr3Te0r2&ezn_($=`*{!x z(p^qxo4`6*V;QOE^CKPpV)@MAJP%S~SGHwLd6oPOY+D6i(70Sm@Nz3ZMjE*`SqFf- z5=IMgt>LN$z)3N3!Gc%*@GQG~e10Bpwvs6<4(N!%P5szzWPRep_0TGLf8(} zCXeQ7A%hLFX1V6>Wt@>D(#65NEq88a2%KN*2+2rXVvqk($!ErRs&A#)daN zAq_p#QLMi;r4EalAVt?Yy8lMLDD5fSkkl)3r$w{;9U3#isS1;UD zVk*|@c3b=AR5T9dj2237V_M<-9^^Nd91mc`2j}c(FzLt_A#VS2wv#!PuSVuuM0ZnVwSF#x zo$_8Ge4PFucQL!GG4|>9~AM!&uXklFsF5%rT@G)&kzE%s3gQ0FBp*pM_OjyL#n5t9GI` zh?pbSR{t{!I!o2>wf;lITry>B!L34Q-Q7^3Rtu&e)w|}j4f)!}7 z%LU$DA*Xj}k2K4oTpQ)V-Ymj=mpUtUU7k@|jO4H3`aY{;2m2zpP2WYIJfw{Y{S`jRpUZO@v)F~LI7MFF#F z)NyD0h~DkP<`%+7>go6G`_YMh#+O{${97wk&Ljb=xp7NJY-XPo^N!NkzW z$V=kClZA0p5~Vj~pPyJB%y!(`Z-4bK;vD7fBJDnAV>kH|#r1~`nUK(!S4@pCmR^_{ zWf4kKknf4%!F=wn7_n10kT@BiCHU^Xm=dA+ypC2-uh3OOZ;Q&~dvwP0S=?)g;Ox>( zps!s}L#I4iop<8D*dKbGUwmchmGx*D2xWwjMY2uHHVrGS$(*J_{9I(5=ZW_TZ}SyO zBex)EhFnJHYav;|wYqt_`3L52r_XERyvD(0faI*bo8CM;?qWiH&;vNKD^Tti%_3fywM66z)mRqm$a_Nvq@X1qjQwne(q+7lvM`@Zrb-(OFQR zY{RKUv+;NtP%El*qAD9)Y#E z6B^-~bwQ$2ukTm@yT$Dtx34xXa=PufnTQ5zw!Ub^>6Wp>l{6#)G|6L9V+L63D2e4- zj)UCAqa%9WSzefGbOG77;1Yu;=nv(y_3blTjvnL$;~rDWgMe3fgQUmJ5(^;gpu>nJ2F02UFT;@o;bL5*8b z9*Yrh$dW^Rqx75#hT0=ra%GI`dS#sfd0Ctb-LLed(`NkrcamFdMK~D#H zlkNPN%XmnLz)&xpTNqHbh14SEUvWG8&9z~|RgR@?p9kQQxOm-BBj^2h|KUIWZ~nLc zyZ`?G;D7LVoF-#gcPX~@#*RUe{Y`{x+Id)H@b0xc0?zQr;uW=E<6_EoiHxk)-up($ zzXZt0r?`Gy!%knH4K?5D0;A` z92MDYYT1kS?IbJRt}kJR$`Za65__jf_O93?XW6^ap>0W`m~wv2HwM~3+{^SWfn_2B zu*5&GClyptblg&iA6gmbPaOo9Z&K47g@ViqI9^L)JLL(3zTtdjE9G|BhFY8VfX4UB z)^M9gj8s%g6Do%Iu(&Zv%I;)dwIN>o#%Fib>+Q>nSq^zjW~XD!V64leD!XwIKC``7 z<4F{Dt5MVt{64@zPNKlN{HR>M%Vxr^N#P(9)Y(Jr)yScx*>sMul^>16i&R*zm+Z=`bx?6rGP_ZK^Uw8=&v*^UalM-YL* z;UBPu7n`3U)6`xFeCy2bA}Ze<1Gm~2#2in}>)F8z$hP$@TX8_+iTR(;r($BVI3+B8 z7kkSHMWjk1kDrf-sIsXaL(g5Hh8vVsjB&=uPf zrQ(mMb{;OT^4@+Zq8BkZYaoJRbW!)xfFIf8Sj65%^(ziUT2 z33k}ztvJI&?Ou(Zv9P5ZXdEts>0p(Fc$-*(`2{SN2g>jzh3Z*IsCf(>PMXQROky3n zMJF}OHl~G0n)jihhe0h4uEvy>s!F}?19Z!!2FpfTq(SK?Es`oKS}CJj=fup3xv!d2 zI3xFc$ANkr-qSD62yX1FPCC?&+P(&$Nsk{%42jNT0QiwZh|id{Q}vX*Phlt{JAt&BlTqzG48g&9BWdLK=R4eBICZ zU;BfrF0;0aQ13dM*|NoM=hoV6G}zH7hnEX?%q*di2$iD*kW7#e7MQYcc}B2_c+faj zl%$$bT@13CNK%0!Cbhj(3T{adyu;L^!Lf&VKbq6-1r#5m+$^NBru?&5(a!VgUDwlB)^qdO5a zgJKU!46pL}{5WHT8DwWJ4mZWcJ*?>Bm5sB7=cbYtW5AB)NsQs4W!+}nV;`L^9LkgF z{@{%|!(&(*`&iga0X0&17$3SMF-xP55%y`L93&qJTU>PR~5arf$J~Uue+k& zWwT4!DK%RW)J!~e|u)`E(+q=gCSI5dcfO3X?>bKZL?$NK0jaWmmfJ>jgLm_ zX<;{9m(JcbU4aJt1gM*cN_rQX;PGWymRoeCX(TeZ659&&O!SOk{`$^#@P;~{UAkmd znvW8xsmyhZmJUsdB%})U4xM7pejK2DkKnAO8d_uamJFAUApEA%YvNu z)N(tCSxiKlbMTR6(dONkZ?vemLRKfSS;fz{R$13LP%;1#l~N7IHfc(5vZ2Uha^qdM z$IlgP;)~f=xR$*UHlHI?MdvkjWVes6qC_s>@F#j@Se zBbSNf=~4A@N9AU60PVhvRjvf@Q9sv0#|zlTly;Hbn9pXB7vbe(TOT)$?sC6{4VgP{ zy{EsQ^O-Lk;;Ql{Goo?X|1Ve+{+M54N|GRu=Qa>~P3Jl6T!WGY;(QNEm;Qv;$bWQE#DW*^b@b+osm_o1N?{t3QfzrI)>v7ze}@ z2@NNWf+%;AVym1wS?uPH6`0Uky<20k{V%)J3<*2H-R=mE&dbY-?!?{f1R-ie2k`~W z(xh<(Cb&z;N}L3SSTDc7DK4zJvqJ0M8i5riCmt-urum;2otWy^!!*04PTW+#T|EK3 zS$%u#1W>1IxDsY1St~PO-l^-tfKyF*)ZASppfNBiDWek`?2BuFMU%~-h0E@wrVi$@m-SXIJfI9f~sGS0K5(( zzgKd*tg4VBiKnJ1wtJci*hSRFM_(8mxTj{aAgqI+rm>Kt$cM7)CIC$Af@sE6IcW~! z{JBAfyDq)e01%g?MYGqK`VPWj0|snZsJ7>t`%mOF<0Hw&_L(bG_o%oW6Ioj^D|moQGK#{pZTZX|1wZf#L3=)p8oDBXSs?7m+Bse|8&U?XFCi=`E0rV zObp>z`*Pi2+KB6lp?tD2La~0huJVzg$;+kY%&e~t5Qz(7zD`@SyFM;ytR55GeLctX znI~tiEBHV-+E-m$by5qyKr<&5(bJte&zUye?HaXrUGPnG(bi|`f8(~S{94jFj0>Y2 z3og44aSiaaOHC{;zJ5$>1#hvpTn{&7OFYn^OuR)4R!WpvUAeAnU8A!p=bMrAu!M_eQZe26t&7y6Q~`xU1iP#PCgfJ3uWtOzm*+iR0d z4a}5ZOqVlm6PN8)O@byu;OzV7_pr0%4dwnbeRz=pI`S^Q08IIMaK0!<%meg{lc*)n zb8$^a1YrL*Z)1(j-UO5t-2LKhlC}%#KU&Bqk9elT*DVA-Fq6*W=5U=)3pPGZf%GvZ z6=AJ|ulT&(iu)z1rH%mZSW<_%KfiB}1sRruKzXu$XvAEWj3j_-zmT;S58b7EiOG)q zO6&s4V(pFj2!t>1bbfPj*&p}9LkqPgfSh9ioa2l*K5c+LaN&#U*U5a1QeyPsfID09E{HDciCW zWW3okGZ!s3%nNunR`lX!@#DT1>R0#`Pjo#1+jX4y3Tr(lQeJge;L2WKr zzmOP+Wm>Hm&wt~;haz7e9liA0LY1w&$nhn zv+OMGp3@%0f^nA21$;Vo-)9!dbNeP~U@%UA!`!si6i+tu+V9mW@eI5RXkR>b?@?0^6M4NOQ~AA~W^=i0_GZf;!q zPT+S6Q@`d`p_P#aB^V+qWXY*n8^ED5(KIXwpy(i2e7eP=mSKBUyT4Nc zsn&AIHncZhuc}etow6ja+<~M#7nR{y%0MZJ$2Gu!-5M(g*x!;O+A|j)rJA!}DPeTP zvBH*kN%*@G{~|a^2FYKYSD14D^7*ORcE}^6f5OSKOuL;-f4Y1I%nb95V@{^x3d7^$ z-oVOLIPzs%N{t*1N@LZbTBsHeOsX!m{o{l&A-#w4xBLmiOTu^^r7>e*klUe>bRS<@C=&ro_ zzIEHqdp5V}YFSj3%R`eH3&?8(r&l}bA7ncBfY<9mm^kp_jAY1Jd-}$x7gIJ9ml@%V@o0335Z!%o%WHr z8{?UM=FQI>W6b4xr2U<2G4{nGl+%qia7!^O&#V-1N{()!=S%9JYY{BZUX5&Nc7oEI zmetw)#Dhj;5FcQt)^PmrmNod-4;j7isrJ?JBJ$BiBzesz9&T_j&rks|X1DZ1mm& z^04K^{P8C8+(i<}#t?E@6CmeEd^GdP=kuxO_?MfzpEq(nRb5#RUE&p~a* z=$!|zKL~83R`YXOA60rWeXV0X*FdSJ$a!<-%$$;cf!67@V|?@(?*34D*6$-_}w6Q*o@abdnwnl3Sczh22j%`4Fb^f01%9j9J zb-z?40-iu@>at;-RhCRIutVV(y9nu^iJ2r-9D8+MsC~$3g@a+AxzfXQ9RDsp7nd_H zG$<+{Yb4{39*|o%>lF&jKb&ni&+eE*yp~GBOF1*YbxIL&6B;FH9t|#EHC#7H9sh4Y zbi!sR<3LnvWm%sew zUBkR+&69eDT{m;9DQx;X)Z^}ZWudfeV@eo!ld%X|`YZ|J997WQ9e1n5FNsvV^c-&F zzNxp2Ov{EKXkhSWptC``FFU*(h|ROb@;8ajiV)$mHFQN5v)`^xYl0;%nZ#u)8E^&# zUm^)c=BA`Pa@SexNpyDa1`Jr+eCb%X+;fzdZn8(ppSYLF?B(I++O)lMgM73Td-~IF z;yNBR@gL81&BN%Yp!8k~R*dSZv`WyIe}mv&2Whm{mgF0bu@nfDQ$ndVOfNyQmi-NB zfG^WRrTD>nX`aQ5lb8S3}S_af9hLe1<|xfIyr6bC<{m)vL{pN z&viZaLvly5Qdi=fiVsCJ(zL!6SfPw%a{VX&$$w&Rgp2nVr77LcU0cQVvv}r}x zc{1Iw(jrXOk~1hAj!zc{D$>Ivf5-i~B#4D%($$Tpp}{8l*c3fwHndo9*kPT$*@*H4 zFXUq~Kb0o;E8XJBBuO`0TAj8r#fH_CFgAz;QKhuI#l_y;=UfckablE*O@16=M z=nd?v%3^zMS>QT)IIGgp%WGLOuA@s}=-93O+i#9Vsncn_oFH;q1{@GsJ!^fOO-<2$ zmd1AKJ)MirRCN{GeWp8QI)R0vrPOP#ty=42uvd^`9fl5~coqjc=2i;R& zVh%nT6e<4XD##v6K(jZ-0kT3EEJ1sC90j*ihSS4#s;>Dam_8*0VY zY!fx13jx+vQN<2gelTSB!q022=NH*@U0%jHAF|FnmuVLTn&$oZ$cR%VOb{!eG=a0c z+e?sGd&h?OTrTJ1n#cWNg?{#{o)WiiFdlvPlIT{_dLTP)LOsr$ruIcqjA-{*tit=^ z>Cx-DkOOk9MmV_+uL*TqG58RQtbzx5B4cg+T%jQXwM?q3jWb7cXmIVxVUM|zaU1xh zh87!hHBvChd25-Wn^LRIl7^4!PIFCExSjE1Vw%jQ^p-+B^VG6h4Z>To;8$}#xe4?6 zVWW)hxG?*sGGl@+iR&)K#;EN3(ckgWqS43>SV&B1xBBSP0Z|6bvggFgsI9RmtBMWK z^Q-`cmdX}YEaAGsUkm(>eHhXLElU`?0}MBM7Mud0-1W9^v3GVSmG(^DQo|UOb8{Ac z#Zu_rM9v7jnA{gMPNkC=d6o(Tl{v_mXk5Hz!p(!T^1(4;4c?7y)x5%+q&zVylCq=3 z&kgwo{~#V8PvJSI)t4*IcFouBi!3Q3w7%+gAjD>>n7llu^+qdg-s-*BZei&ZzSTh# zcu#!P?EfldH+#w2L1|NvGzt@Rc_<$}z5P|5A=^Jdw)y2|EwGh&B6|x$gxt3o(^V)_ zXm`JtEwgzq-w;*kkH7oHoX;~q`g(r+Fy;r=KEFqrrsH`#3eUd?3uuT20=_t*OOPfb z+a7XsSHBQbx;Ko?0#Z+;(*1JiqAI;Fu&GP80lGT*1Y@d-Clf1PKn&j^(Vkn(Je9FZ zzKe{GC7O71YuS`h_znIpg^=PyiBB5^pr;J22xxxfp3`rGkA29e9y0#3!QCz2SBovl zLiV@jrNmrizN9|dy`VF9A7OakH7T>DZ+lO01=!v)L3`eJ+~>8qW%tUJ+IxFDXyU82 zZ7?&%pj{HmI709c9d2nwD3)q+gMAbkLW_K)<$DK&2iovanS7qPRHf_idBcu~pF8yv zwa~84pQ_O9)|N3V*-yXnI`?Zpa8gy`=`$2Tt|db+{CBlG97u_{u*2BK+wx;>qc_&1-^7n4iD0EA*q@D3^uhS!n>*V zbGzVqjwz#0meb?R8Ag#6)j77Frx=J?4(MA2gWEkv7WC(KgSmS>tn$B6J5|V9yS>~E zdvqgkuD$*utg7QV`qg}JZ)}vQw9*)hwX#N%C^5e&7MM!Jf`Z?>wfct z{MkU?@~3&qzy)Pb4L@baJpl*5NU@R}a5uBr5mS=6`|Zzu{P{^NnB!!PkMQNH+KN6y zXBo)6#x&>$d2^xBx6+iE#aT0Ttk4N)ezm|&8wtp?(30bAjz;t@ng>Y&#yg4y8FS`@ z(&5bZB^Pt+^MBhS`rqY+o+}RvQ6`~wlB;tHG7f*4E3`ZFMY>!3rs4`cvWp5m3Ib2X zQr;hPMBECkfv0nn+C1k|pSc*a%z5oJ1dvUYV69R_-7rl#K5}Zqa}P)V%fg<gYd^wV*O3QH6!-o5tk3cQ%hjJpot-^ z1c$3=@uJ#ov6mvCYweH>8(g_uXNo$$=-R}cdc?aN$zRMl*R0qYdK=5X%gI%c#9(C^ zrkzniicDx*qAz&_@TxhrlX8V0p^`v;Z-C?cUXQJ91PxX@BM1dZ!wHT~Ejs0o{m6qYjP^{_*i#XOR3_ z6=ccp+{D!$S5qK@3Q=DL>eb%6cbTNC#m4UVDJ#OWwga2BU8SrnmdA}=&qEMzI?z+P zhg9P3Jl?EoJq#4iUTEJ1Q2PIl69_mC@-t&5*8*5U+K@f&prPkd(GK523`~i(9`R5yWMSG6+oKHn?(`TWRiNEPt=e)2ep;cEWJHg(rb za?7qBb>(PRwIWYkp2SexG%ZE~Qux?$WbzRofcD3pr#0?bpfRq;0Gd6jmopZpfs6Na z6aCmbLE9)&4hGk-f?Xi2Mj&yP{k#Z`68kG#SM*$*hQMKR@==MPh2SY?!w`FxNcT9d zekr;D)jHA^I?>LssQ4q?PcQ_^3>9XXnx+)+4Wr-Vu9?CvkFeESz|D>DW4hE8$C*~~ z!%wnSIc=_rASw^2(10RymB33kl?}YNw`c(>lgt)93^0sXW93q1HI$XBIxR zDNE@^{A+c{4a|4=YP;nnbgC|hp%e%BK0+??D*LX-;uM}Q+p&ZZwtYUItqCEOW!ih1 zY^ZvkQ4P9t28of(!(8Uosb%E?UT5a+8Pk=HwK#{l^gIT@!J{-KIKa>O)cQ?HZDynj zBZ~~qB9=@*CYNw-n}Uwefrp#|C}jIQx@ftKlnsjiyXLFt!x!zS3piMAr1DmwmaF=oQ zSd2Mx2g!85ud=ltZ92&dVBoZ-kL@L@Z%dXF(|t(Nv+E$0jBI97V%Y7qef#OB^i#^Q z#CCW0nysFRoMWQ(M4XJ-$OsSIsw`ar1lLl-61H*mzf=2aoo7DjNZ!2^_<>x@PD!P* z6nzY2CZfzH62Z0>|MmT)L_D5z?(Y3kWmto$R2@E3%IJ|{Yv|<5$hsw~RHL!@tHQAm zbQ882_My}++zG%(sirtveqCHyLjS`MipN;bRjm3IezxDpY1t1Z0Cs3o;-u@$Fe45$Ze~l zwixm}?9%q!7GhYJT@@XN-qV^@ulF|(x$!Y`1(0UdVcK2?RlTEGz5N>K3i@@mR}2s# zYG3rizL{+&r0Q6Q*8FYHh_@00%7YtY96i5QZbh3pY<~7-uD7Zu=I$pZx!i>MVgAXKY=pJ$!~%QZi;sOWK3<=1F>!7|6T%C+Fl!<^54 zkb!Jh=;r+;8vyrYH97-8;d6ycwTmq7f_2z~pQX2z{z+cnD+9fzg9cm3MB4AHbW8Ob z*xCSitctqO+M^X`z*$wRyCb0-neFItdR5s!Zp|hZ70?~I^ePc8KjR_^e>s|%pREwm z*z)i%J`!7TE`&4VF}T*q6!}*62<4jlS~`Ta3g_F@Tf#@NlZtRb`{q7%2oH>+inZg= zFLJk1{sn~V{Tk&&W#)hGK>|F>}UU%_ms_ z!A@-~wMBcOs2C$Aoq;2FIoJ5JQ0P&a@%h))COAz9PrJ2xBNQXNWx>k_jFX>7>=R=Q zE5%RSS=7ulgxrp~rqPYK=V7^$YzeU8_!{v|WTP0ejHg4FQ<)9IczqErMnaR3}xez*yB4g}ub$Ey4j#M)XPjRQ#-JBkrS#(CJF1A>1p&)| z#3SuS+wM9Bxe%CgeIQoL%E!^*o@fCgxB#BBO`de3hrj&guiN%|%W_e^`XWrb;PCKK z$F`HNU&4cH-Z;7C-rGXHj&KJixb^%1(B66)qwjNqKt$?_Yu8!$UH0$_T>C*|C?`hH z@?Uol4yGB~NQa#XC@!L}%lBQXM;VXGrnRAzlJmS4xychTtha8U<4W`aJ_nqG{@Z7((R&Dvy{K8dTw1R>ekCR;93I# zC0O@Zr97*2>sbJ%dA{viUIp)av&K*JG=|2u2o{)peNU^eABAfypk#Z+dZes0*Yo{* z`b`z|x7;!JsJnCC*ZR0MFnKO{jFLxJ#J!N0iv3?adYe+6Y8j(ylUp##fC|)wRZo-- zzAEcwO)|ByD6jL#eqZ!&XEqz@*v9)Pk4BNENG5u0l`JJkAw@Xw1J-uLH`Gtx{J|`D zH8{*>T4ku>vY{(&1f&vHpH!*jw3cGjoPJ6K6Kn<5J8AmRapxpEr5KQlC@(->9RVCST6cjhg2*Rp-JH6BES7DJ+8pzd3Rub}d|L&VDQ-Sg4)FF*18H>C(Z zR=9Jvy>0t`+6B^&DN9huxsanwSA~imOpV)H)bQW``~T0+|L$i2X00hXJB=0Mm#o#X z+iNrP6Wocc4`}@3`E_j|o2p>dUM)*;W+-W)I5ca+k6y1Uu1d zpW#C$xNEry*XC@6iQF=8k7b+8-K1YP-R1IhLZ;G?Dp#jF3Jfg`>4$98w!1reXIOd8}_FA&2wCw!7IMYX~Piw=YRg^ zw?7`Q!ZWg();@9B%{iWrajk_pNA&^rmE(SqMO9D%WS5s`Tg6sbCN$b($Bx;Jykg_6m!3JgDr+>Z^~l1@M}Yk{R)k~Sv`4>@!}XMmvN@aNCiAQOgsAjgQ^Py~6c2;cWHUZ3Txk5_>1xy{He&4;od1YOc#;;Vt z!@l(Ms)D|cN>Tbpz3qgPfU2ru+sB){>CahaqhR*>Oy*QQ`#{!EZ~lADjhk5 zdv|c%M5QMKDUOqJa@)3>Z{FCh_{+)~V-n0E_3OTOFyhGS9B=dV+CIPi^p{g0x5d$h zyADNzk0SX*1X-I#$(Pg2fQ_(QNAwyDxK}w=v9-?M0Dld#QfL${>VvBi*Pz} z&!qMzzqvQQL@=2Yz;s9aUHH`%n?U0@0M(ow1L!9ESv+7_a z)$~cMv4?is*mD*GFM-DgP2+1Q{)kyh^w&b#tgUHsBdOi!7w$shYf*c!I3%k2fi?a@ zTbW^MKcnYVhcNh`rEjbmNFw=J+BR()k$gT={wZr=sP)@vgLk z_N_T*lG+IZ1aFD(Ll#(1@TufJ;p}!Y$TJ%`!$v2D>`f3~vYBbYon9=&2y?>DW9~U~ z?*IJHnLoa@ee&#}CHc=Lfy6;GM(bbM7@akaF2Vo$0AEk2B9;BmkFVi07YYzcw1pI= z&s|G2TcS45YYd0oLmYlDvSkF_d<=6xW#38^CWfywAcFP;j<;W0PE{UF15<066YCL| zsrLofL5S^`-PM9a8()_opze%RXtH%AP^Ft={Wk+(5Wp^@urMk8<(nv+7(Ol=&!MWl z3T^3XLAqU72NM=6j8pA2?h4jzTtvHC?6URE!0lIce>JqI@UpZ0Cj`s zuykD})t%HE&K%?TC$lcjrWO^AYK{3k+vR`Y{MhiaUg7{U4#09+6pSee*7z#{tmAhY z_nT{Qbei_?S%=haLKaBAtz<92jr!uG{^_qs))Npf(8=Xh1WoFD%Rh(u^WVUem zyNAYz>nJQGaFK=1X=J-{eo@TL!6r8eMC^9Pe3FLJ5J*IYs`hn2q|@Bgd8NzBJ7Bh8 zG)67>8ey+WK~_3U5ZxDz|H*%p40e8{3@B#IADVByGYhYg`L?w3=sPRV%IvD}mhg^Z zOub-l1#W$Y<{x=#D2os%hiEi&MT6fe6E^QkNvzDYN9^QhGlf++1*ACzzk*>*>b0zG?shGkG>8!MM@_x!P*Xz0cqL>;K7Fo&4Nh z+vn%E_nptvR2kbCvUnD`V)1YiG5OP)zB7*^sj(}tFULohm(}(w7j&&#@she536We; zHXqS3WhC%Zw;Cpv4lD!R+*l6BK{O2UgPSiEKkij31XcMzzJAfmTrz>jXmE;7Fesj+2#Q|EanCa$6XT@H!8EZ$k%g%U4*TSBs-rrS+tZ+V@!IfIe=OYNS zSFgt9+?4jo(Zqb;FDmEJC}R6EpDE@{on7%AMCLGT8c&a*4MdAnG^39_?p_g`sbOtdRbs57WTuPXB5BpwhD$YEIHhBaD%UD_Y69A%M{9 z_Q%^Xy4@*z96!Ph3{!forY!jWn*G?qf#SIrd%WaT43j)*r&hR+C+z-Oy@IXWz4EG$ zh9-Dt-2b2@L7=O-W^#*6U7J;|SwH&B(34p3tBBwMY-HDcTUs3|?cA0x@N}{uDknYIn ziKb0pp1x)n_iosQ?s)U?o{qTp2ssa5>k#OeGqcJzz&6R3t;GC|gU{tD+!{nW9^FqR zaeMB1L!pvNlWwzF*$Ha~-+VNd6pomHcA4)@e^4y4^h5TY?Ek5!b+RvUM9Zv*nMp4= zTAwd3iCd|?^krX+-J?-nsR>yKWu7r#5`)f}B|cb83%;%>4_CqF-RDuC zu8j&j)g-GxuLdv}JWkuu6SQX-olIbXlij&mz7Xo+sc(r||woKEOkTFJR z@$6({<;jdNth0u!+kEWevaQ-@MyNI`pBI!D&9jm6>b79QBDE8UWn4CqTKp+Xm4r?O z`K;}}SLC1cZq8{yF%L{#;HLD^Ey300>`bB5$5@ITZ|~`s^LYXFpP_4?iM+g%LYr*Y zxicZvg|3U7zKk5SVq1hhgU+sG#mHhF(E5WU3R6yZ}FbokdS%>Q+C~_lP zaw{3R{AGW4ew=5eU5)F{JvcHJ=mphoOJ~NQQQgG0Zm5B%X+|1hMmQo^>)-h+_Bts7*~K>K43T32I+yF0F+$F#4i`(0m8 zF0=Wf*B0Mm7bq;);kx|L*0YXEuR`=&CB)^)9&&VZJ|o8d`uzU>+af(p+rIqwB!y4Jz-ibD|b-yAkOYUgP{(NTm@^zT#kmy=P zmE9o|*PaqQKdzVbO+w#radU!6<2qg|-^5+L@YNzvI|;23gUOR?CGKsls-_W<-j92A z?}1znU?*X7xYc&4z?QrQCE1V=6(@RF<(*9W4xkJj1WEwzhdbZUm6G7yJCUkZdoxaG z4Yv$Sk3+dsni8VRv8Rmh(4fp{vyWX*(-mE$mym`~%uajmI&B2iqRZ)b)YBMNcPf~_KX^|c zDOFF9Ip4?gxtPIYf9xa%83HNV;8zT0g*O~D=C*ebCV5E8T}G+tdj zzPn&;<8Ig%9>+Zj?o2^AD+>#iZnn<7MM5{-%fkpej(JJ|n`@JsVr8nKwjgE3KbNm@ zNU1choa0hpN7d!GN>^=Aoo?_4ei`?J_391?+Cgtg)n(`uuc^h^5vc|YJ28uBixbCs zc^}tQ9OKe%Ew9~9S8;Y!OOdh={hfLoFXxpOo*t|*W|-966o^KiMKNIBXSIo(ko2{k zsNWn#0}jJEm&_PtJ$n!g_z1U)X?SSxI~o)>!mChhY&U&0Y(ekW5cd7L6u)VpU)7w=9npJQL&(l`K1^+a$T8%c?J{_w{FZC zWCIOybRCSAA@;GQ>?fq(uHUMelEPg!OKnP#i4*@6Up$(#ml=SRgh5JRBv-ypDCOMG z*cf)?0tOmg=PB8jC|Hxr?X_K`bHHwV^xBBpSqR|OHbqF!!N};7Pqd%gf~dspi$cWG z@LmOUoQPP}gxiV|%3jvW_tI$8g&}-6^vE?G*KgmDt=o|A&F5;aK+-@Nc`Mo;VAa7# z)M+gBINM<@f1{07S}U2_6dm5StD81CswultuayY4MMhs<1_H zrsGQ6-qH-tDxT+rTOq@O?dVqoEwNf%@(^^tZNuRc3Td^PQy)0C*B%R!ZLcNOy^m>GbvK zAh9Wz4PEVpf9tfI=Tt+{A;)wuNbSGz*IIMcFACWzIXyZ1l-@z?YDaqYD0nDd#@HOj8Qqr?879PH=&2^*kT z@s5M=Df%JZQjatYHgv=~JiL6qcb*{nO}ik)Tp*A;^{oJ?G2^tg3ZQ!aB<#I>S zaO0ruYrw9+NlS_C&QW4y?&4)`B@LI0QKDwqcCozr<(J2S%7NbqY^hp*9xT(N0$+!S37D-%B z71%_=T2L4?HV7vr9^3Zt+>|NYMHkOVv?rhWD|gGaR-qH4pQ_Oo%Ws^k0br^-n6B-{ z_Kv;pd?(B`^@ARh^jK+y=wH^P_Pqdmo>Vixn>SmPPed;j-r|~ORcCzG(D6~a+ZvK_ z$W1s$d92My=p}TouwkHc$k{ni2S^UPFMhZ1#~mq$ZlJPDA-ta_0z4(idE46UWO?q; z^oH-Qo~(6fka2^+p-vjckO-^oswl2G;E#^=NAwaGQk5)@${@F(qR@x`hQroo@ENLmR6)kB=W32JW_bN#S-qM{9nt@cgb8Z z{1+EIu>+FP+J${xcyFsL>4gKX9(lbG8i$=K8haGY#vBns-7mhyJ;#=d5x8yZUMt1< z;L2*luy6U;u;1pxY>A4bF++D4jDoD7Fsi)^YJ#vQkr%c^yZ4&7fMe`E`B$iD7g2jZ zQ}$JAxd|2%7|Xm*`ZBu#a0n-r}jFB$u=1lxKgA3)MGlZ>YSjXJKXuG zpW|INbXDgtCB(?swGk;rMypx^eZ9I8z#ap9a;&S!vB%&hfHnjt<;ZO8Cw)2&;!eQ`rm zZ zg(11*$;MhWvtdb+{r=bg`kVymUKPaaITq>>2t2Fa%z*7jug~=2aNe7{SvqchjV#*) zj~I(8MLc!8r9U-&vIr~2b^-ldVFyzCgj?G|lWyWL}iW?F=cd z5A~^Zp=z+AYnY?U3^ng8XZNaH{{A*<`jxj^8}=P(+SZf5Tn&rGMRqwYKQ7<8GRq67 z*J#7er(REMiY__4oDAa}?@SAvwc~1al?NAQILh(s_4y^{>4zVF{IbHg`JDFB{FsH2 z#86S@29umS$!+8^LF$Z4d8*qD#;ZheRq7Sp>7vXO9#UG1wf?jSCL5wLbOv1&FDiWX z66$JxQ&uf~d>@Y){jyxY<3&2J$REqNkLt75RD&j41Os+eYC?NNiTS#tmKdgJ&_Rs> z0Tf;w4kxS`FC@$q&vV8#i^$r@@t*cV7#_CyTM%+s%Ru<(k2$IGV?Q!N(aqe7um%KO6OHO8pQxq*)w^e?g z&+yMnkELB9fZ9dAwOIS;L!dx|u&W8O_pgd#&}x3m1i4g<^w`SY31o$)Mms!1zGTZT zJ^I*m;XK47D<(G;q*Z^7J?KX&78_8w4F6^pk?WEK(-R@s)0*fbe@mFv+<=+R+kgDc z-@j>@^ZC?X3Fm#0FmvUX+?O?qnZ1^WJ?9<=HOpNa)tjV&*T@%5TH&>Nhk@(9t|?-| zi#1EQR2BwD8bT4@GT~Mhn>o}={jP9UQ3D}?+kRr{z;yApb79ZtQ^r}f*YddRKfX;OxuoXXZ;)9Xt4r=d4ta!VM6euHoHF; z(m`k44MMJ4b+_TUnzT78Y^jTH-XH2sR^?-=D}?=VG`c>6mv@=PU;$cw^GCK`X?X;fcf**j^K5uB zmEs(oa1e`0%6KL!dk+wqK7}LJZTq79Dmwz8k&l5(r#IH4}q8xl1P=v~{)M(dTZAkM}uVuj7|ee+M^J zUU%50=Z7gjs+mM15oz0sbL=**cx;q~D#K8T#*rb;rK^)@AF3D@i(Q?cy<#X`NvaI( z^r|4=qqK7Bq23AZiqu1J&$WTWLx~Vv#Q%z=V9j;!Y4)0>mG{t5bmA?iAkz<__5ncU zJdRfT6}EKa@*L%ty|&M>ygZ{?SRR9P8xuUeT>2)eG6yI`jp`E%Lqe!(Uy_^E5|Jvj zzkU1my!`rpV)q7_CL1fzCG#~Dca)u8Z&Ma}&~o%oaRs`~*HX&WNKO4I10qFNt&hN- z^%P86SL03BK>Ss(rq4-s3nR{<^abTtKCz@AC!hG!Y#Zn z0^3^v-wc%9Sl5;YJ*Ya*fBUE3oK-*1!x{Yeh|`e89Bd+9V&*ImLMAn1iWnoy#J7)C z20OJfDaku*Ln#ezYd=PtFYhCc!r+U==*ASz(V?G$n7bO}-ZQaX`g;I!YTE_a=9xF; zQq9NX-fy}>932Os`B))ppt>YqJ<~BdvJp+IVK5g#8P`+rG@WJkaE!$AB#_r*Cj+Zt0cfA zbY>2C*C7pqR!XEH!9>P4MeNzza0M+=D}lCJZd5P`!H5ANXUe0_-DP^j)jFD(pN95% ztPfD=Dg^Jumhh*tZ$h@wsKi|m>%J9~i`W&Ah-O(yEOUQu(4 zUZd$PZK+JkYW&|W^`+uxTbzU;To zeJVF}(QOOFQwTVy#x1VE*;Yur?Yl6fCfS~3dds1;xi5!wVSL$V&q8S1ZI^C5pHFDI zRo$i}W3~ADcM7$^zqQir&$KlciF)=SlaFN=gC?^;_V%%^Env(;Nr1Xd2kpc z30<>~^2##}hk+QK{oUW@=@%c*uj4E}c8lrn&RCe{0ixH&o?z;(!gXumTT`t`ig(Og z_NB^&UfSI(Yhkf%LEW-Nw0xSAUKrN44-Mc7{S?Yo7}Wr+<4))60*F-}9A`8;fj!)0 z1*3MV#exhaFRt~7)wY1!hIUKUo?CaiotrFI(ax%&rFqkSM`!NpMYn7kU73}FRpoNp zi|bcfh5>|c81Gd3#u>eEF}-uhj(Oj6;c)kl_ZDL4%;?T5%Ds}HQ}mZ78q=*79FJyWOWAc(E+LFx`Z4M2ua&$x71Pp zmxh@e3h9lF&*<}UG!T*0&^Gc~D+#Xe3Wn@xuWIBS!T%-soWCr7O7x-0H(QzN^_-Bg zPBI4#q6&kNzeZ>%Nkp(dF#%UhO@ETy#a%@}c5LjmlebYbj18H$M{A2_CwtH7FUBg} zWE8bZ@mr3z1ve|1rDYnh5}7|tRhB{S)aS^m=0Vw+S_)WZS+D#X|AsVBJ~>Y}Hk_N} z+H6bqjGHJ;Zh{$rAYXRq@domzhTWe+PC zXQw5+c1^!1&t@9-?5B>xGvf&4Qp`E=ZP*D&;r+bB5@t#W;ndW~8C18#4Ym?Ytg?Db zp6Ny=;70jvQ7~<(M-^E1Q^bDmQquJmy-Xq+bNN}l%e71Isyr=bz$dL(lP~iuA5yA) zlk_JwC%$V9+~u;Jsn`M_*MQvmyR<*jEM`lC zQ{TbbokM-DgoR19W|O<{4u*Z_d(0EaODnFhs@6L<+)fAR^JCU07$ait=Zx~)A8InNy_neTA)--Om68Q15~$x@1I8=HVAAD zX4>L^{`oI|`TF(iiE(XA`cV=*#xzTkmGHwVxoqj3qirC@_Mzn@>$L(=?tPU+n2dGo zHx^mVk*@IeSe>zD>SCB_{j5bQ2j8kgjU7}dSzXR=l?QU8=5Mm!8T3qLkOUc6wO(xf`m| z4jSt#rr?pmQ;l2yXfC)F3uuR;Tp@z(NK)(6>1R!}zn<=ryHx0}251ROb+v6L?D#z* zbUavezC2GHsP6RL<0GR4QSK3>AJUX);3AkDCzdNAY*#0wk_f(*1AeDO*N?wmTi7=4 zg0t8_kNeD{v4Qa&Y!{kTM>(AFvOOy)T|H0b%6S8wXCE;SNqsaAId@7LEc5ey9F{RZ zv2D4wxKsh-xJdIkzJGr2%JAg1Zi!L*9}Ad=m_XqYs$G!$Pe1+iPyh5Ee)hAU5lA3T zb`T5ZT$#K1ge{z>Uhub0dj;#l{6HsTjuZxGcTEv_%z>06f`j0;osM|v=~p2`9Q#G$x)y`h*l3Bb1586x@vhzK3C@YZgg zS5tTx4ByI+W5nm7WFmCMDS9WDMBgEd%F@X#obExyXKL!Zr@VP3`OTy=JNmgQfjWRS zCK1y0&0hC`?^HYhes0?-DT^^~+)l59A7S3? zJAPIxTI~C4-vrFkEbnnl8vTJsa?OO~=`IZWiq}90y!)l_jeW+$Z(ez8&SlGQ1MIIc zsoam)yE&iNl8Y}Nx^gb)5CNa`2p_-k5){PgXwKmWVG`%nIp|CBe{ zG>Sv9;Q8@!UPrEm%qXs4wX3I6n0y(3rC2b~2bNWntm=kR6p!+fxZIq~wj8nvDxM?q zOM|idVg~$<-&;C~R)r*v8A+^4he)RI!Q?GM?Jy%%Em6pAs3bzA7@Id%AppCNicJ{1 zyi+T`@XStlH-oH=CIj7QL0^wtZw|}eSNq{MAtO`Zd_A*iW(K%s2@9Rh{(eFD?0Gp*!M z0X|=^`JC@R+FH}AN?dH|#j$C%vP=AOjE}D$JEm1!9~b%MfX08F=ly(sGztqx=Eg4* zFzhoPf37<>uOfX*viwSsZWqt9n(bL6`1oVaUX9mPF6A-qLo2F_EO;eteaPV7G*VEF zQ$?IhMe@(-bN?9us>+7AjDXv?6jajN2Vr&2AwyhMQT@G^jm%8in*M-d&g5aOqZq|wuL_bm=4*SY^*82L zhw8#4<}ol5USw5gPwiXVR$zNRzX*>_cGJD^=yN4;BnK7<-I49p*-yFVeOW`e*vhfE zg)P^Qpq~vO{7TQK!qU4Q*`j5p8WGVnah9nCEziq34FbH4vG&#rNO{!SJk*;5AhZ=&@CYi#MxrXASX z=jMWPFz+3sbeGKOT$sL3z3q3Xa!Uze;dA|zsyRaWN;KBdrd#>1DN&5CjjYmw=43IF z%#GrINvF~P$@`aj>VBWzEQPfrAOdt|&sD*wYsQ5hmOW5CHY5#n`Tz*i)VFQwKu=n> zT|;P{vqvjAh~|XzQa=S)NKZv0&(k5$LaD$c~yW^Q?)twrEm1Dnh_lf&v(0~&d6n;DgV@0mep zh!4=WHqVRtZx=M57$}-h}73;(==CS!CW$5^#!T|>6vQ|3tR5)Oi7llIaHqOzl zw!liee7A(t5>Mp(d73wkeIdFW1zX(m0A0UEd_q1rx0{%>&fR_M^7wRbe#PevLXpdc zK*}3Q$TDHFq_X)6dUJztNnT_$UiwBrtxiTJjHsTpLyw@rxi$3?c||~miM$c+T|jRM zQNLD=ApkcT8ev*(y)GITE4g55DyGepU?IMc+# zZp4;RQrrl{I81QTX^Y8K+6IOwoQ#rz&j(`+;Dj2N-*t0Ny{BJ&{rck@9Z&vl&gbX% z*XQdqWSoWeHGa!)?*fai`QG8;`m(E5!#VK0eOF{xzK;q|8K_%^-XXX)1=~>GLmtCm z($ppG;`zAHh~U;L9d74*o#k)60PKN{!q}iXh(o~CXBhT}SkMCn30mW}=d-!gO!xft z*3pDh)+BHItg%F7OKJDE)7(-Gk94xRK`kt)Ot}+VL4oIbaC{dn#~NGpx}3g2!?#Jc zH?EmGq4Aso3aF2=i2&ikDS@scBECIV;)_x9fMucB>mxH9%(S)>4l7wh|*3 zr@+l#ZXNYJ)Pr}2BQo$+k=Egr&h@;ngmU2@1f)+Td0bZyi)v%?{tLOwaeOfWQ!o`N zH4XAw6)=T+Z(8OrK0bcPAjGzviM(UlegFRXe161B>We@)-p=1pZeq|AlqN{btXgi@ zAXvO_)XguiN-dUoX?(oLql2nTm^Mwc8m4yAc|(}VIrdFXAs zHJ}g=w?3peATf}@B4MKxb3RkPAWG(IR)myD z+@Dq-(Q?fOlK%U(YmV1ztB$kBJC<8oqun>!F|x0BS~{yH!A&L}2%prk z>8Q@k!sMF{!!+hkfBorgtyDWGe*rewB04JO0R>gndTjy!1Bhz}1{%QGTrkw@GUd%ILyMe*X4~MA2f2DdL#p0c8;^EWN zLaxnmD_%`hG$n)!2#eY;q=5v}JM zv}@BA@HPQtz4FIQ=Mw{E=&}^|cI%wPjra2Nkr2&2cL=$4%fT#}rv^a;$UAzfo+7r= zz|2MC?RLacr9=9{jJi2!Q0Obd**4a^i>$L)mg6-bU4DfG@RkbO$6@B;+u<1MxR#u+ zxK$XF?)D2%6cc34WRNERvfu1ySV z*aBGTm~C$}LAnotD9J>c{JrBKU0BA#Y4_`b0n3FBb7Wc;rc+}zQl3*`XM~~iD7%bG z>zdc=bI#|&usX+YX?H~bh-ncz<(7P-cSeI&?bwRKzD&$mvrClh^P{Lh7uZ(`M2|1i zE0gWDUENLQc-Tb{hUrJANe`^BJSmqw-qTfJp3kf!>mpvz(z+T^)Va{fj0t~& zm)A6+W>GXFsV~OAIlB~6J5W|*i@o)B=7LH`yuk!6=PlrM9Ggnqu3#J$-?ard>@M2? zdf?jS-Tfep2k*++@0noAYd2eX!?N0T$vkeS*zU^EA5<9ZPR}~W%{?Tw24hJA|5|M8 zAces%6Zz8AM-)hG4m{~*Mf>X|)(uM$S;^9Oo%~?5?#o>rb6KZrdSK6C@ww9j8lU4i z=Dfnr)m+$wcs@UV`sv%pp}W3~$AlbN%wDun?m?8iZ&e7sab|y=YUYo9!zy$nue!t! zB}7n}f7)#UFs*`vfyd7Ry}ALLtyw#IxD1+70jFi^xH-2Vu1&o2H|!&~;C(-reV;zZZL9ViV{yVTaL-k4 zo{l z>tF}xzR=q9b-Jx&V_&UKkjQgqj1u$j#o> z{@aUL@Rq6RLm)P3qioOGG1x`7{o0T}KR+LVNL^JG)-Rt9FeGGcrq6@9y**Q_x~XJx zhBaH3GH33uQ*br3wgf6VG8l!k_pq~nxsd^ZI-RBmYLRAxo~wvhAug&+wWG$=)wgO*b;8yLr}?!DO5ZPz z^!A$1quZ0NSz;+NL3;%*^B@2C+xhXsJb>_$3J7Aqy`FQ%@_qmIeH>#wW7s?zOcN4-gF-(HZi?f37pyla#Y$&iw|aQ9{%EXy$m zpXXL;pV#!*SP))h)0ETD^iiqjgumJ167Y-Z(%aeOAY4!avRmgCO>E_CG@IgYOP}3U zUn)>aO1q6>PkKH0pU+9Xr2FwYxFjo|)$Qg-$6I*UUYoYKUoSGFm} zG)ab%4@0o9&D#t^F&UXW;1@wUtiyPgaPWlf63mPrle-B$V9sai4b1%fGEFok7V{te z`0L}U=V)(jq&vd%>B_Vl$SyV7r+_uu%x%y8|3FA(#ctht5vfMCVD({67Djk?5^gXH zn4K3Ho%{lIL6ZZAP=I47S4wfDsS!)8IKvfoB}eNhW`02N;*py2T6y^g z<2@P`wS<5N3CnIhHG}Df3kXSVu@5=A!0!<}&pnqt7Ep|%sm8}MCuD}(X~OAfaT%zG z=h2qFCFyJvx7Y=@)Yn@(Aun#5^G%ppe!cOg95>Lk8W47iI7TX}l2uW~CP8Oyn^F>v zz%i66V_3W@A+BBwDgXprb6mkgc}w~89S7-{w2NIz+OdH@+e6bbJ9y_HT;|59_$g^T zG1O!Gi?9(K;l*9^M7Z58eDyT-pzSX0#$jXS_m-pQ(kltW$nK8wn$jrSEl^LxSFCKt zmOF}8zQ78hFYlTBx#Ib}d+b~|4Tcbj9z z;N^#|+-?i1?Ah9#zj*nb^yEM=4p>T<%zDyP$1oJ)+tWEedS>q4*wZ@KuA?y?7Yp?^ zPahv2d<_l`2`hdL>Nd2%)!+B4+EjC^0qtC5K9c`p1WhSMO*wl%j8=Cg@|)@(sx1jQ zeKa3vw8b8~+H!4FL=L9U%*5=`y8&vCHkZmigIW?>tv#o+hsHrb&TSbu(U(xF|OwX9!`i}fN7ve4mY<_~w~>c?q#;Raoy>9F@!+3t;x9!>-7Jkm+a`(A)U zJ@gFe`JkU#pPZ{P_YD2oI^=%~s{Cfm=a}Ph`d#SxuWbw1O!Q^@+?s#DK=`-qs2hgd zGAm4mKziqel!C`iH5Dtj{aA2v6PNl0-bYdri|}m`(vXrV_R~qkXT8~q_ayjLLu13{ zdl-YVe$2g!Y8`H3B}>|PWb()ZFcDw@lsUd+t+WnTFKi3<#-k}OfjP@3Z+#l8O^C#n zJo+`&TKeN61n1*?6TR2X2c6^CI?t&sGGwHpxj-0kCl%=+f|H%x;scp|KmGLA)Bg!G z!>T6fb$T?9frZ4kQkj?!%Ubd)!^w=2_vh;~*~4oODQg}n_vB|(Z{#s3>ld$idc6k| zCL?0g3yo`vZdTYCr%#84O{71T=8s1k?81~=An3U9zj^#6{5?|saeQex>?jL~fdYpo zmFZGv46!umswK}Az6Di&nRbcHqXxG z$pYpixErlq8?TjGmBlIL+-tSP+Zt~w(v2y{bhgls@y(EC|FBc1^@Co6gCqt2dHG6| z&L7O58&`?eOWk)nN_D68xNp_`95=baK>K&~NJ*aDpztEgWqD+GHqd2E%fFKeW}eJ5 z`EU0s$JDuq_DM0!ORp+tbCO#!d%N|OjE`%`s^(@S)ddpjiQ*lD4K?cRt zChK-Qi*tGwO9dF(+);j7^ssHOz>BMNBh3g#?f}LIhqX;`ap;KKKl?7aroA3Ggf+hv z$sn*pqKY+`)aUGB?BFUj!gAP`h>936Hg2rI!iFaak(}l=!IqLnwTXy7zBOkmjii3H zpURs7)w2g`)gUkTdL2ON^W(Yt+>HWL?jTP4N?sWAo@6~~YAY6qHlx}uIW$cP(st7W z5NR&Kz|FF+=5ammcQS@asfgP#8^uIpXqy!=kn8DKs4Q$QNwB4rP*>+J4Y{ixm4{B@ zAN#-b7%+&B9lKRHx*gkn2A5OTMTIt`RCiIVSyx5m)4zt|vc(uuf(#2-LtsKw0553%=Uan)A>#3 zF%_C%nY2e8MM=W}%o%I3#}%6w7;j^%JVyS3?#+MmhhJxYg~uIpcNDlokko2n{xA$>^ppWNE(@;7gXeymtXU5l z!#!w;X^>YyQFn8Qf2+29WZKd2TGV-|6Zws%FLmW2V_IB+-V(E^0~nybpk_<9e{D}H-J4yrIYLPxGv;YDjW+&Zui`+E?N>4an9n>0S*eJ=EiggY zz9@(IeaT1t!|#8w?`s@mlEC_PlkaW{A0J=GS+$E5#i&VIi6^Bt6+?Fm`FpqJ8+s~f zx}j|!gP1XGal)IF2cS1dIYy7btxjIr2}=qN;G!TaMv9`LY=8E+UccIv>`BGG;k}4|N5@W>i~+kVz|3%H$>{z!4=w2cC@v6S|(P#UcZ=Z zdRd_a(DDMdkv^g9KKIt=%M{*#u;hj{YDXKn*sSw8h%^ZMpu-g|B_RmFO;TrP8OKaf zn94PWgAZ6HA&b`DwYIX?Ys*z-BU)G+Ws>W4!VU7l+qq$K5DXnk##vPvX?hiKJ8DooeJ8u>DXK zsP-+>I8Kw@MM69m5W|r#VqK0?f9bLEad8-%e3NSJbcG2EjoYjnMN0-sL%&($zlj{( z^W!V&wey!2v~;@qClx*OL~J!Iwx+;#Au^5v1ePFSdq8a+dYurcgWQV^;T%}ey}AG{ zEriksiKttP&kQ};xom+%aB_owNU<2)cSUm*3oK4Y$aS8UOl9K;I9562wxp{>^6F!= z&4&|QEUE}UFP-8XYcZEDZB`mY?7qD_r#QGX)|Ptnv#!IMTp!QR;pe)qvP8XBs|fL4 zAxIRkjnwX2Y`Sj|V~`<}PL1B>UMW-^cgiTsloD|rU4EQTih2Xo+Ug9fvye6`+IrYh zX@&CQR)_|)9Zz{27*V=g`OXS%j3mEd<>}b<%R~3UOL%@6k&WjlpBXB=J2T;0wm6^} zv5F+Iduk%ejk@dtWMmPVft!D#St%ZA>X#3^J~ z5a*@@XblOoCW;~M!Qd!eYKk#SZj{k#DxxE=Z+P=<=h$A~bo2%xu_^VRHXfH}F7+r8 zOX3~fcesXGlitdZqMco!q?$75(oqSV)%Zc>_11yC?!6+f^6Pm?8I9Q1l$Qm8N(EK3 z9Oe6yWCQ7Ls|`V>3fC!r@^oXSyNdp5qpMT*;+?IoOAjHoEmYDBdq$hnb`%1I5Gf0) zWo+s6TzXHBFEf$ISz%XT%D%lhBR?Frsl={OW6N!6FhaF3!hs)UiJ%6eBHN?g0N>sX zt8p)z!*D+c;l?V5r_aIZdF+zg5;ly=0OwROkkX%`<%~C1DA8;6y}+Hhg77G%fU(8= zyacZ0JvUUIqv@My7xlHl9Sf|3T+vo0F+1b{fs1SMy^TdFq!VBS#o5nBjCtJ5Vm9Oq z6Z#ZD(<5lX2KZ;Tj4aOAsjfBW2O#+|0QOm0c@pg`v#Pg^Fmc(nezIM+A*-gXODg^f zM`&+s=uR`rZRKOkb6a}HBEmXj!Xa{Kw;}A(8qy`>sm-Y&_^Q7<-}ID8fQUR&s+}-L z+_O?MY*XgLD9yu}p_^mkrW=XPG>93D!=Pu_{I&H<5({d`|xPa-lr!Dt|=In1UXIe+u#8Bn(N8sX=$~} z6gr=E_nUI$HtKdH$mN3MYplbYNK5zRAcUk8s^ct{T8jjU+H&BlnH~EhB|-(4Be~Xq z{MSw8603{g_u8RSV>Ca;_)wAHHeI&8x}2}!%!P1myp_&r-Uz7fOMuBw<0MwD3Tabk zxu++H3eW;-o@{Z}zj#bH2N1370JGPW3-e=!aAX)4U-X8P@UNBl@jE@o${u>U7kj?F z?@ls~F#gt+>marohVL-RsH%!7^Ig=XE}=X<K(wY+K#hY1EdDJ|H{A&j*9>%FEKAH5-mg8!B;Wclk3vSCtKG?)#drQ8wD{v z;k9_?FXS3rEl+jT=m8g`y6ehseg=59Q5#f!R~D8Yp|zA zwTX_l7<8dORA}>D7-?fCEPS1A;%ClJ+6k;Xp3f)_OTto9a*wk0$RDN_pfLZd*f7bm z2?LebDbk;+!A#fu%6-wv?Nx&b3!FJ8#4H@?g6#QxrbL;YYq6UGTM|H|lI$|dm=-up zP{VkIt^PQF`-^|^{?E5w%DeHwG49{LC(!%&`exgHyta*J!75Z=&uby&GB_Uc15fx=DhjJ(5(0H^3i&?DAXBuHU<*z7)q&Ci&%txRY$%cR!!k zy58nsi>*9hzlCtxJUBe8bCGCJMwq)Ivwxq2~Ej7xR+(sc^AbxqvXS{sj9mFvSDv1QFh%X&ZrzDx1;qOUlv zgnFx4&=@?y?((8)paZ1=ty>4s9nGBsFU+A0mcNH~kdNnGWLBzpw%??dxOD+B8*At- zpt>1a1Er+i&gRuLXd5sv4l!x2oMIy4S^5M9}QB3{*{afW{s}$8ltZuSP>*FGq z>y2DGwj*dDRX4te%&g6|7ec#WUDj?E$5qKniJ3Szo-6ai8pg16|MW$YD*epHDzsu+IQ%G zT~u_M+Ddl5QpGQNblJ5WhN!eO*J1e)UC-WRhu4Xugsz$ixv%T*m|E{ABY;jIBJ1|Q zkT1ube~v$C`sL3UdB(>k8|p(5`tA+ob8iRy|D5kbFo@HiGc(4?m_a<4_*-WIx7W0Z zOqHcfVC}>!Pi4$nDYY$?&Pg`cZOjpCPU8h{u0`WKY!ATbMFP?7Crs|1K-^3U_e^BZ zPZfU|tB|gxp4*eKWgdvzAKu>6*Pmqv8Ow=%9!TVnCJRv$X@V$q?N<=&zM#Ev8Q_jF??WaaTTAMH^$uvq+n z(ztO`YwuSiVJ)_0@3VFBGf8Gcta%Z`!`K|H zef#`;jB(l~f&Z2h+C|JOrr+?*5*6qfc;lMcrZZ@@H+Sk|kOYuNPSMGjIC>5zhbI+v zIewFcCfcY~idh<+Je^R9aDYTh2AbzpQF#fUrDQFZ)Focott*{>cu)WGF+S!A!q4Xn zc$xpY@WLDKaZRS`XL)N%Zj!ay{~dVBQ;;^|bNV2*xzxK$@bikoZvCcRMgwF{fnAMF z&Z_pB@k=Dkm#I~kBp<|lG}7T)ot&cTdO4mbSAob9X^JmIVq%w@rj>%5R>gBGJtsRv zjUQ1D3nA-K)TP}&+}-uvtr_8-itn_NQSk@SM|s_7dPk2)K&iLu?-Uc5hA*Y`=Bif&Y4FySTW7ISazH8Xq zOL)(S#Lp_Rff5f(i-=x_!(^&HOL!IG&0B=I_xLau9)T@ld-v;gboqWIM)IR~Dnm7T zdrXwY`Yv&gcWw53KC3eA0!xLlX$$qh1{Gc0K5Kp~ME&^Kc!b)xiEbpYAC|GNQJYesaR1oz7 zT!t0XMc&U*=2(6sdn)v=m;BK`VvI8#cd0yIRz-p4U6~TiIho7--NgJ?XVZh{{>H># zub=(==iyteR&FE1x2^feHYL+(M4N+uFM90pT}Ml@%=rX|&NgkpH%zA`87<;X-#R8A zt)8zG45h)vn9@9_IYuizcLNaW3%2e&dkMIBxh#vD%G7Taq!z5~cRHIhS!pYSF9*x@JC1r=xfVr|@pn1ogc(o|!n0E0)tepKd z`R<6ZsE!a++Q@M-jY`S`Y4~M{)1+4S_9hnm;vnFUFF$?z_GTE2=f~xgkQ2k4thsg* zsH}m$ciJcm(_vZ-WsdI86VG$5#ZbEHF|OuR3n!-MbKVAKog!h02E#B9kFluDh3%kX&fQpLN~QLXChN=$S(mM4UD98!F%&aBpVP$2)7Pc!*6zuf8wAum z%BpBsYw4yIwgc=eazO1LZqV*0yz_MKWS=%>h#BoKJCd)U)1dqL4M1p4yp7Bk4LGLS z4G-1dDQ;2hk%^S2Hpe_R(Z|U2tNrP*EkL(9A_-27NoW3nqu6 zO8=NM+ZypFUu@92BgC9akLU{13jC_PYU>=`9)v7ahI&k_LTezgl5@6r4&?xTlf<)N zeHUuswIVUmEono4LZ>m8O_B4+8j_EJ(6BcH$UxiwsL@_)9&VVAi&p~!%hoLP;OtO4 zE^}kfY=|0rd&M*`ZShx&t<(8UfSi~JlyrR`HP2xHUZ=!~tIn$2G)Z5K`iwY|hVD#! zxAh5u!d+kwo=B9LV`Y*@%jpP}Usqe!{7*tiID)-1W4LC^v8Ik0GDjv*P&saUl^lJ! z`2>9n43Tw=~u50ZlF~oO3=;it6yZOFscP2N&gd&f=44z7N zkrA7eU7)_mM|Yaed}*a=Fe_G}NxCWqf93oy8&?n0 zO6_>C(QdZ2WA@d*rW2rS|3U!DgRi1LD<9-+B^&WTC&^;BhYN7bZwN9gs%n^N&+VmO zEIm-hS1E72s^GyP#AdmG2x7cAQ?f0}L{fr>y`8V;v@`k&Dveg}qKkH01X@Qc$GT2! z1amp#bSYiHn1d(ioJ{8HEC$MI1)xCXB)pMw^N8nffB7%=G2cB7y6j-i4?w`^ZZK5= zFWA0Oc6P_UXkv7jbt3BV3H?eGcG}gac1No$GaRV_lmKKvo4?nt zP?z-`-If=b2ni_9CEw_1g%8El-V`&`E@uz|EOxVXIC_g8LWDhnj!NR)Tkx%OqFRja z<~=$7rV$ypt`uop+2VIQYNuhQP0`{N9(z7vX^rzbrIpJ2=4`{%O$={mJE^*#Jtgl; z$7-+VTJB72ghRb#&UD3SvUnj7=D7#Kxp9=9bH?m?SmOam)i1iJd$ro{db`bpEV!e| zllEtRK)J41ehiF0<3tNEe$p{ukV$AT8wape@D+B@W_mc{iss)HrP4l>vRK_~0ujF+ zBZ5P<8JbHv^wr~kH=Gyn-IXgEy1F$fvBQ@( zd4{9Rr{~mOdgn5%1jNYfkjV{=IkSXGucnaaIFTB*}XDJKOT=XFjb5+&XU5_(()ba$5%a7)RZzgFeh}%a|!l z^-Py&*Pk})WQ4aR{TV%mF)^on_ts{zHNi*aJCwzP1HssYD`kBfNNx_XyogZ6ut=25 zYCMC9N2XRct-B;{Vb$ibtc^jE5GgMy&n~gpRP>Au@5AE9s09F^g7JyR;XW8=lqYgn zoMcvRO)*RFV2>aT@ zGG>uQno6m_BgC5s=O=H_jGuU>Co#-s(~cz51N5v3kj|j4CU|)k-CFW**7)Dg`LW_5 zSG`CmnFVB?$JjvqVSg-yTWXX1E&MH#o!Wl;v|iEzyP)otNcYMQ4Qz*ucS%CHE2=WK+tx1G~; zT@|B7$VhmCg+rla6pc4Qk2i|HTBU;Kz9p7}OBgOosi6;nwzLlsuyCATcZ z2^%qywc&j%-V=;_{^8eufAXBJ{!@6n1V+_`BaeleWk1$XP)U)+!8K?N#&RCFSmmCM zT?NXk0e%}Dq-c8;me-MQ7AKV74n zsNr8OwmHdp(-+F6(t0K^V#4h@EmzNiyt8eu_f$L$+;NCYfd4rRdqH=`YR@Re)ewCr z0h*sn5-5_vy?1ms9Yk{(SnzaV2?$g9OoGQLI_5{uF{pZEzt7zs!QJ!YFz5}LUU;RECR$c_i+YxtwzVL)zDAvdxWdIbY;=LgYs|vm}wi z6ZH7PcFyyH4Xs#CkORK&v^Ane?OpBE#{ga7|75rUCTdS(4?$Zk2KOk7FN2%!CS#FR zd~^vO<2h#(7+%@nmF~2@eecX!QA(dWiP-GFX&39$cU9q4Pt9Am3H$WtMI~l_ixMxb_?y_rO1NztD>2^O=M=qDABXw;h zaA@?@B5HA4x1CG`9P|Y=HK{v2Rv68tx-8LqyPorz$I;!NZft;hG2kYH%_VhNeW%QR z%n8je)#Wl(s5gB(%8ACPqy!gG`VWS!Z&Kf5cUPSAoQJ6}&Bq6vrk`2A1D9}N+ggt| z)ni>kBxmZ`aI{HxXKJ>D|7I)NPzCcOSajXba+3_WA6QJ9a|R$`#T;+lL`R$c)8}%D z8N-Y~c48x*{Xk=`glfrszYZ6$q(p)Xt7GV5-fes3df&XKU#p={e=eXe>cH!@T}XH= z@3;n9SkC-}@p)e}_dL-(Q7u1ciKIHQ^+aPoSQA+<78AiQcUY^Xx(65gq38PGwY6Gv zUiF82e^ysjHX@qP<@4XwhzOqCmbA*1IUen5^(+zppY8T$D5E% zc3`C=1JQL-rZ=ojV;ftNn=o96b-H_`YB3K1FCis3bh4O$gc@;BGQMW}mAQMI#MYIB zipd1j5R_PBO=|(=Y__-0^ZVpiPk^%|!-pliH z@xg4fi0vccRpOU-O&%t3tGlITSbGFiC0VWBx=Z+J@MSXmcZpHq4$aSs%eu`87_rwg zli{&;gew%y*_pC&&Mk{jRAtl0l);d=7u-H*7E<)co|o&U0@PY*WVIr|MV=pp4TbyT9Ja5;ZJ{GD)P05xVOBz7?T8 zE-a~F9Ge=JQO-KGQra{;lZDK9J+KV6a-)!hBcgfjb+-DvulL;XEz~d51E89zrF{ zBw}I?`ZCO(VFj+qlDO7~@6L;<2THp&xz&apT>^|!0eF?!%$oyn_Qi9- z?S=Cf09fhNv}I!lzW558&OqFpl$&j0C4J0!_&#l1EVcxj+18yq?|V$5Etam6Tph36 zR2jm$bjvQmY-`cN!NOE>J@T`kY3 zG9xT9>f$espLwS4B{yKUVV&dD#5W$*s*s`?xbaaFaewGc$AZ8MxZH7Qk0o$qZDNtf zMa#^kJm)a8#^TP%-?$z7d@-KZc#3f<`jb*Y*KntKpl0EMHAm)4200nG;%>1*?805~ z-IEgV>1WM&wF&Wz{`}AX{L@e0zJC20ts>Ol{-u5)XID<*-4FCEuI{jWir|)reFgt> zzDT|_xo`Dnx1%GZ6~U4ZcJRkV zgy{U5yU*|C{cZ7{7TmDN9MuV}tJAI7teofGB6*`wWglt}rD|nX zFk-k|54u37sOi1bI1u(^=y+J2D!r4-D9rh3Q_ack0PTISBV&$O)#uwX{qTeHK%@O) zEGBc77@^@vqiwl1eAC6fR3F%Yob%Qt7+#U(dUco4w5ZHBIxcu{Uqve9*-qZ?+LGFQ z-`i?ABQSI?O6t8wPJJ;nkykztojkvy&^^1+IhHS(+zrEObRxfngIg=;OZ=uz?OA2Y z68CN6OojEr=Wt|AJ)cj{%OQp3ZIi(fROeP7stxD1c6ucAyv(=e?|=LEr(ybX6b8qy zIfw6p$*p9i-re8~9H;tsLC{=B8?uvtDX&mjphxF)4R=3X=*HLC zdhEL}Ee_>=l<%E&@L@{cc>#@dxUlX!5O=2fadK*0qD^|){N?8@rdIpzq!;F#*8u0-HRk9UgFhMA`TeC=Njtv-A*0FW`IZc<|I+z zl=A!CJ(L?|3zF^F_E(c6&6c{jJBL%7udYWkRy>8XPIKa}_A)^?Ys`cib#XXuV{#9* zjH9r%K<=)^d_2c24|N%I7LZK7A6;Qe_TgNxC+D4}8KPVY++0RqRoZH5VnpHAiXxw% zBP8wk2M6|)j+@^k+2bQCECF>Deb=)AVt&ADlL|$f6QjB{9c=;FO}eYY75x5(?({>;j3x^3w4H@cEtq;u^CLGv;!aMBr` ziPteR`EW?dVo5p>qiAcOv);PG)lzBbXFWSvGtS6ZfPz}+E=FVPX-f$JLr1tNVI`Urn6%XAIlvDvAs(ptRu|Pe0Too_rDDGcA-vJmU4fdNV$Dc*Yeafnoyn@-nw)~ z$4#sUFU)3$Ghy=dbgv#5$JT95Gl(}wdNG?fl?ND&&-qMlt{o7p++1MzO?u~oXI|%B z>${(Mz!?;K>t-zSB1J;G>ZbiFOL2ZCX|hOyjEE&cE;e3_4JQd8p7um8Wm3N^H2twi zm3BF^^LAiG*P*|sDI>`bxplA-M!^;S~mqm<$LGg-E4Q{3C{qkg3bPVcYHYIiVr zYhAMO9Z(CDI8AvEXq^}$-b&M^jg7QG%G!AW{e0D0&g_?+Q`*vHDNpG&&s;{1u8SB)$)t?RI%_{O$H-%QogQXl+x$wdk9U)M$#<`| z@2heu;dHE>CT@38l*XKKkt`(k($2Hx#qc!mEYpoojta%s&?$lgQyx$qG*e1U^6L~&DGfnI`0M|%%$SI1*wL`+M9Q=)pgX5*k$Djfw49Dy8N3T~$-<2C>IyIQmGXxhMuy56)9v^CO;)Db>(GS0uH^d(){R-vx;DIGXa04d@a(bZ--eMV8q0!ud>J zUbOiqow2=gJNvdeB%g(donqg&jn6AFk@f>QFJ6zpiCSc;A#L1957!Xg zRcLZxJV{Yh|6xi}4sN6i1K4)Bw7%m2F0em)^D~;7bNkQhon?5RO!wx1+I=eXkE=YW&NX{ z8G?!W=lrX4sQ`gH-9?*4Vb5g@L3qvb0#LnJxzFC2GY>EF$T>j|I6Pu?>1J+Dp9@gX zDsKji;6#9$@(c)UqC2*RB=reBDO>p;E#|7NduT0peK_m3RcKPs+kRzHrCwtoI*Knn zyH=q~w%y@8HlD~oX>~oyIjIeh6|S$-Cz7!5%F^58Hqjg7yQEwRKawvXRwMb#t6dCc zf)EXL-?vXHMco4W9C>bN6MDO%g*m7W`lez@>lII|0dPxNGC?2zTj$g|y0I2ql-K;A zRhtCYYHE5pH6v9!>yhLNxlV4XwolHKP-D*wj4^Q|SwRwLgg{qG!f-nVT(vw_R)qQY zQ;zO8C$>AE&yU6Fd@O$EmSS*n^b&hc z@jR#Wks;D+*M_eJ69-`tV=q=PS!V%$M=SyHJ1RQtYEHC+Xg9^5GI%1^g1q*d6jIt+egIBtqM1ntyhdq*q_m{w$+zFMD^X8 z*IlgbXP^;eOV9_HL4+mKtLXM(yFO;|wO6pK&An~OEn|KK22k%Efu%)*YKQJ3STVuy zPym&ZOf?UD*>i_IlVVlXKd6+W?_Dcs<*d@~yN+mpAdA_8Af=vD`TybK)yUv?2;hvY1L0uC)Cx0Vok&F%3^Hwd`QhLp}VKKGdSm6#y zw%nulN2kD=ZCJy@CvuS*sFctOv7Iv5Fc-Z#B21h!_>B!lQ)uID(hikC@=>k#9WQ3- z>26Zb+{k=gMs=-RHmhqzh@*q~BX*Y7QmY9>PIsl0;4S(~lH%KTsX4%LC=`Se*@0Sj^qZlJ$g=HR}NI+?w!Jieg? z>Ax#lD9sTWdd^227R46a95{lZ$|tl@fV`4Sxk<@EjwDe$G-B#Tp~*+KE+vGdkfAf? zKuk}jJ;){yQnQd6beH5+L_&(_20V8-<2Hu|6Qyy=P@Ze@VRUb0p4x4MwnAv>mZ5-? z&V@`xE)GX2{+|8HQCRGaIX7O|LyttngS{j5T^VzCK%u+ck?7L3UACR<{g}E*EuUcl z*C`Ah*Z#D+t{4Hu6DIBa$3Oo1ureRdYH+Fq<#NVg_>UW9tD0d+kZ~7nVmkUmE4po# zPkOGIb9pjMR2MJa(_RYV)$Tkjozf!)X}irGw73Fw<4C1~U%glh@weGE56>mte5-C+ zC2%OEH{QOGG#m@n#_k3I z%fL7pbeJ86+D*d%a;yXBsuspDhU-97|E9UQWg+snYlB2Ggeu^F-D$4IxWSFO<}5t7 zok0+FmQBA;C)MU{P2(l&llKaKT5=Io#vP*6d$TjqNwL<5QPn2x<1&(4t@J4C*TY@0 z%4IjkWo}54nfci589!@hWvh*CJ$DSmKm7KWW6rCfmFGO?g;nSJtaH5|Zh8Q5H@ZXo zDHIedlVCyz!Eycc#?pvG)@s#5F&ZQ82Zoq%MuOukM|5i^Ae9T=FO!t_NsdA~ zJwNdajgg9NFXt|&XRvhi55+9b*Rm9jgPO16R9Pnd4b9o(It7xIX(Tev|)S5zT+SmsBCS;JV zZf8Z|=pLAeL_)wux5ZIi4vu`6(Pp-`O?^%hL9Ko)v9o8igL7|z-CHjdS9w(dL`Et& zroFsPC^sR+BspJbnZLT~A!UMy1Tc~phgx{-0Q;>rTd@75AGEf2+tl#&cGmcTo!0f* zSoh(t{>{!TkBr~YO~=xc{h%q$iQ(2Q&cP2b`&uydyF#oXhe#ZoC%l@ ziLs$+p6C#@W?{6`6^2>T^+;|%@VC|*SfS%SB^@)Xs5Q502!;(-UM3%Qn`WdwXm?53 z)nUW_nFd5UGE4L2)8qVO5*$x03}eK31eHk6hMR0^SOo%wh9w5edSNP!#gVv_v#$37oVTs+wU_tnc`Nm=h8aMxn;p) zl#If0b0V^X9S{0s!|e?h-ZbxXKj_iB&-jIA!=eWl&d~i_uc4QVfasVNB7jP_@!5Aj zo#-A{fVIley&P^bQuPGm|L1ilqe39a2?K$%DSiH~<$$=jom^_QtGd!S#yq^I=eF(7 z=Z7yy)5dF0Z!9eduHOtj#yTlY%3#rnca$#f+X(o-H z{IQTVjqtYW_otl+W$wJi-rl_|g<{F@2t-U8a2{jPsghMk5ja(q_n3`?Egftdm$z?X*W${bd zs$}Pgc^fG4)19W$SY#l$c}?1V`1JPDg%M_1Lvgvl-W;v6Zq8q%yyK z|8{umtB;Wt?W61cYHgfHpItn+;a3jFX;#+zYPxf!>^+NS#uP`v)9);nogrwt8+jMC z{Q5b+hVzn9PK+Q@?fg-f@;G-x32Zq*<#|}yfUMM7@jD*e5@$dTbi@q#oKMR2q8f~f z*93Iwx?@~8sAH%&im$rW%NzuU{l- z+@N2V*lur*K3Q{rlrt+2ZFu7K`izcUaH62FVM67@_orWA(9k_|J*faLSQn68kqAg- z&asjS6Jx7|*hyS8)jq%57a|suhe_JVys&{u@ZoCqR=4KB6?8W`UW4h{m_jK(2DB8b z%SKRxs1u@$BPmA>$Vx{~joLVTv~}4-shD z%M5-@*qBuxTYaB|fSe=Y&>@Y`F;Q4MNk1h}2RW7GepY_olgd52-VUBdJ{&wHBa_Tv zez8M-sfOeY+vu-GMtfsP^DG>wNXq8{OeO4Ahm|a~mnS7#D!%N&QZ>~y)C%gkS`FWz zAc*ybapPiG&ThHd1zpCJ+3B;jn6k&&TUs7{H=4$_Ei%{EzWFP9K4ml$_GeQG{M7g< zm6O6l?2EZUzfwrHLr1wfXQ)rQtLI;G1?G&W2`tZ;CK7a>1n~j6BjZOuGHQ#cQS@FU zqg$!1g){?Xha`6bU8YIMH7!H?VnSc%?GbdUG zZWKC`TH@@p`6b4uyF!7_Ej)HJ=ufM#&oRMgRw-M+e6-J;gMvqp{?FHE?giO`ak21X z0F~&g!ZCEWdR^CGv|Z#)H&%BUvIp5P<194)%L2KfW;Z%`Ux3$q^SHwV51w=SCOVs^ zV8(eCjOJY$%t^pEYHmP#4xi@=b>okQcbDM775l78G^-j8Py9ia&5hdTe^cZZnoSzh;f zi0nN-4iA6Tg2*yZ4$HcA_lv_mM&aN5Llj3TlIv`jefd0Ns;jfrzQ3|0zJGo{tj2SW z(<8MBj5+O)4;$B*d6vxs=$TDv*9sSLw+ZVWZ&63lWt&rgFG@v7cZwV(fT2cfu7DE{`ioy#)fHoqtPqhEmWh0dz{OZptKa z91=p>kGmkDLbgm6x4f;M8bY}(^6<0rn48XQvDY4d1{@#6szzL3@0QE6X0t3-1Uz^K zv4~;^SyU4&Pa)<3dVOgVZMoW5tWo@APT3-J?G^uDdq(<7r5@vyciwD~4!)$Sfcd*$ z|LgDHKMy>8e#|)|>D#naX-*fPa|~?}x(RR!)>w#^XDruQv=y9ddwuRlcjoVhH#9>f zkEF?Hk1AqMU3Rp;cEjNLWvL@fEjH;b$LIZrHQ)?Ti7@@nD;0b0l%yhufCEuH>Fg~J zXq09a>{Fg%4!;iE1!PczXg5KY%@(xE{lFIMDz{x-kq`;ym4%z(a;WTUMNJBaZKiKr z@HU9;iQKw`d0o{Wo0HQ;VYy&8I1?I7u`ER>Ircn~{>2Ztlta5a!zeh0i){~=+|(P{ zpcuxbIXQG~&gR_>@`T~0eg766i0UUAhLnd@kW&YVu%}!w?1}NJt`O8U6|Ra|fM0DV z2)t}drjgoWb!;k;B4PF_lgM4$!{QRjWf9KzlZcb-XP*E3`+xCYe*O62>knU#Zg-D) z%;>P$xBckm{_)I8(1gCQ=io=Xo5f7c5u>Y$ifsO_WH+|yeSE$otKN}FV17@ z)faHfI~~g!auD4DL`C)YCXpGy4nA|L{p=I-@xzbv`8>_g3|X)% zurXrhn5m~RIU$<4HFA!U<=CFZ22=`rMLM=CCZikhlposuT5hu`ku3z?G%M)D9a^H3 z0~N8`bJNt><$u{?L&xHipgmQaKW?r!Px)SKy`wAcPOOcRwb{fsV$=7I>OGP0fh7iz zR#p+O{gSg5?mpco3?~FMIW}N+@!0x(QHgH_!3h*IZXF!;NHSEGL_g-JvyAnOdma>EBpPiCj)u!`G)1Fn&be zTX{1RGggTOw4pYcd*AeV^6%8)Q#&oSftE(!j7y#QH<$J)=g*Oq0pt;P{iZUALfngUsP^t~= zWzBcqt&Oe435e~&k)~xB2X)c5xZ(PFe=B58v614@Q&hYct@I3 zvrzodMs3)O?bHBKY(EH8-7@sTw{`UJbze!Ww-0|_gu;j3{{oQxNz%(JU z&oP2uVh?t4Y=6BcUpwk5NT1J{2!$QV!SuA@@H?!9$>%O&hT@XgC|qR1jX7qM)+2PI z^ICT|@PX`$o~hsJYiPsKVx$QHLYFh72|tNLWdvNmAlH$>WZFamBrynPuE~EmO6OL- zW$9J{xs?XD%8CdP1d9^1hsBbw2E=LSqtU$`8Hzb*@g!_x2qx-zQ$a@8$9Z<@d%GE% zw8io^B6KN;D`mT4?T=&0+lJY%wXC+#;$q9V1d&Uge>}XWVRG)rrzeH!4g&(-N)8lS!rOMr!aB2=7eQ0u6UaiWEr~n&BR` zACa?XKg^F^lLiHY*w}e5Sz1CB*RJ_x1Y2@j*KBD&LQ&fnkL`LS9WIFxa!cG3q+wH` z>oa1q!Ckzn2BEL>=hg!z+JLf7?8zAijTP0DuS5Np?q*pwl#6rio_O{A;DYTk4-HiF zSbeNWsti--G-}U=Y&&Un_oZ88_TH>BMphP$=c`Y(R&*KU&(Bv++HPJe>2Y=<&~53O zRJnj$3AK~d=n(G;gu=)RiaGT_#w)5Ai+e!^tG)H&yi-jQ)@7Or^M{sD*Hy&>$UXY} z(336Fx)8qXgW*5rB)Mp}Dc@CfRN9*#a&*7g_e?wJ^E@v1wPj&s$QGP72)G0&p+l6{ z(xMk(((tW|*%2=0SUV`7bO1`lRx!-dz!-gVjCbdSIiE4ZO@GbxlSPZEHGRc&2>=`O zruHEhA`74n zW?fhbk}dkVx4;I2%2hY+?$KySeuG&BTQVNkl=dt3n=n7F^T;yTZz~8n*L%Vy_k{qr zfXf6Nww;F9tBkb%I)C}E{wMFRKIcbR!gD@@ADM1lB3R30Zvsd&n`mOO-&gb40_Tyh z@=zDEv4iJW7R}Ul`rkAXo=2m-E!)oL_s=meN2POP?xF773OC62nhEh+J`$R{2QNyX zP6h85{B?OvAphr_QLe~x(uSlH|4gNo(Qn+%?Lcb-RT${6 z-C%OeA+i$?IkPd$yH}ss&B7zUQOKiIDH@!;mEeF}`W;z9zmoZ% zi*Hrm?oubYW`{FbT9suag%yWk#cs-L!k2XWWMNWoK}F|akYblLXEQ(v3Ot?& z@s92F`st@QP{cWtuzM2R#%hsq>)B}^$Y+3mCe*sTqFlsP1Oq$n_z~TtfjS(7B<}=a zlzO}OgYANx^(*n2ea4upkE_{F+6~2jz<1iNCDup*cG|b(GdYQiA|%vC(9bbgCiy*= zx93JT7jI%T#StD<@@+Cp0_PRtJsSGGAR%0bpnF|2*cotbMeK(+BdZZK5`OFR63k^j z9OFzbwY5?W#!J1jd-WAuGb@5!NLbV9U05dzIEw=B4% zL^|r&D&$#xO*iyhgjNrU(_z`=M^Wa|g^ZflS`YhAfBnl$om2*)WENPfwnv>Edwss< z90^7cVd9I$hFsh1=Gj{|*R8cWop$~m(#}!xjO}`_%6lwhW_cB%OX)>tkA?(bOI z03B)j28VGVG!^ttWYz)}TvLOEV2r=~<YU1$>4Qcb?d zbjvh9@G81biqyVk9Gu~DnG@ZduTy90$aEUn@Ys}F6R4s}w9BT22LUuo!r|=V*|BQz#pOrH;NLbzxf*@rvLv;AwZMxf-aU@p^|j8Ea5#{S-~94lyfb%W zK4U%@m#7z{F;ojD#+^G|txKF`u@gtU z@8`kJjBo;KA0vEj4pp5aQ_*ccCGX(hXrf`9(~UNCIXELo2@v0mTPemVkJ^h6Uw8?N z!{_A2-vu+N6?MVmy;n`Zon=9W`NLd>4|7r?c5ZK9Q&IPK0B|yHy!9%kYj&7^HaxX^ zVT`X>tEPI_MYyk9?Ue6BwuI8UJ95)nb%W|=HNo8w`lRmNKh+*r-xHuSzZi~y$gDye zd6P?ojv{HirxTcA*GSIOb{@u4b)}GBwsg+t{L}A#@#D{aeprV&VH`P0Za4*aqv5v) z(^z<0DIz+F9;Y5sNiWW9U)|0#IYIlI`won~rsO2&;+$QFX?IPgEFYtDRK0rqsk`#_ zW4QO)Ox^!dUS6i+%wyq9}N= zK8=k+>u`MN*>8FC&QoQ$FM33Vi=rNrjh=NQcAJf(16V_PUSUJJa(wi-M?-srCd$fy ztE%jAd(OGJmKwdg;EUy~>2dj4J>_EDts@#60TX$AUF*&zPly4SrVcEv+@3+R0wwg=~frtM|2SGBQ5dx*1t` z$sQg<=2MiU&%>SM55{^ms@eqJJqh5!IjM|wPK$G4H>jw-v`VWke4dV{&;iw4|-JPb>#$8FCv(%KOp0iyezd}^g zXc2oi((cV$+f~DCdq_`~PWNAq{%5O~+3wc3F*HH|7~vM-g|1ETTlOyV7})}652H2L z8GkJ!Ai-2acOiWYcWiTR5TSYDqdQ8RwQ4@-g5|!bGdHMg<}>5nyx^`^1F|VvF|W44 zV5YqN%D-KEZ24p|oPT6tQ@N!%Ac@Y)d4!#3)rEkwq6iK_u3VDG<#)iYc&`X1Ei-M4 z<1z~#?}~#E2Jl^{m|2S9sps^9%94TR-*`@8rDE-5^s*^sFzLG`F3#ySC9sL&ZRR`` zqqH#mOD;Y247@g5jv`r8x7ebc)|W^ zJ~3)SR&H^e@C&QnHW?aT@t99RqMnGi*8k)tP!r0lum6<(R0NM75h`=yJ4w9?_>p28 zZ+7saGYfBRuRGTnjzp8=`3=5h?mDYDC5s18FQSQ+|65R5BbB{!6dk(2hLM#2n?Arpl-RVzb<&V$kC-VNRIL~coR^RTO{xz+o)fSc^O(Rb4AlD*Yf%JeS`ysFnVj6CGTiZn(HHF+tIWJmm*Kd3D_VqU9 zHi@2hJPBxeLu)&=l4_%(9RuBA?*tA`_Lq*ZMX)ki=)M*4Jn9ZtrOy2QZ~p%K=j(Z< z?dHcbCt|8{n!po%^IiID8MoCij?`h`d3&QRyS_#pHg$&t8B=>&|J>klWKbfgqOO8J zRTx=J%z5h9@d2wg7Zp&zqwV{u01ejGbM7HbxaD6IH}qUILkOF+p`!%gFdyz3w~i_w z>ndM#&1$%v_jkmr95R7!q_LZo$l73nxbGGADr4+00xh%COWCwx`J?E07&-!!d#__p z$Cb3j>6p|w@WMTu@tlx5DLI_jTDLHPz$|@};d>>tVzOauVF?o}g#nO`16{ z5v2qJHUIFtU;N#F@}G~#n4vzcK9P33F{j(cUd0{)tc)C|fWMg(+Enzmp>$C8wFdYw zdwybc(Hth{cF8Qn;sDoUty_Y=J8_EO%vzHvPAR>9r6FRHMq8V~EC=8A%QR$j{1#=n zv>?}jk86`BP4uJHe0r$w0gj|0Q|N$d0ZUq>r4~JrgRF0FnpJAhLcmG20HnDA3r4~^ zrF+S~^^7cSsa6f{bKW7U=8Ly`SZ;;h$z3^|OhteFM$YPrT&VnF-h#KeEO&{!P601Z zxl$9IU2tnsa)exN)zIE-Vy&>feAsfktg;m}0V^row-z&|vC(*~M)0@hrbs^m?s!Hy zQU({dz|f#0tm%DHsJ;v$B0>jCN%^gnb#!VOV@6*o1|_#4 zcE#ehQ(4%X4!ycI%3-|?rL`l-F(Uai&w%xcVEmxCI1uiKQ8!BnWwtdQxNj>F;`wSA%CW}@UjC4;M7TH#RcxuqKG z*e&n1-*t?`-%jtTuH(7Merf<2m2`riagI(m9)5I%1+ zwn0gKsmGe@wRd>0!vqVb$3rN@vr2g-NgsgnRatC>f-?N z-j{f^VJF<{dwR(?U2~y6uquxmUO}~Ky}9N@@2}a<3b(qsa&%@A3})V{k;nv9poUV( zjp{kqsyO*}kq<qWcN9b#sBd&mmh?kATryW_SMXH^2D# z-~IfoP*1Rynh7YPE|?8N>>7dxS7HRu+Sg};TP9YVCvHgMGWHlP+uExROM5_!W1^s3 za$n=qD8J4Z3kBD6WsPih{(fMc*&QI&-WAKEDLzhj6Dqn;)`r{`Y%>>W*{=Ap9pN>T zaDs37k#l7-TcU^d$fO#)!;TW$T@zx!Zi6CTl1v;fyLYTrb7gOW-$)5%Vx%&w(3ivb zXgwkHWYd76gG~{koIanQ>1xUz4bLZ|w6?S@ck0I%apxx8CC^p9M#=B+Mm0simE-W* z=VIn~K>0~y1d1L-pS*>-qZ}gm@5l$JDb!{#R>^Kx$1$|n73KI`rY%f5OZXIH7+u0* z=n;%EM(E}@K3C+Z%n$)M=T7hu$fBXB`44~m%^c%wNITd*w$*$q|d z>*I8$GN*f>6DX11Me3B|Jbs+O^p9)9O@_fH({Y5EV=qqNb5N)nvqbHoJP0`|k9&-( z|LVm9?F<@MCwH{E`XGFcyEhu{K#Q4Vr+KxH2kZzTrpdvH-Ck(Q_JS&S1}{il+_{|* zHf!6&prlqFcQl9_dU`1YH0r5p73lw$a`5MRbPoIaSL5WM98#V|;1?tsVrQ z{aQg1WPH`CaB3=_0>&lhUrK?sJ7$!+n^V3L7fJspw$DRb5Z+Fk6*|Gp*`2S9S zp+;tEpfs8SYIS4d4BGt1Km2+r{*5K3&SsDHgABOzLe7V31$zhdn#HAwn@h zE-vUimda~G^0{2LB)@QiIk(5Z5w6X`!OgeE$%@0C(zot5K3Og z`cy6-qjRR29<&XT8`j%G$kr;fqI>T|CjQ3yLH6i>)mLW{IfFxDoOM&U9|IGouy=GhPT&|H45P@k0h_fx1GdgT z{_dBjcGB}?QBA(+MMv&u9}`o^{rg+%x+Y_=-?A-5952oPK|x%Rlw98S`uykr@bC85 zYtFB4Q#IyT6$W9%UwlrDJ&;x$L|Wt%nf3-UlsHk{Z3No(1$JK z^0n(cjWN;o?X`9w+**2BBH8Lx0ws>~V)?LC=$0x&k@h;U65S}*8#k=*Dmc$SS3sdy ze*qAL?u0q5^^s(OT8J8)Hp-V9yT~#nXnWWFuNTeLba0n!Yk)ZwJmyBLzBT&-60rbd zK%BpRLdMN*VtQkWaKVf-2?Vr&HntvipQ4P+sP~!b!Ecko zalb8J`lrKGLIN!Jiej2@P<{#GUtrv7XAw9xDHiv%+aa{ zE0n!Fs|G~{J+dU?M_ZA`N@Ep;&)2qp|J?rWKlx9-fB*h&VSF0RI99LI(Tlt4nMHqg z^W?IgiOF_z5tAd!J<9p#hW$Dcl-a-%eYY~s*9-=2~AvZ zl7&YK-|DVMm=Y7jV#l%p)eyRX-dwc$USGMj7%7-zk5OYf&%P2`QMgjxP-{i$aj;hy zwRUU^o~$MRu3C@Wfp8Cf9X-!gDU@_fvqIgkG=FxKeC`ar#U{4cSRg-Cey6y;Q+|A| z&fj_NVju0);xZWRx|i^tzBE_HhfKT}qps5;$ipjKp~;>)4V8p@^$n}0ZEF%f?!b<+ z7mjd@Q4%gFI!3sJOnMK@I14glT{&eLjI+<(p+fh_mR?V{n5oEV%!kJr`x>-0fGbLf zooC0y9{{lRzLZwb@dfaH{o#infA-^?XQ|3rO#6HucvKc-Y_e^0!0pZtBX5t#%ux1( zlc=_YuR7-K6@eyh=c&j({$3C`Xtz=f7bp)ZZA45-&NOLa>2+Q~k1}@*}*u*=smR79kZLLBh zB?`2DVf5X;MeYWfFt$l(=Gv+h5*)=lx6%OJ6(zNERe)-#Me?_?d;#Z$Xq zMX6akq`^AHu9l3DZnfHmwa2y&T$Vh(#?GJQjK&I+?c(T~V15~71&;vb35?-sV$Y3hma-=Xa0cesj#O>NheisPcazd6t_fo&- z&hoDTY+KZmO4@W(^s$$J*FwF)`vlajt;F@ywE*N4-_mqi3qS8HO^#ao z!A7rbCqu{hZJF@zmGbM7(z{Gy}}RX4_s^#&4FPn1$wRH53^SKWDSsAUJAxGKHvv%5&-8GOuaUEylCgy`HFzzwc= zHzH&{Xv!u)&WIFbmx=rc4!lRWq z6TB0O^~Ii5Zq3i}sp7Hvm}yX^_FjM5o>4R-RiU$D&O_QIyKfh&G~ckoWR3Rv@)ep~ zfTrpc^28dB8uDrjemm##Zj=b9K22ECn?`^kyD%gEJDngEt`9Z)}g zSlfB@p=!NNTE2Ph`Lx;M^5nMSlohz%M&zzt(L029x?Q%G&gw<##_QmfxHa_;U6-yw z>1DX`c|9QV=(BCuilnDyhfT;jx~GO~xs3(k(ELfe3c_dazpuV-lW`MGV;To>cybD6KMkQL}?wELQQ{8Ik) zSC0EVRo>%WEwJx%+J%9Z+X}ZXM{S|91o!$FOi^dv%P$tHgNkyyHZ7LNEO$B9QjO(s zYwXlLRadTMbD6T`FdSS<=P+4pjcn60nnTr~&sQ<&)Nfs8)6R2?)`75pQ{bfoQYuja z7!B#;gAY?a%T&((OZ|U=~la}VZZpC2eH7g=27P9=G$n~^Z7)A;UAv+!{jM; zNbK3WrKUE3+vXVB^~FDQ63tN>SJ1w_yEB*5*`*0$A4!3Hx6+Y|i?J_WbJ|imAI`c- zlPV;S>Q=BWnV@0@@7Y$?z-sd$%Gc~i)ov7{Q~sLh%qLsiO8w1#Cq`=Q5z(s{ruZqQ zHKDj#oMPW&oFE7yS-+B>pnC4wx~RhDQSY?v_HSqF?_=(d*?2N@M18h;qrsVPEueJw zply=mwcJTVbcid=qPoJe$JtrtmtV%vT3uixj!G)zg#>^O% z{$&3|gt;$$w490^KwDQswh+uc)?_JFT+62)Q``O5L0ue48i?ChlYv$2(vEO*gU;q= zZ@s5qrM6(6ep6Hwnr5A#Z(q*a)dTDpAPc$^|96Sik1HU{j>W>rUc?#zc0aES7rH)-Ym^M^wdXH!m3HqV0jEqG`%zT zD}KEEz9>XyZN5IguY}u3m4hp9(@C98{BblfA7eDCVjC>Qg6Xodw`8zxnyO=H*jWas_ zMv4`bi~q_f;Q>6flO0{|05-mNuP(;p#X@rb7N>9V%zHS!Hf~B3jZp(AQqd|a*}WKK z$rKbvj?%S$)ic!J;s_4rR-h`_ z*sstgz7c=yOjb>&6xD25b@ir8m5&?U z$~k*_G_G2fBqI{xz00Z|ru`h^kTA<{x?yVK0&2Ot2)e_HN1MSNW{yDQRU#{0P|W`-@^I$xxWRN2n**KFiSB*u#Sy=;>s^nzUDA~Pl+ z65{g83%%j{ybhdkC*7kjxtW~CEs~_!l66%exb>R<@P}V#iO%OtQ{Rv#S{lt1&lMlN zTgJ@A&-0T$AiQs2Mc-P|pO3|&Y@9Uv#SD8hS$(a#ch%d!1r;ncz68R1)8L!c;{$888il$BcTpfYY8nzGxp zd)+}g{j$T_Un%fG$3}5wa5Os9x=-u*DD8uaW!vPqDSzoJV0?uFcR8xqdhTS&9C?RT z3gp_pKN~k^q>a{m;(RW;Iptde<|O%I_U|mr9@c!(I8*^i=JrM;zT?^d_)q`z@$u1& zBB^9#T^ogx zk@dxb#&50kZB48IOxlXRWvnafbfZLDu`E&ea%~nX5vH)-{OoI!oHiQ0J9Fj`DZ19o zic$xzNwOSMEL!Fa$sT7A4dr7g-*XM{nvTwDB(tM7U~wObE|J)r0p3u4wfntcK()A11=UK+ekCCLZ(JLMk^$HbI9N z4({4&=e0K0Lk!ynt{ZvHq-?s;weZ0wR|%C}sf$#~bM#mn4Boo!l^gGWS(Nbmbq0zt z%KPrvgX@DS=@AukZi--+{2|CB-wJm*V_pT=`O07p+27r`6?jL-l76gs--L;+PU#6v zcmDP94}m96BSfH~C>-(8I-;1yIyh-Uvn2;T=S-fC2vm2D>GJ5_QDhZDNpBTK&RUZS zrF0@vo-4^ijM=g-=6FW=^ZIY$vaVuh6-O4rAxC%Zc&8|e)|kmz686nFCN3ZspTSR{ zmq%+8%sT-u0705NWxsrVz8+W3G)TeTohuAS<`qJoC1Kz6TJp=2=xI$B5)QZG!3X@f z-7C|&L4EwjJ}1?LmJ`Bip*gpLtQ(2Oll%XlO>d$7_yKYyfDERv?7+ECu5C)Z#wAn_ z&{ra3kQiKxhn~b@=cc@tSUY>6`ldj1a!VWO{)=M`0m!&2%59j*etS>n2S-!8zwe9T zG4rg#^}Q;}vY)k|)paxD)~=!m3YJ!99;HoP&j3gI^L67YmGmD0^>k9;Tz3 zAJsGQ>J)nls+_%^F0cXrxST1W98(R4vXjSN&H1!Z$92@9zz(KhT#bv!E5?dYckdfU zf==d5a`%=pfLQBk(O&nhUxoivaiTpZZl@}TMcL3f+FXU-R~61F0A}#55CD zPMxf^Vhq)-mTFI-Hfnh20a!DmEK;Ta$;L z!}}{tG^1@R5}G`k9n(7BZhT-f$q(m}kEL~3+oxZ5&0aXIRs`;@gaTugT6{k}nwWA3ATN7y&|}@` z@v}{pWQUnv)qL=uTuul8uM-ZR+v{W@91QT0682!ei#hR7MRK*_oX_WoRhrlD<+sin zkyUrHT9c!Ru6Ah=1DffWKvFI*Vnkuv9%Rf=bvCM|rZ%fi-{wVGbVqwV8H;G$=3?3# zLRRbvozGio%K*0G*PXg84mXvt4Ny4}!_)B9&_cEM7``P_-Vuteu5>%4HDgu7aW^xd zEiDfZ{HuV1L~LN=9WmQwbix$zZN;sAOXtxQS{moBoZ=IO9g^c-n<8UQK}CPvO*j~nP=-&#q}htMQ) zzzT^T*Y(RCRi-|_C%#?>`t%XpJ-!_4dCW)fAVx8F8nsXwPYV(nrP?>*KW-sFR*0ly zDfr{0JVf63h*9&71|dsJbH-FV?6$lP8osa(I$G{9m*GZCyPh9K_74_GQ*nU(%s%(2?bJIkm(L$*j-;MNS8YZI3~e`4s>xPb+OXI&Ze4nJ!ffS~z_-k@c-U)w8F zkbl&X2*IZWV&>&9C94w` zLEOD$lw&k!vPQ4Z&v|CDi?y&rwB~%upJWN_wOh}X+qtplY75WjaZut<9QNV!^R+<3 zhpoar>V`lL^AyW_MKy2GUn(*x)IxA~J>azAT*@TF>Q3MnPv>lVw`cxcS5wH@u$wK0 zNORS61&$T(YRQ0n@jqFUYkE!`)^u4P?kwkKaoEDvdga}ClPW5eXN5~O8n(rlTECL!Bk1}-g{BeDypGNIr5 zgfp#a&QrzZ7Jho5Z{E{ya--|<&vCwvl+uzV*t=?kmyUzGuUvj$`G!9jRN;3R0KKu7 z1^_(vlCTM5g7#Uju^gs!zvHwJM=~R~KHv%d}(CRA+s?`#SMXuHt z8T_%#{k%NU@>b-$ZoC;~4Ri?et;^FkXya;t1;1EhRbGa2|O;3~N`*R?@>D@Aduw5;EEigKX+a5=*VHsY4tco-)oyaJTOvv&1Ky znP-&e;&J69IenVq?P0pC9`?Kp*puhsD!Z@_&TK5GxMY*jgd}3vB5mm_B5-ja4_1VhOtOeRrBIiW`8AS%i-g zB&rmCE#3GjG?9Arc0naws#HYIVPzJVZ2^wTR(qh#!F!)numFPvKpYk-AKYv(?QCLh zvxnnvmi671aZP@IYT)>b|BS?T_nKsalkY=#jFWXmZ6>Eprn)zaatfBhkP7*+^IhQ> zB=C%2m;oZe(747-}DZhB#b`M5k){tFw4?cJ$*1B!?@MPi zF4=n2wYLI^Es~Pdfu3?3*9{T|Q1w=GuE-FzuyW)VHMP{BRN^AFn)>DB0p%>N$|v(W zZ1vHU`gWN+Xz0Fsy%{jMs`gdM1DF7XkLd}w8QWg0QtH@7RlIREjFzy0|7^%%;L?LDXPs7Jh# zyw)l!o40#u^O<7c9OvCk9&}l5$!sR+=nb=st)7F~o&o@GEMjZ-LEyMMcb!SJ$w@y>o*|15AQrNuTUQ}9FSk~Tt<#a#; z#eL9&Vr;BOpBI(Aa^sOGaph_-vWZ@uALqzv!7qaMT*l717$dGBL1+fi)Z~TbKE%_; zZ?zZMy7M3=3TF|qQO$Lh_!uLTM9-0UyNd$+nE&lR{$2$}Zh2W*sB?zNm4OBvwjuIz z+^F1|dX;-~b7#vqZY|YPosom6gq!c-Utig`A`leCnRTn9sBXM$e4uSfwU-Of1ryRz zG+yrdhg_9vTg0zn(2LSCYJa1Slph)T4VB@GC%S2>040!L8fBYyrjB zG*+=xHik!IS&kciD!jjMifn;gXXcmnvYgOspPwOlRZEMt_IFngg0W$^cf1gP6Gl0;wkA zyCXYUd%Z5W+wD$021=PKuG7c!V^JVSJ3+o~Z!?F@K!;JkvD9k@cQ@&+lZw~wlkSk1 zHxYrd-y=FzQ|`sik@VpAQB6^Kw|e)ldT#_5R=`iJXuXoTEdCb5xA2(&!71o1JlclQ zT#)YA*xqh9DcOTVUCJJfNpMldmq%F|jr;t^KmB&jDSgq9-pyUNhq^I;YV*{gtddA3 z;JzVNYtS)9tch4XQ(YI3EEPSkn@4N~GIRap7Pp|QK&e}3iDS(SZ#l!tHyJc`cUO zcUP?4&0}hfJBhTf?ZJw(mBwY$A?oxSU)Oa7bJ)%hK_SYn{7YP&F*vZN-&`QhY*y&% z?Sm3oNp%LkA6sv~0d&NP&Y3A9$H_Ba&T6=}rrnl@T(yDXM9mjLY)iukUMZDq{dfswFcXczGGI4*CS(g= z42Xyy#1$hv~;1yf`$K z^^1?|S(xv4Sh8H7lUVTEOI>s+URoefkCW>Cp#IjWiyEnB=dXXSjN6t=Z@E>oq!HHA zOKG=oFKlab3337AXTHq1YPFx2KGYbIZaDva1|YOp5>FX%d!*~#s^#Ze<+rAZLsrXJ zt7}yTM1(*GUDiZ}Be2Q(;hJ>}*si|tClyj*16UgoJ8emCp_qAQyB4L$e!^U~6`yxo zgbbal%DyEMNzt94y<$`;mkV<d7fH%?NMdeN%v zSMZt?8eO?_#zUfnRBGcy2db5i#G&0E~+s9!UiCf9DyR@LaP6+yxacD zE)@_h6UG#wZQ}YJsxmPOZ^GG90W4-Z$OB!r(~gX)@rqBh7&a(18KcWzF@U|O8*v6^ z%{c?K$%lwTZ3g7F#3DK7pZ@Uc6T%QZUODa$E)R19{MrNn>ACUT*nQ_V56 zbn{eJ#p4x$iPsNnosQmGxe$9d0hY+gY42nd}gmkm6x(OWCSczXdF z7%Ygv(R-emZn2Gk4oXRbU0w^xh#hO59&$WT)9NnY3O+-oN* zQ&9)ow{2x+aIyyFzixBpN^;yXz3w|ZM|Vc}+n&Gg7Q>3ZTEkmoj+3zZ8AHk5JCy;s zXaV+s)W9zWY34rUE4!g07z)(cCA6I6{TXM|l`4NX8BZNWEM5v|>HXTeumw9rm%>hD zW3}_I-Bc$TY<`ddX0;3G$ZXgzRSS-x^BtFlIaaj*&^QeJYWqed{JN3l+85)bT;sz$ ztwNsa$6xMY+&uauVdw>3NS`>wd}}yaR4Iltt{P_v#Y*I32HOMWed0iwG`Y=Xr^5Tl zz$rG4Fq8a6&Oi~PSbR30d~n+V1TLe};VHN?rR}KIcMw>U7hqs^DtH?!u-`mkIqjRf z4ogbgHBL?BFQ@}kswU9hkWVtEA@|SaaG9~zDv6KoPYp2@z2=&^YBuM# zOmVJeGnXstQH^#BaM72z8oqN6Z@CX0YuiQA?8tYUtnrF=aHaVw!4dkU;@&T1Ukt`3 zajTTN!3goJ>08&dx4>RyuN!D+sAzF^e6x@d*MBFPlj0HrS6iy4m1l>$x9=^+Af=i` zJKDMJxTYvF?R~SCjmHIJ^Hb~QZXVU`b0%z2R}@Xm zBCN4wc9<3GNb5Q~qTLAMDb-UwWy`?nmdL5^LDz-+%hiQkuOdb#*X9uW%bR9!l8#4J zG2Fyg=bwK6%WdDI%&>$Pu6iq)aF9C@2kBT2?SA%Ok+(Jrc?uNiyU$nqTvyHuEiGSM zu4$Ut1|rL@of`L`=Z5a)m~>oLMB!C!fJzfkS-xjA$j_4w5+1o9V0=b2xEAL>n@DWB z370EiNt+@pXzBtT`+*zCvWx+8pI5DNMP3^PjJvSB@l>1Abzu++)T*H;2lP7FxzZL} zWUE%XYt)|ToOud2DLa;{FQ#)8v}>%K9IPQ%v^)JM9QoWn6G@fDFV!l=q@B)daH`r~ z@jaK{eJ^k!rapxA-~wT6zI-H#_UF9j6~!@!V3F9gS;W%i-v(7v5NDikN`W^Jy(8!L zLq$xn03)IR7EzH2n!UL#z|IhP;GJHCyEVW~g|!M)mDD`uKOWxGTpQNN_Ys;cp7;yR z#ge9pj$NL_oX^`p&)nfU5DW}WOBZKbeto{+=%E^n>I0fh3~jnno5uS7Z$Bh`R`TL8 zMsD#GpGv;Kqz@;JnI;Z@6Ttt{%P*z>dRxgGm=k%fd?^2kr{_`yd#YkAX;~9123B|( zvL*I94)9+86{6}^xC1KQDD5sFp2>-XmaaY(JNvvT6b8jks=KmPi9#@sm!k+7;fLVZ@c;KQaG(Wu7| zj^&v}?M%kqFg0kmgMR0Dg##I>xtI^zet8OW+7c7l*|hU-2F<$GQM%^>2qUjACuPi$ zNr`7T$1tg#(l}}3$RWb^+V~)s^CA!Zz@!r{;j1rveD_51r`VUcw*pVe7wd`{+@22j(6bVg(TDt#N!IyapV{xixJ!Tv0>t~lz})RvZOcodxOE2QRXL${EW z;18Qe;GT?gp52WnJfF`5t<0gqX^u&EqY*u|Y*rp66PePm&(AH(pH;vp4ylc&fAw2C zL%i2^z(!Fo8FMfn#8rqx#3?{-^fX6=F3%${XlKy&8kt6RZuteK^Hy9LmExQM{0~>6 z|NXdl(Wm1h?(9MSG7p&e+qaMB6MlW1IirpyFs2HxE~+m~c0c;ujkA-~oRe(=2joop zC|Kmw;9#G*!GI1@hPAO=fKhV!d7T+TBiJg71O$T^J3OCH-fYYYKUa`pKXkR^w>Qo%%%06h^3=$RfFV|zGK!jhu_89YC0ieT#i3fU-yfb6k-reJ)2nNLSZZ>@R)s%3}lQe*177evG zL@gcM+x8gNTXqGW@T%Beoo_PB>0~j! zfB&Yv_Qkxp8vS;fC3`K@C?6ZR0`K7NH@U;;Z|+5{i|LWne^@7DB(`r&H31g~xVrQt zn0m!L-6(&0@;&EMc$E`+Qt`-4C~f9I;LYEYe#tNi1kfwQ3;d`g?EO}rz-{G3P_@gR z?`bFxuNBj=7MG@N2D9n-{VU!C152yGe+%Qkx97a+jc~s`$_@d7Nm+6bG5pNesuXpe z*xeZM=<`uZQqZ0$P6x)1R>cnbMPv{5UUwJ8o`4yfLcfU>BLT(-vOyLVsVCbyx)8d* z%mA^)zI!i%-A{qwbB;aji~Ku%{JU1L=SrXL^R-#ut;V%t%(}uVy%g3|v-+9Sul{$B z%Qh{~z?*lPlHbh_j^UmOC|^;CFQ=_ml*KngdI10P^gmvo-=5E}k2zs{X$O^JtgiCa z0FhZ<5Bh+{f0aNf;;`nEF=QrJ6jsQhdB0$wd`8Qi@udYbC%9hMlPV1#?a8Bkq!OR3 ziZ&H4(&34kPwbILf|)_aH%zJQoXb-PvpnD9OAiw~uc2~8pqqM=R?fDLrCmj*>Do#1 z4752k;1aj@RCkN1TVP#UH;(gLx1^K-2P#(5s=jxAAW@T0RPBr|v21N7h9hm`s{25G zw{%gI@wY7geeK=-xI*ZStq`nqROL0+Bj*bgP-O)apnWfr${yQ5{;gz3c5&Z6PkTHy zM{W zdnhVfd^D*OOC7@cI3n3sv=f@2Qd#Xg2V#!7E$H3CFlAXw#sHKV+g%L%Q3&2W$iRED zGik!ow0nk(dbxmTgwEUK0MToX@WA4UyJdPz=nJ0ZN+56m+w%zf)5Np?^{J9FBJjF= zx|`P=i1$ScWvo=D2_;s@U8@Dv4X} zaa;X|0ZXT8PH5K`mUpk!6gbFiyc7%m`0JRDkFOv5C0QNE^>tzFeQ&+dmB7LUK&~Qw z67jjQ71gIN%ZtL1@xDomg@k!>(O-eBq_o2Z?(LMmN(_p$B@L-NtF^>>_)}?s!Q_z{ zP#S&`{I(YAi^WmCQYX}`f`s!IKO}`*@r3hfxg$F^=puBTx*M_3Q5opW?8`pJkBis2 zM3zTWkh%k4GulgRpeo~3=VieRk_`6>EawT4Ul&pf6`Qdh&7NPmeycit5r=Zkdg#wF z+p)^m8}+y3gb3QZ-r_!>TTa54sYfh|$(D&*C+6VZwt7KRZSrOXv*#jx$3&MTk|#%_l_Dx)12yg{Fpg-B!M}C2C0A zdKlE_Q~#*m0c`B`_)9&$G}vf6l18>U_lDDHb&BR|&F3f}*_&}Z@447pyCjh|u$U&A z+R;&;dFZ()CUUvDT4(ln#+Z}B=XPPbj+bIOKe1EMOcJ(>g~w34oL=qiC23Cp7;j)G zDlQR^CQZ|>BwbBf43pEH1f6BKRn6!lH*=XXh zICwCIrZM_??W{wqPyQ(drO=DSai`0lmY)d&?#j8LAh0`NY_B`G1GftlbalIaQ5;-i z(6*smhT2;lKoT?QzLkk-Ru5LY1a5?&k2ARYMJSo(?tD&cxln1Off6_73LKzGZG^jK z>amKp11;xQb5~@-xd#5iM?S7>&R8?bWvF<0x^8lCJnbe}`Of7v zP^M7iT;&&$4a@c3vQDnL-nn}*x{{z-3kkLD%9pyGXY&=yOD#Hv;#o4G^~C42>IOx* zdv^xs{98SQ885~?sH>7gS6I3T7F~Kw**I@V=y52@l{u*sk}Awf*KOpr9``WA2mzXe zja%K&@qUL18`Tgh6erDEOGK>2pc7yYESbj$x-?4k&c9<+Z@VUS_nnG&<{y6d%g{r{ z98raPK4(6k-8jy0pruS?h25z=+E}GEk?=x?pFE@e=y{)nw7G4s=IjhPh#i--Ql$en zna)nfw~?VN4zSYzCrHf@*;K9T8Pw1 z5;EByPVUaK8y8nYS=HxvElAyd?#tv10�?fcCtt9x$t4FVyP#dLwpKQo6r0cfZb@ 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 TpkduG00000NkvXXu0mjfS`~$7 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs/textures/signs_wooden_inventory.png b/mods/special/display_modpack/signs/textures/signs_wooden_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e821ddf5c7efa4792c3dfe49dc4998cf269eab GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}V}MVHE08Yo)oYHiYD;vikFu!< zFe>viY)Nn|_A_XRw5ScYstY&Y*AaPoR>r};*mY%Idpjd{w}$U*3fa>ZzP8F|Pe0-I|Me4i<(u7{q@`NxM~a^|V}WqWIo7feq!o6YTso m)3%*Re67`ar*7`Q-z=+c@H`Fvbn*|-Jq(_%elF{r5}E*(zm2>A literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs/textures/signs_wooden_long.png b/mods/special/display_modpack/signs/textures/signs_wooden_long.png new file mode 100644 index 0000000000000000000000000000000000000000..6b64a9582dc8d9300d22dfa28e95576c4bb72c30 GIT binary patch literal 317 zcmV-D0mA-?P)4@jmcD0~njt+uoTfzL0$NPC&S!QlT-XQGdT9(r%-9n|v=>6zXjY{oHu*2fOh zLnbPi_eS)O5Ch{&W>!WfZlGStCmgJQJ_9Y6V3cI}`H(!);F P00000NkvXXu0mjf_P~KW literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs/textures/signs_wooden_long_inventory.png b/mods/special/display_modpack/signs/textures/signs_wooden_long_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..f584b8c88eb1e9c15bdbdd19d94d06a075229ece GIT binary patch literal 323 zcmV-J0lfZ+P)JN zRCodHkFl18APfaJ@5(BHfPyIK|NrM2JGY^ErPFYL;bi#v7B57f4=@bI{9cSBKr~H& zwakEXeZhN?5Om{jVw`7dmqj0?#M~EhURM$4fEZJ9j>s55q!ecFOX&;1wgGy)?>XxT zy(D6G7a{b8T3dVO9S3u3wGw%6OkW`Smv>RCjy+HPdS76U@tH@Y(XEN-+817K{s15R V6IDMZxBvhE002ovPDHLkV1n7-idO&t literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs/tools/updatepo.sh b/mods/special/display_modpack/signs/tools/updatepo.sh new file mode 100755 index 0000000..feb2504 --- /dev/null +++ b/mods/special/display_modpack/signs/tools/updatepo.sh @@ -0,0 +1,25 @@ +#! /bin/bash + +# To create a new translation: +# msginit --locale=ll_CC -o locale/ll_CC.po -i locale/template.pot + +cd "$(dirname "${BASH_SOURCE[0]}")/.."; + +# Extract translatable strings. +xgettext --from-code=UTF-8 \ + --language=Lua \ + --sort-by-file \ + --keyword=S \ + --keyword=NS:1,2 \ + --keyword=N_ \ + --keyword=F \ + --add-comments='Translators:' \ + --add-location=file \ + -o locale/template.pot \ + $(find . -name '*.lua') + +# Update translations. +find locale -name '*.po' | while read -r file; do + echo $file + msgmerge --update $file locale/template.pot; +done diff --git a/mods/special/display_modpack/signs_api/LICENSE.txt b/mods/special/display_modpack/signs_api/LICENSE.txt new file mode 100644 index 0000000..341c30b --- /dev/null +++ b/mods/special/display_modpack/signs_api/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/mods/special/display_modpack/signs_api/README.md b/mods/special/display_modpack/signs_api/README.md new file mode 100644 index 0000000..38e8d96 --- /dev/null +++ b/mods/special/display_modpack/signs_api/README.md @@ -0,0 +1,33 @@ +# Signs API + +This mod provides various helper functions for registereing signs with text display. Text is locked if area is protected. +No actual signs get registered by this mod, the signs are defined in the sign submod. + +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=19365) at the Minetest forums. + +**Dependancies**: default, display\_lib, font\_lib + +**License**: Code under LGPL, Textures and models under CC-BY-SA + +## API Functions +### `signs_api.set_display_text(pos, text)` +Sets the text of a sign. Usually called in `on_receive_fields`. + +### `signs_api.set_formspec(pos)` +Usually called in `on_construct` to set the formspec. + +### `signs_api.on_receive_fields(pos, formname, fields, player)` +Helper function for `on_receive_fields`. Sets the display text and checks for protection. + +### `signs_api.on_place_direction(itemstack, placer, pointed_thing)` +On place callback for direction signs (chooses which sign according to look direction). + +### `signs_api.on_rotate(pos, node, player, mode, new_param2)` +Handles screwdriver rotation. Direction is affected for direction signs. + +### `signs_api.register_sign(mod, name, model)` +A method to quickly register signs. + +## Changelog +### 2019-03-14 +- __sign_api__: Screwdriver behavior changed. Now, left click rotates and changes direction. diff --git a/mods/special/display_modpack/signs_api/copyright.txt b/mods/special/display_modpack/signs_api/copyright.txt new file mode 100644 index 0000000..b70e051 --- /dev/null +++ b/mods/special/display_modpack/signs_api/copyright.txt @@ -0,0 +1,10 @@ +Code by Pierre-Yves Rollo (pyrollo) +intllib support (i18n) by (fat115) +intllib fallback code and tools by Diego Martínez (kaeza) +Extra contributors: +(gpcf) +(Thomas--S) +Translations: +Muhammad Nur Hidayat Yasuyoshi (MuhdNurHidayat) +(fat115) + diff --git a/mods/special/display_modpack/signs_api/depends.txt b/mods/special/display_modpack/signs_api/depends.txt new file mode 100644 index 0000000..f75ffcc --- /dev/null +++ b/mods/special/display_modpack/signs_api/depends.txt @@ -0,0 +1,4 @@ +default +intllib? +display_api +font_api diff --git a/mods/special/display_modpack/signs_api/init.lua b/mods/special/display_modpack/signs_api/init.lua new file mode 100644 index 0000000..1bd00d6 --- /dev/null +++ b/mods/special/display_modpack/signs_api/init.lua @@ -0,0 +1,251 @@ +--[[ + signs mod for Minetest - Various signs with text displayed on + (c) Pierre-Yves Rollo + + This file is part of signs. + + signs is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs. If not, see . +--]] + +signs_api = {} +signs_api.name = minetest.get_current_modname() +signs_api.path = minetest.get_modpath(signs_api.name) + +-- Load support for intllib. +local S, NS = dofile(signs_api.path.."/intllib.lua") +signs_api.intllib = S +local F = function(...) return minetest.formspec_escape(S(...)) end + +function signs_api.set_display_text(pos, text, font) + local meta = minetest.get_meta(pos) + meta:set_string("display_text", text) + if text and text ~= "" then + meta:set_string("infotext", "\""..text.."\"") + else + meta:set_string("infotext", "") + end + if font then + meta:set_string("font", font) + end + display_api.update_entities(pos) +end + +function signs_api.set_formspec(pos) + local meta = minetest.get_meta(pos) + local ndef = minetest.registered_nodes[minetest.get_node(pos).name] + if ndef and ndef.display_entities + and ndef.display_entities["signs:display_text"] then + local maxlines = ndef.display_entities["signs:display_text"].maxlines + local fs, y + + if maxlines == 1 then + fs = "field[0.5,0.7;5.5,1;display_text;"..F("Text").. + ";${display_text}]" + y = 1.2 + else + local extralabel = "" + if maxlines then + extralabel = F(" (first %s lines only)"):format(maxlines) + end + + fs = "textarea[0.5,0.7;5.5,2;display_text;"..F("Text").."".. + extralabel..";${display_text}]" + y = 2.4 + end + + fs = fs.."button[1,"..y..";2,1;font;"..F("Font").."]" + fs = fs.."button_exit[3,"..y..";2,1;ok;"..F("Write").."]" + y = y + 0.8 + fs = "size[6,"..y.."]"..default.gui_bg.. + default.gui_bg_img..default.gui_slots..fs + + meta:set_string("formspec", fs) + end +end + +function signs_api.on_receive_fields(pos, formname, fields, player) + if not minetest.is_protected(pos, player:get_player_name()) then + if fields and (fields.ok or fields.key_enter) then + signs_api.set_display_text(pos, fields.display_text) + end + if fields and (fields.font) then + signs_api.set_display_text(pos, fields.display_text) + font_api.show_font_list(player, pos) + end + end +end + +-- On place callback for direction signs +-- (chooses which sign according to look direction) +function signs_api.on_place_direction(itemstack, placer, pointed_thing) + local name = itemstack:get_name() + local ndef = minetest.registered_nodes[name] + local restriction = display_api.is_rotation_restricted() + + local bdir = { + x = pointed_thing.under.x - pointed_thing.above.x, + y = pointed_thing.under.y - pointed_thing.above.y, + z = pointed_thing.under.z - pointed_thing.above.z} + + local pdir = placer:get_look_dir() + + local ndir, test + + if ndef.paramtype2 == "facedir" then + -- If legacy mode, only accept upright nodes + if restriction and bdir.x == 0 and bdir.z == 0 then + -- Ceiling or floor pointed (facedir chosen from player dir) + ndir = minetest.dir_to_facedir({x=pdir.x, y=0, z=pdir.z}) + else + -- Wall pointed or no rotation restriction + ndir = minetest.dir_to_facedir(bdir, not restriction) + end + + test = { [0]=-pdir.x, pdir.z, pdir.x, -pdir.z, -pdir.x, [8]=pdir.x } + end + + if ndef.paramtype2 == "wallmounted" then + ndir = minetest.dir_to_wallmounted(bdir) + -- If legacy mode, only accept upright nodes + if restriction and (ndir == 0 or ndir == 1) then + ndir = minetest.dir_to_wallmounted({x=pdir.x, y=0, z=pdir.z}) + end + + test = { [0]=-pdir.x, -pdir.x, pdir.z, -pdir.z, -pdir.x, pdir.x} + end + + -- Only for direction signs + -- TODO:Maybe improve ground and ceiling placement in every directions + if ndef.signs_other_dir then + if test[ndir] > 0 then + itemstack:set_name(ndef.signs_other_dir) + end + itemstack = minetest.item_place(itemstack, placer, pointed_thing, ndir) + itemstack:set_name(name) + + return itemstack + else + return minetest.item_place(itemstack, placer, pointed_thing, ndir) + end +end + +-- Handles screwdriver rotation +-- (see "if" block below for rotation restriction mode). +signs_api.on_rotate = function(pos, node, player, mode, new_param2) + -- If rotation mode is 1 and sign is directional, swap direction between + -- each rotation. + if mode == 1 then + local ndef = minetest.registered_nodes[node.name] + if ndef.signs_other_dir then + -- Switch direction + node = {name = ndef.signs_other_dir, + param1 = node.param1, param2 = node.param2} + minetest.swap_node(pos, node) + display_api.update_entities(pos) + -- Rotate only if not "main" sign + -- TODO:Improve detection of "main" direction sign + if ndef.groups and ndef.groups.not_in_creative_inventory then + return display_api.on_rotate(pos, node, player, mode, new_param2) + else + return true + end + end + end + return display_api.on_rotate(pos, node, player, mode, new_param2) +end + +-- Legacy mode with rotation restriction +-- TODO:When MT < 5.0 no more in use, to be removed +if display_api.is_rotation_restricted() then + signs_api.on_rotate = function(pos, node, player, mode, new_param2) + -- If rotation mode is 2 and sign is directional, swap direction. + -- Otherwise use display_api's on_rotate function. + if mode == 2 then + local ndef = minetest.registered_nodes[node.name] + if ndef.signs_other_dir then + minetest.swap_node(pos, {name = ndef.signs_other_dir, + param1 = node.param1, param2 = node.param2}) + display_api.update_entities(pos) + return true + end + end + return display_api.on_rotate(pos, node, player, mode, new_param2) + end +end + +function signs_api.register_sign(mod, name, model) + -- Default fields + local fields = { + sunlight_propagates = true, + paramtype = "light", + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {-model.width/2, -model.height/2, 0.5, + model.width/2, model.height/2, 0.5 - model.depth}, + }, + groups = {choppy=2, dig_immediate=2, not_blocking_trains=1, display_api=1}, + sounds = default.node_sound_defaults(), + display_entities = { + ["signs:display_text"] = { + on_display_update = font_api.on_display_update, + depth = 0.5 - display_api.entity_spacing - model.depth, + size = { x = model.width, y = model.height }, + aspect_ratio = 1/2, + maxlines = 1, + }, + + }, + on_place = display_api.on_place, + on_construct = function(pos) + local ndef = minetest.registered_nodes[minetest.get_node(pos).name] + local meta = minetest.get_meta(pos) + meta:set_string("font", ndef.display_entities.font_name or + font_api.get_default_font_name()) + signs_api.set_formspec(pos) + display_api.on_construct(pos) + end, + on_destruct = display_api.on_destruct, + on_rotate = signs_api.on_rotate, + on_receive_fields = signs_api.on_receive_fields, + on_punch = function(pos, node, player, pointed_thing) + signs_api.set_formspec(pos) + display_api.update_entities(pos) + end, + } + + -- Node fields override + for key, value in pairs(model.node_fields) do + if key == "groups" then + for key2, value2 in pairs(value) do + fields[key][key2] = value2 + end + else + fields[key] = value + end + end + + if not fields.wield_image then fields.wield_image = fields.inventory_image end + + -- Entity fields override + for key, value in pairs(model.entity_fields) do + fields.display_entities["signs:display_text"][key] = value + end + + minetest.register_node(mod..":"..name, fields) +end + +-- Text entity for all signs +display_api.register_display_entity("signs:display_text") diff --git a/mods/special/display_modpack/signs_api/intllib.lua b/mods/special/display_modpack/signs_api/intllib.lua new file mode 100644 index 0000000..6669d72 --- /dev/null +++ b/mods/special/display_modpack/signs_api/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/special/display_modpack/signs_api/locale/fr.po b/mods/special/display_modpack/signs_api/locale/fr.po new file mode 100644 index 0000000..e490d1b --- /dev/null +++ b/mods/special/display_modpack/signs_api/locale/fr.po @@ -0,0 +1,49 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-01 05:56+0100\n" +"PO-Revision-Date: 2017-05-08 07:08+0200\n" +"Last-Translator: Peppy \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" + +#: common.lua +msgid "Text" +msgstr "Texte" + +#: common.lua +msgid "Write" +msgstr "Écrire" + +#: common.lua +#, lua-format +msgid " (first %s lines only)" +msgstr " (uniquement les %s premières lignes)" + +#~ msgid "Title" +#~ msgstr "Titre" + +#~ msgid "Close" +#~ msgstr "Fermer" + +#~ msgid "(right-click to read more text)" +#~ msgstr "(Clic-droit pour afficher le texte entier)" + +#~ msgid "Wooden direction sign" +#~ msgstr "Panneau de direction en bois" + +#~ msgid "Poster" +#~ msgstr "Affiche" + +#~ msgid "Textd" +#~ msgstr "Texte" diff --git a/mods/special/display_modpack/signs_api/locale/ms.po b/mods/special/display_modpack/signs_api/locale/ms.po new file mode 100644 index 0000000..0d90222 --- /dev/null +++ b/mods/special/display_modpack/signs_api/locale/ms.po @@ -0,0 +1,46 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Yaya (Nurul Azeera Hidayah @ Muhammad Nur Hidayat) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: Display Modpack\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-01 05:56+0100\n" +"PO-Revision-Date: 2020-07-05 11:31+0000\n" +"Last-Translator: Yaya MNH48 \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.3\n" + +#: common.lua +msgid "Text" +msgstr "Teks" + +#: common.lua +msgid "Write" +msgstr "Tulis" + +#: common.lua +#, lua-format +msgid " (first %s lines only)" +msgstr " (%s baris pertama sahaja)" + +#~ msgid "Title" +#~ msgstr "Tajuk" + +#~ msgid "Close" +#~ msgstr "Tutup" + +#~ msgid "(right-click to read more text)" +#~ msgstr "(klik-kanan untuk baca teks penuh)" + +#~ msgid "Wooden direction sign" +#~ msgstr "Papan tanda arah kayu" + +#~ msgid "Poster" +#~ msgstr "Poster" diff --git a/mods/special/display_modpack/signs_api/locale/template.pot b/mods/special/display_modpack/signs_api/locale/template.pot new file mode 100644 index 0000000..6004024 --- /dev/null +++ b/mods/special/display_modpack/signs_api/locale/template.pot @@ -0,0 +1,31 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-01 05:56+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: common.lua +msgid "Text" +msgstr "" + +#: common.lua +msgid "Write" +msgstr "" + +#: common.lua +#, lua-format +msgid " (first %s lines only)" +msgstr "" diff --git a/mods/special/display_modpack/signs_api/mod.conf b/mods/special/display_modpack/signs_api/mod.conf new file mode 100644 index 0000000..94ebf6a --- /dev/null +++ b/mods/special/display_modpack/signs_api/mod.conf @@ -0,0 +1,4 @@ +name=signs_api +description=A library providing various helper functions for registereing signs with text display +depends=default,display_api,font_api +optional_depends=intllib diff --git a/mods/special/display_modpack/signs_api/tools/updatepo.sh b/mods/special/display_modpack/signs_api/tools/updatepo.sh new file mode 100755 index 0000000..feb2504 --- /dev/null +++ b/mods/special/display_modpack/signs_api/tools/updatepo.sh @@ -0,0 +1,25 @@ +#! /bin/bash + +# To create a new translation: +# msginit --locale=ll_CC -o locale/ll_CC.po -i locale/template.pot + +cd "$(dirname "${BASH_SOURCE[0]}")/.."; + +# Extract translatable strings. +xgettext --from-code=UTF-8 \ + --language=Lua \ + --sort-by-file \ + --keyword=S \ + --keyword=NS:1,2 \ + --keyword=N_ \ + --keyword=F \ + --add-comments='Translators:' \ + --add-location=file \ + -o locale/template.pot \ + $(find . -name '*.lua') + +# Update translations. +find locale -name '*.po' | while read -r file; do + echo $file + msgmerge --update $file locale/template.pot; +done diff --git a/mods/special/display_modpack/signs_road/LICENSE.txt b/mods/special/display_modpack/signs_road/LICENSE.txt new file mode 100644 index 0000000..341c30b --- /dev/null +++ b/mods/special/display_modpack/signs_road/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/mods/special/display_modpack/signs_road/README.md b/mods/special/display_modpack/signs_road/README.md new file mode 100644 index 0000000..0a2f685 --- /dev/null +++ b/mods/special/display_modpack/signs_road/README.md @@ -0,0 +1,76 @@ +# Signs Road + +This mod provides road signs with text display. Text is locked if area is protected. + +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=19365) at the Minetest forums. + +**Dependancies**: default, display\_lib, font\_lib, signs + +**License**: Code under LGPL, texture under CC-BY-SA + +## Recipes + +**Blue Street Sign** + + B W - + S S S + - - - + +B = Blue Dye, W = White Dye, S = Steel Ingot + +**Large Banner** + +Shapeless recipe : four white street signs. + + S S S + S - - + - - - + +S = White street sign + +**Red and White Street Sign** + + W R - + S S S + - - - + +W = White Dye, R = Red Dye, S = Steel Ingot + +**Black direction sign** + + B W S + S S - + - - - + +B = Black Dye, W = White Dye, S = Steel Ingot + +**White Signs** + +Two kinds of signs, normal and direction signs : + + W B - W B S + S S S S S - + - - - - - - + +W = White Dye, B = Black Dye, S = Steel Ingot + +**Green Signs** + +Two kinds of signs, normal and direction signs : + + G W - G W S + S S S S S - + - - - - - - + +G = Green Dye, W = White Dye, S = Steel Ingot + +**Yellow Signs** + +Two kinds of signs, normal and direction signs : + + Y B - Y B S + S S S S S - + - - - - - - + +Y = Yellow Dye, B = Black Dye, S = Steel Ingot + diff --git a/mods/special/display_modpack/signs_road/compatibility.lua b/mods/special/display_modpack/signs_road/compatibility.lua new file mode 100644 index 0000000..5fb673a --- /dev/null +++ b/mods/special/display_modpack/signs_road/compatibility.lua @@ -0,0 +1,90 @@ +--[[ + signs mod for Minetest - Various signs with text displayed on + (c) Pierre-Yves Rollo + + This file is part of signs. + + signs is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs. If not, see . +--]] + +-- Wallmounted to facedir conversion +------------------------------------ + +local wallmounted_to_facedir = { + [0]=1, -- Should not happend with signs + [1]=1, -- Should not happend with signs + [2]=1, + [3]=3, + [4]=0, + [5]=2 +} + +-- Nodes conversions +local convert_nodes = { + ['signs_road:blue_street'] = 'signs_road:blue_street_sign', + ['signs_road:green_street'] = 'signs_road:green_street_sign', + ['signs_road:black_right'] = 'signs_road:black_right_sign', + ['signs_road:black_left'] = 'signs_road:black_left_sign', + ['signs_road:green_right'] = 'signs_road:green_right_sign', + ['signs_road:green_left'] = 'signs_road:green_left_sign' +} + +local function compatibility_check(pos, node) + -- Old wallmounted modes to new facedir nodes conversion + node.name = convert_nodes[node.name] + if node.name then + node.param2 = wallmounted_to_facedir[node.param2] + display_api.on_destruct(pos) + minetest.swap_node(pos, node) + display_api.on_construct(pos) + end +end + +minetest.register_lbm({ name = "signs_road:conpatibility_1", + nodenames = {'signs_road:blue_street', 'signs_road:green_street', 'signs_road:black_right', + 'signs_road:black_left', 'signs_road:green_right', 'signs_road:green_left'}, + action = compatibility_check, +}) + +-- Text entity name change because of signs_lib using signs prefix +------------------------------------------------------------------ + +local function compatibility_check_2(pos, node) + -- Remove old entity + for _, objref in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local entity = objref:get_luaentity() + if entity and entity.name == "signs:text" then + objref:remove() + end + end + -- Create new entity + display_api.update_entities(pos) +end + +minetest.register_lbm({ name = "signs_road:conpatibility_2", + nodenames = { + "signs_road:blue_street_sign", "signs_road:red_street_sign", "signs_road:white_street_sign", + "signs_road:green_street_sign", "signs_road:yellow_street_sign", "signs_road:black_right_sign", + "signs_road:black_left_sign", "signs_road:green_right_sign", "signs_road:green_left_sign", + "signs_road:yellow_right_sign", "signs_road:yellow_left_sign", "signs_road:white_right_sign", + "signs_road:white_left_sign"}, + action = compatibility_check_2, +}) + +-- Node name tidy up +-------------------- + +minetest.register_alias("signs_road:green_street_sign", "signs_road:green_sign") +minetest.register_alias("signs_road:yellow_street_sign", "signs_road:yellow_sign") +minetest.register_alias("signs_road:white_street_sign", "signs_road:white_sign") diff --git a/mods/special/display_modpack/signs_road/copyright.txt b/mods/special/display_modpack/signs_road/copyright.txt new file mode 100644 index 0000000..bb7adc8 --- /dev/null +++ b/mods/special/display_modpack/signs_road/copyright.txt @@ -0,0 +1,9 @@ +Code, Textures and Models by Pierre-Yves Rollo (pyrollo) +intllib support (i18n) by (fat115) +intllib fallback code and tools by Diego Martínez (kaeza) +Extra contributors: +(gpcf) +(Thomas--S) +Translations: +Muhammad Nur Hidayat Yasuyoshi (MuhdNurHidayat) +(fat115) diff --git a/mods/special/display_modpack/signs_road/crafts.lua b/mods/special/display_modpack/signs_road/crafts.lua new file mode 100644 index 0000000..314a91a --- /dev/null +++ b/mods/special/display_modpack/signs_road/crafts.lua @@ -0,0 +1,201 @@ +--[[ + signs_road mod for Minetest - Various road signs with text displayed + on. + (c) Pierre-Yves Rollo + + This file is part of signs_road. + + signs_road is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs_road is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs_road. If not, see . +--]] + +-- Standard rectangle signs + +minetest.register_craft({ + output = 'signs_road:white_sign 2', + recipe = { + {'dye:white', 'dye:black', ''}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:blue_sign 2', + recipe = { + {'dye:blue', 'dye:white', ''}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:green_sign 2', + recipe = { + {'dye:green', 'dye:white', ''}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:yellow_sign 2', + recipe = { + {'dye:yellow', 'dye:black', ''}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:red_sign 2', + recipe = { + {'dye:red', 'dye:white', ''}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', '', ''}, + } +}) + +-- Standard direction signs + +minetest.register_craft({ + output = 'signs_road:black_right_sign 2', + recipe = { + {'dye:black', 'dye:white', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', ''}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:white_right_sign 2', + recipe = { + {'dye:white', 'dye:black', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', ''}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:blue_right_sign 2', + recipe = { + {'dye:blue', 'dye:white', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', ''}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:green_right_sign 2', + recipe = { + {'dye:green', 'dye:white', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', ''}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:yellow_right_sign 2', + recipe = { + {'dye:yellow', 'dye:black', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', ''}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'signs_road:red_right_sign 2', + recipe = { + {'dye:red', 'dye:white', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', ''}, + {'', '', ''}, + } +}) + +-- Transform Rectangle <-> Direction + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:white_right_sign', + recipe = {'signs_road:white_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:white_sign', + recipe = {'signs_road:white_right_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:blue_right_sign', + recipe = {'signs_road:blue_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:blue_sign', + recipe = {'signs_road:blue_right_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:green_right_sign', + recipe = {'signs_road:green_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:green_sign', + recipe = {'signs_road:green_right_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:yellow_right_sign', + recipe = {'signs_road:yellow_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:yellow_sign', + recipe = {'signs_road:yellow_right_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:red_right_sign', + recipe = {'signs_road:red_sign'}, +}) + +minetest.register_craft({ + type = 'shapeless', output = 'signs_road:red_sign', + recipe = {'signs_road:red_right_sign'}, +}) + +-- Various signs + +minetest.register_craft({ + output = 'signs_road:blue_street_sign 4', + recipe = { + {'dye:blue', 'dye:white', 'dye:blue'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'signs_road:red_street_sign 2', + recipe = { + {'dye:white', 'dye:red', 'dye:black'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = 'signs_road:large_street_sign', + recipe = {'signs_road:white_street_sign', 'signs_road:white_street_sign', 'signs_road:white_street_sign', 'signs_road:white_street_sign'}, +}) diff --git a/mods/special/display_modpack/signs_road/depends.txt b/mods/special/display_modpack/signs_road/depends.txt new file mode 100644 index 0000000..38a5f41 --- /dev/null +++ b/mods/special/display_modpack/signs_road/depends.txt @@ -0,0 +1,4 @@ +default +intllib? +dye +signs_api diff --git a/mods/special/display_modpack/signs_road/init.lua b/mods/special/display_modpack/signs_road/init.lua new file mode 100644 index 0000000..cd95c6c --- /dev/null +++ b/mods/special/display_modpack/signs_road/init.lua @@ -0,0 +1,37 @@ +--[[ + signs_road mod for Minetest - Various road signs with text displayed + on. + (c) Pierre-Yves Rollo + + This file is part of signs_road. + + signs_road is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs_road is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs_road. If not, see . +--]] + +signs_road = {} +signs_road.name = minetest.get_current_modname() +signs_road.path = minetest.get_modpath(signs_road.name) + +-- Load support for intllib. +local S, NS = dofile(signs_road.path.."/intllib.lua") +signs_road.intllib = S + +dofile(signs_road.path.."/nodes.lua") +dofile(signs_road.path.."/crafts.lua") +dofile(signs_road.path.."/compatibility.lua") + + + + + diff --git a/mods/special/display_modpack/signs_road/intllib.lua b/mods/special/display_modpack/signs_road/intllib.lua new file mode 100644 index 0000000..6669d72 --- /dev/null +++ b/mods/special/display_modpack/signs_road/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/special/display_modpack/signs_road/locale/fr.po b/mods/special/display_modpack/signs_road/locale/fr.po new file mode 100644 index 0000000..833f115 --- /dev/null +++ b/mods/special/display_modpack/signs_road/locale/fr.po @@ -0,0 +1,56 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 11:26+0200\n" +"PO-Revision-Date: 2017-05-08 06:40+0200\n" +"Last-Translator: Peppy \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: nodes.lua +msgid "Blue street sign" +msgstr "Plaque de rue bleue" + +#: nodes.lua +msgid "Red and white town sign" +msgstr "Panneau de ville rouge et blanc" + +#: nodes.lua +msgid "White street sign" +msgstr "Panneau blanc" + +#: nodes.lua +msgid "Green street sign" +msgstr "Panneau vert" + +#: nodes.lua +msgid "Yellow street sign" +msgstr "Panneau jaune" + +#: nodes.lua +msgid "Black direction sign" +msgstr "Panneau de direction noir" + +#: nodes.lua +msgid "Green direction sign" +msgstr "Panneau de direction vert" + +#: nodes.lua +msgid "Yellow direction sign" +msgstr "Panneau de direction jaune" + +#: nodes.lua +msgid "White direction sign" +msgstr "Panneau de direction blanc" + diff --git a/mods/special/display_modpack/signs_road/locale/ms.po b/mods/special/display_modpack/signs_road/locale/ms.po new file mode 100644 index 0000000..30ba158 --- /dev/null +++ b/mods/special/display_modpack/signs_road/locale/ms.po @@ -0,0 +1,54 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Yaya (Nurul Azeera Hidayah @ Muhammad Nur Hidayat) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: Display Modpack\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 11:28+0200\n" +"PO-Revision-Date: 2020-07-05 11:32+0000\n" +"Last-Translator: Yaya MNH48 \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.3\n" + +#: nodes.lua +msgid "Blue street sign" +msgstr "Papan tanda jalan biru" + +#: nodes.lua +msgid "Red and white town sign" +msgstr "Papan tanda bandar merah dan putih" + +#: nodes.lua +msgid "White street sign" +msgstr "Papan tanda jalan putih" + +#: nodes.lua +msgid "Green street sign" +msgstr "Papan tanda jalan hijau" + +#: nodes.lua +msgid "Yellow street sign" +msgstr "Papan tanda jalan kuning" + +#: nodes.lua +msgid "Black direction sign" +msgstr "Papan tanda arah hitam" + +#: nodes.lua +msgid "Green direction sign" +msgstr "Papan tanda arah hijau" + +#: nodes.lua +msgid "Yellow direction sign" +msgstr "Papan tanda arah kuning" + +#: nodes.lua +msgid "White direction sign" +msgstr "Papan tanda arah putih" diff --git a/mods/special/display_modpack/signs_road/locale/template.pot b/mods/special/display_modpack/signs_road/locale/template.pot new file mode 100644 index 0000000..b15ce94 --- /dev/null +++ b/mods/special/display_modpack/signs_road/locale/template.pot @@ -0,0 +1,54 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 11:28+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: nodes.lua +msgid "Blue street sign" +msgstr "" + +#: nodes.lua +msgid "Red and white town sign" +msgstr "" + +#: nodes.lua +msgid "White street sign" +msgstr "" + +#: nodes.lua +msgid "Green street sign" +msgstr "" + +#: nodes.lua +msgid "Yellow street sign" +msgstr "" + +#: nodes.lua +msgid "Black direction sign" +msgstr "" + +#: nodes.lua +msgid "Green direction sign" +msgstr "" + +#: nodes.lua +msgid "Yellow direction sign" +msgstr "" + +#: nodes.lua +msgid "White direction sign" +msgstr "" diff --git a/mods/special/display_modpack/signs_road/mod.conf b/mods/special/display_modpack/signs_road/mod.conf new file mode 100644 index 0000000..83ae231 --- /dev/null +++ b/mods/special/display_modpack/signs_road/mod.conf @@ -0,0 +1,4 @@ +name=signs_road +description=Various road signs with text display using signs_api +depends=default,dye,signs_api +optional_depends=intllib diff --git a/mods/special/display_modpack/signs_road/nodes.lua b/mods/special/display_modpack/signs_road/nodes.lua new file mode 100644 index 0000000..74eca23 --- /dev/null +++ b/mods/special/display_modpack/signs_road/nodes.lua @@ -0,0 +1,451 @@ +--[[ + signs_road mod for Minetest - Various road signs with text displayed + on. + (c) Pierre-Yves Rollo + + This file is part of signs_road. + + signs_road is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + signs_road is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with signs_road. If not, see . +--]] + +local S = signs_road.intllib + +local models = { + blue_street_sign = { + depth = 1/16, + width = 14/16, + height = 12/16, + entity_fields = { + size = { x = 14/16, y = 10/16 }, + maxlines = 3, + color = "#fff", + }, + node_fields = { + description = S("Blue street sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_blue_street.png" }, + inventory_image = "signs_road_blue_street.png", + }, + }, + large_street_sign = { + depth = 1/16, + width = 64/16, + height = 12/16, + entity_fields = { + maxlines = 1, + color = "#000", + }, + node_fields = { + visual_scale = 1, + description = S("Large banner"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_large_white.png" }, + inventory_image = "signs_road_white.png", + }, + }, + red_street_sign = { + depth = 1/16, + width = 1, + height = 7/16, + entity_fields = { + size = { x = 1, y = 4/16 }, + maxlines = 1, + color = "#000", + }, + node_fields = { + description = S("Red and white town sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_red_white.png" }, + inventory_image="signs_road_red_white.png", + }, + }, + white_sign = { + depth = 1/16, + width = 1, + height = 7/16, + entity_fields = { + size = { x = 1, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("White street sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_white.png" }, + inventory_image = "signs_road_white.png", + }, + }, + blue_sign = { + depth = 1/16, + width = 1, + height = 7/16, + entity_fields = { + size = { x = 1, y = 6/16 }, + maxlines = 2, + color = "#fff", + }, + node_fields = { + description = S("Blue road sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_blue.png" }, + inventory_image = "signs_road_blue.png", + }, + }, + green_sign = { + depth = 1/16, + width = 1, + height = 7/16, + entity_fields = { + size = { x = 1, y = 6/16 }, + maxlines = 2, + color = "#fff", + }, + node_fields = { + description = S("Green road sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_green.png" }, + inventory_image = "signs_road_green.png", + }, + }, + yellow_sign = { + depth = 1/16, + width = 1, + height = 7/16, + entity_fields = { + size = { x = 1, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("Yellow road sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_yellow.png" }, + inventory_image="signs_road_yellow.png", + }, + }, + red_sign = { + depth = 1/16, + width = 1, + height = 7/16, + entity_fields = { + size = { x = 1, y = 6/16 }, + maxlines = 2, + color = "#fff", + }, + node_fields = { + description = S("Red road sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_red.png" }, + inventory_image = "signs_road_red.png", + }, + }, + black_right_sign = { + depth = 1/32, + width = 1, + height = 0.5, + entity_fields = { + aspect_ratio = 3/4, + size = { x = 1, y = 3/16 }, + maxlines = 1, + color = "#000", + }, + node_fields = { + description = S("Black direction sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_black_dir_right.png" }, + inventory_image = "signs_road_black_dir_inventory.png", + signs_other_dir = "signs_road:black_left_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + }, + }, + black_left_sign = { + depth = 1/32, + width = 1, + height = 0.5, + entity_fields = { + aspect_ratio = 3/4, + size = { x = 1, y = 3/16 }, + maxlines = 1, + color = "#000", + }, + node_fields = { + description = S("Black direction sign"), + tiles = { "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_sides.png", + "signs_road_sides.png", "signs_road_black_dir_left.png" }, + inventory_image = "signs_road_black_dir_inventory.png", + signs_other_dir = "signs_road:black_right_sign", + groups = { not_in_creative_inventory = 1 }, + drop = "signs_road:black_right_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + }, + }, + white_right_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = -3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("White direction sign"), + tiles = { "signs_road_white_direction.png" }, + inventory_image = "signs_road_white_dir_inventory.png", + signs_other_dir = "signs_road:white_left_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_right.obj", + selection_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + }, + }, + white_left_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = 3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("White direction sign"), + tiles = { "signs_road_white_direction.png" }, + inventory_image = "signs_road_white_dir_inventory.png", + signs_other_dir = "signs_road:white_right_sign", + on_place=signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_left.obj", + selection_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + groups = { not_in_creative_inventory = 1 }, + drop = "signs_road:white_right_sign", + }, + }, + blue_right_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = -3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#fff", + }, + node_fields = { + description = S("Blue direction sign"), + tiles = { "signs_road_blue_direction.png" }, + inventory_image = "signs_road_blue_dir_inventory.png", + signs_other_dir = "signs_road:blue_left_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_right.obj", + selection_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + }, + }, + blue_left_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = 3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color="#fff", + }, + node_fields = { + description = S("Blue direction sign"), + tiles = { "signs_road_blue_direction.png" }, + inventory_image = "signs_road_blue_dir_inventory.png", + signs_other_dir = "signs_road:blue_right_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_left.obj", + selection_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + groups = { not_in_creative_inventory = 1 }, + drop = "signs_road:blue_right_sign", + }, + }, + green_right_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = -3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#fff", + }, + node_fields = { + description = S("Green direction sign"), + tiles = { "signs_road_green_direction.png" }, + inventory_image = "signs_road_green_dir_inventory.png", + signs_other_dir = "signs_road:green_left_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_right.obj", + selection_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + }, + }, + green_left_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = 3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color="#fff", + }, + node_fields = { + description = S("Green direction sign"), + tiles = { "signs_road_green_direction.png" }, + inventory_image = "signs_road_green_dir_inventory.png", + signs_other_dir = "signs_road:green_right_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_left.obj", + selection_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + groups = { not_in_creative_inventory = 1 }, + drop = "signs_road:green_right_sign", + }, + }, + yellow_right_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = -3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("Yellow direction sign"), + tiles = { "signs_road_yellow_direction.png" }, + inventory_image = "signs_road_yellow_dir_inventory.png", + signs_other_dir = "signs_road:yellow_left_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_right.obj", + selection_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + }, + }, + yellow_left_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = 3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#000", + }, + node_fields = { + description = S("Yellow direction sign"), + tiles = { "signs_road_yellow_direction.png" }, + inventory_image = "signs_road_yellow_dir_inventory.png", + signs_other_dir = "signs_road:yellow_right_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_left.obj", + selection_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + groups = { not_in_creative_inventory = 1 }, + drop = "signs_road:yellow_right_sign", + }, + }, + red_right_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = -3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#fff", + }, + node_fields = { + description = S("Red direction sign"), + tiles = { "signs_road_red_direction.png" }, + inventory_image = "signs_road_red_dir_inventory.png", + signs_other_dir = "signs_road:red_left_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_right.obj", + selection_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -0.5, -7/32, 0.5, 7/16, 7/32, 7/16 } }, + }, + }, + red_left_sign = { + depth = 1/16, + width = 14/16, + height = 7/16, + entity_fields = { + right = 3/32, + size = { x = 12/16, y = 6/16 }, + maxlines = 2, + color = "#fff", + }, + node_fields = { + description = S("Red direction sign"), + tiles = { "signs_road_red_direction.png" }, + inventory_image = "signs_road_red_dir_inventory.png", + signs_other_dir = "signs_road:red_right_sign", + on_place = signs_api.on_place_direction, + on_rightclick = signs_api.on_right_click_direction, + drawtype = "mesh", + mesh = "signs_dir_left.obj", + selection_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + collision_box = { type = "fixed", fixed = { -7/16, -7/32, 0.5, 0.5, 7/32, 7/16 } }, + groups = { not_in_creative_inventory = 1 }, + drop = "signs_road:red_right_sign", + }, + }, +} + +-- Node registration +for name, model in pairs(models) +do + signs_api.register_sign("signs_road", name, model) +end diff --git a/mods/special/display_modpack/signs_road/svg/signs_road_black.svg b/mods/special/display_modpack/signs_road/svg/signs_road_black.svg new file mode 100644 index 0000000..8e9b8a9 --- /dev/null +++ b/mods/special/display_modpack/signs_road/svg/signs_road_black.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/mods/special/display_modpack/signs_road/svg/signs_road_direction.svg b/mods/special/display_modpack/signs_road/svg/signs_road_direction.svg new file mode 100644 index 0000000..665146b --- /dev/null +++ b/mods/special/display_modpack/signs_road/svg/signs_road_direction.svg @@ -0,0 +1,316 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mods/special/display_modpack/signs_road/svg/signs_road_rectangle.svg b/mods/special/display_modpack/signs_road/svg/signs_road_rectangle.svg new file mode 100644 index 0000000..3dad58d --- /dev/null +++ b/mods/special/display_modpack/signs_road/svg/signs_road_rectangle.svg @@ -0,0 +1,188 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/mods/special/display_modpack/signs_road/svg/signs_road_street_blue.svg b/mods/special/display_modpack/signs_road/svg/signs_road_street_blue.svg new file mode 100644 index 0000000..0aa87ff --- /dev/null +++ b/mods/special/display_modpack/signs_road/svg/signs_road_street_blue.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_black_dir_inventory.png b/mods/special/display_modpack/signs_road/textures/signs_road_black_dir_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..cc919e8fbc73d70914269c4d5f71468eebdfc340 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4U5uPrNAr*{ouN>q&V8G)X=sWf2 zmT0!$OOJm^TOFV=?Odh6qllKjoCXdO2h$e1iAxI{eQd`eup)$S5o^PI2U|bJ0`CLF)9E6 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_black_dir_left.png b/mods/special/display_modpack/signs_road/textures/signs_road_black_dir_left.png new file mode 100644 index 0000000000000000000000000000000000000000..46a3323f14eb880397eb17a9b68c31b38567737c GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*Q=zo(01NCo5DNe6ikDDW`fBc!NCo5Diwh+WD2OmW^f_8{ zv-jXSrTEx*Bg;&hj#=yYTb|UAJ9)Y#ruHmgJ!}0l=?LJRsMJF cSC=?eF~rETzL`>*aSdd+r>mdKI;Vst0JWklx&QzG literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_blue.png b/mods/special/display_modpack/signs_road/textures/signs_road_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..7951c16110e954256254b0f755e6ba75bb63c03d GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv^#Gp`S0MfW|NmoGJ}O3@U~o8a z{OU)8lru)DXPBK18m696iaenlb@IfukIJueB7jO6OM?7@862M7NCR>#JY5_^Dj1U` zwm1mz8gR_qp}_dufz41{B;bTXqt=BJ3QbxMJcJp2vQ;n2s_kN#`My@*a&faL14F*Q W$;5>(0xtv2VDNPHb6Mw<&;$Ssp*oZR literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_blue_dir_inventory.png b/mods/special/display_modpack/signs_road/textures/signs_road_blue_dir_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..835dd882c911b6d74cd4e58e62f40e941acd4d95 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJUQZXtkP61+hQ>exF1Ldk60H9- z`HMKM8V){W@cppr?|O%0|5=m%GZr><{J;2L|K4Ag$d8g8yf0obuzXv;kEy$Bxr2^( zI=jLmCa!aghWvA78#=f&Zm=EE`BK85q$QA`bXQj3T7l?M#*+S~>F?_ox*YWIZ0T6A wyxz=(#deQ^)P+SA7ed_@Cy4Yk1u`)F-EcDJ`1$GeK!-7Sy85}Sb4q9e0K(ZxJ^%m! literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_blue_direction.png b/mods/special/display_modpack/signs_road/textures/signs_road_blue_direction.png new file mode 100644 index 0000000000000000000000000000000000000000..22b42e0dbffcefeafc68dfd21e58887c8e882cca GIT binary patch literal 533 zcmV+w0_y#VP)iE#pv$&PkYqQ&(2nW)#>m0%*@Qo%gfBo&Cbio(9+G#&CJEc#l^ELxgC8wXeGNPk)LWSOedhfIZ?<>7%Z91vqO@r(IjDuR2=Q)_vyWPU0*;MLri z2tTaRx~Jiw07F7}F?Yty0j-*3I22@8-05X!8{AmI@$spK&`gnL%BJvbmQ}&Ij19-r zb4ICcu5%(pU~IF;AUcayLrA0SdnI7pGY@lTcR7a`T1xZm=TQ!Sou>6WV)*McM?d`s X9&a{#ac{Mb00000NkvXXu0mjf408(% literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_blue_street.png b/mods/special/display_modpack/signs_road/textures/signs_road_blue_street.png new file mode 100644 index 0000000000000000000000000000000000000000..9e81e216b1cd26a47720938ae29891afa30d791b GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)R|W=$9Xn2miwA!H{`3F; z|4mH`=g!^s;lmd#t@zYSdrktCIeNM{hEy;nFW^lOF)D0iN_SexF1Ldk60H9- z`HMKM8WtXGRI9jp^{>L?|4bYIH&{3fa&z_%*@Qo%gfBo&Cbio(9+G#&CJEc#l^g7(iT< zqgHoznU01fxUdfy7xp3Lu@PP5{Kuc9bYfGtAAf@6NjyC(fz0BM)bG5! zWK=E6ETrFe8R7#;XQE^!FEw~)hg3s;Du@LG6lzMPR0n$*UT7B|NSN`8w$z$hajGYb z6LxV!%=ESeJ-rMC0SN5Hec#-=~TDYQ&^ZQ5fzA7U&my}^`=1ri5 zkA~ypGa;ASN{bEw7;QEigwb%#!N-xdUNH!-L_^%rOG-ZY8e?lVk9?X<)6Q!IKbz(_ a@4f?jLp572#2Bvt0000{{ zdD)&D!fMw=H2yF$T^Ck=#3TKXN9M|ky|D%&p+KdKB|(0{3=Yq3qyae=o-U3d6^zLe zTO0&<4LD}*P+)xSz-A~e5^zGHQR~79g(j^B9>R=1*{T<1)poJWd|xYYxwu)Bfg#`D WWa7dXftP`1FnGH9xvXk1 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_red_dir_inventory.png b/mods/special/display_modpack/signs_road/textures/signs_road_red_dir_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebb189b6030876786c07b9f9a6531193099071b GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJR!exF1Ldk60H9- z`HMKM89XkstdC+f`l~PSo4<$I#pU1s`j1R0htn0z7A$8LxN%=zOw_+IV%j-A2Nzb6 zIm}6NR@MxHq5&ItJ0f4aWN-;lINELxgC8wXeGNPk)LWSOedhfIZ?<>7%Z91vqO@r(IjDuR2=Q)_vyWPU0*;MLri z2tTaRx~Jiw07F7}F?Yty0j-*3I22@8-05X!8{AmI@$spK&`gnL%BJvbmQ}&Ij19-r zb4ICcu5%(pU~IF;AUcayLrA0SdnI7pGY@lTcR7a`T1xZm=TQ!Sou>6WV)*McM?d`s X9&a{#ac{Mb00000NkvXXu0mjfv;zvx literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_red_white.png b/mods/special/display_modpack/signs_road/textures/signs_road_red_white.png new file mode 100644 index 0000000000000000000000000000000000000000..510f6b8b728926a037a41ae8f56cb97f989fd292 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W*h+%@f`K#;L2&C#fT^vIy z7~fu5DB5bk&Zv6o(BQre@xuOvW)S)PL>{_?)<4w^Z$KRZW< tPdm!A)u?Y?yz6Zv-d9Y&CSls$-u$DzP`TD(#^!h z#mdUc!otG4yt=r!xQR|jYybcNpGibPRCobZOG#n`Aqa$~K?t}6o&5i)!Q<4Wb|@e| zfJ84d3qym3twJReL}b8k&!yo95P?Mqk?L|c7py8Cbgg%}V;wqIfK>G=v-~!v%mpgS zW+Gx5SrO1p`ql?_ngxNJ~=z(rRZWa9xIUB6Ev#CJ4Wexo3WIl|O)D vk%hG~a?V;@zjA%9zX1-9nCowyO!w*kR(S}kf;0tP00000NkvXXu0mjf=l6;q literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_white.png b/mods/special/display_modpack/signs_road/textures/signs_road_white.png new file mode 100644 index 0000000000000000000000000000000000000000..45b759a035a35e2b2788fba95233125a7693d678 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4U9-c0aAr*{oFKrZUFyLXnnB#h5 zKbu&C&!q2thon99zFv(_?tdXTLwb&mNOxo-`_<6K-mLHg57~t>tRBC$yY$5QV^PR~ cnD!2N^HmCy-rijI0B9zIr>mdKI;Vst0O-XoegFUf literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_white_dir_inventory.png b/mods/special/display_modpack/signs_road/textures/signs_road_white_dir_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..ac0b2655e3e6db26927af7908fd482dcf5bafdac GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4Ud7dtgAr*|t5+(^EJx%{r4#n^= zdoV8iFZs{tM{vS{*Z&{=m$WmMn2^K3l*3T@ShHE@C7Z$?Mx#eE%={2mk~A~-A%;tP z8JmPpnkA@SVc4`+f$i&|11yicj1~(%tSN9>WS|*rY24cs$iU!LGJW;=Mb2tKn;AS^ L{an^LB{Ts5N%J1_rROuni3j&(F@Osi_tg7R=1d%gf8m&CSls$93c$D-USR~5aoLB z|Nn`>OnQ!6Z5h2mNCw*&Lwq<|=S3()WiF*}Y4hIvgpkcCMPh*)Y+&0`PQ~n~wJos= zdOQ0R=NG%6%R+E@bv-@mN^o}5Zrj>nhRix-RfC48px&(n8nSknxSxWx!{vhtxSuEz z+?D~iO~eq|Dqvg`#CZAYsw literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_yellow.png b/mods/special/display_modpack/signs_road/textures/signs_road_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..33ced3ba826fb20e8daa3f7b8497186623c38072 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJY)==*kP61PQyAGA90XjSdx);8 z4rd5yc*S(}lIb*q>;}t&e~#AM+&F48W1^HoivX*(RoSBVdcW!oZ>?Ea%6L6VexuxE z?h~4J3hLqs{2vc7OB`sJb?w8PgY75IJ=%PfcYpZBeT9qx7X_R=7<(@U9G$XXZ7tAR N22WQ%mvv4FO#t!kJkbCE literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_yellow_dir_inventory.png b/mods/special/display_modpack/signs_road/textures/signs_road_yellow_dir_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd34cd2858134ed1bee173ac86aa9622d4c264c GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJc25__kP60R2d2ddB0Wuk23-Fx zOFS1UIq?4XmV=6M3G9DZlm0Un9{60$^Z%&pfxaI+N7zbA7?{@2W$o`;?x5pc&aSYC zspmYSA^%<3h7K-+du&H^N=g}&v>sF_-Id*t!?lX}g&b?rp%sA!MM4iZX_lO8o8j26 o(ZRMwL#|}%MGXm7pv4RfGuZodW}8)&0iDF)>FVdQ&MBb@0FA6dS^xk5 literal 0 HcmV?d00001 diff --git a/mods/special/display_modpack/signs_road/textures/signs_road_yellow_direction.png b/mods/special/display_modpack/signs_road/textures/signs_road_yellow_direction.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7fbaaf613a128139c619f6e8011a3add7303be GIT binary patch literal 536 zcmV+z0_XjSP)g7(iT< zqgHoznU01fxUdfy7xp3Lu@PP5{Kuc9bYfGtAAf@6NjyC(fz0BM)bG5! zWK=E6ETrFe8R7#;XQE^!FEw~)hg3s;Du@LG6lzMPR0n$*UT7B|NSN`8w$z$hajGYb z6LxV!%=ESeJ-rMC0SN5Hec#-=~TDYQ&^ZQ5fzA7U&my}^`=1ri5 zkA~ypGa;ASN{bEw7;QEigwb%#!N-xdUNH!-L_^%rOG-ZY8e?lVk9?X<)6Q!IKbz(_ a@4f?jLp572#2Bvt0000 + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/mods/special/display_modpack/steles/README.md b/mods/special/display_modpack/steles/README.md new file mode 100644 index 0000000..bc14b53 --- /dev/null +++ b/mods/special/display_modpack/steles/README.md @@ -0,0 +1,25 @@ +# Steles + +This mod provides stone steles with text display. Text is locked if area is protected. + +For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?t=19365) at the Minetest forums. + +**Dependancies**: default, display\_lib, font\_lib, technic? + +(Technic adds marble and granite steles) + +**License**: LGPL + +## Recipes + + - M - + - B - + M M M + +B = Black Dye, M = Material + +Material (must be all the same) can be : Stone, Desert Stone, Sandstone, Granite or Marble + +Gives 4 steles of corresponding material. Right click on stele to update text. + +(Extra materials can be added in config.lua file) diff --git a/mods/special/display_modpack/steles/config.lua b/mods/special/display_modpack/steles/config.lua new file mode 100644 index 0000000..551429d --- /dev/null +++ b/mods/special/display_modpack/steles/config.lua @@ -0,0 +1,37 @@ +--[[ + steles mod for Minetest. Steles / graves with text on it. + (c) Pierre-Yves Rollo + + This file is part of steles. + + steles is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + steles is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with steles. If not, see . +--]] + +local S = steles.intllib + +steles.materials = { + 'default:stone', + 'default:sandstone', + 'default:desert_stone', + 'technic:marble', + 'technic:granite', +} + +steles.materials_desc = { + S("Stone Stele"), + S("Sandstone Stele"), + S("Desert Stone Stele"), + S("Marble Stele"), + S("Granite Stele"), +} diff --git a/mods/special/display_modpack/steles/copyright.txt b/mods/special/display_modpack/steles/copyright.txt new file mode 100644 index 0000000..1a4e167 --- /dev/null +++ b/mods/special/display_modpack/steles/copyright.txt @@ -0,0 +1,9 @@ +Code by Pierre-Yves Rollo +intllib support (i18n) by (fat115) +intllib fallback code and tools by Diego Martínez (kaeza) +Extra contibutors: +(Thomas--S) +Translations: +Muhammad Nur Hidayat Yasuyoshi (MuhdNurHidayat) +(fat115) + diff --git a/mods/special/display_modpack/steles/crafts.lua b/mods/special/display_modpack/steles/crafts.lua new file mode 100644 index 0000000..9973aac --- /dev/null +++ b/mods/special/display_modpack/steles/crafts.lua @@ -0,0 +1,33 @@ +--[[ + steles mod for Minetest. Steles / graves with text on it. + (c) Pierre-Yves Rollo + + This file is part of steles. + + steles is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + steles is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with steles. If not, see . +--]] + +for _, material in ipairs(steles.materials) do + local parts = material:split(":") + + minetest.register_craft({ + output = 'steles:'..parts[2]..'_stele 4', + recipe = { + {'', material, ''}, + {'', 'dye:black', ''}, + {material, material, material}, + } + }) + +end diff --git a/mods/special/display_modpack/steles/depends.txt b/mods/special/display_modpack/steles/depends.txt new file mode 100644 index 0000000..ba43223 --- /dev/null +++ b/mods/special/display_modpack/steles/depends.txt @@ -0,0 +1,5 @@ +default +intllib? +display_api +font_api +technic? diff --git a/mods/special/display_modpack/steles/init.lua b/mods/special/display_modpack/steles/init.lua new file mode 100644 index 0000000..e5d2430 --- /dev/null +++ b/mods/special/display_modpack/steles/init.lua @@ -0,0 +1,31 @@ +--[[ + steles mod for Minetest. Steles / graves with text on it. + (c) Pierre-Yves Rollo + + This file is part of steles. + + steles is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + steles is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with steles. If not, see . +--]] + +steles = {} +steles.name = minetest.get_current_modname() +steles.path = minetest.get_modpath(steles.name) + +-- Load support for intllib. +local S, NS = dofile(steles.path.."/intllib.lua") +steles.intllib = S + +dofile(steles.path.."/config.lua") +dofile(steles.path.."/nodes.lua") +dofile(steles.path.."/crafts.lua") diff --git a/mods/special/display_modpack/steles/intllib.lua b/mods/special/display_modpack/steles/intllib.lua new file mode 100644 index 0000000..6669d72 --- /dev/null +++ b/mods/special/display_modpack/steles/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/special/display_modpack/steles/locale/fr.po b/mods/special/display_modpack/steles/locale/fr.po new file mode 100644 index 0000000..1785d8a --- /dev/null +++ b/mods/special/display_modpack/steles/locale/fr.po @@ -0,0 +1,47 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-05 10:06+0200\n" +"PO-Revision-Date: 2017-08-05 09:03+0200\n" +"Last-Translator: fat115 \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: config.lua +msgid "Stone Stele" +msgstr "Stèle en pierre" + +#: config.lua +msgid "Sandstone Stele" +msgstr "Stèle en grès" + +#: config.lua +msgid "Desert Stone Stele" +msgstr "Stèle en pierre du désert" + +#: config.lua +msgid "Marble Stele" +msgstr "Stèle en marbre" + +#: config.lua +msgid "Granite Stele" +msgstr "Stèle en granit" + +#: nodes.lua +msgid "Displayed text (3 lines max)" +msgstr "Texte à afficher (3 lignes maxi.)" + +#: nodes.lua +msgid "Write" +msgstr "Écrire" diff --git a/mods/special/display_modpack/steles/locale/ms.po b/mods/special/display_modpack/steles/locale/ms.po new file mode 100644 index 0000000..1c58983 --- /dev/null +++ b/mods/special/display_modpack/steles/locale/ms.po @@ -0,0 +1,46 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Yaya (Nurul Azeera Hidayah @ Muhammad Nur Hidayat) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: Display Modpack\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 11:29+0200\n" +"PO-Revision-Date: 2020-07-05 11:34+0000\n" +"Last-Translator: Yaya MNH48 \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.3\n" + +#: config.lua +msgid "Stone Stele" +msgstr "Tulisan Batu" + +#: config.lua +msgid "Sandstone Stele" +msgstr "Tulisan Batu Pasir" + +#: config.lua +msgid "Desert Stone Stele" +msgstr "Tulisan Batu Gurun" + +#: config.lua +msgid "Marble Stele" +msgstr "Tulisan Marmar" + +#: config.lua +msgid "Granite Stele" +msgstr "Tulisan Granit" + +#: nodes.lua +msgid "Displayed text (3 lines max)" +msgstr "Teks terpapar (maksimum 3 baris)" + +#: nodes.lua +msgid "Write" +msgstr "Tulis" diff --git a/mods/special/display_modpack/steles/locale/template.pot b/mods/special/display_modpack/steles/locale/template.pot new file mode 100644 index 0000000..0144ace --- /dev/null +++ b/mods/special/display_modpack/steles/locale/template.pot @@ -0,0 +1,46 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-26 11:29+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: config.lua +msgid "Stone Stele" +msgstr "" + +#: config.lua +msgid "Sandstone Stele" +msgstr "" + +#: config.lua +msgid "Desert Stone Stele" +msgstr "" + +#: config.lua +msgid "Marble Stele" +msgstr "" + +#: config.lua +msgid "Granite Stele" +msgstr "" + +#: nodes.lua +msgid "Displayed text (3 lines max)" +msgstr "" + +#: nodes.lua +msgid "Write" +msgstr "" diff --git a/mods/special/display_modpack/steles/mod.conf b/mods/special/display_modpack/steles/mod.conf new file mode 100644 index 0000000..2b29f05 --- /dev/null +++ b/mods/special/display_modpack/steles/mod.conf @@ -0,0 +1,4 @@ +name=steles +description=Stone steles with text display on them +depends=default,display_api,font_api +optional_depends=intllib,technic diff --git a/mods/special/display_modpack/steles/nodes.lua b/mods/special/display_modpack/steles/nodes.lua new file mode 100644 index 0000000..2245e20 --- /dev/null +++ b/mods/special/display_modpack/steles/nodes.lua @@ -0,0 +1,94 @@ +--[[ + steles mod for Minetest. Steles / graves with text on it. + (c) Pierre-Yves Rollo + + This file is part of steles. + + steles is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + steles is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with steles. If not, see . +--]] + +local S = steles.intllib +local F = function(...) return minetest.formspec_escape(S(...)) end + +display_api.register_display_entity("steles:text") + +for i, material in ipairs(steles.materials) do + + local ndef = minetest.registered_nodes[material] + + if ndef then + local groups = table.copy(ndef.groups) + local parts = material:split(":") + groups.display_api = 1 + + minetest.register_node("steles:"..parts[2].."_stele", { + description = steles.materials_desc[i], + sunlight_propagates = true, + paramtype = "light", + paramtype2 = "facedir", + tiles = ndef.tiles, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-5/16, -5/16, -2/16, 5/16, 0.5, 2/16}, + {-7/16, -0.5, -4/16, 7/16, -5/16, 4/16} + }, + }, + groups = groups, + display_entities = { + ["steles:text"] = { + on_display_update = font_api.on_display_update, + depth = -2/16 - display_api.entity_spacing, + top = -2/16, + aspect_ratio = 0.4, + size = { x = 10/16, y = 12/16 }, + maxlines = 3, + }, + }, + on_place = function(itemstack, placer, pointed_thing) + minetest.rotate_node(itemstack, placer, pointed_thing) + return display_api.on_place(itemstack, placer, pointed_thing) + end, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", string.format([=[ + size[6,4]%s%s%s + textarea[0.5,0.7;5.5,2;display_text;%s;${display_text}] + button[1,3;2,1;font;%s] + button_exit[3,3;2,1;ok;%s]]=], + default.gui_bg, default.gui_bg_img, default.gui_slots, + F("Displayed text (3 lines max)"), + F("Font"), F("Write"))) + display_api.on_construct(pos) + end, + on_destruct = display_api.on_destruct, + on_rotate = display_api.on_rotate, + on_receive_fields = function(pos, formname, fields, player) + if not minetest.is_protected(pos, player:get_player_name()) then + local meta = minetest.get_meta(pos) + if fields.ok or fields.font then + meta:set_string("display_text", fields.display_text) + meta:set_string("infotext", "\""..fields.display_text.."\"") + display_api.update_entities(pos) + end + if fields.font then + font_api.show_font_list(player, pos) + end + end + end, + on_punch = display_api.update_entities, + }) + end +end diff --git a/mods/special/display_modpack/steles/tools/updatepo.sh b/mods/special/display_modpack/steles/tools/updatepo.sh new file mode 100755 index 0000000..feb2504 --- /dev/null +++ b/mods/special/display_modpack/steles/tools/updatepo.sh @@ -0,0 +1,25 @@ +#! /bin/bash + +# To create a new translation: +# msginit --locale=ll_CC -o locale/ll_CC.po -i locale/template.pot + +cd "$(dirname "${BASH_SOURCE[0]}")/.."; + +# Extract translatable strings. +xgettext --from-code=UTF-8 \ + --language=Lua \ + --sort-by-file \ + --keyword=S \ + --keyword=NS:1,2 \ + --keyword=N_ \ + --keyword=F \ + --add-comments='Translators:' \ + --add-location=file \ + -o locale/template.pot \ + $(find . -name '*.lua') + +# Update translations. +find locale -name '*.po' | while read -r file; do + echo $file + msgmerge --update $file locale/template.pot; +done diff --git a/mods/special/modpack.conf b/mods/special/modpack.conf new file mode 100644 index 0000000..fe2b237 --- /dev/null +++ b/mods/special/modpack.conf @@ -0,0 +1,3 @@ +description = Diverse special elements + +display_modpack - signs, clock, boards, ...