From 3b69cf992e5151340dc1c062a0d5e76bb35b1cf3 Mon Sep 17 00:00:00 2001 From: Grey-Echo Date: Wed, 5 Apr 2017 01:26:39 +0200 Subject: [PATCH] This is an important refactor of the way documentation generation works * Installs luarocks WITH it's executable (easy to install other rocks if necessary) * Use Lua supplied with luarocks * Create Utils/luadocumentor.bat, which works with RELATIVE PATH ! -> Everybody can generate the doc * Updated launch files accordingly --- .../Moose DOCUMENTATION Generate.launch | 5 +- ...e LOADER Generate Dynamic Moose.lua.launch | 2 +- ...se LOADER Generate Static Moose.lua.launch | 2 +- ...TE ALL MOOSE Demonstration Missions.launch | 3 +- Moose Development/Moose/Core/Radio.lua | 13 +- Moose Development/Moose/Core/Zone.lua | 27 +- Moose Mission Setup/Moose.lua | 35942 +--------------- Utils/lua/5.1/bin/lua.exe | Bin 49152 -> 0 bytes Utils/lua/5.1/bin/lua51.dll | Bin 170202 -> 0 bytes Utils/lua/5.1/bin/luac.exe | Bin 197312 -> 0 bytes Utils/lua/5.1/bin/luadocumentor.bat | 3 - Utils/lua/5.1/lib/liblua.a | Bin 254464 -> 0 bytes Utils/lua/5.1/lib/lua/5.1/checks.dll | Bin 29651 -> 0 bytes Utils/lua/5.1/lib/lua/5.1/lfs.dll | Bin 41109 -> 0 bytes Utils/lua/5.1/man/man1/lua.1 | 163 - Utils/lua/5.1/man/man1/luac.1 | 136 - Utils/luadocumentor.bat | 3 + Utils/luarocks/Microsoft.VC80.CRT.manifest | 8 + Utils/luarocks/bin2c5.1.exe | Bin 0 -> 94208 bytes Utils/luarocks/config-5.1.lua | 14 + Utils/{lua/5.1 => luarocks}/include/lauxlib.h | 0 Utils/{lua/5.1 => luarocks}/include/lua.h | 8 +- Utils/{lua/5.1 => luarocks}/include/lua.hpp | 0 Utils/{lua/5.1 => luarocks}/include/luaconf.h | 4 +- Utils/{lua/5.1 => luarocks}/include/lualib.h | 0 Utils/luarocks/lua.ico | Bin 0 -> 22486 bytes Utils/luarocks/lua/luarocks/add.lua | 122 + Utils/luarocks/lua/luarocks/admin_remove.lua | 92 + Utils/luarocks/lua/luarocks/build.lua | 415 + Utils/luarocks/lua/luarocks/cache.lua | 78 + Utils/luarocks/lua/luarocks/cfg.lua | 760 + Utils/luarocks/lua/luarocks/command_line.lua | 199 + Utils/luarocks/lua/luarocks/config_cmd.lua | 72 + Utils/luarocks/lua/luarocks/deps.lua | 752 + Utils/luarocks/lua/luarocks/dir.lua | 74 + Utils/luarocks/lua/luarocks/doc.lua | 157 + Utils/luarocks/lua/luarocks/download.lua | 109 + Utils/luarocks/lua/luarocks/fetch.lua | 394 + Utils/luarocks/lua/luarocks/fetch/cvs.lua | 55 + Utils/luarocks/lua/luarocks/fetch/git.lua | 92 + .../luarocks/lua/luarocks/fetch/git_file.lua | 19 + .../luarocks/lua/luarocks/fetch/git_http.lua | 26 + .../luarocks/lua/luarocks/fetch/git_https.lua | 7 + Utils/luarocks/lua/luarocks/fetch/git_ssh.lua | 32 + Utils/luarocks/lua/luarocks/fetch/hg.lua | 65 + Utils/luarocks/lua/luarocks/fetch/hg_http.lua | 24 + .../luarocks/lua/luarocks/fetch/hg_https.lua | 8 + Utils/luarocks/lua/luarocks/fetch/hg_ssh.lua | 8 + Utils/luarocks/lua/luarocks/fetch/sscm.lua | 44 + Utils/luarocks/lua/luarocks/fetch/svn.lua | 64 + Utils/luarocks/lua/luarocks/fs.lua | 76 + Utils/luarocks/lua/luarocks/fs/lua.lua | 873 + Utils/luarocks/lua/luarocks/fs/tools.lua | 156 + Utils/luarocks/lua/luarocks/fs/unix.lua | 135 + Utils/luarocks/lua/luarocks/fs/unix/tools.lua | 237 + Utils/luarocks/lua/luarocks/fs/win32.lua | 266 + .../luarocks/lua/luarocks/fs/win32/tools.lua | 227 + Utils/luarocks/lua/luarocks/help.lua | 118 + Utils/luarocks/lua/luarocks/index.lua | 186 + Utils/luarocks/lua/luarocks/install.lua | 188 + Utils/luarocks/lua/luarocks/lint.lua | 55 + Utils/luarocks/lua/luarocks/list.lua | 97 + Utils/luarocks/lua/luarocks/loader.lua | 249 + Utils/luarocks/lua/luarocks/make.lua | 92 + Utils/luarocks/lua/luarocks/make_manifest.lua | 53 + Utils/luarocks/lua/luarocks/manif.lua | 628 + Utils/luarocks/lua/luarocks/manif_core.lua | 106 + Utils/luarocks/lua/luarocks/new_version.lua | 200 + Utils/luarocks/lua/luarocks/pack.lua | 197 + Utils/luarocks/lua/luarocks/path.lua | 388 + Utils/luarocks/lua/luarocks/path_cmd.lua | 69 + Utils/luarocks/lua/luarocks/persist.lua | 210 + Utils/luarocks/lua/luarocks/purge.lua | 79 + Utils/luarocks/lua/luarocks/refresh_cache.lua | 33 + Utils/luarocks/lua/luarocks/remove.lua | 174 + Utils/luarocks/lua/luarocks/repos.lua | 422 + Utils/luarocks/lua/luarocks/require.lua | 2 + Utils/luarocks/lua/luarocks/search.lua | 483 + Utils/luarocks/lua/luarocks/show.lua | 152 + .../luarocks/lua/luarocks/site_config_5_1.lua | 14 + Utils/luarocks/lua/luarocks/tools/patch.lua | 700 + Utils/luarocks/lua/luarocks/tools/tar.lua | 150 + Utils/luarocks/lua/luarocks/tools/zip.lua | 264 + Utils/luarocks/lua/luarocks/type_check.lua | 344 + Utils/luarocks/lua/luarocks/unpack.lua | 166 + Utils/luarocks/lua/luarocks/upload.lua | 95 + Utils/luarocks/lua/luarocks/upload/api.lua | 284 + .../lua/luarocks/upload/multipart.lua | 111 + Utils/luarocks/lua/luarocks/util.lua | 714 + Utils/luarocks/lua/luarocks/validate.lua | 159 + .../luarocks/lua/luarocks/write_rockspec.lua | 375 + Utils/luarocks/lua5.1.dll | Bin 0 -> 167936 bytes Utils/luarocks/lua5.1.exe | Bin 0 -> 45056 bytes Utils/luarocks/lua5.1.lib | Bin 0 -> 26112 bytes Utils/luarocks/lua51.dll | Bin 0 -> 11264 bytes Utils/luarocks/lua51.lib | Bin 0 -> 25974 bytes Utils/luarocks/luac5.1.exe | Bin 0 -> 208896 bytes Utils/luarocks/luarocks-admin.bat | 43 + Utils/luarocks/luarocks-admin.lua | 19 + Utils/luarocks/luarocks.bat | 43 + Utils/luarocks/luarocks.lua | 33 + Utils/luarocks/luarocksw.bat | 49 + Utils/luarocks/msvcm80.dll | Bin 0 -> 479232 bytes Utils/luarocks/msvcp80.dll | Bin 0 -> 548864 bytes Utils/luarocks/msvcr80.dll | Bin 0 -> 626688 bytes Utils/luarocks/rclauncher.c | 139 + Utils/luarocks/systree/bin/luadocumentor.bat | 3 + Utils/luarocks/systree/lib/lua/5.1/checks.dll | Bin 0 -> 24746 bytes Utils/luarocks/systree/lib/lua/5.1/lfs.dll | Bin 0 -> 33815 bytes .../rocks/checks/1.0-1/checks-1.0-1.rockspec | 0 .../luarocks/rocks/checks/1.0-1/rock_manifest | 2 +- .../luadocumentor/0.1.5-1/bin/luadocumentor | 178 + .../rocks/luadocumentor/0.1.5-1/doc/LICENSE | 0 .../rocks/luadocumentor/0.1.5-1/doc/README.md | 0 .../0.1.5-1/luadocumentor-0.1.5-1.rockspec | 0 .../rocks/luadocumentor/0.1.5-1/rock_manifest | 0 .../luafilesystem/1.6.3-2/doc/us/doc.css | 0 .../1.6.3-2/doc/us/examples.html | 0 .../luafilesystem/1.6.3-2/doc/us/index.html | 0 .../luafilesystem/1.6.3-2/doc/us/license.html | 0 .../1.6.3-2/doc/us/luafilesystem.png | Bin .../luafilesystem/1.6.3-2/doc/us/manual.html | 0 .../1.6.3-2/luafilesystem-1.6.3-2.rockspec | 0 .../rocks/luafilesystem/1.6.3-2/rock_manifest | 2 +- .../luafilesystem/1.6.3-2/tests/test.lua | 0 .../systree}/lib/luarocks/rocks/manifest | 18 +- .../markdown/0.32-2/markdown-0.32-2.rockspec | 0 .../rocks/markdown/0.32-2/rock_manifest | 0 .../0.7.3-1/doc/README-compiler.md | 0 .../0.7.3-1/doc/README-parser.md | 0 .../metalua-compiler/0.7.3-1/doc/README.md | 0 .../0.7.3-1/metalua-compiler-0.7.3-1.rockspec | 0 .../metalua-compiler/0.7.3-1/rock_manifest | 0 .../0.7.3-2/doc/README-compiler.md | 0 .../0.7.3-2/doc/README-parser.md | 0 .../metalua-parser/0.7.3-2/doc/README.md | 0 .../0.7.3-2/metalua-parser-0.7.3-2.rockspec | 0 .../metalua-parser/0.7.3-2/rock_manifest | 0 .../0.9.8-1/penlight-0.9.8-1.rockspec | 0 .../rocks/penlight/0.9.8-1/rock_manifest | 0 .../systree}/share/lua/5.1/defaultcss.lua | 0 .../systree}/share/lua/5.1/docgenerator.lua | 0 .../systree}/share/lua/5.1/extractors.lua | 0 .../systree}/share/lua/5.1/fs/lfs.lua | 0 .../systree}/share/lua/5.1/lddextractor.lua | 0 .../systree}/share/lua/5.1/markdown.lua | 0 .../share/lua/5.1/metalua/compiler.lua | 0 .../lua/5.1/metalua/compiler/ast_to_src.mlua | 0 .../lua/5.1/metalua/compiler/bytecode.lua | 0 .../5.1/metalua/compiler/bytecode/compile.lua | 0 .../5.1/metalua/compiler/bytecode/lcode.lua | 0 .../5.1/metalua/compiler/bytecode/ldump.lua | 0 .../metalua/compiler/bytecode/lopcodes.lua | 0 .../lua/5.1/metalua/compiler/globals.lua | 0 .../share/lua/5.1/metalua/compiler/parser.lua | 0 .../compiler/parser/annot/generator.lua | 0 .../metalua/compiler/parser/annot/grammar.lua | 0 .../lua/5.1/metalua/compiler/parser/expr.lua | 0 .../lua/5.1/metalua/compiler/parser/ext.lua | 0 .../lua/5.1/metalua/compiler/parser/lexer.lua | 0 .../lua/5.1/metalua/compiler/parser/meta.lua | 0 .../lua/5.1/metalua/compiler/parser/misc.lua | 0 .../lua/5.1/metalua/compiler/parser/stat.lua | 0 .../lua/5.1/metalua/compiler/parser/table.lua | 0 .../5.1/metalua/extension/comprehension.mlua | 0 .../lua/5.1/metalua/extension/match.mlua | 0 .../lua/5.1/metalua/grammar/generator.lua | 0 .../share/lua/5.1/metalua/grammar/lexer.lua | 0 .../systree}/share/lua/5.1/metalua/loader.lua | 0 .../systree}/share/lua/5.1/metalua/pprint.lua | 0 .../systree}/share/lua/5.1/metalua/repl.mlua | 0 .../share/lua/5.1/metalua/treequery.mlua | 0 .../share/lua/5.1/metalua/treequery/walk.mlua | 0 .../share/lua/5.1/models/apimodel.lua | 0 .../share/lua/5.1/models/apimodelbuilder.lua | 0 .../share/lua/5.1/models/internalmodel.lua | 0 .../lua/5.1/models/internalmodelbuilder.mlua | 0 .../share/lua/5.1/models/ldparser.lua | 0 .../systree}/share/lua/5.1/pl/Date.lua | 0 .../systree}/share/lua/5.1/pl/List.lua | 0 .../systree}/share/lua/5.1/pl/Map.lua | 0 .../systree}/share/lua/5.1/pl/MultiMap.lua | 0 .../systree}/share/lua/5.1/pl/OrderedMap.lua | 0 .../systree}/share/lua/5.1/pl/Set.lua | 0 .../systree}/share/lua/5.1/pl/app.lua | 0 .../systree}/share/lua/5.1/pl/array2d.lua | 0 .../systree}/share/lua/5.1/pl/class.lua | 0 .../share/lua/5.1/pl/comprehension.lua | 0 .../systree}/share/lua/5.1/pl/config.lua | 0 .../systree}/share/lua/5.1/pl/data.lua | 0 .../systree}/share/lua/5.1/pl/dir.lua | 0 .../systree}/share/lua/5.1/pl/file.lua | 0 .../systree}/share/lua/5.1/pl/func.lua | 0 .../systree}/share/lua/5.1/pl/init.lua | 0 .../systree}/share/lua/5.1/pl/input.lua | 0 .../systree}/share/lua/5.1/pl/lapp.lua | 0 .../systree}/share/lua/5.1/pl/lexer.lua | 0 .../systree}/share/lua/5.1/pl/luabalanced.lua | 0 .../systree}/share/lua/5.1/pl/operator.lua | 0 .../systree}/share/lua/5.1/pl/path.lua | 0 .../systree}/share/lua/5.1/pl/permute.lua | 0 .../share/lua/5.1/pl/platf/luajava.lua | 0 .../systree}/share/lua/5.1/pl/pretty.lua | 0 .../systree}/share/lua/5.1/pl/seq.lua | 0 .../systree}/share/lua/5.1/pl/sip.lua | 0 .../systree}/share/lua/5.1/pl/strict.lua | 0 .../systree}/share/lua/5.1/pl/stringio.lua | 0 .../systree}/share/lua/5.1/pl/stringx.lua | 0 .../systree}/share/lua/5.1/pl/tablex.lua | 0 .../systree}/share/lua/5.1/pl/template.lua | 0 .../systree}/share/lua/5.1/pl/test.lua | 0 .../systree}/share/lua/5.1/pl/text.lua | 0 .../systree}/share/lua/5.1/pl/utils.lua | 0 .../systree}/share/lua/5.1/pl/xml.lua | 0 .../systree}/share/lua/5.1/template/file.lua | 0 .../systree}/share/lua/5.1/template/index.lua | 0 .../lua/5.1/template/index/recordtypedef.lua | 0 .../systree}/share/lua/5.1/template/item.lua | 0 .../systree}/share/lua/5.1/template/page.lua | 0 .../share/lua/5.1/template/recordtypedef.lua | 0 .../systree}/share/lua/5.1/template/usage.lua | 0 .../systree}/share/lua/5.1/template/utils.lua | 0 .../systree}/share/lua/5.1/templateengine.lua | 0 Utils/luarocks/tools/7z.dll | Bin 0 -> 858624 bytes Utils/luarocks/tools/7z.exe | Bin 0 -> 161792 bytes Utils/luarocks/tools/cp.exe | Bin 0 -> 130048 bytes Utils/luarocks/tools/find.exe | Bin 0 -> 160256 bytes Utils/luarocks/tools/libeay32.dll | Bin 0 -> 1177600 bytes Utils/luarocks/tools/libiconv2.dll | Bin 0 -> 1008128 bytes Utils/luarocks/tools/libintl3.dll | Bin 0 -> 103424 bytes Utils/luarocks/tools/libssl32.dll | Bin 0 -> 232960 bytes Utils/luarocks/tools/ls.exe | Bin 0 -> 180736 bytes Utils/luarocks/tools/md5sum.exe | Bin 0 -> 41984 bytes Utils/luarocks/tools/mkdir.exe | Bin 0 -> 32768 bytes Utils/luarocks/tools/mv.exe | Bin 0 -> 138752 bytes Utils/luarocks/tools/pwd.exe | Bin 0 -> 61440 bytes Utils/luarocks/tools/rmdir.exe | Bin 0 -> 25088 bytes Utils/luarocks/tools/test.exe | Bin 0 -> 62976 bytes Utils/luarocks/tools/uname.exe | Bin 0 -> 33792 bytes Utils/luarocks/tools/wget.exe | Bin 0 -> 449024 bytes Utils/luarocks/wlua5.1.exe | Bin 0 -> 35840 bytes docs/Documentation/AI_Balancer.html | 18 + docs/Documentation/AI_Cap.html | 18 + docs/Documentation/AI_Cas.html | 18 + docs/Documentation/AI_Patrol.html | 21 + docs/Documentation/Account.html | 18 + docs/Documentation/Airbase.html | 18 + docs/Documentation/AirbasePolice.html | 18 + docs/Documentation/Assign.html | 18 + docs/Documentation/Base.html | 18 + docs/Documentation/Cargo.html | 19 + docs/Documentation/CleanUp.html | 18 + docs/Documentation/Client.html | 18 + docs/Documentation/CommandCenter.html | 18 + docs/Documentation/Controllable.html | 18 + docs/Documentation/DCSAirbase.html | 13 +- docs/Documentation/DCSCoalitionObject.html | 104 +- docs/Documentation/DCSCommand.html | 13 +- docs/Documentation/DCSController.html | 13 +- docs/Documentation/DCSGroup.html | 13 +- docs/Documentation/DCSObject.html | 13 +- docs/Documentation/DCSTask.html | 13 +- docs/Documentation/DCSTypes.html | 13 +- docs/Documentation/DCSUnit.html | 13 +- docs/Documentation/DCSVec3.html | 193 + docs/Documentation/DCSWorld.html | 13 +- docs/Documentation/DCSZone.html | 173 + docs/Documentation/DCScountry.html | 13 +- docs/Documentation/DCStimer.html | 13 +- docs/Documentation/DCStrigger.html | 13 +- docs/Documentation/Database.html | 18 + docs/Documentation/Detection.html | 22 +- docs/Documentation/DetectionManager.html | 18 + docs/Documentation/Escort.html | 18 + docs/Documentation/Event.html | 18 + docs/Documentation/Fsm.html | 21 +- docs/Documentation/Group.html | 22 +- docs/Documentation/Identifiable.html | 18 + docs/Documentation/MOVEMENT.html | 22 + docs/Documentation/Menu.html | 18 + docs/Documentation/Message.html | 18 + docs/Documentation/MissileTrainer.html | 18 + docs/Documentation/Mission.html | 18 + docs/Documentation/Object.html | 18 + docs/Documentation/Point.html | 19 + docs/Documentation/Positionable.html | 18 + docs/Documentation/Process_JTAC.html | 18 + docs/Documentation/Process_Pickup.html | 18 + docs/Documentation/Radio.html | 30 +- docs/Documentation/Route.html | 18 + docs/Documentation/Scenery.html | 18 + docs/Documentation/ScheduleDispatcher.html | 18 + docs/Documentation/Scheduler.html | 18 + docs/Documentation/Scoring.html | 18 + docs/Documentation/Sead.html | 18 + docs/Documentation/Set.html | 18 + docs/Documentation/Smoke.html | 18 + docs/Documentation/Spawn.html | 20 +- docs/Documentation/Static.html | 18 + docs/Documentation/StaticObject.html | 13 +- docs/Documentation/Task.html | 241 +- docs/Documentation/Task_A2G.html | 42 +- docs/Documentation/Task_A2G_Dispatcher.html | 18 + docs/Documentation/Task_PICKUP.html | 18 + docs/Documentation/Unit.html | 18 + docs/Documentation/Utils.html | 18 + docs/Documentation/Zone.html | 238 +- docs/Documentation/env.html | 13 +- docs/Documentation/index.html | 128 +- docs/Documentation/land.html | 13 +- docs/Documentation/routines.html | 18 + docs/Documentation/stylesheet.css | 1085 +- docs/Presentations/RADIO/Dia1.JPG | Bin 0 -> 179061 bytes 313 files changed, 16547 insertions(+), 36807 deletions(-) delete mode 100644 Utils/lua/5.1/bin/lua.exe delete mode 100644 Utils/lua/5.1/bin/lua51.dll delete mode 100644 Utils/lua/5.1/bin/luac.exe delete mode 100644 Utils/lua/5.1/bin/luadocumentor.bat delete mode 100644 Utils/lua/5.1/lib/liblua.a delete mode 100644 Utils/lua/5.1/lib/lua/5.1/checks.dll delete mode 100644 Utils/lua/5.1/lib/lua/5.1/lfs.dll delete mode 100644 Utils/lua/5.1/man/man1/lua.1 delete mode 100644 Utils/lua/5.1/man/man1/luac.1 create mode 100644 Utils/luadocumentor.bat create mode 100644 Utils/luarocks/Microsoft.VC80.CRT.manifest create mode 100644 Utils/luarocks/bin2c5.1.exe create mode 100644 Utils/luarocks/config-5.1.lua rename Utils/{lua/5.1 => luarocks}/include/lauxlib.h (100%) rename Utils/{lua/5.1 => luarocks}/include/lua.h (98%) rename Utils/{lua/5.1 => luarocks}/include/lua.hpp (100%) rename Utils/{lua/5.1 => luarocks}/include/luaconf.h (98%) rename Utils/{lua/5.1 => luarocks}/include/lualib.h (100%) create mode 100644 Utils/luarocks/lua.ico create mode 100644 Utils/luarocks/lua/luarocks/add.lua create mode 100644 Utils/luarocks/lua/luarocks/admin_remove.lua create mode 100644 Utils/luarocks/lua/luarocks/build.lua create mode 100644 Utils/luarocks/lua/luarocks/cache.lua create mode 100644 Utils/luarocks/lua/luarocks/cfg.lua create mode 100644 Utils/luarocks/lua/luarocks/command_line.lua create mode 100644 Utils/luarocks/lua/luarocks/config_cmd.lua create mode 100644 Utils/luarocks/lua/luarocks/deps.lua create mode 100644 Utils/luarocks/lua/luarocks/dir.lua create mode 100644 Utils/luarocks/lua/luarocks/doc.lua create mode 100644 Utils/luarocks/lua/luarocks/download.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/cvs.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/git.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/git_file.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/git_http.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/git_https.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/git_ssh.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/hg.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/hg_http.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/hg_https.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/hg_ssh.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/sscm.lua create mode 100644 Utils/luarocks/lua/luarocks/fetch/svn.lua create mode 100644 Utils/luarocks/lua/luarocks/fs.lua create mode 100644 Utils/luarocks/lua/luarocks/fs/lua.lua create mode 100644 Utils/luarocks/lua/luarocks/fs/tools.lua create mode 100644 Utils/luarocks/lua/luarocks/fs/unix.lua create mode 100644 Utils/luarocks/lua/luarocks/fs/unix/tools.lua create mode 100644 Utils/luarocks/lua/luarocks/fs/win32.lua create mode 100644 Utils/luarocks/lua/luarocks/fs/win32/tools.lua create mode 100644 Utils/luarocks/lua/luarocks/help.lua create mode 100644 Utils/luarocks/lua/luarocks/index.lua create mode 100644 Utils/luarocks/lua/luarocks/install.lua create mode 100644 Utils/luarocks/lua/luarocks/lint.lua create mode 100644 Utils/luarocks/lua/luarocks/list.lua create mode 100644 Utils/luarocks/lua/luarocks/loader.lua create mode 100644 Utils/luarocks/lua/luarocks/make.lua create mode 100644 Utils/luarocks/lua/luarocks/make_manifest.lua create mode 100644 Utils/luarocks/lua/luarocks/manif.lua create mode 100644 Utils/luarocks/lua/luarocks/manif_core.lua create mode 100644 Utils/luarocks/lua/luarocks/new_version.lua create mode 100644 Utils/luarocks/lua/luarocks/pack.lua create mode 100644 Utils/luarocks/lua/luarocks/path.lua create mode 100644 Utils/luarocks/lua/luarocks/path_cmd.lua create mode 100644 Utils/luarocks/lua/luarocks/persist.lua create mode 100644 Utils/luarocks/lua/luarocks/purge.lua create mode 100644 Utils/luarocks/lua/luarocks/refresh_cache.lua create mode 100644 Utils/luarocks/lua/luarocks/remove.lua create mode 100644 Utils/luarocks/lua/luarocks/repos.lua create mode 100644 Utils/luarocks/lua/luarocks/require.lua create mode 100644 Utils/luarocks/lua/luarocks/search.lua create mode 100644 Utils/luarocks/lua/luarocks/show.lua create mode 100644 Utils/luarocks/lua/luarocks/site_config_5_1.lua create mode 100644 Utils/luarocks/lua/luarocks/tools/patch.lua create mode 100644 Utils/luarocks/lua/luarocks/tools/tar.lua create mode 100644 Utils/luarocks/lua/luarocks/tools/zip.lua create mode 100644 Utils/luarocks/lua/luarocks/type_check.lua create mode 100644 Utils/luarocks/lua/luarocks/unpack.lua create mode 100644 Utils/luarocks/lua/luarocks/upload.lua create mode 100644 Utils/luarocks/lua/luarocks/upload/api.lua create mode 100644 Utils/luarocks/lua/luarocks/upload/multipart.lua create mode 100644 Utils/luarocks/lua/luarocks/util.lua create mode 100644 Utils/luarocks/lua/luarocks/validate.lua create mode 100644 Utils/luarocks/lua/luarocks/write_rockspec.lua create mode 100644 Utils/luarocks/lua5.1.dll create mode 100644 Utils/luarocks/lua5.1.exe create mode 100644 Utils/luarocks/lua5.1.lib create mode 100644 Utils/luarocks/lua51.dll create mode 100644 Utils/luarocks/lua51.lib create mode 100644 Utils/luarocks/luac5.1.exe create mode 100644 Utils/luarocks/luarocks-admin.bat create mode 100644 Utils/luarocks/luarocks-admin.lua create mode 100644 Utils/luarocks/luarocks.bat create mode 100644 Utils/luarocks/luarocks.lua create mode 100644 Utils/luarocks/luarocksw.bat create mode 100644 Utils/luarocks/msvcm80.dll create mode 100644 Utils/luarocks/msvcp80.dll create mode 100644 Utils/luarocks/msvcr80.dll create mode 100644 Utils/luarocks/rclauncher.c create mode 100644 Utils/luarocks/systree/bin/luadocumentor.bat create mode 100644 Utils/luarocks/systree/lib/lua/5.1/checks.dll create mode 100644 Utils/luarocks/systree/lib/lua/5.1/lfs.dll rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/checks/1.0-1/checks-1.0-1.rockspec (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/checks/1.0-1/rock_manifest (63%) create mode 100644 Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/bin/luadocumentor rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/LICENSE (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/README.md (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luadocumentor/0.1.5-1/luadocumentor-0.1.5-1.rockspec (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luadocumentor/0.1.5-1/rock_manifest (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/doc.css (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/examples.html (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/index.html (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/license.html (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/luafilesystem.png (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/manual.html (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/luafilesystem-1.6.3-2.rockspec (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/rock_manifest (91%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/luafilesystem/1.6.3-2/tests/test.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/manifest (99%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/markdown/0.32-2/markdown-0.32-2.rockspec (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/markdown/0.32-2/rock_manifest (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-compiler.md (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-parser.md (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README.md (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-compiler/0.7.3-1/metalua-compiler-0.7.3-1.rockspec (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-compiler/0.7.3-1/rock_manifest (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-compiler.md (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-parser.md (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README.md (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-parser/0.7.3-2/metalua-parser-0.7.3-2.rockspec (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/metalua-parser/0.7.3-2/rock_manifest (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/penlight/0.9.8-1/penlight-0.9.8-1.rockspec (100%) rename Utils/{lua/5.1 => luarocks/systree}/lib/luarocks/rocks/penlight/0.9.8-1/rock_manifest (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/defaultcss.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/docgenerator.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/extractors.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/fs/lfs.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/lddextractor.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/markdown.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/ast_to_src.mlua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/bytecode.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/bytecode/compile.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/bytecode/lcode.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/bytecode/ldump.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/bytecode/lopcodes.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/globals.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/annot/generator.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/annot/grammar.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/expr.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/ext.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/lexer.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/meta.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/misc.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/stat.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/compiler/parser/table.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/extension/comprehension.mlua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/extension/match.mlua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/grammar/generator.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/grammar/lexer.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/loader.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/pprint.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/repl.mlua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/treequery.mlua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/metalua/treequery/walk.mlua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/models/apimodel.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/models/apimodelbuilder.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/models/internalmodel.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/models/internalmodelbuilder.mlua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/models/ldparser.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/Date.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/List.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/Map.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/MultiMap.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/OrderedMap.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/Set.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/app.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/array2d.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/class.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/comprehension.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/config.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/data.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/dir.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/file.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/func.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/init.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/input.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/lapp.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/lexer.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/luabalanced.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/operator.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/path.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/permute.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/platf/luajava.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/pretty.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/seq.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/sip.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/strict.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/stringio.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/stringx.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/tablex.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/template.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/test.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/text.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/utils.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/pl/xml.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/template/file.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/template/index.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/template/index/recordtypedef.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/template/item.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/template/page.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/template/recordtypedef.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/template/usage.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/template/utils.lua (100%) rename Utils/{lua/5.1 => luarocks/systree}/share/lua/5.1/templateengine.lua (100%) create mode 100644 Utils/luarocks/tools/7z.dll create mode 100644 Utils/luarocks/tools/7z.exe create mode 100644 Utils/luarocks/tools/cp.exe create mode 100644 Utils/luarocks/tools/find.exe create mode 100644 Utils/luarocks/tools/libeay32.dll create mode 100644 Utils/luarocks/tools/libiconv2.dll create mode 100644 Utils/luarocks/tools/libintl3.dll create mode 100644 Utils/luarocks/tools/libssl32.dll create mode 100644 Utils/luarocks/tools/ls.exe create mode 100644 Utils/luarocks/tools/md5sum.exe create mode 100644 Utils/luarocks/tools/mkdir.exe create mode 100644 Utils/luarocks/tools/mv.exe create mode 100644 Utils/luarocks/tools/pwd.exe create mode 100644 Utils/luarocks/tools/rmdir.exe create mode 100644 Utils/luarocks/tools/test.exe create mode 100644 Utils/luarocks/tools/uname.exe create mode 100644 Utils/luarocks/tools/wget.exe create mode 100644 Utils/luarocks/wlua5.1.exe create mode 100644 docs/Documentation/DCSVec3.html create mode 100644 docs/Documentation/DCSZone.html create mode 100644 docs/Presentations/RADIO/Dia1.JPG diff --git a/Moose Development/LDT External Tools/Moose DOCUMENTATION Generate.launch b/Moose Development/LDT External Tools/Moose DOCUMENTATION Generate.launch index 4d645a201..85f0a3b46 100644 --- a/Moose Development/LDT External Tools/Moose DOCUMENTATION Generate.launch +++ b/Moose Development/LDT External Tools/Moose DOCUMENTATION Generate.launch @@ -3,7 +3,6 @@ - - - + + diff --git a/Moose Development/LDT External Tools/Moose LOADER Generate Dynamic Moose.lua.launch b/Moose Development/LDT External Tools/Moose LOADER Generate Dynamic Moose.lua.launch index c55f6dd26..ffc89c77d 100644 --- a/Moose Development/LDT External Tools/Moose LOADER Generate Dynamic Moose.lua.launch +++ b/Moose Development/LDT External Tools/Moose LOADER Generate Dynamic Moose.lua.launch @@ -3,7 +3,7 @@ - + diff --git a/Moose Development/LDT External Tools/Moose LOADER Generate Static Moose.lua.launch b/Moose Development/LDT External Tools/Moose LOADER Generate Static Moose.lua.launch index 121638ba4..b8a402dc5 100644 --- a/Moose Development/LDT External Tools/Moose LOADER Generate Static Moose.lua.launch +++ b/Moose Development/LDT External Tools/Moose LOADER Generate Static Moose.lua.launch @@ -3,7 +3,7 @@ - + diff --git a/Moose Development/LDT External Tools/Moose UPDATE ALL MOOSE Demonstration Missions.launch b/Moose Development/LDT External Tools/Moose UPDATE ALL MOOSE Demonstration Missions.launch index d959c8bf5..5bf8b4ae1 100644 --- a/Moose Development/LDT External Tools/Moose UPDATE ALL MOOSE Demonstration Missions.launch +++ b/Moose Development/LDT External Tools/Moose UPDATE ALL MOOSE Demonstration Missions.launch @@ -4,6 +4,5 @@ - - + diff --git a/Moose Development/Moose/Core/Radio.lua b/Moose Development/Moose/Core/Radio.lua index 38735de28..890474ed3 100644 --- a/Moose Development/Moose/Core/Radio.lua +++ b/Moose Development/Moose/Core/Radio.lua @@ -1,6 +1,6 @@ --- **Core** - The RADIO class is responsible for **transmitting radio communications**. -- --- --- bitmap +-- ![Banner Image](..\Presentations\RADIO\Dia1.JPG) -- -- === -- @@ -27,19 +27,20 @@ -- -- === -- --- ### Authors: Hugues "Grey_Echo" Bousquet +-- ### Author: Hugues "Grey_Echo" Bousquet -- -- @module Radio + --- # 1) RADIO class, extends @{Base#BASE} -- -- ## 1.1) RADIO usage -- -- There are 3 steps to a successful radio transmission. -- --- * First, you need to **"add" a @{#RADIO} object** to your @{Positionable#POSITIONABLE}. This is done using the @{Positionable#POSITIONABLE.GetRadio}() function, +-- * First, you need to **"add a @{#RADIO} object** to your @{Positionable#POSITIONABLE}. This is done using the @{Positionable#POSITIONABLE.GetRadio}() function, -- * Then, you will **set the relevant parameters** to the transmission (see below), --- * When done, you can actually **broadcast the transmission** (i.e. play the sound) with the @{Positionable#POSITIONABLE.Broadcast}() function. +-- * When done, you can actually **broadcast the transmission** (i.e. play the sound) with the @{RADIO.Broadcast}() function. -- -- Methods to set relevant parameters for both a @{Unit#UNIT} or a @{Group#GROUP} or any other @{Positionable#POSITIONABLE} -- @@ -53,7 +54,7 @@ -- * @{#RADIO.SetSubtitle}() : Set both the subtitle and its duration, -- * @{#RADIO.NewUnitTransmission}() : Shortcut to set all the relevant parameters in one method call -- --- Additional Methods to set relevant parameters if the transmiter is any other @{Wrapper.Positionable#POSITIONABLE} +-- Additional Methods to set relevant parameters if the transmiter is any other @{Positionable#POSITIONABLE} -- -- * @{#RADIO.SetPower}() : Sets the power of the antenna in Watts -- * @{#RADIO.NewGenericTransmission}() : Shortcut to set all the relevant parameters in one method call @@ -68,7 +69,7 @@ -- * Note that if the transmission has a subtitle, it will be readable, regardless of the quality of the transmission. -- -- @type RADIO --- @field Wrapper.Positionable#POSITIONABLE Positionable The transmiter +-- @field Positionable#POSITIONABLE Positionable The transmiter -- @field #string FileName Name of the sound file -- @field #number Frequency Frequency of the transmission in Hz -- @field #number Modulation Modulation of the transmission (either radio.modulation.AM or radio.modulation.FM) diff --git a/Moose Development/Moose/Core/Zone.lua b/Moose Development/Moose/Core/Zone.lua index 432a360a7..f174464bf 100644 --- a/Moose Development/Moose/Core/Zone.lua +++ b/Moose Development/Moose/Core/Zone.lua @@ -66,13 +66,6 @@ -- @module Zone ---- The ZONE_BASE class --- @type ZONE_BASE --- @field #string ZoneName Name of the zone. --- @field #number ZoneProbability A value between 0 and 1. 0 = 0% and 1 = 100% probability. --- @extends Core.Base#BASE - - --- # 1) ZONE_BASE class, extends @{Base#BASE} -- -- This class is an abstract BASE class for derived classes, and is not meant to be instantiated. @@ -107,7 +100,11 @@ -- * @{#ZONE_BASE.FlareZone}(): Flares the zone boundaries in a color. -- -- === --- @field #ZONE_BASE ZONE_BASE +-- +-- @type ZONE_BASE +-- @field #string ZoneName Name of the zone. +-- @field #number ZoneProbability A value between 0 and 1. 0 = 0% and 1 = 100% probability. +-- @extends Core.Base#BASE ZONE_BASE = { ClassName = "ZONE_BASE", ZoneName = "", @@ -306,12 +303,6 @@ function ZONE_BASE:GetZoneMaybe() end ---- The ZONE_RADIUS class, defined by a zone name, a location and a radius. --- @type ZONE_RADIUS --- @field Dcs.DCSTypes#Vec2 Vec2 The current location of the zone. --- @field Dcs.DCSTypes#Distance Radius The radius of the zone. --- @extends Core.Zone#ZONE_BASE - --- # 2) @{Zone#ZONE_RADIUS} class, extends @{Zone#ZONE_BASE} -- -- The ZONE_RADIUS class defined by a zone name, a location and a radius. @@ -342,8 +333,11 @@ end -- -- === -- --- @field #ZONE_RADIUS ZONE_RADIUS --- +-- The ZONE_RADIUS class, defined by a zone name, a location and a radius. +-- @type ZONE_RADIUS +-- @field Dcs.DCSTypes#Vec2 Vec2 The current location of the zone. +-- @field Dcs.DCSTypes#Distance Radius The radius of the zone. +-- @extends Core.Zone#ZONE_BASE ZONE_RADIUS = { ClassName="ZONE_RADIUS", } @@ -379,7 +373,6 @@ function ZONE_RADIUS:BoundZone( Points, CountryID, UnBound ) local Angle local RadialBase = math.pi*2 - -- for Angle = 0, 360, (360 / Points ) do local Radial = Angle * RadialBase / 360 Point.x = Vec2.x + math.cos( Radial ) * self:GetRadius() diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index d3784431a..d8b4f16ce 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,35878 +1,74 @@ -env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170402_1214' ) +env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) +env.info( 'Moose Generation Timestamp: 20170405_0123' ) ---- Various routines --- @module routines --- @author Flightcontrol +local base = _G -env.setErrorMessageBoxEnabled(false) +__Moose = {} ---- Extract of MIST functions. --- @author Grimes - -routines = {} - - --- don't change these -routines.majorVersion = 3 -routines.minorVersion = 3 -routines.build = 22 - ------------------------------------------------------------------------------------------------------------------ - ----------------------------------------------------------------------------------------------- --- Utils- conversion, Lua utils, etc. -routines.utils = {} - ---from http://lua-users.org/wiki/CopyTable -routines.utils.deepCopy = function(object) - local lookup_table = {} - local function _copy(object) - if type(object) ~= "table" then - return object - elseif lookup_table[object] then - return lookup_table[object] - end - local new_table = {} - lookup_table[object] = new_table - for index, value in pairs(object) do - new_table[_copy(index)] = _copy(value) - end - return setmetatable(new_table, getmetatable(object)) - end - local objectreturn = _copy(object) - return objectreturn -end - - --- porting in Slmod's serialize_slmod2 -routines.utils.oneLineSerialize = function(tbl) -- serialization of a table all on a single line, no comments, made to replace old get_table_string function - - lookup_table = {} - - local function _Serialize( tbl ) - - if type(tbl) == 'table' then --function only works for tables! - - if lookup_table[tbl] then - return lookup_table[object] - end - - local tbl_str = {} - - lookup_table[tbl] = tbl_str - - tbl_str[#tbl_str + 1] = '{' - - for ind,val in pairs(tbl) do -- serialize its fields - local ind_str = {} - if type(ind) == "number" then - ind_str[#ind_str + 1] = '[' - ind_str[#ind_str + 1] = tostring(ind) - ind_str[#ind_str + 1] = ']=' - else --must be a string - ind_str[#ind_str + 1] = '[' - ind_str[#ind_str + 1] = routines.utils.basicSerialize(ind) - ind_str[#ind_str + 1] = ']=' - end - - local val_str = {} - if ((type(val) == 'number') or (type(val) == 'boolean')) then - val_str[#val_str + 1] = tostring(val) - val_str[#val_str + 1] = ',' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'string' then - val_str[#val_str + 1] = routines.utils.basicSerialize(val) - val_str[#val_str + 1] = ',' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'nil' then -- won't ever happen, right? - val_str[#val_str + 1] = 'nil,' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'table' then - if ind == "__index" then - -- tbl_str[#tbl_str + 1] = "__index" - -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it - else - - val_str[#val_str + 1] = _Serialize(val) - val_str[#val_str + 1] = ',' --I think this is right, I just added it - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - end - elseif type(val) == 'function' then - -- tbl_str[#tbl_str + 1] = "function " .. tostring(ind) - -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it - else --- env.info('unable to serialize value type ' .. routines.utils.basicSerialize(type(val)) .. ' at index ' .. tostring(ind)) --- env.info( debug.traceback() ) - end - - end - tbl_str[#tbl_str + 1] = '}' - return table.concat(tbl_str) +__Moose.Include = function( IncludeFile ) + if not __Moose.Includes[ IncludeFile ] then + __Moose.Includes[IncludeFile] = IncludeFile + local f = assert( base.loadfile( __Moose.ProgramPath .. IncludeFile ) ) + if f == nil then + error ("Moose: Could not load Moose file " .. IncludeFile ) else - return tostring(tbl) - end - end - - local objectreturn = _Serialize(tbl) - return objectreturn -end - ---porting in Slmod's "safestring" basic serialize -routines.utils.basicSerialize = function(s) - if s == nil then - return "\"\"" - else - if ((type(s) == 'number') or (type(s) == 'boolean') or (type(s) == 'function') or (type(s) == 'table') or (type(s) == 'userdata') ) then - return tostring(s) - elseif type(s) == 'string' then - s = string.format('%q', s) - return s - end - end -end - - -routines.utils.toDegree = function(angle) - return angle*180/math.pi -end - -routines.utils.toRadian = function(angle) - return angle*math.pi/180 -end - -routines.utils.metersToNM = function(meters) - return meters/1852 -end - -routines.utils.metersToFeet = function(meters) - return meters/0.3048 -end - -routines.utils.NMToMeters = function(NM) - return NM*1852 -end - -routines.utils.feetToMeters = function(feet) - return feet*0.3048 -end - -routines.utils.mpsToKnots = function(mps) - return mps*3600/1852 -end - -routines.utils.mpsToKmph = function(mps) - return mps*3.6 -end - -routines.utils.knotsToMps = function(knots) - return knots*1852/3600 -end - -routines.utils.kmphToMps = function(kmph) - return kmph/3.6 -end - -function routines.utils.makeVec2(Vec3) - if Vec3.z then - return {x = Vec3.x, y = Vec3.z} - else - return {x = Vec3.x, y = Vec3.y} -- it was actually already vec2. - end -end - -function routines.utils.makeVec3(Vec2, y) - if not Vec2.z then - if not y then - y = 0 - end - return {x = Vec2.x, y = y, z = Vec2.y} - else - return {x = Vec2.x, y = Vec2.y, z = Vec2.z} -- it was already Vec3, actually. - end -end - -function routines.utils.makeVec3GL(Vec2, offset) - local adj = offset or 0 - - if not Vec2.z then - return {x = Vec2.x, y = (land.getHeight(Vec2) + adj), z = Vec2.y} - else - return {x = Vec2.x, y = (land.getHeight({x = Vec2.x, y = Vec2.z}) + adj), z = Vec2.z} - end -end - -routines.utils.zoneToVec3 = function(zone) - local new = {} - if type(zone) == 'table' and zone.point then - new.x = zone.point.x - new.y = zone.point.y - new.z = zone.point.z - return new - elseif type(zone) == 'string' then - zone = trigger.misc.getZone(zone) - if zone then - new.x = zone.point.x - new.y = zone.point.y - new.z = zone.point.z - return new - end - end -end - --- gets heading-error corrected direction from point along vector vec. -function routines.utils.getDir(vec, point) - local dir = math.atan2(vec.z, vec.x) - dir = dir + routines.getNorthCorrection(point) - if dir < 0 then - dir = dir + 2*math.pi -- put dir in range of 0 to 2*pi - end - return dir -end - --- gets distance in meters between two points (2 dimensional) -function routines.utils.get2DDist(point1, point2) - point1 = routines.utils.makeVec3(point1) - point2 = routines.utils.makeVec3(point2) - return routines.vec.mag({x = point1.x - point2.x, y = 0, z = point1.z - point2.z}) -end - --- gets distance in meters between two points (3 dimensional) -function routines.utils.get3DDist(point1, point2) - return routines.vec.mag({x = point1.x - point2.x, y = point1.y - point2.y, z = point1.z - point2.z}) -end - - - - - ---3D Vector manipulation -routines.vec = {} - -routines.vec.add = function(vec1, vec2) - return {x = vec1.x + vec2.x, y = vec1.y + vec2.y, z = vec1.z + vec2.z} -end - -routines.vec.sub = function(vec1, vec2) - return {x = vec1.x - vec2.x, y = vec1.y - vec2.y, z = vec1.z - vec2.z} -end - -routines.vec.scalarMult = function(vec, mult) - return {x = vec.x*mult, y = vec.y*mult, z = vec.z*mult} -end - -routines.vec.scalar_mult = routines.vec.scalarMult - -routines.vec.dp = function(vec1, vec2) - return vec1.x*vec2.x + vec1.y*vec2.y + vec1.z*vec2.z -end - -routines.vec.cp = function(vec1, vec2) - return { x = vec1.y*vec2.z - vec1.z*vec2.y, y = vec1.z*vec2.x - vec1.x*vec2.z, z = vec1.x*vec2.y - vec1.y*vec2.x} -end - -routines.vec.mag = function(vec) - return (vec.x^2 + vec.y^2 + vec.z^2)^0.5 -end - -routines.vec.getUnitVec = function(vec) - local mag = routines.vec.mag(vec) - return { x = vec.x/mag, y = vec.y/mag, z = vec.z/mag } -end - -routines.vec.rotateVec2 = function(vec2, theta) - return { x = vec2.x*math.cos(theta) - vec2.y*math.sin(theta), y = vec2.x*math.sin(theta) + vec2.y*math.cos(theta)} -end ---------------------------------------------------------------------------------------------------------------------------- - - - - --- acc- the accuracy of each easting/northing. 0, 1, 2, 3, 4, or 5. -routines.tostringMGRS = function(MGRS, acc) - if acc == 0 then - return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph - else - return MGRS.UTMZone .. ' ' .. MGRS.MGRSDigraph .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Easting/(10^(5-acc)), 0)) - .. ' ' .. string.format('%0' .. acc .. 'd', routines.utils.round(MGRS.Northing/(10^(5-acc)), 0)) - end -end - ---[[acc: -in DM: decimal point of minutes. -In DMS: decimal point of seconds. -position after the decimal of the least significant digit: -So: -42.32 - acc of 2. -]] -routines.tostringLL = function(lat, lon, acc, DMS) - - local latHemi, lonHemi - if lat > 0 then - latHemi = 'N' - else - latHemi = 'S' - end - - if lon > 0 then - lonHemi = 'E' - else - lonHemi = 'W' - end - - lat = math.abs(lat) - lon = math.abs(lon) - - local latDeg = math.floor(lat) - local latMin = (lat - latDeg)*60 - - local lonDeg = math.floor(lon) - local lonMin = (lon - lonDeg)*60 - - if DMS then -- degrees, minutes, and seconds. - local oldLatMin = latMin - latMin = math.floor(latMin) - local latSec = routines.utils.round((oldLatMin - latMin)*60, acc) - - local oldLonMin = lonMin - lonMin = math.floor(lonMin) - local lonSec = routines.utils.round((oldLonMin - lonMin)*60, acc) - - if latSec == 60 then - latSec = 0 - latMin = latMin + 1 - end - - if lonSec == 60 then - lonSec = 0 - lonMin = lonMin + 1 - end - - local secFrmtStr -- create the formatting string for the seconds place - if acc <= 0 then -- no decimal place. - secFrmtStr = '%02d' - else - local width = 3 + acc -- 01.310 - that's a width of 6, for example. - secFrmtStr = '%0' .. width .. '.' .. acc .. 'f' - end - - return string.format('%02d', latDeg) .. ' ' .. string.format('%02d', latMin) .. '\' ' .. string.format(secFrmtStr, latSec) .. '"' .. latHemi .. ' ' - .. string.format('%02d', lonDeg) .. ' ' .. string.format('%02d', lonMin) .. '\' ' .. string.format(secFrmtStr, lonSec) .. '"' .. lonHemi - - else -- degrees, decimal minutes. - latMin = routines.utils.round(latMin, acc) - lonMin = routines.utils.round(lonMin, acc) - - if latMin == 60 then - latMin = 0 - latDeg = latDeg + 1 - end - - if lonMin == 60 then - lonMin = 0 - lonDeg = lonDeg + 1 - end - - local minFrmtStr -- create the formatting string for the minutes place - if acc <= 0 then -- no decimal place. - minFrmtStr = '%02d' - else - local width = 3 + acc -- 01.310 - that's a width of 6, for example. - minFrmtStr = '%0' .. width .. '.' .. acc .. 'f' - end - - return string.format('%02d', latDeg) .. ' ' .. string.format(minFrmtStr, latMin) .. '\'' .. latHemi .. ' ' - .. string.format('%02d', lonDeg) .. ' ' .. string.format(minFrmtStr, lonMin) .. '\'' .. lonHemi - - end -end - ---[[ required: az - radian - required: dist - meters - optional: alt - meters (set to false or nil if you don't want to use it). - optional: metric - set true to get dist and alt in km and m. - precision will always be nearest degree and NM or km.]] -routines.tostringBR = function(az, dist, alt, metric) - az = routines.utils.round(routines.utils.toDegree(az), 0) - - if metric then - dist = routines.utils.round(dist/1000, 2) - else - dist = routines.utils.round(routines.utils.metersToNM(dist), 2) - end - - local s = string.format('%03d', az) .. ' for ' .. dist - - if alt then - if metric then - s = s .. ' at ' .. routines.utils.round(alt, 0) - else - s = s .. ' at ' .. routines.utils.round(routines.utils.metersToFeet(alt), 0) - end - end - return s -end - -routines.getNorthCorrection = function(point) --gets the correction needed for true north - if not point.z then --Vec2; convert to Vec3 - point.z = point.y - point.y = 0 - end - local lat, lon = coord.LOtoLL(point) - local north_posit = coord.LLtoLO(lat + 1, lon) - return math.atan2(north_posit.z - point.z, north_posit.x - point.x) -end - - -do - local idNum = 0 - - --Simplified event handler - routines.addEventHandler = function(f) --id is optional! - local handler = {} - idNum = idNum + 1 - handler.id = idNum - handler.f = f - handler.onEvent = function(self, event) - self.f(event) - end - world.addEventHandler(handler) - end - - routines.removeEventHandler = function(id) - for key, handler in pairs(world.eventHandlers) do - if handler.id and handler.id == id then - world.eventHandlers[key] = nil - return true - end - end - return false - end -end - --- need to return a Vec3 or Vec2? -function routines.getRandPointInCircle(point, radius, innerRadius) - local theta = 2*math.pi*math.random() - local rad = math.random() + math.random() - if rad > 1 then - rad = 2 - rad - end - - local radMult - if innerRadius and innerRadius <= radius then - radMult = (radius - innerRadius)*rad + innerRadius - else - radMult = radius*rad - end - - if not point.z then --might as well work with vec2/3 - point.z = point.y - end - - local rndCoord - if radius > 0 then - rndCoord = {x = math.cos(theta)*radMult + point.x, y = math.sin(theta)*radMult + point.z} - else - rndCoord = {x = point.x, y = point.z} - end - return rndCoord -end - -routines.goRoute = function(group, path) - local misTask = { - id = 'Mission', - params = { - route = { - points = routines.utils.deepCopy(path), - }, - }, - } - if type(group) == 'string' then - group = Group.getByName(group) - end - local groupCon = group:getController() - if groupCon then - groupCon:setTask(misTask) - return true - end - - Controller.setTask(groupCon, misTask) - return false -end - - --- Useful atomic functions from mist, ported. - -routines.ground = {} -routines.fixedWing = {} -routines.heli = {} - -routines.ground.buildWP = function(point, overRideForm, overRideSpeed) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - local form, speed - - if point.speed and not overRideSpeed then - wp.speed = point.speed - elseif type(overRideSpeed) == 'number' then - wp.speed = overRideSpeed - else - wp.speed = routines.utils.kmphToMps(20) - end - - if point.form and not overRideForm then - form = point.form - else - form = overRideForm - end - - if not form then - wp.action = 'Cone' - else - form = string.lower(form) - if form == 'off_road' or form == 'off road' then - wp.action = 'Off Road' - elseif form == 'on_road' or form == 'on road' then - wp.action = 'On Road' - elseif form == 'rank' or form == 'line_abrest' or form == 'line abrest' or form == 'lineabrest'then - wp.action = 'Rank' - elseif form == 'cone' then - wp.action = 'Cone' - elseif form == 'diamond' then - wp.action = 'Diamond' - elseif form == 'vee' then - wp.action = 'Vee' - elseif form == 'echelon_left' or form == 'echelon left' or form == 'echelonl' then - wp.action = 'EchelonL' - elseif form == 'echelon_right' or form == 'echelon right' or form == 'echelonr' then - wp.action = 'EchelonR' - else - wp.action = 'Cone' -- if nothing matched - end - end - - wp.type = 'Turning Point' - - return wp - -end - -routines.fixedWing.buildWP = function(point, WPtype, speed, alt, altType) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - - if alt and type(alt) == 'number' then - wp.alt = alt - else - wp.alt = 2000 - end - - if altType then - altType = string.lower(altType) - if altType == 'radio' or 'agl' then - wp.alt_type = 'RADIO' - elseif altType == 'baro' or 'asl' then - wp.alt_type = 'BARO' - end - else - wp.alt_type = 'RADIO' - end - - if point.speed then - speed = point.speed - end - - if point.type then - WPtype = point.type - end - - if not speed then - wp.speed = routines.utils.kmphToMps(500) - else - wp.speed = speed - end - - if not WPtype then - wp.action = 'Turning Point' - else - WPtype = string.lower(WPtype) - if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then - wp.action = 'Fly Over Point' - elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then - wp.action = 'Turning Point' - else - wp.action = 'Turning Point' - end - end - - wp.type = 'Turning Point' - return wp -end - -routines.heli.buildWP = function(point, WPtype, speed, alt, altType) - - local wp = {} - wp.x = point.x - - if point.z then - wp.y = point.z - else - wp.y = point.y - end - - if alt and type(alt) == 'number' then - wp.alt = alt - else - wp.alt = 500 - end - - if altType then - altType = string.lower(altType) - if altType == 'radio' or 'agl' then - wp.alt_type = 'RADIO' - elseif altType == 'baro' or 'asl' then - wp.alt_type = 'BARO' - end - else - wp.alt_type = 'RADIO' - end - - if point.speed then - speed = point.speed - end - - if point.type then - WPtype = point.type - end - - if not speed then - wp.speed = routines.utils.kmphToMps(200) - else - wp.speed = speed - end - - if not WPtype then - wp.action = 'Turning Point' - else - WPtype = string.lower(WPtype) - if WPtype == 'flyover' or WPtype == 'fly over' or WPtype == 'fly_over' then - wp.action = 'Fly Over Point' - elseif WPtype == 'turningpoint' or WPtype == 'turning point' or WPtype == 'turning_point' then - wp.action = 'Turning Point' - else - wp.action = 'Turning Point' - end - end - - wp.type = 'Turning Point' - return wp -end - -routines.groupToRandomPoint = function(vars) - local group = vars.group --Required - local point = vars.point --required - local radius = vars.radius or 0 - local innerRadius = vars.innerRadius - local form = vars.form or 'Cone' - local heading = vars.heading or math.random()*2*math.pi - local headingDegrees = vars.headingDegrees - local speed = vars.speed or routines.utils.kmphToMps(20) - - - local useRoads - if not vars.disableRoads then - useRoads = true - else - useRoads = false - end - - local path = {} - - if headingDegrees then - heading = headingDegrees*math.pi/180 - end - - if heading >= 2*math.pi then - heading = heading - 2*math.pi - end - - local rndCoord = routines.getRandPointInCircle(point, radius, innerRadius) - - local offset = {} - local posStart = routines.getLeadPos(group) - - offset.x = routines.utils.round(math.sin(heading - (math.pi/2)) * 50 + rndCoord.x, 3) - offset.z = routines.utils.round(math.cos(heading + (math.pi/2)) * 50 + rndCoord.y, 3) - path[#path + 1] = routines.ground.buildWP(posStart, form, speed) - - - if useRoads == true and ((point.x - posStart.x)^2 + (point.z - posStart.z)^2)^0.5 > radius * 1.3 then - path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 11, ['z'] = posStart.z + 11}, 'off_road', speed) - path[#path + 1] = routines.ground.buildWP(posStart, 'on_road', speed) - path[#path + 1] = routines.ground.buildWP(offset, 'on_road', speed) - else - path[#path + 1] = routines.ground.buildWP({['x'] = posStart.x + 25, ['z'] = posStart.z + 25}, form, speed) - end - - path[#path + 1] = routines.ground.buildWP(offset, form, speed) - path[#path + 1] = routines.ground.buildWP(rndCoord, form, speed) - - routines.goRoute(group, path) - - return -end - -routines.groupRandomDistSelf = function(gpData, dist, form, heading, speed) - local pos = routines.getLeadPos(gpData) - local fakeZone = {} - fakeZone.radius = dist or math.random(300, 1000) - fakeZone.point = {x = pos.x, y, pos.y, z = pos.z} - routines.groupToRandomZone(gpData, fakeZone, form, heading, speed) - - return -end - -routines.groupToRandomZone = function(gpData, zone, form, heading, speed) - if type(gpData) == 'string' then - gpData = Group.getByName(gpData) - end - - if type(zone) == 'string' then - zone = trigger.misc.getZone(zone) - elseif type(zone) == 'table' and not zone.radius then - zone = trigger.misc.getZone(zone[math.random(1, #zone)]) - end - - if speed then - speed = routines.utils.kmphToMps(speed) - end - - local vars = {} - vars.group = gpData - vars.radius = zone.radius - vars.form = form - vars.headingDegrees = heading - vars.speed = speed - vars.point = routines.utils.zoneToVec3(zone) - - routines.groupToRandomPoint(vars) - - return -end - -routines.isTerrainValid = function(coord, terrainTypes) -- vec2/3 and enum or table of acceptable terrain types - if coord.z then - coord.y = coord.z - end - local typeConverted = {} - - if type(terrainTypes) == 'string' then -- if its a string it does this check - for constId, constData in pairs(land.SurfaceType) do - if string.lower(constId) == string.lower(terrainTypes) or string.lower(constData) == string.lower(terrainTypes) then - table.insert(typeConverted, constId) - end - end - elseif type(terrainTypes) == 'table' then -- if its a table it does this check - for typeId, typeData in pairs(terrainTypes) do - for constId, constData in pairs(land.SurfaceType) do - if string.lower(constId) == string.lower(typeData) or string.lower(constData) == string.lower(typeId) then - table.insert(typeConverted, constId) - end - end - end - end - for validIndex, validData in pairs(typeConverted) do - if land.getSurfaceType(coord) == land.SurfaceType[validData] then - return true - end - end - return false -end - -routines.groupToPoint = function(gpData, point, form, heading, speed, useRoads) - if type(point) == 'string' then - point = trigger.misc.getZone(point) - end - if speed then - speed = routines.utils.kmphToMps(speed) - end - - local vars = {} - vars.group = gpData - vars.form = form - vars.headingDegrees = heading - vars.speed = speed - vars.disableRoads = useRoads - vars.point = routines.utils.zoneToVec3(point) - routines.groupToRandomPoint(vars) - - return -end - - -routines.getLeadPos = function(group) - if type(group) == 'string' then -- group name - group = Group.getByName(group) - end - - local units = group:getUnits() - - local leader = units[1] - if not leader then -- SHOULD be good, but if there is a bug, this code future-proofs it then. - local lowestInd = math.huge - for ind, unit in pairs(units) do - if ind < lowestInd then - lowestInd = ind - leader = unit - end - end - end - if leader and Unit.isExist(leader) then -- maybe a little too paranoid now... - return leader:getPosition().p - end -end - ---[[ vars for routines.getMGRSString: -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer between 0 and 5, inclusive -]] -routines.getMGRSString = function(vars) - local units = vars.units - local acc = vars.acc or 5 - local avgPos = routines.getAvgPos(units) - if avgPos then - return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(avgPos)), acc) - end -end - ---[[ vars for routines.getLLString -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer, number of numbers after decimal place -vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. - - -]] -routines.getLLString = function(vars) - local units = vars.units - local acc = vars.acc or 3 - local DMS = vars.DMS - local avgPos = routines.getAvgPos(units) - if avgPos then - local lat, lon = coord.LOtoLL(avgPos) - return routines.tostringLL(lat, lon, acc, DMS) - end -end - ---[[ -vars.zone - table of a zone name. -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -]] -routines.getBRStringZone = function(vars) - local zone = trigger.misc.getZone( vars.zone ) - local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. - local alt = vars.alt - local metric = vars.metric - if zone then - local vec = {x = zone.point.x - ref.x, y = zone.point.y - ref.y, z = zone.point.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(zone.point, ref) - if alt then - alt = zone.y - end - return routines.tostringBR(dir, dist, alt, metric) - else - env.info( 'routines.getBRStringZone: error: zone is nil' ) - end -end - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -]] -routines.getBRString = function(vars) - local units = vars.units - local ref = routines.utils.makeVec3(vars.ref, 0) -- turn it into Vec3 if it is not already. - local alt = vars.alt - local metric = vars.metric - local avgPos = routines.getAvgPos(units) - if avgPos then - local vec = {x = avgPos.x - ref.x, y = avgPos.y - ref.y, z = avgPos.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(avgPos, ref) - if alt then - alt = avgPos.y - end - return routines.tostringBR(dir, dist, alt, metric) - end -end - - --- Returns the Vec3 coordinates of the average position of the concentration of units most in the heading direction. ---[[ vars for routines.getLeadingPos: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -]] -routines.getLeadingPos = function(vars) - local units = vars.units - local heading = vars.heading - local radius = vars.radius - if vars.headingDegrees then - heading = routines.utils.toRadian(vars.headingDegrees) - end - - local unitPosTbl = {} - for i = 1, #units do - local unit = Unit.getByName(units[i]) - if unit and unit:isExist() then - unitPosTbl[#unitPosTbl + 1] = unit:getPosition().p - end - end - if #unitPosTbl > 0 then -- one more more units found. - -- first, find the unit most in the heading direction - local maxPos = -math.huge - - local maxPosInd -- maxPos - the furthest in direction defined by heading; maxPosInd = - for i = 1, #unitPosTbl do - local rotatedVec2 = routines.vec.rotateVec2(routines.utils.makeVec2(unitPosTbl[i]), heading) - if (not maxPos) or maxPos < rotatedVec2.x then - maxPos = rotatedVec2.x - maxPosInd = i - end - end - - --now, get all the units around this unit... - local avgPos - if radius then - local maxUnitPos = unitPosTbl[maxPosInd] - local avgx, avgy, avgz, totNum = 0, 0, 0, 0 - for i = 1, #unitPosTbl do - if routines.utils.get2DDist(maxUnitPos, unitPosTbl[i]) <= radius then - avgx = avgx + unitPosTbl[i].x - avgy = avgy + unitPosTbl[i].y - avgz = avgz + unitPosTbl[i].z - totNum = totNum + 1 - end - end - avgPos = { x = avgx/totNum, y = avgy/totNum, z = avgz/totNum} - else - avgPos = unitPosTbl[maxPosInd] - end - - return avgPos - end -end - - ---[[ vars for routines.getLeadingMGRSString: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.acc - number, 0 to 5. -]] -routines.getLeadingMGRSString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local acc = vars.acc or 5 - return routines.tostringMGRS(coord.LLtoMGRS(coord.LOtoLL(pos)), acc) - end -end - ---[[ vars for routines.getLeadingLLString: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.acc - number of digits after decimal point (can be negative) -vars.DMS - boolean, true if you want DMS. -]] -routines.getLeadingLLString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local acc = vars.acc or 3 - local DMS = vars.DMS - local lat, lon = coord.LOtoLL(pos) - return routines.tostringLL(lat, lon, acc, DMS) - end -end - - - ---[[ vars for routines.getLeadingBRString: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees -vars.metric - boolean, if true, use km instead of NM. -vars.alt - boolean, if true, include altitude. -vars.ref - vec3/vec2 reference point. -]] -routines.getLeadingBRString = function(vars) - local pos = routines.getLeadingPos(vars) - if pos then - local ref = vars.ref - local alt = vars.alt - local metric = vars.metric - - local vec = {x = pos.x - ref.x, y = pos.y - ref.y, z = pos.z - ref.z} - local dir = routines.utils.getDir(vec, ref) - local dist = routines.utils.get2DDist(pos, ref) - if alt then - alt = pos.y - end - return routines.tostringBR(dir, dist, alt, metric) - end -end - ---[[ vars for routines.message.add - vars.text = 'Hello World' - vars.displayTime = 20 - vars.msgFor = {coa = {'red'}, countries = {'Ukraine', 'Georgia'}, unitTypes = {'A-10C'}} - -]] - ---[[ vars for routines.msgMGRS -vars.units - table of unit names (NOT unitNameTable- maybe this should change). -vars.acc - integer between 0 and 5, inclusive -vars.text - text in the message -vars.displayTime - self explanatory -vars.msgFor - scope -]] -routines.msgMGRS = function(vars) - local units = vars.units - local acc = vars.acc - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getMGRSString{units = units, acc = acc} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } -end - ---[[ vars for routines.msgLL -vars.units - table of unit names (NOT unitNameTable- maybe this should change) (Yes). -vars.acc - integer, number of numbers after decimal place -vars.DMS - if true, output in degrees, minutes, seconds. Otherwise, output in degrees, minutes. -vars.text - text in the message -vars.displayTime - self explanatory -vars.msgFor - scope -]] -routines.msgLL = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local acc = vars.acc - local DMS = vars.DMS - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLLString{units = units, acc = acc, DMS = DMS} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - vec3 ref point, maybe overload for vec2 as well? -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgBR = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString - local alt = vars.alt - local metric = vars.metric - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getBRString{units = units, ref = ref, alt = alt, metric = metric} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - - --------------------------------------------------------------------------------------------- --- basically, just sub-types of routines.msgBR... saves folks the work of getting the ref point. ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - string red, blue -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgBullseye = function(vars) - if string.lower(vars.ref) == 'red' then - vars.ref = routines.DBs.missionData.bullseye.red - routines.msgBR(vars) - elseif string.lower(vars.ref) == 'blue' then - vars.ref = routines.DBs.missionData.bullseye.blue - routines.msgBR(vars) - end -end - ---[[ -vars.units- table of unit names (NOT unitNameTable- maybe this should change). -vars.ref - unit name of reference point -vars.alt - boolean, if used, includes altitude in string -vars.metric - boolean, gives distance in km instead of NM. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] - -routines.msgBRA = function(vars) - if Unit.getByName(vars.ref) then - vars.ref = Unit.getByName(vars.ref):getPosition().p - if not vars.alt then - vars.alt = true - end - routines.msgBR(vars) - end -end --------------------------------------------------------------------------------------------- - ---[[ vars for routines.msgLeadingMGRS: -vars.units - table of unit names -vars.heading - direction -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.acc - number, 0 to 5. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingMGRS = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local acc = vars.acc - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingMGRSString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - - -end ---[[ vars for routines.msgLeadingLL: -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.acc - number of digits after decimal point (can be negative) -vars.DMS - boolean, true if you want DMS. (optional) -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingLL = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local acc = vars.acc - local DMS = vars.DMS - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingLLString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, acc = acc, DMS = DMS} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } - -end - ---[[ -vars.units - table of unit names -vars.heading - direction, number -vars.radius - number -vars.headingDegrees - boolean, switches heading to degrees (optional) -vars.metric - boolean, if true, use km instead of NM. (optional) -vars.alt - boolean, if true, include altitude. (optional) -vars.ref - vec3/vec2 reference point. -vars.text - text of the message -vars.displayTime -vars.msgFor - scope -]] -routines.msgLeadingBR = function(vars) - local units = vars.units -- technically, I don't really need to do this, but it helps readability. - local heading = vars.heading - local radius = vars.radius - local headingDegrees = vars.headingDegrees - local metric = vars.metric - local alt = vars.alt - local ref = vars.ref -- vec2/vec3 will be handled in routines.getBRString - local text = vars.text - local displayTime = vars.displayTime - local msgFor = vars.msgFor - - local s = routines.getLeadingBRString{units = units, heading = heading, radius = radius, headingDegrees = headingDegrees, metric = metric, alt = alt, ref = ref} - local newText - if string.find(text, '%%s') then -- look for %s - newText = string.format(text, s) -- insert the coordinates into the message - else -- else, just append to the end. - newText = text .. s - end - - routines.message.add{ - text = newText, - displayTime = displayTime, - msgFor = msgFor - } -end - - -function spairs(t, order) - -- collect the keys - local keys = {} - for k in pairs(t) do keys[#keys+1] = k end - - -- if order function given, sort by it by passing the table and keys a, b, - -- otherwise just sort the keys - if order then - table.sort(keys, function(a,b) return order(t, a, b) end) - else - table.sort(keys) - end - - -- return the iterator function - local i = 0 - return function() - i = i + 1 - if keys[i] then - return keys[i], t[keys[i]] - end - end -end - - -function routines.IsPartOfGroupInZones( CargoGroup, LandingZones ) ---trace.f() - - local CurrentZoneID = nil - - if CargoGroup then - local CargoUnits = CargoGroup:getUnits() - for CargoUnitID, CargoUnit in pairs( CargoUnits ) do - if CargoUnit and CargoUnit:getLife() >= 1.0 then - CurrentZoneID = routines.IsUnitInZones( CargoUnit, LandingZones ) - if CurrentZoneID then - break - end - end - end - end - ---trace.r( "", "", { CurrentZoneID } ) - return CurrentZoneID -end - - - -function routines.IsUnitInZones( TransportUnit, LandingZones ) ---trace.f("", "routines.IsUnitInZones" ) - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - if TransportUnit then - local TransportUnitPos = TransportUnit:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = 1 - end - end - if TransportZoneResult then - --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) - else - --trace.i( "routines", "TransportZone:nil logic" ) - end - return TransportZoneResult - else - --trace.i( "routines", "TransportZone:nil hard" ) - return nil - end -end - -function routines.IsUnitNearZonesRadius( TransportUnit, LandingZones, ZoneRadius ) ---trace.f("", "routines.IsUnitInZones" ) - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - if TransportUnit then - local TransportUnitPos = TransportUnit:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportUnitPos.x - TransportZonePos.x)^2 + (TransportUnitPos.z - TransportZonePos.z)^2)^0.5 <= ZoneRadius ) then - TransportZoneResult = 1 - end - end - if TransportZoneResult then - --trace.i( "routines", "TransportZone:" .. TransportZoneResult ) - else - --trace.i( "routines", "TransportZone:nil logic" ) - end - return TransportZoneResult - else - --trace.i( "routines", "TransportZone:nil hard" ) - return nil - end -end - - -function routines.IsStaticInZones( TransportStatic, LandingZones ) ---trace.f() - - local TransportZoneResult = nil - local TransportZonePos = nil - local TransportZone = nil - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - local TransportStaticPos = TransportStatic:getPosition().p - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - TransportZone = trigger.misc.getZone( LandingZoneName ) - if TransportZone then - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = LandingZoneID - break - end - end - end - else - TransportZone = trigger.misc.getZone( LandingZones ) - TransportZonePos = {radius = TransportZone.radius, x = TransportZone.point.x, y = TransportZone.point.y, z = TransportZone.point.z} - if ((( TransportStaticPos.x - TransportZonePos.x)^2 + (TransportStaticPos.z - TransportZonePos.z)^2)^0.5 <= TransportZonePos.radius) then - TransportZoneResult = 1 - end - end - ---trace.r( "", "", { TransportZoneResult } ) - return TransportZoneResult -end - - -function routines.IsUnitInRadius( CargoUnit, ReferencePosition, Radius ) ---trace.f() - - local Valid = true - - -- fill-up some local variables to support further calculations to determine location of units within the zone. - local CargoPos = CargoUnit:getPosition().p - local ReferenceP = ReferencePosition.p - - if (((CargoPos.x - ReferenceP.x)^2 + (CargoPos.z - ReferenceP.z)^2)^0.5 <= Radius) then - else - Valid = false - end - - return Valid -end - -function routines.IsPartOfGroupInRadius( CargoGroup, ReferencePosition, Radius ) ---trace.f() - - local Valid = true - - Valid = routines.ValidateGroup( CargoGroup, "CargoGroup", Valid ) - - -- fill-up some local variables to support further calculations to determine location of units within the zone - local CargoUnits = CargoGroup:getUnits() - for CargoUnitId, CargoUnit in pairs( CargoUnits ) do - local CargoUnitPos = CargoUnit:getPosition().p --- env.info( 'routines.IsPartOfGroupInRadius: CargoUnitPos.x = ' .. CargoUnitPos.x .. ' CargoUnitPos.z = ' .. CargoUnitPos.z ) - local ReferenceP = ReferencePosition.p --- env.info( 'routines.IsPartOfGroupInRadius: ReferenceGroupPos.x = ' .. ReferenceGroupPos.x .. ' ReferenceGroupPos.z = ' .. ReferenceGroupPos.z ) - - if ((( CargoUnitPos.x - ReferenceP.x)^2 + (CargoUnitPos.z - ReferenceP.z)^2)^0.5 <= Radius) then - else - Valid = false - break - end - end - - return Valid -end - - -function routines.ValidateString( Variable, VariableName, Valid ) ---trace.f() - - if type( Variable ) == "string" then - if Variable == "" then - error( "routines.ValidateString: error: " .. VariableName .. " must be filled out!" ) - Valid = false - end - else - error( "routines.ValidateString: error: " .. VariableName .. " is not a string." ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateNumber( Variable, VariableName, Valid ) ---trace.f() - - if type( Variable ) == "number" then - else - error( "routines.ValidateNumber: error: " .. VariableName .. " is not a number." ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid - -end - -function routines.ValidateGroup( Variable, VariableName, Valid ) ---trace.f() - - if Variable == nil then - error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateZone( LandingZones, VariableName, Valid ) ---trace.f() - - if LandingZones == nil then - error( "routines.ValidateGroup: error: " .. VariableName .. " is a nil value!" ) - Valid = false - end - - if type( LandingZones ) == "table" then - for LandingZoneID, LandingZoneName in pairs( LandingZones ) do - if trigger.misc.getZone( LandingZoneName ) == nil then - error( "routines.ValidateGroup: error: Zone " .. LandingZoneName .. " does not exist!" ) - Valid = false - break - end - end - else - if trigger.misc.getZone( LandingZones ) == nil then - error( "routines.ValidateGroup: error: Zone " .. LandingZones .. " does not exist!" ) - Valid = false - end - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.ValidateEnumeration( Variable, VariableName, Enum, Valid ) ---trace.f() - - local ValidVariable = false - - for EnumId, EnumData in pairs( Enum ) do - if Variable == EnumData then - ValidVariable = true - break - end - end - - if ValidVariable then - else - error( 'TransportValidateEnum: " .. VariableName .. " is not a valid type.' .. Variable ) - Valid = false - end - ---trace.r( "", "", { Valid } ) - return Valid -end - -function routines.getGroupRoute(groupIdent, task) -- same as getGroupPoints but returns speed and formation type along with vec2 of point} - -- refactor to search by groupId and allow groupId and groupName as inputs - local gpId = groupIdent - if type(groupIdent) == 'string' and not tonumber(groupIdent) then - gpId = _DATABASE.Templates.Groups[groupIdent].groupId - end - - for coa_name, coa_data in pairs(env.mission.coalition) do - if (coa_name == 'red' or coa_name == 'blue') and type(coa_data) == 'table' then - if coa_data.country then --there is a country table - for cntry_id, cntry_data in pairs(coa_data.country) do - for obj_type_name, obj_type_data in pairs(cntry_data) do - if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" then -- only these types have points - if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! - for group_num, group_data in pairs(obj_type_data.group) do - if group_data and group_data.groupId == gpId then -- this is the group we are looking for - if group_data.route and group_data.route.points and #group_data.route.points > 0 then - local points = {} - - for point_num, point in pairs(group_data.route.points) do - local routeData = {} - if not point.point then - routeData.x = point.x - routeData.y = point.y - else - routeData.point = point.point --it's possible that the ME could move to the point = Vec2 notation. - end - routeData.form = point.action - routeData.speed = point.speed - routeData.alt = point.alt - routeData.alt_type = point.alt_type - routeData.airdromeId = point.airdromeId - routeData.helipadId = point.helipadId - routeData.type = point.type - routeData.action = point.action - if task then - routeData.task = point.task - end - points[point_num] = routeData - end - - return points - end - return - end --if group_data and group_data.name and group_data.name == 'groupname' - end --for group_num, group_data in pairs(obj_type_data.group) do - end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then - end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then - end --for obj_type_name, obj_type_data in pairs(cntry_data) do - end --for cntry_id, cntry_data in pairs(coa_data.country) do - end --if coa_data.country then --there is a country table - end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then - end --for coa_name, coa_data in pairs(mission.coalition) do -end - -routines.ground.patrolRoute = function(vars) - - - local tempRoute = {} - local useRoute = {} - local gpData = vars.gpData - if type(gpData) == 'string' then - gpData = Group.getByName(gpData) - end - - local useGroupRoute - if not vars.useGroupRoute then - useGroupRoute = vars.gpData - else - useGroupRoute = vars.useGroupRoute - end - local routeProvided = false - if not vars.route then - if useGroupRoute then - tempRoute = routines.getGroupRoute(useGroupRoute) - end - else - useRoute = vars.route - local posStart = routines.getLeadPos(gpData) - useRoute[1] = routines.ground.buildWP(posStart, useRoute[1].action, useRoute[1].speed) - routeProvided = true - end - - - local overRideSpeed = vars.speed or 'default' - local pType = vars.pType - local offRoadForm = vars.offRoadForm or 'default' - local onRoadForm = vars.onRoadForm or 'default' - - if routeProvided == false and #tempRoute > 0 then - local posStart = routines.getLeadPos(gpData) - - - useRoute[#useRoute + 1] = routines.ground.buildWP(posStart, offRoadForm, overRideSpeed) - for i = 1, #tempRoute do - local tempForm = tempRoute[i].action - local tempSpeed = tempRoute[i].speed - - if offRoadForm == 'default' then - tempForm = tempRoute[i].action - end - if onRoadForm == 'default' then - onRoadForm = 'On Road' - end - if (string.lower(tempRoute[i].action) == 'on road' or string.lower(tempRoute[i].action) == 'onroad' or string.lower(tempRoute[i].action) == 'on_road') then - tempForm = onRoadForm - else - tempForm = offRoadForm - end - - if type(overRideSpeed) == 'number' then - tempSpeed = overRideSpeed - end - - - useRoute[#useRoute + 1] = routines.ground.buildWP(tempRoute[i], tempForm, tempSpeed) - end - - if pType and string.lower(pType) == 'doubleback' then - local curRoute = routines.utils.deepCopy(useRoute) - for i = #curRoute, 2, -1 do - useRoute[#useRoute + 1] = routines.ground.buildWP(curRoute[i], curRoute[i].action, curRoute[i].speed) - end - end - - useRoute[1].action = useRoute[#useRoute].action -- make it so the first WP matches the last WP - end - - local cTask3 = {} - local newPatrol = {} - newPatrol.route = useRoute - newPatrol.gpData = gpData:getName() - cTask3[#cTask3 + 1] = 'routines.ground.patrolRoute(' - cTask3[#cTask3 + 1] = routines.utils.oneLineSerialize(newPatrol) - cTask3[#cTask3 + 1] = ')' - cTask3 = table.concat(cTask3) - local tempTask = { - id = 'WrappedAction', - params = { - action = { - id = 'Script', - params = { - command = cTask3, - - }, - }, - }, - } - - - useRoute[#useRoute].task = tempTask - routines.goRoute(gpData, useRoute) - - return -end - -routines.ground.patrol = function(gpData, pType, form, speed) - local vars = {} - - if type(gpData) == 'table' and gpData:getName() then - gpData = gpData:getName() - end - - vars.useGroupRoute = gpData - vars.gpData = gpData - vars.pType = pType - vars.offRoadForm = form - vars.speed = speed - - routines.ground.patrolRoute(vars) - - return -end - -function routines.GetUnitHeight( CheckUnit ) ---trace.f( "routines" ) - - local UnitPoint = CheckUnit:getPoint() - local UnitPosition = { x = UnitPoint.x, y = UnitPoint.z } - local UnitHeight = UnitPoint.y - - local LandHeight = land.getHeight( UnitPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - --trace.f( "routines", "Unit Height = " .. UnitHeight - LandHeight ) - - return UnitHeight - LandHeight - -end - - - -Su34Status = { status = {} } -boardMsgRed = { statusMsg = "" } -boardMsgAll = { timeMsg = "" } -SpawnSettings = {} -Su34MenuPath = {} -Su34Menus = 0 - - -function Su34AttackCarlVinson(groupName) ---trace.menu("", "Su34AttackCarlVinson") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupCarlVinson = Group.getByName("US Carl Vinson #001") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupCarlVinson ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupCarlVinson:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - Su34Status.status[groupName] = 1 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking carrier Carl Vinson. ', 10, 'RedStatus' .. groupName ) -end - -function Su34AttackWest(groupName) ---trace.f("","Su34AttackWest") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupShipWest1 = Group.getByName("US Ship West #001") - local groupShipWest2 = Group.getByName("US Ship West #002") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupShipWest1 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - if groupShipWest2 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipWest2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = true}}) - end - Su34Status.status[groupName] = 2 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the west. ', 10, 'RedStatus' .. groupName ) -end - -function Su34AttackNorth(groupName) ---trace.menu("","Su34AttackNorth") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34.getController(groupSu34) - local groupShipNorth1 = Group.getByName("US Ship North #001") - local groupShipNorth2 = Group.getByName("US Ship North #002") - local groupShipNorth3 = Group.getByName("US Ship North #003") - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - if groupShipNorth1 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth1:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - if groupShipNorth2 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth2:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - if groupShipNorth3 ~= nil then - controllerSu34.pushTask(controllerSu34,{id = 'AttackGroup', params = { groupId = groupShipNorth3:getID(), expend = AI.Task.WeaponExpend.ALL, attackQtyLimit = false}}) - end - Su34Status.status[groupName] = 3 - MessageToRed( string.format('%s: ',groupName) .. 'Attacking invading ships in the north. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Orbit(groupName) ---trace.menu("","Su34Orbit") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - controllerSu34:pushTask( {id = 'ControlledTask', params = { task = { id = 'Orbit', params = { pattern = AI.Task.OrbitPattern.RACE_TRACK } }, stopCondition = { duration = 600 } } } ) - Su34Status.status[groupName] = 4 - MessageToRed( string.format('%s: ',groupName) .. 'In orbit and awaiting further instructions. ', 10, 'RedStatus' .. groupName ) -end - -function Su34TakeOff(groupName) ---trace.menu("","Su34TakeOff") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - Su34Status.status[groupName] = 8 - MessageToRed( string.format('%s: ',groupName) .. 'Take-Off. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Hold(groupName) ---trace.menu("","Su34Hold") - local groupSu34 = Group.getByName( groupName ) - local controllerSu34 = groupSu34:getController() - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - controllerSu34.setOption( controllerSu34, AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - Su34Status.status[groupName] = 5 - MessageToRed( string.format('%s: ',groupName) .. 'Holding Weapons. ', 10, 'RedStatus' .. groupName ) -end - -function Su34RTB(groupName) ---trace.menu("","Su34RTB") - Su34Status.status[groupName] = 6 - MessageToRed( string.format('%s: ',groupName) .. 'Return to Krasnodar. ', 10, 'RedStatus' .. groupName ) -end - -function Su34Destroyed(groupName) ---trace.menu("","Su34Destroyed") - Su34Status.status[groupName] = 7 - MessageToRed( string.format('%s: ',groupName) .. 'Destroyed. ', 30, 'RedStatus' .. groupName ) -end - -function GroupAlive( groupName ) ---trace.menu("","GroupAlive") - local groupTest = Group.getByName( groupName ) - - local groupExists = false - - if groupTest then - groupExists = groupTest:isExist() - end - - --trace.r( "", "", { groupExists } ) - return groupExists -end - -function Su34IsDead() ---trace.f() - -end - -function Su34OverviewStatus() ---trace.menu("","Su34OverviewStatus") - local msg = "" - local currentStatus = 0 - local Exists = false - - for groupName, currentStatus in pairs(Su34Status.status) do - - env.info(('Su34 Overview Status: GroupName = ' .. groupName )) - Alive = GroupAlive( groupName ) - - if Alive then - if currentStatus == 1 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking carrier Carl Vinson. " - elseif currentStatus == 2 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking supporting ships in the west. " - elseif currentStatus == 3 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Attacking invading ships in the north. " - elseif currentStatus == 4 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "In orbit and awaiting further instructions. " - elseif currentStatus == 5 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Holding Weapons. " - elseif currentStatus == 6 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Return to Krasnodar. " - elseif currentStatus == 7 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Destroyed. " - elseif currentStatus == 8 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Take-Off. " - end - else - if currentStatus == 7 then - msg = msg .. string.format("%s: ",groupName) - msg = msg .. "Destroyed. " - else - Su34Destroyed(groupName) - end - end - end - - boardMsgRed.statusMsg = msg -end - - -function UpdateBoardMsg() ---trace.f() - Su34OverviewStatus() - MessageToRed( boardMsgRed.statusMsg, 15, 'RedStatus' ) -end - -function MusicReset( flg ) ---trace.f() - trigger.action.setUserFlag(95,flg) -end - -function PlaneActivate(groupNameFormat, flg) ---trace.f() - local groupName = groupNameFormat .. string.format("#%03d", trigger.misc.getUserFlag(flg)) - --trigger.action.outText(groupName,10) - trigger.action.activateGroup(Group.getByName(groupName)) -end - -function Su34Menu(groupName) ---trace.f() - - --env.info(( 'Su34Menu(' .. groupName .. ')' )) - local groupSu34 = Group.getByName( groupName ) - - if Su34Status.status[groupName] == 1 or - Su34Status.status[groupName] == 2 or - Su34Status.status[groupName] == 3 or - Su34Status.status[groupName] == 4 or - Su34Status.status[groupName] == 5 then - if Su34MenuPath[groupName] == nil then - if planeMenuPath == nil then - planeMenuPath = missionCommands.addSubMenuForCoalition( - coalition.side.RED, - "SU-34 anti-ship flights", - nil - ) - end - Su34MenuPath[groupName] = missionCommands.addSubMenuForCoalition( - coalition.side.RED, - "Flight " .. groupName, - planeMenuPath - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack carrier Carl Vinson", - Su34MenuPath[groupName], - Su34AttackCarlVinson, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack ships in the west", - Su34MenuPath[groupName], - Su34AttackWest, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Attack ships in the north", - Su34MenuPath[groupName], - Su34AttackNorth, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Hold position and await instructions", - Su34MenuPath[groupName], - Su34Orbit, - groupName - ) - - missionCommands.addCommandForCoalition( - coalition.side.RED, - "Report status", - Su34MenuPath[groupName], - Su34OverviewStatus - ) - end - else - if Su34MenuPath[groupName] then - missionCommands.removeItemForCoalition(coalition.side.RED, Su34MenuPath[groupName]) - end - end -end - ---- Obsolete function, but kept to rework in framework. - -function ChooseInfantry ( TeleportPrefixTable, TeleportMax ) ---trace.f("Spawn") - --env.info(( 'ChooseInfantry: ' )) - - TeleportPrefixTableCount = #TeleportPrefixTable - TeleportPrefixTableIndex = math.random( 1, TeleportPrefixTableCount ) - - --env.info(( 'ChooseInfantry: TeleportPrefixTableIndex = ' .. TeleportPrefixTableIndex .. ' TeleportPrefixTableCount = ' .. TeleportPrefixTableCount .. ' TeleportMax = ' .. TeleportMax )) - - local TeleportFound = false - local TeleportLoop = true - local Index = TeleportPrefixTableIndex - local TeleportPrefix = '' - - while TeleportLoop do - TeleportPrefix = TeleportPrefixTable[Index] - if SpawnSettings[TeleportPrefix] then - if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then - SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 - TeleportFound = true - else - TeleportFound = false - end - else - SpawnSettings[TeleportPrefix] = {} - SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 - TeleportFound = true - end - if TeleportFound then - TeleportLoop = false - else - if Index < TeleportPrefixTableCount then - Index = Index + 1 - else - TeleportLoop = false - end - end - --env.info(( 'ChooseInfantry: Loop 1 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) - end - - if TeleportFound == false then - TeleportLoop = true - Index = 1 - while TeleportLoop do - TeleportPrefix = TeleportPrefixTable[Index] - if SpawnSettings[TeleportPrefix] then - if SpawnSettings[TeleportPrefix]['SpawnCount'] - 1 < TeleportMax then - SpawnSettings[TeleportPrefix]['SpawnCount'] = SpawnSettings[TeleportPrefix]['SpawnCount'] + 1 - TeleportFound = true - else - TeleportFound = false - end - else - SpawnSettings[TeleportPrefix] = {} - SpawnSettings[TeleportPrefix]['SpawnCount'] = 0 - TeleportFound = true - end - if TeleportFound then - TeleportLoop = false - else - if Index < TeleportPrefixTableIndex then - Index = Index + 1 - else - TeleportLoop = false - end - end - --env.info(( 'ChooseInfantry: Loop 2 - TeleportPrefix = ' .. TeleportPrefix .. ' Index = ' .. Index )) - end - end - - local TeleportGroupName = '' - if TeleportFound == true then - TeleportGroupName = TeleportPrefix .. string.format("#%03d", SpawnSettings[TeleportPrefix]['SpawnCount'] ) - else - TeleportGroupName = '' - end - - --env.info(('ChooseInfantry: TeleportGroupName = ' .. TeleportGroupName )) - --env.info(('ChooseInfantry: return')) - - return TeleportGroupName -end - -SpawnedInfantry = 0 - -function LandCarrier ( CarrierGroup, LandingZonePrefix ) ---trace.f() - --env.info(( 'LandCarrier: ' )) - --env.info(( 'LandCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) - --env.info(( 'LandCarrier: LandingZone = ' .. LandingZonePrefix )) - - local controllerGroup = CarrierGroup:getController() - - local LandingZone = trigger.misc.getZone(LandingZonePrefix) - local LandingZonePos = {} - LandingZonePos.x = LandingZone.point.x + math.random(LandingZone.radius * -1, LandingZone.radius) - LandingZonePos.y = LandingZone.point.z + math.random(LandingZone.radius * -1, LandingZone.radius) - - controllerGroup:pushTask( { id = 'Land', params = { point = LandingZonePos, durationFlag = true, duration = 10 } } ) - - --env.info(( 'LandCarrier: end' )) -end - -EscortCount = 0 -function EscortCarrier ( CarrierGroup, EscortPrefix, EscortLastWayPoint, EscortEngagementDistanceMax, EscortTargetTypes ) ---trace.f() - --env.info(( 'EscortCarrier: ' )) - --env.info(( 'EscortCarrier: CarrierGroup = ' .. CarrierGroup:getName() )) - --env.info(( 'EscortCarrier: EscortPrefix = ' .. EscortPrefix )) - - local CarrierName = CarrierGroup:getName() - - local EscortMission = {} - local CarrierMission = {} - - local EscortMission = SpawnMissionGroup( EscortPrefix ) - local CarrierMission = SpawnMissionGroup( CarrierGroup:getName() ) - - if EscortMission ~= nil and CarrierMission ~= nil then - - EscortCount = EscortCount + 1 - EscortMissionName = string.format( EscortPrefix .. '#Escort %s', CarrierName ) - EscortMission.name = EscortMissionName - EscortMission.groupId = nil - EscortMission.lateActivation = false - EscortMission.taskSelected = false - - local EscortUnits = #EscortMission.units - for u = 1, EscortUnits do - EscortMission.units[u].name = string.format( EscortPrefix .. '#Escort %s %02d', CarrierName, u ) - EscortMission.units[u].unitId = nil - end - - - EscortMission.route.points[1].task = { id = "ComboTask", - params = - { - tasks = - { - [1] = - { - enabled = true, - auto = false, - id = "Escort", - number = 1, - params = - { - lastWptIndexFlagChangedManually = false, - groupId = CarrierGroup:getID(), - lastWptIndex = nil, - lastWptIndexFlag = false, - engagementDistMax = EscortEngagementDistanceMax, - targetTypes = EscortTargetTypes, - pos = - { - y = 20, - x = 20, - z = 0, - } -- end of ["pos"] - } -- end of ["params"] - } -- end of [1] - } -- end of ["tasks"] - } -- end of ["params"] - } -- end of ["task"] - - SpawnGroupAdd( EscortPrefix, EscortMission ) - - end -end - -function SendMessageToCarrier( CarrierGroup, CarrierMessage ) ---trace.f() - - if CarrierGroup ~= nil then - MessageToGroup( CarrierGroup, CarrierMessage, 30, 'Carrier/' .. CarrierGroup:getName() ) - end - -end - -function MessageToGroup( MsgGroup, MsgText, MsgTime, MsgName ) ---trace.f() - - if type(MsgGroup) == 'string' then - --env.info( 'MessageToGroup: Converted MsgGroup string "' .. MsgGroup .. '" into a Group structure.' ) - MsgGroup = Group.getByName( MsgGroup ) - end - - if MsgGroup ~= nil then - local MsgTable = {} - MsgTable.text = MsgText - MsgTable.displayTime = MsgTime - MsgTable.msgFor = { units = { MsgGroup:getUnits()[1]:getName() } } - MsgTable.name = MsgName - --routines.message.add( MsgTable ) - --env.info(('MessageToGroup: Message sent to ' .. MsgGroup:getUnits()[1]:getName() .. ' -> ' .. MsgText )) - end -end - -function MessageToUnit( UnitName, MsgText, MsgTime, MsgName ) ---trace.f() - - if UnitName ~= nil then - local MsgTable = {} - MsgTable.text = MsgText - MsgTable.displayTime = MsgTime - MsgTable.msgFor = { units = { UnitName } } - MsgTable.name = MsgName - --routines.message.add( MsgTable ) - end -end - -function MessageToAll( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, MsgTime, "Message" ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE ) -end - -function MessageToRed( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, MsgTime, "To Red Coalition" ):ToCoalition( coalition.side.RED ) -end - -function MessageToBlue( MsgText, MsgTime, MsgName ) ---trace.f() - - MESSAGE:New( MsgText, MsgTime, "To Blue Coalition" ):ToCoalition( coalition.side.RED ) -end - -function getCarrierHeight( CarrierGroup ) ---trace.f() - - if CarrierGroup ~= nil then - if table.getn(CarrierGroup:getUnits()) == 1 then - local CarrierUnit = CarrierGroup:getUnits()[1] - local CurrentPoint = CarrierUnit:getPoint() - - local CurrentPosition = { x = CurrentPoint.x, y = CurrentPoint.z } - local CarrierHeight = CurrentPoint.y - - local LandHeight = land.getHeight( CurrentPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - return CarrierHeight - LandHeight - else - return 999999 - end - else - return 999999 - end - -end - -function GetUnitHeight( CheckUnit ) ---trace.f() - - local UnitPoint = CheckUnit:getPoint() - local UnitPosition = { x = CurrentPoint.x, y = CurrentPoint.z } - local UnitHeight = CurrentPoint.y - - local LandHeight = land.getHeight( CurrentPosition ) - - --env.info(( 'CarrierHeight: LandHeight = ' .. LandHeight .. ' CarrierHeight = ' .. CarrierHeight )) - - return UnitHeight - LandHeight - -end - - -_MusicTable = {} -_MusicTable.Files = {} -_MusicTable.Queue = {} -_MusicTable.FileCnt = 0 - - -function MusicRegister( SndRef, SndFile, SndTime ) ---trace.f() - - env.info(( 'MusicRegister: SndRef = ' .. SndRef )) - env.info(( 'MusicRegister: SndFile = ' .. SndFile )) - env.info(( 'MusicRegister: SndTime = ' .. SndTime )) - - - _MusicTable.FileCnt = _MusicTable.FileCnt + 1 - - _MusicTable.Files[_MusicTable.FileCnt] = {} - _MusicTable.Files[_MusicTable.FileCnt].Ref = SndRef - _MusicTable.Files[_MusicTable.FileCnt].File = SndFile - _MusicTable.Files[_MusicTable.FileCnt].Time = SndTime - - if not _MusicTable.Function then - _MusicTable.Function = routines.scheduleFunction( MusicScheduler, { }, timer.getTime() + 10, 10) - end - -end - -function MusicToPlayer( SndRef, PlayerName, SndContinue ) ---trace.f() - - --env.info(( 'MusicToPlayer: SndRef = ' .. SndRef )) - - local PlayerUnits = AlivePlayerUnits() - for PlayerUnitIdx, PlayerUnit in pairs(PlayerUnits) do - local PlayerUnitName = PlayerUnit:getPlayerName() - --env.info(( 'MusicToPlayer: PlayerUnitName = ' .. PlayerUnitName )) - if PlayerName == PlayerUnitName then - PlayerGroup = PlayerUnit:getGroup() - if PlayerGroup then - --env.info(( 'MusicToPlayer: PlayerGroup = ' .. PlayerGroup:getName() )) - MusicToGroup( SndRef, PlayerGroup, SndContinue ) - end - break - end - end - - --env.info(( 'MusicToPlayer: end' )) - -end - -function MusicToGroup( SndRef, SndGroup, SndContinue ) ---trace.f() - - --env.info(( 'MusicToGroup: SndRef = ' .. SndRef )) - - if SndGroup ~= nil then - if _MusicTable and _MusicTable.FileCnt > 0 then - if SndGroup:isExist() then - if MusicCanStart(SndGroup:getUnit(1):getPlayerName()) then - --env.info(( 'MusicToGroup: OK for Sound.' )) - local SndIdx = 0 - if SndRef == '' then - --env.info(( 'MusicToGroup: SndRef as empty. Queueing at random.' )) - SndIdx = math.random( 1, _MusicTable.FileCnt ) - else - for SndIdx = 1, _MusicTable.FileCnt do - if _MusicTable.Files[SndIdx].Ref == SndRef then - break - end - end - end - --env.info(( 'MusicToGroup: SndIdx = ' .. SndIdx )) - --env.info(( 'MusicToGroup: Queueing Music ' .. _MusicTable.Files[SndIdx].File .. ' for Group ' .. SndGroup:getID() )) - trigger.action.outSoundForGroup( SndGroup:getID(), _MusicTable.Files[SndIdx].File ) - MessageToGroup( SndGroup, 'Playing ' .. _MusicTable.Files[SndIdx].File, 15, 'Music-' .. SndGroup:getUnit(1):getPlayerName() ) - - local SndQueueRef = SndGroup:getUnit(1):getPlayerName() - if _MusicTable.Queue[SndQueueRef] == nil then - _MusicTable.Queue[SndQueueRef] = {} - end - _MusicTable.Queue[SndQueueRef].Start = timer.getTime() - _MusicTable.Queue[SndQueueRef].PlayerName = SndGroup:getUnit(1):getPlayerName() - _MusicTable.Queue[SndQueueRef].Group = SndGroup - _MusicTable.Queue[SndQueueRef].ID = SndGroup:getID() - _MusicTable.Queue[SndQueueRef].Ref = SndIdx - _MusicTable.Queue[SndQueueRef].Continue = SndContinue - _MusicTable.Queue[SndQueueRef].Type = Group - end - end - end - end -end - -function MusicCanStart(PlayerName) ---trace.f() - - --env.info(( 'MusicCanStart:' )) - - local MusicOut = false - - if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then - --env.info(( 'MusicCanStart: PlayerName = ' .. PlayerName )) - local PlayerFound = false - local MusicStart = 0 - local MusicTime = 0 - for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do - if SndQueue.PlayerName == PlayerName then - PlayerFound = true - MusicStart = SndQueue.Start - MusicTime = _MusicTable.Files[SndQueue.Ref].Time - break - end - end - if PlayerFound then - --env.info(( 'MusicCanStart: MusicStart = ' .. MusicStart )) - --env.info(( 'MusicCanStart: MusicTime = ' .. MusicTime )) - --env.info(( 'MusicCanStart: timer.getTime() = ' .. timer.getTime() )) - - if MusicStart + MusicTime <= timer.getTime() then - MusicOut = true - end - else - MusicOut = true - end - end - - if MusicOut then - --env.info(( 'MusicCanStart: true' )) - else - --env.info(( 'MusicCanStart: false' )) - end - - return MusicOut -end - -function MusicScheduler() ---trace.scheduled("", "MusicScheduler") - - --env.info(( 'MusicScheduler:' )) - if _MusicTable['Queue'] ~= nil and _MusicTable.FileCnt > 0 then - --env.info(( 'MusicScheduler: Walking Sound Queue.')) - for SndQueueIdx, SndQueue in pairs( _MusicTable.Queue ) do - if SndQueue.Continue then - if MusicCanStart(SndQueue.PlayerName) then - --env.info(('MusicScheduler: MusicToGroup')) - MusicToPlayer( '', SndQueue.PlayerName, true ) - end - end - end - end - -end - - -env.info(( 'Init: Scripts Loaded v1.1' )) - ---- This module contains derived utilities taken from the MIST framework, --- which are excellent tools to be reused in an OO environment!. --- --- ### Authors: --- --- * Grimes : Design & Programming of the MIST framework. --- --- ### Contributions: --- --- * FlightControl : Rework to OO framework --- --- @module Utils - - ---- @type SMOKECOLOR --- @field Green --- @field Red --- @field White --- @field Orange --- @field Blue - -SMOKECOLOR = trigger.smokeColor -- #SMOKECOLOR - ---- @type FLARECOLOR --- @field Green --- @field Red --- @field White --- @field Yellow - -FLARECOLOR = trigger.flareColor -- #FLARECOLOR - ---- Utilities static class. --- @type UTILS -UTILS = {} - - ---from http://lua-users.org/wiki/CopyTable -UTILS.DeepCopy = function(object) - local lookup_table = {} - local function _copy(object) - if type(object) ~= "table" then - return object - elseif lookup_table[object] then - return lookup_table[object] - end - local new_table = {} - lookup_table[object] = new_table - for index, value in pairs(object) do - new_table[_copy(index)] = _copy(value) - end - return setmetatable(new_table, getmetatable(object)) - end - local objectreturn = _copy(object) - return objectreturn -end - - --- porting in Slmod's serialize_slmod2 -UTILS.OneLineSerialize = function( tbl ) -- serialization of a table all on a single line, no comments, made to replace old get_table_string function - - lookup_table = {} - - local function _Serialize( tbl ) - - if type(tbl) == 'table' then --function only works for tables! - - if lookup_table[tbl] then - return lookup_table[object] - end - - local tbl_str = {} - - lookup_table[tbl] = tbl_str - - tbl_str[#tbl_str + 1] = '{' - - for ind,val in pairs(tbl) do -- serialize its fields - local ind_str = {} - if type(ind) == "number" then - ind_str[#ind_str + 1] = '[' - ind_str[#ind_str + 1] = tostring(ind) - ind_str[#ind_str + 1] = ']=' - else --must be a string - ind_str[#ind_str + 1] = '[' - ind_str[#ind_str + 1] = routines.utils.basicSerialize(ind) - ind_str[#ind_str + 1] = ']=' - end - - local val_str = {} - if ((type(val) == 'number') or (type(val) == 'boolean')) then - val_str[#val_str + 1] = tostring(val) - val_str[#val_str + 1] = ',' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'string' then - val_str[#val_str + 1] = routines.utils.basicSerialize(val) - val_str[#val_str + 1] = ',' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'nil' then -- won't ever happen, right? - val_str[#val_str + 1] = 'nil,' - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - elseif type(val) == 'table' then - if ind == "__index" then - -- tbl_str[#tbl_str + 1] = "__index" - -- tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it - else - - val_str[#val_str + 1] = _Serialize(val) - val_str[#val_str + 1] = ',' --I think this is right, I just added it - tbl_str[#tbl_str + 1] = table.concat(ind_str) - tbl_str[#tbl_str + 1] = table.concat(val_str) - end - elseif type(val) == 'function' then - tbl_str[#tbl_str + 1] = "f() " .. tostring(ind) - tbl_str[#tbl_str + 1] = ',' --I think this is right, I just added it - else - env.info('unable to serialize value type ' .. routines.utils.basicSerialize(type(val)) .. ' at index ' .. tostring(ind)) - env.info( debug.traceback() ) - end - - end - tbl_str[#tbl_str + 1] = '}' - return table.concat(tbl_str) - else - return tostring(tbl) - end - end - - local objectreturn = _Serialize(tbl) - return objectreturn -end - ---porting in Slmod's "safestring" basic serialize -UTILS.BasicSerialize = function(s) - if s == nil then - return "\"\"" - else - if ((type(s) == 'number') or (type(s) == 'boolean') or (type(s) == 'function') or (type(s) == 'table') or (type(s) == 'userdata') ) then - return tostring(s) - elseif type(s) == 'string' then - s = string.format('%q', s) - return s - end - end -end - - -UTILS.ToDegree = function(angle) - return angle*180/math.pi -end - -UTILS.ToRadian = function(angle) - return angle*math.pi/180 -end - -UTILS.MetersToNM = function(meters) - return meters/1852 -end - -UTILS.MetersToFeet = function(meters) - return meters/0.3048 -end - -UTILS.NMToMeters = function(NM) - return NM*1852 -end - -UTILS.FeetToMeters = function(feet) - return feet*0.3048 -end - -UTILS.MpsToKnots = function(mps) - return mps*3600/1852 -end - -UTILS.MpsToKmph = function(mps) - return mps*3.6 -end - -UTILS.KnotsToMps = function(knots) - return knots*1852/3600 -end - -UTILS.KmphToMps = function(kmph) - return kmph/3.6 -end - ---[[acc: -in DM: decimal point of minutes. -In DMS: decimal point of seconds. -position after the decimal of the least significant digit: -So: -42.32 - acc of 2. -]] -UTILS.tostringLL = function( lat, lon, acc, DMS) - - local latHemi, lonHemi - if lat > 0 then - latHemi = 'N' - else - latHemi = 'S' - end - - if lon > 0 then - lonHemi = 'E' - else - lonHemi = 'W' - end - - lat = math.abs(lat) - lon = math.abs(lon) - - local latDeg = math.floor(lat) - local latMin = (lat - latDeg)*60 - - local lonDeg = math.floor(lon) - local lonMin = (lon - lonDeg)*60 - - if DMS then -- degrees, minutes, and seconds. - local oldLatMin = latMin - latMin = math.floor(latMin) - local latSec = UTILS.Round((oldLatMin - latMin)*60, acc) - - local oldLonMin = lonMin - lonMin = math.floor(lonMin) - local lonSec = UTILS.Round((oldLonMin - lonMin)*60, acc) - - if latSec == 60 then - latSec = 0 - latMin = latMin + 1 - end - - if lonSec == 60 then - lonSec = 0 - lonMin = lonMin + 1 - end - - local secFrmtStr -- create the formatting string for the seconds place - if acc <= 0 then -- no decimal place. - secFrmtStr = '%02d' - else - local width = 3 + acc -- 01.310 - that's a width of 6, for example. - secFrmtStr = '%0' .. width .. '.' .. acc .. 'f' - end - - return string.format('%02d', latDeg) .. ' ' .. string.format('%02d', latMin) .. '\' ' .. string.format(secFrmtStr, latSec) .. '"' .. latHemi .. ' ' - .. string.format('%02d', lonDeg) .. ' ' .. string.format('%02d', lonMin) .. '\' ' .. string.format(secFrmtStr, lonSec) .. '"' .. lonHemi - - else -- degrees, decimal minutes. - latMin = UTILS.Round(latMin, acc) - lonMin = UTILS.Round(lonMin, acc) - - if latMin == 60 then - latMin = 0 - latDeg = latDeg + 1 - end - - if lonMin == 60 then - lonMin = 0 - lonDeg = lonDeg + 1 - end - - local minFrmtStr -- create the formatting string for the minutes place - if acc <= 0 then -- no decimal place. - minFrmtStr = '%02d' - else - local width = 3 + acc -- 01.310 - that's a width of 6, for example. - minFrmtStr = '%0' .. width .. '.' .. acc .. 'f' - end - - return string.format('%02d', latDeg) .. ' ' .. string.format(minFrmtStr, latMin) .. '\'' .. latHemi .. ' ' - .. string.format('%02d', lonDeg) .. ' ' .. string.format(minFrmtStr, lonMin) .. '\'' .. lonHemi - - end -end - - ---- From http://lua-users.org/wiki/SimpleRound --- use negative idp for rounding ahead of decimal place, positive for rounding after decimal place -function UTILS.Round( num, idp ) - local mult = 10 ^ ( idp or 0 ) - return math.floor( num * mult + 0.5 ) / mult -end - --- porting in Slmod's dostring -function UTILS.DoString( s ) - local f, err = loadstring( s ) - if f then - return true, f() - else - return false, err - end -end ---- **Core** - BASE forms **the basis of the MOOSE framework**. Each class within the MOOSE framework derives from BASE. --- --- ![Banner Image](..\Presentations\BASE\Dia1.JPG) --- --- === --- --- The @{#BASE} class is the core root class from where every other class in moose is derived. --- --- === --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- YYYY-MM-DD: CLASS:**NewFunction**( Params ) replaces CLASS:_OldFunction_( Params ) --- YYYY-MM-DD: CLASS:**NewFunction( Params )** added --- --- Hereby the change log: --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * None. --- --- ### Authors: --- --- * **FlightControl**: Design & Programming --- --- @module Base - - - -local _TraceOnOff = true -local _TraceLevel = 1 -local _TraceAll = false -local _TraceClass = {} -local _TraceClassMethod = {} - -local _ClassID = 0 - ---- @type BASE --- @field ClassName The name of the class. --- @field ClassID The ID number of the class. --- @field ClassNameAndID The name of the class concatenated with the ID number of the class. - ---- # 1) #BASE class --- --- All classes within the MOOSE framework are derived from the BASE class. --- --- BASE provides facilities for : --- --- * The construction and inheritance of MOOSE classes. --- * The class naming and numbering system. --- * The class hierarchy search system. --- * The tracing of information or objects during mission execution for debuggin purposes. --- * The subscription to DCS events for event handling in MOOSE objects. --- --- Note: The BASE class is an abstract class and is not meant to be used directly. --- --- ## 1.1) BASE constructor --- --- Any class derived from BASE, will use the @{Base#BASE.New} constructor embedded in the @{Base#BASE.Inherit} method. --- See an example at the @{Base#BASE.New} method how this is done. --- --- ## 1.2) Trace information for debugging --- --- The BASE class contains trace methods to trace progress within a mission execution of a certain object. --- These trace methods are inherited by each MOOSE class interiting BASE, soeach object created from derived class from BASE can use the tracing methods to trace its execution. --- --- Any type of information can be passed to these tracing methods. See the following examples: --- --- self:E( "Hello" ) --- --- Result in the word "Hello" in the dcs.log. --- --- local Array = { 1, nil, "h", { "a","b" }, "x" } --- self:E( Array ) --- --- Results with the text [1]=1,[3]="h",[4]={[1]="a",[2]="b"},[5]="x"} in the dcs.log. --- --- local Object1 = "Object1" --- local Object2 = 3 --- local Object3 = { Object 1, Object 2 } --- self:E( { Object1, Object2, Object3 } ) --- --- Results with the text [1]={[1]="Object",[2]=3,[3]={[1]="Object",[2]=3}} in the dcs.log. --- --- local SpawnObject = SPAWN:New( "Plane" ) --- local GroupObject = GROUP:FindByName( "Group" ) --- self:E( { Spawn = SpawnObject, Group = GroupObject } ) --- --- Results with the text [1]={Spawn={....),Group={...}} in the dcs.log. --- --- Below a more detailed explanation of the different method types for tracing. --- --- ### 1.2.1) Tracing methods categories --- --- There are basically 3 types of tracing methods available: --- --- * @{#BASE.F}: Used to trace the entrance of a function and its given parameters. An F is indicated at column 44 in the DCS.log file. --- * @{#BASE.T}: Used to trace further logic within a function giving optional variables or parameters. A T is indicated at column 44 in the DCS.log file. --- * @{#BASE.E}: Used to always trace information giving optional variables or parameters. An E is indicated at column 44 in the DCS.log file. --- --- ### 1.2.2) Tracing levels --- --- There are 3 tracing levels within MOOSE. --- These tracing levels were defined to avoid bulks of tracing to be generated by lots of objects. --- --- As such, the F and T methods have additional variants to trace level 2 and 3 respectively: --- --- * @{#BASE.F2}: Trace the beginning of a function and its given parameters with tracing level 2. --- * @{#BASE.F3}: Trace the beginning of a function and its given parameters with tracing level 3. --- * @{#BASE.T2}: Trace further logic within a function giving optional variables or parameters with tracing level 2. --- * @{#BASE.T3}: Trace further logic within a function giving optional variables or parameters with tracing level 3. --- --- ### 1.2.3) Trace activation. --- --- Tracing can be activated in several ways: --- --- * Switch tracing on or off through the @{#BASE.TraceOnOff}() method. --- * Activate all tracing through the @{#BASE.TraceAll}() method. --- * Activate only the tracing of a certain class (name) through the @{#BASE.TraceClass}() method. --- * Activate only the tracing of a certain method of a certain class through the @{#BASE.TraceClassMethod}() method. --- * Activate only the tracing of a certain level through the @{#BASE.TraceLevel}() method. --- --- ### 1.2.4) Check if tracing is on. --- --- The method @{#BASE.IsTrace}() will validate if tracing is activated or not. --- --- ## 1.3 DCS simulator Event Handling --- --- The BASE class provides methods to catch DCS Events. These are events that are triggered from within the DCS simulator, --- and handled through lua scripting. MOOSE provides an encapsulation to handle these events more efficiently. --- --- ### 1.3.1 Subscribe / Unsubscribe to DCS Events --- --- At first, the mission designer will need to **Subscribe** to a specific DCS event for the class. --- So, when the DCS event occurs, the class will be notified of that event. --- There are two methods which you use to subscribe to or unsubscribe from an event. --- --- * @{#BASE.HandleEvent}(): Subscribe to a DCS Event. --- * @{#BASE.UnHandleEvent}(): Unsubscribe from a DCS Event. --- --- ### 1.3.2 Event Handling of DCS Events --- --- Once the class is subscribed to the event, an **Event Handling** method on the object or class needs to be written that will be called --- when the DCS event occurs. The Event Handling method receives an @{Event#EVENTDATA} structure, which contains a lot of information --- about the event that occurred. --- --- Find below an example of the prototype how to write an event handling function for two units: --- --- local Tank1 = UNIT:FindByName( "Tank A" ) --- local Tank2 = UNIT:FindByName( "Tank B" ) --- --- -- Here we subscribe to the Dead events. So, if one of these tanks dies, the Tank1 or Tank2 objects will be notified. --- Tank1:HandleEvent( EVENTS.Dead ) --- Tank2:HandleEvent( EVENTS.Dead ) --- --- --- This function is an Event Handling function that will be called when Tank1 is Dead. --- -- @param Wrapper.Unit#UNIT self --- -- @param Core.Event#EVENTDATA EventData --- function Tank1:OnEventDead( EventData ) --- --- self:SmokeGreen() --- end --- --- --- This function is an Event Handling function that will be called when Tank2 is Dead. --- -- @param Wrapper.Unit#UNIT self --- -- @param Core.Event#EVENTDATA EventData --- function Tank2:OnEventDead( EventData ) --- --- self:SmokeBlue() --- end --- --- --- --- See the @{Event} module for more information about event handling. --- --- ## 1.4) Class identification methods --- --- BASE provides methods to get more information of each object: --- --- * @{#BASE.GetClassID}(): Gets the ID (number) of the object. Each object created is assigned a number, that is incremented by one. --- * @{#BASE.GetClassName}(): Gets the name of the object, which is the name of the class the object was instantiated from. --- * @{#BASE.GetClassNameAndID}(): Gets the name and ID of the object. --- --- ## 1.5) All objects derived from BASE can have "States" --- --- A mechanism is in place in MOOSE, that allows to let the objects administer **states**. --- States are essentially properties of objects, which are identified by a **Key** and a **Value**. --- --- The method @{#BASE.SetState}() can be used to set a Value with a reference Key to the object. --- To **read or retrieve** a state Value based on a Key, use the @{#BASE.GetState} method. --- --- These two methods provide a very handy way to keep state at long lasting processes. --- Values can be stored within the objects, and later retrieved or changed when needed. --- There is one other important thing to note, the @{#BASE.SetState}() and @{#BASE.GetState} methods --- receive as the **first parameter the object for which the state needs to be set**. --- Thus, if the state is to be set for the same object as the object for which the method is used, then provide the same --- object name to the method. --- --- ## 1.10) Inheritance --- --- The following methods are available to implement inheritance --- --- * @{#BASE.Inherit}: Inherits from a class. --- * @{#BASE.GetParent}: Returns the parent object from the object it is handling, or nil if there is no parent object. --- --- === --- --- @field #BASE BASE --- -BASE = { - ClassName = "BASE", - ClassID = 0, - _Private = {}, - Events = {}, - States = {} -} - ---- The Formation Class --- @type FORMATION --- @field Cone A cone formation. -FORMATION = { - Cone = "Cone" -} - - - ---- BASE constructor. --- --- This is an example how to use the BASE:New() constructor in a new class definition when inheriting from BASE. --- --- function EVENT:New() --- local self = BASE:Inherit( self, BASE:New() ) -- #EVENT --- return self --- end --- --- @param #BASE self --- @return #BASE -function BASE:New() - local self = routines.utils.deepCopy( self ) -- Create a new self instance - local MetaTable = {} - setmetatable( self, MetaTable ) - self.__index = self - _ClassID = _ClassID + 1 - self.ClassID = _ClassID - - - return self -end - -function BASE:_Destructor() - --self:E("_Destructor") - - --self:EventRemoveAll() -end - - --- THIS IS WHY WE NEED LUA 5.2 ... -function BASE:_SetDestructor() - - -- TODO: Okay, this is really technical... - -- When you set a proxy to a table to catch __gc, weak tables don't behave like weak... - -- Therefore, I am parking this logic until I've properly discussed all this with the community. - - local proxy = newproxy(true) - local proxyMeta = getmetatable(proxy) - - proxyMeta.__gc = function () - env.info("In __gc for " .. self:GetClassNameAndID() ) - if self._Destructor then - self:_Destructor() - end - end - - -- keep the userdata from newproxy reachable until the object - -- table is about to be garbage-collected - then the __gc hook - -- will be invoked and the destructor called - rawset( self, '__proxy', proxy ) - -end - ---- This is the worker method to inherit from a parent class. --- @param #BASE self --- @param Child is the Child class that inherits. --- @param #BASE Parent is the Parent class that the Child inherits from. --- @return #BASE Child -function BASE:Inherit( Child, Parent ) - local Child = routines.utils.deepCopy( Child ) - --local Parent = routines.utils.deepCopy( Parent ) - --local Parent = Parent - if Child ~= nil then - setmetatable( Child, Parent ) - Child.__index = Child - - --Child:_SetDestructor() - end - --self:T( 'Inherited from ' .. Parent.ClassName ) - return Child -end - ---- This is the worker method to retrieve the Parent class. --- Note that the Parent class must be passed to call the parent class method. --- --- self:GetParent(self):ParentMethod() --- --- --- @param #BASE self --- @param #BASE Child is the Child class from which the Parent class needs to be retrieved. --- @return #BASE -function BASE:GetParent( Child ) - local Parent = getmetatable( Child ) --- env.info('Inherited class of ' .. Child.ClassName .. ' is ' .. Parent.ClassName ) - return Parent -end - ---- Get the ClassName + ClassID of the class instance. --- The ClassName + ClassID is formatted as '%s#%09d'. --- @param #BASE self --- @return #string The ClassName + ClassID of the class instance. -function BASE:GetClassNameAndID() - return string.format( '%s#%09d', self.ClassName, self.ClassID ) -end - ---- Get the ClassName of the class instance. --- @param #BASE self --- @return #string The ClassName of the class instance. -function BASE:GetClassName() - return self.ClassName -end - ---- Get the ClassID of the class instance. --- @param #BASE self --- @return #string The ClassID of the class instance. -function BASE:GetClassID() - return self.ClassID -end - -do -- Event Handling - - --- Returns the event dispatcher - -- @param #BASE self - -- @return Core.Event#EVENT - function BASE:EventDispatcher() - - return _EVENTDISPATCHER - end - - - --- Get the Class @{Event} processing Priority. - -- The Event processing Priority is a number from 1 to 10, - -- reflecting the order of the classes subscribed to the Event to be processed. - -- @param #BASE self - -- @return #number The @{Event} processing Priority. - function BASE:GetEventPriority() - return self._Private.EventPriority or 5 - end - - --- Set the Class @{Event} processing Priority. - -- The Event processing Priority is a number from 1 to 10, - -- reflecting the order of the classes subscribed to the Event to be processed. - -- @param #BASE self - -- @param #number EventPriority The @{Event} processing Priority. - -- @return self - function BASE:SetEventPriority( EventPriority ) - self._Private.EventPriority = EventPriority - end - - --- Remove all subscribed events - -- @param #BASE self - -- @return #BASE - function BASE:EventRemoveAll() - - self:EventDispatcher():RemoveAll( self ) - - return self - end - - --- Subscribe to a DCS Event. - -- @param #BASE self - -- @param Core.Event#EVENTS Event - -- @param #function EventFunction (optional) The function to be called when the event occurs for the unit. - -- @return #BASE - function BASE:HandleEvent( Event, EventFunction ) - - self:EventDispatcher():OnEventGeneric( EventFunction, self, Event ) - - return self - end - - --- UnSubscribe to a DCS event. - -- @param #BASE self - -- @param Core.Event#EVENTS Event - -- @return #BASE - function BASE:UnHandleEvent( Event ) - - self:EventDispatcher():Remove( self, Event ) - - return self - end - - -- Event handling function prototypes - - --- Occurs whenever any unit in a mission fires a weapon. But not any machine gun or autocannon based weapon, those are handled by EVENT.ShootingStart. - -- @function [parent=#BASE] OnEventShot - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs whenever an object is hit by a weapon. - -- initiator : The unit object the fired the weapon - -- weapon: Weapon object that hit the target - -- target: The Object that was hit. - -- @function [parent=#BASE] OnEventHit - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when an aircraft takes off from an airbase, farp, or ship. - -- initiator : The unit that tookoff - -- place: Object from where the AI took-off from. Can be an Airbase Object, FARP, or Ships - -- @function [parent=#BASE] OnEventTakeoff - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when an aircraft lands at an airbase, farp or ship - -- initiator : The unit that has landed - -- place: Object that the unit landed on. Can be an Airbase Object, FARP, or Ships - -- @function [parent=#BASE] OnEventLand - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any aircraft crashes into the ground and is completely destroyed. - -- initiator : The unit that has crashed - -- @function [parent=#BASE] OnEventCrash - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when a pilot ejects from an aircraft - -- initiator : The unit that has ejected - -- @function [parent=#BASE] OnEventEjection - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when an aircraft connects with a tanker and begins taking on fuel. - -- initiator : The unit that is receiving fuel. - -- @function [parent=#BASE] OnEventRefueling - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when an object is completely destroyed. - -- initiator : The unit that is was destroyed. - -- @function [parent=#BASE] OnEvent - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when the pilot of an aircraft is killed. Can occur either if the player is alive and crashes or if a weapon kills the pilot without completely destroying the plane. - -- initiator : The unit that the pilot has died in. - -- @function [parent=#BASE] OnEventPilotDead - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when a ground unit captures either an airbase or a farp. - -- initiator : The unit that captured the base - -- place: The airbase that was captured, can be a FARP or Airbase. When calling place:getCoalition() the faction will already be the new owning faction. - -- @function [parent=#BASE] OnEventBaseCaptured - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when a mission starts - -- @function [parent=#BASE] OnEventMissionStart - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when a mission ends - -- @function [parent=#BASE] OnEventMissionEnd - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when an aircraft is finished taking fuel. - -- initiator : The unit that was receiving fuel. - -- @function [parent=#BASE] OnEventRefuelingStop - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any object is spawned into the mission. - -- initiator : The unit that was spawned - -- @function [parent=#BASE] OnEventBirth - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any system fails on a human controlled aircraft. - -- initiator : The unit that had the failure - -- @function [parent=#BASE] OnEventHumanFailure - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any aircraft starts its engines. - -- initiator : The unit that is starting its engines. - -- @function [parent=#BASE] OnEventEngineStartup - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any aircraft shuts down its engines. - -- initiator : The unit that is stopping its engines. - -- @function [parent=#BASE] OnEventEngineShutdown - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any player assumes direct control of a unit. - -- initiator : The unit that is being taken control of. - -- @function [parent=#BASE] OnEventPlayerEnterUnit - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any player relieves control of a unit to the AI. - -- initiator : The unit that the player left. - -- @function [parent=#BASE] OnEventPlayerLeaveUnit - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any unit begins firing a weapon that has a high rate of fire. Most common with aircraft cannons (GAU-8), autocannons, and machine guns. - -- initiator : The unit that is doing the shooing. - -- target: The unit that is being targeted. - -- @function [parent=#BASE] OnEventShootingStart - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - - --- Occurs when any unit stops firing its weapon. Event will always correspond with a shooting start event. - -- initiator : The unit that was doing the shooing. - -- @function [parent=#BASE] OnEventShootingEnd - -- @param #BASE self - -- @param Core.Event#EVENTDATA EventData The EventData structure. - -end - - ---- Creation of a Birth Event. --- @param #BASE self --- @param Dcs.DCSTypes#Time EventTime The time stamp of the event. --- @param Dcs.DCSWrapper.Object#Object Initiator The initiating object of the event. --- @param #string IniUnitName The initiating unit name. --- @param place --- @param subplace -function BASE:CreateEventBirth( EventTime, Initiator, IniUnitName, place, subplace ) - self:F( { EventTime, Initiator, IniUnitName, place, subplace } ) - - local Event = { - id = world.event.S_EVENT_BIRTH, - time = EventTime, - initiator = Initiator, - IniUnitName = IniUnitName, - place = place, - subplace = subplace - } - - world.onEvent( Event ) -end - ---- Creation of a Crash Event. --- @param #BASE self --- @param Dcs.DCSTypes#Time EventTime The time stamp of the event. --- @param Dcs.DCSWrapper.Object#Object Initiator The initiating object of the event. -function BASE:CreateEventCrash( EventTime, Initiator ) - self:F( { EventTime, Initiator } ) - - local Event = { - id = world.event.S_EVENT_CRASH, - time = EventTime, - initiator = Initiator, - } - - world.onEvent( Event ) -end - --- TODO: Complete Dcs.DCSTypes#Event structure. ---- The main event handling function... This function captures all events generated for the class. --- @param #BASE self --- @param Dcs.DCSTypes#Event event -function BASE:onEvent(event) - --self:F( { BaseEventCodes[event.id], event } ) - - if self then - for EventID, EventObject in pairs( self.Events ) do - if EventObject.EventEnabled then - --env.info( 'onEvent Table EventObject.Self = ' .. tostring(EventObject.Self) ) - --env.info( 'onEvent event.id = ' .. tostring(event.id) ) - --env.info( 'onEvent EventObject.Event = ' .. tostring(EventObject.Event) ) - if event.id == EventObject.Event then - if self == EventObject.Self then - if event.initiator and event.initiator:isExist() then - event.IniUnitName = event.initiator:getName() - end - if event.target and event.target:isExist() then - event.TgtUnitName = event.target:getName() - end - --self:T( { BaseEventCodes[event.id], event } ) - --EventObject.EventFunction( self, event ) - end - end - end - end - end -end - ---- Set a state or property of the Object given a Key and a Value. --- Note that if the Object is destroyed, nillified or garbage collected, then the Values and Keys will also be gone. --- @param #BASE self --- @param Object The object that will hold the Value set by the Key. --- @param Key The key that is used as a reference of the value. Note that the key can be a #string, but it can also be any other type! --- @param Value The value to is stored in the object. --- @return The Value set. --- @return #nil The Key was not found and thus the Value could not be retrieved. -function BASE:SetState( Object, Key, Value ) - - local ClassNameAndID = Object:GetClassNameAndID() - - self.States[ClassNameAndID] = self.States[ClassNameAndID] or {} - self.States[ClassNameAndID][Key] = Value - self:T2( { ClassNameAndID, Key, Value } ) - - return self.States[ClassNameAndID][Key] -end - - ---- Get a Value given a Key from the Object. --- Note that if the Object is destroyed, nillified or garbage collected, then the Values and Keys will also be gone. --- @param #BASE self --- @param Object The object that holds the Value set by the Key. --- @param Key The key that is used to retrieve the value. Note that the key can be a #string, but it can also be any other type! --- @param Value The value to is stored in the Object. --- @return The Value retrieved. -function BASE:GetState( Object, Key ) - - local ClassNameAndID = Object:GetClassNameAndID() - - if self.States[ClassNameAndID] then - local Value = self.States[ClassNameAndID][Key] or false - self:T2( { ClassNameAndID, Key, Value } ) - return Value - end - - return nil -end - -function BASE:ClearState( Object, StateName ) - - local ClassNameAndID = Object:GetClassNameAndID() - if self.States[ClassNameAndID] then - self.States[ClassNameAndID][StateName] = nil - end -end - --- Trace section - --- Log a trace (only shown when trace is on) --- TODO: Make trace function using variable parameters. - ---- Set trace on or off --- Note that when trace is off, no debug statement is performed, increasing performance! --- When Moose is loaded statically, (as one file), tracing is switched off by default. --- So tracing must be switched on manually in your mission if you are using Moose statically. --- When moose is loading dynamically (for moose class development), tracing is switched on by default. --- @param #BASE self --- @param #boolean TraceOnOff Switch the tracing on or off. --- @usage --- -- Switch the tracing On --- BASE:TraceOnOff( true ) --- --- -- Switch the tracing Off --- BASE:TraceOnOff( false ) -function BASE:TraceOnOff( TraceOnOff ) - _TraceOnOff = TraceOnOff -end - - ---- Enquires if tracing is on (for the class). --- @param #BASE self --- @return #boolean -function BASE:IsTrace() - - if debug and ( _TraceAll == true ) or ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - return true - else - return false - end -end - ---- Set trace level --- @param #BASE self --- @param #number Level -function BASE:TraceLevel( Level ) - _TraceLevel = Level - self:E( "Tracing level " .. Level ) -end - ---- Trace all methods in MOOSE --- @param #BASE self --- @param #boolean TraceAll true = trace all methods in MOOSE. -function BASE:TraceAll( TraceAll ) - - _TraceAll = TraceAll - - if _TraceAll then - self:E( "Tracing all methods in MOOSE " ) - else - self:E( "Switched off tracing all methods in MOOSE" ) - end -end - ---- Set tracing for a class --- @param #BASE self --- @param #string Class -function BASE:TraceClass( Class ) - _TraceClass[Class] = true - _TraceClassMethod[Class] = {} - self:E( "Tracing class " .. Class ) -end - ---- Set tracing for a specific method of class --- @param #BASE self --- @param #string Class --- @param #string Method -function BASE:TraceClassMethod( Class, Method ) - if not _TraceClassMethod[Class] then - _TraceClassMethod[Class] = {} - _TraceClassMethod[Class].Method = {} - end - _TraceClassMethod[Class].Method[Method] = true - self:E( "Tracing method " .. Method .. " of class " .. Class ) -end - ---- Trace a function call. This function is private. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:_F( Arguments, DebugInfoCurrentParam, DebugInfoFromParam ) - - if debug and ( _TraceAll == true ) or ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - - local DebugInfoCurrent = DebugInfoCurrentParam and DebugInfoCurrentParam or debug.getinfo( 2, "nl" ) - local DebugInfoFrom = DebugInfoFromParam and DebugInfoFromParam or debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - if _TraceAll == true or _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then - local LineCurrent = 0 - if DebugInfoCurrent.currentline then - LineCurrent = DebugInfoCurrent.currentline - end - local LineFrom = 0 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "F", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) - end - end -end - ---- Trace a function call. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F( Arguments ) - - if debug and _TraceOnOff then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - if _TraceLevel >= 1 then - self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) - end - end -end - - ---- Trace a function call level 2. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F2( Arguments ) - - if debug and _TraceOnOff then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - if _TraceLevel >= 2 then - self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) - end - end -end - ---- Trace a function call level 3. Must be at the beginning of the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:F3( Arguments ) - - if debug and _TraceOnOff then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - if _TraceLevel >= 3 then - self:_F( Arguments, DebugInfoCurrent, DebugInfoFrom ) - end - end -end - ---- Trace a function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:_T( Arguments, DebugInfoCurrentParam, DebugInfoFromParam ) - - if debug and ( _TraceAll == true ) or ( _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName] ) then - - local DebugInfoCurrent = DebugInfoCurrentParam and DebugInfoCurrentParam or debug.getinfo( 2, "nl" ) - local DebugInfoFrom = DebugInfoFromParam and DebugInfoFromParam or debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - if _TraceAll == true or _TraceClass[self.ClassName] or _TraceClassMethod[self.ClassName].Method[Function] then - local LineCurrent = 0 - if DebugInfoCurrent.currentline then - LineCurrent = DebugInfoCurrent.currentline - end - local LineFrom = 0 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s" , LineCurrent, LineFrom, "T", self.ClassName, self.ClassID, routines.utils.oneLineSerialize( Arguments ) ) ) - end - end -end - ---- Trace a function logic level 1. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T( Arguments ) - - if debug and _TraceOnOff then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - if _TraceLevel >= 1 then - self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) - end - end -end - - ---- Trace a function logic level 2. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T2( Arguments ) - - if debug and _TraceOnOff then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - if _TraceLevel >= 2 then - self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) - end - end -end - ---- Trace a function logic level 3. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:T3( Arguments ) - - if debug and _TraceOnOff then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - if _TraceLevel >= 3 then - self:_T( Arguments, DebugInfoCurrent, DebugInfoFrom ) - end - end -end - ---- Log an exception which will be traced always. Can be anywhere within the function logic. --- @param #BASE self --- @param Arguments A #table or any field. -function BASE:E( Arguments ) - - if debug then - local DebugInfoCurrent = debug.getinfo( 2, "nl" ) - local DebugInfoFrom = debug.getinfo( 3, "l" ) - - local Function = "function" - if DebugInfoCurrent.name then - Function = DebugInfoCurrent.name - end - - local LineCurrent = DebugInfoCurrent.currentline - local LineFrom = -1 - if DebugInfoFrom then - LineFrom = DebugInfoFrom.currentline - end - - env.info( string.format( "%6d(%6d)/%1s:%20s%05d.%s(%s)" , LineCurrent, LineFrom, "E", self.ClassName, self.ClassID, Function, routines.utils.oneLineSerialize( Arguments ) ) ) - end - -end - - - ---- **Core** - SCHEDULER prepares and handles the **execution of functions over scheduled time (intervals)**. --- --- ![Banner Image](..\Presentations\SCHEDULER\Dia1.JPG) --- --- === --- --- # 1) @{Scheduler#SCHEDULER} class, extends @{Base#BASE} --- --- The @{Scheduler#SCHEDULER} class creates schedule. --- --- ## 1.1) SCHEDULER constructor --- --- The SCHEDULER class is quite easy to use, but note that the New constructor has variable parameters: --- --- * @{Scheduler#SCHEDULER.New}( nil ): Setup a new SCHEDULER object, which is persistently executed after garbage collection. --- * @{Scheduler#SCHEDULER.New}( Object ): Setup a new SCHEDULER object, which is linked to the Object. When the Object is nillified or destroyed, the SCHEDULER object will also be destroyed and stopped after garbage collection. --- * @{Scheduler#SCHEDULER.New}( nil, Function, FunctionArguments, Start, ... ): Setup a new persistent SCHEDULER object, and start a new schedule for the Function with the defined FunctionArguments according the Start and sequent parameters. --- * @{Scheduler#SCHEDULER.New}( Object, Function, FunctionArguments, Start, ... ): Setup a new SCHEDULER object, linked to Object, and start a new schedule for the Function with the defined FunctionArguments according the Start and sequent parameters. --- --- ## 1.2) SCHEDULER timer stopping and (re-)starting. --- --- The SCHEDULER can be stopped and restarted with the following methods: --- --- * @{Scheduler#SCHEDULER.Start}(): (Re-)Start the schedules within the SCHEDULER object. If a CallID is provided to :Start(), only the schedule referenced by CallID will be (re-)started. --- * @{Scheduler#SCHEDULER.Stop}(): Stop the schedules within the SCHEDULER object. If a CallID is provided to :Stop(), then only the schedule referenced by CallID will be stopped. --- --- ## 1.3) Create a new schedule --- --- With @{Scheduler#SCHEDULER.Schedule}() a new time event can be scheduled. This function is used by the :New() constructor when a new schedule is planned. --- --- === --- --- ### Contributions: --- --- * FlightControl : Concept & Testing --- --- ### Authors: --- --- * FlightControl : Design & Programming --- --- ### Test Missions: --- --- * SCH - Scheduler --- --- === --- --- @module Scheduler - - ---- The SCHEDULER class --- @type SCHEDULER --- @field #number ScheduleID the ID of the scheduler. --- @extends Core.Base#BASE -SCHEDULER = { - ClassName = "SCHEDULER", - Schedules = {}, -} - ---- SCHEDULER constructor. --- @param #SCHEDULER self --- @param #table SchedulerObject Specified for which Moose object the timer is setup. If a value of nil is provided, a scheduler will be setup without an object reference. --- @param #function SchedulerFunction The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in SchedulerArguments. --- @param #table SchedulerArguments Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }. --- @param #number Start Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called. --- @param #number Repeat Specifies the interval in seconds when the scheduler will call the event function. --- @param #number RandomizeFactor Specifies a randomization factor between 0 and 1 to randomize the Repeat. --- @param #number Stop Specifies the amount of seconds when the scheduler will be stopped. --- @return #SCHEDULER self. --- @return #number The ScheduleID of the planned schedule. -function SCHEDULER:New( SchedulerObject, SchedulerFunction, SchedulerArguments, Start, Repeat, RandomizeFactor, Stop ) - local self = BASE:Inherit( self, BASE:New() ) - self:F2( { Start, Repeat, RandomizeFactor, Stop } ) - - local ScheduleID = nil - - self.MasterObject = SchedulerObject - - if SchedulerFunction then - ScheduleID = self:Schedule( SchedulerObject, SchedulerFunction, SchedulerArguments, Start, Repeat, RandomizeFactor, Stop ) - end - - return self, ScheduleID -end - ---function SCHEDULER:_Destructor() --- --self:E("_Destructor") --- --- _SCHEDULEDISPATCHER:RemoveSchedule( self.CallID ) ---end - ---- Schedule a new time event. Note that the schedule will only take place if the scheduler is *started*. Even for a single schedule event, the scheduler needs to be started also. --- @param #SCHEDULER self --- @param #table SchedulerObject Specified for which Moose object the timer is setup. If a value of nil is provided, a scheduler will be setup without an object reference. --- @param #function SchedulerFunction The event function to be called when a timer event occurs. The event function needs to accept the parameters specified in SchedulerArguments. --- @param #table SchedulerArguments Optional arguments that can be given as part of scheduler. The arguments need to be given as a table { param1, param 2, ... }. --- @param #number Start Specifies the amount of seconds that will be waited before the scheduling is started, and the event function is called. --- @param #number Repeat Specifies the interval in seconds when the scheduler will call the event function. --- @param #number RandomizeFactor Specifies a randomization factor between 0 and 1 to randomize the Repeat. --- @param #number Stop Specifies the amount of seconds when the scheduler will be stopped. --- @return #number The ScheduleID of the planned schedule. -function SCHEDULER:Schedule( SchedulerObject, SchedulerFunction, SchedulerArguments, Start, Repeat, RandomizeFactor, Stop ) - self:F2( { Start, Repeat, RandomizeFactor, Stop } ) - self:T3( { SchedulerArguments } ) - - local ObjectName = "-" - if SchedulerObject and SchedulerObject.ClassName and SchedulerObject.ClassID then - ObjectName = SchedulerObject.ClassName .. SchedulerObject.ClassID - end - self:F3( { "Schedule :", ObjectName, tostring( SchedulerObject ), Start, Repeat, RandomizeFactor, Stop } ) - self.SchedulerObject = SchedulerObject - - local ScheduleID = _SCHEDULEDISPATCHER:AddSchedule( - self, - SchedulerFunction, - SchedulerArguments, - Start, - Repeat, - RandomizeFactor, - Stop - ) - - self.Schedules[#self.Schedules+1] = ScheduleID - - return ScheduleID -end - ---- (Re-)Starts the schedules or a specific schedule if a valid ScheduleID is provided. --- @param #SCHEDULER self --- @param #number ScheduleID (optional) The ScheduleID of the planned (repeating) schedule. -function SCHEDULER:Start( ScheduleID ) - self:F3( { ScheduleID } ) - - _SCHEDULEDISPATCHER:Start( self, ScheduleID ) -end - ---- Stops the schedules or a specific schedule if a valid ScheduleID is provided. --- @param #SCHEDULER self --- @param #number ScheduleID (optional) The ScheduleID of the planned (repeating) schedule. -function SCHEDULER:Stop( ScheduleID ) - self:F3( { ScheduleID } ) - - _SCHEDULEDISPATCHER:Stop( self, ScheduleID ) -end - ---- Removes a specific schedule if a valid ScheduleID is provided. --- @param #SCHEDULER self --- @param #number ScheduleID (optional) The ScheduleID of the planned (repeating) schedule. -function SCHEDULER:Remove( ScheduleID ) - self:F3( { ScheduleID } ) - - _SCHEDULEDISPATCHER:Remove( self, ScheduleID ) -end - ---- Clears all pending schedules. --- @param #SCHEDULER self -function SCHEDULER:Clear() - self:F3( ) - - _SCHEDULEDISPATCHER:Clear( self ) -end - - - - - - - - - - - - - - ---- This module defines the SCHEDULEDISPATCHER class, which is used by a central object called _SCHEDULEDISPATCHER. --- --- === --- --- Takes care of the creation and dispatching of scheduled functions for SCHEDULER objects. --- --- This class is tricky and needs some thorought explanation. --- SCHEDULE classes are used to schedule functions for objects, or as persistent objects. --- The SCHEDULEDISPATCHER class ensures that: --- --- - Scheduled functions are planned according the SCHEDULER object parameters. --- - Scheduled functions are repeated when requested, according the SCHEDULER object parameters. --- - Scheduled functions are automatically removed when the schedule is finished, according the SCHEDULER object parameters. --- --- The SCHEDULEDISPATCHER class will manage SCHEDULER object in memory during garbage collection: --- - When a SCHEDULER object is not attached to another object (that is, it's first :Schedule() parameter is nil), then the SCHEDULER --- object is _persistent_ within memory. --- - When a SCHEDULER object *is* attached to another object, then the SCHEDULER object is _not persistent_ within memory after a garbage collection! --- The none persistency of SCHEDULERS attached to objects is required to allow SCHEDULER objects to be garbage collectged, when the parent object is also desroyed or nillified and garbage collected. --- Even when there are pending timer scheduled functions to be executed for the SCHEDULER object, --- these will not be executed anymore when the SCHEDULER object has been destroyed. --- --- The SCHEDULEDISPATCHER allows multiple scheduled functions to be planned and executed for one SCHEDULER object. --- The SCHEDULER object therefore keeps a table of "CallID's", which are returned after each planning of a new scheduled function by the SCHEDULEDISPATCHER. --- The SCHEDULER object plans new scheduled functions through the @{Scheduler#SCHEDULER.Schedule}() method. --- The Schedule() method returns the CallID that is the reference ID for each planned schedule. --- --- === --- --- === --- --- ### Contributions: - --- ### Authors: FlightControl : Design & Programming --- --- @module ScheduleDispatcher - ---- The SCHEDULEDISPATCHER structure --- @type SCHEDULEDISPATCHER -SCHEDULEDISPATCHER = { - ClassName = "SCHEDULEDISPATCHER", - CallID = 0, -} - -function SCHEDULEDISPATCHER:New() - local self = BASE:Inherit( self, BASE:New() ) - self:F3() - return self -end - ---- Add a Schedule to the ScheduleDispatcher. --- The development of this method was really tidy. --- It is constructed as such that a garbage collection is executed on the weak tables, when the Scheduler is nillified. --- Nothing of this code should be modified without testing it thoroughly. --- @param #SCHEDULEDISPATCHER self --- @param Core.Scheduler#SCHEDULER Scheduler -function SCHEDULEDISPATCHER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Start, Repeat, Randomize, Stop ) - self:F2( { Scheduler, ScheduleFunction, ScheduleArguments, Start, Repeat, Randomize, Stop } ) - - self.CallID = self.CallID + 1 - - -- Initialize the ObjectSchedulers array, which is a weakly coupled table. - -- If the object used as the key is nil, then the garbage collector will remove the item from the Functions array. - self.PersistentSchedulers = self.PersistentSchedulers or {} - - -- Initialize the ObjectSchedulers array, which is a weakly coupled table. - -- If the object used as the key is nil, then the garbage collector will remove the item from the Functions array. - self.ObjectSchedulers = self.ObjectSchedulers or setmetatable( {}, { __mode = "v" } ) -- or {} - - if Scheduler.MasterObject then - self.ObjectSchedulers[self.CallID] = Scheduler - self:F3( { CallID = self.CallID, ObjectScheduler = tostring(self.ObjectSchedulers[self.CallID]), MasterObject = tostring(Scheduler.MasterObject) } ) - else - self.PersistentSchedulers[self.CallID] = Scheduler - self:F3( { CallID = self.CallID, PersistentScheduler = self.PersistentSchedulers[self.CallID] } ) - end - - self.Schedule = self.Schedule or setmetatable( {}, { __mode = "k" } ) - self.Schedule[Scheduler] = self.Schedule[Scheduler] or {} - self.Schedule[Scheduler][self.CallID] = {} - self.Schedule[Scheduler][self.CallID].Function = ScheduleFunction - self.Schedule[Scheduler][self.CallID].Arguments = ScheduleArguments - self.Schedule[Scheduler][self.CallID].StartTime = timer.getTime() + ( Start or 0 ) - self.Schedule[Scheduler][self.CallID].Start = Start + .1 - self.Schedule[Scheduler][self.CallID].Repeat = Repeat - self.Schedule[Scheduler][self.CallID].Randomize = Randomize - self.Schedule[Scheduler][self.CallID].Stop = Stop - - self:T3( self.Schedule[Scheduler][self.CallID] ) - - self.Schedule[Scheduler][self.CallID].CallHandler = function( CallID ) - self:F2( CallID ) - - local ErrorHandler = function( errmsg ) - env.info( "Error in timer function: " .. errmsg ) - if debug ~= nil then - env.info( debug.traceback() ) - end - return errmsg - end - - local Scheduler = self.ObjectSchedulers[CallID] - if not Scheduler then - Scheduler = self.PersistentSchedulers[CallID] - end - - self:T3( { Scheduler = Scheduler } ) - - if Scheduler then - - local Schedule = self.Schedule[Scheduler][CallID] - - self:T3( { Schedule = Schedule } ) - - local ScheduleObject = Scheduler.SchedulerObject - --local ScheduleObjectName = Scheduler.SchedulerObject:GetNameAndClassID() - local ScheduleFunction = Schedule.Function - local ScheduleArguments = Schedule.Arguments - local Start = Schedule.Start - local Repeat = Schedule.Repeat or 0 - local Randomize = Schedule.Randomize or 0 - local Stop = Schedule.Stop or 0 - local ScheduleID = Schedule.ScheduleID - - local Status, Result - if ScheduleObject then - local function Timer() - return ScheduleFunction( ScheduleObject, unpack( ScheduleArguments ) ) - end - Status, Result = xpcall( Timer, ErrorHandler ) - else - local function Timer() - return ScheduleFunction( unpack( ScheduleArguments ) ) - end - Status, Result = xpcall( Timer, ErrorHandler ) - end - - local CurrentTime = timer.getTime() - local StartTime = CurrentTime + Start - - if Status and (( Result == nil ) or ( Result and Result ~= false ) ) then - if Repeat ~= 0 and ( Stop == 0 ) or ( Stop ~= 0 and CurrentTime <= StartTime + Stop ) then - local ScheduleTime = - CurrentTime + - Repeat + - math.random( - - ( Randomize * Repeat / 2 ), - ( Randomize * Repeat / 2 ) - ) + - 0.01 - self:T3( { Repeat = CallID, CurrentTime, ScheduleTime, ScheduleArguments } ) - return ScheduleTime -- returns the next time the function needs to be called. - else - self:Stop( Scheduler, CallID ) - end - else - self:Stop( Scheduler, CallID ) - end - else - self:E( "Scheduled obscolete call for CallID: " .. CallID ) - end - - return nil - end - - self:Start( Scheduler, self.CallID ) - - return self.CallID -end - -function SCHEDULEDISPATCHER:RemoveSchedule( Scheduler, CallID ) - self:F2( { Remove = CallID, Scheduler = Scheduler } ) - - if CallID then - self:Stop( Scheduler, CallID ) - self.Schedule[Scheduler][CallID] = nil - end -end - -function SCHEDULEDISPATCHER:Start( Scheduler, CallID ) - self:F2( { Start = CallID, Scheduler = Scheduler } ) - - if CallID then - local Schedule = self.Schedule[Scheduler] - -- Only start when there is no ScheduleID defined! - -- This prevents to "Start" the scheduler twice with the same CallID... - if not Schedule[CallID].ScheduleID then - Schedule[CallID].ScheduleID = timer.scheduleFunction( - Schedule[CallID].CallHandler, - CallID, - timer.getTime() + Schedule[CallID].Start - ) - end - else - for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do - self:Start( Scheduler, CallID ) -- Recursive - end - end -end - -function SCHEDULEDISPATCHER:Stop( Scheduler, CallID ) - self:F2( { Stop = CallID, Scheduler = Scheduler } ) - - if CallID then - local Schedule = self.Schedule[Scheduler] - -- Only stop when there is a ScheduleID defined for the CallID. - -- So, when the scheduler was stopped before, do nothing. - if Schedule[CallID].ScheduleID then - timer.removeFunction( Schedule[CallID].ScheduleID ) - Schedule[CallID].ScheduleID = nil - end - else - for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do - self:Stop( Scheduler, CallID ) -- Recursive - end - end -end - -function SCHEDULEDISPATCHER:Clear( Scheduler ) - self:F2( { Scheduler = Scheduler } ) - - for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do - self:Stop( Scheduler, CallID ) -- Recursive - end -end - - - ---- **Core** - EVENT models DCS **event dispatching** using a **publish-subscribe** model. --- --- ![Banner Image](..\Presentations\EVENT\Dia1.JPG) --- --- === --- --- # 1) Event Handling Overview --- --- ![Objects](..\Presentations\EVENT\Dia2.JPG) --- --- Within a running mission, various DCS events occur. Units are dynamically created, crash, die, shoot stuff, get hit etc. --- This module provides a mechanism to dispatch those events occuring within your running mission, to the different objects orchestrating your mission. --- --- ![Objects](..\Presentations\EVENT\Dia3.JPG) --- --- Objects can subscribe to different events. The Event dispatcher will publish the received DCS events to the subscribed MOOSE objects, in a specified order. --- In this way, the subscribed MOOSE objects are kept in sync with your evolving running mission. --- --- ## 1.1) Event Dispatching --- --- ![Objects](..\Presentations\EVENT\Dia4.JPG) --- --- The _EVENTDISPATCHER object is automatically created within MOOSE, --- and handles the dispatching of DCS Events occurring --- in the simulator to the subscribed objects --- in the correct processing order. --- --- ![Objects](..\Presentations\EVENT\Dia5.JPG) --- --- There are 5 levels of kind of objects that the _EVENTDISPATCHER services: --- --- * _DATABASE object: The core of the MOOSE objects. Any object that is created, deleted or updated, is done in this database. --- * SET_ derived classes: Subsets of the _DATABASE object. These subsets are updated by the _EVENTDISPATCHER as the second priority. --- * UNIT objects: UNIT objects can subscribe to DCS events. Each DCS event will be directly published to teh subscribed UNIT object. --- * GROUP objects: GROUP objects can subscribe to DCS events. Each DCS event will be directly published to the subscribed GROUP object. --- * Any other object: Various other objects can subscribe to DCS events. Each DCS event triggered will be published to each subscribed object. --- --- ![Objects](..\Presentations\EVENT\Dia6.JPG) --- --- For most DCS events, the above order of updating will be followed. --- --- ![Objects](..\Presentations\EVENT\Dia7.JPG) --- --- But for some DCS events, the publishing order is reversed. This is due to the fact that objects need to be **erased** instead of added. --- --- ## 1.2) Event Handling --- --- ![Objects](..\Presentations\EVENT\Dia8.JPG) --- --- The actual event subscribing and handling is not facilitated through the _EVENTDISPATCHER, but it is done through the @{BASE} class, @{UNIT} class and @{GROUP} class. --- The _EVENTDISPATCHER is a component that is quietly working in the background of MOOSE. --- --- ![Objects](..\Presentations\EVENT\Dia9.JPG) --- --- The BASE class provides methods to catch DCS Events. These are events that are triggered from within the DCS simulator, --- and handled through lua scripting. MOOSE provides an encapsulation to handle these events more efficiently. --- --- ### 1.2.1 Subscribe / Unsubscribe to DCS Events --- --- At first, the mission designer will need to **Subscribe** to a specific DCS event for the class. --- So, when the DCS event occurs, the class will be notified of that event. --- There are two functions which you use to subscribe to or unsubscribe from an event. --- --- * @{Base#BASE.HandleEvent}(): Subscribe to a DCS Event. --- * @{Base#BASE.UnHandleEvent}(): Unsubscribe from a DCS Event. --- --- Note that for a UNIT, the event will be handled **for that UNIT only**! --- Note that for a GROUP, the event will be handled **for all the UNITs in that GROUP only**! --- --- For all objects of other classes, the subscribed events will be handled for **all UNITs within the Mission**! --- So if a UNIT within the mission has the subscribed event for that object, --- then the object event handler will receive the event for that UNIT! --- --- ### 1.3.2 Event Handling of DCS Events --- --- Once the class is subscribed to the event, an **Event Handling** method on the object or class needs to be written that will be called --- when the DCS event occurs. The Event Handling method receives an @{Event#EVENTDATA} structure, which contains a lot of information --- about the event that occurred. --- --- Find below an example of the prototype how to write an event handling function for two units: --- --- local Tank1 = UNIT:FindByName( "Tank A" ) --- local Tank2 = UNIT:FindByName( "Tank B" ) --- --- -- Here we subscribe to the Dead events. So, if one of these tanks dies, the Tank1 or Tank2 objects will be notified. --- Tank1:HandleEvent( EVENTS.Dead ) --- Tank2:HandleEvent( EVENTS.Dead ) --- --- --- This function is an Event Handling function that will be called when Tank1 is Dead. --- -- @param Wrapper.Unit#UNIT self --- -- @param Core.Event#EVENTDATA EventData --- function Tank1:OnEventDead( EventData ) --- --- self:SmokeGreen() --- end --- --- --- This function is an Event Handling function that will be called when Tank2 is Dead. --- -- @param Wrapper.Unit#UNIT self --- -- @param Core.Event#EVENTDATA EventData --- function Tank2:OnEventDead( EventData ) --- --- self:SmokeBlue() --- end --- --- ### 1.3.3 Event Handling methods that are automatically called upon subscribed DCS events --- --- ![Objects](..\Presentations\EVENT\Dia10.JPG) --- --- The following list outlines which EVENTS item in the structure corresponds to which Event Handling method. --- Always ensure that your event handling methods align with the events being subscribed to, or nothing will be executed. --- --- # 2) EVENTS type --- --- The EVENTS structure contains names for all the different DCS events that objects can subscribe to using the --- @{Base#BASE.HandleEvent}() method. --- --- # 3) EVENTDATA type --- --- The @{Event#EVENTDATA} structure contains all the fields that are populated with event information before --- an Event Handler method is being called by the event dispatcher. --- The Event Handler received the EVENTDATA object as a parameter, and can be used to investigate further the different events. --- There are basically 4 main categories of information stored in the EVENTDATA structure: --- --- * Initiator Unit data: Several fields documenting the initiator unit related to the event. --- * Target Unit data: Several fields documenting the target unit related to the event. --- * Weapon data: Certain events populate weapon information. --- * Place data: Certain events populate place information. --- --- --- This function is an Event Handling function that will be called when Tank1 is Dead. --- -- EventData is an EVENTDATA structure. --- -- We use the EventData.IniUnit to smoke the tank Green. --- -- @param Wrapper.Unit#UNIT self --- -- @param Core.Event#EVENTDATA EventData --- function Tank1:OnEventDead( EventData ) --- --- EventData.IniUnit:SmokeGreen() --- end --- --- --- Find below an overview which events populate which information categories: --- --- ![Objects](..\Presentations\EVENT\Dia14.JPG) --- --- **IMPORTANT NOTE:** Some events can involve not just UNIT objects, but also STATIC objects!!! --- In that case the initiator or target unit fields will refer to a STATIC object! --- In case a STATIC object is involved, the documentation indicates which fields will and won't not be populated. --- The fields **IniObjectCategory** and **TgtObjectCategory** contain the indicator which **kind of object is involved** in the event. --- You can use the enumerator **Object.Category.UNIT** and **Object.Category.STATIC** to check on IniObjectCategory and TgtObjectCategory. --- Example code snippet: --- --- if Event.IniObjectCategory == Object.Category.UNIT then --- ... --- end --- if Event.IniObjectCategory == Object.Category.STATIC then --- ... --- end --- --- When a static object is involved in the event, the Group and Player fields won't be populated. --- --- ==== --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- YYYY-MM-DD: CLASS:**NewFunction**( Params ) replaces CLASS:_OldFunction_( Params ) --- YYYY-MM-DD: CLASS:**NewFunction( Params )** added --- --- Hereby the change log: --- --- * 2017-03-07: Added the correct event dispatching in case the event is subscribed by a GROUP. --- --- * 2017-02-07: Did a complete revision of the Event Handing API and underlying mechanisms. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- ### Authors: --- --- * [**FlightControl**](https://forums.eagle.ru/member.php?u=89536): Design & Programming & documentation. --- --- @module Event - - ---- The EVENT structure --- @type EVENT --- @field #EVENT.Events Events --- @extends Core.Base#BASE -EVENT = { - ClassName = "EVENT", - ClassID = 0, -} - ---- The different types of events supported by MOOSE. --- Use this structure to subscribe to events using the @{Base#BASE.HandleEvent}() method. --- @type EVENTS -EVENTS = { - Shot = world.event.S_EVENT_SHOT, - Hit = world.event.S_EVENT_HIT, - Takeoff = world.event.S_EVENT_TAKEOFF, - Land = world.event.S_EVENT_LAND, - Crash = world.event.S_EVENT_CRASH, - Ejection = world.event.S_EVENT_EJECTION, - Refueling = world.event.S_EVENT_REFUELING, - Dead = world.event.S_EVENT_DEAD, - PilotDead = world.event.S_EVENT_PILOT_DEAD, - BaseCaptured = world.event.S_EVENT_BASE_CAPTURED, - MissionStart = world.event.S_EVENT_MISSION_START, - MissionEnd = world.event.S_EVENT_MISSION_END, - TookControl = world.event.S_EVENT_TOOK_CONTROL, - RefuelingStop = world.event.S_EVENT_REFUELING_STOP, - Birth = world.event.S_EVENT_BIRTH, - HumanFailure = world.event.S_EVENT_HUMAN_FAILURE, - EngineStartup = world.event.S_EVENT_ENGINE_STARTUP, - EngineShutdown = world.event.S_EVENT_ENGINE_SHUTDOWN, - PlayerEnterUnit = world.event.S_EVENT_PLAYER_ENTER_UNIT, - PlayerLeaveUnit = world.event.S_EVENT_PLAYER_LEAVE_UNIT, - PlayerComment = world.event.S_EVENT_PLAYER_COMMENT, - ShootingStart = world.event.S_EVENT_SHOOTING_START, - ShootingEnd = world.event.S_EVENT_SHOOTING_END, -} - ---- The Event structure --- Note that at the beginning of each field description, there is an indication which field will be populated depending on the object type involved in the Event: --- --- * A (Object.Category.)UNIT : A UNIT object type is involved in the Event. --- * A (Object.Category.)STATIC : A STATIC object type is involved in the Event.µ --- --- @type EVENTDATA --- @field #number id The identifier of the event. --- --- @field Dcs.DCSUnit#Unit initiator (UNIT/STATIC/SCENERY) The initiating @{Dcs.DCSUnit#Unit} or @{Dcs.DCSStaticObject#StaticObject}. --- @field Dcs.DCSObject#Object.Category IniObjectCategory (UNIT/STATIC/SCENERY) The initiator object category ( Object.Category.UNIT or Object.Category.STATIC ). --- @field Dcs.DCSUnit#Unit IniDCSUnit (UNIT/STATIC) The initiating @{DCSUnit#Unit} or @{DCSStaticObject#StaticObject}. --- @field #string IniDCSUnitName (UNIT/STATIC) The initiating Unit name. --- @field Wrapper.Unit#UNIT IniUnit (UNIT/STATIC) The initiating MOOSE wrapper @{Unit#UNIT} of the initiator Unit object. --- @field #string IniUnitName (UNIT/STATIC) The initiating UNIT name (same as IniDCSUnitName). --- @field Dcs.DCSGroup#Group IniDCSGroup (UNIT) The initiating {DCSGroup#Group}. --- @field #string IniDCSGroupName (UNIT) The initiating Group name. --- @field Wrapper.Group#GROUP IniGroup (UNIT) The initiating MOOSE wrapper @{Group#GROUP} of the initiator Group object. --- @field #string IniGroupName UNIT) The initiating GROUP name (same as IniDCSGroupName). --- @field #string IniPlayerName (UNIT) The name of the initiating player in case the Unit is a client or player slot. --- @field Dcs.DCScoalition#coalition.side IniCoalition (UNIT) The coalition of the initiator. --- @field Dcs.DCSUnit#Unit.Category IniCategory (UNIT) The category of the initiator. --- @field #string IniTypeName (UNIT) The type name of the initiator. --- --- @field Dcs.DCSUnit#Unit target (UNIT/STATIC) The target @{Dcs.DCSUnit#Unit} or @{DCSStaticObject#StaticObject}. --- @field Dcs.DCSObject#Object.Category TgtObjectCategory (UNIT/STATIC) The target object category ( Object.Category.UNIT or Object.Category.STATIC ). --- @field Dcs.DCSUnit#Unit TgtDCSUnit (UNIT/STATIC) The target @{DCSUnit#Unit} or @{DCSStaticObject#StaticObject}. --- @field #string TgtDCSUnitName (UNIT/STATIC) The target Unit name. --- @field Wrapper.Unit#UNIT TgtUnit (UNIT/STATIC) The target MOOSE wrapper @{Unit#UNIT} of the target Unit object. --- @field #string TgtUnitName (UNIT/STATIC) The target UNIT name (same as TgtDCSUnitName). --- @field Dcs.DCSGroup#Group TgtDCSGroup (UNIT) The target {DCSGroup#Group}. --- @field #string TgtDCSGroupName (UNIT) The target Group name. --- @field Wrapper.Group#GROUP TgtGroup (UNIT) The target MOOSE wrapper @{Group#GROUP} of the target Group object. --- @field #string TgtGroupName (UNIT) The target GROUP name (same as TgtDCSGroupName). --- @field #string TgtPlayerName (UNIT) The name of the target player in case the Unit is a client or player slot. --- @field Dcs.DCScoalition#coalition.side TgtCoalition (UNIT) The coalition of the target. --- @field Dcs.DCSUnit#Unit.Category TgtCategory (UNIT) The category of the target. --- @field #string TgtTypeName (UNIT) The type name of the target. --- --- @field weapon The weapon used during the event. --- @field Weapon --- @field WeaponName --- @field WeaponTgtDCSUnit - - -local _EVENTMETA = { - [world.event.S_EVENT_SHOT] = { - Order = 1, - Event = "OnEventShot", - Text = "S_EVENT_SHOT" - }, - [world.event.S_EVENT_HIT] = { - Order = 1, - Event = "OnEventHit", - Text = "S_EVENT_HIT" - }, - [world.event.S_EVENT_TAKEOFF] = { - Order = 1, - Event = "OnEventTakeoff", - Text = "S_EVENT_TAKEOFF" - }, - [world.event.S_EVENT_LAND] = { - Order = 1, - Event = "OnEventLand", - Text = "S_EVENT_LAND" - }, - [world.event.S_EVENT_CRASH] = { - Order = -1, - Event = "OnEventCrash", - Text = "S_EVENT_CRASH" - }, - [world.event.S_EVENT_EJECTION] = { - Order = 1, - Event = "OnEventEjection", - Text = "S_EVENT_EJECTION" - }, - [world.event.S_EVENT_REFUELING] = { - Order = 1, - Event = "OnEventRefueling", - Text = "S_EVENT_REFUELING" - }, - [world.event.S_EVENT_DEAD] = { - Order = -1, - Event = "OnEventDead", - Text = "S_EVENT_DEAD" - }, - [world.event.S_EVENT_PILOT_DEAD] = { - Order = 1, - Event = "OnEventPilotDead", - Text = "S_EVENT_PILOT_DEAD" - }, - [world.event.S_EVENT_BASE_CAPTURED] = { - Order = 1, - Event = "OnEventBaseCaptured", - Text = "S_EVENT_BASE_CAPTURED" - }, - [world.event.S_EVENT_MISSION_START] = { - Order = 1, - Event = "OnEventMissionStart", - Text = "S_EVENT_MISSION_START" - }, - [world.event.S_EVENT_MISSION_END] = { - Order = 1, - Event = "OnEventMissionEnd", - Text = "S_EVENT_MISSION_END" - }, - [world.event.S_EVENT_TOOK_CONTROL] = { - Order = 1, - Event = "OnEventTookControl", - Text = "S_EVENT_TOOK_CONTROL" - }, - [world.event.S_EVENT_REFUELING_STOP] = { - Order = 1, - Event = "OnEventRefuelingStop", - Text = "S_EVENT_REFUELING_STOP" - }, - [world.event.S_EVENT_BIRTH] = { - Order = 1, - Event = "OnEventBirth", - Text = "S_EVENT_BIRTH" - }, - [world.event.S_EVENT_HUMAN_FAILURE] = { - Order = 1, - Event = "OnEventHumanFailure", - Text = "S_EVENT_HUMAN_FAILURE" - }, - [world.event.S_EVENT_ENGINE_STARTUP] = { - Order = 1, - Event = "OnEventEngineStartup", - Text = "S_EVENT_ENGINE_STARTUP" - }, - [world.event.S_EVENT_ENGINE_SHUTDOWN] = { - Order = 1, - Event = "OnEventEngineShutdown", - Text = "S_EVENT_ENGINE_SHUTDOWN" - }, - [world.event.S_EVENT_PLAYER_ENTER_UNIT] = { - Order = 1, - Event = "OnEventPlayerEnterUnit", - Text = "S_EVENT_PLAYER_ENTER_UNIT" - }, - [world.event.S_EVENT_PLAYER_LEAVE_UNIT] = { - Order = -1, - Event = "OnEventPlayerLeaveUnit", - Text = "S_EVENT_PLAYER_LEAVE_UNIT" - }, - [world.event.S_EVENT_PLAYER_COMMENT] = { - Order = 1, - Event = "OnEventPlayerComment", - Text = "S_EVENT_PLAYER_COMMENT" - }, - [world.event.S_EVENT_SHOOTING_START] = { - Order = 1, - Event = "OnEventShootingStart", - Text = "S_EVENT_SHOOTING_START" - }, - [world.event.S_EVENT_SHOOTING_END] = { - Order = 1, - Event = "OnEventShootingEnd", - Text = "S_EVENT_SHOOTING_END" - }, -} - - ---- The Events structure --- @type EVENT.Events --- @field #number IniUnit - -function EVENT:New() - local self = BASE:Inherit( self, BASE:New() ) - self:F2() - self.EventHandler = world.addEventHandler( self ) - return self -end - -function EVENT:EventText( EventID ) - - local EventText = _EVENTMETA[EventID].Text - - return EventText -end - - ---- Initializes the Events structure for the event --- @param #EVENT self --- @param Dcs.DCSWorld#world.event EventID --- @param Core.Base#BASE EventClass --- @return #EVENT.Events -function EVENT:Init( EventID, EventClass ) - self:F3( { _EVENTMETA[EventID].Text, EventClass } ) - - if not self.Events[EventID] then - -- Create a WEAK table to ensure that the garbage collector is cleaning the event links when the object usage is cleaned. - self.Events[EventID] = setmetatable( {}, { __mode = "k" } ) - end - - -- Each event has a subtable of EventClasses, ordered by EventPriority. - local EventPriority = EventClass:GetEventPriority() - if not self.Events[EventID][EventPriority] then - self.Events[EventID][EventPriority] = setmetatable( {}, { __mode = "k" } ) - end - - if not self.Events[EventID][EventPriority][EventClass] then - self.Events[EventID][EventPriority][EventClass] = setmetatable( {}, { __mode = "v" } ) - end - return self.Events[EventID][EventPriority][EventClass] -end - ---- Removes an Events entry --- @param #EVENT self --- @param Core.Base#BASE EventClass The self instance of the class for which the event is. --- @param Dcs.DCSWorld#world.event EventID --- @return #EVENT.Events -function EVENT:Remove( EventClass, EventID ) - self:F3( { EventClass, _EVENTMETA[EventID].Text } ) - - local EventClass = EventClass - local EventPriority = EventClass:GetEventPriority() - self.Events[EventID][EventPriority][EventClass] = nil -end - ---- Removes an Events entry for a UNIT. --- @param #EVENT self --- @param #string UnitName The name of the UNIT. --- @param Core.Base#BASE EventClass The self instance of the class for which the event is. --- @param Dcs.DCSWorld#world.event EventID --- @return #EVENT.Events -function EVENT:RemoveForUnit( UnitName, EventClass, EventID ) - self:F3( { EventClass, _EVENTMETA[EventID].Text } ) - - local EventClass = EventClass - local EventPriority = EventClass:GetEventPriority() - local Event = self.Events[EventID][EventPriority][EventClass] - Event.EventUnit[UnitName] = nil -end - ---- Removes an Events entry for a GROUP. --- @param #EVENT self --- @param #string GroupName The name of the GROUP. --- @param Core.Base#BASE EventClass The self instance of the class for which the event is. --- @param Dcs.DCSWorld#world.event EventID --- @return #EVENT.Events -function EVENT:RemoveForGroup( GroupName, EventClass, EventID ) - self:F3( { EventClass, _EVENTMETA[EventID].Text } ) - - local EventClass = EventClass - local EventPriority = EventClass:GetEventPriority() - local Event = self.Events[EventID][EventPriority][EventClass] - Event.EventGroup[GroupName] = nil -end - ---- Clears all event subscriptions for a @{Base#BASE} derived object. --- @param #EVENT self --- @param Core.Base#BASE EventObject -function EVENT:RemoveAll( EventObject ) - self:F3( { EventObject:GetClassNameAndID() } ) - - local EventClass = EventObject:GetClassNameAndID() - local EventPriority = EventClass:GetEventPriority() - for EventID, EventData in pairs( self.Events ) do - self.Events[EventID][EventPriority][EventClass] = nil - end -end - - - ---- Create an OnDead event handler for a group --- @param #EVENT self --- @param #table EventTemplate --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param EventClass The instance of the class for which the event is. --- @param #function OnEventFunction --- @return #EVENT -function EVENT:OnEventForTemplate( EventTemplate, EventFunction, EventClass, EventID ) - self:F2( EventTemplate.name ) - - for EventUnitID, EventUnit in pairs( EventTemplate.units ) do - self:OnEventForUnit( EventUnit.name, EventFunction, EventClass, EventID ) - end - return self -end - ---- Set a new listener for an S_EVENT_X event independent from a unit or a weapon. --- @param #EVENT self --- @param #function EventFunction The function to be called when the event occurs for the unit. --- @param Core.Base#BASE EventClass The self instance of the class for which the event is captured. When the event happens, the event process will be called in this class provided. --- @param EventID --- @return #EVENT -function EVENT:OnEventGeneric( EventFunction, EventClass, EventID ) - self:F2( { EventID } ) - - local EventData = self:Init( EventID, EventClass ) - EventData.EventFunction = EventFunction - EventData.EventClass = EventClass - - return self -end - - ---- Set a new listener for an S_EVENT_X event for a UNIT. --- @param #EVENT self --- @param #string UnitName The name of the UNIT. --- @param #function EventFunction The function to be called when the event occurs for the GROUP. --- @param Core.Base#BASE EventClass The self instance of the class for which the event is. --- @param EventID --- @return #EVENT -function EVENT:OnEventForUnit( UnitName, EventFunction, EventClass, EventID ) - self:F2( UnitName ) - - local EventData = self:Init( EventID, EventClass ) - if not EventData.EventUnit then - EventData.EventUnit = {} - end - EventData.EventUnit[UnitName] = {} - EventData.EventUnit[UnitName].EventFunction = EventFunction - EventData.EventUnit[UnitName].EventClass = EventClass - return self -end - ---- Set a new listener for an S_EVENT_X event for a GROUP. --- @param #EVENT self --- @param #string GroupName The name of the GROUP. --- @param #function EventFunction The function to be called when the event occurs for the GROUP. --- @param Core.Base#BASE EventClass The self instance of the class for which the event is. --- @param EventID --- @return #EVENT -function EVENT:OnEventForGroup( GroupName, EventFunction, EventClass, EventID ) - self:F2( GroupName ) - - local Event = self:Init( EventID, EventClass ) - if not Event.EventGroup then - Event.EventGroup = {} - end - Event.EventGroup[GroupName] = {} - Event.EventGroup[GroupName].EventFunction = EventFunction - Event.EventGroup[GroupName].EventClass = EventClass - return self -end - -do -- OnBirth - - --- Create an OnBirth event handler for a group - -- @param #EVENT self - -- @param Wrapper.Group#GROUP EventGroup - -- @param #function EventFunction The function to be called when the event occurs for the unit. - -- @param EventClass The self instance of the class for which the event is. - -- @return #EVENT - function EVENT:OnBirthForTemplate( EventTemplate, EventFunction, EventClass ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventClass, EVENTS.Birth ) - - return self - end - -end - -do -- OnCrash - - --- Create an OnCrash event handler for a group - -- @param #EVENT self - -- @param Wrapper.Group#GROUP EventGroup - -- @param #function EventFunction The function to be called when the event occurs for the unit. - -- @param EventClass The self instance of the class for which the event is. - -- @return #EVENT - function EVENT:OnCrashForTemplate( EventTemplate, EventFunction, EventClass ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventClass, EVENTS.Crash ) - - return self - end - -end - -do -- OnDead - - --- Create an OnDead event handler for a group - -- @param #EVENT self - -- @param Wrapper.Group#GROUP EventGroup - -- @param #function EventFunction The function to be called when the event occurs for the unit. - -- @param EventClass The self instance of the class for which the event is. - -- @return #EVENT - function EVENT:OnDeadForTemplate( EventTemplate, EventFunction, EventClass ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventClass, EVENTS.Dead ) - - return self - end - -end - - -do -- OnLand - --- Create an OnLand event handler for a group - -- @param #EVENT self - -- @param #table EventTemplate - -- @param #function EventFunction The function to be called when the event occurs for the unit. - -- @param EventClass The self instance of the class for which the event is. - -- @return #EVENT - function EVENT:OnLandForTemplate( EventTemplate, EventFunction, EventClass ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventClass, EVENTS.Land ) - - return self - end - -end - -do -- OnTakeOff - --- Create an OnTakeOff event handler for a group - -- @param #EVENT self - -- @param #table EventTemplate - -- @param #function EventFunction The function to be called when the event occurs for the unit. - -- @param EventClass The self instance of the class for which the event is. - -- @return #EVENT - function EVENT:OnTakeOffForTemplate( EventTemplate, EventFunction, EventClass ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventClass, EVENTS.Takeoff ) - - return self - end - -end - -do -- OnEngineShutDown - - --- Create an OnDead event handler for a group - -- @param #EVENT self - -- @param #table EventTemplate - -- @param #function EventFunction The function to be called when the event occurs for the unit. - -- @param EventClass The self instance of the class for which the event is. - -- @return #EVENT - function EVENT:OnEngineShutDownForTemplate( EventTemplate, EventFunction, EventClass ) - self:F2( EventTemplate.name ) - - self:OnEventForTemplate( EventTemplate, EventFunction, EventClass, EVENTS.EngineShutdown ) - - return self - end - -end - - ---- @param #EVENT self --- @param #EVENTDATA Event -function EVENT:onEvent( Event ) - - local ErrorHandler = function( errmsg ) - - env.info( "Error in SCHEDULER function:" .. errmsg ) - if debug ~= nil then - env.info( debug.traceback() ) - end - - return errmsg - end - - self:E( _EVENTMETA[Event.id].Text, Event ) - - if self and self.Events and self.Events[Event.id] then - - - if Event.initiator then - - Event.IniObjectCategory = Event.initiator:getCategory() - - if Event.IniObjectCategory == Object.Category.UNIT then - Event.IniDCSUnit = Event.initiator - Event.IniDCSUnitName = Event.IniDCSUnit:getName() - Event.IniUnitName = Event.IniDCSUnitName - Event.IniDCSGroup = Event.IniDCSUnit:getGroup() - Event.IniUnit = UNIT:FindByName( Event.IniDCSUnitName ) - if not Event.IniUnit then - -- Unit can be a CLIENT. Most likely this will be the case ... - Event.IniUnit = CLIENT:FindByName( Event.IniDCSUnitName, '', true ) - end - Event.IniDCSGroupName = "" - if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then - Event.IniDCSGroupName = Event.IniDCSGroup:getName() - Event.IniGroup = GROUP:FindByName( Event.IniDCSGroupName ) - if Event.IniGroup then - Event.IniGroupName = Event.IniDCSGroupName - end - end - Event.IniPlayerName = Event.IniDCSUnit:getPlayerName() - Event.IniCoalition = Event.IniDCSUnit:getCoalition() - Event.IniTypeName = Event.IniDCSUnit:getTypeName() - Event.IniCategory = Event.IniDCSUnit:getDesc().category - end - - if Event.IniObjectCategory == Object.Category.STATIC then - Event.IniDCSUnit = Event.initiator - Event.IniDCSUnitName = Event.IniDCSUnit:getName() - Event.IniUnitName = Event.IniDCSUnitName - Event.IniUnit = STATIC:FindByName( Event.IniDCSUnitName, false ) - Event.IniCoalition = Event.IniDCSUnit:getCoalition() - Event.IniCategory = Event.IniDCSUnit:getDesc().category - Event.IniTypeName = Event.IniDCSUnit:getTypeName() - end - - if Event.IniObjectCategory == Object.Category.SCENERY then - Event.IniDCSUnit = Event.initiator - Event.IniDCSUnitName = Event.IniDCSUnit:getName() - Event.IniUnitName = Event.IniDCSUnitName - Event.IniUnit = SCENERY:Register( Event.IniDCSUnitName, Event.initiator ) - Event.IniCategory = Event.IniDCSUnit:getDesc().category - Event.IniTypeName = Event.IniDCSUnit:getTypeName() - end - end - - if Event.target then - - Event.TgtObjectCategory = Event.target:getCategory() - - if Event.TgtObjectCategory == Object.Category.UNIT then - Event.TgtDCSUnit = Event.target - Event.TgtDCSGroup = Event.TgtDCSUnit:getGroup() - Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() - Event.TgtUnitName = Event.TgtDCSUnitName - Event.TgtUnit = UNIT:FindByName( Event.TgtDCSUnitName ) - Event.TgtDCSGroupName = "" - if Event.TgtDCSGroup and Event.TgtDCSGroup:isExist() then - Event.TgtDCSGroupName = Event.TgtDCSGroup:getName() - Event.TgtGroup = GROUP:FindByName( Event.TgtDCSGroupName ) - if Event.TgtGroup then - Event.TgtGroupName = Event.TgtDCSGroupName - end - end - Event.TgtPlayerName = Event.TgtDCSUnit:getPlayerName() - Event.TgtCoalition = Event.TgtDCSUnit:getCoalition() - Event.TgtCategory = Event.TgtDCSUnit:getDesc().category - Event.TgtTypeName = Event.TgtDCSUnit:getTypeName() - end - - if Event.TgtObjectCategory == Object.Category.STATIC then - Event.TgtDCSUnit = Event.target - Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() - Event.TgtUnitName = Event.TgtDCSUnitName - Event.TgtUnit = STATIC:FindByName( Event.TgtDCSUnitName ) - Event.TgtCoalition = Event.TgtDCSUnit:getCoalition() - Event.TgtCategory = Event.TgtDCSUnit:getDesc().category - Event.TgtTypeName = Event.TgtDCSUnit:getTypeName() - end - - if Event.TgtObjectCategory == Object.Category.SCENERY then - Event.TgtDCSUnit = Event.target - Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() - Event.TgtUnitName = Event.TgtDCSUnitName - Event.TgtUnit = SCENERY:Register( Event.TgtDCSUnitName, Event.target ) - Event.TgtCategory = Event.TgtDCSUnit:getDesc().category - Event.TgtTypeName = Event.TgtDCSUnit:getTypeName() - end - end - - if Event.weapon then - Event.Weapon = Event.weapon - Event.WeaponName = Event.Weapon:getTypeName() - Event.WeaponUNIT = CLIENT:Find( Event.Weapon, '', true ) -- Sometimes, the weapon is a player unit! - Event.WeaponPlayerName = Event.WeaponUNIT and Event.Weapon:getPlayerName() - Event.WeaponCoalition = Event.WeaponUNIT and Event.Weapon:getCoalition() - Event.WeaponCategory = Event.WeaponUNIT and Event.Weapon:getDesc().category - Event.WeaponTypeName = Event.WeaponUNIT and Event.Weapon:getTypeName() - --Event.WeaponTgtDCSUnit = Event.Weapon:getTarget() - end - - local PriorityOrder = _EVENTMETA[Event.id].Order - local PriorityBegin = PriorityOrder == -1 and 5 or 1 - local PriorityEnd = PriorityOrder == -1 and 1 or 5 - - if Event.IniObjectCategory ~= 3 then - self:E( { _EVENTMETA[Event.id].Text, Event, Event.IniDCSUnitName, Event.TgtDCSUnitName, PriorityOrder } ) - end - - for EventPriority = PriorityBegin, PriorityEnd, PriorityOrder do - - if self.Events[Event.id][EventPriority] then - - -- Okay, we got the event from DCS. Now loop the SORTED self.EventSorted[] table for the received Event.id, and for each EventData registered, check if a function needs to be called. - for EventClass, EventData in pairs( self.Events[Event.id][EventPriority] ) do - - Event.IniGroup = GROUP:FindByName( Event.IniDCSGroupName ) - Event.TgtGroup = GROUP:FindByName( Event.TgtDCSGroupName ) - - -- If the EventData is for a UNIT, the call directly the EventClass EventFunction for that UNIT. - if ( Event.IniDCSUnitName and EventData.EventUnit and EventData.EventUnit[Event.IniDCSUnitName] ) or - ( Event.TgtDCSUnitName and EventData.EventUnit and EventData.EventUnit[Event.TgtDCSUnitName] ) then - - if EventData.EventUnit[Event.IniDCSUnitName] then - - -- First test if a EventFunction is Set, otherwise search for the default function - if EventData.EventUnit[Event.IniDCSUnitName].EventFunction then - - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling EventFunction for UNIT ", EventClass:GetClassNameAndID(), ", Unit ", Event.IniUnitName, EventPriority } ) - end - - local Result, Value = xpcall( - function() - return EventData.EventUnit[Event.IniDCSUnitName].EventFunction( EventClass, Event ) - end, ErrorHandler ) - - else - - -- There is no EventFunction defined, so try to find if a default OnEvent function is defined on the object. - local EventFunction = EventClass[ _EVENTMETA[Event.id].Event ] - if EventFunction and type( EventFunction ) == "function" then - - -- Now call the default event function. - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling " .. _EVENTMETA[Event.id].Event .. " for Class ", EventClass:GetClassNameAndID(), EventPriority } ) - end - - local Result, Value = xpcall( - function() - return EventFunction( EventClass, Event ) - end, ErrorHandler ) - end - end - end - - if EventData.EventUnit[Event.TgtDCSUnitName] then - - -- First test if a EventFunction is Set, otherwise search for the default function - if EventData.EventUnit[Event.TgtDCSUnitName].EventFunction then - - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling EventFunction for UNIT ", EventClass:GetClassNameAndID(), ", Unit ", Event.TgtUnitName, EventPriority } ) - end - - local Result, Value = xpcall( - function() - return EventData.EventUnit[Event.TgtDCSUnitName].EventFunction( EventClass, Event ) - end, ErrorHandler ) - - else - - -- There is no EventFunction defined, so try to find if a default OnEvent function is defined on the object. - local EventFunction = EventClass[ _EVENTMETA[Event.id].Event ] - if EventFunction and type( EventFunction ) == "function" then - - -- Now call the default event function. - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling " .. _EVENTMETA[Event.id].Event .. " for Class ", EventClass:GetClassNameAndID(), EventPriority } ) - end - - local Result, Value = xpcall( - function() - return EventFunction( EventClass, Event ) - end, ErrorHandler ) - end - end - end - - else - - -- If the EventData is for a GROUP, the call directly the EventClass EventFunction for the UNIT in that GROUP. - if ( Event.IniDCSUnitName and Event.IniDCSGroupName and Event.IniGroupName and EventData.EventGroup and EventData.EventGroup[Event.IniGroupName] ) or - ( Event.TgtDCSUnitName and Event.TgtDCSGroupName and Event.TgtGroupName and EventData.EventGroup and EventData.EventGroup[Event.TgtGroupName] ) then - - if EventData.EventGroup[Event.IniGroupName] then - -- First test if a EventFunction is Set, otherwise search for the default function - if EventData.EventGroup[Event.IniGroupName].EventFunction then - - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling EventFunction for GROUP ", EventClass:GetClassNameAndID(), ", Unit ", Event.IniUnitName, EventPriority } ) - end - - local Result, Value = xpcall( - function() - return EventData.EventGroup[Event.IniGroupName].EventFunction( EventClass, Event ) - end, ErrorHandler ) - - else - - -- There is no EventFunction defined, so try to find if a default OnEvent function is defined on the object. - local EventFunction = EventClass[ _EVENTMETA[Event.id].Event ] - if EventFunction and type( EventFunction ) == "function" then - - -- Now call the default event function. - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling " .. _EVENTMETA[Event.id].Event .. " for GROUP ", EventClass:GetClassNameAndID(), EventPriority } ) - end - - local Result, Value = xpcall( - function() - return EventFunction( EventClass, Event ) - end, ErrorHandler ) - end - end - end - - if EventData.EventGroup[Event.TgtGroupName] then - if EventData.EventGroup[Event.TgtGroupName].EventFunction then - - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling EventFunction for GROUP ", EventClass:GetClassNameAndID(), ", Unit ", Event.TgtUnitName, EventPriority } ) - end - - local Result, Value = xpcall( - function() - return EventData.EventGroup[Event.TgtGroupName].EventFunction( EventClass, Event ) - end, ErrorHandler ) - - else - - -- There is no EventFunction defined, so try to find if a default OnEvent function is defined on the object. - local EventFunction = EventClass[ _EVENTMETA[Event.id].Event ] - if EventFunction and type( EventFunction ) == "function" then - - -- Now call the default event function. - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling " .. _EVENTMETA[Event.id].Event .. " for GROUP ", EventClass:GetClassNameAndID(), EventPriority } ) - end - - local Result, Value = xpcall( - function() - return EventFunction( EventClass, Event ) - end, ErrorHandler ) - end - end - end - - else - - -- If the EventData is not bound to a specific unit, then call the EventClass EventFunction. - -- Note that here the EventFunction will need to implement and determine the logic for the relevant source- or target unit, or weapon. - if (Event.IniDCSUnit or Event.WeaponUNIT) and not EventData.EventUnit then - - if EventClass == EventData.EventClass then - - -- First test if a EventFunction is Set, otherwise search for the default function - if EventData.EventFunction then - - -- There is an EventFunction defined, so call the EventFunction. - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling EventFunction for Class ", EventClass:GetClassNameAndID(), EventPriority } ) - end - local Result, Value = xpcall( - function() - return EventData.EventFunction( EventClass, Event ) - end, ErrorHandler ) - else - - -- There is no EventFunction defined, so try to find if a default OnEvent function is defined on the object. - local EventFunction = EventClass[ _EVENTMETA[Event.id].Event ] - if EventFunction and type( EventFunction ) == "function" then - - -- Now call the default event function. - if Event.IniObjectCategory ~= 3 then - self:E( { "Calling " .. _EVENTMETA[Event.id].Event .. " for Class ", EventClass:GetClassNameAndID(), EventPriority } ) - end - - local Result, Value = xpcall( - function() - local Result, Value = EventFunction( EventClass, Event ) - return Result, Value - end, ErrorHandler ) - end - end - end - end - end - end - end - end - end - else - self:E( { _EVENTMETA[Event.id].Text, Event } ) - end - - Event = nil -end - ---- The EVENTHANDLER structure --- @type EVENTHANDLER --- @extends Core.Base#BASE -EVENTHANDLER = { - ClassName = "EVENTHANDLER", - ClassID = 0, -} - ---- The EVENTHANDLER constructor --- @param #EVENTHANDLER self --- @return #EVENTHANDLER -function EVENTHANDLER:New() - self = BASE:Inherit( self, BASE:New() ) -- #EVENTHANDLER - return self -end ---- **Core** -- MENU_ classes model the definition of **hierarchical menu structures** and **commands for players** within a mission. --- --- === --- --- DCS Menus can be managed using the MENU classes. --- The advantage of using MENU classes is that it hides the complexity of dealing with menu management in more advanced scanerios where you need to --- set menus and later remove them, and later set them again. You'll find while using use normal DCS scripting functions, that setting and removing --- menus is not a easy feat if you have complex menu hierarchies defined. --- Using the MOOSE menu classes, the removal and refreshing of menus are nicely being handled within these classes, and becomes much more easy. --- On top, MOOSE implements **variable parameter** passing for command menus. --- --- There are basically two different MENU class types that you need to use: --- --- ### To manage **main menus**, the classes begin with **MENU_**: --- --- * @{Menu#MENU_MISSION}: Manages main menus for whole mission file. --- * @{Menu#MENU_COALITION}: Manages main menus for whole coalition. --- * @{Menu#MENU_GROUP}: Manages main menus for GROUPs. --- * @{Menu#MENU_CLIENT}: Manages main menus for CLIENTs. This manages menus for units with the skill level "Client". --- --- ### To manage **command menus**, which are menus that allow the player to issue **functions**, the classes begin with **MENU_COMMAND_**: --- --- * @{Menu#MENU_MISSION_COMMAND}: Manages command menus for whole mission file. --- * @{Menu#MENU_COALITION_COMMAND}: Manages command menus for whole coalition. --- * @{Menu#MENU_GROUP_COMMAND}: Manages command menus for GROUPs. --- * @{Menu#MENU_CLIENT_COMMAND}: Manages command menus for CLIENTs. This manages menus for units with the skill level "Client". --- --- === --- --- The above menus classes **are derived** from 2 main **abstract** classes defined within the MOOSE framework (so don't use these): --- --- 1) MENU_ BASE abstract base classes (don't use them) --- ==================================================== --- The underlying base menu classes are **NOT** to be used within your missions. --- These are simply abstract base classes defining a couple of fields that are used by the --- derived MENU_ classes to manage menus. --- --- 1.1) @{#MENU_BASE} class, extends @{Base#BASE} --- -------------------------------------------------- --- The @{#MENU_BASE} class defines the main MENU class where other MENU classes are derived from. --- --- 1.2) @{#MENU_COMMAND_BASE} class, extends @{Base#BASE} --- ---------------------------------------------------------- --- The @{#MENU_COMMAND_BASE} class defines the main MENU class where other MENU COMMAND_ classes are derived from, in order to set commands. --- --- === --- --- **The next menus define the MENU classes that you can use within your missions.** --- --- 2) MENU MISSION classes --- ====================== --- The underlying classes manage the menus for a complete mission file. --- --- 2.1) @{#MENU_MISSION} class, extends @{Menu#MENU_BASE} --- --------------------------------------------------------- --- The @{Menu#MENU_MISSION} class manages the main menus for a complete mission. --- You can add menus with the @{#MENU_MISSION.New} method, which constructs a MENU_MISSION object and returns you the object reference. --- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_MISSION.Remove}. --- --- 2.2) @{#MENU_MISSION_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE} --- ------------------------------------------------------------------------- --- The @{Menu#MENU_MISSION_COMMAND} class manages the command menus for a complete mission, which allow players to execute functions during mission execution. --- You can add menus with the @{#MENU_MISSION_COMMAND.New} method, which constructs a MENU_MISSION_COMMAND object and returns you the object reference. --- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_MISSION_COMMAND.Remove}. --- --- === --- --- 3) MENU COALITION classes --- ========================= --- The underlying classes manage the menus for whole coalitions. --- --- 3.1) @{#MENU_COALITION} class, extends @{Menu#MENU_BASE} --- ------------------------------------------------------------ --- The @{Menu#MENU_COALITION} class manages the main menus for coalitions. --- You can add menus with the @{#MENU_COALITION.New} method, which constructs a MENU_COALITION object and returns you the object reference. --- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_COALITION.Remove}. --- --- 3.2) @{Menu#MENU_COALITION_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE} --- ---------------------------------------------------------------------------- --- The @{Menu#MENU_COALITION_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution. --- You can add menus with the @{#MENU_COALITION_COMMAND.New} method, which constructs a MENU_COALITION_COMMAND object and returns you the object reference. --- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_COALITION_COMMAND.Remove}. --- --- === --- --- 4) MENU GROUP classes --- ===================== --- The underlying classes manage the menus for groups. Note that groups can be inactive, alive or can be destroyed. --- --- 4.1) @{Menu#MENU_GROUP} class, extends @{Menu#MENU_BASE} --- -------------------------------------------------------- --- The @{Menu#MENU_GROUP} class manages the main menus for coalitions. --- You can add menus with the @{#MENU_GROUP.New} method, which constructs a MENU_GROUP object and returns you the object reference. --- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_GROUP.Remove}. --- --- 4.2) @{Menu#MENU_GROUP_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE} --- ------------------------------------------------------------------------ --- The @{Menu#MENU_GROUP_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution. --- You can add menus with the @{#MENU_GROUP_COMMAND.New} method, which constructs a MENU_GROUP_COMMAND object and returns you the object reference. --- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_GROUP_COMMAND.Remove}. --- --- === --- --- 5) MENU CLIENT classes --- ====================== --- The underlying classes manage the menus for units with skill level client or player. --- --- 5.1) @{Menu#MENU_CLIENT} class, extends @{Menu#MENU_BASE} --- --------------------------------------------------------- --- The @{Menu#MENU_CLIENT} class manages the main menus for coalitions. --- You can add menus with the @{#MENU_CLIENT.New} method, which constructs a MENU_CLIENT object and returns you the object reference. --- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_CLIENT.Remove}. --- --- 5.2) @{Menu#MENU_CLIENT_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE} --- ------------------------------------------------------------------------- --- The @{Menu#MENU_CLIENT_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution. --- You can add menus with the @{#MENU_CLIENT_COMMAND.New} method, which constructs a MENU_CLIENT_COMMAND object and returns you the object reference. --- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_CLIENT_COMMAND.Remove}. --- --- === --- --- ### Contributions: - --- ### Authors: FlightControl : Design & Programming --- --- @module Menu - - -do -- MENU_BASE - - --- The MENU_BASE class - -- @type MENU_BASE - -- @extends Base#BASE - MENU_BASE = { - ClassName = "MENU_BASE", - MenuPath = nil, - MenuText = "", - MenuParentPath = nil - } - - --- Consructor - -- @param #MENU_BASE - -- @return #MENU_BASE - function MENU_BASE:New( MenuText, ParentMenu ) - - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, BASE:New() ) - - self.MenuPath = nil - self.MenuText = MenuText - self.MenuParentPath = MenuParentPath - self.Menus = {} - self.MenuCount = 0 - self.MenuRemoveParent = false - self.MenuTime = timer.getTime() - - return self - end - - --- Gets a @{Menu} from a parent @{Menu} - -- @param #MENU_BASE self - -- @param #string MenuText The text of the child menu. - -- @return #MENU_BASE - function MENU_BASE:GetMenu( MenuText ) - self:F( { self.Menus, MenuText } ) - return self.Menus[MenuText] - end - - --- Sets a @{Menu} to remove automatically the parent menu when the menu removed is the last child menu of that parent @{Menu}. - -- @param #MENU_BASE self - -- @param #boolean RemoveParent If true, the parent menu is automatically removed when this menu is the last child menu of that parent @{Menu}. - -- @return #MENU_BASE - function MENU_BASE:SetRemoveParent( RemoveParent ) - self:F( { RemoveParent } ) - self.MenuRemoveParent = RemoveParent - return self - end - - - --- Sets a time stamp for later prevention of menu removal. - -- @param #MENU_BASE self - -- @param MenuTime - -- @return #MENU_BASE - function MENU_BASE:SetTime( MenuTime ) - self.MenuTime = MenuTime - return self - end - -end - -do -- MENU_COMMAND_BASE - - --- The MENU_COMMAND_BASE class - -- @type MENU_COMMAND_BASE - -- @field #function MenuCallHandler - -- @extends Core.Menu#MENU_BASE - MENU_COMMAND_BASE = { - ClassName = "MENU_COMMAND_BASE", - CommandMenuFunction = nil, - CommandMenuArgument = nil, - MenuCallHandler = nil, - } - - --- Constructor - -- @param #MENU_COMMAND_BASE - -- @return #MENU_COMMAND_BASE - function MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArguments ) - - local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) ) - - self.CommandMenuFunction = CommandMenuFunction - self.MenuCallHandler = function( CommandMenuArguments ) - self.CommandMenuFunction( unpack( CommandMenuArguments ) ) - end - - return self - end - -end - - -do -- MENU_MISSION - - --- The MENU_MISSION class - -- @type MENU_MISSION - -- @extends Core.Menu#MENU_BASE - MENU_MISSION = { - ClassName = "MENU_MISSION" - } - - --- MENU_MISSION constructor. Creates a new MENU_MISSION object and creates the menu for a complete mission file. - -- @param #MENU_MISSION self - -- @param #string MenuText The text for the menu. - -- @param #table ParentMenu The parent menu. This parameter can be ignored if you want the menu to be located at the perent menu of DCS world (under F10 other). - -- @return #MENU_MISSION - function MENU_MISSION:New( MenuText, ParentMenu ) - - local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) ) - - self:F( { MenuText, ParentMenu } ) - - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self.Menus = {} - - self:T( { MenuText } ) - - self.MenuPath = missionCommands.addSubMenu( MenuText, self.MenuParentPath ) - - self:T( { self.MenuPath } ) - - if ParentMenu and ParentMenu.Menus then - ParentMenu.Menus[self.MenuPath] = self - end - - return self - end - - --- Removes the sub menus recursively of this MENU_MISSION. Note that the main menu is kept! - -- @param #MENU_MISSION self - -- @return #MENU_MISSION - function MENU_MISSION:RemoveSubMenus() - self:F( self.MenuPath ) - - for MenuID, Menu in pairs( self.Menus ) do - Menu:Remove() - end - - end - - --- Removes the main menu and the sub menus recursively of this MENU_MISSION. - -- @param #MENU_MISSION self - -- @return #nil - function MENU_MISSION:Remove() - self:F( self.MenuPath ) - - self:RemoveSubMenus() - missionCommands.removeItem( self.MenuPath ) - if self.ParentMenu then - self.ParentMenu.Menus[self.MenuPath] = nil - end - - return nil - end - -end - -do -- MENU_MISSION_COMMAND - - --- The MENU_MISSION_COMMAND class - -- @type MENU_MISSION_COMMAND - -- @extends Core.Menu#MENU_COMMAND_BASE - MENU_MISSION_COMMAND = { - ClassName = "MENU_MISSION_COMMAND" - } - - --- MENU_MISSION constructor. Creates a new radio command item for a complete mission file, which can invoke a function with parameters. - -- @param #MENU_MISSION_COMMAND self - -- @param #string MenuText The text for the menu. - -- @param Menu#MENU_MISSION ParentMenu The parent menu. - -- @param CommandMenuFunction A function that is called when the menu key is pressed. - -- @param CommandMenuArgument An argument for the function. There can only be ONE argument given. So multiple arguments must be wrapped into a table. See the below example how to do this. - -- @return #MENU_MISSION_COMMAND self - function MENU_MISSION_COMMAND:New( MenuText, ParentMenu, CommandMenuFunction, ... ) - - local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) ) - - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self:T( { MenuText, CommandMenuFunction, arg } ) - - - self.MenuPath = missionCommands.addCommand( MenuText, self.MenuParentPath, self.MenuCallHandler, arg ) - - ParentMenu.Menus[self.MenuPath] = self - - return self - end - - --- Removes a radio command item for a coalition - -- @param #MENU_MISSION_COMMAND self - -- @return #nil - function MENU_MISSION_COMMAND:Remove() - self:F( self.MenuPath ) - - missionCommands.removeItem( self.MenuPath ) - if self.ParentMenu then - self.ParentMenu.Menus[self.MenuPath] = nil - end - return nil - end - -end - - - -do -- MENU_COALITION - - --- The MENU_COALITION class - -- @type MENU_COALITION - -- @extends Core.Menu#MENU_BASE - -- @usage - -- -- This demo creates a menu structure for the planes within the red coalition. - -- -- To test, join the planes, then look at the other radio menus (Option F10). - -- -- Then switch planes and check if the menu is still there. - -- - -- local Plane1 = CLIENT:FindByName( "Plane 1" ) - -- local Plane2 = CLIENT:FindByName( "Plane 2" ) - -- - -- - -- -- This would create a menu for the red coalition under the main DCS "Others" menu. - -- local MenuCoalitionRed = MENU_COALITION:New( coalition.side.RED, "Manage Menus" ) - -- - -- - -- local function ShowStatus( StatusText, Coalition ) - -- - -- MESSAGE:New( Coalition, 15 ):ToRed() - -- Plane1:Message( StatusText, 15 ) - -- Plane2:Message( StatusText, 15 ) - -- end - -- - -- local MenuStatus -- Menu#MENU_COALITION - -- local MenuStatusShow -- Menu#MENU_COALITION_COMMAND - -- - -- local function RemoveStatusMenu() - -- MenuStatus:Remove() - -- end - -- - -- local function AddStatusMenu() - -- - -- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object. - -- MenuStatus = MENU_COALITION:New( coalition.side.RED, "Status for Planes" ) - -- MenuStatusShow = MENU_COALITION_COMMAND:New( coalition.side.RED, "Show Status", MenuStatus, ShowStatus, "Status of planes is ok!", "Message to Red Coalition" ) - -- end - -- - -- local MenuAdd = MENU_COALITION_COMMAND:New( coalition.side.RED, "Add Status Menu", MenuCoalitionRed, AddStatusMenu ) - -- local MenuRemove = MENU_COALITION_COMMAND:New( coalition.side.RED, "Remove Status Menu", MenuCoalitionRed, RemoveStatusMenu ) - MENU_COALITION = { - ClassName = "MENU_COALITION" - } - - --- MENU_COALITION constructor. Creates a new MENU_COALITION object and creates the menu for a complete coalition. - -- @param #MENU_COALITION self - -- @param Dcs.DCSCoalition#coalition.side Coalition The coalition owning the menu. - -- @param #string MenuText The text for the menu. - -- @param #table ParentMenu The parent menu. This parameter can be ignored if you want the menu to be located at the perent menu of DCS world (under F10 other). - -- @return #MENU_COALITION self - function MENU_COALITION:New( Coalition, MenuText, ParentMenu ) - - local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) ) - - self:F( { Coalition, MenuText, ParentMenu } ) - - self.Coalition = Coalition - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self.Menus = {} - - self:T( { MenuText } ) - - self.MenuPath = missionCommands.addSubMenuForCoalition( Coalition, MenuText, self.MenuParentPath ) - - self:T( { self.MenuPath } ) - - if ParentMenu and ParentMenu.Menus then - ParentMenu.Menus[self.MenuPath] = self - end - - return self - end - - --- Removes the sub menus recursively of this MENU_COALITION. Note that the main menu is kept! - -- @param #MENU_COALITION self - -- @return #MENU_COALITION - function MENU_COALITION:RemoveSubMenus() - self:F( self.MenuPath ) - - for MenuID, Menu in pairs( self.Menus ) do - Menu:Remove() - end - - end - - --- Removes the main menu and the sub menus recursively of this MENU_COALITION. - -- @param #MENU_COALITION self - -- @return #nil - function MENU_COALITION:Remove() - self:F( self.MenuPath ) - - self:RemoveSubMenus() - missionCommands.removeItemForCoalition( self.Coalition, self.MenuPath ) - if self.ParentMenu then - self.ParentMenu.Menus[self.MenuPath] = nil - end - - return nil - end - -end - -do -- MENU_COALITION_COMMAND - - --- The MENU_COALITION_COMMAND class - -- @type MENU_COALITION_COMMAND - -- @extends Core.Menu#MENU_COMMAND_BASE - MENU_COALITION_COMMAND = { - ClassName = "MENU_COALITION_COMMAND" - } - - --- MENU_COALITION constructor. Creates a new radio command item for a coalition, which can invoke a function with parameters. - -- @param #MENU_COALITION_COMMAND self - -- @param Dcs.DCSCoalition#coalition.side Coalition The coalition owning the menu. - -- @param #string MenuText The text for the menu. - -- @param Menu#MENU_COALITION ParentMenu The parent menu. - -- @param CommandMenuFunction A function that is called when the menu key is pressed. - -- @param CommandMenuArgument An argument for the function. There can only be ONE argument given. So multiple arguments must be wrapped into a table. See the below example how to do this. - -- @return #MENU_COALITION_COMMAND - function MENU_COALITION_COMMAND:New( Coalition, MenuText, ParentMenu, CommandMenuFunction, ... ) - - local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) ) - - self.MenuCoalition = Coalition - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self:T( { MenuText, CommandMenuFunction, arg } ) - - - self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, self.MenuParentPath, self.MenuCallHandler, arg ) - - ParentMenu.Menus[self.MenuPath] = self - - return self - end - - --- Removes a radio command item for a coalition - -- @param #MENU_COALITION_COMMAND self - -- @return #nil - function MENU_COALITION_COMMAND:Remove() - self:F( self.MenuPath ) - - missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath ) - if self.ParentMenu then - self.ParentMenu.Menus[self.MenuPath] = nil - end - return nil - end - -end - -do -- MENU_CLIENT - - -- This local variable is used to cache the menus registered under clients. - -- Menus don't dissapear when clients are destroyed and restarted. - -- So every menu for a client created must be tracked so that program logic accidentally does not create - -- the same menus twice during initialization logic. - -- These menu classes are handling this logic with this variable. - local _MENUCLIENTS = {} - - --- MENU_COALITION constructor. Creates a new radio command item for a coalition, which can invoke a function with parameters. - -- @type MENU_CLIENT - -- @extends Core.Menu#MENU_BASE - -- @usage - -- -- This demo creates a menu structure for the two clients of planes. - -- -- Each client will receive a different menu structure. - -- -- To test, join the planes, then look at the other radio menus (Option F10). - -- -- Then switch planes and check if the menu is still there. - -- -- And play with the Add and Remove menu options. - -- - -- -- Note that in multi player, this will only work after the DCS clients bug is solved. - -- - -- local function ShowStatus( PlaneClient, StatusText, Coalition ) - -- - -- MESSAGE:New( Coalition, 15 ):ToRed() - -- PlaneClient:Message( StatusText, 15 ) - -- end - -- - -- local MenuStatus = {} - -- - -- local function RemoveStatusMenu( MenuClient ) - -- local MenuClientName = MenuClient:GetName() - -- MenuStatus[MenuClientName]:Remove() - -- end - -- - -- --- @param Wrapper.Client#CLIENT MenuClient - -- local function AddStatusMenu( MenuClient ) - -- local MenuClientName = MenuClient:GetName() - -- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object. - -- MenuStatus[MenuClientName] = MENU_CLIENT:New( MenuClient, "Status for Planes" ) - -- MENU_CLIENT_COMMAND:New( MenuClient, "Show Status", MenuStatus[MenuClientName], ShowStatus, MenuClient, "Status of planes is ok!", "Message to Red Coalition" ) - -- end - -- - -- SCHEDULER:New( nil, - -- function() - -- local PlaneClient = CLIENT:FindByName( "Plane 1" ) - -- if PlaneClient and PlaneClient:IsAlive() then - -- local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" ) - -- MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneClient ) - -- MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneClient ) - -- end - -- end, {}, 10, 10 ) - -- - -- SCHEDULER:New( nil, - -- function() - -- local PlaneClient = CLIENT:FindByName( "Plane 2" ) - -- if PlaneClient and PlaneClient:IsAlive() then - -- local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" ) - -- MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneClient ) - -- MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneClient ) - -- end - -- end, {}, 10, 10 ) - MENU_CLIENT = { - ClassName = "MENU_CLIENT" - } - - --- MENU_CLIENT constructor. Creates a new radio menu item for a client. - -- @param #MENU_CLIENT self - -- @param Wrapper.Client#CLIENT Client The Client owning the menu. - -- @param #string MenuText The text for the menu. - -- @param #table ParentMenu The parent menu. - -- @return #MENU_CLIENT self - function MENU_CLIENT:New( Client, MenuText, ParentMenu ) - - -- Arrange meta tables - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU_BASE:New( MenuText, MenuParentPath ) ) - self:F( { Client, MenuText, ParentMenu } ) - - self.MenuClient = Client - self.MenuClientGroupID = Client:GetClientGroupID() - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self.Menus = {} - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - self:T( { Client:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } ) - - local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText - if MenuPath[MenuPathID] then - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) - end - - self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath ) - MenuPath[MenuPathID] = self.MenuPath - - self:T( { Client:GetClientGroupName(), self.MenuPath } ) - - if ParentMenu and ParentMenu.Menus then - ParentMenu.Menus[self.MenuPath] = self - end - return self - end - - --- Removes the sub menus recursively of this @{#MENU_CLIENT}. - -- @param #MENU_CLIENT self - -- @return #MENU_CLIENT self - function MENU_CLIENT:RemoveSubMenus() - self:F( self.MenuPath ) - - for MenuID, Menu in pairs( self.Menus ) do - Menu:Remove() - end - - end - - --- Removes the sub menus recursively of this MENU_CLIENT. - -- @param #MENU_CLIENT self - -- @return #nil - function MENU_CLIENT:Remove() - self:F( self.MenuPath ) - - self:RemoveSubMenus() - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then - MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil - end - - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - return nil - end - - - --- The MENU_CLIENT_COMMAND class - -- @type MENU_CLIENT_COMMAND - -- @extends Core.Menu#MENU_COMMAND - MENU_CLIENT_COMMAND = { - ClassName = "MENU_CLIENT_COMMAND" - } - - --- MENU_CLIENT_COMMAND constructor. Creates a new radio command item for a client, which can invoke a function with parameters. - -- @param #MENU_CLIENT_COMMAND self - -- @param Wrapper.Client#CLIENT Client The Client owning the menu. - -- @param #string MenuText The text for the menu. - -- @param #MENU_BASE ParentMenu The parent menu. - -- @param CommandMenuFunction A function that is called when the menu key is pressed. - -- @return Menu#MENU_CLIENT_COMMAND self - function MENU_CLIENT_COMMAND:New( Client, MenuText, ParentMenu, CommandMenuFunction, ... ) - - -- Arrange meta tables - - local MenuParentPath = {} - if ParentMenu ~= nil then - MenuParentPath = ParentMenu.MenuPath - end - - local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, MenuParentPath, CommandMenuFunction, arg ) ) -- Menu#MENU_CLIENT_COMMAND - - self.MenuClient = Client - self.MenuClientGroupID = Client:GetClientGroupID() - self.MenuParentPath = MenuParentPath - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - self:T( { Client:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, arg } ) - - local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText - if MenuPath[MenuPathID] then - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] ) - end - - self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, self.MenuCallHandler, arg ) - MenuPath[MenuPathID] = self.MenuPath - - if ParentMenu and ParentMenu.Menus then - ParentMenu.Menus[self.MenuPath] = self - end - - return self - end - - --- Removes a menu structure for a client. - -- @param #MENU_CLIENT_COMMAND self - -- @return #nil - function MENU_CLIENT_COMMAND:Remove() - self:F( self.MenuPath ) - - if not _MENUCLIENTS[self.MenuClientGroupID] then - _MENUCLIENTS[self.MenuClientGroupID] = {} - end - - local MenuPath = _MENUCLIENTS[self.MenuClientGroupID] - - if MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] then - MenuPath[table.concat(self.MenuParentPath) .. "/" .. self.MenuText] = nil - end - - missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), self.MenuPath ) - self.ParentMenu.Menus[self.MenuPath] = nil - return nil - end -end - ---- MENU_GROUP - -do - -- This local variable is used to cache the menus registered under groups. - -- Menus don't dissapear when groups for players are destroyed and restarted. - -- So every menu for a client created must be tracked so that program logic accidentally does not create. - -- the same menus twice during initialization logic. - -- These menu classes are handling this logic with this variable. - local _MENUGROUPS = {} - - --- The MENU_GROUP class - -- @type MENU_GROUP - -- @extends Core.Menu#MENU_BASE - -- @usage - -- -- This demo creates a menu structure for the two groups of planes. - -- -- Each group will receive a different menu structure. - -- -- To test, join the planes, then look at the other radio menus (Option F10). - -- -- Then switch planes and check if the menu is still there. - -- -- And play with the Add and Remove menu options. - -- - -- -- Note that in multi player, this will only work after the DCS groups bug is solved. - -- - -- local function ShowStatus( PlaneGroup, StatusText, Coalition ) - -- - -- MESSAGE:New( Coalition, 15 ):ToRed() - -- PlaneGroup:Message( StatusText, 15 ) - -- end - -- - -- local MenuStatus = {} - -- - -- local function RemoveStatusMenu( MenuGroup ) - -- local MenuGroupName = MenuGroup:GetName() - -- MenuStatus[MenuGroupName]:Remove() - -- end - -- - -- --- @param Wrapper.Group#GROUP MenuGroup - -- local function AddStatusMenu( MenuGroup ) - -- local MenuGroupName = MenuGroup:GetName() - -- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object. - -- MenuStatus[MenuGroupName] = MENU_GROUP:New( MenuGroup, "Status for Planes" ) - -- MENU_GROUP_COMMAND:New( MenuGroup, "Show Status", MenuStatus[MenuGroupName], ShowStatus, MenuGroup, "Status of planes is ok!", "Message to Red Coalition" ) - -- end - -- - -- SCHEDULER:New( nil, - -- function() - -- local PlaneGroup = GROUP:FindByName( "Plane 1" ) - -- if PlaneGroup and PlaneGroup:IsAlive() then - -- local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" ) - -- MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneGroup ) - -- MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneGroup ) - -- end - -- end, {}, 10, 10 ) - -- - -- SCHEDULER:New( nil, - -- function() - -- local PlaneGroup = GROUP:FindByName( "Plane 2" ) - -- if PlaneGroup and PlaneGroup:IsAlive() then - -- local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" ) - -- MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneGroup ) - -- MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneGroup ) - -- end - -- end, {}, 10, 10 ) - -- - MENU_GROUP = { - ClassName = "MENU_GROUP" - } - - --- MENU_GROUP constructor. Creates a new radio menu item for a group. - -- @param #MENU_GROUP self - -- @param Wrapper.Group#GROUP MenuGroup The Group owning the menu. - -- @param #string MenuText The text for the menu. - -- @param #table ParentMenu The parent menu. - -- @return #MENU_GROUP self - function MENU_GROUP:New( MenuGroup, MenuText, ParentMenu ) - - -- Determine if the menu was not already created and already visible at the group. - -- If it is visible, then return the cached self, otherwise, create self and cache it. - - MenuGroup._Menus = MenuGroup._Menus or {} - local Path = ( ParentMenu and ( table.concat( ParentMenu.MenuPath or {}, "@" ) .. "@" .. MenuText ) ) or MenuText - if MenuGroup._Menus[Path] then - self = MenuGroup._Menus[Path] - else - self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) ) - MenuGroup._Menus[Path] = self - - self.MenuGroup = MenuGroup - self.Path = Path - self.MenuGroupID = MenuGroup:GetID() - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self:T( { "Adding Menu ", MenuText, self.MenuParentPath } ) - self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuGroupID, MenuText, self.MenuParentPath ) - - if self.ParentMenu and self.ParentMenu.Menus then - self.ParentMenu.Menus[MenuText] = self - self:F( { self.ParentMenu.Menus, MenuText } ) - self.ParentMenu.MenuCount = self.ParentMenu.MenuCount + 1 - end - end - - --self:F( { MenuGroup:GetName(), MenuText, ParentMenu.MenuPath } ) - - return self - end - - --- Removes the sub menus recursively of this MENU_GROUP. - -- @param #MENU_GROUP self - -- @param MenuTime - -- @return #MENU_GROUP self - function MENU_GROUP:RemoveSubMenus( MenuTime ) - self:F2( { self.MenuPath, MenuTime, self.MenuTime } ) - - self:T( { "Removing Group SubMenus:", self.MenuGroup:GetName(), self.MenuPath } ) - for MenuText, Menu in pairs( self.Menus ) do - Menu:Remove( MenuTime ) - end - - end - - - --- Removes the main menu and sub menus recursively of this MENU_GROUP. - -- @param #MENU_GROUP self - -- @param MenuTime - -- @return #nil - function MENU_GROUP:Remove( MenuTime ) - self:F( { self.MenuGroupID, self.MenuPath, MenuTime, self.MenuTime } ) - - self:RemoveSubMenus( MenuTime ) - - if not MenuTime or self.MenuTime ~= MenuTime then - if self.MenuGroup._Menus[self.Path] then - self = self.MenuGroup._Menus[self.Path] - - missionCommands.removeItemForGroup( self.MenuGroupID, self.MenuPath ) - if self.ParentMenu then - self.ParentMenu.Menus[self.MenuText] = nil - self.ParentMenu.MenuCount = self.ParentMenu.MenuCount - 1 - if self.ParentMenu.MenuCount == 0 then - if self.MenuRemoveParent == true then - self:T( "Removing Parent Menu " ) - self.ParentMenu:Remove() - end - end - end - self:T( { "Removing Group Menu:", self.MenuGroup:GetName(), self.MenuGroup._Menus[self.Path].Path } ) - self.MenuGroup._Menus[self.Path] = nil - self = nil - end - end - - return nil - end - - - --- The MENU_GROUP_COMMAND class - -- @type MENU_GROUP_COMMAND - -- @extends Core.Menu#MENU_BASE - MENU_GROUP_COMMAND = { - ClassName = "MENU_GROUP_COMMAND" - } - - --- Creates a new radio command item for a group - -- @param #MENU_GROUP_COMMAND self - -- @param Wrapper.Group#GROUP MenuGroup The Group owning the menu. - -- @param MenuText The text for the menu. - -- @param ParentMenu The parent menu. - -- @param CommandMenuFunction A function that is called when the menu key is pressed. - -- @param CommandMenuArgument An argument for the function. - -- @return #MENU_GROUP_COMMAND - function MENU_GROUP_COMMAND:New( MenuGroup, MenuText, ParentMenu, CommandMenuFunction, ... ) - - MenuGroup._Menus = MenuGroup._Menus or {} - local Path = ( ParentMenu and ( table.concat( ParentMenu.MenuPath or {}, "@" ) .. "@" .. MenuText ) ) or MenuText - if MenuGroup._Menus[Path] then - self = MenuGroup._Menus[Path] - self:T( { "Re-using Group Command Menu:", MenuGroup:GetName(), MenuText } ) - else - self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) ) - MenuGroup._Menus[Path] = self - - self.Path = Path - self.MenuGroup = MenuGroup - self.MenuGroupID = MenuGroup:GetID() - self.MenuText = MenuText - self.ParentMenu = ParentMenu - - self:T( { "Adding Group Command Menu:", MenuGroup:GetName(), MenuText, self.MenuParentPath } ) - self.MenuPath = missionCommands.addCommandForGroup( self.MenuGroupID, MenuText, self.MenuParentPath, self.MenuCallHandler, arg ) - - if self.ParentMenu and self.ParentMenu.Menus then - self.ParentMenu.Menus[MenuText] = self - self.ParentMenu.MenuCount = self.ParentMenu.MenuCount + 1 - self:F( { ParentMenu.Menus, MenuText } ) - end - end - - return self - end - - --- Removes a menu structure for a group. - -- @param #MENU_GROUP_COMMAND self - -- @param MenuTime - -- @return #nil - function MENU_GROUP_COMMAND:Remove( MenuTime ) - self:F( { self.MenuGroupID, self.MenuPath, MenuTime, self.MenuTime } ) - - if not MenuTime or self.MenuTime ~= MenuTime then - if self.MenuGroup._Menus[self.Path] then - self = self.MenuGroup._Menus[self.Path] - - missionCommands.removeItemForGroup( self.MenuGroupID, self.MenuPath ) - self:T( { "Removing Group Command Menu:", self.MenuGroup:GetName(), self.MenuText, self.Path, self.MenuGroup._Menus[self.Path].Path } ) - - self.ParentMenu.Menus[self.MenuText] = nil - self.ParentMenu.MenuCount = self.ParentMenu.MenuCount - 1 - if self.ParentMenu.MenuCount == 0 then - if self.MenuRemoveParent == true then - self:T( "Removing Parent Menu " ) - self.ParentMenu:Remove() - end - end - - self.MenuGroup._Menus[self.Path] = nil - self = nil - end - end - - return nil - end - -end - ---- **Core** - ZONE classes define **zones** within your mission of **various forms**, with **various capabilities**. --- --- ![Banner Image](..\Presentations\ZONE\Dia1.JPG) --- --- === --- --- There are essentially two core functions that zones accomodate: --- --- * Test if an object is within the zone boundaries. --- * Provide the zone behaviour. Some zones are static, while others are moveable. --- --- The object classes are using the zone classes to test the zone boundaries, which can take various forms: --- --- * Test if completely within the zone. --- * Test if partly within the zone (for @{Group#GROUP} objects). --- * Test if not in the zone. --- * Distance to the nearest intersecting point of the zone. --- * Distance to the center of the zone. --- * ... --- --- Each of these ZONE classes have a zone name, and specific parameters defining the zone type: --- --- * @{#ZONE_BASE}: The ZONE_BASE class defining the base for all other zone classes. --- * @{#ZONE_RADIUS}: The ZONE_RADIUS class defined by a zone name, a location and a radius. --- * @{#ZONE}: The ZONE class, defined by the zone name as defined within the Mission Editor. --- * @{#ZONE_UNIT}: The ZONE_UNIT class defines by a zone around a @{Unit#UNIT} with a radius. --- * @{#ZONE_GROUP}: The ZONE_GROUP class defines by a zone around a @{Group#GROUP} with a radius. --- * @{#ZONE_POLYGON}: The ZONE_POLYGON class defines by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. --- --- === --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-02-28: ZONE\_BASE:**IsVec2InZone()** replaces ZONE\_BASE:_IsPointVec2InZone()_. --- 2017-02-28: ZONE\_BASE:**IsVec3InZone()** replaces ZONE\_BASE:_IsPointVec3InZone()_. --- 2017-02-28: ZONE\_RADIUS:**IsVec2InZone()** replaces ZONE\_RADIUS:_IsPointVec2InZone()_. --- 2017-02-28: ZONE\_RADIUS:**IsVec3InZone()** replaces ZONE\_RADIUS:_IsPointVec3InZone()_. --- 2017-02-28: ZONE\_POLYGON:**IsVec2InZone()** replaces ZONE\_POLYGON:_IsPointVec2InZone()_. --- 2017-02-28: ZONE\_POLYGON:**IsVec3InZone()** replaces ZONE\_POLYGON:_IsPointVec3InZone()_. --- --- 2017-02-18: ZONE\_POLYGON_BASE:**GetRandomPointVec2()** added. --- --- 2017-02-18: ZONE\_POLYGON_BASE:**GetRandomPointVec3()** added. --- --- 2017-02-18: ZONE\_RADIUS:**GetRandomPointVec3( inner, outer )** added. --- --- 2017-02-18: ZONE\_RADIUS:**GetRandomPointVec2( inner, outer )** added. --- --- 2016-08-15: ZONE\_BASE:**GetName()** added. --- --- 2016-08-15: ZONE\_BASE:**SetZoneProbability( ZoneProbability )** added. --- --- 2016-08-15: ZONE\_BASE:**GetZoneProbability()** added. --- --- 2016-08-15: ZONE\_BASE:**GetZoneMaybe()** added. --- --- === --- --- @module Zone - - ---- The ZONE_BASE class --- @type ZONE_BASE --- @field #string ZoneName Name of the zone. --- @field #number ZoneProbability A value between 0 and 1. 0 = 0% and 1 = 100% probability. --- @extends Core.Base#BASE - - ---- # 1) ZONE_BASE class, extends @{Base#BASE} --- --- This class is an abstract BASE class for derived classes, and is not meant to be instantiated. --- --- ## 1.1) Each zone has a name: --- --- * @{#ZONE_BASE.GetName}(): Returns the name of the zone. --- --- ## 1.2) Each zone implements two polymorphic functions defined in @{Zone#ZONE_BASE}: --- --- * @{#ZONE_BASE.IsVec2InZone}(): Returns if a Vec2 is within the zone. --- * @{#ZONE_BASE.IsVec3InZone}(): Returns if a Vec3 is within the zone. --- --- ## 1.3) A zone has a probability factor that can be set to randomize a selection between zones: --- --- * @{#ZONE_BASE.SetRandomizeProbability}(): Set the randomization probability of a zone to be selected, taking a value between 0 and 1 ( 0 = 0%, 1 = 100% ) --- * @{#ZONE_BASE.GetRandomizeProbability}(): Get the randomization probability of a zone to be selected, passing a value between 0 and 1 ( 0 = 0%, 1 = 100% ) --- * @{#ZONE_BASE.GetZoneMaybe}(): Get the zone taking into account the randomization probability. nil is returned if this zone is not a candidate. --- --- ## 1.4) A zone manages Vectors: --- --- * @{#ZONE_BASE.GetVec2}(): Returns the @{DCSTypes#Vec2} coordinate of the zone. --- * @{#ZONE_BASE.GetRandomVec2}(): Define a random @{DCSTypes#Vec2} within the zone. --- --- ## 1.5) A zone has a bounding square: --- --- * @{#ZONE_BASE.GetBoundingSquare}(): Get the outer most bounding square of the zone. --- --- ## 1.6) A zone can be marked: --- --- * @{#ZONE_BASE.SmokeZone}(): Smokes the zone boundaries in a color. --- * @{#ZONE_BASE.FlareZone}(): Flares the zone boundaries in a color. --- --- === --- @field #ZONE_BASE ZONE_BASE -ZONE_BASE = { - ClassName = "ZONE_BASE", - ZoneName = "", - ZoneProbability = 1, - } - - ---- The ZONE_BASE.BoundingSquare --- @type ZONE_BASE.BoundingSquare --- @field Dcs.DCSTypes#Distance x1 The lower x coordinate (left down) --- @field Dcs.DCSTypes#Distance y1 The lower y coordinate (left down) --- @field Dcs.DCSTypes#Distance x2 The higher x coordinate (right up) --- @field Dcs.DCSTypes#Distance y2 The higher y coordinate (right up) - - ---- ZONE_BASE constructor --- @param #ZONE_BASE self --- @param #string ZoneName Name of the zone. --- @return #ZONE_BASE self -function ZONE_BASE:New( ZoneName ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( ZoneName ) - - self.ZoneName = ZoneName - - return self -end - ---- Returns the name of the zone. --- @param #ZONE_BASE self --- @return #string The name of the zone. -function ZONE_BASE:GetName() - self:F2() - - return self.ZoneName -end ---- Returns if a location is within the zone. --- @param #ZONE_BASE self --- @param Dcs.DCSTypes#Vec2 Vec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_BASE:IsVec2InZone( Vec2 ) - self:F2( Vec2 ) - - return false -end - ---- Returns if a point is within the zone. --- @param #ZONE_BASE self --- @param Dcs.DCSTypes#Vec3 Vec3 The point to test. --- @return #boolean true if the point is within the zone. -function ZONE_BASE:IsVec3InZone( Vec3 ) - self:F2( Vec3 ) - - local InZone = self:IsVec2InZone( { x = Vec3.x, y = Vec3.z } ) - - return InZone -end - ---- Returns the @{DCSTypes#Vec2} coordinate of the zone. --- @param #ZONE_BASE self --- @return #nil. -function ZONE_BASE:GetVec2() - self:F2( self.ZoneName ) - - return nil -end - ---- Returns a @{Point#POINT_VEC2} of the zone. --- @param #ZONE_BASE self --- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. --- @return Core.Point#POINT_VEC2 The PointVec2 of the zone. -function ZONE_BASE:GetPointVec2() - self:F2( self.ZoneName ) - - local Vec2 = self:GetVec2() - - local PointVec2 = POINT_VEC2:NewFromVec2( Vec2 ) - - self:T2( { PointVec2 } ) - - return PointVec2 -end - - ---- Returns the @{DCSTypes#Vec3} of the zone. --- @param #ZONE_BASE self --- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. --- @return Dcs.DCSTypes#Vec3 The Vec3 of the zone. -function ZONE_BASE:GetVec3( Height ) - self:F2( self.ZoneName ) - - Height = Height or 0 - - local Vec2 = self:GetVec2() - - local Vec3 = { x = Vec2.x, y = land.getHeight( self:GetVec2() ) + Height, z = Vec2.y } - - self:T2( { Vec3 } ) - - return Vec3 -end - ---- Returns a @{Point#POINT_VEC3} of the zone. --- @param #ZONE_BASE self --- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. --- @return Core.Point#POINT_VEC3 The PointVec3 of the zone. -function ZONE_BASE:GetPointVec3( Height ) - self:F2( self.ZoneName ) - - local Vec3 = self:GetVec3( Height ) - - local PointVec3 = POINT_VEC3:NewFromVec3( Vec3 ) - - self:T2( { PointVec3 } ) - - return PointVec3 -end - - ---- Define a random @{DCSTypes#Vec2} within the zone. --- @param #ZONE_BASE self --- @return Dcs.DCSTypes#Vec2 The Vec2 coordinates. -function ZONE_BASE:GetRandomVec2() - return nil -end - ---- Define a random @{Point#POINT_VEC2} within the zone. --- @param #ZONE_BASE self --- @return Core.Point#POINT_VEC2 The PointVec2 coordinates. -function ZONE_BASE:GetRandomPointVec2() - return nil -end - ---- Define a random @{Point#POINT_VEC3} within the zone. --- @param #ZONE_BASE self --- @return Core.Point#POINT_VEC3 The PointVec3 coordinates. -function ZONE_BASE:GetRandomPointVec3() - return nil -end - ---- Get the bounding square the zone. --- @param #ZONE_BASE self --- @return #nil The bounding square. -function ZONE_BASE:GetBoundingSquare() - --return { x1 = 0, y1 = 0, x2 = 0, y2 = 0 } - return nil -end - ---- Bound the zone boundaries with a tires. --- @param #ZONE_BASE self -function ZONE_BASE:BoundZone() - self:F2() - -end - ---- Smokes the zone boundaries in a color. --- @param #ZONE_BASE self --- @param Utilities.Utils#SMOKECOLOR SmokeColor The smoke color. -function ZONE_BASE:SmokeZone( SmokeColor ) - self:F2( SmokeColor ) - -end - ---- Set the randomization probability of a zone to be selected. --- @param #ZONE_BASE self --- @param ZoneProbability A value between 0 and 1. 0 = 0% and 1 = 100% probability. -function ZONE_BASE:SetZoneProbability( ZoneProbability ) - self:F2( ZoneProbability ) - - self.ZoneProbability = ZoneProbability or 1 - return self -end - ---- Get the randomization probability of a zone to be selected. --- @param #ZONE_BASE self --- @return #number A value between 0 and 1. 0 = 0% and 1 = 100% probability. -function ZONE_BASE:GetZoneProbability() - self:F2() - - return self.ZoneProbability -end - ---- Get the zone taking into account the randomization probability of a zone to be selected. --- @param #ZONE_BASE self --- @return #ZONE_BASE The zone is selected taking into account the randomization probability factor. --- @return #nil The zone is not selected taking into account the randomization probability factor. -function ZONE_BASE:GetZoneMaybe() - self:F2() - - local Randomization = math.random() - if Randomization <= self.ZoneProbability then - return self - else - return nil - end -end - - ---- The ZONE_RADIUS class, defined by a zone name, a location and a radius. --- @type ZONE_RADIUS --- @field Dcs.DCSTypes#Vec2 Vec2 The current location of the zone. --- @field Dcs.DCSTypes#Distance Radius The radius of the zone. --- @extends Core.Zone#ZONE_BASE - ---- # 2) @{Zone#ZONE_RADIUS} class, extends @{Zone#ZONE_BASE} --- --- The ZONE_RADIUS class defined by a zone name, a location and a radius. --- This class implements the inherited functions from Core.Zone#ZONE_BASE taking into account the own zone format and properties. --- --- ## 2.1) @{Zone#ZONE_RADIUS} constructor --- --- * @{#ZONE_RADIUS.New}(): Constructor. --- --- ## 2.2) Manage the radius of the zone --- --- * @{#ZONE_RADIUS.SetRadius}(): Sets the radius of the zone. --- * @{#ZONE_RADIUS.GetRadius}(): Returns the radius of the zone. --- --- ## 2.3) Manage the location of the zone --- --- * @{#ZONE_RADIUS.SetVec2}(): Sets the @{DCSTypes#Vec2} of the zone. --- * @{#ZONE_RADIUS.GetVec2}(): Returns the @{DCSTypes#Vec2} of the zone. --- * @{#ZONE_RADIUS.GetVec3}(): Returns the @{DCSTypes#Vec3} of the zone, taking an additional height parameter. --- --- ## 2.4) Zone point randomization --- --- Various functions exist to find random points within the zone. --- --- * @{#ZONE_RADIUS.GetRandomVec2}(): Gets a random 2D point in the zone. --- * @{#ZONE_RADIUS.GetRandomPointVec2}(): Gets a @{Point#POINT_VEC2} object representing a random 2D point in the zone. --- * @{#ZONE_RADIUS.GetRandomPointVec3}(): Gets a @{Point#POINT_VEC3} object representing a random 3D point in the zone. Note that the height of the point is at landheight. --- --- === --- --- @field #ZONE_RADIUS ZONE_RADIUS --- -ZONE_RADIUS = { - ClassName="ZONE_RADIUS", - } - ---- Constructor of @{#ZONE_RADIUS}, taking the zone name, the zone location and a radius. --- @param #ZONE_RADIUS self --- @param #string ZoneName Name of the zone. --- @param Dcs.DCSTypes#Vec2 Vec2 The location of the zone. --- @param Dcs.DCSTypes#Distance Radius The radius of the zone. --- @return #ZONE_RADIUS self -function ZONE_RADIUS:New( ZoneName, Vec2, Radius ) - local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) -- #ZONE_RADIUS - self:F( { ZoneName, Vec2, Radius } ) - - self.Radius = Radius - self.Vec2 = Vec2 - - return self -end - ---- Bounds the zone with tires. --- @param #ZONE_RADIUS self --- @param #number Points (optional) The amount of points in the circle. --- @param #boolean UnBound If true the tyres will be destroyed. --- @return #ZONE_RADIUS self -function ZONE_RADIUS:BoundZone( Points, CountryID, UnBound ) - - local Point = {} - local Vec2 = self:GetVec2() - - Points = Points and Points or 360 - - local Angle - local RadialBase = math.pi*2 - - -- - for Angle = 0, 360, (360 / Points ) do - local Radial = Angle * RadialBase / 360 - Point.x = Vec2.x + math.cos( Radial ) * self:GetRadius() - Point.y = Vec2.y + math.sin( Radial ) * self:GetRadius() - - local CountryName = _DATABASE.COUNTRY_NAME[CountryID] - - local Tire = { - ["country"] = CountryName, - ["category"] = "Fortifications", - ["canCargo"] = false, - ["shape_name"] = "H-tyre_B_WF", - ["type"] = "Black_Tyre_WF", - --["unitId"] = Angle + 10000, - ["y"] = Point.y, - ["x"] = Point.x, - ["name"] = string.format( "%s-Tire #%0d", self:GetName(), Angle ), - ["heading"] = 0, - } -- end of ["group"] - - local Group = coalition.addStaticObject( CountryID, Tire ) - if UnBound and UnBound == true then - Group:destroy() - end - end - - return self -end - - ---- Smokes the zone boundaries in a color. --- @param #ZONE_RADIUS self --- @param Utilities.Utils#SMOKECOLOR SmokeColor The smoke color. --- @param #number Points (optional) The amount of points in the circle. --- @return #ZONE_RADIUS self -function ZONE_RADIUS:SmokeZone( SmokeColor, Points ) - self:F2( SmokeColor ) - - local Point = {} - local Vec2 = self:GetVec2() - - Points = Points and Points or 360 - - local Angle - local RadialBase = math.pi*2 - - for Angle = 0, 360, 360 / Points do - local Radial = Angle * RadialBase / 360 - Point.x = Vec2.x + math.cos( Radial ) * self:GetRadius() - Point.y = Vec2.y + math.sin( Radial ) * self:GetRadius() - POINT_VEC2:New( Point.x, Point.y ):Smoke( SmokeColor ) - end - - return self -end - - ---- Flares the zone boundaries in a color. --- @param #ZONE_RADIUS self --- @param Utilities.Utils#FLARECOLOR FlareColor The flare color. --- @param #number Points (optional) The amount of points in the circle. --- @param Dcs.DCSTypes#Azimuth Azimuth (optional) Azimuth The azimuth of the flare. --- @return #ZONE_RADIUS self -function ZONE_RADIUS:FlareZone( FlareColor, Points, Azimuth ) - self:F2( { FlareColor, Azimuth } ) - - local Point = {} - local Vec2 = self:GetVec2() - - Points = Points and Points or 360 - - local Angle - local RadialBase = math.pi*2 - - for Angle = 0, 360, 360 / Points do - local Radial = Angle * RadialBase / 360 - Point.x = Vec2.x + math.cos( Radial ) * self:GetRadius() - Point.y = Vec2.y + math.sin( Radial ) * self:GetRadius() - POINT_VEC2:New( Point.x, Point.y ):Flare( FlareColor, Azimuth ) - end - - return self -end - ---- Returns the radius of the zone. --- @param #ZONE_RADIUS self --- @return Dcs.DCSTypes#Distance The radius of the zone. -function ZONE_RADIUS:GetRadius() - self:F2( self.ZoneName ) - - self:T2( { self.Radius } ) - - return self.Radius -end - ---- Sets the radius of the zone. --- @param #ZONE_RADIUS self --- @param Dcs.DCSTypes#Distance Radius The radius of the zone. --- @return Dcs.DCSTypes#Distance The radius of the zone. -function ZONE_RADIUS:SetRadius( Radius ) - self:F2( self.ZoneName ) - - self.Radius = Radius - self:T2( { self.Radius } ) - - return self.Radius -end - ---- Returns the @{DCSTypes#Vec2} of the zone. --- @param #ZONE_RADIUS self --- @return Dcs.DCSTypes#Vec2 The location of the zone. -function ZONE_RADIUS:GetVec2() - self:F2( self.ZoneName ) - - self:T2( { self.Vec2 } ) - - return self.Vec2 -end - ---- Sets the @{DCSTypes#Vec2} of the zone. --- @param #ZONE_RADIUS self --- @param Dcs.DCSTypes#Vec2 Vec2 The new location of the zone. --- @return Dcs.DCSTypes#Vec2 The new location of the zone. -function ZONE_RADIUS:SetVec2( Vec2 ) - self:F2( self.ZoneName ) - - self.Vec2 = Vec2 - - self:T2( { self.Vec2 } ) - - return self.Vec2 -end - ---- Returns the @{DCSTypes#Vec3} of the ZONE_RADIUS. --- @param #ZONE_RADIUS self --- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. --- @return Dcs.DCSTypes#Vec3 The point of the zone. -function ZONE_RADIUS:GetVec3( Height ) - self:F2( { self.ZoneName, Height } ) - - Height = Height or 0 - local Vec2 = self:GetVec2() - - local Vec3 = { x = Vec2.x, y = land.getHeight( self:GetVec2() ) + Height, z = Vec2.y } - - self:T2( { Vec3 } ) - - return Vec3 -end - - ---- Returns if a location is within the zone. --- @param #ZONE_RADIUS self --- @param Dcs.DCSTypes#Vec2 Vec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_RADIUS:IsVec2InZone( Vec2 ) - self:F2( Vec2 ) - - local ZoneVec2 = self:GetVec2() - - if ZoneVec2 then - if (( Vec2.x - ZoneVec2.x )^2 + ( Vec2.y - ZoneVec2.y ) ^2 ) ^ 0.5 <= self:GetRadius() then - return true - end - end - - return false -end - ---- Returns if a point is within the zone. --- @param #ZONE_RADIUS self --- @param Dcs.DCSTypes#Vec3 Vec3 The point to test. --- @return #boolean true if the point is within the zone. -function ZONE_RADIUS:IsVec3InZone( Vec3 ) - self:F2( Vec3 ) - - local InZone = self:IsVec2InZone( { x = Vec3.x, y = Vec3.z } ) - - return InZone -end - ---- Returns a random Vec2 location within the zone. --- @param #ZONE_RADIUS self --- @param #number inner (optional) Minimal distance from the center of the zone. Default is 0. --- @param #number outer (optional) Maximal distance from the outer edge of the zone. Default is the radius of the zone. --- @return Dcs.DCSTypes#Vec2 The random location within the zone. -function ZONE_RADIUS:GetRandomVec2( inner, outer ) - self:F( self.ZoneName, inner, outer ) - - local Point = {} - local Vec2 = self:GetVec2() - local _inner = inner or 0 - local _outer = outer or self:GetRadius() - - local angle = math.random() * math.pi * 2; - Point.x = Vec2.x + math.cos( angle ) * math.random(_inner, _outer); - Point.y = Vec2.y + math.sin( angle ) * math.random(_inner, _outer); - - self:T( { Point } ) - - return Point -end - ---- Returns a @{Point#POINT_VEC2} object reflecting a random 2D location within the zone. --- @param #ZONE_RADIUS self --- @param #number inner (optional) Minimal distance from the center of the zone. Default is 0. --- @param #number outer (optional) Maximal distance from the outer edge of the zone. Default is the radius of the zone. --- @return Core.Point#POINT_VEC2 The @{Point#POINT_VEC2} object reflecting the random 3D location within the zone. -function ZONE_RADIUS:GetRandomPointVec2( inner, outer ) - self:F( self.ZoneName, inner, outer ) - - local PointVec2 = POINT_VEC2:NewFromVec2( self:GetRandomVec2() ) - - self:T3( { PointVec2 } ) - - return PointVec2 -end - ---- Returns a @{Point#POINT_VEC3} object reflecting a random 3D location within the zone. --- @param #ZONE_RADIUS self --- @param #number inner (optional) Minimal distance from the center of the zone. Default is 0. --- @param #number outer (optional) Maximal distance from the outer edge of the zone. Default is the radius of the zone. --- @return Core.Point#POINT_VEC3 The @{Point#POINT_VEC3} object reflecting the random 3D location within the zone. -function ZONE_RADIUS:GetRandomPointVec3( inner, outer ) - self:F( self.ZoneName, inner, outer ) - - local PointVec3 = POINT_VEC3:NewFromVec2( self:GetRandomVec2() ) - - self:T3( { PointVec3 } ) - - return PointVec3 -end - - - --- @type ZONE --- @extends Core.Zone#ZONE_RADIUS - - ---- # 3) ZONE class, extends @{Zone#ZONE_RADIUS} --- --- The ZONE class, defined by the zone name as defined within the Mission Editor. --- This class implements the inherited functions from @{#ZONE_RADIUS} taking into account the own zone format and properties. --- --- === --- --- @field #ZONE ZONE --- -ZONE = { - ClassName="ZONE", - } - - ---- Constructor of ZONE, taking the zone name. --- @param #ZONE self --- @param #string ZoneName The name of the zone as defined within the mission editor. --- @return #ZONE -function ZONE:New( ZoneName ) - - local Zone = trigger.misc.getZone( ZoneName ) - - if not Zone then - error( "Zone " .. ZoneName .. " does not exist." ) - return nil - end - - local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, { x = Zone.point.x, y = Zone.point.z }, Zone.radius ) ) - self:F( ZoneName ) - - self.Zone = Zone - - return self -end - - ---- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. --- @type ZONE_UNIT --- @field Wrapper.Unit#UNIT ZoneUNIT --- @extends Core.Zone#ZONE_RADIUS - ---- # 4) #ZONE_UNIT class, extends @{Zone#ZONE_RADIUS} --- --- The ZONE_UNIT class defined by a zone around a @{Unit#UNIT} with a radius. --- This class implements the inherited functions from @{#ZONE_RADIUS} taking into account the own zone format and properties. --- --- === --- --- @field #ZONE_UNIT ZONE_UNIT --- -ZONE_UNIT = { - ClassName="ZONE_UNIT", - } - ---- Constructor to create a ZONE_UNIT instance, taking the zone name, a zone unit and a radius. --- @param #ZONE_UNIT self --- @param #string ZoneName Name of the zone. --- @param Wrapper.Unit#UNIT ZoneUNIT The unit as the center of the zone. --- @param Dcs.DCSTypes#Distance Radius The radius of the zone. --- @return #ZONE_UNIT self -function ZONE_UNIT:New( ZoneName, ZoneUNIT, Radius ) - local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, ZoneUNIT:GetVec2(), Radius ) ) - self:F( { ZoneName, ZoneUNIT:GetVec2(), Radius } ) - - self.ZoneUNIT = ZoneUNIT - self.LastVec2 = ZoneUNIT:GetVec2() - - return self -end - - ---- Returns the current location of the @{Unit#UNIT}. --- @param #ZONE_UNIT self --- @return Dcs.DCSTypes#Vec2 The location of the zone based on the @{Unit#UNIT}location. -function ZONE_UNIT:GetVec2() - self:F( self.ZoneName ) - - local ZoneVec2 = self.ZoneUNIT:GetVec2() - if ZoneVec2 then - self.LastVec2 = ZoneVec2 - return ZoneVec2 - else - return self.LastVec2 - end - - self:T( { ZoneVec2 } ) - - return nil -end - ---- Returns a random location within the zone. --- @param #ZONE_UNIT self --- @return Dcs.DCSTypes#Vec2 The random location within the zone. -function ZONE_UNIT:GetRandomVec2() - self:F( self.ZoneName ) - - local RandomVec2 = {} - local Vec2 = self.ZoneUNIT:GetVec2() - - if not Vec2 then - Vec2 = self.LastVec2 - end - - local angle = math.random() * math.pi*2; - RandomVec2.x = Vec2.x + math.cos( angle ) * math.random() * self:GetRadius(); - RandomVec2.y = Vec2.y + math.sin( angle ) * math.random() * self:GetRadius(); - - self:T( { RandomVec2 } ) - - return RandomVec2 -end - ---- Returns the @{DCSTypes#Vec3} of the ZONE_UNIT. --- @param #ZONE_UNIT self --- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. --- @return Dcs.DCSTypes#Vec3 The point of the zone. -function ZONE_UNIT:GetVec3( Height ) - self:F2( self.ZoneName ) - - Height = Height or 0 - - local Vec2 = self:GetVec2() - - local Vec3 = { x = Vec2.x, y = land.getHeight( self:GetVec2() ) + Height, z = Vec2.y } - - self:T2( { Vec3 } ) - - return Vec3 -end - ---- @type ZONE_GROUP --- @field Wrapper.Group#GROUP ZoneGROUP --- @extends Core.Zone#ZONE_RADIUS - - ---- # 5) #ZONE_GROUP class, extends @{Zone#ZONE_RADIUS} --- --- The ZONE_GROUP class defines by a zone around a @{Group#GROUP} with a radius. The current leader of the group defines the center of the zone. --- This class implements the inherited functions from @{Zone#ZONE_RADIUS} taking into account the own zone format and properties. --- --- === --- --- @field #ZONE_GROUP ZONE_GROUP --- -ZONE_GROUP = { - ClassName="ZONE_GROUP", - } - ---- Constructor to create a ZONE_GROUP instance, taking the zone name, a zone @{Group#GROUP} and a radius. --- @param #ZONE_GROUP self --- @param #string ZoneName Name of the zone. --- @param Wrapper.Group#GROUP ZoneGROUP The @{Group} as the center of the zone. --- @param Dcs.DCSTypes#Distance Radius The radius of the zone. --- @return #ZONE_GROUP self -function ZONE_GROUP:New( ZoneName, ZoneGROUP, Radius ) - local self = BASE:Inherit( self, ZONE_RADIUS:New( ZoneName, ZoneGROUP:GetVec2(), Radius ) ) - self:F( { ZoneName, ZoneGROUP:GetVec2(), Radius } ) - - self.ZoneGROUP = ZoneGROUP - - return self -end - - ---- Returns the current location of the @{Group}. --- @param #ZONE_GROUP self --- @return Dcs.DCSTypes#Vec2 The location of the zone based on the @{Group} location. -function ZONE_GROUP:GetVec2() - self:F( self.ZoneName ) - - local ZoneVec2 = self.ZoneGROUP:GetVec2() - - self:T( { ZoneVec2 } ) - - return ZoneVec2 -end - ---- Returns a random location within the zone of the @{Group}. --- @param #ZONE_GROUP self --- @return Dcs.DCSTypes#Vec2 The random location of the zone based on the @{Group} location. -function ZONE_GROUP:GetRandomVec2() - self:F( self.ZoneName ) - - local Point = {} - local Vec2 = self.ZoneGROUP:GetVec2() - - local angle = math.random() * math.pi*2; - Point.x = Vec2.x + math.cos( angle ) * math.random() * self:GetRadius(); - Point.y = Vec2.y + math.sin( angle ) * math.random() * self:GetRadius(); - - self:T( { Point } ) - - return Point -end - - - ---- @type ZONE_POLYGON_BASE --- @field #ZONE_POLYGON_BASE.ListVec2 Polygon The polygon defined by an array of @{DCSTypes#Vec2}. --- @extends Core.Zone#ZONE_BASE - - ---- # 6) ZONE_POLYGON_BASE class, extends @{Zone#ZONE_BASE} --- --- The ZONE_POLYGON_BASE class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. --- This class implements the inherited functions from @{Zone#ZONE_RADIUS} taking into account the own zone format and properties. --- This class is an abstract BASE class for derived classes, and is not meant to be instantiated. --- --- ## 6.1) Zone point randomization --- --- Various functions exist to find random points within the zone. --- --- * @{#ZONE_POLYGON_BASE.GetRandomVec2}(): Gets a random 2D point in the zone. --- * @{#ZONE_POLYGON_BASE.GetRandomPointVec2}(): Return a @{Point#POINT_VEC2} object representing a random 2D point within the zone. --- * @{#ZONE_POLYGON_BASE.GetRandomPointVec3}(): Return a @{Point#POINT_VEC3} object representing a random 3D point at landheight within the zone. --- --- === --- --- @field #ZONE_POLYGON_BASE ZONE_POLYGON_BASE --- -ZONE_POLYGON_BASE = { - ClassName="ZONE_POLYGON_BASE", - } - ---- A points array. --- @type ZONE_POLYGON_BASE.ListVec2 --- @list - ---- Constructor to create a ZONE_POLYGON_BASE instance, taking the zone name and an array of @{DCSTypes#Vec2}, forming a polygon. --- The @{Group#GROUP} waypoints define the polygon corners. The first and the last point are automatically connected. --- @param #ZONE_POLYGON_BASE self --- @param #string ZoneName Name of the zone. --- @param #ZONE_POLYGON_BASE.ListVec2 PointsArray An array of @{DCSTypes#Vec2}, forming a polygon.. --- @return #ZONE_POLYGON_BASE self -function ZONE_POLYGON_BASE:New( ZoneName, PointsArray ) - local self = BASE:Inherit( self, ZONE_BASE:New( ZoneName ) ) - self:F( { ZoneName, PointsArray } ) - - local i = 0 - - self.Polygon = {} - - for i = 1, #PointsArray do - self.Polygon[i] = {} - self.Polygon[i].x = PointsArray[i].x - self.Polygon[i].y = PointsArray[i].y - end - - return self -end - ---- Flush polygon coordinates as a table in DCS.log. --- @param #ZONE_POLYGON_BASE self --- @return #ZONE_POLYGON_BASE self -function ZONE_POLYGON_BASE:Flush() - self:F2() - - self:E( { Polygon = self.ZoneName, Coordinates = self.Polygon } ) - - return self -end - ---- Smokes the zone boundaries in a color. --- @param #ZONE_POLYGON_BASE self --- @param #boolean UnBound If true, the tyres will be destroyed. --- @return #ZONE_POLYGON_BASE self -function ZONE_POLYGON_BASE:BoundZone( UnBound ) - - local i - local j - local Segments = 10 - - i = 1 - j = #self.Polygon - - while i <= #self.Polygon do - self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) - - local DeltaX = self.Polygon[j].x - self.Polygon[i].x - local DeltaY = self.Polygon[j].y - self.Polygon[i].y - - for Segment = 0, Segments do -- We divide each line in 5 segments and smoke a point on the line. - local PointX = self.Polygon[i].x + ( Segment * DeltaX / Segments ) - local PointY = self.Polygon[i].y + ( Segment * DeltaY / Segments ) - local Tire = { - ["country"] = "USA", - ["category"] = "Fortifications", - ["canCargo"] = false, - ["shape_name"] = "H-tyre_B_WF", - ["type"] = "Black_Tyre_WF", - ["y"] = PointY, - ["x"] = PointX, - ["name"] = string.format( "%s-Tire #%0d", self:GetName(), ((i - 1) * Segments) + Segment ), - ["heading"] = 0, - } -- end of ["group"] - - local Group = coalition.addStaticObject( country.id.USA, Tire ) - if UnBound and UnBound == true then - Group:destroy() - end - - end - j = i - i = i + 1 - end - - return self -end - - - ---- Smokes the zone boundaries in a color. --- @param #ZONE_POLYGON_BASE self --- @param Utilities.Utils#SMOKECOLOR SmokeColor The smoke color. --- @return #ZONE_POLYGON_BASE self -function ZONE_POLYGON_BASE:SmokeZone( SmokeColor ) - self:F2( SmokeColor ) - - local i - local j - local Segments = 10 - - i = 1 - j = #self.Polygon - - while i <= #self.Polygon do - self:T( { i, j, self.Polygon[i], self.Polygon[j] } ) - - local DeltaX = self.Polygon[j].x - self.Polygon[i].x - local DeltaY = self.Polygon[j].y - self.Polygon[i].y - - for Segment = 0, Segments do -- We divide each line in 5 segments and smoke a point on the line. - local PointX = self.Polygon[i].x + ( Segment * DeltaX / Segments ) - local PointY = self.Polygon[i].y + ( Segment * DeltaY / Segments ) - POINT_VEC2:New( PointX, PointY ):Smoke( SmokeColor ) - end - j = i - i = i + 1 - end - - return self -end - - - - ---- Returns if a location is within the zone. --- Source learned and taken from: https://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html --- @param #ZONE_POLYGON_BASE self --- @param Dcs.DCSTypes#Vec2 Vec2 The location to test. --- @return #boolean true if the location is within the zone. -function ZONE_POLYGON_BASE:IsVec2InZone( Vec2 ) - self:F2( Vec2 ) - - local Next - local Prev - local InPolygon = false - - Next = 1 - Prev = #self.Polygon - - while Next <= #self.Polygon do - self:T( { Next, Prev, self.Polygon[Next], self.Polygon[Prev] } ) - if ( ( ( self.Polygon[Next].y > Vec2.y ) ~= ( self.Polygon[Prev].y > Vec2.y ) ) and - ( Vec2.x < ( self.Polygon[Prev].x - self.Polygon[Next].x ) * ( Vec2.y - self.Polygon[Next].y ) / ( self.Polygon[Prev].y - self.Polygon[Next].y ) + self.Polygon[Next].x ) - ) then - InPolygon = not InPolygon - end - self:T2( { InPolygon = InPolygon } ) - Prev = Next - Next = Next + 1 - end - - self:T( { InPolygon = InPolygon } ) - return InPolygon -end - ---- Define a random @{DCSTypes#Vec2} within the zone. --- @param #ZONE_POLYGON_BASE self --- @return Dcs.DCSTypes#Vec2 The Vec2 coordinate. -function ZONE_POLYGON_BASE:GetRandomVec2() - self:F2() - - --- It is a bit tricky to find a random point within a polygon. Right now i am doing it the dirty and inefficient way... - local Vec2Found = false - local Vec2 - local BS = self:GetBoundingSquare() - - self:T2( BS ) - - while Vec2Found == false do - Vec2 = { x = math.random( BS.x1, BS.x2 ), y = math.random( BS.y1, BS.y2 ) } - self:T2( Vec2 ) - if self:IsVec2InZone( Vec2 ) then - Vec2Found = true - end - end - - self:T2( Vec2 ) - - return Vec2 -end - ---- Return a @{Point#POINT_VEC2} object representing a random 2D point at landheight within the zone. --- @param #ZONE_POLYGON_BASE self --- @return @{Point#POINT_VEC2} -function ZONE_POLYGON_BASE:GetRandomPointVec2() - self:F2() - - local PointVec2 = POINT_VEC2:NewFromVec2( self:GetRandomVec2() ) - - self:T2( PointVec2 ) - - return PointVec2 -end - ---- Return a @{Point#POINT_VEC3} object representing a random 3D point at landheight within the zone. --- @param #ZONE_POLYGON_BASE self --- @return @{Point#POINT_VEC3} -function ZONE_POLYGON_BASE:GetRandomPointVec3() - self:F2() - - local PointVec3 = POINT_VEC3:NewFromVec2( self:GetRandomVec2() ) - - self:T2( PointVec3 ) - - return PointVec3 -end - - ---- Get the bounding square the zone. --- @param #ZONE_POLYGON_BASE self --- @return #ZONE_POLYGON_BASE.BoundingSquare The bounding square. -function ZONE_POLYGON_BASE:GetBoundingSquare() - - local x1 = self.Polygon[1].x - local y1 = self.Polygon[1].y - local x2 = self.Polygon[1].x - local y2 = self.Polygon[1].y - - for i = 2, #self.Polygon do - self:T2( { self.Polygon[i], x1, y1, x2, y2 } ) - x1 = ( x1 > self.Polygon[i].x ) and self.Polygon[i].x or x1 - x2 = ( x2 < self.Polygon[i].x ) and self.Polygon[i].x or x2 - y1 = ( y1 > self.Polygon[i].y ) and self.Polygon[i].y or y1 - y2 = ( y2 < self.Polygon[i].y ) and self.Polygon[i].y or y2 - - end - - return { x1 = x1, y1 = y1, x2 = x2, y2 = y2 } -end - - ---- @type ZONE_POLYGON --- @extends Core.Zone#ZONE_POLYGON_BASE - - ---- # 7) ZONE_POLYGON class, extends @{Zone#ZONE_POLYGON_BASE} --- --- The ZONE_POLYGON class defined by a sequence of @{Group#GROUP} waypoints within the Mission Editor, forming a polygon. --- This class implements the inherited functions from @{Zone#ZONE_RADIUS} taking into account the own zone format and properties. --- --- === --- --- @field #ZONE_POLYGON ZONE_POLYGON --- -ZONE_POLYGON = { - ClassName="ZONE_POLYGON", - } - ---- Constructor to create a ZONE_POLYGON instance, taking the zone name and the name of the @{Group#GROUP} defined within the Mission Editor. --- The @{Group#GROUP} waypoints define the polygon corners. The first and the last point are automatically connected by ZONE_POLYGON. --- @param #ZONE_POLYGON self --- @param #string ZoneName Name of the zone. --- @param Wrapper.Group#GROUP ZoneGroup The GROUP waypoints as defined within the Mission Editor define the polygon shape. --- @return #ZONE_POLYGON self -function ZONE_POLYGON:New( ZoneName, ZoneGroup ) - - local GroupPoints = ZoneGroup:GetTaskRoute() - - local self = BASE:Inherit( self, ZONE_POLYGON_BASE:New( ZoneName, GroupPoints ) ) - self:F( { ZoneName, ZoneGroup, self.Polygon } ) - - return self -end - ---- This module contains the DATABASE class, managing the database of mission objects. --- --- ==== --- --- 1) @{#DATABASE} class, extends @{Base#BASE} --- =================================================== --- Mission designers can use the DATABASE class to refer to: --- --- * UNITS --- * GROUPS --- * CLIENTS --- * AIRPORTS --- * PLAYERSJOINED --- * PLAYERS --- --- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Group TEMPLATES as defined within the Mission Editor. --- --- Moose will automatically create one instance of the DATABASE class into the **global** object _DATABASE. --- Moose refers to _DATABASE within the framework extensively, but you can also refer to the _DATABASE object within your missions if required. --- --- 1.1) DATABASE iterators --- ----------------------- --- You can iterate the database with the available iterator methods. --- The iterator methods will walk the DATABASE set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the DATABASE: --- --- * @{#DATABASE.ForEachUnit}: Calls a function for each @{UNIT} it finds within the DATABASE. --- * @{#DATABASE.ForEachGroup}: Calls a function for each @{GROUP} it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayer}: Calls a function for each alive player it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayerJoined}: Calls a function for each joined player it finds within the DATABASE. --- * @{#DATABASE.ForEachClient}: Calls a function for each @{CLIENT} it finds within the DATABASE. --- * @{#DATABASE.ForEachClientAlive}: Calls a function for each alive @{CLIENT} it finds within the DATABASE. --- --- === --- --- @module Database --- @author FlightControl - ---- DATABASE class --- @type DATABASE --- @extends Core.Base#BASE -DATABASE = { - ClassName = "DATABASE", - Templates = { - Units = {}, - Groups = {}, - ClientsByName = {}, - ClientsByID = {}, - }, - UNITS = {}, - STATICS = {}, - GROUPS = {}, - PLAYERS = {}, - PLAYERSJOINED = {}, - CLIENTS = {}, - AIRBASES = {}, - COUNTRY_ID = {}, - COUNTRY_NAME = {}, - NavPoints = {}, -} - -local _DATABASECoalition = - { - [1] = "Red", - [2] = "Blue", - } - -local _DATABASECategory = - { - ["plane"] = Unit.Category.AIRPLANE, - ["helicopter"] = Unit.Category.HELICOPTER, - ["vehicle"] = Unit.Category.GROUND_UNIT, - ["ship"] = Unit.Category.SHIP, - ["static"] = Unit.Category.STRUCTURE, - } - - ---- Creates a new DATABASE object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. --- @param #DATABASE self --- @return #DATABASE --- @usage --- -- Define a new DATABASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE. --- DBObject = DATABASE:New() -function DATABASE:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) - - self:SetEventPriority( 1 ) - - self:HandleEvent( EVENTS.Birth, self._EventOnBirth ) - self:HandleEvent( EVENTS.Dead, self._EventOnDeadOrCrash ) - self:HandleEvent( EVENTS.Crash, self._EventOnDeadOrCrash ) - - -- Follow alive players and clients - self:HandleEvent( EVENTS.PlayerEnterUnit, self._EventOnPlayerEnterUnit ) - self:HandleEvent( EVENTS.PlayerLeaveUnit, self._EventOnPlayerLeaveUnit ) - - self:_RegisterTemplates() - self:_RegisterGroupsAndUnits() - self:_RegisterClients() - self:_RegisterStatics() - self:_RegisterPlayers() - self:_RegisterAirbases() - - return self -end - ---- Finds a Unit based on the Unit Name. --- @param #DATABASE self --- @param #string UnitName --- @return Wrapper.Unit#UNIT The found Unit. -function DATABASE:FindUnit( UnitName ) - - local UnitFound = self.UNITS[UnitName] - return UnitFound -end - - ---- Adds a Unit based on the Unit Name in the DATABASE. --- @param #DATABASE self -function DATABASE:AddUnit( DCSUnitName ) - - if not self.UNITS[DCSUnitName] then - local UnitRegister = UNIT:Register( DCSUnitName ) - self.UNITS[DCSUnitName] = UNIT:Register( DCSUnitName ) - end - - return self.UNITS[DCSUnitName] -end - - ---- Deletes a Unit from the DATABASE based on the Unit Name. --- @param #DATABASE self -function DATABASE:DeleteUnit( DCSUnitName ) - - --self.UNITS[DCSUnitName] = nil -end - ---- Adds a Static based on the Static Name in the DATABASE. --- @param #DATABASE self -function DATABASE:AddStatic( DCSStaticName ) - - if not self.STATICS[DCSStaticName] then - self.STATICS[DCSStaticName] = STATIC:Register( DCSStaticName ) - end -end - - ---- Deletes a Static from the DATABASE based on the Static Name. --- @param #DATABASE self -function DATABASE:DeleteStatic( DCSStaticName ) - - --self.STATICS[DCSStaticName] = nil -end - ---- Finds a STATIC based on the StaticName. --- @param #DATABASE self --- @param #string StaticName --- @return Wrapper.Static#STATIC The found STATIC. -function DATABASE:FindStatic( StaticName ) - - local StaticFound = self.STATICS[StaticName] - return StaticFound -end - ---- Adds a Airbase based on the Airbase Name in the DATABASE. --- @param #DATABASE self -function DATABASE:AddAirbase( DCSAirbaseName ) - - if not self.AIRBASES[DCSAirbaseName] then - self.AIRBASES[DCSAirbaseName] = AIRBASE:Register( DCSAirbaseName ) - end -end - - ---- Deletes a Airbase from the DATABASE based on the Airbase Name. --- @param #DATABASE self -function DATABASE:DeleteAirbase( DCSAirbaseName ) - - --self.AIRBASES[DCSAirbaseName] = nil -end - ---- Finds a AIRBASE based on the AirbaseName. --- @param #DATABASE self --- @param #string AirbaseName --- @return Wrapper.Airbase#AIRBASE The found AIRBASE. -function DATABASE:FindAirbase( AirbaseName ) - - local AirbaseFound = self.AIRBASES[AirbaseName] - return AirbaseFound -end - - ---- Finds a CLIENT based on the ClientName. --- @param #DATABASE self --- @param #string ClientName --- @return Wrapper.Client#CLIENT The found CLIENT. -function DATABASE:FindClient( ClientName ) - - local ClientFound = self.CLIENTS[ClientName] - return ClientFound -end - - ---- Adds a CLIENT based on the ClientName in the DATABASE. --- @param #DATABASE self -function DATABASE:AddClient( ClientName ) - - if not self.CLIENTS[ClientName] then - self.CLIENTS[ClientName] = CLIENT:Register( ClientName ) - end - - return self.CLIENTS[ClientName] -end - - ---- Finds a GROUP based on the GroupName. --- @param #DATABASE self --- @param #string GroupName --- @return Wrapper.Group#GROUP The found GROUP. -function DATABASE:FindGroup( GroupName ) - - local GroupFound = self.GROUPS[GroupName] - return GroupFound -end - - ---- Adds a GROUP based on the GroupName in the DATABASE. --- @param #DATABASE self -function DATABASE:AddGroup( GroupName ) - - if not self.GROUPS[GroupName] then - self:E( { "Add GROUP:", GroupName } ) - self.GROUPS[GroupName] = GROUP:Register( GroupName ) - end - - return self.GROUPS[GroupName] -end - ---- Adds a player based on the Player Name in the DATABASE. --- @param #DATABASE self -function DATABASE:AddPlayer( UnitName, PlayerName ) - - if PlayerName then - self:E( { "Add player for unit:", UnitName, PlayerName } ) - self.PLAYERS[PlayerName] = self:FindUnit( UnitName ) - self.PLAYERSJOINED[PlayerName] = PlayerName - end -end - ---- Deletes a player from the DATABASE based on the Player Name. --- @param #DATABASE self -function DATABASE:DeletePlayer( PlayerName ) - - if PlayerName then - self:E( { "Clean player:", PlayerName } ) - self.PLAYERS[PlayerName] = nil - end -end - - ---- Instantiate new Groups within the DCSRTE. --- This method expects EXACTLY the same structure as a structure within the ME, and needs 2 additional fields defined: --- SpawnCountryID, SpawnCategoryID --- This method is used by the SPAWN class. --- @param #DATABASE self --- @param #table SpawnTemplate --- @return #DATABASE self -function DATABASE:Spawn( SpawnTemplate ) - self:F( SpawnTemplate.name ) - - self:T( { SpawnTemplate.SpawnCountryID, SpawnTemplate.SpawnCategoryID } ) - - -- Copy the spawn variables of the template in temporary storage, nullify, and restore the spawn variables. - local SpawnCoalitionID = SpawnTemplate.CoalitionID - local SpawnCountryID = SpawnTemplate.CountryID - local SpawnCategoryID = SpawnTemplate.CategoryID - - -- Nullify - SpawnTemplate.CoalitionID = nil - SpawnTemplate.CountryID = nil - SpawnTemplate.CategoryID = nil - - self:_RegisterTemplate( SpawnTemplate, SpawnCoalitionID, SpawnCategoryID, SpawnCountryID ) - - self:T3( SpawnTemplate ) - coalition.addGroup( SpawnCountryID, SpawnCategoryID, SpawnTemplate ) - - -- Restore - SpawnTemplate.CoalitionID = SpawnCoalitionID - SpawnTemplate.CountryID = SpawnCountryID - SpawnTemplate.CategoryID = SpawnCategoryID - - local SpawnGroup = self:AddGroup( SpawnTemplate.name ) - return SpawnGroup -end - ---- Set a status to a Group within the Database, this to check crossing events for example. -function DATABASE:SetStatusGroup( GroupName, Status ) - self:F2( Status ) - - self.Templates.Groups[GroupName].Status = Status -end - ---- Get a status to a Group within the Database, this to check crossing events for example. -function DATABASE:GetStatusGroup( GroupName ) - self:F2( Status ) - - if self.Templates.Groups[GroupName] then - return self.Templates.Groups[GroupName].Status - else - return "" - end -end - ---- Private method that registers new Group Templates within the DATABASE Object. --- @param #DATABASE self --- @param #table GroupTemplate --- @return #DATABASE self -function DATABASE:_RegisterTemplate( GroupTemplate, CoalitionID, CategoryID, CountryID ) - - local GroupTemplateName = env.getValueDictByKey(GroupTemplate.name) - - local TraceTable = {} - - if not self.Templates.Groups[GroupTemplateName] then - self.Templates.Groups[GroupTemplateName] = {} - self.Templates.Groups[GroupTemplateName].Status = nil - end - - -- Delete the spans from the route, it is not needed and takes memory. - if GroupTemplate.route and GroupTemplate.route.spans then - GroupTemplate.route.spans = nil - end - - GroupTemplate.CategoryID = CategoryID - GroupTemplate.CoalitionID = CoalitionID - GroupTemplate.CountryID = CountryID - - self.Templates.Groups[GroupTemplateName].GroupName = GroupTemplateName - self.Templates.Groups[GroupTemplateName].Template = GroupTemplate - self.Templates.Groups[GroupTemplateName].groupId = GroupTemplate.groupId - self.Templates.Groups[GroupTemplateName].UnitCount = #GroupTemplate.units - self.Templates.Groups[GroupTemplateName].Units = GroupTemplate.units - self.Templates.Groups[GroupTemplateName].CategoryID = CategoryID - self.Templates.Groups[GroupTemplateName].CoalitionID = CoalitionID - self.Templates.Groups[GroupTemplateName].CountryID = CountryID - - - TraceTable[#TraceTable+1] = "Group" - TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].GroupName - - TraceTable[#TraceTable+1] = "Coalition" - TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CoalitionID - TraceTable[#TraceTable+1] = "Category" - TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CategoryID - TraceTable[#TraceTable+1] = "Country" - TraceTable[#TraceTable+1] = self.Templates.Groups[GroupTemplateName].CountryID - - TraceTable[#TraceTable+1] = "Units" - - for unit_num, UnitTemplate in pairs( GroupTemplate.units ) do - - UnitTemplate.name = env.getValueDictByKey(UnitTemplate.name) - - self.Templates.Units[UnitTemplate.name] = {} - self.Templates.Units[UnitTemplate.name].UnitName = UnitTemplate.name - self.Templates.Units[UnitTemplate.name].Template = UnitTemplate - self.Templates.Units[UnitTemplate.name].GroupName = GroupTemplateName - self.Templates.Units[UnitTemplate.name].GroupTemplate = GroupTemplate - self.Templates.Units[UnitTemplate.name].GroupId = GroupTemplate.groupId - self.Templates.Units[UnitTemplate.name].CategoryID = CategoryID - self.Templates.Units[UnitTemplate.name].CoalitionID = CoalitionID - self.Templates.Units[UnitTemplate.name].CountryID = CountryID - - if UnitTemplate.skill and (UnitTemplate.skill == "Client" or UnitTemplate.skill == "Player") then - self.Templates.ClientsByName[UnitTemplate.name] = UnitTemplate - self.Templates.ClientsByName[UnitTemplate.name].CategoryID = CategoryID - self.Templates.ClientsByName[UnitTemplate.name].CoalitionID = CoalitionID - self.Templates.ClientsByName[UnitTemplate.name].CountryID = CountryID - self.Templates.ClientsByID[UnitTemplate.unitId] = UnitTemplate - end - - TraceTable[#TraceTable+1] = self.Templates.Units[UnitTemplate.name].UnitName - end - - self:E( TraceTable ) -end - -function DATABASE:GetGroupTemplate( GroupName ) - local GroupTemplate = self.Templates.Groups[GroupName].Template - GroupTemplate.SpawnCoalitionID = self.Templates.Groups[GroupName].CoalitionID - GroupTemplate.SpawnCategoryID = self.Templates.Groups[GroupName].CategoryID - GroupTemplate.SpawnCountryID = self.Templates.Groups[GroupName].CountryID - return GroupTemplate -end - -function DATABASE:GetGroupNameFromUnitName( UnitName ) - return self.Templates.Units[UnitName].GroupName -end - -function DATABASE:GetGroupTemplateFromUnitName( UnitName ) - return self.Templates.Units[UnitName].GroupTemplate -end - -function DATABASE:GetCoalitionFromClientTemplate( ClientName ) - return self.Templates.ClientsByName[ClientName].CoalitionID -end - -function DATABASE:GetCategoryFromClientTemplate( ClientName ) - return self.Templates.ClientsByName[ClientName].CategoryID -end - -function DATABASE:GetCountryFromClientTemplate( ClientName ) - return self.Templates.ClientsByName[ClientName].CountryID -end - ---- Airbase - -function DATABASE:GetCoalitionFromAirbase( AirbaseName ) - return self.AIRBASES[AirbaseName]:GetCoalition() -end - -function DATABASE:GetCategoryFromAirbase( AirbaseName ) - return self.AIRBASES[AirbaseName]:GetCategory() -end - - - ---- Private method that registers all alive players in the mission. --- @param #DATABASE self --- @return #DATABASE self -function DATABASE:_RegisterPlayers() - - local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - for UnitId, UnitData in pairs( CoalitionData ) do - self:T3( { "UnitData:", UnitData } ) - if UnitData and UnitData:isExist() then - local UnitName = UnitData:getName() - local PlayerName = UnitData:getPlayerName() - if not self.PLAYERS[PlayerName] then - self:E( { "Add player for unit:", UnitName, PlayerName } ) - self:AddPlayer( UnitName, PlayerName ) - end - end - end - end - - return self -end - - ---- Private method that registers all Groups and Units within in the mission. --- @param #DATABASE self --- @return #DATABASE self -function DATABASE:_RegisterGroupsAndUnits() - - local CoalitionsData = { GroupsRed = coalition.getGroups( coalition.side.RED ), GroupsBlue = coalition.getGroups( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - for DCSGroupId, DCSGroup in pairs( CoalitionData ) do - - if DCSGroup:isExist() then - local DCSGroupName = DCSGroup:getName() - - self:E( { "Register Group:", DCSGroupName } ) - self:AddGroup( DCSGroupName ) - - for DCSUnitId, DCSUnit in pairs( DCSGroup:getUnits() ) do - - local DCSUnitName = DCSUnit:getName() - self:E( { "Register Unit:", DCSUnitName } ) - self:AddUnit( DCSUnitName ) - end - else - self:E( { "Group does not exist: ", DCSGroup } ) - end - - end - end - - return self -end - ---- Private method that registers all Units of skill Client or Player within in the mission. --- @param #DATABASE self --- @return #DATABASE self -function DATABASE:_RegisterClients() - - for ClientName, ClientTemplate in pairs( self.Templates.ClientsByName ) do - self:E( { "Register Client:", ClientName } ) - self:AddClient( ClientName ) - end - - return self -end - ---- @param #DATABASE self -function DATABASE:_RegisterStatics() - - local CoalitionsData = { GroupsRed = coalition.getStaticObjects( coalition.side.RED ), GroupsBlue = coalition.getStaticObjects( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - for DCSStaticId, DCSStatic in pairs( CoalitionData ) do - - if DCSStatic:isExist() then - local DCSStaticName = DCSStatic:getName() - - self:E( { "Register Static:", DCSStaticName } ) - self:AddStatic( DCSStaticName ) - else - self:E( { "Static does not exist: ", DCSStatic } ) - end - end - end - - return self -end - ---- @param #DATABASE self -function DATABASE:_RegisterAirbases() - - local CoalitionsData = { AirbasesRed = coalition.getAirbases( coalition.side.RED ), AirbasesBlue = coalition.getAirbases( coalition.side.BLUE ), AirbasesNeutral = coalition.getAirbases( coalition.side.NEUTRAL ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - for DCSAirbaseId, DCSAirbase in pairs( CoalitionData ) do - - local DCSAirbaseName = DCSAirbase:getName() - - self:E( { "Register Airbase:", DCSAirbaseName } ) - self:AddAirbase( DCSAirbaseName ) - end - end - - return self -end - - ---- Events - ---- Handles the OnBirth event for the alive units set. --- @param #DATABASE self --- @param Core.Event#EVENTDATA Event -function DATABASE:_EventOnBirth( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - if Event.IniObjectCategory == 3 then - self:AddStatic( Event.IniDCSUnitName ) - else - if Event.IniObjectCategory == 1 then - self:AddUnit( Event.IniDCSUnitName ) - self:AddGroup( Event.IniDCSGroupName ) - end - end - self:_EventOnPlayerEnterUnit( Event ) - end -end - - ---- Handles the OnDead or OnCrash event for alive units set. --- @param #DATABASE self --- @param Core.Event#EVENTDATA Event -function DATABASE:_EventOnDeadOrCrash( Event ) - self:F2( { Event } ) - - if Event.IniDCSUnit then - if Event.IniObjectCategory == 3 then - if self.STATICS[Event.IniDCSUnitName] then - self:DeleteStatic( Event.IniDCSUnitName ) - end - else - if Event.IniObjectCategory == 1 then - if self.UNITS[Event.IniDCSUnitName] then - self:DeleteUnit( Event.IniDCSUnitName ) - end - end - end - end -end - - ---- Handles the OnPlayerEnterUnit event to fill the active players table (with the unit filter applied). --- @param #DATABASE self --- @param Core.Event#EVENTDATA Event -function DATABASE:_EventOnPlayerEnterUnit( Event ) - self:F2( { Event } ) - - if Event.IniUnit then - if Event.IniObjectCategory == 1 then - self:AddUnit( Event.IniDCSUnitName ) - self:AddGroup( Event.IniDCSGroupName ) - local PlayerName = Event.IniUnit:GetPlayerName() - if not self.PLAYERS[PlayerName] then - self:AddPlayer( Event.IniUnitName, PlayerName ) - end - end - end -end - - ---- Handles the OnPlayerLeaveUnit event to clean the active players table. --- @param #DATABASE self --- @param Core.Event#EVENTDATA Event -function DATABASE:_EventOnPlayerLeaveUnit( Event ) - self:F2( { Event } ) - - if Event.IniUnit then - if Event.IniObjectCategory == 1 then - local PlayerName = Event.IniUnit:GetPlayerName() - if self.PLAYERS[PlayerName] then - self:DeletePlayer( PlayerName ) - end - end - end -end - ---- Iterators - ---- Iterate the DATABASE and call an iterator function for the given set, providing the Object for each element within the set and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. --- @return #DATABASE self -function DATABASE:ForEach( IteratorFunction, FinalizeFunction, arg, Set ) - self:F2( arg ) - - local function CoRoutine() - local Count = 0 - for ObjectID, Object in pairs( Set ) do - self:T2( Object ) - IteratorFunction( Object, unpack( arg ) ) - Count = Count + 1 --- if Count % 100 == 0 then --- coroutine.yield( false ) --- end - end - return true - end - --- local co = coroutine.create( CoRoutine ) - local co = CoRoutine - - local function Schedule() - --- local status, res = coroutine.resume( co ) - local status, res = co() - self:T3( { status, res } ) - - if status == false then - error( res ) - end - if res == false then - return true -- resume next time the loop - end - if FinalizeFunction then - FinalizeFunction( unpack( arg ) ) - end - return false - end - - local Scheduler = SCHEDULER:New( self, Schedule, {}, 0.001, 0.001, 0 ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each **alive** UNIT, providing the UNIT and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the database. The function needs to accept a UNIT parameter. --- @return #DATABASE self -function DATABASE:ForEachUnit( IteratorFunction, FinalizeFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, FinalizeFunction, arg, self.UNITS ) - - return self -end - ---- Iterate the DATABASE and call an iterator function for each **alive** GROUP, providing the GROUP and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the database. The function needs to accept a GROUP parameter. --- @return #DATABASE self -function DATABASE:ForEachGroup( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.GROUPS ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each **ALIVE** player, providing the player name and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an player in the database. The function needs to accept the player name. --- @return #DATABASE self -function DATABASE:ForEachPlayer( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.PLAYERS ) - - return self -end - - ---- Iterate the DATABASE and call an iterator function for each player who has joined the mission, providing the Unit of the player and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is was a player in the database. The function needs to accept a UNIT parameter. --- @return #DATABASE self -function DATABASE:ForEachPlayerJoined( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.PLAYERSJOINED ) - - return self -end - ---- Iterate the DATABASE and call an iterator function for each CLIENT, providing the CLIENT to the function and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a CLIENT parameter. --- @return #DATABASE self -function DATABASE:ForEachClient( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.CLIENTS ) - - return self -end - - -function DATABASE:_RegisterTemplates() - self:F2() - - self.Navpoints = {} - self.UNITS = {} - --Build routines.db.units and self.Navpoints - for CoalitionName, coa_data in pairs(env.mission.coalition) do - - if (CoalitionName == 'red' or CoalitionName == 'blue') and type(coa_data) == 'table' then - --self.Units[coa_name] = {} - - local CoalitionSide = coalition.side[string.upper(CoalitionName)] - - ---------------------------------------------- - -- build nav points DB - self.Navpoints[CoalitionName] = {} - if coa_data.nav_points then --navpoints - for nav_ind, nav_data in pairs(coa_data.nav_points) do - - if type(nav_data) == 'table' then - self.Navpoints[CoalitionName][nav_ind] = routines.utils.deepCopy(nav_data) - - self.Navpoints[CoalitionName][nav_ind]['name'] = nav_data.callsignStr -- name is a little bit more self-explanatory. - self.Navpoints[CoalitionName][nav_ind]['point'] = {} -- point is used by SSE, support it. - self.Navpoints[CoalitionName][nav_ind]['point']['x'] = nav_data.x - self.Navpoints[CoalitionName][nav_ind]['point']['y'] = 0 - self.Navpoints[CoalitionName][nav_ind]['point']['z'] = nav_data.y - end - end - end - ------------------------------------------------- - if coa_data.country then --there is a country table - for cntry_id, cntry_data in pairs(coa_data.country) do - - local CountryName = string.upper(cntry_data.name) - local CountryID = cntry_data.id - - self.COUNTRY_ID[CountryName] = CountryID - self.COUNTRY_NAME[CountryID] = CountryName - - --self.Units[coa_name][countryName] = {} - --self.Units[coa_name][countryName]["countryId"] = cntry_data.id - - if type(cntry_data) == 'table' then --just making sure - - for obj_type_name, obj_type_data in pairs(cntry_data) do - - if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then --should be an unncessary check - - local CategoryName = obj_type_name - - if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then --there's a group! - - --self.Units[coa_name][countryName][category] = {} - - for group_num, GroupTemplate in pairs(obj_type_data.group) do - - if GroupTemplate and GroupTemplate.units and type(GroupTemplate.units) == 'table' then --making sure again- this is a valid group - self:_RegisterTemplate( - GroupTemplate, - CoalitionSide, - _DATABASECategory[string.lower(CategoryName)], - CountryID - ) - end --if GroupTemplate and GroupTemplate.units then - end --for group_num, GroupTemplate in pairs(obj_type_data.group) do - end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then - end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then - end --for obj_type_name, obj_type_data in pairs(cntry_data) do - end --if type(cntry_data) == 'table' then - end --for cntry_id, cntry_data in pairs(coa_data.country) do - end --if coa_data.country then --there is a country table - end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then - end --for coa_name, coa_data in pairs(mission.coalition) do - - return self -end - - - - ---- **Core** - SET_ classes define **collections** of objects to perform **bulk actions** and logically **group** objects. --- --- ![Banner Image](..\Presentations\SET\Dia1.JPG) --- --- === --- --- SET_ classes group objects of the same type into a collection, which is either: --- --- * Manually managed using the **:Add...()** or **:Remove...()** methods. The initial SET can be filtered with the **@{#SET_BASE.FilterOnce}()** method --- * Dynamically updated when new objects are created or objects are destroyed using the **@{#SET_BASE.FilterStart}()** method. --- --- Various types of SET_ classes are available: --- --- * @{#SET_UNIT}: Defines a colleciton of @{Unit}s filtered by filter criteria. --- * @{#SET_GROUP}: Defines a collection of @{Group}s filtered by filter criteria. --- * @{#SET_CLIENT}: Defines a collection of @{Client}s filterd by filter criteria. --- * @{#SET_AIRBASE}: Defines a collection of @{Airbase}s filtered by filter criteria. --- --- These classes are derived from @{#SET_BASE}, which contains the main methods to manage SETs. --- --- A multitude of other methods are available in SET_ classes that allow to: --- --- * Validate the presence of objects in the SET. --- * Trigger events when objects in the SET change a zone presence. --- --- ### Authors: --- --- * FlightControl : Design & Programming --- --- ### Contributions: --- --- --- @module Set - - ---- @type SET_BASE --- @field #table Filter --- @field #table Set --- @field #table List --- @field Core.Scheduler#SCHEDULER CallScheduler --- @extends Core.Base#BASE - - ---- # 1) SET_BASE class, extends @{Base#BASE} --- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. --- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. --- In this way, large loops can be done while not blocking the simulator main processing loop. --- The default **"yield interval"** is after 10 objects processed. --- The default **"time interval"** is after 0.001 seconds. --- --- ## 1.1) Add or remove objects from the SET --- --- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. --- --- ## 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** --- --- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. --- You can set the **"yield interval"**, and the **"time interval"**. (See above). --- --- @field #SET_BASE SET_BASE -SET_BASE = { - ClassName = "SET_BASE", - Filter = {}, - Set = {}, - List = {}, - Index = {}, -} - - ---- Creates a new SET_BASE object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. --- @param #SET_BASE self --- @return #SET_BASE --- @usage --- -- Define a new SET_BASE Object. This DBObject will contain a reference to all Group and Unit Templates defined within the ME and the DCSRTE. --- DBObject = SET_BASE:New() -function SET_BASE:New( Database ) - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) -- Core.Set#SET_BASE - - self.Database = Database - - self.YieldInterval = 10 - self.TimeInterval = 0.001 - - self.Set = {} - - self.List = {} - self.List.__index = self.List - self.List = setmetatable( { Count = 0 }, self.List ) - - self.Index = {} - - self.CallScheduler = SCHEDULER:New( self ) - - self:SetEventPriority( 2 ) - - return self -end - ---- Finds an @{Base#BASE} object based on the object Name. --- @param #SET_BASE self --- @param #string ObjectName --- @return Core.Base#BASE The Object found. -function SET_BASE:_Find( ObjectName ) - - local ObjectFound = self.Set[ObjectName] - return ObjectFound -end - - ---- Gets the Set. --- @param #SET_BASE self --- @return #SET_BASE self -function SET_BASE:GetSet() - self:F2() - - return self.Set -end - ---- Adds a @{Base#BASE} object in the @{Set#SET_BASE}, using a given ObjectName as the index. --- @param #SET_BASE self --- @param #string ObjectName --- @param Core.Base#BASE Object --- @return Core.Base#BASE The added BASE Object. -function SET_BASE:Add( ObjectName, Object ) - self:F2( ObjectName ) - - local t = { _ = Object } - - if self.List.last then - self.List.last._next = t - t._prev = self.List.last - self.List.last = t - else - -- this is the first node - self.List.first = t - self.List.last = t - end - - self.List.Count = self.List.Count + 1 - - self.Set[ObjectName] = t._ - - table.insert( self.Index, ObjectName ) - -end - ---- Adds a @{Base#BASE} object in the @{Set#SET_BASE}, using the Object Name as the index. --- @param #SET_BASE self --- @param Wrapper.Object#OBJECT Object --- @return Core.Base#BASE The added BASE Object. -function SET_BASE:AddObject( Object ) - self:F2( Object.ObjectName ) - - self:T( Object.UnitName ) - self:T( Object.ObjectName ) - self:Add( Object.ObjectName, Object ) - -end - - - ---- Removes a @{Base#BASE} object from the @{Set#SET_BASE} and derived classes, based on the Object Name. --- @param #SET_BASE self --- @param #string ObjectName -function SET_BASE:Remove( ObjectName ) - self:F( ObjectName ) - - local t = self.Set[ObjectName] - - self:E( { ObjectName, t } ) - - if t then - if t._next then - if t._prev then - t._next._prev = t._prev - t._prev._next = t._next - else - -- this was the first node - t._next._prev = nil - self.List._first = t._next - end - elseif t._prev then - -- this was the last node - t._prev._next = nil - self.List._last = t._prev - else - -- this was the only node - self.List._first = nil - self.List._last = nil - end - - t._next = nil - t._prev = nil - self.List.Count = self.List.Count - 1 - - for Index, Key in ipairs( self.Index ) do - if Key == ObjectName then - table.remove( self.Index, Index ) - break - end - end - - self.Set[ObjectName] = nil - - end - -end - ---- Gets a @{Base#BASE} object from the @{Set#SET_BASE} and derived classes, based on the Object Name. --- @param #SET_BASE self --- @param #string ObjectName --- @return Core.Base#BASE -function SET_BASE:Get( ObjectName ) - self:F( ObjectName ) - - local t = self.Set[ObjectName] - - self:T3( { ObjectName, t } ) - - return t - -end - ---- Gets the first object from the @{Set#SET_BASE} and derived classes. --- @param #SET_BASE self --- @return Core.Base#BASE -function SET_BASE:GetFirst() - self:F() - - local ObjectName = self.Index[1] - local FirstObject = self.Set[ObjectName] - self:T3( { FirstObject } ) - return FirstObject -end - ---- Gets the last object from the @{Set#SET_BASE} and derived classes. --- @param #SET_BASE self --- @return Core.Base#BASE -function SET_BASE:GetLast() - self:F() - - local ObjectName = self.Index[#self.Index] - local LastObject = self.Set[ObjectName] - self:T3( { LastObject } ) - return LastObject -end - ---- Gets a random object from the @{Set#SET_BASE} and derived classes. --- @param #SET_BASE self --- @return Core.Base#BASE -function SET_BASE:GetRandom() - self:F() - - local RandomItem = self.Set[self.Index[math.random(#self.Index)]] - - self:T3( { RandomItem } ) - - return RandomItem -end - - ---- Retrieves the amount of objects in the @{Set#SET_BASE} and derived classes. --- @param #SET_BASE self --- @return #number Count -function SET_BASE:Count() - - return #self.Index or 0 -end - - - ---- Copies the Filter criteria from a given Set (for rebuilding a new Set based on an existing Set). --- @param #SET_BASE self --- @param #SET_BASE BaseSet --- @return #SET_BASE -function SET_BASE:SetDatabase( BaseSet ) - - -- Copy the filter criteria of the BaseSet - local OtherFilter = routines.utils.deepCopy( BaseSet.Filter ) - self.Filter = OtherFilter - - -- Now base the new Set on the BaseSet - self.Database = BaseSet:GetSet() - return self -end - - - ---- Define the SET iterator **"yield interval"** and the **"time interval"**. --- @param #SET_BASE self --- @param #number YieldInterval Sets the frequency when the iterator loop will yield after the number of objects processed. The default frequency is 10 objects processed. --- @param #number TimeInterval Sets the time in seconds when the main logic will resume the iterator loop. The default time is 0.001 seconds. --- @return #SET_BASE self -function SET_BASE:SetIteratorIntervals( YieldInterval, TimeInterval ) - - self.YieldInterval = YieldInterval - self.TimeInterval = TimeInterval - - return self -end - - ---- Filters for the defined collection. --- @param #SET_BASE self --- @return #SET_BASE self -function SET_BASE:FilterOnce() - - for ObjectName, Object in pairs( self.Database ) do - - if self:IsIncludeObject( Object ) then - self:Add( ObjectName, Object ) - end - end - - return self -end - ---- Starts the filtering for the defined collection. --- @param #SET_BASE self --- @return #SET_BASE self -function SET_BASE:_FilterStart() - - for ObjectName, Object in pairs( self.Database ) do - - if self:IsIncludeObject( Object ) then - self:E( { "Adding Object:", ObjectName } ) - self:Add( ObjectName, Object ) - end - end - - self:HandleEvent( EVENTS.Birth, self._EventOnBirth ) - self:HandleEvent( EVENTS.Dead, self._EventOnDeadOrCrash ) - self:HandleEvent( EVENTS.Crash, self._EventOnDeadOrCrash ) - - -- Follow alive players and clients - self:HandleEvent( EVENTS.PlayerEnterUnit, self._EventOnPlayerEnterUnit ) - self:HandleEvent( EVENTS.PlayerLeaveUnit, self._EventOnPlayerLeaveUnit ) - - - return self -end - ---- Stops the filtering for the defined collection. --- @param #SET_BASE self --- @return #SET_BASE self -function SET_BASE:FilterStop() - - self:UnHandleEvent( EVENTS.Birth ) - self:UnHandleEvent( EVENTS.Dead ) - self:UnHandleEvent( EVENTS.Crash ) - - return self -end - ---- Iterate the SET_BASE while identifying the nearest object from a @{Point#POINT_VEC2}. --- @param #SET_BASE self --- @param Core.Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest object in the set. --- @return Core.Base#BASE The closest object. -function SET_BASE:FindNearestObjectFromPointVec2( PointVec2 ) - self:F2( PointVec2 ) - - local NearestObject = nil - local ClosestDistance = nil - - for ObjectID, ObjectData in pairs( self.Set ) do - if NearestObject == nil then - NearestObject = ObjectData - ClosestDistance = PointVec2:DistanceFromVec2( ObjectData:GetVec2() ) - else - local Distance = PointVec2:DistanceFromVec2( ObjectData:GetVec2() ) - if Distance < ClosestDistance then - NearestObject = ObjectData - ClosestDistance = Distance - end - end - end - - return NearestObject -end - - - ------ Private method that registers all alive players in the mission. ----- @param #SET_BASE self ----- @return #SET_BASE self ---function SET_BASE:_RegisterPlayers() --- --- local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } --- for CoalitionId, CoalitionData in pairs( CoalitionsData ) do --- for UnitId, UnitData in pairs( CoalitionData ) do --- self:T3( { "UnitData:", UnitData } ) --- if UnitData and UnitData:isExist() then --- local UnitName = UnitData:getName() --- if not self.PlayersAlive[UnitName] then --- self:E( { "Add player for unit:", UnitName, UnitData:getPlayerName() } ) --- self.PlayersAlive[UnitName] = UnitData:getPlayerName() --- end --- end --- end --- end --- --- return self ---end - ---- Events - ---- Handles the OnBirth event for the Set. --- @param #SET_BASE self --- @param Core.Event#EVENTDATA Event -function SET_BASE:_EventOnBirth( Event ) - self:F3( { Event } ) - - if Event.IniDCSUnit then - local ObjectName, Object = self:AddInDatabase( Event ) - self:T3( ObjectName, Object ) - if Object and self:IsIncludeObject( Object ) then - self:Add( ObjectName, Object ) - --self:_EventOnPlayerEnterUnit( Event ) - end - end -end - ---- Handles the OnDead or OnCrash event for alive units set. --- @param #SET_BASE self --- @param Core.Event#EVENTDATA Event -function SET_BASE:_EventOnDeadOrCrash( Event ) - self:F3( { Event } ) - - if Event.IniDCSUnit then - local ObjectName, Object = self:FindInDatabase( Event ) - if ObjectName and Object ~= nil then - self:Remove( ObjectName ) - end - end -end - ---- Handles the OnPlayerEnterUnit event to fill the active players table (with the unit filter applied). --- @param #SET_BASE self --- @param Core.Event#EVENTDATA Event -function SET_BASE:_EventOnPlayerEnterUnit( Event ) - self:F3( { Event } ) - - if Event.IniDCSUnit then - local ObjectName, Object = self:AddInDatabase( Event ) - self:T3( ObjectName, Object ) - if self:IsIncludeObject( Object ) then - self:Add( ObjectName, Object ) - --self:_EventOnPlayerEnterUnit( Event ) - end - end -end - ---- Handles the OnPlayerLeaveUnit event to clean the active players table. --- @param #SET_BASE self --- @param Core.Event#EVENTDATA Event -function SET_BASE:_EventOnPlayerLeaveUnit( Event ) - self:F3( { Event } ) - - local ObjectName = Event.IniDCSUnit - if Event.IniDCSUnit then - if Event.IniDCSGroup then - local GroupUnits = Event.IniDCSGroup:getUnits() - local PlayerCount = 0 - for _, DCSUnit in pairs( GroupUnits ) do - if DCSUnit ~= Event.IniDCSUnit then - if DCSUnit:getPlayerName() ~= nil then - PlayerCount = PlayerCount + 1 - end - end - end - self:E(PlayerCount) - if PlayerCount == 0 then - self:Remove( Event.IniDCSGroupName ) - end - end - end -end - --- Iterators - ---- Iterate the SET_BASE and derived classes and call an iterator function for the given SET_BASE, providing the Object for each element within the set and optional parameters. --- @param #SET_BASE self --- @param #function IteratorFunction The function that will be called. --- @return #SET_BASE self -function SET_BASE:ForEach( IteratorFunction, arg, Set, Function, FunctionArguments ) - self:F3( arg ) - - Set = Set or self:GetSet() - arg = arg or {} - - local function CoRoutine() - local Count = 0 - for ObjectID, ObjectData in pairs( Set ) do - local Object = ObjectData - self:T3( Object ) - if Function then - if Function( unpack( FunctionArguments ), Object ) == true then - IteratorFunction( Object, unpack( arg ) ) - end - else - IteratorFunction( Object, unpack( arg ) ) - end - Count = Count + 1 --- if Count % self.YieldInterval == 0 then --- coroutine.yield( false ) --- end - end - return true - end - --- local co = coroutine.create( CoRoutine ) - local co = CoRoutine - - local function Schedule() - --- local status, res = coroutine.resume( co ) - local status, res = co() - self:T3( { status, res } ) - - if status == false then - error( res ) - end - if res == false then - return true -- resume next time the loop - end - - return false - end - - --self.CallScheduler:Schedule( self, Schedule, {}, self.TimeInterval, self.TimeInterval, 0 ) - Schedule() - - return self -end - - ------ Iterate the SET_BASE and call an interator function for each **alive** unit, providing the Unit and optional parameters. ----- @param #SET_BASE self ----- @param #function IteratorFunction The function that will be called when there is an alive unit in the SET_BASE. The function needs to accept a UNIT parameter. ----- @return #SET_BASE self ---function SET_BASE:ForEachDCSUnitAlive( IteratorFunction, ... ) --- self:F3( arg ) --- --- self:ForEach( IteratorFunction, arg, self.DCSUnitsAlive ) --- --- return self ---end --- ------ Iterate the SET_BASE and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. ----- @param #SET_BASE self ----- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a UNIT parameter. ----- @return #SET_BASE self ---function SET_BASE:ForEachPlayer( IteratorFunction, ... ) --- self:F3( arg ) --- --- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) --- --- return self ---end --- --- ------ Iterate the SET_BASE and call an interator function for each client, providing the Client to the function and optional parameters. ----- @param #SET_BASE self ----- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a CLIENT parameter. ----- @return #SET_BASE self ---function SET_BASE:ForEachClient( IteratorFunction, ... ) --- self:F3( arg ) --- --- self:ForEach( IteratorFunction, arg, self.Clients ) --- --- return self ---end - - ---- Decides whether to include the Object --- @param #SET_BASE self --- @param #table Object --- @return #SET_BASE self -function SET_BASE:IsIncludeObject( Object ) - self:F3( Object ) - - return true -end - ---- Flushes the current SET_BASE contents in the log ... (for debugging reasons). --- @param #SET_BASE self --- @return #string A string with the names of the objects. -function SET_BASE:Flush() - self:F3() - - local ObjectNames = "" - for ObjectName, Object in pairs( self.Set ) do - ObjectNames = ObjectNames .. ObjectName .. ", " - end - self:E( { "Objects in Set:", ObjectNames } ) - - return ObjectNames -end - - ---- @type SET_GROUP --- @extends Core.Set#SET_BASE - ---- # 2) SET_GROUP class, extends @{Set#SET_BASE} --- --- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Starting with certain prefix strings. --- --- ## 2.1) SET_GROUP constructor --- --- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: --- --- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. --- --- ## 2.2) Add or Remove GROUP(s) from SET_GROUP --- --- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. --- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. --- --- ## 2.3) SET_GROUP filter criteria --- --- You can set filter criteria to define the set of groups within the SET_GROUP. --- Filter criteria are defined by: --- --- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). --- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). --- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). --- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: --- --- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. --- --- ## 2.4) SET_GROUP iterators --- --- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. --- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_GROUP: --- --- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. --- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- --- === --- @field #SET_GROUP SET_GROUP -SET_GROUP = { - ClassName = "SET_GROUP", - Filter = { - Coalitions = nil, - Categories = nil, - Countries = nil, - GroupPrefixes = nil, - }, - FilterMeta = { - Coalitions = { - red = coalition.side.RED, - blue = coalition.side.BLUE, - neutral = coalition.side.NEUTRAL, - }, - Categories = { - plane = Group.Category.AIRPLANE, - helicopter = Group.Category.HELICOPTER, - ground = Group.Category.GROUND_UNIT, - ship = Group.Category.SHIP, - structure = Group.Category.STRUCTURE, - }, - }, -} - - ---- Creates a new SET_GROUP object, building a set of groups belonging to a coalitions, categories, countries, types or with defined prefix names. --- @param #SET_GROUP self --- @return #SET_GROUP --- @usage --- -- Define a new SET_GROUP Object. This DBObject will contain a reference to all alive GROUPS. --- DBObject = SET_GROUP:New() -function SET_GROUP:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.GROUPS ) ) - - return self -end - ---- Add GROUP(s) to SET_GROUP. --- @param Core.Set#SET_GROUP self --- @param #string AddGroupNames A single name or an array of GROUP names. --- @return self -function SET_GROUP:AddGroupsByName( AddGroupNames ) - - local AddGroupNamesArray = ( type( AddGroupNames ) == "table" ) and AddGroupNames or { AddGroupNames } - - for AddGroupID, AddGroupName in pairs( AddGroupNamesArray ) do - self:Add( AddGroupName, GROUP:FindByName( AddGroupName ) ) - end - - return self -end - ---- Remove GROUP(s) from SET_GROUP. --- @param Core.Set#SET_GROUP self --- @param Wrapper.Group#GROUP RemoveGroupNames A single name or an array of GROUP names. --- @return self -function SET_GROUP:RemoveGroupsByName( RemoveGroupNames ) - - local RemoveGroupNamesArray = ( type( RemoveGroupNames ) == "table" ) and RemoveGroupNames or { RemoveGroupNames } - - for RemoveGroupID, RemoveGroupName in pairs( RemoveGroupNamesArray ) do - self:Remove( RemoveGroupName.GroupName ) - end - - return self -end - - - - ---- Finds a Group based on the Group Name. --- @param #SET_GROUP self --- @param #string GroupName --- @return Wrapper.Group#GROUP The found Group. -function SET_GROUP:FindGroup( GroupName ) - - local GroupFound = self.Set[GroupName] - return GroupFound -end - - - ---- Builds a set of groups of coalitions. --- Possible current coalitions are red, blue and neutral. --- @param #SET_GROUP self --- @param #string Coalitions Can take the following values: "red", "blue", "neutral". --- @return #SET_GROUP self -function SET_GROUP:FilterCoalitions( Coalitions ) - if not self.Filter.Coalitions then - self.Filter.Coalitions = {} - end - if type( Coalitions ) ~= "table" then - Coalitions = { Coalitions } - end - for CoalitionID, Coalition in pairs( Coalitions ) do - self.Filter.Coalitions[Coalition] = Coalition - end - return self -end - - ---- Builds a set of groups out of categories. --- Possible current categories are plane, helicopter, ground, ship. --- @param #SET_GROUP self --- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". --- @return #SET_GROUP self -function SET_GROUP:FilterCategories( Categories ) - if not self.Filter.Categories then - self.Filter.Categories = {} - end - if type( Categories ) ~= "table" then - Categories = { Categories } - end - for CategoryID, Category in pairs( Categories ) do - self.Filter.Categories[Category] = Category - end - return self -end - ---- Builds a set of groups of defined countries. --- Possible current countries are those known within DCS world. --- @param #SET_GROUP self --- @param #string Countries Can take those country strings known within DCS world. --- @return #SET_GROUP self -function SET_GROUP:FilterCountries( Countries ) - if not self.Filter.Countries then - self.Filter.Countries = {} - end - if type( Countries ) ~= "table" then - Countries = { Countries } - end - for CountryID, Country in pairs( Countries ) do - self.Filter.Countries[Country] = Country - end - return self -end - - ---- Builds a set of groups of defined GROUP prefixes. --- All the groups starting with the given prefixes will be included within the set. --- @param #SET_GROUP self --- @param #string Prefixes The prefix of which the group name starts with. --- @return #SET_GROUP self -function SET_GROUP:FilterPrefixes( Prefixes ) - if not self.Filter.GroupPrefixes then - self.Filter.GroupPrefixes = {} - end - if type( Prefixes ) ~= "table" then - Prefixes = { Prefixes } - end - for PrefixID, Prefix in pairs( Prefixes ) do - self.Filter.GroupPrefixes[Prefix] = Prefix - end - return self -end - - ---- Starts the filtering. --- @param #SET_GROUP self --- @return #SET_GROUP self -function SET_GROUP:FilterStart() - - if _DATABASE then - self:_FilterStart() - end - - - - return self -end - ---- Handles the Database to check on an event (birth) that the Object was added in the Database. --- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! --- @param #SET_GROUP self --- @param Core.Event#EVENTDATA Event --- @return #string The name of the GROUP --- @return #table The GROUP -function SET_GROUP:AddInDatabase( Event ) - self:F3( { Event } ) - - if Event.IniObjectCategory == 1 then - if not self.Database[Event.IniDCSGroupName] then - self.Database[Event.IniDCSGroupName] = GROUP:Register( Event.IniDCSGroupName ) - self:T3( self.Database[Event.IniDCSGroupName] ) - end - end - - return Event.IniDCSGroupName, self.Database[Event.IniDCSGroupName] -end - ---- Handles the Database to check on any event that Object exists in the Database. --- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! --- @param #SET_GROUP self --- @param Core.Event#EVENTDATA Event --- @return #string The name of the GROUP --- @return #table The GROUP -function SET_GROUP:FindInDatabase( Event ) - self:F3( { Event } ) - - return Event.IniDCSGroupName, self.Database[Event.IniDCSGroupName] -end - ---- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP, providing the GROUP and optional parameters. --- @param #SET_GROUP self --- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. --- @return #SET_GROUP self -function SET_GROUP:ForEachGroup( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set ) - - return self -end - ---- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- @param #SET_GROUP self --- @param Core.Zone#ZONE ZoneObject The Zone to be tested for. --- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. --- @return #SET_GROUP self -function SET_GROUP:ForEachGroupCompletelyInZone( ZoneObject, IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set, - --- @param Core.Zone#ZONE_BASE ZoneObject - -- @param Wrapper.Group#GROUP GroupObject - function( ZoneObject, GroupObject ) - if GroupObject:IsCompletelyInZone( ZoneObject ) then - return true - else - return false - end - end, { ZoneObject } ) - - return self -end - ---- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. --- @param #SET_GROUP self --- @param Core.Zone#ZONE ZoneObject The Zone to be tested for. --- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. --- @return #SET_GROUP self -function SET_GROUP:ForEachGroupPartlyInZone( ZoneObject, IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set, - --- @param Core.Zone#ZONE_BASE ZoneObject - -- @param Wrapper.Group#GROUP GroupObject - function( ZoneObject, GroupObject ) - if GroupObject:IsPartlyInZone( ZoneObject ) then - return true - else - return false - end - end, { ZoneObject } ) - - return self -end - ---- Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- @param #SET_GROUP self --- @param Core.Zone#ZONE ZoneObject The Zone to be tested for. --- @param #function IteratorFunction The function that will be called when there is an alive GROUP in the SET_GROUP. The function needs to accept a GROUP parameter. --- @return #SET_GROUP self -function SET_GROUP:ForEachGroupNotInZone( ZoneObject, IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set, - --- @param Core.Zone#ZONE_BASE ZoneObject - -- @param Wrapper.Group#GROUP GroupObject - function( ZoneObject, GroupObject ) - if GroupObject:IsNotInZone( ZoneObject ) then - return true - else - return false - end - end, { ZoneObject } ) - - return self -end - - ------ Iterate the SET_GROUP and call an interator function for each **alive** player, providing the Group of the player and optional parameters. ----- @param #SET_GROUP self ----- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a GROUP parameter. ----- @return #SET_GROUP self ---function SET_GROUP:ForEachPlayer( IteratorFunction, ... ) --- self:F2( arg ) --- --- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) --- --- return self ---end --- --- ------ Iterate the SET_GROUP and call an interator function for each client, providing the Client to the function and optional parameters. ----- @param #SET_GROUP self ----- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a CLIENT parameter. ----- @return #SET_GROUP self ---function SET_GROUP:ForEachClient( IteratorFunction, ... ) --- self:F2( arg ) --- --- self:ForEach( IteratorFunction, arg, self.Clients ) --- --- return self ---end - - ---- --- @param #SET_GROUP self --- @param Wrapper.Group#GROUP MooseGroup --- @return #SET_GROUP self -function SET_GROUP:IsIncludeObject( MooseGroup ) - self:F2( MooseGroup ) - local MooseGroupInclude = true - - if self.Filter.Coalitions then - local MooseGroupCoalition = false - for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do - self:T3( { "Coalition:", MooseGroup:GetCoalition(), self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) - if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == MooseGroup:GetCoalition() then - MooseGroupCoalition = true - end - end - MooseGroupInclude = MooseGroupInclude and MooseGroupCoalition - end - - if self.Filter.Categories then - local MooseGroupCategory = false - for CategoryID, CategoryName in pairs( self.Filter.Categories ) do - self:T3( { "Category:", MooseGroup:GetCategory(), self.FilterMeta.Categories[CategoryName], CategoryName } ) - if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == MooseGroup:GetCategory() then - MooseGroupCategory = true - end - end - MooseGroupInclude = MooseGroupInclude and MooseGroupCategory - end - - if self.Filter.Countries then - local MooseGroupCountry = false - for CountryID, CountryName in pairs( self.Filter.Countries ) do - self:T3( { "Country:", MooseGroup:GetCountry(), CountryName } ) - if country.id[CountryName] == MooseGroup:GetCountry() then - MooseGroupCountry = true - end - end - MooseGroupInclude = MooseGroupInclude and MooseGroupCountry - end - - if self.Filter.GroupPrefixes then - local MooseGroupPrefix = false - for GroupPrefixId, GroupPrefix in pairs( self.Filter.GroupPrefixes ) do - self:T3( { "Prefix:", string.find( MooseGroup:GetName(), GroupPrefix, 1 ), GroupPrefix } ) - if string.find( MooseGroup:GetName(), GroupPrefix, 1 ) then - MooseGroupPrefix = true - end - end - MooseGroupInclude = MooseGroupInclude and MooseGroupPrefix - end - - self:T2( MooseGroupInclude ) - return MooseGroupInclude -end - ---- @type SET_UNIT --- @extends Core.Set#SET_BASE - ---- # 3) SET_UNIT class, extends @{Set#SET_BASE} --- --- Mission designers can use the SET_UNIT class to build sets of units belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Unit types --- * Starting with certain prefix strings. --- --- ## 3.1) SET_UNIT constructor --- --- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: --- --- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. --- --- ## 3.2) Add or Remove UNIT(s) from SET_UNIT --- --- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. --- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. --- --- ## 3.3) SET_UNIT filter criteria --- --- You can set filter criteria to define the set of units within the SET_UNIT. --- Filter criteria are defined by: --- --- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). --- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). --- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). --- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). --- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: --- --- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. --- --- ## 3.4) SET_UNIT iterators --- --- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. --- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_UNIT: --- --- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. --- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- --- Planned iterators methods in development are (so these are not yet available): --- --- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. --- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. --- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. --- --- ## 3.5 ) SET_UNIT atomic methods --- --- Various methods exist for a SET_UNIT to perform actions or calculations and retrieve results from the SET_UNIT: --- --- * @{#SET_UNIT.GetTypeNames}(): Retrieve the type names of the @{Unit}s in the SET, delimited by a comma. --- --- === --- @field #SET_UNIT SET_UNIT -SET_UNIT = { - ClassName = "SET_UNIT", - Units = {}, - Filter = { - Coalitions = nil, - Categories = nil, - Types = nil, - Countries = nil, - UnitPrefixes = nil, - }, - FilterMeta = { - Coalitions = { - red = coalition.side.RED, - blue = coalition.side.BLUE, - neutral = coalition.side.NEUTRAL, - }, - Categories = { - plane = Unit.Category.AIRPLANE, - helicopter = Unit.Category.HELICOPTER, - ground = Unit.Category.GROUND_UNIT, - ship = Unit.Category.SHIP, - structure = Unit.Category.STRUCTURE, - }, - }, -} - - ---- Creates a new SET_UNIT object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. --- @param #SET_UNIT self --- @return #SET_UNIT --- @usage --- -- Define a new SET_UNIT Object. This DBObject will contain a reference to all alive Units. --- DBObject = SET_UNIT:New() -function SET_UNIT:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.UNITS ) ) - - return self -end - ---- Add UNIT(s) to SET_UNIT. --- @param #SET_UNIT self --- @param #string AddUnit A single UNIT. --- @return #SET_UNIT self -function SET_UNIT:AddUnit( AddUnit ) - self:F2( AddUnit:GetName() ) - - self:Add( AddUnit:GetName(), AddUnit ) - - return self -end - - ---- Add UNIT(s) to SET_UNIT. --- @param #SET_UNIT self --- @param #string AddUnitNames A single name or an array of UNIT names. --- @return #SET_UNIT self -function SET_UNIT:AddUnitsByName( AddUnitNames ) - - local AddUnitNamesArray = ( type( AddUnitNames ) == "table" ) and AddUnitNames or { AddUnitNames } - - self:T( AddUnitNamesArray ) - for AddUnitID, AddUnitName in pairs( AddUnitNamesArray ) do - self:Add( AddUnitName, UNIT:FindByName( AddUnitName ) ) - end - - return self -end - ---- Remove UNIT(s) from SET_UNIT. --- @param Core.Set#SET_UNIT self --- @param Wrapper.Unit#UNIT RemoveUnitNames A single name or an array of UNIT names. --- @return self -function SET_UNIT:RemoveUnitsByName( RemoveUnitNames ) - - local RemoveUnitNamesArray = ( type( RemoveUnitNames ) == "table" ) and RemoveUnitNames or { RemoveUnitNames } - - for RemoveUnitID, RemoveUnitName in pairs( RemoveUnitNamesArray ) do - self:Remove( RemoveUnitName ) - end - - return self -end - - ---- Finds a Unit based on the Unit Name. --- @param #SET_UNIT self --- @param #string UnitName --- @return Wrapper.Unit#UNIT The found Unit. -function SET_UNIT:FindUnit( UnitName ) - - local UnitFound = self.Set[UnitName] - return UnitFound -end - - - ---- Builds a set of units of coalitions. --- Possible current coalitions are red, blue and neutral. --- @param #SET_UNIT self --- @param #string Coalitions Can take the following values: "red", "blue", "neutral". --- @return #SET_UNIT self -function SET_UNIT:FilterCoalitions( Coalitions ) - if not self.Filter.Coalitions then - self.Filter.Coalitions = {} - end - if type( Coalitions ) ~= "table" then - Coalitions = { Coalitions } - end - for CoalitionID, Coalition in pairs( Coalitions ) do - self.Filter.Coalitions[Coalition] = Coalition - end - return self -end - - ---- Builds a set of units out of categories. --- Possible current categories are plane, helicopter, ground, ship. --- @param #SET_UNIT self --- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". --- @return #SET_UNIT self -function SET_UNIT:FilterCategories( Categories ) - if not self.Filter.Categories then - self.Filter.Categories = {} - end - if type( Categories ) ~= "table" then - Categories = { Categories } - end - for CategoryID, Category in pairs( Categories ) do - self.Filter.Categories[Category] = Category - end - return self -end - - ---- Builds a set of units of defined unit types. --- Possible current types are those types known within DCS world. --- @param #SET_UNIT self --- @param #string Types Can take those type strings known within DCS world. --- @return #SET_UNIT self -function SET_UNIT:FilterTypes( Types ) - if not self.Filter.Types then - self.Filter.Types = {} - end - if type( Types ) ~= "table" then - Types = { Types } - end - for TypeID, Type in pairs( Types ) do - self.Filter.Types[Type] = Type - end - return self -end - - ---- Builds a set of units of defined countries. --- Possible current countries are those known within DCS world. --- @param #SET_UNIT self --- @param #string Countries Can take those country strings known within DCS world. --- @return #SET_UNIT self -function SET_UNIT:FilterCountries( Countries ) - if not self.Filter.Countries then - self.Filter.Countries = {} - end - if type( Countries ) ~= "table" then - Countries = { Countries } - end - for CountryID, Country in pairs( Countries ) do - self.Filter.Countries[Country] = Country - end - return self -end - - ---- Builds a set of units of defined unit prefixes. --- All the units starting with the given prefixes will be included within the set. --- @param #SET_UNIT self --- @param #string Prefixes The prefix of which the unit name starts with. --- @return #SET_UNIT self -function SET_UNIT:FilterPrefixes( Prefixes ) - if not self.Filter.UnitPrefixes then - self.Filter.UnitPrefixes = {} - end - if type( Prefixes ) ~= "table" then - Prefixes = { Prefixes } - end - for PrefixID, Prefix in pairs( Prefixes ) do - self.Filter.UnitPrefixes[Prefix] = Prefix - end - return self -end - ---- Builds a set of units having a radar of give types. --- All the units having a radar of a given type will be included within the set. --- @param #SET_UNIT self --- @param #table RadarTypes The radar types. --- @return #SET_UNIT self -function SET_UNIT:FilterHasRadar( RadarTypes ) - - self.Filter.RadarTypes = self.Filter.RadarTypes or {} - if type( RadarTypes ) ~= "table" then - RadarTypes = { RadarTypes } - end - for RadarTypeID, RadarType in pairs( RadarTypes ) do - self.Filter.RadarTypes[RadarType] = RadarType - end - return self -end - ---- Builds a set of SEADable units. --- @param #SET_UNIT self --- @return #SET_UNIT self -function SET_UNIT:FilterHasSEAD() - - self.Filter.SEAD = true - return self -end - - - ---- Starts the filtering. --- @param #SET_UNIT self --- @return #SET_UNIT self -function SET_UNIT:FilterStart() - - if _DATABASE then - self:_FilterStart() - end - - return self -end - ---- Handles the Database to check on an event (birth) that the Object was added in the Database. --- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! --- @param #SET_UNIT self --- @param Core.Event#EVENTDATA Event --- @return #string The name of the UNIT --- @return #table The UNIT -function SET_UNIT:AddInDatabase( Event ) - self:F3( { Event } ) - - if Event.IniObjectCategory == 1 then - if not self.Database[Event.IniDCSUnitName] then - self.Database[Event.IniDCSUnitName] = UNIT:Register( Event.IniDCSUnitName ) - self:T3( self.Database[Event.IniDCSUnitName] ) - end - end - - return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] -end - ---- Handles the Database to check on any event that Object exists in the Database. --- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! --- @param #SET_UNIT self --- @param Core.Event#EVENTDATA Event --- @return #string The name of the UNIT --- @return #table The UNIT -function SET_UNIT:FindInDatabase( Event ) - self:E( { Event.IniDCSUnitName, self.Set[Event.IniDCSUnitName], Event } ) - - - return Event.IniDCSUnitName, self.Set[Event.IniDCSUnitName] -end - ---- Iterate the SET_UNIT and call an interator function for each **alive** UNIT, providing the UNIT and optional parameters. --- @param #SET_UNIT self --- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. --- @return #SET_UNIT self -function SET_UNIT:ForEachUnit( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set ) - - return self -end - ---- Iterate the SET_UNIT and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. --- @param #SET_UNIT self --- @param Core.Zone#ZONE ZoneObject The Zone to be tested for. --- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. --- @return #SET_UNIT self -function SET_UNIT:ForEachUnitCompletelyInZone( ZoneObject, IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set, - --- @param Core.Zone#ZONE_BASE ZoneObject - -- @param Wrapper.Unit#UNIT UnitObject - function( ZoneObject, UnitObject ) - if UnitObject:IsCompletelyInZone( ZoneObject ) then - return true - else - return false - end - end, { ZoneObject } ) - - return self -end - ---- Iterate the SET_UNIT and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. --- @param #SET_UNIT self --- @param Core.Zone#ZONE ZoneObject The Zone to be tested for. --- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. --- @return #SET_UNIT self -function SET_UNIT:ForEachUnitNotInZone( ZoneObject, IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set, - --- @param Core.Zone#ZONE_BASE ZoneObject - -- @param Wrapper.Unit#UNIT UnitObject - function( ZoneObject, UnitObject ) - if UnitObject:IsNotInZone( ZoneObject ) then - return true - else - return false - end - end, { ZoneObject } ) - - return self -end - ---- Returns map of unit types. --- @param #SET_UNIT self --- @return #map<#string,#number> A map of the unit types found. The key is the UnitTypeName and the value is the amount of unit types found. -function SET_UNIT:GetUnitTypes() - self:F2() - - local MT = {} -- Message Text - local UnitTypes = {} - - for UnitID, UnitData in pairs( self:GetSet() ) do - local TextUnit = UnitData -- Wrapper.Unit#UNIT - if TextUnit:IsAlive() then - local UnitType = TextUnit:GetTypeName() - - if not UnitTypes[UnitType] then - UnitTypes[UnitType] = 1 - else - UnitTypes[UnitType] = UnitTypes[UnitType] + 1 - end - end - end - - for UnitTypeID, UnitType in pairs( UnitTypes ) do - MT[#MT+1] = UnitType .. " of " .. UnitTypeID - end - - return UnitTypes -end - - ---- Returns a comma separated string of the unit types with a count in the @{Set}. --- @param #SET_UNIT self --- @return #string The unit types string -function SET_UNIT:GetUnitTypesText() - self:F2() - - local MT = {} -- Message Text - local UnitTypes = self:GetUnitTypes() - - for UnitTypeID, UnitType in pairs( UnitTypes ) do - MT[#MT+1] = UnitType .. " of " .. UnitTypeID - end - - return table.concat( MT, ", " ) -end - ---- Returns map of unit threat levels. --- @param #SET_UNIT self --- @return #table. -function SET_UNIT:GetUnitThreatLevels() - self:F2() - - local UnitThreatLevels = {} - - for UnitID, UnitData in pairs( self:GetSet() ) do - local ThreatUnit = UnitData -- Wrapper.Unit#UNIT - if ThreatUnit:IsAlive() then - local UnitThreatLevel, UnitThreatLevelText = ThreatUnit:GetThreatLevel() - local ThreatUnitName = ThreatUnit:GetName() - - UnitThreatLevels[UnitThreatLevel] = UnitThreatLevels[UnitThreatLevel] or {} - UnitThreatLevels[UnitThreatLevel].UnitThreatLevelText = UnitThreatLevelText - UnitThreatLevels[UnitThreatLevel].Units = UnitThreatLevels[UnitThreatLevel].Units or {} - UnitThreatLevels[UnitThreatLevel].Units[ThreatUnitName] = ThreatUnit - end - end - - return UnitThreatLevels -end - ---- Calculate the maxium A2G threat level of the SET_UNIT. --- @param #SET_UNIT self -function SET_UNIT:CalculateThreatLevelA2G() - - local MaxThreatLevelA2G = 0 - for UnitName, UnitData in pairs( self:GetSet() ) do - local ThreatUnit = UnitData -- Wrapper.Unit#UNIT - local ThreatLevelA2G = ThreatUnit:GetThreatLevel() - if ThreatLevelA2G > MaxThreatLevelA2G then - MaxThreatLevelA2G = ThreatLevelA2G - end - end - - self:T3( MaxThreatLevelA2G ) - return MaxThreatLevelA2G - -end - - ---- Returns if the @{Set} has targets having a radar (of a given type). --- @param #SET_UNIT self --- @param Dcs.DCSWrapper.Unit#Unit.RadarType RadarType --- @return #number The amount of radars in the Set with the given type -function SET_UNIT:HasRadar( RadarType ) - self:F2( RadarType ) - - local RadarCount = 0 - for UnitID, UnitData in pairs( self:GetSet()) do - local UnitSensorTest = UnitData -- Wrapper.Unit#UNIT - local HasSensors - if RadarType then - HasSensors = UnitSensorTest:HasSensors( Unit.SensorType.RADAR, RadarType ) - else - HasSensors = UnitSensorTest:HasSensors( Unit.SensorType.RADAR ) - end - self:T3(HasSensors) - if HasSensors then - RadarCount = RadarCount + 1 - end - end - - return RadarCount -end - ---- Returns if the @{Set} has targets that can be SEADed. --- @param #SET_UNIT self --- @return #number The amount of SEADable units in the Set -function SET_UNIT:HasSEAD() - self:F2() - - local SEADCount = 0 - for UnitID, UnitData in pairs( self:GetSet()) do - local UnitSEAD = UnitData -- Wrapper.Unit#UNIT - if UnitSEAD:IsAlive() then - local UnitSEADAttributes = UnitSEAD:GetDesc().attributes - - local HasSEAD = UnitSEAD:HasSEAD() - - self:T3(HasSEAD) - if HasSEAD then - SEADCount = SEADCount + 1 - end - end - end - - return SEADCount -end - ---- Returns if the @{Set} has ground targets. --- @param #SET_UNIT self --- @return #number The amount of ground targets in the Set. -function SET_UNIT:HasGroundUnits() - self:F2() - - local GroundUnitCount = 0 - for UnitID, UnitData in pairs( self:GetSet()) do - local UnitTest = UnitData -- Wrapper.Unit#UNIT - if UnitTest:IsGround() then - GroundUnitCount = GroundUnitCount + 1 - end - end - - return GroundUnitCount -end - ---- Returns if the @{Set} has friendly ground units. --- @param #SET_UNIT self --- @return #number The amount of ground targets in the Set. -function SET_UNIT:HasFriendlyUnits( FriendlyCoalition ) - self:F2() - - local FriendlyUnitCount = 0 - for UnitID, UnitData in pairs( self:GetSet()) do - local UnitTest = UnitData -- Wrapper.Unit#UNIT - if UnitTest:IsFriendly( FriendlyCoalition ) then - FriendlyUnitCount = FriendlyUnitCount + 1 - end - end - - return FriendlyUnitCount -end - - - ------ Iterate the SET_UNIT and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. ----- @param #SET_UNIT self ----- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a UNIT parameter. ----- @return #SET_UNIT self ---function SET_UNIT:ForEachPlayer( IteratorFunction, ... ) --- self:F2( arg ) --- --- self:ForEach( IteratorFunction, arg, self.PlayersAlive ) --- --- return self ---end --- --- ------ Iterate the SET_UNIT and call an interator function for each client, providing the Client to the function and optional parameters. ----- @param #SET_UNIT self ----- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a CLIENT parameter. ----- @return #SET_UNIT self ---function SET_UNIT:ForEachClient( IteratorFunction, ... ) --- self:F2( arg ) --- --- self:ForEach( IteratorFunction, arg, self.Clients ) --- --- return self ---end - - ---- --- @param #SET_UNIT self --- @param Wrapper.Unit#UNIT MUnit --- @return #SET_UNIT self -function SET_UNIT:IsIncludeObject( MUnit ) - self:F2( MUnit ) - local MUnitInclude = true - - if self.Filter.Coalitions then - local MUnitCoalition = false - for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do - self:T3( { "Coalition:", MUnit:GetCoalition(), self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) - if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == MUnit:GetCoalition() then - MUnitCoalition = true - end - end - MUnitInclude = MUnitInclude and MUnitCoalition - end - - if self.Filter.Categories then - local MUnitCategory = false - for CategoryID, CategoryName in pairs( self.Filter.Categories ) do - self:T3( { "Category:", MUnit:GetDesc().category, self.FilterMeta.Categories[CategoryName], CategoryName } ) - if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == MUnit:GetDesc().category then - MUnitCategory = true - end - end - MUnitInclude = MUnitInclude and MUnitCategory - end - - if self.Filter.Types then - local MUnitType = false - for TypeID, TypeName in pairs( self.Filter.Types ) do - self:T3( { "Type:", MUnit:GetTypeName(), TypeName } ) - if TypeName == MUnit:GetTypeName() then - MUnitType = true - end - end - MUnitInclude = MUnitInclude and MUnitType - end - - if self.Filter.Countries then - local MUnitCountry = false - for CountryID, CountryName in pairs( self.Filter.Countries ) do - self:T3( { "Country:", MUnit:GetCountry(), CountryName } ) - if country.id[CountryName] == MUnit:GetCountry() then - MUnitCountry = true - end - end - MUnitInclude = MUnitInclude and MUnitCountry - end - - if self.Filter.UnitPrefixes then - local MUnitPrefix = false - for UnitPrefixId, UnitPrefix in pairs( self.Filter.UnitPrefixes ) do - self:T3( { "Prefix:", string.find( MUnit:GetName(), UnitPrefix, 1 ), UnitPrefix } ) - if string.find( MUnit:GetName(), UnitPrefix, 1 ) then - MUnitPrefix = true - end - end - MUnitInclude = MUnitInclude and MUnitPrefix - end - - if self.Filter.RadarTypes then - local MUnitRadar = false - for RadarTypeID, RadarType in pairs( self.Filter.RadarTypes ) do - self:T3( { "Radar:", RadarType } ) - if MUnit:HasSensors( Unit.SensorType.RADAR, RadarType ) == true then - if MUnit:GetRadar() == true then -- This call is necessary to evaluate the SEAD capability. - self:T3( "RADAR Found" ) - end - MUnitRadar = true - end - end - MUnitInclude = MUnitInclude and MUnitRadar - end - - if self.Filter.SEAD then - local MUnitSEAD = false - if MUnit:HasSEAD() == true then - self:T3( "SEAD Found" ) - MUnitSEAD = true - end - MUnitInclude = MUnitInclude and MUnitSEAD - end - - self:T2( MUnitInclude ) - return MUnitInclude -end - - ---- Retrieve the type names of the @{Unit}s in the SET, delimited by an optional delimiter. --- @param #SET_UNIT self --- @param #string Delimiter (optional) The delimiter, which is default a comma. --- @return #string The types of the @{Unit}s delimited. -function SET_UNIT:GetTypeNames( Delimiter ) - - Delimiter = Delimiter or ", " - local TypeReport = REPORT:New() - local Types = {} - - for UnitName, UnitData in pairs( self:GetSet() ) do - - local Unit = UnitData -- Wrapper.Unit#UNIT - local UnitTypeName = Unit:GetTypeName() - - if not Types[UnitTypeName] then - Types[UnitTypeName] = UnitTypeName - TypeReport:Add( UnitTypeName ) - end - end - - return TypeReport:Text( Delimiter ) -end - - ---- SET_CLIENT - - ---- @type SET_CLIENT --- @extends Core.Set#SET_BASE - - - ---- # 4) SET_CLIENT class, extends @{Set#SET_BASE} --- --- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Client types --- * Starting with certain prefix strings. --- --- ## 4.1) SET_CLIENT constructor --- --- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: --- --- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. --- --- ## 4.2) Add or Remove CLIENT(s) from SET_CLIENT --- --- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. --- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. --- --- ## 4.3) SET_CLIENT filter criteria --- --- You can set filter criteria to define the set of clients within the SET_CLIENT. --- Filter criteria are defined by: --- --- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). --- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). --- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). --- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). --- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: --- --- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. --- --- ## 4.4) SET_CLIENT iterators --- --- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. --- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_CLIENT: --- --- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. --- --- === --- @field #SET_CLIENT SET_CLIENT -SET_CLIENT = { - ClassName = "SET_CLIENT", - Clients = {}, - Filter = { - Coalitions = nil, - Categories = nil, - Types = nil, - Countries = nil, - ClientPrefixes = nil, - }, - FilterMeta = { - Coalitions = { - red = coalition.side.RED, - blue = coalition.side.BLUE, - neutral = coalition.side.NEUTRAL, - }, - Categories = { - plane = Unit.Category.AIRPLANE, - helicopter = Unit.Category.HELICOPTER, - ground = Unit.Category.GROUND_UNIT, - ship = Unit.Category.SHIP, - structure = Unit.Category.STRUCTURE, - }, - }, -} - - ---- Creates a new SET_CLIENT object, building a set of clients belonging to a coalitions, categories, countries, types or with defined prefix names. --- @param #SET_CLIENT self --- @return #SET_CLIENT --- @usage --- -- Define a new SET_CLIENT Object. This DBObject will contain a reference to all Clients. --- DBObject = SET_CLIENT:New() -function SET_CLIENT:New() - -- Inherits from BASE - local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.CLIENTS ) ) - - return self -end - ---- Add CLIENT(s) to SET_CLIENT. --- @param Core.Set#SET_CLIENT self --- @param #string AddClientNames A single name or an array of CLIENT names. --- @return self -function SET_CLIENT:AddClientsByName( AddClientNames ) - - local AddClientNamesArray = ( type( AddClientNames ) == "table" ) and AddClientNames or { AddClientNames } - - for AddClientID, AddClientName in pairs( AddClientNamesArray ) do - self:Add( AddClientName, CLIENT:FindByName( AddClientName ) ) - end - - return self -end - ---- Remove CLIENT(s) from SET_CLIENT. --- @param Core.Set#SET_CLIENT self --- @param Wrapper.Client#CLIENT RemoveClientNames A single name or an array of CLIENT names. --- @return self -function SET_CLIENT:RemoveClientsByName( RemoveClientNames ) - - local RemoveClientNamesArray = ( type( RemoveClientNames ) == "table" ) and RemoveClientNames or { RemoveClientNames } - - for RemoveClientID, RemoveClientName in pairs( RemoveClientNamesArray ) do - self:Remove( RemoveClientName.ClientName ) - end - - return self -end - - ---- Finds a Client based on the Client Name. --- @param #SET_CLIENT self --- @param #string ClientName --- @return Wrapper.Client#CLIENT The found Client. -function SET_CLIENT:FindClient( ClientName ) - - local ClientFound = self.Set[ClientName] - return ClientFound -end - - - ---- Builds a set of clients of coalitions. --- Possible current coalitions are red, blue and neutral. --- @param #SET_CLIENT self --- @param #string Coalitions Can take the following values: "red", "blue", "neutral". --- @return #SET_CLIENT self -function SET_CLIENT:FilterCoalitions( Coalitions ) - if not self.Filter.Coalitions then - self.Filter.Coalitions = {} - end - if type( Coalitions ) ~= "table" then - Coalitions = { Coalitions } - end - for CoalitionID, Coalition in pairs( Coalitions ) do - self.Filter.Coalitions[Coalition] = Coalition - end - return self -end - - ---- Builds a set of clients out of categories. --- Possible current categories are plane, helicopter, ground, ship. --- @param #SET_CLIENT self --- @param #string Categories Can take the following values: "plane", "helicopter", "ground", "ship". --- @return #SET_CLIENT self -function SET_CLIENT:FilterCategories( Categories ) - if not self.Filter.Categories then - self.Filter.Categories = {} - end - if type( Categories ) ~= "table" then - Categories = { Categories } - end - for CategoryID, Category in pairs( Categories ) do - self.Filter.Categories[Category] = Category - end - return self -end - - ---- Builds a set of clients of defined client types. --- Possible current types are those types known within DCS world. --- @param #SET_CLIENT self --- @param #string Types Can take those type strings known within DCS world. --- @return #SET_CLIENT self -function SET_CLIENT:FilterTypes( Types ) - if not self.Filter.Types then - self.Filter.Types = {} - end - if type( Types ) ~= "table" then - Types = { Types } - end - for TypeID, Type in pairs( Types ) do - self.Filter.Types[Type] = Type - end - return self -end - - ---- Builds a set of clients of defined countries. --- Possible current countries are those known within DCS world. --- @param #SET_CLIENT self --- @param #string Countries Can take those country strings known within DCS world. --- @return #SET_CLIENT self -function SET_CLIENT:FilterCountries( Countries ) - if not self.Filter.Countries then - self.Filter.Countries = {} - end - if type( Countries ) ~= "table" then - Countries = { Countries } - end - for CountryID, Country in pairs( Countries ) do - self.Filter.Countries[Country] = Country - end - return self -end - - ---- Builds a set of clients of defined client prefixes. --- All the clients starting with the given prefixes will be included within the set. --- @param #SET_CLIENT self --- @param #string Prefixes The prefix of which the client name starts with. --- @return #SET_CLIENT self -function SET_CLIENT:FilterPrefixes( Prefixes ) - if not self.Filter.ClientPrefixes then - self.Filter.ClientPrefixes = {} - end - if type( Prefixes ) ~= "table" then - Prefixes = { Prefixes } - end - for PrefixID, Prefix in pairs( Prefixes ) do - self.Filter.ClientPrefixes[Prefix] = Prefix - end - return self -end - - - - ---- Starts the filtering. --- @param #SET_CLIENT self --- @return #SET_CLIENT self -function SET_CLIENT:FilterStart() - - if _DATABASE then - self:_FilterStart() - end - - return self -end - ---- Handles the Database to check on an event (birth) that the Object was added in the Database. --- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! --- @param #SET_CLIENT self --- @param Core.Event#EVENTDATA Event --- @return #string The name of the CLIENT --- @return #table The CLIENT -function SET_CLIENT:AddInDatabase( Event ) - self:F3( { Event } ) - - return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] -end - ---- Handles the Database to check on any event that Object exists in the Database. --- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! --- @param #SET_CLIENT self --- @param Core.Event#EVENTDATA Event --- @return #string The name of the CLIENT --- @return #table The CLIENT -function SET_CLIENT:FindInDatabase( Event ) - self:F3( { Event } ) - - return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] -end - ---- Iterate the SET_CLIENT and call an interator function for each **alive** CLIENT, providing the CLIENT and optional parameters. --- @param #SET_CLIENT self --- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. --- @return #SET_CLIENT self -function SET_CLIENT:ForEachClient( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set ) - - return self -end - ---- Iterate the SET_CLIENT and call an iterator function for each **alive** CLIENT presence completely in a @{Zone}, providing the CLIENT and optional parameters to the called function. --- @param #SET_CLIENT self --- @param Core.Zone#ZONE ZoneObject The Zone to be tested for. --- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. --- @return #SET_CLIENT self -function SET_CLIENT:ForEachClientInZone( ZoneObject, IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set, - --- @param Core.Zone#ZONE_BASE ZoneObject - -- @param Wrapper.Client#CLIENT ClientObject - function( ZoneObject, ClientObject ) - if ClientObject:IsInZone( ZoneObject ) then - return true - else - return false - end - end, { ZoneObject } ) - - return self -end - ---- Iterate the SET_CLIENT and call an iterator function for each **alive** CLIENT presence not in a @{Zone}, providing the CLIENT and optional parameters to the called function. --- @param #SET_CLIENT self --- @param Core.Zone#ZONE ZoneObject The Zone to be tested for. --- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. --- @return #SET_CLIENT self -function SET_CLIENT:ForEachClientNotInZone( ZoneObject, IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set, - --- @param Core.Zone#ZONE_BASE ZoneObject - -- @param Wrapper.Client#CLIENT ClientObject - function( ZoneObject, ClientObject ) - if ClientObject:IsNotInZone( ZoneObject ) then - return true - else - return false - end - end, { ZoneObject } ) - - return self -end - ---- --- @param #SET_CLIENT self --- @param Wrapper.Client#CLIENT MClient --- @return #SET_CLIENT self -function SET_CLIENT:IsIncludeObject( MClient ) - self:F2( MClient ) - - local MClientInclude = true - - if MClient then - local MClientName = MClient.UnitName - - if self.Filter.Coalitions then - local MClientCoalition = false - for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do - local ClientCoalitionID = _DATABASE:GetCoalitionFromClientTemplate( MClientName ) - self:T3( { "Coalition:", ClientCoalitionID, self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) - if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == ClientCoalitionID then - MClientCoalition = true - end - end - self:T( { "Evaluated Coalition", MClientCoalition } ) - MClientInclude = MClientInclude and MClientCoalition - end - - if self.Filter.Categories then - local MClientCategory = false - for CategoryID, CategoryName in pairs( self.Filter.Categories ) do - local ClientCategoryID = _DATABASE:GetCategoryFromClientTemplate( MClientName ) - self:T3( { "Category:", ClientCategoryID, self.FilterMeta.Categories[CategoryName], CategoryName } ) - if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == ClientCategoryID then - MClientCategory = true - end - end - self:T( { "Evaluated Category", MClientCategory } ) - MClientInclude = MClientInclude and MClientCategory - end - - if self.Filter.Types then - local MClientType = false - for TypeID, TypeName in pairs( self.Filter.Types ) do - self:T3( { "Type:", MClient:GetTypeName(), TypeName } ) - if TypeName == MClient:GetTypeName() then - MClientType = true - end - end - self:T( { "Evaluated Type", MClientType } ) - MClientInclude = MClientInclude and MClientType - end - - if self.Filter.Countries then - local MClientCountry = false - for CountryID, CountryName in pairs( self.Filter.Countries ) do - local ClientCountryID = _DATABASE:GetCountryFromClientTemplate(MClientName) - self:T3( { "Country:", ClientCountryID, country.id[CountryName], CountryName } ) - if country.id[CountryName] and country.id[CountryName] == ClientCountryID then - MClientCountry = true - end - end - self:T( { "Evaluated Country", MClientCountry } ) - MClientInclude = MClientInclude and MClientCountry - end - - if self.Filter.ClientPrefixes then - local MClientPrefix = false - for ClientPrefixId, ClientPrefix in pairs( self.Filter.ClientPrefixes ) do - self:T3( { "Prefix:", string.find( MClient.UnitName, ClientPrefix, 1 ), ClientPrefix } ) - if string.find( MClient.UnitName, ClientPrefix, 1 ) then - MClientPrefix = true - end - end - self:T( { "Evaluated Prefix", MClientPrefix } ) - MClientInclude = MClientInclude and MClientPrefix - end - end - - self:T2( MClientInclude ) - return MClientInclude -end - ---- @type SET_AIRBASE --- @extends Core.Set#SET_BASE - ---- # 5) SET_AIRBASE class, extends @{Set#SET_BASE} --- --- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: --- --- * Coalitions --- --- ## 5.1) SET_AIRBASE constructor --- --- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: --- --- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. --- --- ## 5.2) Add or Remove AIRBASEs from SET_AIRBASE --- --- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. --- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. --- --- ## 5.3) SET_AIRBASE filter criteria --- --- You can set filter criteria to define the set of clients within the SET_AIRBASE. --- Filter criteria are defined by: --- --- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). --- --- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: --- --- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. --- --- ## 5.4) SET_AIRBASE iterators --- --- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. --- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. --- The following iterator methods are currently available within the SET_AIRBASE: --- --- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. --- --- === --- @field #SET_AIRBASE SET_AIRBASE -SET_AIRBASE = { - ClassName = "SET_AIRBASE", - Airbases = {}, - Filter = { - Coalitions = nil, - }, - FilterMeta = { - Coalitions = { - red = coalition.side.RED, - blue = coalition.side.BLUE, - neutral = coalition.side.NEUTRAL, - }, - Categories = { - airdrome = Airbase.Category.AIRDROME, - helipad = Airbase.Category.HELIPAD, - ship = Airbase.Category.SHIP, - }, - }, -} - - ---- Creates a new SET_AIRBASE object, building a set of airbases belonging to a coalitions and categories. --- @param #SET_AIRBASE self --- @return #SET_AIRBASE self --- @usage --- -- Define a new SET_AIRBASE Object. The DatabaseSet will contain a reference to all Airbases. --- DatabaseSet = SET_AIRBASE:New() -function SET_AIRBASE:New() - -- Inherits from BASE - local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.AIRBASES ) ) - - return self -end - ---- Add AIRBASEs to SET_AIRBASE. --- @param Core.Set#SET_AIRBASE self --- @param #string AddAirbaseNames A single name or an array of AIRBASE names. --- @return self -function SET_AIRBASE:AddAirbasesByName( AddAirbaseNames ) - - local AddAirbaseNamesArray = ( type( AddAirbaseNames ) == "table" ) and AddAirbaseNames or { AddAirbaseNames } - - for AddAirbaseID, AddAirbaseName in pairs( AddAirbaseNamesArray ) do - self:Add( AddAirbaseName, AIRBASE:FindByName( AddAirbaseName ) ) - end - - return self -end - ---- Remove AIRBASEs from SET_AIRBASE. --- @param Core.Set#SET_AIRBASE self --- @param Wrapper.Airbase#AIRBASE RemoveAirbaseNames A single name or an array of AIRBASE names. --- @return self -function SET_AIRBASE:RemoveAirbasesByName( RemoveAirbaseNames ) - - local RemoveAirbaseNamesArray = ( type( RemoveAirbaseNames ) == "table" ) and RemoveAirbaseNames or { RemoveAirbaseNames } - - for RemoveAirbaseID, RemoveAirbaseName in pairs( RemoveAirbaseNamesArray ) do - self:Remove( RemoveAirbaseName.AirbaseName ) - end - - return self -end - - ---- Finds a Airbase based on the Airbase Name. --- @param #SET_AIRBASE self --- @param #string AirbaseName --- @return Wrapper.Airbase#AIRBASE The found Airbase. -function SET_AIRBASE:FindAirbase( AirbaseName ) - - local AirbaseFound = self.Set[AirbaseName] - return AirbaseFound -end - - - ---- Builds a set of airbases of coalitions. --- Possible current coalitions are red, blue and neutral. --- @param #SET_AIRBASE self --- @param #string Coalitions Can take the following values: "red", "blue", "neutral". --- @return #SET_AIRBASE self -function SET_AIRBASE:FilterCoalitions( Coalitions ) - if not self.Filter.Coalitions then - self.Filter.Coalitions = {} - end - if type( Coalitions ) ~= "table" then - Coalitions = { Coalitions } - end - for CoalitionID, Coalition in pairs( Coalitions ) do - self.Filter.Coalitions[Coalition] = Coalition - end - return self -end - - ---- Builds a set of airbases out of categories. --- Possible current categories are plane, helicopter, ground, ship. --- @param #SET_AIRBASE self --- @param #string Categories Can take the following values: "airdrome", "helipad", "ship". --- @return #SET_AIRBASE self -function SET_AIRBASE:FilterCategories( Categories ) - if not self.Filter.Categories then - self.Filter.Categories = {} - end - if type( Categories ) ~= "table" then - Categories = { Categories } - end - for CategoryID, Category in pairs( Categories ) do - self.Filter.Categories[Category] = Category - end - return self -end - ---- Starts the filtering. --- @param #SET_AIRBASE self --- @return #SET_AIRBASE self -function SET_AIRBASE:FilterStart() - - if _DATABASE then - self:_FilterStart() - end - - return self -end - - ---- Handles the Database to check on an event (birth) that the Object was added in the Database. --- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! --- @param #SET_AIRBASE self --- @param Core.Event#EVENTDATA Event --- @return #string The name of the AIRBASE --- @return #table The AIRBASE -function SET_AIRBASE:AddInDatabase( Event ) - self:F3( { Event } ) - - return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] -end - ---- Handles the Database to check on any event that Object exists in the Database. --- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! --- @param #SET_AIRBASE self --- @param Core.Event#EVENTDATA Event --- @return #string The name of the AIRBASE --- @return #table The AIRBASE -function SET_AIRBASE:FindInDatabase( Event ) - self:F3( { Event } ) - - return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] -end - ---- Iterate the SET_AIRBASE and call an interator function for each AIRBASE, providing the AIRBASE and optional parameters. --- @param #SET_AIRBASE self --- @param #function IteratorFunction The function that will be called when there is an alive AIRBASE in the SET_AIRBASE. The function needs to accept a AIRBASE parameter. --- @return #SET_AIRBASE self -function SET_AIRBASE:ForEachAirbase( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.Set ) - - return self -end - ---- Iterate the SET_AIRBASE while identifying the nearest @{Airbase#AIRBASE} from a @{Point#POINT_VEC2}. --- @param #SET_AIRBASE self --- @param Core.Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest @{Airbase#AIRBASE}. --- @return Wrapper.Airbase#AIRBASE The closest @{Airbase#AIRBASE}. -function SET_AIRBASE:FindNearestAirbaseFromPointVec2( PointVec2 ) - self:F2( PointVec2 ) - - local NearestAirbase = self:FindNearestObjectFromPointVec2( PointVec2 ) - return NearestAirbase -end - - - ---- --- @param #SET_AIRBASE self --- @param Wrapper.Airbase#AIRBASE MAirbase --- @return #SET_AIRBASE self -function SET_AIRBASE:IsIncludeObject( MAirbase ) - self:F2( MAirbase ) - - local MAirbaseInclude = true - - if MAirbase then - local MAirbaseName = MAirbase:GetName() - - if self.Filter.Coalitions then - local MAirbaseCoalition = false - for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do - local AirbaseCoalitionID = _DATABASE:GetCoalitionFromAirbase( MAirbaseName ) - self:T3( { "Coalition:", AirbaseCoalitionID, self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) - if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == AirbaseCoalitionID then - MAirbaseCoalition = true - end - end - self:T( { "Evaluated Coalition", MAirbaseCoalition } ) - MAirbaseInclude = MAirbaseInclude and MAirbaseCoalition - end - - if self.Filter.Categories then - local MAirbaseCategory = false - for CategoryID, CategoryName in pairs( self.Filter.Categories ) do - local AirbaseCategoryID = _DATABASE:GetCategoryFromAirbase( MAirbaseName ) - self:T3( { "Category:", AirbaseCategoryID, self.FilterMeta.Categories[CategoryName], CategoryName } ) - if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == AirbaseCategoryID then - MAirbaseCategory = true - end - end - self:T( { "Evaluated Category", MAirbaseCategory } ) - MAirbaseInclude = MAirbaseInclude and MAirbaseCategory - end - end - - self:T2( MAirbaseInclude ) - return MAirbaseInclude -end ---- **Core** - **POINT\_VEC** classes define an **extensive API** to **manage 3D points** in the simulation space. --- --- 1) @{Point#POINT_VEC3} class, extends @{Base#BASE} --- ================================================== --- The @{Point#POINT_VEC3} class defines a 3D point in the simulator. --- --- **Important Note:** Most of the functions in this section were taken from MIST, and reworked to OO concepts. --- In order to keep the credibility of the the author, I want to emphasize that the of the MIST framework was created by Grimes, who you can find on the Eagle Dynamics Forums. --- --- ## 1.1) POINT_VEC3 constructor --- --- A new POINT_VEC3 instance can be created with: --- --- * @{Point#POINT_VEC3.New}(): a 3D point. --- * @{Point#POINT_VEC3.NewFromVec3}(): a 3D point created from a @{DCSTypes#Vec3}. --- --- ## 1.2) Manupulate the X, Y, Z coordinates of the point --- --- A POINT_VEC3 class works in 3D space. It contains internally an X, Y, Z coordinate. --- Methods exist to manupulate these coordinates. --- --- The current X, Y, Z axis can be retrieved with the methods @{#POINT_VEC3.GetX}(), @{#POINT_VEC3.GetY}(), @{#POINT_VEC3.GetZ}() respectively. --- The methods @{#POINT_VEC3.SetX}(), @{#POINT_VEC3.SetY}(), @{#POINT_VEC3.SetZ}() change the respective axis with a new value. --- The current axis values can be changed by using the methods @{#POINT_VEC3.AddX}(), @{#POINT_VEC3.AddY}(), @{#POINT_VEC3.AddZ}() --- to add or substract a value from the current respective axis value. --- Note that the Set and Add methods return the current POINT_VEC3 object, so these manipulation methods can be chained... For example: --- --- local Vec3 = PointVec3:AddX( 100 ):AddZ( 150 ):GetVec3() --- --- ## 1.3) Create waypoints for routes --- --- A POINT_VEC3 can prepare waypoints for Ground, Air and Naval groups to be embedded into a Route. --- --- --- ## 1.5) Smoke, flare, explode, illuminate --- --- At the point a smoke, flare, explosion and illumination bomb can be triggered. Use the following methods: --- --- ### 1.5.1) Smoke --- --- * @{#POINT_VEC3.Smoke}(): To smoke the point in a certain color. --- * @{#POINT_VEC3.SmokeBlue}(): To smoke the point in blue. --- * @{#POINT_VEC3.SmokeRed}(): To smoke the point in red. --- * @{#POINT_VEC3.SmokeOrange}(): To smoke the point in orange. --- * @{#POINT_VEC3.SmokeWhite}(): To smoke the point in white. --- * @{#POINT_VEC3.SmokeGreen}(): To smoke the point in green. --- --- ### 1.5.2) Flare --- --- * @{#POINT_VEC3.Flare}(): To flare the point in a certain color. --- * @{#POINT_VEC3.FlareRed}(): To flare the point in red. --- * @{#POINT_VEC3.FlareYellow}(): To flare the point in yellow. --- * @{#POINT_VEC3.FlareWhite}(): To flare the point in white. --- * @{#POINT_VEC3.FlareGreen}(): To flare the point in green. --- --- ### 1.5.3) Explode --- --- * @{#POINT_VEC3.Explosion}(): To explode the point with a certain intensity. --- --- ### 1.5.4) Illuminate --- --- * @{#POINT_VEC3.IlluminationBomb}(): To illuminate the point. --- --- --- 2) @{Point#POINT_VEC2} class, extends @{Point#POINT_VEC3} --- ========================================================= --- The @{Point#POINT_VEC2} class defines a 2D point in the simulator. The height coordinate (if needed) will be the land height + an optional added height specified. --- --- 2.1) POINT_VEC2 constructor --- --------------------------- --- A new POINT_VEC2 instance can be created with: --- --- * @{Point#POINT_VEC2.New}(): a 2D point, taking an additional height parameter. --- * @{Point#POINT_VEC2.NewFromVec2}(): a 2D point created from a @{DCSTypes#Vec2}. --- --- ## 1.2) Manupulate the X, Altitude, Y coordinates of the 2D point --- --- A POINT_VEC2 class works in 2D space, with an altitude setting. It contains internally an X, Altitude, Y coordinate. --- Methods exist to manupulate these coordinates. --- --- The current X, Altitude, Y axis can be retrieved with the methods @{#POINT_VEC2.GetX}(), @{#POINT_VEC2.GetAlt}(), @{#POINT_VEC2.GetY}() respectively. --- The methods @{#POINT_VEC2.SetX}(), @{#POINT_VEC2.SetAlt}(), @{#POINT_VEC2.SetY}() change the respective axis with a new value. --- The current Lat(itude), Alt(itude), Lon(gitude) values can also be retrieved with the methods @{#POINT_VEC2.GetLat}(), @{#POINT_VEC2.GetAlt}(), @{#POINT_VEC2.GetLon}() respectively. --- The current axis values can be changed by using the methods @{#POINT_VEC2.AddX}(), @{#POINT_VEC2.AddAlt}(), @{#POINT_VEC2.AddY}() --- to add or substract a value from the current respective axis value. --- Note that the Set and Add methods return the current POINT_VEC2 object, so these manipulation methods can be chained... For example: --- --- local Vec2 = PointVec2:AddX( 100 ):AddY( 2000 ):GetVec2() --- --- === --- --- **API CHANGE HISTORY** --- ====================== --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-03-03: POINT\_VEC3:**Explosion( ExplosionIntensity )** added. --- 2017-03-03: POINT\_VEC3:**IlluminationBomb()** added. --- --- 2017-02-18: POINT\_VEC3:**NewFromVec2( Vec2, LandHeightAdd )** added. --- --- 2016-08-12: POINT\_VEC3:**Translate( Distance, Angle )** added. --- --- 2016-08-06: Made PointVec3 and Vec3, PointVec2 and Vec2 terminology used in the code consistent. --- --- * Replaced method _Point_Vec3() to **Vec3**() where the code manages a Vec3. Replaced all references to the method. --- * Replaced method _Point_Vec2() to **Vec2**() where the code manages a Vec2. Replaced all references to the method. --- * Replaced method Random_Point_Vec3() to **RandomVec3**() where the code manages a Vec3. Replaced all references to the method. --- . --- === --- --- ### Authors: --- --- * FlightControl : Design & Programming --- --- ### Contributions: --- --- @module Point - ---- The POINT_VEC3 class --- @type POINT_VEC3 --- @field #number x The x coordinate in 3D space. --- @field #number y The y coordinate in 3D space. --- @field #number z The z coordiante in 3D space. --- @field Utilities.Utils#SMOKECOLOR SmokeColor --- @field Utilities.Utils#FLARECOLOR FlareColor --- @field #POINT_VEC3.RoutePointAltType RoutePointAltType --- @field #POINT_VEC3.RoutePointType RoutePointType --- @field #POINT_VEC3.RoutePointAction RoutePointAction --- @extends Core.Base#BASE -POINT_VEC3 = { - ClassName = "POINT_VEC3", - Metric = true, - RoutePointAltType = { - BARO = "BARO", - }, - RoutePointType = { - TakeOffParking = "TakeOffParking", - TurningPoint = "Turning Point", - }, - RoutePointAction = { - FromParkingArea = "From Parking Area", - TurningPoint = "Turning Point", - }, -} - ---- The POINT_VEC2 class --- @type POINT_VEC2 --- @field Dcs.DCSTypes#Distance x The x coordinate in meters. --- @field Dcs.DCSTypes#Distance y the y coordinate in meters. --- @extends Core.Point#POINT_VEC3 -POINT_VEC2 = { - ClassName = "POINT_VEC2", -} - - -do -- POINT_VEC3 - ---- RoutePoint AltTypes --- @type POINT_VEC3.RoutePointAltType --- @field BARO "BARO" - ---- RoutePoint Types --- @type POINT_VEC3.RoutePointType --- @field TakeOffParking "TakeOffParking" --- @field TurningPoint "Turning Point" - ---- RoutePoint Actions --- @type POINT_VEC3.RoutePointAction --- @field FromParkingArea "From Parking Area" --- @field TurningPoint "Turning Point" - --- Constructor. - ---- Create a new POINT_VEC3 object. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. --- @param Dcs.DCSTypes#Distance y The y coordinate of the Vec3 point, pointing Upwards. --- @param Dcs.DCSTypes#Distance z The z coordinate of the Vec3 point, pointing to the Right. --- @return Core.Point#POINT_VEC3 self -function POINT_VEC3:New( x, y, z ) - - local self = BASE:Inherit( self, BASE:New() ) - self.x = x - self.y = y - self.z = z - - return self -end - ---- Create a new POINT_VEC3 object from Vec2 coordinates. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Vec2 Vec2 The Vec2 point. --- @return Core.Point#POINT_VEC3 self -function POINT_VEC3:NewFromVec2( Vec2, LandHeightAdd ) - - local LandHeight = land.getHeight( Vec2 ) - - LandHeightAdd = LandHeightAdd or 0 - LandHeight = LandHeight + LandHeightAdd - - self = self:New( Vec2.x, LandHeight, Vec2.y ) - - self:F2( self ) - - return self -end - ---- Create a new POINT_VEC3 object from Vec3 coordinates. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Vec3 Vec3 The Vec3 point. --- @return Core.Point#POINT_VEC3 self -function POINT_VEC3:NewFromVec3( Vec3 ) - - self = self:New( Vec3.x, Vec3.y, Vec3.z ) - self:F2( self ) - return self -end - - ---- Return the coordinates of the POINT_VEC3 in Vec3 format. --- @param #POINT_VEC3 self --- @return Dcs.DCSTypes#Vec3 The Vec3 coodinate. -function POINT_VEC3:GetVec3() - return { x = self.x, y = self.y, z = self.z } -end - ---- Return the coordinates of the POINT_VEC3 in Vec2 format. --- @param #POINT_VEC3 self --- @return Dcs.DCSTypes#Vec2 The Vec2 coodinate. -function POINT_VEC3:GetVec2() - return { x = self.x, y = self.z } -end - - ---- Return the x coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @return #number The x coodinate. -function POINT_VEC3:GetX() - return self.x -end - ---- Return the y coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @return #number The y coodinate. -function POINT_VEC3:GetY() - return self.y -end - ---- Return the z coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @return #number The z coodinate. -function POINT_VEC3:GetZ() - return self.z -end - ---- Set the x coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #number x The x coordinate. --- @return #POINT_VEC3 -function POINT_VEC3:SetX( x ) - self.x = x - return self -end - ---- Set the y coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #number y The y coordinate. --- @return #POINT_VEC3 -function POINT_VEC3:SetY( y ) - self.y = y - return self -end - ---- Set the z coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #number z The z coordinate. --- @return #POINT_VEC3 -function POINT_VEC3:SetZ( z ) - self.z = z - return self -end - ---- Add to the x coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #number x The x coordinate value to add to the current x coodinate. --- @return #POINT_VEC3 -function POINT_VEC3:AddX( x ) - self.x = self.x + x - return self -end - ---- Add to the y coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #number y The y coordinate value to add to the current y coodinate. --- @return #POINT_VEC3 -function POINT_VEC3:AddY( y ) - self.y = self.y + y - return self -end - ---- Add to the z coordinate of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #number z The z coordinate value to add to the current z coodinate. --- @return #POINT_VEC3 -function POINT_VEC3:AddZ( z ) - self.z = self.z +z - return self -end - ---- Return a random Vec2 within an Outer Radius and optionally NOT within an Inner Radius of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Distance OuterRadius --- @param Dcs.DCSTypes#Distance InnerRadius --- @return Dcs.DCSTypes#Vec2 Vec2 -function POINT_VEC3:GetRandomVec2InRadius( OuterRadius, InnerRadius ) - self:F2( { OuterRadius, InnerRadius } ) - - local Theta = 2 * math.pi * math.random() - local Radials = math.random() + math.random() - if Radials > 1 then - Radials = 2 - Radials - end - - local RadialMultiplier - if InnerRadius and InnerRadius <= OuterRadius then - RadialMultiplier = ( OuterRadius - InnerRadius ) * Radials + InnerRadius - else - RadialMultiplier = OuterRadius * Radials - end - - local RandomVec2 - if OuterRadius > 0 then - RandomVec2 = { x = math.cos( Theta ) * RadialMultiplier + self:GetX(), y = math.sin( Theta ) * RadialMultiplier + self:GetZ() } - else - RandomVec2 = { x = self:GetX(), y = self:GetZ() } - end - - return RandomVec2 -end - ---- Return a random POINT_VEC2 within an Outer Radius and optionally NOT within an Inner Radius of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Distance OuterRadius --- @param Dcs.DCSTypes#Distance InnerRadius --- @return #POINT_VEC2 -function POINT_VEC3:GetRandomPointVec2InRadius( OuterRadius, InnerRadius ) - self:F2( { OuterRadius, InnerRadius } ) - - return POINT_VEC2:NewFromVec2( self:GetRandomVec2InRadius( OuterRadius, InnerRadius ) ) -end - ---- Return a random Vec3 within an Outer Radius and optionally NOT within an Inner Radius of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Distance OuterRadius --- @param Dcs.DCSTypes#Distance InnerRadius --- @return Dcs.DCSTypes#Vec3 Vec3 -function POINT_VEC3:GetRandomVec3InRadius( OuterRadius, InnerRadius ) - - local RandomVec2 = self:GetRandomVec2InRadius( OuterRadius, InnerRadius ) - local y = self:GetY() + math.random( InnerRadius, OuterRadius ) - local RandomVec3 = { x = RandomVec2.x, y = y, z = RandomVec2.y } - - return RandomVec3 -end - ---- Return a random POINT_VEC3 within an Outer Radius and optionally NOT within an Inner Radius of the POINT_VEC3. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Distance OuterRadius --- @param Dcs.DCSTypes#Distance InnerRadius --- @return #POINT_VEC3 -function POINT_VEC3:GetRandomPointVec3InRadius( OuterRadius, InnerRadius ) - - return POINT_VEC3:NewFromVec3( self:GetRandomVec3InRadius( OuterRadius, InnerRadius ) ) -end - - ---- Return a direction vector Vec3 from POINT_VEC3 to the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #POINT_VEC3 TargetPointVec3 The target POINT_VEC3. --- @return Dcs.DCSTypes#Vec3 DirectionVec3 The direction vector in Vec3 format. -function POINT_VEC3:GetDirectionVec3( TargetPointVec3 ) - return { x = TargetPointVec3:GetX() - self:GetX(), y = TargetPointVec3:GetY() - self:GetY(), z = TargetPointVec3:GetZ() - self:GetZ() } -end - ---- Get a correction in radians of the real magnetic north of the POINT_VEC3. --- @param #POINT_VEC3 self --- @return #number CorrectionRadians The correction in radians. -function POINT_VEC3:GetNorthCorrectionRadians() - local TargetVec3 = self:GetVec3() - local lat, lon = coord.LOtoLL(TargetVec3) - local north_posit = coord.LLtoLO(lat + 1, lon) - return math.atan2( north_posit.z - TargetVec3.z, north_posit.x - TargetVec3.x ) -end - - ---- Return a direction in radians from the POINT_VEC3 using a direction vector in Vec3 format. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Vec3 DirectionVec3 The direction vector in Vec3 format. --- @return #number DirectionRadians The direction in radians. -function POINT_VEC3:GetDirectionRadians( DirectionVec3 ) - local DirectionRadians = math.atan2( DirectionVec3.z, DirectionVec3.x ) - --DirectionRadians = DirectionRadians + self:GetNorthCorrectionRadians() - if DirectionRadians < 0 then - DirectionRadians = DirectionRadians + 2 * math.pi -- put dir in range of 0 to 2*pi ( the full circle ) - end - return DirectionRadians -end - ---- Return the 2D distance in meters between the target POINT_VEC3 and the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #POINT_VEC3 TargetPointVec3 The target POINT_VEC3. --- @return Dcs.DCSTypes#Distance Distance The distance in meters. -function POINT_VEC3:Get2DDistance( TargetPointVec3 ) - local TargetVec3 = TargetPointVec3:GetVec3() - local SourceVec3 = self:GetVec3() - return ( ( TargetVec3.x - SourceVec3.x ) ^ 2 + ( TargetVec3.z - SourceVec3.z ) ^ 2 ) ^ 0.5 -end - ---- Return the 3D distance in meters between the target POINT_VEC3 and the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #POINT_VEC3 TargetPointVec3 The target POINT_VEC3. --- @return Dcs.DCSTypes#Distance Distance The distance in meters. -function POINT_VEC3:Get3DDistance( TargetPointVec3 ) - local TargetVec3 = TargetPointVec3:GetVec3() - local SourceVec3 = self:GetVec3() - return ( ( TargetVec3.x - SourceVec3.x ) ^ 2 + ( TargetVec3.y - SourceVec3.y ) ^ 2 + ( TargetVec3.z - SourceVec3.z ) ^ 2 ) ^ 0.5 -end - ---- Provides a Bearing / Range string --- @param #POINT_VEC3 self --- @param #number AngleRadians The angle in randians --- @param #number Distance The distance --- @return #string The BR Text -function POINT_VEC3:ToStringBR( AngleRadians, Distance ) - - AngleRadians = UTILS.Round( UTILS.ToDegree( AngleRadians ), 0 ) - if self:IsMetric() then - Distance = UTILS.Round( Distance / 1000, 2 ) - else - Distance = UTILS.Round( UTILS.MetersToNM( Distance ), 2 ) - end - - local s = string.format( '%03d', AngleRadians ) .. ' for ' .. Distance - - s = s .. self:GetAltitudeText() -- When the POINT is a VEC2, there will be no altitude shown. - - return s -end - ---- Provides a Bearing / Range string --- @param #POINT_VEC3 self --- @param #number AngleRadians The angle in randians --- @param #number Distance The distance --- @return #string The BR Text -function POINT_VEC3:ToStringLL( acc, DMS ) - - acc = acc or 3 - local lat, lon = coord.LOtoLL( self:GetVec3() ) - return UTILS.tostringLL(lat, lon, acc, DMS) -end - ---- Return the altitude text of the POINT_VEC3. --- @param #POINT_VEC3 self --- @return #string Altitude text. -function POINT_VEC3:GetAltitudeText() - if self:IsMetric() then - return ' at ' .. UTILS.Round( self:GetY(), 0 ) - else - return ' at ' .. UTILS.Round( UTILS.MetersToFeet( self:GetY() ), 0 ) - end -end - ---- Return a BR string from a POINT_VEC3 to the POINT_VEC3. --- @param #POINT_VEC3 self --- @param #POINT_VEC3 TargetPointVec3 The target POINT_VEC3. --- @return #string The BR text. -function POINT_VEC3:GetBRText( TargetPointVec3 ) - local DirectionVec3 = self:GetDirectionVec3( TargetPointVec3 ) - local AngleRadians = self:GetDirectionRadians( DirectionVec3 ) - local Distance = self:Get2DDistance( TargetPointVec3 ) - return self:ToStringBR( AngleRadians, Distance ) -end - ---- Sets the POINT_VEC3 metric or NM. --- @param #POINT_VEC3 self --- @param #boolean Metric true means metric, false means NM. -function POINT_VEC3:SetMetric( Metric ) - self.Metric = Metric -end - ---- Gets if the POINT_VEC3 is metric or NM. --- @param #POINT_VEC3 self --- @return #boolean Metric true means metric, false means NM. -function POINT_VEC3:IsMetric() - return self.Metric -end - ---- Add a Distance in meters from the POINT_VEC3 horizontal plane, with the given angle, and calculate the new POINT_VEC3. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Distance Distance The Distance to be added in meters. --- @param Dcs.DCSTypes#Angle Angle The Angle in degrees. --- @return #POINT_VEC3 The new calculated POINT_VEC3. -function POINT_VEC3:Translate( Distance, Angle ) - local SX = self:GetX() - local SZ = self:GetZ() - local Radians = Angle / 180 * math.pi - local TX = Distance * math.cos( Radians ) + SX - local TZ = Distance * math.sin( Radians ) + SZ - - return POINT_VEC3:New( TX, self:GetY(), TZ ) -end - - - ---- Build an air type route point. --- @param #POINT_VEC3 self --- @param #POINT_VEC3.RoutePointAltType AltType The altitude type. --- @param #POINT_VEC3.RoutePointType Type The route point type. --- @param #POINT_VEC3.RoutePointAction Action The route point action. --- @param Dcs.DCSTypes#Speed Speed Airspeed in km/h. --- @param #boolean SpeedLocked true means the speed is locked. --- @return #table The route point. -function POINT_VEC3:RoutePointAir( AltType, Type, Action, Speed, SpeedLocked ) - self:F2( { AltType, Type, Action, Speed, SpeedLocked } ) - - local RoutePoint = {} - RoutePoint.x = self.x - RoutePoint.y = self.z - RoutePoint.alt = self.y - RoutePoint.alt_type = AltType - - RoutePoint.type = Type - RoutePoint.action = Action - - RoutePoint.speed = Speed / 3.6 - RoutePoint.speed_locked = true - --- ["task"] = --- { --- ["id"] = "ComboTask", --- ["params"] = --- { --- ["tasks"] = --- { --- }, -- end of ["tasks"] --- }, -- end of ["params"] --- }, -- end of ["task"] - - - RoutePoint.task = {} - RoutePoint.task.id = "ComboTask" - RoutePoint.task.params = {} - RoutePoint.task.params.tasks = {} - - - return RoutePoint -end - ---- Build an ground type route point. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Speed Speed Speed in km/h. --- @param #POINT_VEC3.RoutePointAction Formation The route point Formation. --- @return #table The route point. -function POINT_VEC3:RoutePointGround( Speed, Formation ) - self:F2( { Formation, Speed } ) - - local RoutePoint = {} - RoutePoint.x = self.x - RoutePoint.y = self.z - - RoutePoint.action = Formation or "" - - - RoutePoint.speed = Speed / 3.6 - RoutePoint.speed_locked = true - --- ["task"] = --- { --- ["id"] = "ComboTask", --- ["params"] = --- { --- ["tasks"] = --- { --- }, -- end of ["tasks"] --- }, -- end of ["params"] --- }, -- end of ["task"] - - - RoutePoint.task = {} - RoutePoint.task.id = "ComboTask" - RoutePoint.task.params = {} - RoutePoint.task.params.tasks = {} - - - return RoutePoint -end - ---- Creates an explosion at the point of a certain intensity. --- @param #POINT_VEC3 self --- @param #number ExplosionIntensity -function POINT_VEC3:Explosion( ExplosionIntensity ) - self:F2( { ExplosionIntensity } ) - trigger.action.explosion( self:GetVec3(), ExplosionIntensity ) -end - ---- Creates an illumination bomb at the point. --- @param #POINT_VEC3 self -function POINT_VEC3:IlluminationBomb() - self:F2() - trigger.action.illuminationBomb( self:GetVec3() ) -end - - ---- Smokes the point in a color. --- @param #POINT_VEC3 self --- @param Utilities.Utils#SMOKECOLOR SmokeColor -function POINT_VEC3:Smoke( SmokeColor ) - self:F2( { SmokeColor } ) - trigger.action.smoke( self:GetVec3(), SmokeColor ) -end - ---- Smoke the POINT_VEC3 Green. --- @param #POINT_VEC3 self -function POINT_VEC3:SmokeGreen() - self:F2() - self:Smoke( SMOKECOLOR.Green ) -end - ---- Smoke the POINT_VEC3 Red. --- @param #POINT_VEC3 self -function POINT_VEC3:SmokeRed() - self:F2() - self:Smoke( SMOKECOLOR.Red ) -end - ---- Smoke the POINT_VEC3 White. --- @param #POINT_VEC3 self -function POINT_VEC3:SmokeWhite() - self:F2() - self:Smoke( SMOKECOLOR.White ) -end - ---- Smoke the POINT_VEC3 Orange. --- @param #POINT_VEC3 self -function POINT_VEC3:SmokeOrange() - self:F2() - self:Smoke( SMOKECOLOR.Orange ) -end - ---- Smoke the POINT_VEC3 Blue. --- @param #POINT_VEC3 self -function POINT_VEC3:SmokeBlue() - self:F2() - self:Smoke( SMOKECOLOR.Blue ) -end - ---- Flares the point in a color. --- @param #POINT_VEC3 self --- @param Utilities.Utils#FLARECOLOR FlareColor --- @param Dcs.DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. -function POINT_VEC3:Flare( FlareColor, Azimuth ) - self:F2( { FlareColor } ) - trigger.action.signalFlare( self:GetVec3(), FlareColor, Azimuth and Azimuth or 0 ) -end - ---- Flare the POINT_VEC3 White. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. -function POINT_VEC3:FlareWhite( Azimuth ) - self:F2( Azimuth ) - self:Flare( FLARECOLOR.White, Azimuth ) -end - ---- Flare the POINT_VEC3 Yellow. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. -function POINT_VEC3:FlareYellow( Azimuth ) - self:F2( Azimuth ) - self:Flare( FLARECOLOR.Yellow, Azimuth ) -end - ---- Flare the POINT_VEC3 Green. --- @param #POINT_VEC3 self --- @param Dcs.DCSTypes#Azimuth (optional) Azimuth The azimuth of the flare direction. The default azimuth is 0. -function POINT_VEC3:FlareGreen( Azimuth ) - self:F2( Azimuth ) - self:Flare( FLARECOLOR.Green, Azimuth ) -end - ---- Flare the POINT_VEC3 Red. --- @param #POINT_VEC3 self -function POINT_VEC3:FlareRed( Azimuth ) - self:F2( Azimuth ) - self:Flare( FLARECOLOR.Red, Azimuth ) -end - -end - -do -- POINT_VEC2 - - - ---- POINT_VEC2 constructor. --- @param #POINT_VEC2 self --- @param Dcs.DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. --- @param Dcs.DCSTypes#Distance y The y coordinate of the Vec3 point, pointing to the Right. --- @param Dcs.DCSTypes#Distance LandHeightAdd (optional) The default height if required to be evaluated will be the land height of the x, y coordinate. You can specify an extra height to be added to the land height. --- @return Core.Point#POINT_VEC2 -function POINT_VEC2:New( x, y, LandHeightAdd ) - - local LandHeight = land.getHeight( { ["x"] = x, ["y"] = y } ) - - LandHeightAdd = LandHeightAdd or 0 - LandHeight = LandHeight + LandHeightAdd - - self = BASE:Inherit( self, POINT_VEC3:New( x, LandHeight, y ) ) - self:F2( self ) - - return self -end - ---- Create a new POINT_VEC2 object from Vec2 coordinates. --- @param #POINT_VEC2 self --- @param Dcs.DCSTypes#Vec2 Vec2 The Vec2 point. --- @return Core.Point#POINT_VEC2 self -function POINT_VEC2:NewFromVec2( Vec2, LandHeightAdd ) - - local LandHeight = land.getHeight( Vec2 ) - - LandHeightAdd = LandHeightAdd or 0 - LandHeight = LandHeight + LandHeightAdd - - self = BASE:Inherit( self, POINT_VEC3:New( Vec2.x, LandHeight, Vec2.y ) ) - self:F2( self ) - - return self -end - ---- Create a new POINT_VEC2 object from Vec3 coordinates. --- @param #POINT_VEC2 self --- @param Dcs.DCSTypes#Vec3 Vec3 The Vec3 point. --- @return Core.Point#POINT_VEC2 self -function POINT_VEC2:NewFromVec3( Vec3 ) - - local self = BASE:Inherit( self, BASE:New() ) - local Vec2 = { x = Vec3.x, y = Vec3.z } - - local LandHeight = land.getHeight( Vec2 ) - - self = BASE:Inherit( self, POINT_VEC3:New( Vec2.x, LandHeight, Vec2.y ) ) - self:F2( self ) - - return self -end - ---- Return the x coordinate of the POINT_VEC2. --- @param #POINT_VEC2 self --- @return #number The x coodinate. -function POINT_VEC2:GetX() - return self.x -end - ---- Return the y coordinate of the POINT_VEC2. --- @param #POINT_VEC2 self --- @return #number The y coodinate. -function POINT_VEC2:GetY() - return self.z -end - ---- Return the altitude (height) of the land at the POINT_VEC2. --- @param #POINT_VEC2 self --- @return #number The land altitude. -function POINT_VEC2:GetAlt() - return land.getHeight( { x = self.x, y = self.z } ) -end - ---- Return Return the Lat(itude) coordinate of the POINT_VEC2 (ie: (parent)POINT_VEC3.x). --- @param #POINT_VEC2 self --- @return #number The x coodinate. -function POINT_VEC2:GetLat() - return self.x -end - ---- Return the Lon(gitude) coordinate of the POINT_VEC2 (ie: (parent)POINT_VEC3.z). --- @param #POINT_VEC2 self --- @return #number The y coodinate. -function POINT_VEC2:GetLon() - return self.z -end - ---- Set the x coordinate of the POINT_VEC2. --- @param #POINT_VEC2 self --- @param #number x The x coordinate. --- @return #POINT_VEC2 -function POINT_VEC2:SetX( x ) - self.x = x - return self -end - ---- Set the y coordinate of the POINT_VEC2. --- @param #POINT_VEC2 self --- @param #number y The y coordinate. --- @return #POINT_VEC2 -function POINT_VEC2:SetY( y ) - self.z = y - return self -end - ---- Set the Lat(itude) coordinate of the POINT_VEC2 (ie: POINT_VEC3.x). --- @param #POINT_VEC2 self --- @param #number x The x coordinate. --- @return #POINT_VEC2 -function POINT_VEC2:SetLat( x ) - self.x = x - return self -end - ---- Set the altitude of the POINT_VEC2. --- @param #POINT_VEC2 self --- @param #number Altitude The land altitude. If nothing (nil) is given, then the current land altitude is set. --- @return #POINT_VEC2 -function POINT_VEC2:SetAlt( Altitude ) - self.y = Altitude or land.getHeight( { x = self.x, y = self.z } ) - return self -end - ---- Set the Lon(gitude) coordinate of the POINT_VEC2 (ie: POINT_VEC3.z). --- @param #POINT_VEC2 self --- @param #number y The y coordinate. --- @return #POINT_VEC2 -function POINT_VEC2:SetLon( z ) - self.z = z - return self -end - ---- Add to the x coordinate of the POINT_VEC2. --- @param #POINT_VEC2 self --- @param #number x The x coordinate. --- @return #POINT_VEC2 -function POINT_VEC2:AddX( x ) - self.x = self.x + x - return self -end - ---- Add to the y coordinate of the POINT_VEC2. --- @param #POINT_VEC2 self --- @param #number y The y coordinate. --- @return #POINT_VEC2 -function POINT_VEC2:AddY( y ) - self.z = self.z + y - return self -end - ---- Add to the current land height an altitude. --- @param #POINT_VEC2 self --- @param #number Altitude The Altitude to add. If nothing (nil) is given, then the current land altitude is set. --- @return #POINT_VEC2 -function POINT_VEC2:AddAlt( Altitude ) - self.y = land.getHeight( { x = self.x, y = self.z } ) + Altitude or 0 - return self -end - - - ---- Calculate the distance from a reference @{#POINT_VEC2}. --- @param #POINT_VEC2 self --- @param #POINT_VEC2 PointVec2Reference The reference @{#POINT_VEC2}. --- @return Dcs.DCSTypes#Distance The distance from the reference @{#POINT_VEC2} in meters. -function POINT_VEC2:DistanceFromPointVec2( PointVec2Reference ) - self:F2( PointVec2Reference ) - - local Distance = ( ( PointVec2Reference:GetX() - self:GetX() ) ^ 2 + ( PointVec2Reference:GetY() - self:GetY() ) ^2 ) ^0.5 - - self:T2( Distance ) - return Distance -end - ---- Calculate the distance from a reference @{DCSTypes#Vec2}. --- @param #POINT_VEC2 self --- @param Dcs.DCSTypes#Vec2 Vec2Reference The reference @{DCSTypes#Vec2}. --- @return Dcs.DCSTypes#Distance The distance from the reference @{DCSTypes#Vec2} in meters. -function POINT_VEC2:DistanceFromVec2( Vec2Reference ) - self:F2( Vec2Reference ) - - local Distance = ( ( Vec2Reference.x - self:GetX() ) ^ 2 + ( Vec2Reference.y - self:GetY() ) ^2 ) ^0.5 - - self:T2( Distance ) - return Distance -end - - ---- Return no text for the altitude of the POINT_VEC2. --- @param #POINT_VEC2 self --- @return #string Empty string. -function POINT_VEC2:GetAltitudeText() - return '' -end - ---- Add a Distance in meters from the POINT_VEC2 orthonormal plane, with the given angle, and calculate the new POINT_VEC2. --- @param #POINT_VEC2 self --- @param Dcs.DCSTypes#Distance Distance The Distance to be added in meters. --- @param Dcs.DCSTypes#Angle Angle The Angle in degrees. --- @return #POINT_VEC2 The new calculated POINT_VEC2. -function POINT_VEC2:Translate( Distance, Angle ) - local SX = self:GetX() - local SY = self:GetY() - local Radians = Angle / 180 * math.pi - local TX = Distance * math.cos( Radians ) + SX - local TY = Distance * math.sin( Radians ) + SY - - return POINT_VEC2:New( TX, TY ) -end - -end - - ---- **Core** - MESSAGE class takes are of the **real-time notifications** and **messages to players** during a simulation. --- --- ![Banner Image](..\Presentations\MESSAGE\Dia1.JPG) --- --- === --- --- # 1) @{Message#MESSAGE} class, extends @{Base#BASE} --- --- Message System to display Messages to Clients, Coalitions or All. --- Messages are shown on the display panel for an amount of seconds, and will then disappear. --- Messages can contain a category which is indicating the category of the message. --- --- ## 1.1) MESSAGE construction --- --- Messages are created with @{Message#MESSAGE.New}. Note that when the MESSAGE object is created, no message is sent yet. --- To send messages, you need to use the To functions. --- --- ## 1.2) Send messages to an audience --- --- Messages are sent: --- --- * To a @{Client} using @{Message#MESSAGE.ToClient}(). --- * To a @{Group} using @{Message#MESSAGE.ToGroup}() --- * To a coalition using @{Message#MESSAGE.ToCoalition}(). --- * To the red coalition using @{Message#MESSAGE.ToRed}(). --- * To the blue coalition using @{Message#MESSAGE.ToBlue}(). --- * To all Players using @{Message#MESSAGE.ToAll}(). --- --- ## 1.3) Send conditionally to an audience --- --- Messages can be sent conditionally to an audience (when a condition is true): --- --- * To all players using @{Message#MESSAGE.ToAllIf}(). --- * To a coalition using @{Message#MESSAGE.ToCoalitionIf}(). --- --- --- @module Message - ---- The MESSAGE class --- @type MESSAGE --- @extends Core.Base#BASE -MESSAGE = { - ClassName = "MESSAGE", - MessageCategory = 0, - MessageID = 0, -} - - ---- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients. --- @param self --- @param #string MessageText is the text of the Message. --- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel. --- @param #string MessageCategory (optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ". --- @return #MESSAGE --- @usage --- -- Create a series of new Messages. --- -- MessageAll is meant to be sent to all players, for 25 seconds, and is classified as "Score". --- -- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win". --- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". --- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score". --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", 25, "End of Mission" ) --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" ) --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score") -function MESSAGE:New( MessageText, MessageDuration, MessageCategory ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { MessageText, MessageDuration, MessageCategory } ) - - -- When no MessageCategory is given, we don't show it as a title... - if MessageCategory and MessageCategory ~= "" then - if MessageCategory:sub(-1) ~= "\n" then - self.MessageCategory = MessageCategory .. ": " - else - self.MessageCategory = MessageCategory:sub( 1, -2 ) .. ":\n" - end - else - self.MessageCategory = "" - end - - self.MessageDuration = MessageDuration or 5 - self.MessageTime = timer.getTime() - self.MessageText = MessageText - - self.MessageSent = false - self.MessageGroup = false - self.MessageCoalition = false - - return self -end - ---- Sends a MESSAGE to a Client Group. Note that the Group needs to be defined within the ME with the skillset "Client" or "Player". --- @param #MESSAGE self --- @param Wrapper.Client#CLIENT Client is the Group of the Client. --- @return #MESSAGE --- @usage --- -- Send the 2 messages created with the @{New} method to the Client Group. --- -- Note that the Message of MessageClient2 is overwriting the Message of MessageClient1. --- ClientGroup = Group.getByName( "ClientGroup" ) --- --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- or --- MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ):ToClient( ClientGroup ) --- or --- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" ) --- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" ) --- MessageClient1:ToClient( ClientGroup ) --- MessageClient2:ToClient( ClientGroup ) -function MESSAGE:ToClient( Client ) - self:F( Client ) - - if Client and Client:GetClientGroupID() then - - local ClientGroupID = Client:GetClientGroupID() - self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) - trigger.action.outTextForGroup( ClientGroupID, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) - end - - return self -end - ---- Sends a MESSAGE to a Group. --- @param #MESSAGE self --- @param Wrapper.Group#GROUP Group is the Group. --- @return #MESSAGE -function MESSAGE:ToGroup( Group ) - self:F( Group.GroupName ) - - if Group then - - self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) - trigger.action.outTextForGroup( Group:GetID(), self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) - end - - return self -end ---- Sends a MESSAGE to the Blue coalition. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the BLUE coalition. --- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() --- or --- MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToBlue() --- or --- MessageBLUE = MESSAGE:New( "To the BLUE Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageBLUE:ToBlue() -function MESSAGE:ToBlue() - self:F() - - self:ToCoalition( coalition.side.BLUE ) - - return self -end - ---- Sends a MESSAGE to the Red Coalition. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the RED coalition. --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() --- or --- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToRed() --- or --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageRED:ToRed() -function MESSAGE:ToRed( ) - self:F() - - self:ToCoalition( coalition.side.RED ) - - return self -end - ---- Sends a MESSAGE to a Coalition. --- @param #MESSAGE self --- @param CoalitionSide needs to be filled out by the defined structure of the standard scripting engine @{coalition.side}. --- @return #MESSAGE --- @usage --- -- Send a message created with the @{New} method to the RED coalition. --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) --- or --- MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ):ToCoalition( coalition.side.RED ) --- or --- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" ) --- MessageRED:ToCoalition( coalition.side.RED ) -function MESSAGE:ToCoalition( CoalitionSide ) - self:F( CoalitionSide ) - - if CoalitionSide then - self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration ) - trigger.action.outTextForCoalition( CoalitionSide, self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration ) - end - - return self -end - ---- Sends a MESSAGE to a Coalition if the given Condition is true. --- @param #MESSAGE self --- @param CoalitionSide needs to be filled out by the defined structure of the standard scripting engine @{coalition.side}. --- @return #MESSAGE -function MESSAGE:ToCoalitionIf( CoalitionSide, Condition ) - self:F( CoalitionSide ) - - if Condition and Condition == true then - self:ToCoalition( CoalitionSide ) - end - - return self -end - ---- Sends a MESSAGE to all players. --- @param #MESSAGE self --- @return #MESSAGE --- @usage --- -- Send a message created to all players. --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() --- or --- MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ):ToAll() --- or --- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" ) --- MessageAll:ToAll() -function MESSAGE:ToAll() - self:F() - - self:ToCoalition( coalition.side.RED ) - self:ToCoalition( coalition.side.BLUE ) - - return self -end - - ---- Sends a MESSAGE to all players if the given Condition is true. --- @param #MESSAGE self --- @return #MESSAGE -function MESSAGE:ToAllIf( Condition ) - - if Condition and Condition == true then - self:ToCoalition( coalition.side.RED ) - self:ToCoalition( coalition.side.BLUE ) - end - - return self -end ---- **Core** - The **FSM** (**F**inite **S**tate **M**achine) class and derived **FSM\_** classes --- are design patterns allowing efficient (long-lasting) processes and workflows. --- --- ![Banner Image](..\Presentations\FSM\Dia1.JPG) --- --- === --- --- A FSM can only be in one of a finite number of states. --- The machine is in only one state at a time; the state it is in at any given time is called the **current state**. --- It can change from one state to another when initiated by an **__internal__ or __external__ triggering event**, which is called a **transition**. --- An **FSM implementation** is defined by **a list of its states**, **its initial state**, and **the triggering events** for **each possible transition**. --- An FSM implementation is composed out of **two parts**, a set of **state transition rules**, and an implementation set of **state transition handlers**, implementing those transitions. --- --- The FSM class supports a **hierarchical implementation of a Finite State Machine**, --- that is, it allows to **embed existing FSM implementations in a master FSM**. --- FSM hierarchies allow for efficient FSM re-use, **not having to re-invent the wheel every time again** when designing complex processes. --- --- ![Workflow Example](..\Presentations\FSM\Dia2.JPG) --- --- The above diagram shows a graphical representation of a FSM implementation for a **Task**, which guides a Human towards a Zone, --- orders him to destroy x targets and account the results. --- Other examples of ready made FSM could be: --- --- * route a plane to a zone flown by a human --- * detect targets by an AI and report to humans --- * account for destroyed targets by human players --- * handle AI infantry to deploy from or embark to a helicopter or airplane or vehicle --- * let an AI patrol a zone --- --- The **MOOSE framework** uses extensively the FSM class and derived FSM\_ classes, --- because **the goal of MOOSE is to simplify mission design complexity for mission building**. --- By efficiently utilizing the FSM class and derived classes, MOOSE allows mission designers to quickly build processes. --- **Ready made FSM-based implementations classes** exist within the MOOSE framework that **can easily be re-used, --- and tailored** by mission designers through **the implementation of Transition Handlers**. --- Each of these FSM implementation classes start either with: --- --- * an acronym **AI\_**, which indicates an FSM implementation directing **AI controlled** @{GROUP} and/or @{UNIT}. These AI\_ classes derive the @{#FSM_CONTROLLABLE} class. --- * an acronym **TASK\_**, which indicates an FSM implementation executing a @{TASK} executed by Groups of players. These TASK\_ classes derive the @{#FSM_TASK} class. --- * an acronym **ACT\_**, which indicates an Sub-FSM implementation, directing **Humans actions** that need to be done in a @{TASK}, seated in a @{CLIENT} (slot) or a @{UNIT} (CA join). These ACT\_ classes derive the @{#FSM_PROCESS} class. --- --- Detailed explanations and API specifics are further below clarified and FSM derived class specifics are described in those class documentation sections. --- --- ##__Dislaimer:__ --- The FSM class development is based on a finite state machine implementation made by Conroy Kyle. --- The state machine can be found on [github](https://github.com/kyleconroy/lua-state-machine) --- I've reworked this development (taken the concept), and created a **hierarchical state machine** out of it, embedded within the DCS simulator. --- Additionally, I've added extendability and created an API that allows seamless FSM implementation. --- --- The following derived classes are available in the MOOSE framework, that implement a specialised form of a FSM: --- --- * @{#FSM_TASK}: Models Finite State Machines for @{Task}s. --- * @{#FSM_PROCESS}: Models Finite State Machines for @{Task} actions, which control @{Client}s. --- * @{#FSM_CONTROLLABLE}: Models Finite State Machines for @{Controllable}s, which are @{Group}s, @{Unit}s, @{Client}s. --- * @{#FSM_SET}: Models Finite State Machines for @{Set}s. Note that these FSMs control multiple objects!!! So State concerns here --- for multiple objects or the position of the state machine in the process. --- --- ==== --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- YYYY-MM-DD: CLASS:**NewFunction**( Params ) replaces CLASS:_OldFunction_( Params ) --- YYYY-MM-DD: CLASS:**NewFunction( Params )** added --- --- Hereby the change log: --- --- * 2016-12-18: Released. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * [**Pikey**](https://forums.eagle.ru/member.php?u=62835): Review of documentation & advice for improvements. --- --- ### Authors: --- --- * [**FlightControl**](https://forums.eagle.ru/member.php?u=89536): Design & Programming & documentation. --- --- @module Fsm - -do -- FSM - - --- @type FSM - -- @extends Core.Base#BASE - - - --- # 1) FSM class, extends @{Base#BASE} - -- - -- ![Transition Rules and Transition Handlers and Event Triggers](..\Presentations\FSM\Dia3.JPG) - -- - -- The FSM class is the base class of all FSM\_ derived classes. It implements the main functionality to define and execute Finite State Machines. - -- The derived FSM\_ classes extend the Finite State Machine functionality to run a workflow process for a specific purpose or component. - -- - -- Finite State Machines have **Transition Rules**, **Transition Handlers** and **Event Triggers**. - -- - -- The **Transition Rules** define the "Process Flow Boundaries", that is, - -- the path that can be followed hopping from state to state upon triggered events. - -- If an event is triggered, and there is no valid path found for that event, - -- an error will be raised and the FSM will stop functioning. - -- - -- The **Transition Handlers** are special methods that can be defined by the mission designer, following a defined syntax. - -- If the FSM object finds a method of such a handler, then the method will be called by the FSM, passing specific parameters. - -- The method can then define its own custom logic to implement the FSM workflow, and to conduct other actions. - -- - -- The **Event Triggers** are methods that are defined by the FSM, which the mission designer can use to implement the workflow. - -- Most of the time, these Event Triggers are used within the Transition Handler methods, so that a workflow is created running through the state machine. - -- - -- As explained above, a FSM supports **Linear State Transitions** and **Hierarchical State Transitions**, and both can be mixed to make a comprehensive FSM implementation. - -- The below documentation has a seperate chapter explaining both transition modes, taking into account the **Transition Rules**, **Transition Handlers** and **Event Triggers**. - -- - -- ## 1.1) FSM Linear Transitions - -- - -- Linear Transitions are Transition Rules allowing an FSM to transition from one or multiple possible **From** state(s) towards a **To** state upon a Triggered **Event**. - -- The Lineair transition rule evaluation will always be done from the **current state** of the FSM. - -- If no valid Transition Rule can be found in the FSM, the FSM will log an error and stop. - -- - -- ### 1.1.1) FSM Transition Rules - -- - -- The FSM has transition rules that it follows and validates, as it walks the process. - -- These rules define when an FSM can transition from a specific state towards an other specific state upon a triggered event. - -- - -- The method @{#FSM.AddTransition}() specifies a new possible Transition Rule for the FSM. - -- - -- The initial state can be defined using the method @{#FSM.SetStartState}(). The default start state of an FSM is "None". - -- - -- Find below an example of a Linear Transition Rule definition for an FSM. - -- - -- local Fsm3Switch = FSM:New() -- #FsmDemo - -- FsmSwitch:SetStartState( "Off" ) - -- FsmSwitch:AddTransition( "Off", "SwitchOn", "On" ) - -- FsmSwitch:AddTransition( "Off", "SwitchMiddle", "Middle" ) - -- FsmSwitch:AddTransition( "On", "SwitchOff", "Off" ) - -- FsmSwitch:AddTransition( "Middle", "SwitchOff", "Off" ) - -- - -- The above code snippet models a 3-way switch Linear Transition: - -- - -- * It can be switched **On** by triggering event **SwitchOn**. - -- * It can be switched to the **Middle** position, by triggering event **SwitchMiddle**. - -- * It can be switched **Off** by triggering event **SwitchOff**. - -- * Note that once the Switch is **On** or **Middle**, it can only be switched **Off**. - -- - -- ### Some additional comments: - -- - -- Note that Linear Transition Rules **can be declared in a few variations**: - -- - -- * The From states can be **a table of strings**, indicating that the transition rule will be valid **if the current state** of the FSM will be **one of the given From states**. - -- * The From state can be a **"*"**, indicating that **the transition rule will always be valid**, regardless of the current state of the FSM. - -- - -- The below code snippet shows how the two last lines can be rewritten and consensed. - -- - -- FsmSwitch:AddTransition( { "On", "Middle" }, "SwitchOff", "Off" ) - -- - -- ### 1.1.2) Transition Handling - -- - -- ![Transition Handlers](..\Presentations\FSM\Dia4.JPG) - -- - -- An FSM transitions in **4 moments** when an Event is being triggered and processed. - -- The mission designer can define for each moment specific logic within methods implementations following a defined API syntax. - -- These methods define the flow of the FSM process; because in those methods the FSM Internal Events will be triggered. - -- - -- * To handle **State** transition moments, create methods starting with OnLeave or OnEnter concatenated with the State name. - -- * To handle **Event** transition moments, create methods starting with OnBefore or OnAfter concatenated with the Event name. - -- - -- **The OnLeave and OnBefore transition methods may return false, which will cancel the transition!** - -- - -- Transition Handler methods need to follow the above specified naming convention, but are also passed parameters from the FSM. - -- These parameters are on the correct order: From, Event, To: - -- - -- * From = A string containing the From state. - -- * Event = A string containing the Event name that was triggered. - -- * To = A string containing the To state. - -- - -- On top, each of these methods can have a variable amount of parameters passed. See the example in section [1.1.3](#1.1.3\)-event-triggers). - -- - -- ### 1.1.3) Event Triggers - -- - -- ![Event Triggers](..\Presentations\FSM\Dia5.JPG) - -- - -- The FSM creates for each Event two **Event Trigger methods**. - -- There are two modes how Events can be triggered, which is **synchronous** and **asynchronous**: - -- - -- * The method **FSM:Event()** triggers an Event that will be processed **synchronously** or **immediately**. - -- * The method **FSM:__Event( __seconds__ )** triggers an Event that will be processed **asynchronously** over time, waiting __x seconds__. - -- - -- The destinction between these 2 Event Trigger methods are important to understand. An asynchronous call will "log" the Event Trigger to be executed at a later time. - -- Processing will just continue. Synchronous Event Trigger methods are useful to change states of the FSM immediately, but may have a larger processing impact. - -- - -- The following example provides a little demonstration on the difference between synchronous and asynchronous Event Triggering. - -- - -- function FSM:OnAfterEvent( From, Event, To, Amount ) - -- self:T( { Amount = Amount } ) - -- end - -- - -- local Amount = 1 - -- FSM:__Event( 5, Amount ) - -- - -- Amount = Amount + 1 - -- FSM:Event( Text, Amount ) - -- - -- In this example, the **:OnAfterEvent**() Transition Handler implementation will get called when **Event** is being triggered. - -- Before we go into more detail, let's look at the last 4 lines of the example. - -- The last line triggers synchronously the **Event**, and passes Amount as a parameter. - -- The 3rd last line of the example triggers asynchronously **Event**. - -- Event will be processed after 5 seconds, and Amount is given as a parameter. - -- - -- The output of this little code fragment will be: - -- - -- * Amount = 2 - -- * Amount = 2 - -- - -- Because ... When Event was asynchronously processed after 5 seconds, Amount was set to 2. So be careful when processing and passing values and objects in asynchronous processing! - -- - -- ### 1.1.4) Linear Transition Example - -- - -- This example is fully implemented in the MOOSE test mission on GITHUB: [FSM-100 - Transition Explanation](https://github.com/FlightControl-Master/MOOSE/blob/master/Moose%20Test%20Missions/FSM%20-%20Finite%20State%20Machine/FSM-100%20-%20Transition%20Explanation/FSM-100%20-%20Transition%20Explanation.lua) - -- - -- It models a unit standing still near Batumi, and flaring every 5 seconds while switching between a Green flare and a Red flare. - -- The purpose of this example is not to show how exciting flaring is, but it demonstrates how a Linear Transition FSM can be build. - -- Have a look at the source code. The source code is also further explained below in this section. - -- - -- The example creates a new FsmDemo object from class FSM. - -- It will set the start state of FsmDemo to state **Green**. - -- Two Linear Transition Rules are created, where upon the event **Switch**, - -- the FsmDemo will transition from state **Green** to **Red** and from **Red** back to **Green**. - -- - -- ![Transition Example](..\Presentations\FSM\Dia6.JPG) - -- - -- local FsmDemo = FSM:New() -- #FsmDemo - -- FsmDemo:SetStartState( "Green" ) - -- FsmDemo:AddTransition( "Green", "Switch", "Red" ) - -- FsmDemo:AddTransition( "Red", "Switch", "Green" ) - -- - -- In the above example, the FsmDemo could flare every 5 seconds a Green or a Red flare into the air. - -- The next code implements this through the event handling method **OnAfterSwitch**. - -- - -- ![Transition Flow](..\Presentations\FSM\Dia7.JPG) - -- - -- function FsmDemo:OnAfterSwitch( From, Event, To, FsmUnit ) - -- self:T( { From, Event, To, FsmUnit } ) - -- - -- if From == "Green" then - -- FsmUnit:Flare(FLARECOLOR.Green) - -- else - -- if From == "Red" then - -- FsmUnit:Flare(FLARECOLOR.Red) - -- end - -- end - -- self:__Switch( 5, FsmUnit ) -- Trigger the next Switch event to happen in 5 seconds. - -- end - -- - -- FsmDemo:__Switch( 5, FsmUnit ) -- Trigger the first Switch event to happen in 5 seconds. - -- - -- The OnAfterSwitch implements a loop. The last line of the code fragment triggers the Switch Event within 5 seconds. - -- Upon the event execution (after 5 seconds), the OnAfterSwitch method is called of FsmDemo (cfr. the double point notation!!! ":"). - -- The OnAfterSwitch method receives from the FSM the 3 transition parameter details ( From, Event, To ), - -- and one additional parameter that was given when the event was triggered, which is in this case the Unit that is used within OnSwitchAfter. - -- - -- function FsmDemo:OnAfterSwitch( From, Event, To, FsmUnit ) - -- - -- For debugging reasons the received parameters are traced within the DCS.log. - -- - -- self:T( { From, Event, To, FsmUnit } ) - -- - -- The method will check if the From state received is either "Green" or "Red" and will flare the respective color from the FsmUnit. - -- - -- if From == "Green" then - -- FsmUnit:Flare(FLARECOLOR.Green) - -- else - -- if From == "Red" then - -- FsmUnit:Flare(FLARECOLOR.Red) - -- end - -- end - -- - -- It is important that the Switch event is again triggered, otherwise, the FsmDemo would stop working after having the first Event being handled. - -- - -- FsmDemo:__Switch( 5, FsmUnit ) -- Trigger the next Switch event to happen in 5 seconds. - -- - -- The below code fragment extends the FsmDemo, demonstrating multiple **From states declared as a table**, adding a **Linear Transition Rule**. - -- The new event **Stop** will cancel the Switching process. - -- The transition for event Stop can be executed if the current state of the FSM is either "Red" or "Green". - -- - -- local FsmDemo = FSM:New() -- #FsmDemo - -- FsmDemo:SetStartState( "Green" ) - -- FsmDemo:AddTransition( "Green", "Switch", "Red" ) - -- FsmDemo:AddTransition( "Red", "Switch", "Green" ) - -- FsmDemo:AddTransition( { "Red", "Green" }, "Stop", "Stopped" ) - -- - -- The transition for event Stop can also be simplified, as any current state of the FSM is valid. - -- - -- FsmDemo:AddTransition( "*", "Stop", "Stopped" ) - -- - -- So... When FsmDemo:Stop() is being triggered, the state of FsmDemo will transition from Red or Green to Stopped. - -- And there is no transition handling method defined for that transition, thus, no new event is being triggered causing the FsmDemo process flow to halt. - -- - -- ## 1.5) FSM Hierarchical Transitions - -- - -- Hierarchical Transitions allow to re-use readily available and implemented FSMs. - -- This becomes in very useful for mission building, where mission designers build complex processes and workflows, - -- combining smaller FSMs to one single FSM. - -- - -- The FSM can embed **Sub-FSMs** that will execute and return **multiple possible Return (End) States**. - -- Depending upon **which state is returned**, the main FSM can continue the flow **triggering specific events**. - -- - -- The method @{#FSM.AddProcess}() adds a new Sub-FSM to the FSM. - -- - -- === - -- - -- @field #FSM FSM - -- - FSM = { - ClassName = "FSM", - } - - --- Creates a new FSM object. - -- @param #FSM self - -- @return #FSM - function FSM:New( FsmT ) - - -- Inherits from BASE - self = BASE:Inherit( self, BASE:New() ) - - self.options = options or {} - self.options.subs = self.options.subs or {} - self.current = self.options.initial or 'none' - self.Events = {} - self.subs = {} - self.endstates = {} - - self.Scores = {} - - self._StartState = "none" - self._Transitions = {} - self._Processes = {} - self._EndStates = {} - self._Scores = {} - self._EventSchedules = {} - - self.CallScheduler = SCHEDULER:New( self ) - - - return self - end - - - --- Sets the start state of the FSM. - -- @param #FSM self - -- @param #string State A string defining the start state. - function FSM:SetStartState( State ) - - self._StartState = State - self.current = State - end - - - --- Returns the start state of the FSM. - -- @param #FSM self - -- @return #string A string containing the start state. - function FSM:GetStartState() - - return self._StartState or {} - end - - --- Add a new transition rule to the FSM. - -- A transition rule defines when and if the FSM can transition from a state towards another state upon a triggered event. - -- @param #FSM self - -- @param #table From Can contain a string indicating the From state or a table of strings containing multiple From states. - -- @param #string Event The Event name. - -- @param #string To The To state. - function FSM:AddTransition( From, Event, To ) - - local Transition = {} - Transition.From = From - Transition.Event = Event - Transition.To = To - - self:T( Transition ) - - self._Transitions[Transition] = Transition - self:_eventmap( self.Events, Transition ) - end - - - --- Returns a table of the transition rules defined within the FSM. - -- @return #table - function FSM:GetTransitions() - - return self._Transitions or {} - end - - --- Set the default @{Process} template with key ProcessName providing the ProcessClass and the process object when it is assigned to a @{Controllable} by the task. - -- @param #FSM self - -- @param #table From Can contain a string indicating the From state or a table of strings containing multiple From states. - -- @param #string Event The Event name. - -- @param Core.Fsm#FSM_PROCESS Process An sub-process FSM. - -- @param #table ReturnEvents A table indicating for which returned events of the SubFSM which Event must be triggered in the FSM. - -- @return Core.Fsm#FSM_PROCESS The SubFSM. - function FSM:AddProcess( From, Event, Process, ReturnEvents ) - self:T( { From, Event, Process, ReturnEvents } ) - - local Sub = {} - Sub.From = From - Sub.Event = Event - Sub.fsm = Process - Sub.StartEvent = "Start" - Sub.ReturnEvents = ReturnEvents - - self._Processes[Sub] = Sub - - self:_submap( self.subs, Sub, nil ) - - self:AddTransition( From, Event, From ) - - return Process - end - - - --- Returns a table of the SubFSM rules defined within the FSM. - -- @return #table - function FSM:GetProcesses() - - return self._Processes or {} - end - - function FSM:GetProcess( From, Event ) - - for ProcessID, Process in pairs( self:GetProcesses() ) do - if Process.From == From and Process.Event == Event then - return Process.fsm - end - end - - error( "Sub-Process from state " .. From .. " with event " .. Event .. " not found!" ) - end - - --- Adds an End state. - function FSM:AddEndState( State ) - - self._EndStates[State] = State - self.endstates[State] = State - end - - --- Returns the End states. - function FSM:GetEndStates() - - return self._EndStates or {} - end - - - --- Adds a score for the FSM to be achieved. - -- @param #FSM self - -- @param #string State is the state of the process when the score needs to be given. (See the relevant state descriptions of the process). - -- @param #string ScoreText is a text describing the score that is given according the status. - -- @param #number Score is a number providing the score of the status. - -- @return #FSM self - function FSM:AddScore( State, ScoreText, Score ) - self:F( { State, ScoreText, Score } ) - - self._Scores[State] = self._Scores[State] or {} - self._Scores[State].ScoreText = ScoreText - self._Scores[State].Score = Score - - return self - end - - --- Adds a score for the FSM_PROCESS to be achieved. - -- @param #FSM self - -- @param #string From is the From State of the main process. - -- @param #string Event is the Event of the main process. - -- @param #string State is the state of the process when the score needs to be given. (See the relevant state descriptions of the process). - -- @param #string ScoreText is a text describing the score that is given according the status. - -- @param #number Score is a number providing the score of the status. - -- @return #FSM self - function FSM:AddScoreProcess( From, Event, State, ScoreText, Score ) - self:F( { From, Event, State, ScoreText, Score } ) - - local Process = self:GetProcess( From, Event ) - - Process._Scores[State] = Process._Scores[State] or {} - Process._Scores[State].ScoreText = ScoreText - Process._Scores[State].Score = Score - - self:T( Process._Scores ) - - return Process - end - - --- Returns a table with the scores defined. - function FSM:GetScores() - - return self._Scores or {} - end - - --- Returns a table with the Subs defined. - function FSM:GetSubs() - - return self.options.subs - end - - - function FSM:LoadCallBacks( CallBackTable ) - - for name, callback in pairs( CallBackTable or {} ) do - self[name] = callback - end - - end - - function FSM:_eventmap( Events, EventStructure ) - - local Event = EventStructure.Event - local __Event = "__" .. EventStructure.Event - self[Event] = self[Event] or self:_create_transition(Event) - self[__Event] = self[__Event] or self:_delayed_transition(Event) - self:T( "Added methods: " .. Event .. ", " .. __Event ) - Events[Event] = self.Events[Event] or { map = {} } - self:_add_to_map( Events[Event].map, EventStructure ) - - end - - function FSM:_submap( subs, sub, name ) - self:F( { sub = sub, name = name } ) - subs[sub.From] = subs[sub.From] or {} - subs[sub.From][sub.Event] = subs[sub.From][sub.Event] or {} - - -- Make the reference table weak. - -- setmetatable( subs[sub.From][sub.Event], { __mode = "k" } ) - - subs[sub.From][sub.Event][sub] = {} - subs[sub.From][sub.Event][sub].fsm = sub.fsm - subs[sub.From][sub.Event][sub].StartEvent = sub.StartEvent - subs[sub.From][sub.Event][sub].ReturnEvents = sub.ReturnEvents or {} -- these events need to be given to find the correct continue event ... if none given, the processing will stop. - subs[sub.From][sub.Event][sub].name = name - subs[sub.From][sub.Event][sub].fsmparent = self - end - - - function FSM:_call_handler( handler, params, EventName ) - - local ErrorHandler = function( errmsg ) - - env.info( "Error in SCHEDULER function:" .. errmsg ) - if debug ~= nil then - env.info( debug.traceback() ) - end - - return errmsg - end - if self[handler] then - self:T( "Calling " .. handler ) - self._EventSchedules[EventName] = nil - local Result, Value = xpcall( function() return self[handler]( self, unpack( params ) ) end, ErrorHandler ) - return Value - end - end - - function FSM._handler( self, EventName, ... ) - - local Can, to = self:can( EventName ) - - if to == "*" then - to = self.current - end - - if Can then - local from = self.current - local params = { from, EventName, to, ... } - - if self.Controllable then - self:T( "FSM Transition for " .. self.Controllable.ControllableName .. " :" .. self.current .. " --> " .. EventName .. " --> " .. to ) - else - self:T( "FSM Transition:" .. self.current .. " --> " .. EventName .. " --> " .. to ) - end - - if ( self:_call_handler("onbefore" .. EventName, params, EventName ) == false ) - or ( self:_call_handler("OnBefore" .. EventName, params, EventName ) == false ) - or ( self:_call_handler("onleave" .. from, params, EventName ) == false ) - or ( self:_call_handler("OnLeave" .. from, params, EventName ) == false ) then - self:T( "Cancel Transition" ) - return false - end - - self.current = to - - local execute = true - - local subtable = self:_gosub( from, EventName ) - for _, sub in pairs( subtable ) do - --if sub.nextevent then - -- self:F2( "nextevent = " .. sub.nextevent ) - -- self[sub.nextevent]( self ) - --end - self:T( "calling sub start event: " .. sub.StartEvent ) - sub.fsm.fsmparent = self - sub.fsm.ReturnEvents = sub.ReturnEvents - sub.fsm[sub.StartEvent]( sub.fsm ) - execute = false - end - - local fsmparent, Event = self:_isendstate( to ) - if fsmparent and Event then - self:F2( { "end state: ", fsmparent, Event } ) - self:_call_handler("onenter" .. to, params, EventName ) - self:_call_handler("OnEnter" .. to, params, EventName ) - self:_call_handler("onafter" .. EventName, params, EventName ) - self:_call_handler("OnAfter" .. EventName, params, EventName ) - self:_call_handler("onstatechange", params, EventName ) - fsmparent[Event]( fsmparent ) - execute = false - end - - if execute then - -- only execute the call if the From state is not equal to the To state! Otherwise this function should never execute! - --if from ~= to then - self:_call_handler("onenter" .. to, params, EventName ) - self:_call_handler("OnEnter" .. to, params, EventName ) - --end - - self:_call_handler("onafter" .. EventName, params, EventName ) - self:_call_handler("OnAfter" .. EventName, params, EventName ) - - self:_call_handler("onstatechange", params, EventName ) - end - else - self:T( "Cannot execute transition." ) - self:T( { From = self.current, Event = EventName, To = to, Can = Can } ) - end - - return nil - end - - function FSM:_delayed_transition( EventName ) - return function( self, DelaySeconds, ... ) - self:T2( "Delayed Event: " .. EventName ) - local CallID = 0 - if DelaySeconds ~= nil then - if DelaySeconds < 0 then -- Only call the event ONCE! - DelaySeconds = math.abs( DelaySeconds ) - if not self._EventSchedules[EventName] then - CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) - self._EventSchedules[EventName] = CallID - else - -- reschedule - end - else - CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) - end - else - error( "FSM: An asynchronous event trigger requires a DelaySeconds parameter!!! This can be positive or negative! Sorry, but will not process this." ) - end - self:T2( { CallID = CallID } ) - end - end - - function FSM:_create_transition( EventName ) - return function( self, ... ) return self._handler( self, EventName , ... ) end - end - - function FSM:_gosub( ParentFrom, ParentEvent ) - local fsmtable = {} - if self.subs[ParentFrom] and self.subs[ParentFrom][ParentEvent] then - self:T( { ParentFrom, ParentEvent, self.subs[ParentFrom], self.subs[ParentFrom][ParentEvent] } ) - return self.subs[ParentFrom][ParentEvent] - else - return {} - end - end - - function FSM:_isendstate( Current ) - local FSMParent = self.fsmparent - if FSMParent and self.endstates[Current] then - self:T( { state = Current, endstates = self.endstates, endstate = self.endstates[Current] } ) - FSMParent.current = Current - local ParentFrom = FSMParent.current - self:T( ParentFrom ) - self:T( self.ReturnEvents ) - local Event = self.ReturnEvents[Current] - self:T( { ParentFrom, Event, self.ReturnEvents } ) - if Event then - return FSMParent, Event - else - self:T( { "Could not find parent event name for state ", ParentFrom } ) - end - end - - return nil - end - - function FSM:_add_to_map( Map, Event ) - self:F3( { Map, Event } ) - if type(Event.From) == 'string' then - Map[Event.From] = Event.To - else - for _, From in ipairs(Event.From) do - Map[From] = Event.To - end - end - self:T3( { Map, Event } ) - end - - function FSM:GetState() - return self.current - end - - - function FSM:Is( State ) - return self.current == State - end - - function FSM:is(state) - return self.current == state - end - - function FSM:can(e) - local Event = self.Events[e] - self:F3( { self.current, Event } ) - local To = Event and Event.map[self.current] or Event.map['*'] - return To ~= nil, To - end - - function FSM:cannot(e) - return not self:can(e) - end - -end - -do -- FSM_CONTROLLABLE - - --- @type FSM_CONTROLLABLE - -- @field Wrapper.Controllable#CONTROLLABLE Controllable - -- @extends Core.Fsm#FSM - - --- # FSM_CONTROLLABLE, extends @{#FSM} - -- - -- FSM_CONTROLLABLE class models Finite State Machines for @{Controllable}s, which are @{Group}s, @{Unit}s, @{Client}s. - -- - -- === - -- - -- @field #FSM_CONTROLLABLE FSM_CONTROLLABLE - -- - FSM_CONTROLLABLE = { - ClassName = "FSM_CONTROLLABLE", - } - - --- Creates a new FSM_CONTROLLABLE object. - -- @param #FSM_CONTROLLABLE self - -- @param #table FSMT Finite State Machine Table - -- @param Wrapper.Controllable#CONTROLLABLE Controllable (optional) The CONTROLLABLE object that the FSM_CONTROLLABLE governs. - -- @return #FSM_CONTROLLABLE - function FSM_CONTROLLABLE:New( FSMT, Controllable ) - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM:New( FSMT ) ) -- Core.Fsm#FSM_CONTROLLABLE - - if Controllable then - self:SetControllable( Controllable ) - end - - self:AddTransition( "*", "Stop", "Stopped" ) - - --- OnBefore Transition Handler for Event Stop. - -- @function [parent=#FSM_CONTROLLABLE] OnBeforeStop - -- @param #FSM_CONTROLLABLE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Stop. - -- @function [parent=#FSM_CONTROLLABLE] OnAfterStop - -- @param #FSM_CONTROLLABLE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Stop. - -- @function [parent=#FSM_CONTROLLABLE] Stop - -- @param #FSM_CONTROLLABLE self - - --- Asynchronous Event Trigger for Event Stop. - -- @function [parent=#FSM_CONTROLLABLE] __Stop - -- @param #FSM_CONTROLLABLE self - -- @param #number Delay The delay in seconds. - - --- OnLeave Transition Handler for State Stopped. - -- @function [parent=#FSM_CONTROLLABLE] OnLeaveStopped - -- @param #FSM_CONTROLLABLE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Stopped. - -- @function [parent=#FSM_CONTROLLABLE] OnEnterStopped - -- @param #FSM_CONTROLLABLE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - return self - end - - --- OnAfter Transition Handler for Event Stop. - -- @function [parent=#FSM_CONTROLLABLE] OnAfterStop - -- @param #FSM_CONTROLLABLE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - function FSM_CONTROLLABLE:OnAfterStop(Controllable,From,Event,To) - - -- Clear all pending schedules - self.CallScheduler:Clear() - end - - --- Sets the CONTROLLABLE object that the FSM_CONTROLLABLE governs. - -- @param #FSM_CONTROLLABLE self - -- @param Wrapper.Controllable#CONTROLLABLE FSMControllable - -- @return #FSM_CONTROLLABLE - function FSM_CONTROLLABLE:SetControllable( FSMControllable ) - self:F( FSMControllable ) - self.Controllable = FSMControllable - end - - --- Gets the CONTROLLABLE object that the FSM_CONTROLLABLE governs. - -- @param #FSM_CONTROLLABLE self - -- @return Wrapper.Controllable#CONTROLLABLE - function FSM_CONTROLLABLE:GetControllable() - return self.Controllable - end - - function FSM_CONTROLLABLE:_call_handler( handler, params, EventName ) - - local ErrorHandler = function( errmsg ) - - env.info( "Error in SCHEDULER function:" .. errmsg ) - if debug ~= nil then - env.info( debug.traceback() ) - end - - return errmsg - end - - if self[handler] then - self:F3( "Calling " .. handler ) - self._EventSchedules[EventName] = nil - local Result, Value = xpcall( function() return self[handler]( self, self.Controllable, unpack( params ) ) end, ErrorHandler ) - return Value - --return self[handler]( self, self.Controllable, unpack( params ) ) - end - end - -end - -do -- FSM_PROCESS - - --- @type FSM_PROCESS - -- @field Tasking.Task#TASK Task - -- @extends Core.Fsm#FSM_CONTROLLABLE - - - --- # FSM_PROCESS, extends @{#FSM} - -- - -- FSM_PROCESS class models Finite State Machines for @{Task} actions, which control @{Client}s. - -- - -- === - -- - -- @field #FSM_PROCESS FSM_PROCESS - -- - FSM_PROCESS = { - ClassName = "FSM_PROCESS", - } - - --- Creates a new FSM_PROCESS object. - -- @param #FSM_PROCESS self - -- @return #FSM_PROCESS - function FSM_PROCESS:New( Controllable, Task ) - - local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- Core.Fsm#FSM_PROCESS - - self:F( Controllable, Task ) - - self:Assign( Controllable, Task ) - - return self - end - - function FSM_PROCESS:Init( FsmProcess ) - self:T( "No Initialisation" ) - end - - function FSM_PROCESS:_call_handler( handler, params, EventName ) - - local ErrorHandler = function( errmsg ) - - env.info( "Error in FSM_PROCESS call handler:" .. errmsg ) - if debug ~= nil then - env.info( debug.traceback() ) - end - - return errmsg - end - - if self[handler] then - self:F3( "Calling " .. handler ) - self._EventSchedules[EventName] = nil - local Result, Value = xpcall( function() return self[handler]( self, self.Controllable, self.Task, unpack( params ) ) end, ErrorHandler ) - return Value - --return self[handler]( self, self.Controllable, unpack( params ) ) - end - end - - --- Creates a new FSM_PROCESS object based on this FSM_PROCESS. - -- @param #FSM_PROCESS self - -- @return #FSM_PROCESS - function FSM_PROCESS:Copy( Controllable, Task ) - self:T( { self:GetClassNameAndID() } ) - - - local NewFsm = self:New( Controllable, Task ) -- Core.Fsm#FSM_PROCESS - - NewFsm:Assign( Controllable, Task ) - - -- Polymorphic call to initialize the new FSM_PROCESS based on self FSM_PROCESS - NewFsm:Init( self ) - - -- Set Start State - NewFsm:SetStartState( self:GetStartState() ) - - -- Copy Transitions - for TransitionID, Transition in pairs( self:GetTransitions() ) do - NewFsm:AddTransition( Transition.From, Transition.Event, Transition.To ) - end - - -- Copy Processes - for ProcessID, Process in pairs( self:GetProcesses() ) do - self:E( { Process} ) - local FsmProcess = NewFsm:AddProcess( Process.From, Process.Event, Process.fsm:Copy( Controllable, Task ), Process.ReturnEvents ) - end - - -- Copy End States - for EndStateID, EndState in pairs( self:GetEndStates() ) do - self:T( EndState ) - NewFsm:AddEndState( EndState ) - end - - -- Copy the score tables - for ScoreID, Score in pairs( self:GetScores() ) do - self:T( Score ) - NewFsm:AddScore( ScoreID, Score.ScoreText, Score.Score ) - end - - return NewFsm - end - - --- Removes an FSM_PROCESS object. - -- @param #FSM_PROCESS self - -- @return #FSM_PROCESS - function FSM_PROCESS:Remove() - self:T( { self:GetClassNameAndID() } ) - - -- Copy Processes - for ProcessID, Process in pairs( self:GetProcesses() ) do - self:E( { Process} ) - Process.fsm:Remove() - Process.fsm = nil - end - - return self - end - - --- Sets the task of the process. - -- @param #FSM_PROCESS self - -- @param Tasking.Task#TASK Task - -- @return #FSM_PROCESS - function FSM_PROCESS:SetTask( Task ) - - self.Task = Task - - return self - end - - --- Gets the task of the process. - -- @param #FSM_PROCESS self - -- @return Tasking.Task#TASK - function FSM_PROCESS:GetTask() - - return self.Task - end - - --- Gets the mission of the process. - -- @param #FSM_PROCESS self - -- @return Tasking.Mission#MISSION - function FSM_PROCESS:GetMission() - - return self.Task.Mission - end - - --- Gets the mission of the process. - -- @param #FSM_PROCESS self - -- @return Tasking.CommandCenter#COMMANDCENTER - function FSM_PROCESS:GetCommandCenter() - - return self:GetTask():GetMission():GetCommandCenter() - end - --- TODO: Need to check and fix that an FSM_PROCESS is only for a UNIT. Not for a GROUP. - - --- Send a message of the @{Task} to the Group of the Unit. --- @param #FSM_PROCESS self -function FSM_PROCESS:Message( Message ) - self:F( { Message = Message } ) - - local CC = self:GetCommandCenter() - local TaskGroup = self.Controllable:GetGroup() - - local PlayerName = self.Controllable:GetPlayerName() -- Only for a unit - PlayerName = PlayerName and " (" .. PlayerName .. ")" or "" -- If PlayerName is nil, then keep it nil, otherwise add brackets. - local Callsign = self.Controllable:GetCallsign() - local Prefix = Callsign and " @ " .. Callsign .. PlayerName or "" - - Message = Prefix .. ": " .. Message - CC:MessageToGroup( Message, TaskGroup ) -end - - - - - --- Assign the process to a @{Unit} and activate the process. - -- @param #FSM_PROCESS self - -- @param Task.Tasking#TASK Task - -- @param Wrapper.Unit#UNIT ProcessUnit - -- @return #FSM_PROCESS self - function FSM_PROCESS:Assign( ProcessUnit, Task ) - self:T( { Task, ProcessUnit } ) - - self:SetControllable( ProcessUnit ) - self:SetTask( Task ) - - --self.ProcessGroup = ProcessUnit:GetGroup() - - return self - end - - function FSM_PROCESS:onenterAssigned( ProcessUnit ) - self:T( "Assign" ) - - self.Task:Assign() - end - - function FSM_PROCESS:onenterFailed( ProcessUnit ) - self:T( "Failed" ) - - self.Task:Fail() - end - - function FSM_PROCESS:onenterSuccess( ProcessUnit ) - self:T( "Success" ) - - self.Task:Success() - end - - --- StateMachine callback function for a FSM_PROCESS - -- @param #FSM_PROCESS self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function FSM_PROCESS:onstatechange( ProcessUnit, Task, From, Event, To, Dummy ) - self:T( { ProcessUnit, From, Event, To, Dummy, self:IsTrace() } ) - - if self:IsTrace() then - MESSAGE:New( "@ Process " .. self:GetClassNameAndID() .. " : " .. Event .. " changed to state " .. To, 2 ):ToAll() - end - - self:T( { Scores = self._Scores, To = To } ) - -- TODO: This needs to be reworked with a callback functions allocated within Task, and set within the mission script from the Task Objects... - if self._Scores[To] then - - local Task = self.Task - local Scoring = Task:GetScoring() - if Scoring then - Scoring:_AddMissionTaskScore( Task.Mission, ProcessUnit, self._Scores[To].ScoreText, self._Scores[To].Score ) - end - end - end - -end - -do -- FSM_TASK - - --- FSM_TASK class - -- @type FSM_TASK - -- @field Tasking.Task#TASK Task - -- @extends #FSM - - --- # FSM_TASK, extends @{#FSM} - -- - -- FSM_TASK class models Finite State Machines for @{Task}s. - -- - -- === - -- - -- @field #FSM_TASK FSM_TASK - -- - FSM_TASK = { - ClassName = "FSM_TASK", - } - - --- Creates a new FSM_TASK object. - -- @param #FSM_TASK self - -- @param #table FSMT - -- @param Tasking.Task#TASK Task - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return #FSM_TASK - function FSM_TASK:New( FSMT ) - - local self = BASE:Inherit( self, FSM_CONTROLLABLE:New( FSMT ) ) -- Core.Fsm#FSM_TASK - - self["onstatechange"] = self.OnStateChange - - return self - end - - function FSM_TASK:_call_handler( handler, params, EventName ) - if self[handler] then - self:T( "Calling " .. handler ) - self._EventSchedules[EventName] = nil - return self[handler]( self, unpack( params ) ) - end - end - -end -- FSM_TASK - -do -- FSM_SET - - --- FSM_SET class - -- @type FSM_SET - -- @field Core.Set#SET_BASE Set - -- @extends Core.Fsm#FSM - - - --- # FSM_SET, extends @{#FSM} - -- - -- FSM_SET class models Finite State Machines for @{Set}s. Note that these FSMs control multiple objects!!! So State concerns here - -- for multiple objects or the position of the state machine in the process. - -- - -- === - -- - -- @field #FSM_SET FSM_SET - -- - FSM_SET = { - ClassName = "FSM_SET", - } - - --- Creates a new FSM_SET object. - -- @param #FSM_SET self - -- @param #table FSMT Finite State Machine Table - -- @param Set_SET_BASE FSMSet (optional) The Set object that the FSM_SET governs. - -- @return #FSM_SET - function FSM_SET:New( FSMSet ) - - -- Inherits from BASE - self = BASE:Inherit( self, FSM:New() ) -- Core.Fsm#FSM_SET - - if FSMSet then - self:Set( FSMSet ) - end - - return self - end - - --- Sets the SET_BASE object that the FSM_SET governs. - -- @param #FSM_SET self - -- @param Core.Set#SET_BASE FSMSet - -- @return #FSM_SET - function FSM_SET:Set( FSMSet ) - self:F( FSMSet ) - self.Set = FSMSet - end - - --- Gets the SET_BASE object that the FSM_SET governs. - -- @param #FSM_SET self - -- @return Core.Set#SET_BASE - function FSM_SET:Get() - return self.Controllable - end - - function FSM_SET:_call_handler( handler, params, EventName ) - if self[handler] then - self:T( "Calling " .. handler ) - self._EventSchedules[EventName] = nil - return self[handler]( self, self.Set, unpack( params ) ) - end - end - -end -- FSM_SET - ---- **Core** - The RADIO class is responsible for **transmitting radio communications**. --- --- --- bitmap --- --- === --- --- What are radio communications in DCS ? --- --- * Radio transmissions consist of **sound files** that are broadcasted on a specific **frequency** (e.g. 115MHz) and **modulation** (e.g. AM), --- * They can be **subtitled** for a specific **duration**, the **power** in Watts of the transmiter's antenna can be set, and the transmission can be **looped**. --- --- How to supply DCS my own Sound Files ? --- --- * Your sound files need to be encoded in **.ogg** or .wav, --- * Your sound files should be **as tiny as possible**. It is suggested you encode in .ogg with low bitrate and sampling settings, --- * They need to be added in .\l10n\DEFAULT\ in you .miz file (wich can be decompressed like a .zip file), --- * For simplicty sake, you can **let DCS' Mission Editor add the file** itself, by creating a new Trigger with the action "Sound to Country", and choosing your sound file and a country you don't use in your mission. --- --- Due to weird DCS quirks, **radio communications behave differently** if sent by a @{Unit#UNIT} or a @{Group#GROUP} or by any other @{Positionable#POSITIONABLE} --- --- * If the transmitter is a @{Unit#UNIT} or a @{Group#GROUP}, DCS will set the power of the transmission automatically, --- * If the transmitter is any other @{Positionable#POSITIONABLE}, the transmisison can't be subtitled or looped. --- --- Note that obviously, the **frequency** and the **modulation** of the transmission are important only if the players are piloting an **Advanced System Modelling** enabled aircraft, --- like the A10C or the Mirage 2000C. They will **hear the transmission** if they are tuned on the **right frequency and modulation** (and if they are close enough - more on that below). --- If a FC3 airacraft is used, it will **hear every communication, whatever the frequency and the modulation** is set to. --- --- === --- --- ### Authors: Hugues "Grey_Echo" Bousquet --- --- @module Radio - ---- # 1) RADIO class, extends @{Base#BASE} --- --- ## 1.1) RADIO usage --- --- There are 3 steps to a successful radio transmission. --- --- * First, you need to **"add" a @{#RADIO} object** to your @{Positionable#POSITIONABLE}. This is done using the @{Positionable#POSITIONABLE.GetRadio}() function, --- * Then, you will **set the relevant parameters** to the transmission (see below), --- * When done, you can actually **broadcast the transmission** (i.e. play the sound) with the @{Positionable#POSITIONABLE.Broadcast}() function. --- --- Methods to set relevant parameters for both a @{Unit#UNIT} or a @{Group#GROUP} or any other @{Positionable#POSITIONABLE} --- --- * @{#RADIO.SetFileName}() : Sets the file name of your sound file (e.g. "Noise.ogg"), --- * @{#RADIO.SetFrequency}() : Sets the frequency of your transmission, --- * @{#RADIO.SetModulation}() : Sets the modulation of your transmission. --- --- Additional Methods to set relevant parameters if the transmiter is a @{Unit#UNIT} or a @{Group#GROUP} --- --- * @{#RADIO.SetLoop}() : Choose if you want the transmission to be looped, --- * @{#RADIO.SetSubtitle}() : Set both the subtitle and its duration, --- * @{#RADIO.NewUnitTransmission}() : Shortcut to set all the relevant parameters in one method call --- --- Additional Methods to set relevant parameters if the transmiter is any other @{Wrapper.Positionable#POSITIONABLE} --- --- * @{#RADIO.SetPower}() : Sets the power of the antenna in Watts --- * @{#RADIO.NewGenericTransmission}() : Shortcut to set all the relevant parameters in one method call --- --- What is this power thing ? --- --- * If your transmission is sent by a @{Positionable#POSITIONABLE} other than a @{Unit#UNIT} or a @{Group#GROUP}, you can set the power of the antenna, --- * Otherwise, DCS sets it automatically, depending on what's available on your Unit, --- * If the player gets **too far** from the transmiter, or if the antenna is **too weak**, the transmission will **fade** and **become noisyer**, --- * This an automated DCS calculation you have no say on, --- * For reference, a standard VOR station has a 100W antenna, a standard AA TACAN has a 120W antenna, and civilian ATC's antenna usually range between 300 and 500W, --- * Note that if the transmission has a subtitle, it will be readable, regardless of the quality of the transmission. --- --- @type RADIO --- @field Wrapper.Positionable#POSITIONABLE Positionable The transmiter --- @field #string FileName Name of the sound file --- @field #number Frequency Frequency of the transmission in Hz --- @field #number Modulation Modulation of the transmission (either radio.modulation.AM or radio.modulation.FM) --- @field #string Subtitle Subtitle of the transmission --- @field #number SubtitleDuration Duration of the Subtitle in seconds --- @field #number Power Power of the antenna is Watts --- @field #boolean Loop --- @extends Core.Base#BASE -RADIO = { - ClassName = "RADIO", - FileName = "", - Frequency = 0, - Modulation = radio.modulation.AM, - Subtitle = "", - SubtitleDuration = 0, - Power = 100, - Loop = 0, -} - ---- Create a new RADIO Object. This doesn't broadcast a transmission, though, use @{#RADIO.Broadcast} to actually broadcast --- @param #RADIO self --- @param Wrapper.Positionable#POSITIONABLE Positionable The @{Positionable} that will receive radio capabilities. --- @return #RADIO Radio --- @return #nil If Positionable is invalid --- @usage --- -- If you want to create a RADIO, you probably should use @{Positionable#POSITIONABLE.GetRadio}() instead -function RADIO:New(Positionable) - local self = BASE:Inherit( self, BASE:New() ) -- Core.Radio#RADIO - - self:F(Positionable) - - if Positionable:GetPointVec2() then -- It's stupid, but the only way I found to make sure positionable is valid - self.Positionable = Positionable - return self - end - - self:E({"The passed positionable is invalid, no RADIO created", Positionable}) - return nil -end - ---- Check validity of the filename passed and sets RADIO.FileName --- @param #RADIO self --- @param #string FileName File name of the sound file (i.e. "Noise.ogg") --- @return #RADIO self -function RADIO:SetFileName(FileName) - self:F2(FileName) - - if type(FileName) == "string" then - if FileName:find(".ogg") or FileName:find(".wav") then - if not FileName:find("l10n/DEFAULT/") then - FileName = "l10n/DEFAULT/" .. FileName - end - self.FileName = FileName - return self - end - end - - self:E({"File name invalid. Maybe something wrong with the extension ?", self.FileName}) - return self -end - ---- Check validity of the frequency passed and sets RADIO.Frequency --- @param #RADIO self --- @param #number Frequency in MHz (Ranges allowed for radio transmissions in DCS : 30-88 / 108-152 / 225-400MHz) --- @return #RADIO self -function RADIO:SetFrequency(Frequency) - self:F2(Frequency) - if type(Frequency) == "number" then - -- If frequency is in range - if (Frequency >= 30 and Frequency < 88) or (Frequency >= 108 and Frequency < 152) or (Frequency >= 225 and Frequency < 400) then - self.Frequency = Frequency * 1000000 -- Conversion in Hz - -- If the RADIO is attached to a UNIT or a GROUP, we need to send the DCS Command "SetFrequency" to change the UNIT or GROUP frequency - if self.Positionable.ClassName == "UNIT" or self.Positionable.ClassName == "GROUP" then - self.Positionable:SetCommand({ - id = "SetFrequency", - params = { - frequency = self.Frequency, - modulation = self.Modulation, - } - }) - end - return self - end - end - self:E({"Frequency is outside of DCS Frequency ranges (30-80, 108-152, 225-400). Frequency unchanged.", self.Frequency}) - return self -end - ---- Check validity of the frequency passed and sets RADIO.Modulation --- @param #RADIO self --- @param #number Modulation either radio.modulation.AM or radio.modulation.FM --- @return #RADIO self -function RADIO:SetModulation(Modulation) - self:F2(Modulation) - if type(Modulation) == "number" then - if Modulation == radio.modulation.AM or Modulation == radio.modulation.FM then --TODO Maybe make this future proof if ED decides to add an other modulation ? - self.Modulation = Modulation - return self - end - end - self:E({"Modulation is invalid. Use DCS's enum radio.modulation. Modulation unchanged.", self.Modulation}) - return self -end - ---- Check validity of the power passed and sets RADIO.Power --- @param #RADIO self --- @param #number Power in W --- @return #RADIO self -function RADIO:SetPower(Power) - self:F2(Power) - if type(Power) == "number" then - self.Power = math.floor(math.abs(Power)) --TODO Find what is the maximum power allowed by DCS and limit power to that - return self - end - self:E({"Power is invalid. Power unchanged.", self.Power}) - return self -end - ---- Check validity of the loop passed and sets RADIO.Loop --- @param #RADIO self --- @param #boolean Loop --- @return #RADIO self --- @usage -function RADIO:SetLoop(Loop) - self:F2(Loop) - if type(Loop) == "boolean" then - self.Loop = Loop - return self - end - self:E({"Loop is invalid. Loop unchanged.", self.Loop}) - return self -end - ---- Check validity of the subtitle and the subtitleDuration passed and sets RADIO.subtitle and RADIO.subtitleDuration --- @param #RADIO self --- @param #string Subtitle --- @param #number SubtitleDuration in s --- @return #RADIO self --- @usage --- -- Both parameters are mandatory, since it wouldn't make much sense to change the Subtitle and not its duration -function RADIO:SetSubtitle(Subtitle, SubtitleDuration) - self:F2({Subtitle, SubtitleDuration}) - if type(Subtitle) == "string" then - self.Subtitle = Subtitle - else - self.Subtitle = "" - self:E({"Subtitle is invalid. Subtitle reset.", self.Subtitle}) - end - if type(SubtitleDuration) == "number" then - if math.floor(math.abs(SubtitleDuration)) == SubtitleDuration then - self.SubtitleDuration = SubtitleDuration - return self - end - end - self.SubtitleDuration = 0 - self:E({"SubtitleDuration is invalid. SubtitleDuration reset.", self.SubtitleDuration}) -end - ---- Create a new transmission, that is to say, populate the RADIO with relevant data --- @param #RADIO self --- @param #string FileName --- @param #number Frequency in MHz --- @param #number Modulation either radio.modulation.AM or radio.modulation.FM --- @param #number Power in W --- @return #RADIO self --- @usage --- -- In this function the data is especially relevant if the broadcaster is anything but a UNIT or a GROUP, --- but it will work with a UNIT or a GROUP anyway --- -- Only the RADIO and the Filename are mandatory -function RADIO:NewGenericTransmission(FileName, Frequency, Modulation, Power) - self:F({FileName, Frequency, Modulation, Power}) - - self:SetFileName(FileName) - if Frequency then self:SetFrequency(Frequency) end - if Modulation then self:SetModulation(Modulation) end - if Power then self:SetPower(Power) end - - return self -end - - ---- Create a new transmission, that is to say, populate the RADIO with relevant data --- @param #RADIO self --- @param #string FileName --- @param #string Subtitle --- @param #number SubtitleDuration in s --- @param #number Frequency in MHz --- @param #number Modulation either radio.modulation.AM or radio.modulation.FM --- @param #boolean Loop --- @return #RADIO self --- @usage --- -- In this function the data is especially relevant if the broadcaster is a UNIT or a GROUP, --- but it will work for any POSITIONABLE --- -- Only the RADIO and the Filename are mandatory -function RADIO:NewUnitTransmission(FileName, Subtitle, SubtitleDuration, Frequency, Modulation, Loop) - self:F({FileName, Subtitle, SubtitleDuration, Frequency, Modulation, Loop}) - - self:SetFileName(FileName) - if Subtitle then self:SetSubtitle(Subtitle) end - if SubtitleDuration then self:SetSubtitleDuration(SubtitleDuration) end - if Frequency then self:SetFrequency(Frequency) end - if Modulation then self:SetModulation(Modulation) end - if Loop then self:SetLoop(Loop) end - - return self -end - ---- Actually Broadcast the transmission --- @param #RADIO self --- @return #RADIO self --- @usage --- -- The Radio has to be populated with the new transmission before broadcasting. --- -- Please use RADIO setters or either @{Radio#RADIO.NewGenericTransmission} or @{Radio#RADIO.NewUnitTransmission} --- -- This class is in fact pretty smart, it determines the right DCS function to use depending on the type of POSITIONABLE --- -- If the POSITIONABLE is not a UNIT or a GROUP, we use the generic (but limited) trigger.action.radioTransmission() --- -- If the POSITIONABLE is a UNIT or a GROUP, we use the "TransmitMessage" Command --- -- If your POSITIONABLE is a UNIT or a GROUP, the Power is ignored. --- -- If your POSITIONABLE is not a UNIT or a GROUP, the Subtitle, SubtitleDuration and Loop are ignored -function RADIO:Broadcast() - self:F() - -- If the POSITIONABLE is actually a UNIT or a GROUP, use the more complicated DCS command system - if self.Positionable.ClassName == "UNIT" or self.Positionable.ClassName == "GROUP" then - self:T2("Broadcasting from a UNIT or a GROUP") - self.Positionable:SetCommand({ - id = "TransmitMessage", - params = { - file = self.FileName, - duration = self.SubtitleDuration, - subtitle = self.Subtitle, - loop = self.Loop, - } - }) - else - -- If the POSITIONABLE is anything else, we revert to the general singleton function - self:T2("Broadcasting from a POSITIONABLE") - trigger.action.radioTransmission(self.FileName, self.Positionable:GetPositionVec3(), self.Modulation, false, self.Frequency, self.Power) - end - return self -end - ---- Stops a transmission --- @param #RADIO self --- @return #RADIO self --- @usage --- -- Especially usefull to stop the broadcast of looped transmissions --- -- Only works with broadcasts from UNIT or GROUP -function RADIO:StopBroadcast() - self:F() - -- If the POSITIONABLE is a UNIT or a GROUP, stop the transmission with the DCS "StopTransmission" command - if self.Positionable.ClassName == "UNIT" or self.Positionable.ClassName == "GROUP" then - self.Positionable:SetCommand({ - id = "StopTransmission", - params = {} - }) - else - self:E("This broadcast can't be stopped. It's not looped either, so please wait for the end of the sound file playback") - end - return self -end--- This module contains the OBJECT class. --- --- 1) @{Object#OBJECT} class, extends @{Base#BASE} --- =========================================================== --- The @{Object#OBJECT} class is a wrapper class to handle the DCS Object objects: --- --- * Support all DCS Object APIs. --- * Enhance with Object specific APIs not in the DCS Object API set. --- * Manage the "state" of the DCS Object. --- --- 1.1) OBJECT constructor: --- ------------------------------ --- The OBJECT class provides the following functions to construct a OBJECT instance: --- --- * @{Object#OBJECT.New}(): Create a OBJECT instance. --- --- 1.2) OBJECT methods: --- -------------------------- --- The following methods can be used to identify an Object object: --- --- * @{Object#OBJECT.GetID}(): Returns the ID of the Object object. --- --- === --- --- @module Object - ---- The OBJECT class --- @type OBJECT --- @extends Core.Base#BASE --- @field #string ObjectName The name of the Object. -OBJECT = { - ClassName = "OBJECT", - ObjectName = "", -} - ---- A DCSObject --- @type DCSObject --- @field id_ The ID of the controllable in DCS - ---- Create a new OBJECT from a DCSObject --- @param #OBJECT self --- @param Dcs.DCSWrapper.Object#Object ObjectName The Object name --- @return #OBJECT self -function OBJECT:New( ObjectName, Test ) - local self = BASE:Inherit( self, BASE:New() ) - self:F2( ObjectName ) - self.ObjectName = ObjectName - - return self -end - - ---- Returns the unit's unique identifier. --- @param Wrapper.Object#OBJECT self --- @return Dcs.DCSWrapper.Object#Object.ID ObjectID --- @return #nil The DCS Object is not existing or alive. -function OBJECT:GetID() - self:F2( self.ObjectName ) - - local DCSObject = self:GetDCSObject() - - if DCSObject then - local ObjectID = DCSObject:getID() - return ObjectID - end - - return nil -end - ---- Destroys the OBJECT. --- @param #OBJECT self --- @return #nil The DCS Unit is not existing or alive. -function OBJECT:Destroy() - self:F2( self.ObjectName ) - - local DCSObject = self:GetDCSObject() - - if DCSObject then - - DCSObject:destroy() - end - - return nil -end - - - - ---- This module contains the IDENTIFIABLE class. --- --- 1) @{#IDENTIFIABLE} class, extends @{Object#OBJECT} --- =============================================================== --- The @{#IDENTIFIABLE} class is a wrapper class to handle the DCS Identifiable objects: --- --- * Support all DCS Identifiable APIs. --- * Enhance with Identifiable specific APIs not in the DCS Identifiable API set. --- * Manage the "state" of the DCS Identifiable. --- --- 1.1) IDENTIFIABLE constructor: --- ------------------------------ --- The IDENTIFIABLE class provides the following functions to construct a IDENTIFIABLE instance: --- --- * @{#IDENTIFIABLE.New}(): Create a IDENTIFIABLE instance. --- --- 1.2) IDENTIFIABLE methods: --- -------------------------- --- The following methods can be used to identify an identifiable object: --- --- * @{#IDENTIFIABLE.GetName}(): Returns the name of the Identifiable. --- * @{#IDENTIFIABLE.IsAlive}(): Returns if the Identifiable is alive. --- * @{#IDENTIFIABLE.GetTypeName}(): Returns the type name of the Identifiable. --- * @{#IDENTIFIABLE.GetCoalition}(): Returns the coalition of the Identifiable. --- * @{#IDENTIFIABLE.GetCountry}(): Returns the country of the Identifiable. --- * @{#IDENTIFIABLE.GetDesc}(): Returns the descriptor structure of the Identifiable. --- --- --- === --- --- @module Identifiable - ---- The IDENTIFIABLE class --- @type IDENTIFIABLE --- @extends Wrapper.Object#OBJECT --- @field #string IdentifiableName The name of the identifiable. -IDENTIFIABLE = { - ClassName = "IDENTIFIABLE", - IdentifiableName = "", -} - -local _CategoryName = { - [Unit.Category.AIRPLANE] = "Airplane", - [Unit.Category.HELICOPTER] = "Helicoper", - [Unit.Category.GROUND_UNIT] = "Ground Identifiable", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - } - ---- Create a new IDENTIFIABLE from a DCSIdentifiable --- @param #IDENTIFIABLE self --- @param Dcs.DCSWrapper.Identifiable#Identifiable IdentifiableName The DCS Identifiable name --- @return #IDENTIFIABLE self -function IDENTIFIABLE:New( IdentifiableName ) - local self = BASE:Inherit( self, OBJECT:New( IdentifiableName ) ) - self:F2( IdentifiableName ) - self.IdentifiableName = IdentifiableName - return self -end - ---- Returns if the Identifiable is alive. --- If the Identifiable is not alive, nil is returned. --- If the Identifiable is alive, true is returned. --- @param #IDENTIFIABLE self --- @return #boolean true if Identifiable is alive. --- @return #nil if the Identifiable is not existing or is not alive. -function IDENTIFIABLE:IsAlive() - self:F3( self.IdentifiableName ) - - local DCSIdentifiable = self:GetDCSObject() -- Dcs.DCSObject#Object - - if DCSIdentifiable then - local IdentifiableIsAlive = DCSIdentifiable:isExist() - return IdentifiableIsAlive - end - - return false -end - - - - ---- Returns DCS Identifiable object name. --- The function provides access to non-activated objects too. --- @param #IDENTIFIABLE self --- @return #string The name of the DCS Identifiable. --- @return #nil The DCS Identifiable is not existing or alive. -function IDENTIFIABLE:GetName() - self:F2( self.IdentifiableName ) - - local DCSIdentifiable = self:GetDCSObject() - - if DCSIdentifiable then - local IdentifiableName = self.IdentifiableName - return IdentifiableName - end - - self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) - return nil -end - - ---- Returns the type name of the DCS Identifiable. --- @param #IDENTIFIABLE self --- @return #string The type name of the DCS Identifiable. --- @return #nil The DCS Identifiable is not existing or alive. -function IDENTIFIABLE:GetTypeName() - self:F2( self.IdentifiableName ) - - local DCSIdentifiable = self:GetDCSObject() - - if DCSIdentifiable then - local IdentifiableTypeName = DCSIdentifiable:getTypeName() - self:T3( IdentifiableTypeName ) - return IdentifiableTypeName - end - - self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) - return nil -end - - ---- Returns category of the DCS Identifiable. --- @param #IDENTIFIABLE self --- @return Dcs.DCSWrapper.Object#Object.Category The category ID -function IDENTIFIABLE:GetCategory() - self:F2( self.ObjectName ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - local ObjectCategory = DCSObject:getCategory() - self:T3( ObjectCategory ) - return ObjectCategory - end - - return nil -end - - ---- Returns the DCS Identifiable category name as defined within the DCS Identifiable Descriptor. --- @param #IDENTIFIABLE self --- @return #string The DCS Identifiable Category Name -function IDENTIFIABLE:GetCategoryName() - local DCSIdentifiable = self:GetDCSObject() - - if DCSIdentifiable then - local IdentifiableCategoryName = _CategoryName[ self:GetDesc().category ] - return IdentifiableCategoryName - end - - self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) - return nil -end - ---- Returns coalition of the Identifiable. --- @param #IDENTIFIABLE self --- @return Dcs.DCSCoalitionWrapper.Object#coalition.side The side of the coalition. --- @return #nil The DCS Identifiable is not existing or alive. -function IDENTIFIABLE:GetCoalition() - self:F2( self.IdentifiableName ) - - local DCSIdentifiable = self:GetDCSObject() - - if DCSIdentifiable then - local IdentifiableCoalition = DCSIdentifiable:getCoalition() - self:T3( IdentifiableCoalition ) - return IdentifiableCoalition - end - - self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) - return nil -end - ---- Returns country of the Identifiable. --- @param #IDENTIFIABLE self --- @return Dcs.DCScountry#country.id The country identifier. --- @return #nil The DCS Identifiable is not existing or alive. -function IDENTIFIABLE:GetCountry() - self:F2( self.IdentifiableName ) - - local DCSIdentifiable = self:GetDCSObject() - - if DCSIdentifiable then - local IdentifiableCountry = DCSIdentifiable:getCountry() - self:T3( IdentifiableCountry ) - return IdentifiableCountry - end - - self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) - return nil -end - - - ---- Returns Identifiable descriptor. Descriptor type depends on Identifiable category. --- @param #IDENTIFIABLE self --- @return Dcs.DCSWrapper.Identifiable#Identifiable.Desc The Identifiable descriptor. --- @return #nil The DCS Identifiable is not existing or alive. -function IDENTIFIABLE:GetDesc() - self:F2( self.IdentifiableName ) - - local DCSIdentifiable = self:GetDCSObject() - - if DCSIdentifiable then - local IdentifiableDesc = DCSIdentifiable:getDesc() - self:T2( IdentifiableDesc ) - return IdentifiableDesc - end - - self:E( self.ClassName .. " " .. self.IdentifiableName .. " not found!" ) - return nil -end - ---- Gets the CallSign of the IDENTIFIABLE, which is a blank by default. --- @param #IDENTIFIABLE self --- @return #string The CallSign of the IDENTIFIABLE. -function IDENTIFIABLE:GetCallsign() - return '' -end - - -function IDENTIFIABLE:GetThreatLevel() - - return 0, "Scenery" -end ---- This module contains the POSITIONABLE class. --- --- 1) @{Positionable#POSITIONABLE} class, extends @{Identifiable#IDENTIFIABLE} --- =========================================================== --- The @{Positionable#POSITIONABLE} class is a wrapper class to handle the POSITIONABLE objects: --- --- * Support all DCS APIs. --- * Enhance with POSITIONABLE specific APIs not in the DCS API set. --- * Manage the "state" of the POSITIONABLE. --- --- 1.1) POSITIONABLE constructor: --- ------------------------------ --- The POSITIONABLE class provides the following functions to construct a POSITIONABLE instance: --- --- * @{Positionable#POSITIONABLE.New}(): Create a POSITIONABLE instance. --- --- 1.2) POSITIONABLE methods: --- -------------------------- --- The following methods can be used to identify an measurable object: --- --- * @{Positionable#POSITIONABLE.GetID}(): Returns the ID of the measurable object. --- * @{Positionable#POSITIONABLE.GetName}(): Returns the name of the measurable object. --- --- === --- --- @module Positionable - ---- The POSITIONABLE class --- @type POSITIONABLE --- @extends Wrapper.Identifiable#IDENTIFIABLE --- @field #string PositionableName The name of the measurable. -POSITIONABLE = { - ClassName = "POSITIONABLE", - PositionableName = "", -} - ---- A DCSPositionable --- @type DCSPositionable --- @field id_ The ID of the controllable in DCS - ---- Create a new POSITIONABLE from a DCSPositionable --- @param #POSITIONABLE self --- @param Dcs.DCSWrapper.Positionable#Positionable PositionableName The POSITIONABLE name --- @return #POSITIONABLE self -function POSITIONABLE:New( PositionableName ) - local self = BASE:Inherit( self, IDENTIFIABLE:New( PositionableName ) ) - - self.PositionableName = PositionableName - return self -end - ---- Returns the @{DCSTypes#Position3} position vectors indicating the point and direction vectors in 3D of the POSITIONABLE within the mission. --- @param Wrapper.Positionable#POSITIONABLE self --- @return Dcs.DCSTypes#Position The 3D position vectors of the POSITIONABLE. --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetPositionVec3() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionablePosition = DCSPositionable:getPosition().p - self:T3( PositionablePosition ) - return PositionablePosition - end - - return nil -end - ---- Returns the @{DCSTypes#Vec2} vector indicating the point in 2D of the POSITIONABLE within the mission. --- @param Wrapper.Positionable#POSITIONABLE self --- @return Dcs.DCSTypes#Vec2 The 2D point vector of the POSITIONABLE. --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetVec2() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionableVec3 = DCSPositionable:getPosition().p - - local PositionableVec2 = {} - PositionableVec2.x = PositionableVec3.x - PositionableVec2.y = PositionableVec3.z - - self:T2( PositionableVec2 ) - return PositionableVec2 - end - - return nil -end - ---- Returns a POINT_VEC2 object indicating the point in 2D of the POSITIONABLE within the mission. --- @param Wrapper.Positionable#POSITIONABLE self --- @return Core.Point#POINT_VEC2 The 2D point vector of the POSITIONABLE. --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetPointVec2() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionableVec3 = DCSPositionable:getPosition().p - - local PositionablePointVec2 = POINT_VEC2:NewFromVec3( PositionableVec3 ) - - self:T2( PositionablePointVec2 ) - return PositionablePointVec2 - end - - return nil -end - ---- Returns a POINT_VEC3 object indicating the point in 3D of the POSITIONABLE within the mission. --- @param Wrapper.Positionable#POSITIONABLE self --- @return Core.Point#POINT_VEC3 The 3D point vector of the POSITIONABLE. --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetPointVec3() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionableVec3 = self:GetPositionVec3() - - local PositionablePointVec3 = POINT_VEC3:NewFromVec3( PositionableVec3 ) - - self:T2( PositionablePointVec3 ) - return PositionablePointVec3 - end - - return nil -end - - ---- Returns a random @{DCSTypes#Vec3} vector within a range, indicating the point in 3D of the POSITIONABLE within the mission. --- @param Wrapper.Positionable#POSITIONABLE self --- @param #number Radius --- @return Dcs.DCSTypes#Vec3 The 3D point vector of the POSITIONABLE. --- @return #nil The POSITIONABLE is not existing or alive. --- @usage --- -- If Radius is ignored, returns the Dcs.DCSTypes#Vec3 of first UNIT of the GROUP -function POSITIONABLE:GetRandomVec3( Radius ) - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionablePointVec3 = DCSPositionable:getPosition().p - - if Radius then - local PositionableRandomVec3 = {} - local angle = math.random() * math.pi*2; - PositionableRandomVec3.x = PositionablePointVec3.x + math.cos( angle ) * math.random() * Radius; - PositionableRandomVec3.y = PositionablePointVec3.y - PositionableRandomVec3.z = PositionablePointVec3.z + math.sin( angle ) * math.random() * Radius; - - self:T3( PositionableRandomVec3 ) - return PositionableRandomVec3 - else - self:E("Radius is nil, returning the PointVec3 of the POSITIONABLE", PositionablePointVec3) - return PositionablePointVec3 - end - end - - return nil -end - ---- Returns the @{DCSTypes#Vec3} vector indicating the 3D vector of the POSITIONABLE within the mission. --- @param Wrapper.Positionable#POSITIONABLE self --- @return Dcs.DCSTypes#Vec3 The 3D point vector of the POSITIONABLE. --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetVec3() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionableVec3 = DCSPositionable:getPosition().p - self:T3( PositionableVec3 ) - return PositionableVec3 - end - - return nil -end - ---- Returns the altitude of the POSITIONABLE. --- @param Wrapper.Positionable#POSITIONABLE self --- @return Dcs.DCSTypes#Distance The altitude of the POSITIONABLE. --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetAltitude() - self:F2() - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionablePointVec3 = DCSPositionable:getPoint() --Dcs.DCSTypes#Vec3 - return PositionablePointVec3.y - end - - return nil -end - ---- Returns if the Positionable is located above a runway. --- @param Wrapper.Positionable#POSITIONABLE self --- @return #boolean true if Positionable is above a runway. --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:IsAboveRunway() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - - local Vec2 = self:GetVec2() - local SurfaceType = land.getSurfaceType( Vec2 ) - local IsAboveRunway = SurfaceType == land.SurfaceType.RUNWAY - - self:T2( IsAboveRunway ) - return IsAboveRunway - end - - return nil -end - - - ---- Returns the POSITIONABLE heading in degrees. --- @param Wrapper.Positionable#POSITIONABLE self --- @return #number The POSTIONABLE heading --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetHeading() - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - - local PositionablePosition = DCSPositionable:getPosition() - if PositionablePosition then - local PositionableHeading = math.atan2( PositionablePosition.x.z, PositionablePosition.x.x ) - if PositionableHeading < 0 then - PositionableHeading = PositionableHeading + 2 * math.pi - end - PositionableHeading = PositionableHeading * 180 / math.pi - self:T2( PositionableHeading ) - return PositionableHeading - end - end - - return nil -end - - ---- Returns true if the POSITIONABLE is in the air. --- Polymorphic, is overridden in GROUP and UNIT. --- @param Wrapper.Positionable#POSITIONABLE self --- @return #boolean true if in the air. --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:InAir() - self:F2( self.PositionableName ) - - return nil -end - - ---- Returns the POSITIONABLE velocity vector. --- @param Wrapper.Positionable#POSITIONABLE self --- @return Dcs.DCSTypes#Vec3 The velocity vector --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetVelocity() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionableVelocityVec3 = DCSPositionable:getVelocity() - self:T3( PositionableVelocityVec3 ) - return PositionableVelocityVec3 - end - - return nil -end - ---- Returns the POSITIONABLE velocity in km/h. --- @param Wrapper.Positionable#POSITIONABLE self --- @return #number The velocity in km/h --- @return #nil The POSITIONABLE is not existing or alive. -function POSITIONABLE:GetVelocityKMH() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local VelocityVec3 = self:GetVelocity() - local Velocity = ( VelocityVec3.x ^ 2 + VelocityVec3.y ^ 2 + VelocityVec3.z ^ 2 ) ^ 0.5 -- in meters / sec - local Velocity = Velocity * 3.6 -- now it is in km/h. - self:T3( Velocity ) - return Velocity - end - - return nil -end - ---- Returns a message with the callsign embedded (if there is one). --- @param #POSITIONABLE self --- @param #string Message The message text --- @param Dcs.DCSTypes#Duration Duration The duration of the message. --- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable. --- @return Core.Message#MESSAGE -function POSITIONABLE:GetMessage( Message, Duration, Name ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - Name = Name or self:GetTypeName() - return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. Name .. ")" ) - end - - return nil -end - ---- Send a message to all coalitions. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #POSITIONABLE self --- @param #string Message The message text --- @param Dcs.DCSTypes#Duration Duration The duration of the message. --- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable. -function POSITIONABLE:MessageToAll( Message, Duration, Name ) - self:F2( { Message, Duration } ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - self:GetMessage( Message, Duration, Name ):ToAll() - end - - return nil -end - ---- Send a message to a coalition. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #POSITIONABLE self --- @param #string Message The message text --- @param Dcs.DCSTYpes#Duration Duration The duration of the message. --- @param Dcs.DCScoalition#coalition MessageCoalition The Coalition receiving the message. --- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable. -function POSITIONABLE:MessageToCoalition( Message, Duration, MessageCoalition, Name ) - self:F2( { Message, Duration } ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - self:GetMessage( Message, Duration, Name ):ToCoalition( MessageCoalition ) - end - - return nil -end - - ---- Send a message to the red coalition. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #POSITIONABLE self --- @param #string Message The message text --- @param Dcs.DCSTYpes#Duration Duration The duration of the message. --- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable. -function POSITIONABLE:MessageToRed( Message, Duration, Name ) - self:F2( { Message, Duration } ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - self:GetMessage( Message, Duration, Name ):ToRed() - end - - return nil -end - ---- Send a message to the blue coalition. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #POSITIONABLE self --- @param #string Message The message text --- @param Dcs.DCSTypes#Duration Duration The duration of the message. --- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable. -function POSITIONABLE:MessageToBlue( Message, Duration, Name ) - self:F2( { Message, Duration } ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - self:GetMessage( Message, Duration, Name ):ToBlue() - end - - return nil -end - ---- Send a message to a client. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #POSITIONABLE self --- @param #string Message The message text --- @param Dcs.DCSTypes#Duration Duration The duration of the message. --- @param Wrapper.Client#CLIENT Client The client object receiving the message. --- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable. -function POSITIONABLE:MessageToClient( Message, Duration, Client, Name ) - self:F2( { Message, Duration } ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - self:GetMessage( Message, Duration, Name ):ToClient( Client ) - end - - return nil -end - ---- Send a message to a @{Group}. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #POSITIONABLE self --- @param #string Message The message text --- @param Dcs.DCSTypes#Duration Duration The duration of the message. --- @param Wrapper.Group#GROUP MessageGroup The GROUP object receiving the message. --- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable. -function POSITIONABLE:MessageToGroup( Message, Duration, MessageGroup, Name ) - self:F2( { Message, Duration } ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - if DCSObject:isExist() then - self:GetMessage( Message, Duration, Name ):ToGroup( MessageGroup ) - end - end - - return nil -end - ---- Send a message to the players in the @{Group}. --- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message. --- @param #POSITIONABLE self --- @param #string Message The message text --- @param Dcs.DCSTypes#Duration Duration The duration of the message. --- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable. -function POSITIONABLE:Message( Message, Duration, Name ) - self:F2( { Message, Duration } ) - - local DCSObject = self:GetDCSObject() - if DCSObject then - self:GetMessage( Message, Duration, Name ):ToGroup( self ) - end - - return nil -end - ---- Create a @{Radio#RADIO}, to allow radio transmission for this POSITIONABLE. --- Set parameters with the methods provided, then use RADIO:Broadcast() to actually broadcast the message --- @param #POSITIONABLE self --- @return #RADIO Radio -function POSITIONABLE:GetRadio() - self:F2(self) - return RADIO:New(self) -end ---- This module contains the CONTROLLABLE class. --- --- 1) @{Controllable#CONTROLLABLE} class, extends @{Positionable#POSITIONABLE} --- =========================================================== --- The @{Controllable#CONTROLLABLE} class is a wrapper class to handle the DCS Controllable objects: --- --- * Support all DCS Controllable APIs. --- * Enhance with Controllable specific APIs not in the DCS Controllable API set. --- * Handle local Controllable Controller. --- * Manage the "state" of the DCS Controllable. --- --- 1.1) CONTROLLABLE constructor --- ----------------------------- --- The CONTROLLABLE class provides the following functions to construct a CONTROLLABLE instance: --- --- * @{#CONTROLLABLE.New}(): Create a CONTROLLABLE instance. --- --- 1.2) CONTROLLABLE task methods --- ------------------------------ --- Several controllable task methods are available that help you to prepare tasks. --- These methods return a string consisting of the task description, which can then be given to either a @{Controllable#CONTROLLABLE.PushTask} or @{Controllable#SetTask} method to assign the task to the CONTROLLABLE. --- Tasks are specific for the category of the CONTROLLABLE, more specific, for AIR, GROUND or AIR and GROUND. --- Each task description where applicable indicates for which controllable category the task is valid. --- There are 2 main subdivisions of tasks: Assigned tasks and EnRoute tasks. --- --- ### 1.2.1) Assigned task methods --- --- Assigned task methods make the controllable execute the task where the location of the (possible) targets of the task are known before being detected. --- This is different from the EnRoute tasks, where the targets of the task need to be detected before the task can be executed. --- --- Find below a list of the **assigned task** methods: --- --- * @{#CONTROLLABLE.TaskAttackGroup}: (AIR) Attack a Controllable. --- * @{#CONTROLLABLE.TaskAttackMapObject}: (AIR) Attacking the map object (building, structure, e.t.c). --- * @{#CONTROLLABLE.TaskAttackUnit}: (AIR) Attack the Unit. --- * @{#CONTROLLABLE.TaskBombing}: (AIR) Delivering weapon at the point on the ground. --- * @{#CONTROLLABLE.TaskBombingRunway}: (AIR) Delivering weapon on the runway. --- * @{#CONTROLLABLE.TaskEmbarking}: (AIR) Move the controllable to a Vec2 Point, wait for a defined duration and embark a controllable. --- * @{#CONTROLLABLE.TaskEmbarkToTransport}: (GROUND) Embark to a Transport landed at a location. --- * @{#CONTROLLABLE.TaskEscort}: (AIR) Escort another airborne controllable. --- * @{#CONTROLLABLE.TaskFAC_AttackGroup}: (AIR + GROUND) The task makes the controllable/unit a FAC and orders the FAC to control the target (enemy ground controllable) destruction. --- * @{#CONTROLLABLE.TaskFireAtPoint}: (GROUND) Fire some or all ammunition at a VEC2 point. --- * @{#CONTROLLABLE.TaskFollow}: (AIR) Following another airborne controllable. --- * @{#CONTROLLABLE.TaskHold}: (GROUND) Hold ground controllable from moving. --- * @{#CONTROLLABLE.TaskHoldPosition}: (AIR) Hold position at the current position of the first unit of the controllable. --- * @{#CONTROLLABLE.TaskLand}: (AIR HELICOPTER) Landing at the ground. For helicopters only. --- * @{#CONTROLLABLE.TaskLandAtZone}: (AIR) Land the controllable at a @{Zone#ZONE_RADIUS). --- * @{#CONTROLLABLE.TaskOrbitCircle}: (AIR) Orbit at the current position of the first unit of the controllable at a specified alititude. --- * @{#CONTROLLABLE.TaskOrbitCircleAtVec2}: (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. --- * @{#CONTROLLABLE.TaskRefueling}: (AIR) Refueling from the nearest tanker. No parameters. --- * @{#CONTROLLABLE.TaskRoute}: (AIR + GROUND) Return a Misson task to follow a given route defined by Points. --- * @{#CONTROLLABLE.TaskRouteToVec2}: (AIR + GROUND) Make the Controllable move to a given point. --- * @{#CONTROLLABLE.TaskRouteToVec3}: (AIR + GROUND) Make the Controllable move to a given point. --- * @{#CONTROLLABLE.TaskRouteToZone}: (AIR + GROUND) Route the controllable to a given zone. --- * @{#CONTROLLABLE.TaskReturnToBase}: (AIR) Route the controllable to an airbase. --- --- ### 1.2.2) EnRoute task methods --- --- EnRoute tasks require the targets of the task need to be detected by the controllable (using its sensors) before the task can be executed: --- --- * @{#CONTROLLABLE.EnRouteTaskAWACS}: (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. --- * @{#CONTROLLABLE.EnRouteTaskEngageControllable}: (AIR) Engaging a controllable. The task does not assign the target controllable to the unit/controllable to attack now; it just allows the unit/controllable to engage the target controllable as well as other assigned targets. --- * @{#CONTROLLABLE.EnRouteTaskEngageTargets}: (AIR) Engaging targets of defined types. --- * @{#CONTROLLABLE.EnRouteTaskEWR}: (AIR) Attack the Unit. --- * @{#CONTROLLABLE.EnRouteTaskFAC}: (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose a targets (enemy ground controllable) around as well as other assigned targets. --- * @{#CONTROLLABLE.EnRouteTaskFAC_EngageControllable}: (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose the target (enemy ground controllable) as well as other assigned targets. --- * @{#CONTROLLABLE.EnRouteTaskTanker}: (AIR) Aircraft will act as a tanker for friendly units. No parameters. --- --- ### 1.2.3) Preparation task methods --- --- There are certain task methods that allow to tailor the task behaviour: --- --- * @{#CONTROLLABLE.TaskWrappedAction}: Return a WrappedAction Task taking a Command. --- * @{#CONTROLLABLE.TaskCombo}: Return a Combo Task taking an array of Tasks. --- * @{#CONTROLLABLE.TaskCondition}: Return a condition section for a controlled task. --- * @{#CONTROLLABLE.TaskControlled}: Return a Controlled Task taking a Task and a TaskCondition. --- --- ### 1.2.4) Obtain the mission from controllable templates --- --- Controllable templates contain complete mission descriptions. Sometimes you want to copy a complete mission from a controllable and assign it to another: --- --- * @{#CONTROLLABLE.TaskMission}: (AIR + GROUND) Return a mission task from a mission template. --- --- 1.3) CONTROLLABLE Command methods --- -------------------------- --- Controllable **command methods** prepare the execution of commands using the @{#CONTROLLABLE.SetCommand} method: --- --- * @{#CONTROLLABLE.CommandDoScript}: Do Script command. --- * @{#CONTROLLABLE.CommandSwitchWayPoint}: Perform a switch waypoint command. --- --- 1.4) CONTROLLABLE Option methods --- ------------------------- --- Controllable **Option methods** change the behaviour of the Controllable while being alive. --- --- ### 1.4.1) Rule of Engagement: --- --- * @{#CONTROLLABLE.OptionROEWeaponFree} --- * @{#CONTROLLABLE.OptionROEOpenFire} --- * @{#CONTROLLABLE.OptionROEReturnFire} --- * @{#CONTROLLABLE.OptionROEEvadeFire} --- --- To check whether an ROE option is valid for a specific controllable, use: --- --- * @{#CONTROLLABLE.OptionROEWeaponFreePossible} --- * @{#CONTROLLABLE.OptionROEOpenFirePossible} --- * @{#CONTROLLABLE.OptionROEReturnFirePossible} --- * @{#CONTROLLABLE.OptionROEEvadeFirePossible} --- --- ### 1.4.2) Rule on thread: --- --- * @{#CONTROLLABLE.OptionROTNoReaction} --- * @{#CONTROLLABLE.OptionROTPassiveDefense} --- * @{#CONTROLLABLE.OptionROTEvadeFire} --- * @{#CONTROLLABLE.OptionROTVertical} --- --- To test whether an ROT option is valid for a specific controllable, use: --- --- * @{#CONTROLLABLE.OptionROTNoReactionPossible} --- * @{#CONTROLLABLE.OptionROTPassiveDefensePossible} --- * @{#CONTROLLABLE.OptionROTEvadeFirePossible} --- * @{#CONTROLLABLE.OptionROTVerticalPossible} --- --- === --- --- @module Controllable - ---- The CONTROLLABLE class --- @type CONTROLLABLE --- @extends Wrapper.Positionable#POSITIONABLE --- @field Dcs.DCSWrapper.Controllable#Controllable DCSControllable The DCS controllable class. --- @field #string ControllableName The name of the controllable. -CONTROLLABLE = { - ClassName = "CONTROLLABLE", - ControllableName = "", - WayPointFunctions = {}, -} - ---- Create a new CONTROLLABLE from a DCSControllable --- @param #CONTROLLABLE self --- @param Dcs.DCSWrapper.Controllable#Controllable ControllableName The DCS Controllable name --- @return #CONTROLLABLE self -function CONTROLLABLE:New( ControllableName ) - local self = BASE:Inherit( self, POSITIONABLE:New( ControllableName ) ) - self:F2( ControllableName ) - self.ControllableName = ControllableName - - self.TaskScheduler = SCHEDULER:New( self ) - return self -end - --- DCS Controllable methods support. - ---- Get the controller for the CONTROLLABLE. --- @param #CONTROLLABLE self --- @return Dcs.DCSController#Controller -function CONTROLLABLE:_GetController() - self:F2( { self.ControllableName } ) - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local ControllableController = DCSControllable:getController() - self:T3( ControllableController ) - return ControllableController - end - - return nil -end - --- Get methods - ---- Returns the UNITs wrappers of the DCS Units of the Controllable (default is a GROUP). --- @param #CONTROLLABLE self --- @return #list The UNITs wrappers. -function CONTROLLABLE:GetUnits() - self:F2( { self.ControllableName } ) - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local DCSUnits = DCSControllable:getUnits() - local Units = {} - for Index, UnitData in pairs( DCSUnits ) do - Units[#Units+1] = UNIT:Find( UnitData ) - end - self:T3( Units ) - return Units - end - - return nil -end - - ---- Returns the health. Dead controllables have health <= 1.0. --- @param #CONTROLLABLE self --- @return #number The controllable health value (unit or group average). --- @return #nil The controllable is not existing or alive. -function CONTROLLABLE:GetLife() - self:F2( self.ControllableName ) - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local UnitLife = 0 - local Units = self:GetUnits() - if #Units == 1 then - local Unit = Units[1] -- Wrapper.Unit#UNIT - UnitLife = Unit:GetLife() - else - local UnitLifeTotal = 0 - for UnitID, Unit in pairs( Units ) do - local Unit = Unit -- Wrapper.Unit#UNIT - UnitLifeTotal = UnitLifeTotal + Unit:GetLife() - end - UnitLife = UnitLifeTotal / #Units - end - return UnitLife - end - - return nil -end - - - --- Tasks - ---- Clear all tasks from the controllable. --- @param #CONTROLLABLE self --- @return #CONTROLLABLE -function CONTROLLABLE:ClearTasks() - self:F2() - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local Controller = self:_GetController() - Controller:resetTask() - return self - end - - return nil -end - - ---- Popping current Task from the controllable. --- @param #CONTROLLABLE self --- @return Wrapper.Controllable#CONTROLLABLE self -function CONTROLLABLE:PopCurrentTask() - self:F2() - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local Controller = self:_GetController() - Controller:popTask() - return self - end - - return nil -end - ---- Pushing Task on the queue from the controllable. --- @param #CONTROLLABLE self --- @return Wrapper.Controllable#CONTROLLABLE self -function CONTROLLABLE:PushTask( DCSTask, WaitTime ) - self:F2() - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local Controller = self:_GetController() - - -- When a controllable SPAWNs, it takes about a second to get the controllable in the simulator. Setting tasks to unspawned controllables provides unexpected results. - -- Therefore we schedule the functions to set the mission and options for the Controllable. - -- Controller:pushTask( DCSTask ) - - if WaitTime then - self.TaskScheduler:Schedule( Controller, Controller.pushTask, { DCSTask }, WaitTime ) - else - Controller:pushTask( DCSTask ) - end - - return self - end - - return nil -end - ---- Clearing the Task Queue and Setting the Task on the queue from the controllable. --- @param #CONTROLLABLE self --- @return Wrapper.Controllable#CONTROLLABLE self -function CONTROLLABLE:SetTask( DCSTask, WaitTime ) - self:F2( { DCSTask } ) - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - - local Controller = self:_GetController() - self:T3( Controller ) - - -- When a controllable SPAWNs, it takes about a second to get the controllable in the simulator. Setting tasks to unspawned controllables provides unexpected results. - -- Therefore we schedule the functions to set the mission and options for the Controllable. - -- Controller.setTask( Controller, DCSTask ) - - if not WaitTime then - Controller:setTask( DCSTask ) - else - self.TaskScheduler:Schedule( Controller, Controller.setTask, { DCSTask }, WaitTime ) - end - - return self - end - - return nil -end - - ---- Return a condition section for a controlled task. --- @param #CONTROLLABLE self --- @param Dcs.DCSTime#Time time --- @param #string userFlag --- @param #boolean userFlagValue --- @param #string condition --- @param Dcs.DCSTime#Time duration --- @param #number lastWayPoint --- return Dcs.DCSTasking.Task#Task -function CONTROLLABLE:TaskCondition( time, userFlag, userFlagValue, condition, duration, lastWayPoint ) - self:F2( { time, userFlag, userFlagValue, condition, duration, lastWayPoint } ) - - local DCSStopCondition = {} - DCSStopCondition.time = time - DCSStopCondition.userFlag = userFlag - DCSStopCondition.userFlagValue = userFlagValue - DCSStopCondition.condition = condition - DCSStopCondition.duration = duration - DCSStopCondition.lastWayPoint = lastWayPoint - - self:T3( { DCSStopCondition } ) - return DCSStopCondition -end - ---- Return a Controlled Task taking a Task and a TaskCondition. --- @param #CONTROLLABLE self --- @param Dcs.DCSTasking.Task#Task DCSTask --- @param #DCSStopCondition DCSStopCondition --- @return Dcs.DCSTasking.Task#Task -function CONTROLLABLE:TaskControlled( DCSTask, DCSStopCondition ) - self:F2( { DCSTask, DCSStopCondition } ) - - local DCSTaskControlled - - DCSTaskControlled = { - id = 'ControlledTask', - params = { - task = DCSTask, - stopCondition = DCSStopCondition - } - } - - self:T3( { DCSTaskControlled } ) - return DCSTaskControlled -end - ---- Return a Combo Task taking an array of Tasks. --- @param #CONTROLLABLE self --- @param Dcs.DCSTasking.Task#TaskArray DCSTasks Array of @{DCSTasking.Task#Task} --- @return Dcs.DCSTasking.Task#Task -function CONTROLLABLE:TaskCombo( DCSTasks ) - self:F2( { DCSTasks } ) - - local DCSTaskCombo - - DCSTaskCombo = { - id = 'ComboTask', - params = { - tasks = DCSTasks - } - } - - for TaskID, Task in ipairs( DCSTasks ) do - self:E( Task ) - end - - self:T3( { DCSTaskCombo } ) - return DCSTaskCombo -end - ---- Return a WrappedAction Task taking a Command. --- @param #CONTROLLABLE self --- @param Dcs.DCSCommand#Command DCSCommand --- @return Dcs.DCSTasking.Task#Task -function CONTROLLABLE:TaskWrappedAction( DCSCommand, Index ) - self:F2( { DCSCommand } ) - - local DCSTaskWrappedAction - - DCSTaskWrappedAction = { - id = "WrappedAction", - enabled = true, - number = Index, - auto = false, - params = { - action = DCSCommand, - }, - } - - self:T3( { DCSTaskWrappedAction } ) - return DCSTaskWrappedAction -end - ---- Executes a command action --- @param #CONTROLLABLE self --- @param Dcs.DCSCommand#Command DCSCommand --- @return #CONTROLLABLE self -function CONTROLLABLE:SetCommand( DCSCommand ) - self:F2( DCSCommand ) - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local Controller = self:_GetController() - Controller:setCommand( DCSCommand ) - return self - end - - return nil -end - ---- Perform a switch waypoint command --- @param #CONTROLLABLE self --- @param #number FromWayPoint --- @param #number ToWayPoint --- @return Dcs.DCSTasking.Task#Task --- @usage --- --- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. --- HeliGroup = GROUP:FindByName( "Helicopter" ) --- --- --- Route the helicopter back to the FARP after 60 seconds. --- -- We use the SCHEDULER class to do this. --- SCHEDULER:New( nil, --- function( HeliGroup ) --- local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 ) --- HeliGroup:SetCommand( CommandRTB ) --- end, { HeliGroup }, 90 --- ) -function CONTROLLABLE:CommandSwitchWayPoint( FromWayPoint, ToWayPoint ) - self:F2( { FromWayPoint, ToWayPoint } ) - - local CommandSwitchWayPoint = { - id = 'SwitchWaypoint', - params = { - fromWaypointIndex = FromWayPoint, - goToWaypointIndex = ToWayPoint, - }, - } - - self:T3( { CommandSwitchWayPoint } ) - return CommandSwitchWayPoint -end - ---- Create a stop route command, which returns a string containing the command. --- Use the result in the method @{#CONTROLLABLE.SetCommand}(). --- A value of true will make the ground group stop, a value of false will make it continue. --- Note that this can only work on GROUP level, although individual UNITs can be commanded, the whole GROUP will react. --- --- Example missions: --- --- * GRP-310 --- --- @param #CONTROLLABLE self --- @param #boolean StopRoute true if the ground unit needs to stop, false if it needs to continue to move. --- @return Dcs.DCSTasking.Task#Task -function CONTROLLABLE:CommandStopRoute( StopRoute ) - self:F2( { StopRoute } ) - - local CommandStopRoute = { - id = 'StopRoute', - params = { - value = StopRoute, - }, - } - - self:T3( { CommandStopRoute } ) - return CommandStopRoute -end - - --- TASKS FOR AIR CONTROLLABLES - - ---- (AIR) Attack a Controllable. --- @param #CONTROLLABLE self --- @param Wrapper.Controllable#CONTROLLABLE AttackGroup The Controllable to be attacked. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param Dcs.DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. --- @param Dcs.DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. --- @param Dcs.DCSTypes#Distance Altitude (optional) Desired attack start altitude. Controllable/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/controllable will choose closest altitude to the desired attack start altitude. If the desired altitude is defined controllable/aircraft will not attack from safe altitude. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskAttackGroup( AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) - self:F2( { self.ControllableName, AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) - - -- AttackGroup = { - -- id = 'AttackGroup', - -- params = { - -- groupId = Group.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend, - -- attackQty = number, - -- directionEnabled = boolean, - -- direction = Azimuth, - -- altitudeEnabled = boolean, - -- altitude = Distance, - -- attackQtyLimit = boolean, - -- } - -- } - - local DirectionEnabled = nil - if Direction then - DirectionEnabled = true - end - - local AltitudeEnabled = nil - if Altitude then - AltitudeEnabled = true - end - - local DCSTask - DCSTask = { id = 'AttackGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - directionEnabled = DirectionEnabled, - direction = Direction, - altitudeEnabled = AltitudeEnabled, - altitude = Altitude, - attackQtyLimit = AttackQtyLimit, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (AIR) Attack the Unit. --- @param #CONTROLLABLE self --- @param Wrapper.Unit#UNIT AttackUnit The UNIT. --- @param #boolean GroupAttack (optional) If true, all units in the group will attack the Unit when found. --- @param Dcs.DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. --- @param Dcs.DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. --- @param #number Altitude (optional) The altitude from where to attack. --- @param #boolean Visible (optional) not a clue. --- @param #number WeaponType (optional) The WeaponType. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskAttackUnit( AttackUnit, GroupAttack, WeaponExpend, AttackQty, Direction, Altitude, Visible, WeaponType ) - self:F2( { self.ControllableName, AttackUnit, GroupAttack, WeaponExpend, AttackQty, Direction, Altitude, Visible, WeaponType } ) - - local DCSTask - DCSTask = { - id = 'AttackUnit', - params = { - unitId = AttackUnit:GetID(), - groupAttack = GroupAttack or false, - visible = Visible or false, - expend = WeaponExpend or "Auto", - directionEnabled = Direction and true or false, - direction = Direction, - altitudeEnabled = Altitude and true or false, - altitude = Altitude or 30, - attackQtyLimit = AttackQty and true or false, - attackQty = AttackQty, - weaponType = WeaponType - } - } - - self:E( DCSTask ) - - return DCSTask -end - - ---- (AIR) Delivering weapon at the point on the ground. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec2 Vec2 2D-coordinates of the point to deliver weapon at. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param Dcs.DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion. --- @param #number AttackQty (optional) Desired quantity of passes. The parameter is not the same in AttackGroup and AttackUnit tasks. --- @param Dcs.DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. --- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskBombing( Vec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) - self:F2( { self.ControllableName, Vec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) - --- Bombing = { --- id = 'Bombing', --- params = { --- point = Vec2, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- controllableAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'Bombing', - params = { - point = Vec2, - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - controllableAttack = ControllableAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec2 Point The point to hold the position. --- @param #number Altitude The altitude to hold the position. --- @param #number Speed The speed flying when holding the position. --- @return #CONTROLLABLE self -function CONTROLLABLE:TaskOrbitCircleAtVec2( Point, Altitude, Speed ) - self:F2( { self.ControllableName, Point, Altitude, Speed } ) - - -- pattern = enum AI.Task.OribtPattern, - -- point = Vec2, - -- point2 = Vec2, - -- speed = Distance, - -- altitude = Distance - - local LandHeight = land.getHeight( Point ) - - self:T3( { LandHeight } ) - - local DCSTask = { id = 'Orbit', - params = { pattern = AI.Task.OrbitPattern.CIRCLE, - point = Point, - speed = Speed, - altitude = Altitude + LandHeight - } - } - - - -- local AITask = { id = 'ControlledTask', - -- params = { task = { id = 'Orbit', - -- params = { pattern = AI.Task.OrbitPattern.CIRCLE, - -- point = Point, - -- speed = Speed, - -- altitude = Altitude + LandHeight - -- } - -- }, - -- stopCondition = { duration = Duration - -- } - -- } - -- } - -- ) - - return DCSTask -end - ---- (AIR) Orbit at the current position of the first unit of the controllable at a specified alititude. --- @param #CONTROLLABLE self --- @param #number Altitude The altitude to hold the position. --- @param #number Speed The speed flying when holding the position. --- @return #CONTROLLABLE self -function CONTROLLABLE:TaskOrbitCircle( Altitude, Speed ) - self:F2( { self.ControllableName, Altitude, Speed } ) - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local ControllablePoint = self:GetVec2() - return self:TaskOrbitCircleAtVec2( ControllablePoint, Altitude, Speed ) - end - - return nil -end - - - ---- (AIR) Hold position at the current position of the first unit of the controllable. --- @param #CONTROLLABLE self --- @param #number Duration The maximum duration in seconds to hold the position. --- @return #CONTROLLABLE self -function CONTROLLABLE:TaskHoldPosition() - self:F2( { self.ControllableName } ) - - return self:TaskOrbitCircle( 30, 10 ) -end - - - - ---- (AIR) Attacking the map object (building, structure, e.t.c). --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec2 Vec2 2D-coordinates of the point the map object is closest to. The distance between the point and the map object must not be greater than 2000 meters. Object id is not used here because Mission Editor doesn't support map object identificators. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param Dcs.DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. --- @param Dcs.DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. --- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskAttackMapObject( Vec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) - self:F2( { self.ControllableName, Vec2, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) - --- AttackMapObject = { --- id = 'AttackMapObject', --- params = { --- point = Vec2, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- controllableAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'AttackMapObject', - params = { - point = Vec2, - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - controllableAttack = ControllableAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Delivering weapon on the runway. --- @param #CONTROLLABLE self --- @param Wrapper.Airbase#AIRBASE Airbase Airbase to attack. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param Dcs.DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. --- @param Dcs.DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. --- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskBombingRunway( Airbase, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack ) - self:F2( { self.ControllableName, Airbase, WeaponType, WeaponExpend, AttackQty, Direction, ControllableAttack } ) - --- BombingRunway = { --- id = 'BombingRunway', --- params = { --- runwayId = AirdromeId, --- weaponType = number, --- expend = enum AI.Task.WeaponExpend, --- attackQty = number, --- direction = Azimuth, --- controllableAttack = boolean, --- } --- } - - local DCSTask - DCSTask = { id = 'BombingRunway', - params = { - point = Airbase:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - direction = Direction, - controllableAttack = ControllableAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Refueling from the nearest tanker. No parameters. --- @param #CONTROLLABLE self --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskRefueling() - self:F2( { self.ControllableName } ) - --- Refueling = { --- id = 'Refueling', --- params = {} --- } - - local DCSTask - DCSTask = { id = 'Refueling', - params = { - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR HELICOPTER) Landing at the ground. For helicopters only. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec2 Point The point where to land. --- @param #number Duration The duration in seconds to stay on the ground. --- @return #CONTROLLABLE self -function CONTROLLABLE:TaskLandAtVec2( Point, Duration ) - self:F2( { self.ControllableName, Point, Duration } ) - --- Land = { --- id= 'Land', --- params = { --- point = Vec2, --- durationFlag = boolean, --- duration = Time --- } --- } - - local DCSTask - if Duration and Duration > 0 then - DCSTask = { id = 'Land', - params = { - point = Point, - durationFlag = true, - duration = Duration, - }, - } - else - DCSTask = { id = 'Land', - params = { - point = Point, - durationFlag = false, - }, - } - end - - self:T3( DCSTask ) - return DCSTask -end - ---- (AIR) Land the controllable at a @{Zone#ZONE_RADIUS). --- @param #CONTROLLABLE self --- @param Core.Zone#ZONE Zone The zone where to land. --- @param #number Duration The duration in seconds to stay on the ground. --- @return #CONTROLLABLE self -function CONTROLLABLE:TaskLandAtZone( Zone, Duration, RandomPoint ) - self:F2( { self.ControllableName, Zone, Duration, RandomPoint } ) - - local Point - if RandomPoint then - Point = Zone:GetRandomVec2() - else - Point = Zone:GetVec2() - end - - local DCSTask = self:TaskLandAtVec2( Point, Duration ) - - self:T3( DCSTask ) - return DCSTask -end - - - ---- (AIR) Following another airborne controllable. --- The unit / controllable will follow lead unit of another controllable, wingmens of both controllables will continue following their leaders. --- If another controllable is on land the unit / controllable will orbit around. --- @param #CONTROLLABLE self --- @param Wrapper.Controllable#CONTROLLABLE FollowControllable The controllable to be followed. --- @param Dcs.DCSTypes#Vec3 Vec3 Position of the unit / lead unit of the controllable relative lead unit of another controllable in frame reference oriented by course of lead unit of another controllable. If another controllable is on land the unit / controllable will orbit around. --- @param #number LastWaypointIndex Detach waypoint of another controllable. Once reached the unit / controllable Follow task is finished. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskFollow( FollowControllable, Vec3, LastWaypointIndex ) - self:F2( { self.ControllableName, FollowControllable, Vec3, LastWaypointIndex } ) - --- Follow = { --- id = 'Follow', --- params = { --- groupId = Group.ID, --- pos = Vec3, --- lastWptIndexFlag = boolean, --- lastWptIndex = number --- } --- } - - local LastWaypointIndexFlag = false - if LastWaypointIndex then - LastWaypointIndexFlag = true - end - - local DCSTask - DCSTask = { - id = 'Follow', - params = { - groupId = FollowControllable:GetID(), - pos = Vec3, - lastWptIndexFlag = LastWaypointIndexFlag, - lastWptIndex = LastWaypointIndex - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Escort another airborne controllable. --- The unit / controllable will follow lead unit of another controllable, wingmens of both controllables will continue following their leaders. --- The unit / controllable will also protect that controllable from threats of specified types. --- @param #CONTROLLABLE self --- @param Wrapper.Controllable#CONTROLLABLE EscortControllable The controllable to be escorted. --- @param Dcs.DCSTypes#Vec3 Vec3 Position of the unit / lead unit of the controllable relative lead unit of another controllable in frame reference oriented by course of lead unit of another controllable. If another controllable is on land the unit / controllable will orbit around. --- @param #number LastWaypointIndex Detach waypoint of another controllable. Once reached the unit / controllable Follow task is finished. --- @param #number EngagementDistanceMax Maximal distance from escorted controllable to threat. If the threat is already engaged by escort escort will disengage if the distance becomes greater than 1.5 * engagementDistMax. --- @param Dcs.DCSTypes#AttributeNameArray TargetTypes Array of AttributeName that is contains threat categories allowed to engage. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskEscort( FollowControllable, Vec3, LastWaypointIndex, EngagementDistance, TargetTypes ) - self:F2( { self.ControllableName, FollowControllable, Vec3, LastWaypointIndex, EngagementDistance, TargetTypes } ) - --- Escort = { --- id = 'Escort', --- params = { --- groupId = Group.ID, --- pos = Vec3, --- lastWptIndexFlag = boolean, --- lastWptIndex = number, --- engagementDistMax = Distance, --- targetTypes = array of AttributeName, --- } --- } - - local LastWaypointIndexFlag = false - if LastWaypointIndex then - LastWaypointIndexFlag = true - end - - local DCSTask - DCSTask = { id = 'Escort', - params = { - groupId = FollowControllable:GetID(), - pos = Vec3, - lastWptIndexFlag = LastWaypointIndexFlag, - lastWptIndex = LastWaypointIndex, - engagementDistMax = EngagementDistance, - targetTypes = TargetTypes, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - --- GROUND TASKS - ---- (GROUND) Fire at a VEC2 point until ammunition is finished. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec2 Vec2 The point to fire at. --- @param Dcs.DCSTypes#Distance Radius The radius of the zone to deploy the fire at. --- @param #number AmmoCount (optional) Quantity of ammunition to expand (omit to fire until ammunition is depleted). --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskFireAtPoint( Vec2, Radius, AmmoCount ) - self:F2( { self.ControllableName, Vec2, Radius, AmmoCount } ) - - -- FireAtPoint = { - -- id = 'FireAtPoint', - -- params = { - -- point = Vec2, - -- radius = Distance, - -- expendQty = number, - -- expendQtyEnabled = boolean, - -- } - -- } - - local DCSTask - DCSTask = { id = 'FireAtPoint', - params = { - point = Vec2, - radius = Radius, - expendQty = 100, -- dummy value - expendQtyEnabled = false, - } - } - - if AmmoCount then - DCSTask.params.expendQty = AmmoCount - DCSTask.params.expendQtyEnabled = true - end - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (GROUND) Hold ground controllable from moving. --- @param #CONTROLLABLE self --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskHold() - self:F2( { self.ControllableName } ) - --- Hold = { --- id = 'Hold', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'Hold', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - --- TASKS FOR AIRBORNE AND GROUND UNITS/CONTROLLABLES - ---- (AIR + GROUND) The task makes the controllable/unit a FAC and orders the FAC to control the target (enemy ground controllable) destruction. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the controllable lead unit will be a FAC. --- @param #CONTROLLABLE self --- @param Wrapper.Controllable#CONTROLLABLE AttackGroup Target CONTROLLABLE. --- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param Dcs.DCSTypes#AI.Task.Designation Designation (optional) Designation type. --- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskFAC_AttackGroup( AttackGroup, WeaponType, Designation, Datalink ) - self:F2( { self.ControllableName, AttackGroup, WeaponType, Designation, Datalink } ) - --- FAC_AttackGroup = { --- id = 'FAC_AttackGroup', --- params = { --- groupId = Group.ID, --- weaponType = number, --- designation = enum AI.Task.Designation, --- datalink = boolean --- } --- } - - local DCSTask - DCSTask = { id = 'FAC_AttackGroup', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - designation = Designation, - datalink = Datalink, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - --- EN-ACT_ROUTE TASKS FOR AIRBORNE CONTROLLABLES - ---- (AIR) Engaging targets of defined types. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Distance Distance Maximal distance from the target to a route leg. If the target is on a greater distance it will be ignored. --- @param Dcs.DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. --- @param #number Priority All enroute tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskEngageTargets( Distance, TargetTypes, Priority ) - self:F2( { self.ControllableName, Distance, TargetTypes, Priority } ) - --- EngageTargets ={ --- id = 'EngageTargets', --- params = { --- maxDist = Distance, --- targetTypes = array of AttributeName, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'EngageTargets', - params = { - maxDist = Distance, - targetTypes = TargetTypes, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - - ---- (AIR) Engaging a targets of defined types at circle-shaped zone. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec2 Vec2 2D-coordinates of the zone. --- @param Dcs.DCSTypes#Distance Radius Radius of the zone. --- @param Dcs.DCSTypes#AttributeNameArray TargetTypes Array of target categories allowed to engage. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskEngageTargets( Vec2, Radius, TargetTypes, Priority ) - self:F2( { self.ControllableName, Vec2, Radius, TargetTypes, Priority } ) - --- EngageTargetsInZone = { --- id = 'EngageTargetsInZone', --- params = { --- point = Vec2, --- zoneRadius = Distance, --- targetTypes = array of AttributeName, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'EngageTargetsInZone', - params = { - point = Vec2, - zoneRadius = Radius, - targetTypes = TargetTypes, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Engaging a controllable. The task does not assign the target controllable to the unit/controllable to attack now; it just allows the unit/controllable to engage the target controllable as well as other assigned targets. --- @param #CONTROLLABLE self --- @param Wrapper.Controllable#CONTROLLABLE AttackGroup The Controllable to be attacked. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #number WeaponType (optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param Dcs.DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. --- @param Dcs.DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. --- @param Dcs.DCSTypes#Distance Altitude (optional) Desired attack start altitude. Controllable/aircraft will make its attacks from the altitude. If the altitude is too low or too high to use weapon aircraft/controllable will choose closest altitude to the desired attack start altitude. If the desired altitude is defined controllable/aircraft will not attack from safe altitude. --- @param #boolean AttackQtyLimit (optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackGroup" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskEngageGroup( AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit ) - self:F2( { self.ControllableName, AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit } ) - - -- EngageControllable = { - -- id = 'EngageControllable ', - -- params = { - -- groupId = Group.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend, - -- attackQty = number, - -- directionEnabled = boolean, - -- direction = Azimuth, - -- altitudeEnabled = boolean, - -- altitude = Distance, - -- attackQtyLimit = boolean, - -- priority = number, - -- } - -- } - - local DirectionEnabled = nil - if Direction then - DirectionEnabled = true - end - - local AltitudeEnabled = nil - if Altitude then - AltitudeEnabled = true - end - - local DCSTask - DCSTask = { id = 'EngageControllable', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - expend = WeaponExpend, - attackQty = AttackQty, - directionEnabled = DirectionEnabled, - direction = Direction, - altitudeEnabled = AltitudeEnabled, - altitude = Altitude, - attackQtyLimit = AttackQtyLimit, - priority = Priority, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Search and attack the Unit. --- @param #CONTROLLABLE self --- @param Wrapper.Unit#UNIT EngageUnit The UNIT. --- @param #number Priority (optional) All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #boolean GroupAttack (optional) If true, all units in the group will attack the Unit when found. --- @param Dcs.DCSTypes#AI.Task.WeaponExpend WeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion. --- @param #number AttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. --- @param Dcs.DCSTypes#Azimuth Direction (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. --- @param Dcs.DCSTypes#Distance Altitude (optional) Desired altitude to perform the unit engagement. --- @param #boolean Visible (optional) Unit must be visible. --- @param #boolean ControllableAttack (optional) Flag indicates that the target must be engaged by all aircrafts of the controllable. Has effect only if the task is assigned to a controllable, not to a single aircraft. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskEngageUnit( EngageUnit, Priority, GroupAttack, WeaponExpend, AttackQty, Direction, Altitude, Visible, ControllableAttack ) - self:F2( { self.ControllableName, EngageUnit, Priority, GroupAttack, WeaponExpend, AttackQty, Direction, Altitude, Visible, ControllableAttack } ) - - -- EngageUnit = { - -- id = 'EngageUnit', - -- params = { - -- unitId = Unit.ID, - -- weaponType = number, - -- expend = enum AI.Task.WeaponExpend - -- attackQty = number, - -- direction = Azimuth, - -- attackQtyLimit = boolean, - -- controllableAttack = boolean, - -- priority = number, - -- } - -- } - - local DCSTask - DCSTask = { id = 'EngageUnit', - params = { - unitId = EngageUnit:GetID(), - priority = Priority or 1, - groupAttack = GroupAttack or false, - visible = Visible or false, - expend = WeaponExpend or "Auto", - directionEnabled = Direction and true or false, - direction = Direction, - altitudeEnabled = Altitude and true or false, - altitude = Altitude, - attackQtyLimit = AttackQty and true or false, - attackQty = AttackQty, - controllableAttack = ControllableAttack, - }, - }, - - self:T3( { DCSTask } ) - return DCSTask -end - - - ---- (AIR) Aircraft will act as an AWACS for friendly units (will provide them with information about contacts). No parameters. --- @param #CONTROLLABLE self --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskAWACS( ) - self:F2( { self.ControllableName } ) - --- AWACS = { --- id = 'AWACS', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'AWACS', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR) Aircraft will act as a tanker for friendly units. No parameters. --- @param #CONTROLLABLE self --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskTanker( ) - self:F2( { self.ControllableName } ) - --- Tanker = { --- id = 'Tanker', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'Tanker', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - --- En-route tasks for ground units/controllables - ---- (GROUND) Ground unit (EW-radar) will act as an EWR for friendly units (will provide them with information about contacts). No parameters. --- @param #CONTROLLABLE self --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskEWR( ) - self:F2( { self.ControllableName } ) - --- EWR = { --- id = 'EWR', --- params = { --- } --- } - - local DCSTask - DCSTask = { id = 'EWR', - params = { - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - --- En-route tasks for airborne and ground units/controllables - ---- (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose the target (enemy ground controllable) as well as other assigned targets. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the controllable lead unit will be a FAC. --- @param #CONTROLLABLE self --- @param Wrapper.Controllable#CONTROLLABLE AttackGroup Target CONTROLLABLE. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @param #number WeaponType Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage. --- @param Dcs.DCSTypes#AI.Task.Designation Designation (optional) Designation type. --- @param #boolean Datalink (optional) Allows to use datalink to send the target information to attack aircraft. Enabled by default. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskFAC_EngageGroup( AttackGroup, Priority, WeaponType, Designation, Datalink ) - self:F2( { self.ControllableName, AttackGroup, WeaponType, Priority, Designation, Datalink } ) - --- FAC_EngageControllable = { --- id = 'FAC_EngageControllable', --- params = { --- groupId = Group.ID, --- weaponType = number, --- designation = enum AI.Task.Designation, --- datalink = boolean, --- priority = number, --- } --- } - - local DCSTask - DCSTask = { id = 'FAC_EngageControllable', - params = { - groupId = AttackGroup:GetID(), - weaponType = WeaponType, - designation = Designation, - datalink = Datalink, - priority = Priority, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - ---- (AIR + GROUND) The task makes the controllable/unit a FAC and lets the FAC to choose a targets (enemy ground controllable) around as well as other assigned targets. --- The killer is player-controlled allied CAS-aircraft that is in contact with the FAC. --- If the task is assigned to the controllable lead unit will be a FAC. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Distance Radius The maximal distance from the FAC to a target. --- @param #number Priority All en-route tasks have the priority parameter. This is a number (less value - higher priority) that determines actions related to what task will be performed first. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:EnRouteTaskFAC( Radius, Priority ) - self:F2( { self.ControllableName, Radius, Priority } ) - --- FAC = { --- id = 'FAC', --- params = { --- radius = Distance, --- priority = number --- } --- } - - local DCSTask - DCSTask = { id = 'FAC', - params = { - radius = Radius, - priority = Priority - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - - - ---- (AIR) Move the controllable to a Vec2 Point, wait for a defined duration and embark a controllable. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec2 Point The point where to wait. --- @param #number Duration The duration in seconds to wait. --- @param #CONTROLLABLE EmbarkingControllable The controllable to be embarked. --- @return Dcs.DCSTasking.Task#Task The DCS task structure -function CONTROLLABLE:TaskEmbarking( Point, Duration, EmbarkingControllable ) - self:F2( { self.ControllableName, Point, Duration, EmbarkingControllable.DCSControllable } ) - - local DCSTask - DCSTask = { id = 'Embarking', - params = { x = Point.x, - y = Point.y, - duration = Duration, - controllablesForEmbarking = { EmbarkingControllable.ControllableID }, - durationFlag = true, - distributionFlag = false, - distribution = {}, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (GROUND) Embark to a Transport landed at a location. - ---- Move to a defined Vec2 Point, and embark to a controllable when arrived within a defined Radius. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec2 Point The point where to wait. --- @param #number Radius The radius of the embarking zone around the Point. --- @return Dcs.DCSTasking.Task#Task The DCS task structure. -function CONTROLLABLE:TaskEmbarkToTransport( Point, Radius ) - self:F2( { self.ControllableName, Point, Radius } ) - - local DCSTask --Dcs.DCSTasking.Task#Task - DCSTask = { id = 'EmbarkToTransport', - params = { x = Point.x, - y = Point.y, - zoneRadius = Radius, - } - } - - self:T3( { DCSTask } ) - return DCSTask -end - - - ---- (AIR + GROUND) Return a mission task from a mission template. --- @param #CONTROLLABLE self --- @param #table TaskMission A table containing the mission task. --- @return Dcs.DCSTasking.Task#Task -function CONTROLLABLE:TaskMission( TaskMission ) - self:F2( Points ) - - local DCSTask - DCSTask = { id = 'Mission', params = { TaskMission, }, } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- Return a Misson task to follow a given route defined by Points. --- @param #CONTROLLABLE self --- @param #table Points A table of route points. --- @return Dcs.DCSTasking.Task#Task -function CONTROLLABLE:TaskRoute( Points ) - self:F2( Points ) - - local DCSTask - DCSTask = { id = 'Mission', params = { route = { points = Points, }, }, } - - self:T3( { DCSTask } ) - return DCSTask -end - ---- (AIR + GROUND) Make the Controllable move to fly to a given point. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec3 Point The destination point in Vec3 format. --- @param #number Speed The speed to travel. --- @return #CONTROLLABLE self -function CONTROLLABLE:RouteToVec2( Point, Speed ) - self:F2( { Point, Speed } ) - - local ControllablePoint = self:GetUnit( 1 ):GetVec2() - - local PointFrom = {} - PointFrom.x = ControllablePoint.x - PointFrom.y = ControllablePoint.y - PointFrom.type = "Turning Point" - PointFrom.action = "Turning Point" - PointFrom.speed = Speed - PointFrom.speed_locked = true - PointFrom.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local PointTo = {} - PointTo.x = Point.x - PointTo.y = Point.y - PointTo.type = "Turning Point" - PointTo.action = "Fly Over Point" - PointTo.speed = Speed - PointTo.speed_locked = true - PointTo.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self -end - ---- (AIR + GROUND) Make the Controllable move to a given point. --- @param #CONTROLLABLE self --- @param Dcs.DCSTypes#Vec3 Point The destination point in Vec3 format. --- @param #number Speed The speed to travel. --- @return #CONTROLLABLE self -function CONTROLLABLE:RouteToVec3( Point, Speed ) - self:F2( { Point, Speed } ) - - local ControllableVec3 = self:GetUnit( 1 ):GetVec3() - - local PointFrom = {} - PointFrom.x = ControllableVec3.x - PointFrom.y = ControllableVec3.z - PointFrom.alt = ControllableVec3.y - PointFrom.alt_type = "BARO" - PointFrom.type = "Turning Point" - PointFrom.action = "Turning Point" - PointFrom.speed = Speed - PointFrom.speed_locked = true - PointFrom.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local PointTo = {} - PointTo.x = Point.x - PointTo.y = Point.z - PointTo.alt = Point.y - PointTo.alt_type = "BARO" - PointTo.type = "Turning Point" - PointTo.action = "Fly Over Point" - PointTo.speed = Speed - PointTo.speed_locked = true - PointTo.properties = { - ["vnav"] = 1, - ["scale"] = 0, - ["angle"] = 0, - ["vangle"] = 0, - ["steer"] = 2, - } - - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self -end - - - ---- Make the controllable to follow a given route. --- @param #CONTROLLABLE self --- @param #table GoPoints A table of Route Points. --- @return #CONTROLLABLE self -function CONTROLLABLE:Route( GoPoints ) - self:F2( GoPoints ) - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - local Points = routines.utils.deepCopy( GoPoints ) - local MissionTask = { id = 'Mission', params = { route = { points = Points, }, }, } - local Controller = self:_GetController() - --Controller.setTask( Controller, MissionTask ) - self.TaskScheduler:Schedule( Controller, Controller.setTask, { MissionTask }, 1 ) - return self - end - - return nil -end - - - ---- (AIR + GROUND) Route the controllable to a given zone. --- The controllable final destination point can be randomized. --- A speed can be given in km/h. --- A given formation can be given. --- @param #CONTROLLABLE self --- @param Core.Zone#ZONE Zone The zone where to route to. --- @param #boolean Randomize Defines whether to target point gets randomized within the Zone. --- @param #number Speed The speed. --- @param Base#FORMATION Formation The formation string. -function CONTROLLABLE:TaskRouteToZone( Zone, Randomize, Speed, Formation ) - self:F2( Zone ) - - local DCSControllable = self:GetDCSObject() - - if DCSControllable then - - local ControllablePoint = self:GetVec2() - - local PointFrom = {} - PointFrom.x = ControllablePoint.x - PointFrom.y = ControllablePoint.y - PointFrom.type = "Turning Point" - PointFrom.action = Formation or "Cone" - PointFrom.speed = 20 / 1.6 - - - local PointTo = {} - local ZonePoint - - if Randomize then - ZonePoint = Zone:GetRandomVec2() - else - ZonePoint = Zone:GetVec2() - end - - PointTo.x = ZonePoint.x - PointTo.y = ZonePoint.y - PointTo.type = "Turning Point" - - if Formation then - PointTo.action = Formation - else - PointTo.action = "Cone" - end - - if Speed then - PointTo.speed = Speed - else - PointTo.speed = 20 / 1.6 - end - - local Points = { PointFrom, PointTo } - - self:T3( Points ) - - self:Route( Points ) - - return self - end - - return nil -end - - --- Commands - ---- Do Script command --- @param #CONTROLLABLE self --- @param #string DoScript --- @return #DCSCommand -function CONTROLLABLE:CommandDoScript( DoScript ) - - local DCSDoScript = { - id = "Script", - params = { - command = DoScript, - }, - } - - self:T3( DCSDoScript ) - return DCSDoScript -end - - ---- Return the mission template of the controllable. --- @param #CONTROLLABLE self --- @return #table The MissionTemplate --- TODO: Rework the method how to retrieve a template ... -function CONTROLLABLE:GetTaskMission() - self:F2( self.ControllableName ) - - return routines.utils.deepCopy( _DATABASE.Templates.Controllables[self.ControllableName].Template ) -end - ---- Return the mission route of the controllable. --- @param #CONTROLLABLE self --- @return #table The mission route defined by points. -function CONTROLLABLE:GetTaskRoute() - self:F2( self.ControllableName ) - - return routines.utils.deepCopy( _DATABASE.Templates.Controllables[self.ControllableName].Template.route.points ) -end - - - ---- Return the route of a controllable by using the @{Database#DATABASE} class. --- @param #CONTROLLABLE self --- @param #number Begin The route point from where the copy will start. The base route point is 0. --- @param #number End The route point where the copy will end. The End point is the last point - the End point. The last point has base 0. --- @param #boolean Randomize Randomization of the route, when true. --- @param #number Radius When randomization is on, the randomization is within the radius. -function CONTROLLABLE:CopyRoute( Begin, End, Randomize, Radius ) - self:F2( { Begin, End } ) - - local Points = {} - - -- Could be a Spawned Controllable - local ControllableName = string.match( self:GetName(), ".*#" ) - if ControllableName then - ControllableName = ControllableName:sub( 1, -2 ) - else - ControllableName = self:GetName() - end - - self:T3( { ControllableName } ) - - local Template = _DATABASE.Templates.Controllables[ControllableName].Template - - if Template then - if not Begin then - Begin = 0 - end - if not End then - End = 0 - end - - for TPointID = Begin + 1, #Template.route.points - End do - if Template.route.points[TPointID] then - Points[#Points+1] = routines.utils.deepCopy( Template.route.points[TPointID] ) - if Randomize then - if not Radius then - Radius = 500 - end - Points[#Points].x = Points[#Points].x + math.random( Radius * -1, Radius ) - Points[#Points].y = Points[#Points].y + math.random( Radius * -1, Radius ) - end - end - end - return Points - else - error( "Template not found for Controllable : " .. ControllableName ) - end - - return nil -end - - ---- Return the detected targets of the controllable. --- The optional parametes specify the detection methods that can be applied. --- If no detection method is given, the detection will use all the available methods by default. --- @param Wrapper.Controllable#CONTROLLABLE self --- @param #boolean DetectVisual (optional) --- @param #boolean DetectOptical (optional) --- @param #boolean DetectRadar (optional) --- @param #boolean DetectIRST (optional) --- @param #boolean DetectRWR (optional) --- @param #boolean DetectDLINK (optional) --- @return #table DetectedTargets -function CONTROLLABLE:GetDetectedTargets( DetectVisual, DetectOptical, DetectRadar, DetectIRST, DetectRWR, DetectDLINK ) - self:F2( self.ControllableName ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local DetectionVisual = ( DetectVisual and DetectVisual == true ) and Controller.Detection.VISUAL or nil - local DetectionOptical = ( DetectOptical and DetectOptical == true ) and Controller.Detection.OPTICAL or nil - local DetectionRadar = ( DetectRadar and DetectRadar == true ) and Controller.Detection.RADAR or nil - local DetectionIRST = ( DetectIRST and DetectIRST == true ) and Controller.Detection.IRST or nil - local DetectionRWR = ( DetectRWR and DetectRWR == true ) and Controller.Detection.RWR or nil - local DetectionDLINK = ( DetectDLINK and DetectDLINK == true ) and Controller.Detection.DLINK or nil - - - return self:_GetController():getDetectedTargets( DetectionVisual, DetectionOptical, DetectionRadar, DetectionIRST, DetectionRWR, DetectionDLINK ) - end - - return nil -end - -function CONTROLLABLE:IsTargetDetected( DCSObject ) - self:F2( self.ControllableName ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - - local TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity - = self:_GetController().isTargetDetected( self:_GetController(), DCSObject, - Controller.Detection.VISUAL, - Controller.Detection.OPTIC, - Controller.Detection.RADAR, - Controller.Detection.IRST, - Controller.Detection.RWR, - Controller.Detection.DLINK - ) - return TargetIsDetected, TargetIsVisible, TargetLastTime, TargetKnowType, TargetKnowDistance, TargetLastPos, TargetLastVelocity - end - - return nil -end - --- Options - ---- Can the CONTROLLABLE hold their weapons? --- @param #CONTROLLABLE self --- @return #boolean -function CONTROLLABLE:OptionROEHoldFirePossible() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Holding weapons. --- @param Wrapper.Controllable#CONTROLLABLE self --- @return Wrapper.Controllable#CONTROLLABLE self -function CONTROLLABLE:OptionROEHoldFire() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.WEAPON_HOLD ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.WEAPON_HOLD ) - end - - return self - end - - return nil -end - ---- Can the CONTROLLABLE attack returning on enemy fire? --- @param #CONTROLLABLE self --- @return #boolean -function CONTROLLABLE:OptionROEReturnFirePossible() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Return fire. --- @param #CONTROLLABLE self --- @return #CONTROLLABLE self -function CONTROLLABLE:OptionROEReturnFire() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.RETURN_FIRE ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.RETURN_FIRE ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.RETURN_FIRE ) - end - - return self - end - - return nil -end - ---- Can the CONTROLLABLE attack designated targets? --- @param #CONTROLLABLE self --- @return #boolean -function CONTROLLABLE:OptionROEOpenFirePossible() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - if self:IsAir() or self:IsGround() or self:IsShip() then - return true - end - - return false - end - - return nil -end - ---- Openfire. --- @param #CONTROLLABLE self --- @return #CONTROLLABLE self -function CONTROLLABLE:OptionROEOpenFire() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) - elseif self:IsGround() then - Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.OPEN_FIRE ) - elseif self:IsShip() then - Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.OPEN_FIRE ) - end - - return self - end - - return nil -end - ---- Can the CONTROLLABLE attack targets of opportunity? --- @param #CONTROLLABLE self --- @return #boolean -function CONTROLLABLE:OptionROEWeaponFreePossible() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - ---- Weapon free. --- @param #CONTROLLABLE self --- @return #CONTROLLABLE self -function CONTROLLABLE:OptionROEWeaponFree() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE ) - end - - return self - end - - return nil -end - ---- Can the CONTROLLABLE ignore enemy fire? --- @param #CONTROLLABLE self --- @return #boolean -function CONTROLLABLE:OptionROTNoReactionPossible() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- No evasion on enemy threats. --- @param #CONTROLLABLE self --- @return #CONTROLLABLE self -function CONTROLLABLE:OptionROTNoReaction() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.NO_REACTION ) - end - - return self - end - - return nil -end - ---- Can the CONTROLLABLE evade using passive defenses? --- @param #CONTROLLABLE self --- @return #boolean -function CONTROLLABLE:OptionROTPassiveDefensePossible() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - ---- Evasion passive defense. --- @param #CONTROLLABLE self --- @return #CONTROLLABLE self -function CONTROLLABLE:OptionROTPassiveDefense() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.PASSIVE_DEFENCE ) - end - - return self - end - - return nil -end - ---- Can the CONTROLLABLE evade on enemy fire? --- @param #CONTROLLABLE self --- @return #boolean -function CONTROLLABLE:OptionROTEvadeFirePossible() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- Evade on fire. --- @param #CONTROLLABLE self --- @return #CONTROLLABLE self -function CONTROLLABLE:OptionROTEvadeFire() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) - end - - return self - end - - return nil -end - ---- Can the CONTROLLABLE evade on fire using vertical manoeuvres? --- @param #CONTROLLABLE self --- @return #boolean -function CONTROLLABLE:OptionROTVerticalPossible() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - if self:IsAir() then - return true - end - - return false - end - - return nil -end - - ---- Evade on fire using vertical manoeuvres. --- @param #CONTROLLABLE self --- @return #CONTROLLABLE self -function CONTROLLABLE:OptionROTVertical() - self:F2( { self.ControllableName } ) - - local DCSControllable = self:GetDCSObject() - if DCSControllable then - local Controller = self:_GetController() - - if self:IsAir() then - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) - end - - return self - end - - return nil -end - ---- Retrieve the controllable mission and allow to place function hooks within the mission waypoint plan. --- Use the method @{Controllable#CONTROLLABLE:WayPointFunction} to define the hook functions for specific waypoints. --- Use the method @{Controllable@CONTROLLABLE:WayPointExecute) to start the execution of the new mission plan. --- Note that when WayPointInitialize is called, the Mission of the controllable is RESTARTED! --- @param #CONTROLLABLE self --- @param #table WayPoints If WayPoints is given, then use the route. --- @return #CONTROLLABLE -function CONTROLLABLE:WayPointInitialize( WayPoints ) - self:F( { WayPoints } ) - - if WayPoints then - self.WayPoints = WayPoints - else - self.WayPoints = self:GetTaskRoute() - end - - return self -end - ---- Get the current WayPoints set with the WayPoint functions( Note that the WayPoints can be nil, although there ARE waypoints). --- @param #CONTROLLABLE self --- @return #table WayPoints If WayPoints is given, then return the WayPoints structure. -function CONTROLLABLE:GetWayPoints() - self:F( ) - - if self.WayPoints then - return self.WayPoints - end - - return nil -end - ---- Registers a waypoint function that will be executed when the controllable moves over the WayPoint. --- @param #CONTROLLABLE self --- @param #number WayPoint The waypoint number. Note that the start waypoint on the route is WayPoint 1! --- @param #number WayPointIndex When defining multiple WayPoint functions for one WayPoint, use WayPointIndex to set the sequence of actions. --- @param #function WayPointFunction The waypoint function to be called when the controllable moves over the waypoint. The waypoint function takes variable parameters. --- @return #CONTROLLABLE -function CONTROLLABLE:WayPointFunction( WayPoint, WayPointIndex, WayPointFunction, ... ) - self:F2( { WayPoint, WayPointIndex, WayPointFunction } ) - - table.insert( self.WayPoints[WayPoint].task.params.tasks, WayPointIndex ) - self.WayPoints[WayPoint].task.params.tasks[WayPointIndex] = self:TaskFunction( WayPoint, WayPointIndex, WayPointFunction, arg ) - return self -end - - -function CONTROLLABLE:TaskFunction( WayPoint, WayPointIndex, FunctionString, FunctionArguments ) - self:F2( { WayPoint, WayPointIndex, FunctionString, FunctionArguments } ) - - local DCSTask - - local DCSScript = {} - DCSScript[#DCSScript+1] = "local MissionControllable = GROUP:Find( ... ) " - - if FunctionArguments and #FunctionArguments > 0 then - DCSScript[#DCSScript+1] = FunctionString .. "( MissionControllable, " .. table.concat( FunctionArguments, "," ) .. ")" - else - DCSScript[#DCSScript+1] = FunctionString .. "( MissionControllable )" - end - - DCSTask = self:TaskWrappedAction( - self:CommandDoScript( - table.concat( DCSScript ) - ), WayPointIndex - ) - - self:T3( DCSTask ) - - return DCSTask - -end - ---- Executes the WayPoint plan. --- The function gets a WayPoint parameter, that you can use to restart the mission at a specific WayPoint. --- Note that when the WayPoint parameter is used, the new start mission waypoint of the controllable will be 1! --- @param #CONTROLLABLE self --- @param #number WayPoint The WayPoint from where to execute the mission. --- @param #number WaitTime The amount seconds to wait before initiating the mission. --- @return #CONTROLLABLE -function CONTROLLABLE:WayPointExecute( WayPoint, WaitTime ) - self:F( { WayPoint, WaitTime } ) - - if not WayPoint then - WayPoint = 1 - end - - -- When starting the mission from a certain point, the TaskPoints need to be deleted before the given WayPoint. - for TaskPointID = 1, WayPoint - 1 do - table.remove( self.WayPoints, 1 ) - end - - self:T3( self.WayPoints ) - - self:SetTask( self:TaskRoute( self.WayPoints ), WaitTime ) - - return self -end - --- Message APIs--- **Wrapper** -- GROUP is a wrapper class for the DCS Class Group. --- --- === --- --- The @{#GROUP} class is a wrapper class to handle the DCS Group objects: --- --- * Support all DCS Group APIs. --- * Enhance with Group specific APIs not in the DCS Group API set. --- * Handle local Group Controller. --- * Manage the "state" of the DCS Group. --- --- **IMPORTANT: ONE SHOULD NEVER SANATIZE these GROUP OBJECT REFERENCES! (make the GROUP object references nil).** --- --- See the detailed documentation on the GROUP class. --- --- ==== --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-03-26: GROUP:**RouteRTB( RTBAirbase, Speed )** added. --- --- 2017-03-07: GROUP:**HandleEvent( Event, EventFunction )** added. --- 2017-03-07: GROUP:**UnHandleEvent( Event )** added. --- --- 2017-01-24: GROUP:**SetAIOnOff( AIOnOff )** added. --- --- 2017-01-24: GROUP:**SetAIOn()** added. --- --- 2017-01-24: GROUP:**SetAIOff()** added. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * [**Entropy**](https://forums.eagle.ru/member.php?u=111471), **Afinegan**: Came up with the requirement for AIOnOff(). --- --- ### Authors: --- --- * **FlightControl**: Design & Programming --- --- @module Group --- @author FlightControl - ---- @type GROUP --- @extends Wrapper.Controllable#CONTROLLABLE --- @field #string GroupName The name of the group. - ---- --- # GROUP class, extends @{Controllable#CONTROLLABLE} --- --- For each DCS Group object alive within a running mission, a GROUP wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Group objects are spawned (using the @{SPAWN} class). --- --- The GROUP class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference --- using the DCS Group or the DCS GroupName. --- --- Another thing to know is that GROUP objects do not "contain" the DCS Group object. --- The GROUP methods will reference the DCS Group object by name when it is needed during API execution. --- If the DCS Group object does not exist or is nil, the GROUP methods will return nil and log an exception in the DCS.log file. --- --- The GROUP class provides the following functions to retrieve quickly the relevant GROUP instance: --- --- * @{#GROUP.Find}(): Find a GROUP instance from the _DATABASE object using a DCS Group object. --- * @{#GROUP.FindByName}(): Find a GROUP instance from the _DATABASE object using a DCS Group name. --- --- ## GROUP task methods --- --- A GROUP is a @{Controllable}. See the @{Controllable} task methods section for a description of the task methods. --- --- ### Obtain the mission from group templates --- --- Group templates contain complete mission descriptions. Sometimes you want to copy a complete mission from a group and assign it to another: --- --- * @{Controllable#CONTROLLABLE.TaskMission}: (AIR + GROUND) Return a mission task from a mission template. --- --- ## GROUP Command methods --- --- A GROUP is a @{Controllable}. See the @{Controllable} command methods section for a description of the command methods. --- --- ## GROUP option methods --- --- A GROUP is a @{Controllable}. See the @{Controllable} option methods section for a description of the option methods. --- --- ## GROUP Zone validation methods --- --- The group can be validated whether it is completely, partly or not within a @{Zone}. --- Use the following Zone validation methods on the group: --- --- * @{#GROUP.IsCompletelyInZone}: Returns true if all units of the group are within a @{Zone}. --- * @{#GROUP.IsPartlyInZone}: Returns true if some units of the group are within a @{Zone}. --- * @{#GROUP.IsNotInZone}: Returns true if none of the group units of the group are within a @{Zone}. --- --- The zone can be of any @{Zone} class derived from @{Zone#ZONE_BASE}. So, these methods are polymorphic to the zones tested on. --- --- ## GROUP AI methods --- --- A GROUP has AI methods to control the AI activation. --- --- * @{#GROUP.SetAIOnOff}(): Turns the GROUP AI On or Off. --- * @{#GROUP.SetAIOn}(): Turns the GROUP AI On. --- * @{#GROUP.SetAIOff}(): Turns the GROUP AI Off. --- --- @field #GROUP GROUP -GROUP = { - ClassName = "GROUP", -} - ---- Create a new GROUP from a DCSGroup --- @param #GROUP self --- @param Dcs.DCSWrapper.Group#Group GroupName The DCS Group name --- @return #GROUP self -function GROUP:Register( GroupName ) - self = BASE:Inherit( self, CONTROLLABLE:New( GroupName ) ) - self:F2( GroupName ) - self.GroupName = GroupName - - self:SetEventPriority( 4 ) - return self -end - --- Reference methods. - ---- Find the GROUP wrapper class instance using the DCS Group. --- @param #GROUP self --- @param Dcs.DCSWrapper.Group#Group DCSGroup The DCS Group. --- @return #GROUP The GROUP. -function GROUP:Find( DCSGroup ) - - local GroupName = DCSGroup:getName() -- Wrapper.Group#GROUP - local GroupFound = _DATABASE:FindGroup( GroupName ) - return GroupFound -end - ---- Find the created GROUP using the DCS Group Name. --- @param #GROUP self --- @param #string GroupName The DCS Group Name. --- @return #GROUP The GROUP. -function GROUP:FindByName( GroupName ) - - local GroupFound = _DATABASE:FindGroup( GroupName ) - return GroupFound -end - --- DCS Group methods support. - ---- Returns the DCS Group. --- @param #GROUP self --- @return Dcs.DCSWrapper.Group#Group The DCS Group. -function GROUP:GetDCSObject() - local DCSGroup = Group.getByName( self.GroupName ) - - if DCSGroup then - return DCSGroup - end - - return nil -end - ---- Returns the @{DCSTypes#Position3} position vectors indicating the point and direction vectors in 3D of the POSITIONABLE within the mission. --- @param Wrapper.Positionable#POSITIONABLE self --- @return Dcs.DCSTypes#Position The 3D position vectors of the POSITIONABLE. --- @return #nil The POSITIONABLE is not existing or alive. -function GROUP:GetPositionVec3() -- Overridden from POSITIONABLE:GetPositionVec3() - self:F2( self.PositionableName ) - - local DCSPositionable = self:GetDCSObject() - - if DCSPositionable then - local PositionablePosition = DCSPositionable:getUnits()[1]:getPosition().p - self:T3( PositionablePosition ) - return PositionablePosition - end - - return nil -end - ---- Returns if the Group is alive. --- The Group must: --- --- * Exist at run-time. --- * Has at least one unit. --- --- When the first @{Unit} of the Group is active, it will return true. --- If the first @{Unit} of the Group is inactive, it will return false. --- --- @param #GROUP self --- @return #boolean true if the Group is alive and active. --- @return #boolean false if the Group is alive but inactive. --- @return #nil if the group does not exist anymore. -function GROUP:IsAlive() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() -- Dcs.DCSGroup#Group - - if DCSGroup then - if DCSGroup:isExist() then - local DCSUnit = DCSGroup:getUnit(1) -- Dcs.DCSUnit#Unit - if DCSUnit then - local GroupIsAlive = DCSUnit:isActive() - self:T3( GroupIsAlive ) - return GroupIsAlive - end - end - end - - return nil -end - ---- Destroys the DCS Group and all of its DCS Units. --- Note that this destroy method also raises a destroy event at run-time. --- So all event listeners will catch the destroy event of this DCS Group. --- @param #GROUP self -function GROUP:Destroy() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - self:CreateEventCrash( timer.getTime(), UnitData ) - end - DCSGroup:destroy() - DCSGroup = nil - end - - return nil -end - ---- Returns category of the DCS Group. --- @param #GROUP self --- @return Dcs.DCSWrapper.Group#Group.Category The category ID -function GROUP:GetCategory() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T3( GroupCategory ) - return GroupCategory - end - - return nil -end - ---- Returns the category name of the #GROUP. --- @param #GROUP self --- @return #string Category name = Helicopter, Airplane, Ground Unit, Ship -function GROUP:GetCategoryName() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - if DCSGroup then - local CategoryNames = { - [Group.Category.AIRPLANE] = "Airplane", - [Group.Category.HELICOPTER] = "Helicopter", - [Group.Category.GROUND] = "Ground Unit", - [Group.Category.SHIP] = "Ship", - } - local GroupCategory = DCSGroup:getCategory() - self:T3( GroupCategory ) - - return CategoryNames[GroupCategory] - end - - return nil -end - - ---- Returns the coalition of the DCS Group. --- @param #GROUP self --- @return Dcs.DCSCoalitionWrapper.Object#coalition.side The coalition side of the DCS Group. -function GROUP:GetCoalition() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - if DCSGroup then - local GroupCoalition = DCSGroup:getCoalition() - self:T3( GroupCoalition ) - return GroupCoalition - end - - return nil -end - ---- Returns the country of the DCS Group. --- @param #GROUP self --- @return Dcs.DCScountry#country.id The country identifier. --- @return #nil The DCS Group is not existing or alive. -function GROUP:GetCountry() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - if DCSGroup then - local GroupCountry = DCSGroup:getUnit(1):getCountry() - self:T3( GroupCountry ) - return GroupCountry - end - - return nil -end - ---- Returns the UNIT wrapper class with number UnitNumber. --- If the underlying DCS Unit does not exist, the method will return nil. . --- @param #GROUP self --- @param #number UnitNumber The number of the UNIT wrapper class to be returned. --- @return Wrapper.Unit#UNIT The UNIT wrapper class. -function GROUP:GetUnit( UnitNumber ) - self:F2( { self.GroupName, UnitNumber } ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local UnitFound = UNIT:Find( DCSGroup:getUnit( UnitNumber ) ) - self:T2( UnitFound ) - return UnitFound - end - - return nil -end - ---- Returns the DCS Unit with number UnitNumber. --- If the underlying DCS Unit does not exist, the method will return nil. . --- @param #GROUP self --- @param #number UnitNumber The number of the DCS Unit to be returned. --- @return Dcs.DCSWrapper.Unit#Unit The DCS Unit. -function GROUP:GetDCSUnit( UnitNumber ) - self:F2( { self.GroupName, UnitNumber } ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local DCSUnitFound = DCSGroup:getUnit( UnitNumber ) - self:T3( DCSUnitFound ) - return DCSUnitFound - end - - return nil -end - ---- Returns current size of the DCS Group. --- If some of the DCS Units of the DCS Group are destroyed the size of the DCS Group is changed. --- @param #GROUP self --- @return #number The DCS Group size. -function GROUP:GetSize() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupSize = DCSGroup:getSize() - self:T3( GroupSize ) - return GroupSize - end - - return nil -end - ---- ---- Returns the initial size of the DCS Group. --- If some of the DCS Units of the DCS Group are destroyed, the initial size of the DCS Group is unchanged. --- @param #GROUP self --- @return #number The DCS Group initial size. -function GROUP:GetInitialSize() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupInitialSize = DCSGroup:getInitialSize() - self:T3( GroupInitialSize ) - return GroupInitialSize - end - - return nil -end - - ---- Returns the DCS Units of the DCS Group. --- @param #GROUP self --- @return #table The DCS Units. -function GROUP:GetDCSUnits() - self:F2( { self.GroupName } ) - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local DCSUnits = DCSGroup:getUnits() - self:T3( DCSUnits ) - return DCSUnits - end - - return nil -end - - ---- Activates a GROUP. --- @param #GROUP self -function GROUP:Activate() - self:F2( { self.GroupName } ) - trigger.action.activateGroup( self:GetDCSObject() ) - return self:GetDCSObject() -end - - ---- Gets the type name of the group. --- @param #GROUP self --- @return #string The type name of the group. -function GROUP:GetTypeName() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupTypeName = DCSGroup:getUnit(1):getTypeName() - self:T3( GroupTypeName ) - return( GroupTypeName ) - end - - return nil -end - ---- Gets the CallSign of the first DCS Unit of the DCS Group. --- @param #GROUP self --- @return #string The CallSign of the first DCS Unit of the DCS Group. -function GROUP:GetCallsign() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupCallSign = DCSGroup:getUnit(1):getCallsign() - self:T3( GroupCallSign ) - return GroupCallSign - end - - return nil -end - ---- Returns the current point (Vec2 vector) of the first DCS Unit in the DCS Group. --- @param #GROUP self --- @return Dcs.DCSTypes#Vec2 Current Vec2 point of the first DCS Unit of the DCS Group. -function GROUP:GetVec2() - self:F2( self.GroupName ) - - local UnitPoint = self:GetUnit(1) - UnitPoint:GetVec2() - local GroupPointVec2 = UnitPoint:GetVec2() - self:T3( GroupPointVec2 ) - return GroupPointVec2 -end - ---- Returns the current Vec3 vector of the first DCS Unit in the GROUP. --- @param #GROUP self --- @return Dcs.DCSTypes#Vec3 Current Vec3 of the first DCS Unit of the GROUP. -function GROUP:GetVec3() - self:F2( self.GroupName ) - - local GroupVec3 = self:GetUnit(1):GetVec3() - self:T3( GroupVec3 ) - return GroupVec3 -end - ---- Returns a POINT_VEC2 object indicating the point in 2D of the first UNIT of the GROUP within the mission. --- @param #GROUP self --- @return Core.Point#POINT_VEC2 The 2D point vector of the first DCS Unit of the GROUP. --- @return #nil The first UNIT is not existing or alive. -function GROUP:GetPointVec2() - self:F2(self.GroupName) - - local FirstUnit = self:GetUnit(1) - - if FirstUnit then - local FirstUnitPointVec2 = FirstUnit:GetPointVec2() - self:T3(FirstUnitPointVec2) - return FirstUnitPointVec2 - end - - return nil -end - ---- Returns a random @{DCSTypes#Vec3} vector (point in 3D of the UNIT within the mission) within a range around the first UNIT of the GROUP. --- @param #GROUP self --- @param #number Radius --- @return Dcs.DCSTypes#Vec3 The random 3D point vector around the first UNIT of the GROUP. --- @return #nil The GROUP is invalid or empty --- @usage --- -- If Radius is ignored, returns the Dcs.DCSTypes#Vec3 of first UNIT of the GROUP -function GROUP:GetRandomVec3(Radius) - self:F2(self.GroupName) - - local FirstUnit = self:GetUnit(1) - - if FirstUnit then - local FirstUnitRandomPointVec3 = FirstUnit:GetRandomVec3(Radius) - self:T3(FirstUnitRandomPointVec3) - return FirstUnitRandomPointVec3 - end - - return nil -end - ---- Returns the mean heading of every UNIT in the GROUP in degrees --- @param #GROUP self --- @return #number mean heading of the GROUP --- @return #nil The first UNIT is not existing or alive. -function GROUP:GetHeading() - self:F2(self.GroupName) - - local GroupSize = self:GetSize() - local HeadingAccumulator = 0 - - if GroupSize then - for i = 1, GroupSize do - HeadingAccumulator = HeadingAccumulator + self:GetUnit(i):GetHeading() - end - return math.floor(HeadingAccumulator / GroupSize) - end - - return nil - -end - -do -- Is Zone methods - ---- Returns true if all units of the group are within a @{Zone}. --- @param #GROUP self --- @param Core.Zone#ZONE_BASE Zone The zone to test. --- @return #boolean Returns true if the Group is completely within the @{Zone#ZONE_BASE} -function GROUP:IsCompletelyInZone( Zone ) - self:F2( { self.GroupName, Zone } ) - - for UnitID, UnitData in pairs( self:GetUnits() ) do - local Unit = UnitData -- Wrapper.Unit#UNIT - if Zone:IsVec3InZone( Unit:GetVec3() ) then - else - return false - end - end - - return true -end - ---- Returns true if some units of the group are within a @{Zone}. --- @param #GROUP self --- @param Core.Zone#ZONE_BASE Zone The zone to test. --- @return #boolean Returns true if the Group is partially within the @{Zone#ZONE_BASE} -function GROUP:IsPartlyInZone( Zone ) - self:F2( { self.GroupName, Zone } ) - - local PartlyInZone = false - - for UnitID, UnitData in pairs( self:GetUnits() ) do - local Unit = UnitData -- Wrapper.Unit#UNIT - if Zone:IsVec3InZone( Unit:GetVec3() ) then - PartlyInZone = true - else - -- So, if there were groups in the zone found, and suddenly one NOT in the zone, - -- then the group is partialy in the zone :-) - if PartlyInZone == true then - return true - end - end - end - - return false -end - ---- Returns true if none of the group units of the group are within a @{Zone}. --- @param #GROUP self --- @param Core.Zone#ZONE_BASE Zone The zone to test. --- @return #boolean Returns true if the Group is not within the @{Zone#ZONE_BASE} -function GROUP:IsNotInZone( Zone ) - self:F2( { self.GroupName, Zone } ) - - for UnitID, UnitData in pairs( self:GetUnits() ) do - local Unit = UnitData -- Wrapper.Unit#UNIT - if Zone:IsVec3InZone( Unit:GetVec3() ) then - return false - end - end - - return true -end - ---- Returns if the group is of an air category. --- If the group is a helicopter or a plane, then this method will return true, otherwise false. --- @param #GROUP self --- @return #boolean Air category evaluation result. -function GROUP:IsAir() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local IsAirResult = DCSGroup:getCategory() == Group.Category.AIRPLANE or DCSGroup:getCategory() == Group.Category.HELICOPTER - self:T3( IsAirResult ) - return IsAirResult - end - - return nil -end - ---- Returns if the DCS Group contains Helicopters. --- @param #GROUP self --- @return #boolean true if DCS Group contains Helicopters. -function GROUP:IsHelicopter() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.HELICOPTER - end - - return nil -end - ---- Returns if the DCS Group contains AirPlanes. --- @param #GROUP self --- @return #boolean true if DCS Group contains AirPlanes. -function GROUP:IsAirPlane() - self:F2() - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.AIRPLANE - end - - return nil -end - ---- Returns if the DCS Group contains Ground troops. --- @param #GROUP self --- @return #boolean true if DCS Group contains Ground troops. -function GROUP:IsGround() - self:F2() - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.GROUND - end - - return nil -end - ---- Returns if the DCS Group contains Ships. --- @param #GROUP self --- @return #boolean true if DCS Group contains Ships. -function GROUP:IsShip() - self:F2() - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupCategory = DCSGroup:getCategory() - self:T2( GroupCategory ) - return GroupCategory == Group.Category.SHIP - end - - return nil -end - ---- Returns if all units of the group are on the ground or landed. --- If all units of this group are on the ground, this function will return true, otherwise false. --- @param #GROUP self --- @return #boolean All units on the ground result. -function GROUP:AllOnGround() - self:F2() - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local AllOnGroundResult = true - - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - if UnitData:inAir() then - AllOnGroundResult = false - end - end - - self:T3( AllOnGroundResult ) - return AllOnGroundResult - end - - return nil -end - -end - -do -- AI methods - - --- Turns the AI On or Off for the GROUP. - -- @param #GROUP self - -- @param #boolean AIOnOff The value true turns the AI On, the value false turns the AI Off. - -- @return #GROUP The GROUP. - function GROUP:SetAIOnOff( AIOnOff ) - - local DCSGroup = self:GetDCSObject() -- Dcs.DCSGroup#Group - - if DCSGroup then - local DCSController = DCSGroup:getController() -- Dcs.DCSController#Controller - if DCSController then - DCSController:setOnOff( AIOnOff ) - return self - end - end - - return nil - end - - --- Turns the AI On for the GROUP. - -- @param #GROUP self - -- @return #GROUP The GROUP. - function GROUP:SetAIOn() - - return self:SetAIOnOff( true ) - end - - --- Turns the AI Off for the GROUP. - -- @param #GROUP self - -- @return #GROUP The GROUP. - function GROUP:SetAIOff() - - return self:SetAIOnOff( false ) - end - -end - - - ---- Returns the current maximum velocity of the group. --- Each unit within the group gets evaluated, and the maximum velocity (= the unit which is going the fastest) is returned. --- @param #GROUP self --- @return #number Maximum velocity found. -function GROUP:GetMaxVelocity() - self:F2() - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local GroupVelocityMax = 0 - - for Index, UnitData in pairs( DCSGroup:getUnits() ) do - - local UnitVelocityVec3 = UnitData:getVelocity() - local UnitVelocity = math.abs( UnitVelocityVec3.x ) + math.abs( UnitVelocityVec3.y ) + math.abs( UnitVelocityVec3.z ) - - if UnitVelocity > GroupVelocityMax then - GroupVelocityMax = UnitVelocity - end - end - - return GroupVelocityMax - end - - return nil -end - ---- Returns the current minimum height of the group. --- Each unit within the group gets evaluated, and the minimum height (= the unit which is the lowest elevated) is returned. --- @param #GROUP self --- @return #number Minimum height found. -function GROUP:GetMinHeight() - self:F2() - -end - ---- Returns the current maximum height of the group. --- Each unit within the group gets evaluated, and the maximum height (= the unit which is the highest elevated) is returned. --- @param #GROUP self --- @return #number Maximum height found. -function GROUP:GetMaxHeight() - self:F2() - -end - --- SPAWNING - ---- Respawn the @{GROUP} using a (tweaked) template of the Group. --- The template must be retrieved with the @{Group#GROUP.GetTemplate}() function. --- The template contains all the definitions as declared within the mission file. --- To understand templates, do the following: --- --- * unpack your .miz file into a directory using 7-zip. --- * browse in the directory created to the file **mission**. --- * open the file and search for the country group definitions. --- --- Your group template will contain the fields as described within the mission file. --- --- This function will: --- --- * Get the current position and heading of the group. --- * When the group is alive, it will tweak the template x, y and heading coordinates of the group and the embedded units to the current units positions. --- * Then it will destroy the current alive group. --- * And it will respawn the group using your new template definition. --- @param Wrapper.Group#GROUP self --- @param #table Template The template of the Group retrieved with GROUP:GetTemplate() -function GROUP:Respawn( Template ) - - local Vec3 = self:GetVec3() - Template.x = Vec3.x - Template.y = Vec3.z - --Template.x = nil - --Template.y = nil - - self:E( #Template.units ) - for UnitID, UnitData in pairs( self:GetUnits() ) do - local GroupUnit = UnitData -- Wrapper.Unit#UNIT - self:E( GroupUnit:GetName() ) - if GroupUnit:IsAlive() then - local GroupUnitVec3 = GroupUnit:GetVec3() - local GroupUnitHeading = GroupUnit:GetHeading() - Template.units[UnitID].alt = GroupUnitVec3.y - Template.units[UnitID].x = GroupUnitVec3.x - Template.units[UnitID].y = GroupUnitVec3.z - Template.units[UnitID].heading = GroupUnitHeading - self:E( { UnitID, Template.units[UnitID], Template.units[UnitID] } ) - end - end - - self:Destroy() - _DATABASE:Spawn( Template ) -end - ---- Returns the group template from the @{DATABASE} (_DATABASE object). --- @param #GROUP self --- @return #table -function GROUP:GetTemplate() - local GroupName = self:GetName() - self:E( GroupName ) - return _DATABASE:GetGroupTemplate( GroupName ) -end - ---- Sets the controlled status in a Template. --- @param #GROUP self --- @param #boolean Controlled true is controlled, false is uncontrolled. --- @return #table -function GROUP:SetTemplateControlled( Template, Controlled ) - Template.uncontrolled = not Controlled - return Template -end - ---- Sets the CountryID of the group in a Template. --- @param #GROUP self --- @param Dcs.DCScountry#country.id CountryID The country ID. --- @return #table -function GROUP:SetTemplateCountry( Template, CountryID ) - Template.CountryID = CountryID - return Template -end - ---- Sets the CoalitionID of the group in a Template. --- @param #GROUP self --- @param Dcs.DCSCoalitionWrapper.Object#coalition.side CoalitionID The coalition ID. --- @return #table -function GROUP:SetTemplateCoalition( Template, CoalitionID ) - Template.CoalitionID = CoalitionID - return Template -end - - - - ---- Return the mission template of the group. --- @param #GROUP self --- @return #table The MissionTemplate -function GROUP:GetTaskMission() - self:F2( self.GroupName ) - - return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template ) -end - ---- Return the mission route of the group. --- @param #GROUP self --- @return #table The mission route defined by points. -function GROUP:GetTaskRoute() - self:F2( self.GroupName ) - - return routines.utils.deepCopy( _DATABASE.Templates.Groups[self.GroupName].Template.route.points ) -end - ---- Return the route of a group by using the @{Database#DATABASE} class. --- @param #GROUP self --- @param #number Begin The route point from where the copy will start. The base route point is 0. --- @param #number End The route point where the copy will end. The End point is the last point - the End point. The last point has base 0. --- @param #boolean Randomize Randomization of the route, when true. --- @param #number Radius When randomization is on, the randomization is within the radius. -function GROUP:CopyRoute( Begin, End, Randomize, Radius ) - self:F2( { Begin, End } ) - - local Points = {} - - -- Could be a Spawned Group - local GroupName = string.match( self:GetName(), ".*#" ) - if GroupName then - GroupName = GroupName:sub( 1, -2 ) - else - GroupName = self:GetName() - end - - self:T3( { GroupName } ) - - local Template = _DATABASE.Templates.Groups[GroupName].Template - - if Template then - if not Begin then - Begin = 0 - end - if not End then - End = 0 - end - - for TPointID = Begin + 1, #Template.route.points - End do - if Template.route.points[TPointID] then - Points[#Points+1] = routines.utils.deepCopy( Template.route.points[TPointID] ) - if Randomize then - if not Radius then - Radius = 500 - end - Points[#Points].x = Points[#Points].x + math.random( Radius * -1, Radius ) - Points[#Points].y = Points[#Points].y + math.random( Radius * -1, Radius ) - end - end - end - return Points - else - error( "Template not found for Group : " .. GroupName ) - end - - return nil -end - ---- Calculate the maxium A2G threat level of the Group. --- @param #GROUP self -function GROUP:CalculateThreatLevelA2G() - - local MaxThreatLevelA2G = 0 - for UnitName, UnitData in pairs( self:GetUnits() ) do - local ThreatUnit = UnitData -- Wrapper.Unit#UNIT - local ThreatLevelA2G = ThreatUnit:GetThreatLevel() - if ThreatLevelA2G > MaxThreatLevelA2G then - MaxThreatLevelA2G = ThreatLevelA2G - end - end - - self:T3( MaxThreatLevelA2G ) - return MaxThreatLevelA2G -end - ---- Returns true if the first unit of the GROUP is in the air. --- @param Wrapper.Group#GROUP self --- @return #boolean true if in the first unit of the group is in the air. --- @return #nil The GROUP is not existing or not alive. -function GROUP:InAir() - self:F2( self.GroupName ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - local DCSUnit = DCSGroup:getUnit(1) - if DCSUnit then - local GroupInAir = DCSGroup:getUnit(1):inAir() - self:T3( GroupInAir ) - return GroupInAir - end - end - - return nil -end - -do -- Route methods - - --- (AIR) Return the Group to an @{Airbase#AIRBASE}. - -- The following things are to be taken into account: - -- - -- * The group is respawned to achieve the RTB, there may be side artefacts as a result of this. (Like weapons suddenly come back). - -- * A group consisting out of more than one unit, may rejoin formation when respawned. - -- * A speed can be given in km/h. If no speed is specified, the maximum speed of the first unit will be taken to return to base. - -- * When there is no @{Airbase} object specified, the group will return to the home base if the route of the group is pinned at take-off or at landing to a base. - -- * When there is no @{Airbase} object specified and the group route is not pinned to any airbase, it will return to the nearest airbase. - -- - -- @param #GROUP self - -- @param Wrapper.Airbase#AIRBASE RTBAirbase (optional) The @{Airbase} to return to. If blank, the controllable will return to the nearest friendly airbase. - -- @param #number Speed (optional) The Speed, if no Speed is given, the maximum Speed of the first unit is selected. - -- @return #GROUP - function GROUP:RouteRTB( RTBAirbase, Speed ) - self:F2( { RTBAirbase, Speed } ) - - local DCSGroup = self:GetDCSObject() - - if DCSGroup then - - if RTBAirbase then - - local GroupPoint = self:GetVec2() - local GroupVelocity = self:GetUnit(1):GetDesc().speedMax - - local PointFrom = {} - PointFrom.x = GroupPoint.x - PointFrom.y = GroupPoint.y - PointFrom.type = "Turning Point" - PointFrom.action = "Turning Point" - PointFrom.speed = GroupVelocity - - - local PointTo = {} - local AirbasePointVec2 = RTBAirbase:GetPointVec2() - local AirbaseAirPoint = AirbasePointVec2:RoutePointAir( - POINT_VEC3.RoutePointAltType.BARO, - "Land", - "Landing", - Speed or self:GetUnit(1):GetDesc().speedMax - ) - - AirbaseAirPoint["airdromeId"] = RTBAirbase:GetID() - AirbaseAirPoint["speed_locked"] = true, - - self:E(AirbaseAirPoint ) - - local Points = { PointFrom, AirbaseAirPoint } - - self:T3( Points ) - - local Template = self:GetTemplate() - Template.route.points = Points - self:Respawn( Template ) - - self:Route( Points ) - - self:Respawn(Template) - else - self:ClearTasks() - end - end - - return self - end - -end - -function GROUP:OnReSpawn( ReSpawnFunction ) - - self.ReSpawnFunction = ReSpawnFunction -end - -do -- Event Handling - - --- Subscribe to a DCS Event. - -- @param #GROUP self - -- @param Core.Event#EVENTS Event - -- @param #function EventFunction (optional) The function to be called when the event occurs for the GROUP. - -- @return #GROUP - function GROUP:HandleEvent( Event, EventFunction ) - - self:EventDispatcher():OnEventForGroup( self:GetName(), EventFunction, self, Event ) - - return self - end - - --- UnSubscribe to a DCS event. - -- @param #GROUP self - -- @param Core.Event#EVENTS Event - -- @return #GROUP - function GROUP:UnHandleEvent( Event ) - - self:EventDispatcher():RemoveForGroup( self:GetName(), self, Event ) - - return self - end - -end - -do -- Players - - --- Get player names - -- @param #GROUP self - -- @return #table The group has players, an array of player names is returned. - -- @return #nil The group has no players - function GROUP:GetPlayerNames() - - local PlayerNames = nil - - local Units = self:GetUnits() - for UnitID, UnitData in pairs( Units ) do - local Unit = UnitData -- Wrapper.Unit#UNIT - local PlayerName = Unit:GetPlayerName() - if PlayerName and PlayerName ~= "" then - PlayerNames = PlayerNames or {} - table.insert( PlayerNames, PlayerName ) - end - end - - self:F( PlayerNames ) - return PlayerNames - end - -end--- **Wrapper** - UNIT is a wrapper class for the DCS Class Unit. --- --- === --- --- The @{#UNIT} class is a wrapper class to handle the DCS Unit objects: --- --- * Support all DCS Unit APIs. --- * Enhance with Unit specific APIs not in the DCS Unit API set. --- * Handle local Unit Controller. --- * Manage the "state" of the DCS Unit. --- --- @module Unit - ---- @type UNIT --- @extends Wrapper.Controllable#CONTROLLABLE - ---- --- # UNIT class, extends @{Controllable#CONTROLLABLE} --- --- For each DCS Unit object alive within a running mission, a UNIT wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts), and dynamically when new DCS Unit objects are spawned (using the @{SPAWN} class). --- --- The UNIT class **does not contain a :New()** method, rather it provides **:Find()** methods to retrieve the object reference --- using the DCS Unit or the DCS UnitName. --- --- Another thing to know is that UNIT objects do not "contain" the DCS Unit object. --- The UNIT methods will reference the DCS Unit object by name when it is needed during API execution. --- If the DCS Unit object does not exist or is nil, the UNIT methods will return nil and log an exception in the DCS.log file. --- --- The UNIT class provides the following functions to retrieve quickly the relevant UNIT instance: --- --- * @{#UNIT.Find}(): Find a UNIT instance from the _DATABASE object using a DCS Unit object. --- * @{#UNIT.FindByName}(): Find a UNIT instance from the _DATABASE object using a DCS Unit name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these UNIT OBJECT REFERENCES! (make the UNIT object references nil). --- --- ## DCS UNIT APIs --- --- The DCS Unit APIs are used extensively within MOOSE. The UNIT class has for each DCS Unit API a corresponding method. --- To be able to distinguish easily in your code the difference between a UNIT API call and a DCS Unit API call, --- the first letter of the method is also capitalized. So, by example, the DCS Unit method @{DCSWrapper.Unit#Unit.getName}() --- is implemented in the UNIT class as @{#UNIT.GetName}(). --- --- ## Smoke, Flare Units --- --- The UNIT class provides methods to smoke or flare units easily. --- The @{#UNIT.SmokeBlue}(), @{#UNIT.SmokeGreen}(),@{#UNIT.SmokeOrange}(), @{#UNIT.SmokeRed}(), @{#UNIT.SmokeRed}() methods --- will smoke the unit in the corresponding color. Note that smoking a unit is done at the current position of the DCS Unit. --- When the DCS Unit moves for whatever reason, the smoking will still continue! --- The @{#UNIT.FlareGreen}(), @{#UNIT.FlareRed}(), @{#UNIT.FlareWhite}(), @{#UNIT.FlareYellow}() --- methods will fire off a flare in the air with the corresponding color. Note that a flare is a one-off shot and its effect is of very short duration. --- --- ## Location Position, Point --- --- The UNIT class provides methods to obtain the current point or position of the DCS Unit. --- The @{#UNIT.GetPointVec2}(), @{#UNIT.GetVec3}() will obtain the current **location** of the DCS Unit in a Vec2 (2D) or a **point** in a Vec3 (3D) vector respectively. --- If you want to obtain the complete **3D position** including ori�ntation and direction vectors, consult the @{#UNIT.GetPositionVec3}() method respectively. --- --- ## Test if alive --- --- The @{#UNIT.IsAlive}(), @{#UNIT.IsActive}() methods determines if the DCS Unit is alive, meaning, it is existing and active. --- --- ## Test for proximity --- --- The UNIT class contains methods to test the location or proximity against zones or other objects. --- --- ### Zones --- --- To test whether the Unit is within a **zone**, use the @{#UNIT.IsInZone}() or the @{#UNIT.IsNotInZone}() methods. Any zone can be tested on, but the zone must be derived from @{Zone#ZONE_BASE}. --- --- ### Units --- --- Test if another DCS Unit is within a given radius of the current DCS Unit, use the @{#UNIT.OtherUnitInRadius}() method. --- --- @field #UNIT UNIT -UNIT = { - ClassName="UNIT", -} - - ---- Unit.SensorType --- @type Unit.SensorType --- @field OPTIC --- @field RADAR --- @field IRST --- @field RWR - - --- Registration. - ---- Create a new UNIT from DCSUnit. --- @param #UNIT self --- @param #string UnitName The name of the DCS unit. --- @return #UNIT -function UNIT:Register( UnitName ) - local self = BASE:Inherit( self, CONTROLLABLE:New( UnitName ) ) - self.UnitName = UnitName - - self:SetEventPriority( 3 ) - return self -end - --- Reference methods. - ---- Finds a UNIT from the _DATABASE using a DCSUnit object. --- @param #UNIT self --- @param Dcs.DCSWrapper.Unit#Unit DCSUnit An existing DCS Unit object reference. --- @return #UNIT self -function UNIT:Find( DCSUnit ) - - local UnitName = DCSUnit:getName() - local UnitFound = _DATABASE:FindUnit( UnitName ) - return UnitFound -end - ---- Find a UNIT in the _DATABASE using the name of an existing DCS Unit. --- @param #UNIT self --- @param #string UnitName The Unit Name. --- @return #UNIT self -function UNIT:FindByName( UnitName ) - - local UnitFound = _DATABASE:FindUnit( UnitName ) - return UnitFound -end - ---- Return the name of the UNIT. --- @param #UNIT self --- @return #string The UNIT name. -function UNIT:Name() - - return self.UnitName -end - - ---- @param #UNIT self --- @return Dcs.DCSWrapper.Unit#Unit -function UNIT:GetDCSObject() - - local DCSUnit = Unit.getByName( self.UnitName ) - - if DCSUnit then - return DCSUnit - end - - return nil -end - ---- Respawn the @{Unit} using a (tweaked) template of the parent Group. --- --- This function will: --- --- * Get the current position and heading of the group. --- * When the unit is alive, it will tweak the template x, y and heading coordinates of the group and the embedded units to the current units positions. --- * Then it will respawn the re-modelled group. --- --- @param #UNIT self --- @param Dcs.DCSTypes#Vec3 SpawnVec3 The position where to Spawn the new Unit at. --- @param #number Heading The heading of the unit respawn. -function UNIT:ReSpawn( SpawnVec3, Heading ) - - local SpawnGroupTemplate = UTILS.DeepCopy( _DATABASE:GetGroupTemplateFromUnitName( self:Name() ) ) - self:T( SpawnGroupTemplate ) - - local SpawnGroup = self:GetGroup() - - if SpawnGroup then - - local Vec3 = SpawnGroup:GetVec3() - SpawnGroupTemplate.x = SpawnVec3.x - SpawnGroupTemplate.y = SpawnVec3.z - - self:E( #SpawnGroupTemplate.units ) - for UnitID, UnitData in pairs( SpawnGroup:GetUnits() ) do - local GroupUnit = UnitData -- #UNIT - self:E( GroupUnit:GetName() ) - if GroupUnit:IsAlive() then - local GroupUnitVec3 = GroupUnit:GetVec3() - local GroupUnitHeading = GroupUnit:GetHeading() - SpawnGroupTemplate.units[UnitID].alt = GroupUnitVec3.y - SpawnGroupTemplate.units[UnitID].x = GroupUnitVec3.x - SpawnGroupTemplate.units[UnitID].y = GroupUnitVec3.z - SpawnGroupTemplate.units[UnitID].heading = GroupUnitHeading - self:E( { UnitID, SpawnGroupTemplate.units[UnitID], SpawnGroupTemplate.units[UnitID] } ) - end - end - end - - for UnitTemplateID, UnitTemplateData in pairs( SpawnGroupTemplate.units ) do - self:T( UnitTemplateData.name ) - if UnitTemplateData.name == self:Name() then - self:T("Adjusting") - SpawnGroupTemplate.units[UnitTemplateID].alt = SpawnVec3.y - SpawnGroupTemplate.units[UnitTemplateID].x = SpawnVec3.x - SpawnGroupTemplate.units[UnitTemplateID].y = SpawnVec3.z - SpawnGroupTemplate.units[UnitTemplateID].heading = Heading - self:E( { UnitTemplateID, SpawnGroupTemplate.units[UnitTemplateID], SpawnGroupTemplate.units[UnitTemplateID] } ) - else - self:E( SpawnGroupTemplate.units[UnitTemplateID].name ) - local GroupUnit = UNIT:FindByName( SpawnGroupTemplate.units[UnitTemplateID].name ) -- #UNIT - if GroupUnit and GroupUnit:IsAlive() then - local GroupUnitVec3 = GroupUnit:GetVec3() - local GroupUnitHeading = GroupUnit:GetHeading() - UnitTemplateData.alt = GroupUnitVec3.y - UnitTemplateData.x = GroupUnitVec3.x - UnitTemplateData.y = GroupUnitVec3.z - UnitTemplateData.heading = GroupUnitHeading - else - if SpawnGroupTemplate.units[UnitTemplateID].name ~= self:Name() then - self:T("nilling") - SpawnGroupTemplate.units[UnitTemplateID].delete = true - end - end - end - end - - -- Remove obscolete units from the group structure - local i = 1 - while i <= #SpawnGroupTemplate.units do - - local UnitTemplateData = SpawnGroupTemplate.units[i] - self:T( UnitTemplateData.name ) - - if UnitTemplateData.delete then - table.remove( SpawnGroupTemplate.units, i ) - else - i = i + 1 - end - end - - _DATABASE:Spawn( SpawnGroupTemplate ) -end - - - ---- Returns if the unit is activated. --- @param #UNIT self --- @return #boolean true if Unit is activated. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:IsActive() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - - local UnitIsActive = DCSUnit:isActive() - return UnitIsActive - end - - return nil -end - ---- Returns if the Unit is alive. --- If the Unit is not alive, nil is returned. --- If the Unit is alive and active, true is returned. --- If the Unit is alive but not active, false is returned. --- @param #UNIT self --- @return #boolean true if Unit is alive and active. --- @return #boolean false if Unit is alive but not active. --- @return #nil if the Unit is not existing or is not alive. -function UNIT:IsAlive() - self:F3( self.UnitName ) - - local DCSUnit = self:GetDCSObject() -- Dcs.DCSUnit#Unit - - if DCSUnit then - local UnitIsAlive = DCSUnit:isExist() and DCSUnit:isActive() - return UnitIsAlive - end - - return nil -end - - - ---- Returns the Unit's callsign - the localized string. --- @param #UNIT self --- @return #string The Callsign of the Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetCallsign() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitCallSign = DCSUnit:getCallsign() - return UnitCallSign - end - - self:E( self.ClassName .. " " .. self.UnitName .. " not found!" ) - return nil -end - - ---- Returns name of the player that control the unit or nil if the unit is controlled by A.I. --- @param #UNIT self --- @return #string Player Name --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPlayerName() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - - local PlayerName = DCSUnit:getPlayerName() - if PlayerName == nil then - PlayerName = "" - end - return PlayerName - end - - return nil -end - ---- Returns the unit's number in the group. --- The number is the same number the unit has in ME. --- It may not be changed during the mission. --- If any unit in the group is destroyed, the numbers of another units will not be changed. --- @param #UNIT self --- @return #number The Unit number. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetNumber() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitNumber = DCSUnit:getNumber() - return UnitNumber - end - - return nil -end - ---- Returns the unit's group if it exist and nil otherwise. --- @param Wrapper.Unit#UNIT self --- @return Wrapper.Group#GROUP The Group of the Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetGroup() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitGroup = GROUP:Find( DCSUnit:getGroup() ) - return UnitGroup - end - - return nil -end - - --- Need to add here functions to check if radar is on and which object etc. - ---- Returns the prefix name of the DCS Unit. A prefix name is a part of the name before a '#'-sign. --- DCS Units spawned with the @{SPAWN} class contain a '#'-sign to indicate the end of the (base) DCS Unit name. --- The spawn sequence number and unit number are contained within the name after the '#' sign. --- @param #UNIT self --- @return #string The name of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetPrefix() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitPrefix = string.match( self.UnitName, ".*#" ):sub( 1, -2 ) - self:T3( UnitPrefix ) - return UnitPrefix - end - - return nil -end - ---- Returns the Unit's ammunition. --- @param #UNIT self --- @return Dcs.DCSWrapper.Unit#Unit.Ammo --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetAmmo() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitAmmo = DCSUnit:getAmmo() - return UnitAmmo - end - - return nil -end - ---- Returns the unit sensors. --- @param #UNIT self --- @return Dcs.DCSWrapper.Unit#Unit.Sensors --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetSensors() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitSensors = DCSUnit:getSensors() - return UnitSensors - end - - return nil -end - --- Need to add here a function per sensortype --- unit:hasSensors(Unit.SensorType.RADAR, Unit.RadarType.AS) - ---- Returns if the unit has sensors of a certain type. --- @param #UNIT self --- @return #boolean returns true if the unit has specified types of sensors. This function is more preferable than Unit.getSensors() if you don't want to get information about all the unit's sensors, and just want to check if the unit has specified types of sensors. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:HasSensors( ... ) - self:F2( arg ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local HasSensors = DCSUnit:hasSensors( unpack( arg ) ) - return HasSensors - end - - return nil -end - ---- Returns if the unit is SEADable. --- @param #UNIT self --- @return #boolean returns true if the unit is SEADable. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:HasSEAD() - self:F2() - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitSEADAttributes = DCSUnit:getDesc().attributes - - local HasSEAD = false - if UnitSEADAttributes["RADAR_BAND1_FOR_ARM"] and UnitSEADAttributes["RADAR_BAND1_FOR_ARM"] == true or - UnitSEADAttributes["RADAR_BAND2_FOR_ARM"] and UnitSEADAttributes["RADAR_BAND2_FOR_ARM"] == true then - HasSEAD = true - end - return HasSEAD - end - - return nil -end - ---- Returns two values: --- --- * First value indicates if at least one of the unit's radar(s) is on. --- * Second value is the object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. --- @param #UNIT self --- @return #boolean Indicates if at least one of the unit's radar(s) is on. --- @return Dcs.DCSWrapper.Object#Object The object of the radar's interest. Not nil only if at least one radar of the unit is tracking a target. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetRadar() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitRadarOn, UnitRadarObject = DCSUnit:getRadar() - return UnitRadarOn, UnitRadarObject - end - - return nil, nil -end - ---- Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks. If there are additional fuel tanks the value may be greater than 1.0. --- @param #UNIT self --- @return #number The relative amount of fuel (from 0.0 to 1.0). --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetFuel() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitFuel = DCSUnit:getFuel() - return UnitFuel - end - - return nil -end - ---- Returns the UNIT in a UNIT list of one element. --- @param #UNIT self --- @return #list The UNITs wrappers. -function UNIT:GetUnits() - self:F2( { self.UnitName } ) - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local DCSUnits = DCSUnit:getUnits() - local Units = {} - Units[1] = UNIT:Find( DCSUnit ) - self:T3( Units ) - return Units - end - - return nil -end - - ---- Returns the unit's health. Dead units has health <= 1.0. --- @param #UNIT self --- @return #number The Unit's health value. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetLife() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitLife = DCSUnit:getLife() - return UnitLife - end - - return nil -end - ---- Returns the Unit's initial health. --- @param #UNIT self --- @return #number The Unit's initial health value. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:GetLife0() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitLife0 = DCSUnit:getLife0() - return UnitLife0 - end - - return nil -end - ---- Returns the category name of the #UNIT. --- @param #UNIT self --- @return #string Category name = Helicopter, Airplane, Ground Unit, Ship -function UNIT:GetCategoryName() - self:F3( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - if DCSUnit then - local CategoryNames = { - [Unit.Category.AIRPLANE] = "Airplane", - [Unit.Category.HELICOPTER] = "Helicopter", - [Unit.Category.GROUND_UNIT] = "Ground Unit", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - } - local UnitCategory = DCSUnit:getDesc().category - self:T3( UnitCategory ) - - return CategoryNames[UnitCategory] - end - - return nil -end - - ---- Returns the Unit's A2G threat level on a scale from 1 to 10 ... --- The following threat levels are foreseen: --- --- * Threat level 0: Unit is unarmed. --- * Threat level 1: Unit is infantry. --- * Threat level 2: Unit is an infantry vehicle. --- * Threat level 3: Unit is ground artillery. --- * Threat level 4: Unit is a tank. --- * Threat level 5: Unit is a modern tank or ifv with ATGM. --- * Threat level 6: Unit is a AAA. --- * Threat level 7: Unit is a SAM or manpad, IR guided. --- * Threat level 8: Unit is a Short Range SAM, radar guided. --- * Threat level 9: Unit is a Medium Range SAM, radar guided. --- * Threat level 10: Unit is a Long Range SAM, radar guided. --- @param #UNIT self -function UNIT:GetThreatLevel() - - local Attributes = self:GetDesc().attributes - self:T( Attributes ) - - local ThreatLevel = 0 - local ThreatText = "" - - if self:IsGround() then - - self:T( "Ground" ) - - local ThreatLevels = { - "Unarmed", - "Infantry", - "Old Tanks & APCs", - "Tanks & IFVs without ATGM", - "Tanks & IFV with ATGM", - "Modern Tanks", - "AAA", - "IR Guided SAMs", - "SR SAMs", - "MR SAMs", - "LR SAMs" - } - - - if Attributes["LR SAM"] then ThreatLevel = 10 - elseif Attributes["MR SAM"] then ThreatLevel = 9 - elseif Attributes["SR SAM"] and - not Attributes["IR Guided SAM"] then ThreatLevel = 8 - elseif ( Attributes["SR SAM"] or Attributes["MANPADS"] ) and - Attributes["IR Guided SAM"] then ThreatLevel = 7 - elseif Attributes["AAA"] then ThreatLevel = 6 - elseif Attributes["Modern Tanks"] then ThreatLevel = 5 - elseif ( Attributes["Tanks"] or Attributes["IFV"] ) and - Attributes["ATGM"] then ThreatLevel = 4 - elseif ( Attributes["Tanks"] or Attributes["IFV"] ) and - not Attributes["ATGM"] then ThreatLevel = 3 - elseif Attributes["Old Tanks"] or Attributes["APC"] or Attributes["Artillery"] then ThreatLevel = 2 - elseif Attributes["Infantry"] then ThreatLevel = 1 - end - - ThreatText = ThreatLevels[ThreatLevel+1] - end - - if self:IsAir() then - - self:T( "Air" ) - - local ThreatLevels = { - "Unarmed", - "Tanker", - "AWACS", - "Transport Helicpter", - "UAV", - "Bomber", - "Strategic Bomber", - "Attack Helicopter", - "Interceptor", - "Multirole Fighter", - "Fighter" - } - - - if Attributes["Fighters"] then ThreatLevel = 10 - elseif Attributes["Multirole fighters"] then ThreatLevel = 9 - elseif Attributes["Battleplanes"] then ThreatLevel = 8 - elseif Attributes["Attack helicopters"] then ThreatLevel = 7 - elseif Attributes["Strategic bombers"] then ThreatLevel = 6 - elseif Attributes["Bombers"] then ThreatLevel = 5 - elseif Attributes["UAVs"] then ThreatLevel = 4 - elseif Attributes["Transport helicopters"] then ThreatLevel = 3 - elseif Attributes["AWACS"] then ThreatLevel = 2 - elseif Attributes["Tankers"] then ThreatLevel = 1 - end - - ThreatText = ThreatLevels[ThreatLevel+1] - end - - if self:IsShip() then - - self:T( "Ship" ) - ---["Aircraft Carriers"] = {"Heavy armed ships",}, ---["Cruisers"] = {"Heavy armed ships",}, ---["Destroyers"] = {"Heavy armed ships",}, ---["Frigates"] = {"Heavy armed ships",}, ---["Corvettes"] = {"Heavy armed ships",}, ---["Heavy armed ships"] = {"Armed ships", "Armed Air Defence", "HeavyArmoredUnits",}, ---["Light armed ships"] = {"Armed ships","NonArmoredUnits"}, ---["Armed ships"] = {"Ships"}, ---["Unarmed ships"] = {"Ships","HeavyArmoredUnits",}, - - local ThreatLevels = { - "Unarmed ship", - "Light armed ships", - "Corvettes", - "", - "Frigates", - "", - "Cruiser", - "", - "Destroyer", - "", - "Aircraft Carrier" - } - - - if Attributes["Aircraft Carriers"] then ThreatLevel = 10 - elseif Attributes["Destroyers"] then ThreatLevel = 8 - elseif Attributes["Cruisers"] then ThreatLevel = 6 - elseif Attributes["Frigates"] then ThreatLevel = 4 - elseif Attributes["Corvettes"] then ThreatLevel = 2 - elseif Attributes["Light armed ships"] then ThreatLevel = 1 - end - - ThreatText = ThreatLevels[ThreatLevel+1] - end - - self:T2( ThreatLevel ) - return ThreatLevel, ThreatText - -end - - --- Is functions - ---- Returns true if the unit is within a @{Zone}. --- @param #UNIT self --- @param Core.Zone#ZONE_BASE Zone The zone to test. --- @return #boolean Returns true if the unit is within the @{Zone#ZONE_BASE} -function UNIT:IsInZone( Zone ) - self:F2( { self.UnitName, Zone } ) - - if self:IsAlive() then - local IsInZone = Zone:IsVec3InZone( self:GetVec3() ) - - self:T( { IsInZone } ) - return IsInZone - end - - return false -end - ---- Returns true if the unit is not within a @{Zone}. --- @param #UNIT self --- @param Core.Zone#ZONE_BASE Zone The zone to test. --- @return #boolean Returns true if the unit is not within the @{Zone#ZONE_BASE} -function UNIT:IsNotInZone( Zone ) - self:F2( { self.UnitName, Zone } ) - - if self:IsAlive() then - local IsInZone = not Zone:IsVec3InZone( self:GetVec3() ) - - self:T( { IsInZone } ) - return IsInZone - else - return false - end -end - - ---- Returns true if there is an **other** DCS Unit within a radius of the current 2D point of the DCS Unit. --- @param #UNIT self --- @param #UNIT AwaitUnit The other UNIT wrapper object. --- @param Radius The radius in meters with the DCS Unit in the centre. --- @return true If the other DCS Unit is within the radius of the 2D point of the DCS Unit. --- @return #nil The DCS Unit is not existing or alive. -function UNIT:OtherUnitInRadius( AwaitUnit, Radius ) - self:F2( { self.UnitName, AwaitUnit.UnitName, Radius } ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitVec3 = self:GetVec3() - local AwaitUnitVec3 = AwaitUnit:GetVec3() - - if (((UnitVec3.x - AwaitUnitVec3.x)^2 + (UnitVec3.z - AwaitUnitVec3.z)^2)^0.5 <= Radius) then - self:T3( "true" ) - return true - else - self:T3( "false" ) - return false - end - end - - return nil -end - - - ---- Signal a flare at the position of the UNIT. --- @param #UNIT self --- @param Utilities.Utils#FLARECOLOR FlareColor -function UNIT:Flare( FlareColor ) - self:F2() - trigger.action.signalFlare( self:GetVec3(), FlareColor , 0 ) -end - ---- Signal a white flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareWhite() - self:F2() - trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.White , 0 ) -end - ---- Signal a yellow flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareYellow() - self:F2() - trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.Yellow , 0 ) -end - ---- Signal a green flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareGreen() - self:F2() - trigger.action.signalFlare( self:GetVec3(), trigger.flareColor.Green , 0 ) -end - ---- Signal a red flare at the position of the UNIT. --- @param #UNIT self -function UNIT:FlareRed() - self:F2() - local Vec3 = self:GetVec3() - if Vec3 then - trigger.action.signalFlare( Vec3, trigger.flareColor.Red, 0 ) - end -end - ---- Smoke the UNIT. --- @param #UNIT self -function UNIT:Smoke( SmokeColor, Range ) - self:F2() - if Range then - trigger.action.smoke( self:GetRandomVec3( Range ), SmokeColor ) - else - trigger.action.smoke( self:GetVec3(), SmokeColor ) - end - -end - ---- Smoke the UNIT Green. --- @param #UNIT self -function UNIT:SmokeGreen() - self:F2() - trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Green ) -end - ---- Smoke the UNIT Red. --- @param #UNIT self -function UNIT:SmokeRed() - self:F2() - trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Red ) -end - ---- Smoke the UNIT White. --- @param #UNIT self -function UNIT:SmokeWhite() - self:F2() - trigger.action.smoke( self:GetVec3(), trigger.smokeColor.White ) -end - ---- Smoke the UNIT Orange. --- @param #UNIT self -function UNIT:SmokeOrange() - self:F2() - trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Orange ) -end - ---- Smoke the UNIT Blue. --- @param #UNIT self -function UNIT:SmokeBlue() - self:F2() - trigger.action.smoke( self:GetVec3(), trigger.smokeColor.Blue ) -end - --- Is methods - ---- Returns if the unit is of an air category. --- If the unit is a helicopter or a plane, then this method will return true, otherwise false. --- @param #UNIT self --- @return #boolean Air category evaluation result. -function UNIT:IsAir() - self:F2() - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitDescriptor = DCSUnit:getDesc() - self:T3( { UnitDescriptor.category, Unit.Category.AIRPLANE, Unit.Category.HELICOPTER } ) - - local IsAirResult = ( UnitDescriptor.category == Unit.Category.AIRPLANE ) or ( UnitDescriptor.category == Unit.Category.HELICOPTER ) - - self:T3( IsAirResult ) - return IsAirResult - end - - return nil -end - ---- Returns if the unit is of an ground category. --- If the unit is a ground vehicle or infantry, this method will return true, otherwise false. --- @param #UNIT self --- @return #boolean Ground category evaluation result. -function UNIT:IsGround() - self:F2() - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitDescriptor = DCSUnit:getDesc() - self:T3( { UnitDescriptor.category, Unit.Category.GROUND_UNIT } ) - - local IsGroundResult = ( UnitDescriptor.category == Unit.Category.GROUND_UNIT ) - - self:T3( IsGroundResult ) - return IsGroundResult - end - - return nil -end - ---- Returns if the unit is a friendly unit. --- @param #UNIT self --- @return #boolean IsFriendly evaluation result. -function UNIT:IsFriendly( FriendlyCoalition ) - self:F2() - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitCoalition = DCSUnit:getCoalition() - self:T3( { UnitCoalition, FriendlyCoalition } ) - - local IsFriendlyResult = ( UnitCoalition == FriendlyCoalition ) - - self:E( IsFriendlyResult ) - return IsFriendlyResult - end - - return nil -end - ---- Returns if the unit is of a ship category. --- If the unit is a ship, this method will return true, otherwise false. --- @param #UNIT self --- @return #boolean Ship category evaluation result. -function UNIT:IsShip() - self:F2() - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitDescriptor = DCSUnit:getDesc() - self:T3( { UnitDescriptor.category, Unit.Category.SHIP } ) - - local IsShipResult = ( UnitDescriptor.category == Unit.Category.SHIP ) - - self:T3( IsShipResult ) - return IsShipResult - end - - return nil -end - ---- Returns true if the UNIT is in the air. --- @param Wrapper.Positionable#UNIT self --- @return #boolean true if in the air. --- @return #nil The UNIT is not existing or alive. -function UNIT:InAir() - self:F2( self.UnitName ) - - local DCSUnit = self:GetDCSObject() - - if DCSUnit then - local UnitInAir = DCSUnit:inAir() - self:T3( UnitInAir ) - return UnitInAir - end - - return nil -end - -do -- Event Handling - - --- Subscribe to a DCS Event. - -- @param #UNIT self - -- @param Core.Event#EVENTS Event - -- @param #function EventFunction (optional) The function to be called when the event occurs for the unit. - -- @return #UNIT - function UNIT:HandleEvent( Event, EventFunction ) - - self:EventDispatcher():OnEventForUnit( self:GetName(), EventFunction, self, Event ) - - return self - end - - --- UnSubscribe to a DCS event. - -- @param #UNIT self - -- @param Core.Event#EVENTS Event - -- @return #UNIT - function UNIT:UnHandleEvent( Event ) - - self:EventDispatcher():RemoveForUnit( self:GetName(), self, Event ) - - return self - end - -end--- This module contains the CLIENT class. --- --- 1) @{Client#CLIENT} class, extends @{Unit#UNIT} --- =============================================== --- Clients are those **Units** defined within the Mission Editor that have the skillset defined as __Client__ or __Player__. --- Note that clients are NOT the same as Units, they are NOT necessarily alive. --- The @{Client#CLIENT} class is a wrapper class to handle the DCS Unit objects that have the skillset defined as __Client__ or __Player__: --- --- * Wraps the DCS Unit objects with skill level set to Player or Client. --- * Support all DCS Unit APIs. --- * Enhance with Unit specific APIs not in the DCS Group API set. --- * When player joins Unit, execute alive init logic. --- * Handles messages to players. --- * Manage the "state" of the DCS Unit. --- --- Clients are being used by the @{MISSION} class to follow players and register their successes. --- --- 1.1) CLIENT reference methods --- ----------------------------- --- For each DCS Unit having skill level Player or Client, a CLIENT wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts). --- --- The CLIENT class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference --- using the DCS Unit or the DCS UnitName. --- --- Another thing to know is that CLIENT objects do not "contain" the DCS Unit object. --- The CLIENT methods will reference the DCS Unit object by name when it is needed during API execution. --- If the DCS Unit object does not exist or is nil, the CLIENT methods will return nil and log an exception in the DCS.log file. --- --- The CLIENT class provides the following functions to retrieve quickly the relevant CLIENT instance: --- --- * @{#CLIENT.Find}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit object. --- * @{#CLIENT.FindByName}(): Find a CLIENT instance from the _DATABASE object using a DCS Unit name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these CLIENT OBJECT REFERENCES! (make the CLIENT object references nil). --- --- @module Client - ---- The CLIENT class --- @type CLIENT --- @extends Wrapper.Unit#UNIT -CLIENT = { - ONBOARDSIDE = { - NONE = 0, - LEFT = 1, - RIGHT = 2, - BACK = 3, - FRONT = 4 - }, - ClassName = "CLIENT", - ClientName = nil, - ClientAlive = false, - ClientTransport = false, - ClientBriefingShown = false, - _Menus = {}, - _Tasks = {}, - Messages = { - } -} - - ---- Finds a CLIENT from the _DATABASE using the relevant DCS Unit. --- @param #CLIENT self --- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. --- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. --- @return #CLIENT --- @usage --- -- Create new Clients. --- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) --- Mission:AddGoal( DeploySA6TroopsGoal ) --- --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) -function CLIENT:Find( DCSUnit, Error ) - local ClientName = DCSUnit:getName() - local ClientFound = _DATABASE:FindClient( ClientName ) - - if ClientFound then - ClientFound:F( ClientName ) - return ClientFound - end - - if not Error then - error( "CLIENT not found for: " .. ClientName ) - end -end - - ---- Finds a CLIENT from the _DATABASE using the relevant Client Unit Name. --- As an optional parameter, a briefing text can be given also. --- @param #CLIENT self --- @param #string ClientName Name of the DCS **Unit** as defined within the Mission Editor. --- @param #string ClientBriefing Text that describes the briefing of the mission when a Player logs into the Client. --- @param #boolean Error A flag that indicates whether an error should be raised if the CLIENT cannot be found. By default an error will be raised. --- @return #CLIENT --- @usage --- -- Create new Clients. --- local Mission = MISSIONSCHEDULER.AddMission( 'Russia Transport Troops SA-6', 'Operational', 'Transport troops from the control center to one of the SA-6 SAM sites to activate their operation.', 'Russia' ) --- Mission:AddGoal( DeploySA6TroopsGoal ) --- --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 1' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 3' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*HOT-Deploy Troops 2' ):Transport() ) --- Mission:AddClient( CLIENT:FindByName( 'RU MI-8MTV2*RAMP-Deploy Troops 4' ):Transport() ) -function CLIENT:FindByName( ClientName, ClientBriefing, Error ) - local ClientFound = _DATABASE:FindClient( ClientName ) - - if ClientFound then - ClientFound:F( { ClientName, ClientBriefing } ) - ClientFound:AddBriefing( ClientBriefing ) - ClientFound.MessageSwitch = true - - return ClientFound - end - - if not Error then - error( "CLIENT not found for: " .. ClientName ) - end -end - -function CLIENT:Register( ClientName ) - local self = BASE:Inherit( self, UNIT:Register( ClientName ) ) - - self:F( ClientName ) - self.ClientName = ClientName - self.MessageSwitch = true - self.ClientAlive2 = false - - --self.AliveCheckScheduler = routines.scheduleFunction( self._AliveCheckScheduler, { self }, timer.getTime() + 1, 5 ) - self.AliveCheckScheduler = SCHEDULER:New( self, self._AliveCheckScheduler, { "Client Alive " .. ClientName }, 1, 5 ) - - self:E( self ) - return self -end - - ---- Transport defines that the Client is a Transport. Transports show cargo. --- @param #CLIENT self --- @return #CLIENT -function CLIENT:Transport() - self:F() - - self.ClientTransport = true - return self -end - ---- AddBriefing adds a briefing to a CLIENT when a player joins a mission. --- @param #CLIENT self --- @param #string ClientBriefing is the text defining the Mission briefing. --- @return #CLIENT self -function CLIENT:AddBriefing( ClientBriefing ) - self:F( ClientBriefing ) - self.ClientBriefing = ClientBriefing - self.ClientBriefingShown = false - - return self -end - ---- Show the briefing of a CLIENT. --- @param #CLIENT self --- @return #CLIENT self -function CLIENT:ShowBriefing() - self:F( { self.ClientName, self.ClientBriefingShown } ) - - if not self.ClientBriefingShown then - self.ClientBriefingShown = true - local Briefing = "" - if self.ClientBriefing then - Briefing = Briefing .. self.ClientBriefing - end - Briefing = Briefing .. " Press [LEFT ALT]+[B] to view the complete mission briefing." - self:Message( Briefing, 60, "Briefing" ) - end - - return self -end - ---- Show the mission briefing of a MISSION to the CLIENT. --- @param #CLIENT self --- @param #string MissionBriefing --- @return #CLIENT self -function CLIENT:ShowMissionBriefing( MissionBriefing ) - self:F( { self.ClientName } ) - - if MissionBriefing then - self:Message( MissionBriefing, 60, "Mission Briefing" ) - end - - return self -end - - - ---- Resets a CLIENT. --- @param #CLIENT self --- @param #string ClientName Name of the Group as defined within the Mission Editor. The Group must have a Unit with the type Client. -function CLIENT:Reset( ClientName ) - self:F() - self._Menus = {} -end - --- Is Functions - ---- Checks if the CLIENT is a multi-seated UNIT. --- @param #CLIENT self --- @return #boolean true if multi-seated. -function CLIENT:IsMultiSeated() - self:F( self.ClientName ) - - local ClientMultiSeatedTypes = { - ["Mi-8MT"] = "Mi-8MT", - ["UH-1H"] = "UH-1H", - ["P-51B"] = "P-51B" - } - - if self:IsAlive() then - local ClientTypeName = self:GetClientGroupUnit():GetTypeName() - if ClientMultiSeatedTypes[ClientTypeName] then - return true - end - end - - return false -end - ---- Checks for a client alive event and calls a function on a continuous basis. --- @param #CLIENT self --- @param #function CallBackFunction Create a function that will be called when a player joins the slot. --- @return #CLIENT -function CLIENT:Alive( CallBackFunction, ... ) - self:F() - - self.ClientCallBack = CallBackFunction - self.ClientParameters = arg - - return self -end - ---- @param #CLIENT self -function CLIENT:_AliveCheckScheduler( SchedulerName ) - self:F3( { SchedulerName, self.ClientName, self.ClientAlive2, self.ClientBriefingShown, self.ClientCallBack } ) - - if self:IsAlive() then - if self.ClientAlive2 == false then - self:ShowBriefing() - if self.ClientCallBack then - self:T("Calling Callback function") - self.ClientCallBack( self, unpack( self.ClientParameters ) ) - end - self.ClientAlive2 = true - end - else - if self.ClientAlive2 == true then - self.ClientAlive2 = false - end - end - - return true -end - ---- Return the DCSGroup of a Client. --- This function is modified to deal with a couple of bugs in DCS 1.5.3 --- @param #CLIENT self --- @return Dcs.DCSWrapper.Group#Group -function CLIENT:GetDCSGroup() - self:F3() - --- local ClientData = Group.getByName( self.ClientName ) --- if ClientData and ClientData:isExist() then --- self:T( self.ClientName .. " : group found!" ) --- return ClientData --- else --- return nil --- end - - local ClientUnit = Unit.getByName( self.ClientName ) - - local CoalitionsData = { AlivePlayersRed = coalition.getPlayers( coalition.side.RED ), AlivePlayersBlue = coalition.getPlayers( coalition.side.BLUE ) } - for CoalitionId, CoalitionData in pairs( CoalitionsData ) do - self:T3( { "CoalitionData:", CoalitionData } ) - for UnitId, UnitData in pairs( CoalitionData ) do - self:T3( { "UnitData:", UnitData } ) - if UnitData and UnitData:isExist() then - - --self:E(self.ClientName) - if ClientUnit then - local ClientGroup = ClientUnit:getGroup() - if ClientGroup then - self:T3( "ClientGroup = " .. self.ClientName ) - if ClientGroup:isExist() and UnitData:getGroup():isExist() then - if ClientGroup:getID() == UnitData:getGroup():getID() then - self:T3( "Normal logic" ) - self:T3( self.ClientName .. " : group found!" ) - self.ClientGroupID = ClientGroup:getID() - self.ClientGroupName = ClientGroup:getName() - return ClientGroup - end - else - -- Now we need to resolve the bugs in DCS 1.5 ... - -- Consult the database for the units of the Client Group. (ClientGroup:getUnits() returns nil) - self:T3( "Bug 1.5 logic" ) - local ClientGroupTemplate = _DATABASE.Templates.Units[self.ClientName].GroupTemplate - self.ClientGroupID = ClientGroupTemplate.groupId - self.ClientGroupName = _DATABASE.Templates.Units[self.ClientName].GroupName - self:T3( self.ClientName .. " : group found in bug 1.5 resolvement logic!" ) - return ClientGroup - end - -- else - -- error( "Client " .. self.ClientName .. " not found!" ) - end - else - --self:E( { "Client not found!", self.ClientName } ) - end - end - end - end - - -- For non player clients - if ClientUnit then - local ClientGroup = ClientUnit:getGroup() - if ClientGroup then - self:T3( "ClientGroup = " .. self.ClientName ) - if ClientGroup:isExist() then - self:T3( "Normal logic" ) - self:T3( self.ClientName .. " : group found!" ) - return ClientGroup - end - end - end - - self.ClientGroupID = nil - self.ClientGroupUnit = nil - - return nil -end - - --- TODO: Check Dcs.DCSTypes#Group.ID ---- Get the group ID of the client. --- @param #CLIENT self --- @return Dcs.DCSTypes#Group.ID -function CLIENT:GetClientGroupID() - - local ClientGroup = self:GetDCSGroup() - - --self:E( self.ClientGroupID ) -- Determined in GetDCSGroup() - return self.ClientGroupID -end - - ---- Get the name of the group of the client. --- @param #CLIENT self --- @return #string -function CLIENT:GetClientGroupName() - - local ClientGroup = self:GetDCSGroup() - - self:T( self.ClientGroupName ) -- Determined in GetDCSGroup() - return self.ClientGroupName -end - ---- Returns the UNIT of the CLIENT. --- @param #CLIENT self --- @return Wrapper.Unit#UNIT -function CLIENT:GetClientGroupUnit() - self:F2() - - local ClientDCSUnit = Unit.getByName( self.ClientName ) - - self:T( self.ClientDCSUnit ) - if ClientDCSUnit and ClientDCSUnit:isExist() then - local ClientUnit = _DATABASE:FindUnit( self.ClientName ) - self:T2( ClientUnit ) - return ClientUnit - end -end - ---- Returns the DCSUnit of the CLIENT. --- @param #CLIENT self --- @return Dcs.DCSTypes#Unit -function CLIENT:GetClientGroupDCSUnit() - self:F2() - - local ClientDCSUnit = Unit.getByName( self.ClientName ) - - if ClientDCSUnit and ClientDCSUnit:isExist() then - self:T2( ClientDCSUnit ) - return ClientDCSUnit - end -end - - ---- Evaluates if the CLIENT is a transport. --- @param #CLIENT self --- @return #boolean true is a transport. -function CLIENT:IsTransport() - self:F() - return self.ClientTransport -end - ---- Shows the @{AI_Cargo#CARGO} contained within the CLIENT to the player as a message. --- The @{AI_Cargo#CARGO} is shown using the @{Message#MESSAGE} distribution system. --- @param #CLIENT self -function CLIENT:ShowCargo() - self:F() - - local CargoMsg = "" - - for CargoName, Cargo in pairs( CARGOS ) do - if self == Cargo:IsLoadedInClient() then - CargoMsg = CargoMsg .. Cargo.CargoName .. " Type:" .. Cargo.CargoType .. " Weight: " .. Cargo.CargoWeight .. "\n" - end - end - - if CargoMsg == "" then - CargoMsg = "empty" - end - - self:Message( CargoMsg, 15, "Co-Pilot: Cargo Status", 30 ) - -end - --- TODO (1) I urgently need to revise this. ---- A local function called by the DCS World Menu system to switch off messages. -function CLIENT.SwitchMessages( PrmTable ) - PrmTable[1].MessageSwitch = PrmTable[2] -end - ---- The main message driver for the CLIENT. --- This function displays various messages to the Player logged into the CLIENT through the DCS World Messaging system. --- @param #CLIENT self --- @param #string Message is the text describing the message. --- @param #number MessageDuration is the duration in seconds that the Message should be displayed. --- @param #string MessageCategory is the category of the message (the title). --- @param #number MessageInterval is the interval in seconds between the display of the @{Message#MESSAGE} when the CLIENT is in the air. --- @param #string MessageID is the identifier of the message when displayed with intervals. -function CLIENT:Message( Message, MessageDuration, MessageCategory, MessageInterval, MessageID ) - self:F( { Message, MessageDuration, MessageCategory, MessageInterval } ) - - if self.MessageSwitch == true then - if MessageCategory == nil then - MessageCategory = "Messages" - end - if MessageID ~= nil then - if self.Messages[MessageID] == nil then - self.Messages[MessageID] = {} - self.Messages[MessageID].MessageId = MessageID - self.Messages[MessageID].MessageTime = timer.getTime() - self.Messages[MessageID].MessageDuration = MessageDuration - if MessageInterval == nil then - self.Messages[MessageID].MessageInterval = 600 - else - self.Messages[MessageID].MessageInterval = MessageInterval - end - MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) - else - if self:GetClientGroupDCSUnit() and not self:GetClientGroupDCSUnit():inAir() then - if timer.getTime() - self.Messages[MessageID].MessageTime >= self.Messages[MessageID].MessageDuration + 10 then - MESSAGE:New( Message, MessageDuration , MessageCategory):ToClient( self ) - self.Messages[MessageID].MessageTime = timer.getTime() - end - else - if timer.getTime() - self.Messages[MessageID].MessageTime >= self.Messages[MessageID].MessageDuration + self.Messages[MessageID].MessageInterval then - MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) - self.Messages[MessageID].MessageTime = timer.getTime() - end - end - end - else - MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self ) - end - end -end ---- This module contains the STATIC class. --- --- 1) @{Static#STATIC} class, extends @{Positionable#POSITIONABLE} --- =============================================================== --- Statics are **Static Units** defined within the Mission Editor. --- Note that Statics are almost the same as Units, but they don't have a controller. --- The @{Static#STATIC} class is a wrapper class to handle the DCS Static objects: --- --- * Wraps the DCS Static objects. --- * Support all DCS Static APIs. --- * Enhance with Static specific APIs not in the DCS API set. --- --- 1.1) STATIC reference methods --- ----------------------------- --- For each DCS Static will have a STATIC wrapper object (instance) within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts). --- --- The STATIC class does not contain a :New() method, rather it provides :Find() methods to retrieve the object reference --- using the Static Name. --- --- Another thing to know is that STATIC objects do not "contain" the DCS Static object. --- The STATIc methods will reference the DCS Static object by name when it is needed during API execution. --- If the DCS Static object does not exist or is nil, the STATIC methods will return nil and log an exception in the DCS.log file. --- --- The STATIc class provides the following functions to retrieve quickly the relevant STATIC instance: --- --- * @{#STATIC.FindByName}(): Find a STATIC instance from the _DATABASE object using a DCS Static name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these STATIC OBJECT REFERENCES! (make the STATIC object references nil). --- --- @module Static --- @author FlightControl - - - - - - ---- The STATIC class --- @type STATIC --- @extends Wrapper.Positionable#POSITIONABLE -STATIC = { - ClassName = "STATIC", -} - - ---- Finds a STATIC from the _DATABASE using the relevant Static Name. --- As an optional parameter, a briefing text can be given also. --- @param #STATIC self --- @param #string StaticName Name of the DCS **Static** as defined within the Mission Editor. --- @param #boolean RaiseError Raise an error if not found. --- @return #STATIC -function STATIC:FindByName( StaticName, RaiseError ) - local StaticFound = _DATABASE:FindStatic( StaticName ) - - self.StaticName = StaticName - - if StaticFound then - StaticFound:F3( { StaticName } ) - - return StaticFound - end - - if RaiseError == nil or RaiseError == true then - error( "STATIC not found for: " .. StaticName ) - end - - return nil -end - -function STATIC:Register( StaticName ) - local self = BASE:Inherit( self, POSITIONABLE:New( StaticName ) ) - self.StaticName = StaticName - return self -end - - -function STATIC:GetDCSObject() - local DCSStatic = StaticObject.getByName( self.StaticName ) - - if DCSStatic then - return DCSStatic - end - - return nil -end - -function STATIC:GetThreatLevel() - - return 1, "Static" -end--- This module contains the AIRBASE classes. --- --- === --- --- 1) @{Airbase#AIRBASE} class, extends @{Positionable#POSITIONABLE} --- ================================================================= --- The @{AIRBASE} class is a wrapper class to handle the DCS Airbase objects: --- --- * Support all DCS Airbase APIs. --- * Enhance with Airbase specific APIs not in the DCS Airbase API set. --- --- --- 1.1) AIRBASE reference methods --- ------------------------------ --- For each DCS Airbase object alive within a running mission, a AIRBASE wrapper object (instance) will be created within the _@{DATABASE} object. --- This is done at the beginning of the mission (when the mission starts). --- --- The AIRBASE class **does not contain a :New()** method, rather it provides **:Find()** methods to retrieve the object reference --- using the DCS Airbase or the DCS AirbaseName. --- --- Another thing to know is that AIRBASE objects do not "contain" the DCS Airbase object. --- The AIRBASE methods will reference the DCS Airbase object by name when it is needed during API execution. --- If the DCS Airbase object does not exist or is nil, the AIRBASE methods will return nil and log an exception in the DCS.log file. --- --- The AIRBASE class provides the following functions to retrieve quickly the relevant AIRBASE instance: --- --- * @{#AIRBASE.Find}(): Find a AIRBASE instance from the _DATABASE object using a DCS Airbase object. --- * @{#AIRBASE.FindByName}(): Find a AIRBASE instance from the _DATABASE object using a DCS Airbase name. --- --- IMPORTANT: ONE SHOULD NEVER SANATIZE these AIRBASE OBJECT REFERENCES! (make the AIRBASE object references nil). --- --- 1.2) DCS AIRBASE APIs --- --------------------- --- The DCS Airbase APIs are used extensively within MOOSE. The AIRBASE class has for each DCS Airbase API a corresponding method. --- To be able to distinguish easily in your code the difference between a AIRBASE API call and a DCS Airbase API call, --- the first letter of the method is also capitalized. So, by example, the DCS Airbase method @{DCSWrapper.Airbase#Airbase.getName}() --- is implemented in the AIRBASE class as @{#AIRBASE.GetName}(). --- --- More functions will be added --- ---------------------------- --- During the MOOSE development, more functions will be added. --- --- @module Airbase --- @author FlightControl - - - - - ---- The AIRBASE class --- @type AIRBASE --- @extends Wrapper.Positionable#POSITIONABLE -AIRBASE = { - ClassName="AIRBASE", - CategoryName = { - [Airbase.Category.AIRDROME] = "Airdrome", - [Airbase.Category.HELIPAD] = "Helipad", - [Airbase.Category.SHIP] = "Ship", - }, - } - --- Registration. - ---- Create a new AIRBASE from DCSAirbase. --- @param #AIRBASE self --- @param #string AirbaseName The name of the airbase. --- @return Wrapper.Airbase#AIRBASE -function AIRBASE:Register( AirbaseName ) - - local self = BASE:Inherit( self, POSITIONABLE:New( AirbaseName ) ) - self.AirbaseName = AirbaseName - return self -end - --- Reference methods. - ---- Finds a AIRBASE from the _DATABASE using a DCSAirbase object. --- @param #AIRBASE self --- @param Dcs.DCSWrapper.Airbase#Airbase DCSAirbase An existing DCS Airbase object reference. --- @return Wrapper.Airbase#AIRBASE self -function AIRBASE:Find( DCSAirbase ) - - local AirbaseName = DCSAirbase:getName() - local AirbaseFound = _DATABASE:FindAirbase( AirbaseName ) - return AirbaseFound -end - ---- Find a AIRBASE in the _DATABASE using the name of an existing DCS Airbase. --- @param #AIRBASE self --- @param #string AirbaseName The Airbase Name. --- @return Wrapper.Airbase#AIRBASE self -function AIRBASE:FindByName( AirbaseName ) - - local AirbaseFound = _DATABASE:FindAirbase( AirbaseName ) - return AirbaseFound -end - -function AIRBASE:GetDCSObject() - local DCSAirbase = Airbase.getByName( self.AirbaseName ) - - if DCSAirbase then - return DCSAirbase - end - - return nil -end - - - ---- This module contains the SCENERY class. --- --- 1) @{Scenery#SCENERY} class, extends @{Positionable#POSITIONABLE} --- =============================================================== --- Scenery objects are defined on the map. --- The @{Scenery#SCENERY} class is a wrapper class to handle the DCS Scenery objects: --- --- * Wraps the DCS Scenery objects. --- * Support all DCS Scenery APIs. --- * Enhance with Scenery specific APIs not in the DCS API set. --- --- @module Scenery --- @author FlightControl - - - ---- The SCENERY class --- @type SCENERY --- @extends Wrapper.Positionable#POSITIONABLE -SCENERY = { - ClassName = "SCENERY", -} - - -function SCENERY:Register( SceneryName, SceneryObject ) - local self = BASE:Inherit( self, POSITIONABLE:New( SceneryName ) ) - self.SceneryName = SceneryName - self.SceneryObject = SceneryObject - return self -end - -function SCENERY:GetDCSObject() - return self.SceneryObject -end - -function SCENERY:GetThreatLevel() - - return 0, "Scenery" -end ---- Single-Player:**Yes** / Multi-Player:**Yes** / Core:**Yes** -- **Administer the scoring of player achievements, --- and create a CSV file logging the scoring events for use at team or squadron websites.** --- --- ![Banner Image](..\Presentations\SCORING\Dia1.JPG) --- --- === --- --- The @{#SCORING} class administers the scoring of player achievements, --- and creates a CSV file logging the scoring events and results for use at team or squadron websites. --- --- SCORING automatically calculates the threat level of the objects hit and destroyed by players, --- which can be @{Unit}, @{Static) and @{Scenery} objects. --- --- Positive score points are granted when enemy or neutral targets are destroyed. --- Negative score points or penalties are given when a friendly target is hit or destroyed. --- This brings a lot of dynamism in the scoring, where players need to take care to inflict damage on the right target. --- By default, penalties weight heavier in the scoring, to ensure that players don't commit fratricide. --- The total score of the player is calculated by **adding the scores minus the penalties**. --- --- ![Banner Image](..\Presentations\SCORING\Dia4.JPG) --- --- The score value is calculated based on the **threat level of the player** and the **threat level of the target**. --- A calculated score takes the threat level of the target divided by a balanced threat level of the player unit. --- As such, if the threat level of the target is high, and the player threat level is low, a higher score will be given than --- if the threat level of the player would be high too. --- --- ![Banner Image](..\Presentations\SCORING\Dia5.JPG) --- --- When multiple players hit the same target, and finally succeed in destroying the target, then each player who contributed to the target --- destruction, will receive a score. This is important for targets that require significant damage before it can be destroyed, like --- ships or heavy planes. --- --- ![Banner Image](..\Presentations\SCORING\Dia13.JPG) --- --- Optionally, the score values can be **scaled** by a **scale**. Specific scales can be set for positive cores or negative penalties. --- The default range of the scores granted is a value between 0 and 10. The default range of penalties given is a value between 0 and 30. --- --- ![Banner Image](..\Presentations\SCORING\Dia7.JPG) --- --- **Additional scores** can be granted to **specific objects**, when the player(s) destroy these objects. --- --- ![Banner Image](..\Presentations\SCORING\Dia9.JPG) --- --- Various @{Zone}s can be defined for which scores are also granted when objects in that @{Zone} are destroyed. --- This is **specifically useful** to designate **scenery targets on the map** that will generate points when destroyed. --- --- With a small change in MissionScripting.lua, the scoring results can also be logged in a **CSV file**. --- These CSV files can be used to: --- --- * Upload scoring to a database or a BI tool to publish the scoring results to the player community. --- * Upload scoring in an (online) Excel like tool, using pivot tables and pivot charts to show mission results. --- * Share scoring amoung players after the mission to discuss mission results. --- --- Scores can be **reported**. **Menu options** are automatically added to **each player group** when a player joins a client slot or a CA unit. --- Use the radio menu F10 to consult the scores while running the mission. --- Scores can be reported for your user, or an overall score can be reported of all players currently active in the mission. --- --- # 1) @{Scoring#SCORING} class, extends @{Base#BASE} --- --- ## 1.1) Set the destroy score or penalty scale --- --- Score scales can be set for scores granted when enemies or friendlies are destroyed. --- Use the method @{#SCORING.SetScaleDestroyScore}() to set the scale of enemy destroys (positive destroys). --- Use the method @{#SCORING.SetScaleDestroyPenalty}() to set the scale of friendly destroys (negative destroys). --- --- local Scoring = SCORING:New( "Scoring File" ) --- Scoring:SetScaleDestroyScore( 10 ) --- Scoring:SetScaleDestroyPenalty( 40 ) --- --- The above sets the scale for valid scores to 10. So scores will be given in a scale from 0 to 10. --- The penalties will be given in a scale from 0 to 40. --- --- ## 1.2) Define special targets that will give extra scores. --- --- Special targets can be set that will give extra scores to the players when these are destroyed. --- Use the methods @{#SCORING.AddUnitScore}() and @{#SCORING.RemoveUnitScore}() to specify a special additional score for a specific @{Unit}s. --- Use the methods @{#SCORING.AddStaticScore}() and @{#SCORING.RemoveStaticScore}() to specify a special additional score for a specific @{Static}s. --- Use the method @{#SCORING.SetGroupGroup}() to specify a special additional score for a specific @{Group}s. --- --- local Scoring = SCORING:New( "Scoring File" ) --- Scoring:AddUnitScore( UNIT:FindByName( "Unit #001" ), 200 ) --- Scoring:AddStaticScore( STATIC:FindByName( "Static #1" ), 100 ) --- --- The above grants an additional score of 200 points for Unit #001 and an additional 100 points of Static #1 if these are destroyed. --- Note that later in the mission, one can remove these scores set, for example, when the a goal achievement time limit is over. --- For example, this can be done as follows: --- --- Scoring:RemoveUnitScore( UNIT:FindByName( "Unit #001" ) ) --- --- ## 1.3) Define destruction zones that will give extra scores. --- --- Define zones of destruction. Any object destroyed within the zone of the given category will give extra points. --- Use the method @{#SCORING.AddZoneScore}() to add a @{Zone} for additional scoring. --- Use the method @{#SCORING.RemoveZoneScore}() to remove a @{Zone} for additional scoring. --- There are interesting variations that can be achieved with this functionality. For example, if the @{Zone} is a @{Zone#ZONE_UNIT}, --- then the zone is a moving zone, and anything destroyed within that @{Zone} will generate points. --- The other implementation could be to designate a scenery target (a building) in the mission editor surrounded by a @{Zone}, --- just large enough around that building. --- --- ## 1.4) Add extra Goal scores upon an event or a condition. --- --- A mission has goals and achievements. The scoring system provides an API to set additional scores when a goal or achievement event happens. --- Use the method @{#SCORING.AddGoalScore}() to add a score for a Player at any time in your mission. --- --- ## 1.5) Configure fratricide level. --- --- When a player commits too much damage to friendlies, his penalty score will reach a certain level. --- Use the method @{#SCORING.SetFratricide}() to define the level when a player gets kicked. --- By default, the fratricide level is the default penalty mutiplier * 2 for the penalty score. --- --- ## 1.6) Penalty score when a player changes the coalition. --- --- When a player changes the coalition, he can receive a penalty score. --- Use the method @{#SCORING.SetCoalitionChangePenalty}() to define the penalty when a player changes coalition. --- By default, the penalty for changing coalition is the default penalty scale. --- --- ## 1.8) Define output CSV files. --- --- The CSV file is given the name of the string given in the @{#SCORING.New}{} constructor, followed by the .csv extension. --- The file is incrementally saved in the **\\Saved Games\\DCS\\Logs** folder, and has a time stamp indicating each mission run. --- See the following example: --- --- local ScoringFirstMission = SCORING:New( "FirstMission" ) --- local ScoringSecondMission = SCORING:New( "SecondMission" ) --- --- The above documents that 2 Scoring objects are created, ScoringFirstMission and ScoringSecondMission. --- --- ## 1.9) Configure messages. --- --- When players hit or destroy targets, messages are sent. --- Various methods exist to configure: --- --- * Which messages are sent upon the event. --- * Which audience receives the message. --- --- ### 1.9.1) Configure the messages sent upon the event. --- --- Use the following methods to configure when to send messages. By default, all messages are sent. --- --- * @{#SCORING.SetMessagesHit}(): Configure to send messages after a target has been hit. --- * @{#SCORING.SetMessagesDestroy}(): Configure to send messages after a target has been destroyed. --- * @{#SCORING.SetMessagesAddon}(): Configure to send messages for additional score, after a target has been destroyed. --- * @{#SCORING.SetMessagesZone}(): Configure to send messages for additional score, after a target has been destroyed within a given zone. --- --- ### 1.9.2) Configure the audience of the messages. --- --- Use the following methods to configure the audience of the messages. By default, the messages are sent to all players in the mission. --- --- * @{#SCORING.SetMessagesToAll}(): Configure to send messages to all players. --- * @{#SCORING.SetMessagesToCoalition}(): Configure to send messages to only those players within the same coalition as the player. --- --- --- ==== --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-02-26: Initial class and API. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * **Wingthor (TAW)**: Testing & Advice. --- * **Dutch-Baron (TAW)**: Testing & Advice. --- * **[Whisper](http://forums.eagle.ru/member.php?u=3829): Testing and Advice. --- --- ### Authors: --- --- * **FlightControl**: Concept, Design & Programming. --- --- @module Scoring - - ---- The Scoring class --- @type SCORING --- @field Players A collection of the current players that have joined the game. --- @extends Core.Base#BASE -SCORING = { - ClassName = "SCORING", - ClassID = 0, - Players = {}, -} - -local _SCORINGCoalition = - { - [1] = "Red", - [2] = "Blue", - } - -local _SCORINGCategory = - { - [Unit.Category.AIRPLANE] = "Plane", - [Unit.Category.HELICOPTER] = "Helicopter", - [Unit.Category.GROUND_UNIT] = "Vehicle", - [Unit.Category.SHIP] = "Ship", - [Unit.Category.STRUCTURE] = "Structure", - } - ---- Creates a new SCORING object to administer the scoring achieved by players. --- @param #SCORING self --- @param #string GameName The name of the game. This name is also logged in the CSV score file. --- @return #SCORING self --- @usage --- -- Define a new scoring object for the mission Gori Valley. --- ScoringObject = SCORING:New( "Gori Valley" ) -function SCORING:New( GameName ) - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) -- #SCORING - - if GameName then - self.GameName = GameName - else - error( "A game name must be given to register the scoring results" ) - end - - - -- Additional Object scores - self.ScoringObjects = {} - - -- Additional Zone scores. - self.ScoringZones = {} - - -- Configure Messages - self:SetMessagesToAll() - self:SetMessagesHit( true ) - self:SetMessagesDestroy( true ) - self:SetMessagesScore( true ) - self:SetMessagesZone( true ) - - -- Scales - self:SetScaleDestroyScore( 10 ) - self:SetScaleDestroyPenalty( 30 ) - - -- Default fratricide penalty level (maximum penalty that can be assigned to a player before he gets kicked). - self:SetFratricide( self.ScaleDestroyPenalty * 3 ) - - -- Default penalty when a player changes coalition. - self:SetCoalitionChangePenalty( self.ScaleDestroyPenalty ) - - -- Event handlers - self:HandleEvent( EVENTS.Dead, self._EventOnDeadOrCrash ) - self:HandleEvent( EVENTS.Crash, self._EventOnDeadOrCrash ) - self:HandleEvent( EVENTS.Hit, self._EventOnHit ) - self:HandleEvent( EVENTS.PlayerEnterUnit ) - self:HandleEvent( EVENTS.PlayerLeaveUnit ) - - -- Create the CSV file. - self:OpenCSV( GameName ) - - return self - -end - ---- Set the scale for scoring valid destroys (enemy destroys). --- A default calculated score is a value between 1 and 10. --- The scale magnifies the scores given to the players. --- @param #SCORING self --- @param #number Scale The scale of the score given. -function SCORING:SetScaleDestroyScore( Scale ) - - self.ScaleDestroyScore = Scale - - return self -end - ---- Set the scale for scoring penalty destroys (friendly destroys). --- A default calculated penalty is a value between 1 and 10. --- The scale magnifies the scores given to the players. --- @param #SCORING self --- @param #number Scale The scale of the score given. --- @return #SCORING -function SCORING:SetScaleDestroyPenalty( Scale ) - - self.ScaleDestroyPenalty = Scale - - return self -end - ---- Add a @{Unit} for additional scoring when the @{Unit} is destroyed. --- Note that if there was already a @{Unit} declared within the scoring with the same name, --- then the old @{Unit} will be replaced with the new @{Unit}. --- @param #SCORING self --- @param Wrapper.Unit#UNIT ScoreUnit The @{Unit} for which the Score needs to be given. --- @param #number Score The Score value. --- @return #SCORING -function SCORING:AddUnitScore( ScoreUnit, Score ) - - local UnitName = ScoreUnit:GetName() - - self.ScoringObjects[UnitName] = Score - - return self -end - ---- Removes a @{Unit} for additional scoring when the @{Unit} is destroyed. --- @param #SCORING self --- @param Wrapper.Unit#UNIT ScoreUnit The @{Unit} for which the Score needs to be given. --- @return #SCORING -function SCORING:RemoveUnitScore( ScoreUnit ) - - local UnitName = ScoreUnit:GetName() - - self.ScoringObjects[UnitName] = nil - - return self -end - ---- Add a @{Static} for additional scoring when the @{Static} is destroyed. --- Note that if there was already a @{Static} declared within the scoring with the same name, --- then the old @{Static} will be replaced with the new @{Static}. --- @param #SCORING self --- @param Wrapper.Static#UNIT ScoreStatic The @{Static} for which the Score needs to be given. --- @param #number Score The Score value. --- @return #SCORING -function SCORING:AddStaticScore( ScoreStatic, Score ) - - local StaticName = ScoreStatic:GetName() - - self.ScoringObjects[StaticName] = Score - - return self -end - ---- Removes a @{Static} for additional scoring when the @{Static} is destroyed. --- @param #SCORING self --- @param Wrapper.Static#UNIT ScoreStatic The @{Static} for which the Score needs to be given. --- @return #SCORING -function SCORING:RemoveStaticScore( ScoreStatic ) - - local StaticName = ScoreStatic:GetName() - - self.ScoringObjects[StaticName] = nil - - return self -end - - ---- Specify a special additional score for a @{Group}. --- @param #SCORING self --- @param Wrapper.Group#GROUP ScoreGroup The @{Group} for which each @{Unit} a Score is given. --- @param #number Score The Score value. --- @return #SCORING -function SCORING:AddScoreGroup( ScoreGroup, Score ) - - local ScoreUnits = ScoreGroup:GetUnits() - - for ScoreUnitID, ScoreUnit in pairs( ScoreUnits ) do - local UnitName = ScoreUnit:GetName() - self.ScoringObjects[UnitName] = Score - end - - return self -end - ---- Add a @{Zone} to define additional scoring when any object is destroyed in that zone. --- Note that if a @{Zone} with the same name is already within the scoring added, the @{Zone} (type) and Score will be replaced! --- This allows for a dynamic destruction zone evolution within your mission. --- @param #SCORING self --- @param Core.Zone#ZONE_BASE ScoreZone The @{Zone} which defines the destruction score perimeters. --- Note that a zone can be a polygon or a moving zone. --- @param #number Score The Score value. --- @return #SCORING -function SCORING:AddZoneScore( ScoreZone, Score ) - - local ZoneName = ScoreZone:GetName() - - self.ScoringZones[ZoneName] = {} - self.ScoringZones[ZoneName].ScoreZone = ScoreZone - self.ScoringZones[ZoneName].Score = Score - - return self -end - ---- Remove a @{Zone} for additional scoring. --- The scoring will search if any @{Zone} is added with the given name, and will remove that zone from the scoring. --- This allows for a dynamic destruction zone evolution within your mission. --- @param #SCORING self --- @param Core.Zone#ZONE_BASE ScoreZone The @{Zone} which defines the destruction score perimeters. --- Note that a zone can be a polygon or a moving zone. --- @return #SCORING -function SCORING:RemoveZoneScore( ScoreZone ) - - local ZoneName = ScoreZone:GetName() - - self.ScoringZones[ZoneName] = nil - - return self -end - - ---- Configure to send messages after a target has been hit. --- @param #SCORING self --- @param #boolean OnOff If true is given, the messages are sent. --- @return #SCORING -function SCORING:SetMessagesHit( OnOff ) - - self.MessagesHit = OnOff - return self -end - ---- If to send messages after a target has been hit. --- @param #SCORING self --- @return #boolean -function SCORING:IfMessagesHit() - - return self.MessagesHit -end - ---- Configure to send messages after a target has been destroyed. --- @param #SCORING self --- @param #boolean OnOff If true is given, the messages are sent. --- @return #SCORING -function SCORING:SetMessagesDestroy( OnOff ) - - self.MessagesDestroy = OnOff - return self -end - ---- If to send messages after a target has been destroyed. --- @param #SCORING self --- @return #boolean -function SCORING:IfMessagesDestroy() - - return self.MessagesDestroy -end - ---- Configure to send messages after a target has been destroyed and receives additional scores. --- @param #SCORING self --- @param #boolean OnOff If true is given, the messages are sent. --- @return #SCORING -function SCORING:SetMessagesScore( OnOff ) - - self.MessagesScore = OnOff - return self -end - ---- If to send messages after a target has been destroyed and receives additional scores. --- @param #SCORING self --- @return #boolean -function SCORING:IfMessagesScore() - - return self.MessagesScore -end - ---- Configure to send messages after a target has been hit in a zone, and additional score is received. --- @param #SCORING self --- @param #boolean OnOff If true is given, the messages are sent. --- @return #SCORING -function SCORING:SetMessagesZone( OnOff ) - - self.MessagesZone = OnOff - return self -end - ---- If to send messages after a target has been hit in a zone, and additional score is received. --- @param #SCORING self --- @return #boolean -function SCORING:IfMessagesZone() - - return self.MessagesZone -end - ---- Configure to send messages to all players. --- @param #SCORING self --- @return #SCORING -function SCORING:SetMessagesToAll() - - self.MessagesAudience = 1 - return self -end - ---- If to send messages to all players. --- @param #SCORING self --- @return #boolean -function SCORING:IfMessagesToAll() - - return self.MessagesAudience == 1 -end - ---- Configure to send messages to only those players within the same coalition as the player. --- @param #SCORING self --- @return #SCORING -function SCORING:SetMessagesToCoalition() - - self.MessagesAudience = 2 - return self -end - ---- If to send messages to only those players within the same coalition as the player. --- @param #SCORING self --- @return #boolean -function SCORING:IfMessagesToCoalition() - - return self.MessagesAudience == 2 -end - - ---- When a player commits too much damage to friendlies, his penalty score will reach a certain level. --- Use this method to define the level when a player gets kicked. --- By default, the fratricide level is the default penalty mutiplier * 2 for the penalty score. --- @param #SCORING self --- @param #number Fratricide The amount of maximum penalty that may be inflicted by a friendly player before he gets kicked. --- @return #SCORING -function SCORING:SetFratricide( Fratricide ) - - self.Fratricide = Fratricide - return self -end - - ---- When a player changes the coalition, he can receive a penalty score. --- Use the method @{#SCORING.SetCoalitionChangePenalty}() to define the penalty when a player changes coalition. --- By default, the penalty for changing coalition is the default penalty scale. --- @param #SCORING self --- @param #number CoalitionChangePenalty The amount of penalty that is given. --- @return #SCORING -function SCORING:SetCoalitionChangePenalty( CoalitionChangePenalty ) - - self.CoalitionChangePenalty = CoalitionChangePenalty - return self -end - - ---- Add a new player entering a Unit. --- @param #SCORING self --- @param Wrapper.Unit#UNIT UnitData -function SCORING:_AddPlayerFromUnit( UnitData ) - self:F( UnitData ) - - if UnitData:IsAlive() then - local UnitName = UnitData:GetName() - local PlayerName = UnitData:GetPlayerName() - local UnitDesc = UnitData:GetDesc() - local UnitCategory = UnitDesc.category - local UnitCoalition = UnitData:GetCoalition() - local UnitTypeName = UnitData:GetTypeName() - local UnitThreatLevel, UnitThreatType = UnitData:GetThreatLevel() - - self:T( { PlayerName, UnitName, UnitCategory, UnitCoalition, UnitTypeName } ) - - if self.Players[PlayerName] == nil then -- I believe this is the place where a Player gets a life in a mission when he enters a unit ... - self.Players[PlayerName] = {} - self.Players[PlayerName].Hit = {} - self.Players[PlayerName].Destroy = {} - self.Players[PlayerName].Goals = {} - self.Players[PlayerName].Mission = {} - - -- for CategoryID, CategoryName in pairs( SCORINGCategory ) do - -- self.Players[PlayerName].Hit[CategoryID] = {} - -- self.Players[PlayerName].Destroy[CategoryID] = {} - -- end - self.Players[PlayerName].HitPlayers = {} - self.Players[PlayerName].Score = 0 - self.Players[PlayerName].Penalty = 0 - self.Players[PlayerName].PenaltyCoalition = 0 - self.Players[PlayerName].PenaltyWarning = 0 - end - - if not self.Players[PlayerName].UnitCoalition then - self.Players[PlayerName].UnitCoalition = UnitCoalition - else - if self.Players[PlayerName].UnitCoalition ~= UnitCoalition then - self.Players[PlayerName].Penalty = self.Players[PlayerName].Penalty + 50 - self.Players[PlayerName].PenaltyCoalition = self.Players[PlayerName].PenaltyCoalition + 1 - MESSAGE:New( "Player '" .. PlayerName .. "' changed coalition from " .. _SCORINGCoalition[self.Players[PlayerName].UnitCoalition] .. " to " .. _SCORINGCoalition[UnitCoalition] .. - "(changed " .. self.Players[PlayerName].PenaltyCoalition .. " times the coalition). 50 Penalty points added.", - 2 - ):ToAll() - self:ScoreCSV( PlayerName, "", "COALITION_PENALTY", 1, -50, self.Players[PlayerName].UnitName, _SCORINGCoalition[self.Players[PlayerName].UnitCoalition], _SCORINGCategory[self.Players[PlayerName].UnitCategory], self.Players[PlayerName].UnitType, - UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:GetTypeName() ) - end - end - self.Players[PlayerName].UnitName = UnitName - self.Players[PlayerName].UnitCoalition = UnitCoalition - self.Players[PlayerName].UnitCategory = UnitCategory - self.Players[PlayerName].UnitType = UnitTypeName - self.Players[PlayerName].UNIT = UnitData - self.Players[PlayerName].ThreatLevel = UnitThreatLevel - self.Players[PlayerName].ThreatType = UnitThreatType - - if self.Players[PlayerName].Penalty > self.Fratricide * 0.50 then - if self.Players[PlayerName].PenaltyWarning < 1 then - MESSAGE:New( "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than " .. self.Fratricide .. ", you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty, - 30 - ):ToAll() - self.Players[PlayerName].PenaltyWarning = self.Players[PlayerName].PenaltyWarning + 1 - end - end - - if self.Players[PlayerName].Penalty > self.Fratricide then - UnitData:Destroy() - MESSAGE:New( "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!", - 10 - ):ToAll() - end - - end -end - - ---- Add a goal score for a player. --- The method takes the PlayerUnit for which the Goal score needs to be set. --- The GoalTag is a string or identifier that is taken into the CSV file scoring log to identify the goal. --- A free text can be given that is shown to the players. --- The Score can be both positive and negative. --- @param #SCORING self --- @param Wrapper.Unit#UNIT PlayerUnit The @{Unit} of the Player. Other Properties for the scoring are taken from this PlayerUnit, like coalition, type etc. --- @param #string GoalTag The string or identifier that is used in the CSV file to identify the goal (sort or group later in Excel). --- @param #string Text A free text that is shown to the players. --- @param #number Score The score can be both positive or negative ( Penalty ). -function SCORING:AddGoalScore( PlayerUnit, GoalTag, Text, Score ) - - local PlayerName = PlayerUnit:GetPlayerName() - - self:E( { PlayerUnit.UnitName, PlayerName, GoalTag, Text, Score } ) - - -- PlayerName can be nil, if the Unit with the player crashed or due to another reason. - if PlayerName then - local PlayerData = self.Players[PlayerName] - - PlayerData.Goals[GoalTag] = PlayerData.Goals[GoalTag] or { Score = 0 } - PlayerData.Goals[GoalTag].Score = PlayerData.Goals[GoalTag].Score + Score - PlayerData.Score = PlayerData.Score + Score - - MESSAGE:New( Text, 30 ):ToAll() - - self:ScoreCSV( PlayerName, "", "GOAL_" .. string.upper( GoalTag ), 1, Score, PlayerUnit:GetName() ) - end -end - - ---- Registers Scores the players completing a Mission Task. --- @param #SCORING self --- @param Tasking.Mission#MISSION Mission --- @param Wrapper.Unit#UNIT PlayerUnit --- @param #string Text --- @param #number Score -function SCORING:_AddMissionTaskScore( Mission, PlayerUnit, Text, Score ) - - local PlayerName = PlayerUnit:GetPlayerName() - local MissionName = Mission:GetName() - - self:E( { Mission:GetName(), PlayerUnit.UnitName, PlayerName, Text, Score } ) - - -- PlayerName can be nil, if the Unit with the player crashed or due to another reason. - if PlayerName then - local PlayerData = self.Players[PlayerName] - - if not PlayerData.Mission[MissionName] then - PlayerData.Mission[MissionName] = {} - PlayerData.Mission[MissionName].ScoreTask = 0 - PlayerData.Mission[MissionName].ScoreMission = 0 - end - - self:T( PlayerName ) - self:T( PlayerData.Mission[MissionName] ) - - PlayerData.Score = self.Players[PlayerName].Score + Score - PlayerData.Mission[MissionName].ScoreTask = self.Players[PlayerName].Mission[MissionName].ScoreTask + Score - - MESSAGE:New( "Player '" .. PlayerName .. "' has " .. Text .. " in Mission '" .. MissionName .. "'. " .. - Score .. " task score!", - 30 ):ToAll() - - self:ScoreCSV( PlayerName, "", "TASK_" .. MissionName:gsub( ' ', '_' ), 1, Score, PlayerUnit:GetName() ) - end -end - - ---- Registers Mission Scores for possible multiple players that contributed in the Mission. --- @param #SCORING self --- @param Tasking.Mission#MISSION Mission --- @param Wrapper.Unit#UNIT PlayerUnit --- @param #string Text --- @param #number Score -function SCORING:_AddMissionScore( Mission, Text, Score ) - - local MissionName = Mission:GetName() - - self:E( { Mission, Text, Score } ) - self:E( self.Players ) - - for PlayerName, PlayerData in pairs( self.Players ) do - - self:E( PlayerData ) - if PlayerData.Mission[MissionName] then - - PlayerData.Score = PlayerData.Score + Score - PlayerData.Mission[MissionName].ScoreMission = PlayerData.Mission[MissionName].ScoreMission + Score - - MESSAGE:New( "Player '" .. PlayerName .. "' has " .. Text .. " in Mission '" .. MissionName .. "'. " .. - Score .. " mission score!", - 60 ):ToAll() - - self:ScoreCSV( PlayerName, "", "MISSION_" .. MissionName:gsub( ' ', '_' ), 1, Score ) - end - end -end - - ---- Handles the OnPlayerEnterUnit event for the scoring. --- @param #SCORING self --- @param Core.Event#EVENTDATA Event -function SCORING:OnEventPlayerEnterUnit( Event ) - if Event.IniUnit then - self:_AddPlayerFromUnit( Event.IniUnit ) - local Menu = MENU_GROUP:New( Event.IniGroup, 'Scoring' ) - local ReportGroupSummary = MENU_GROUP_COMMAND:New( Event.IniGroup, 'Summary report players in group', Menu, SCORING.ReportScoreGroupSummary, self, Event.IniGroup ) - local ReportGroupDetailed = MENU_GROUP_COMMAND:New( Event.IniGroup, 'Detailed report players in group', Menu, SCORING.ReportScoreGroupDetailed, self, Event.IniGroup ) - local ReportToAllSummary = MENU_GROUP_COMMAND:New( Event.IniGroup, 'Summary report all players', Menu, SCORING.ReportScoreAllSummary, self, Event.IniGroup ) - self:SetState( Event.IniUnit, "ScoringMenu", Menu ) - end -end - ---- Handles the OnPlayerLeaveUnit event for the scoring. --- @param #SCORING self --- @param Core.Event#EVENTDATA Event -function SCORING:OnEventPlayerLeaveUnit( Event ) - if Event.IniUnit then - local Menu = self:GetState( Event.IniUnit, "ScoringMenu" ) -- Core.Menu#MENU_GROUP - if Menu then - -- TODO: Check if this fixes #281. - --Menu:Remove() - end - end -end - - ---- Handles the OnHit event for the scoring. --- @param #SCORING self --- @param Core.Event#EVENTDATA Event -function SCORING:_EventOnHit( Event ) - self:F( { Event } ) - - local InitUnit = nil - local InitUNIT = nil - local InitUnitName = "" - local InitGroup = nil - local InitGroupName = "" - local InitPlayerName = nil - - local InitCoalition = nil - local InitCategory = nil - local InitType = nil - local InitUnitCoalition = nil - local InitUnitCategory = nil - local InitUnitType = nil - - local TargetUnit = nil - local TargetUNIT = nil - local TargetUnitName = "" - local TargetGroup = nil - local TargetGroupName = "" - local TargetPlayerName = nil - - local TargetCoalition = nil - local TargetCategory = nil - local TargetType = nil - local TargetUnitCoalition = nil - local TargetUnitCategory = nil - local TargetUnitType = nil - - if Event.IniDCSUnit then - - InitUnit = Event.IniDCSUnit - InitUNIT = Event.IniUnit - InitUnitName = Event.IniDCSUnitName - InitGroup = Event.IniDCSGroup - InitGroupName = Event.IniDCSGroupName - InitPlayerName = Event.IniPlayerName - - InitCoalition = Event.IniCoalition - --TODO: Workaround Client DCS Bug - --InitCategory = InitUnit:getCategory() - --InitCategory = InitUnit:getDesc().category - InitCategory = Event.IniCategory - InitType = Event.IniTypeName - - InitUnitCoalition = _SCORINGCoalition[InitCoalition] - InitUnitCategory = _SCORINGCategory[InitCategory] - InitUnitType = InitType - - self:T( { InitUnitName, InitGroupName, InitPlayerName, InitCoalition, InitCategory, InitType , InitUnitCoalition, InitUnitCategory, InitUnitType } ) - end - - - if Event.TgtDCSUnit then - - TargetUnit = Event.TgtDCSUnit - TargetUNIT = Event.TgtUnit - TargetUnitName = Event.TgtDCSUnitName - TargetGroup = Event.TgtDCSGroup - TargetGroupName = Event.TgtDCSGroupName - TargetPlayerName = Event.TgtPlayerName - - TargetCoalition = Event.TgtCoalition - --TODO: Workaround Client DCS Bug - --TargetCategory = TargetUnit:getCategory() - --TargetCategory = TargetUnit:getDesc().category - TargetCategory = Event.TgtCategory - TargetType = Event.TgtTypeName - - TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] - TargetUnitCategory = _SCORINGCategory[TargetCategory] - TargetUnitType = TargetType - - self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType, TargetUnitCoalition, TargetUnitCategory, TargetUnitType } ) - end - - if InitPlayerName ~= nil then -- It is a player that is hitting something - self:_AddPlayerFromUnit( InitUNIT ) - if self.Players[InitPlayerName] then -- This should normally not happen, but i'll test it anyway. - if TargetPlayerName ~= nil then -- It is a player hitting another player ... - self:_AddPlayerFromUnit( TargetUNIT ) - end - - self:T( "Hitting Something" ) - - -- What is he hitting? - if TargetCategory then - - -- A target got hit, score it. - -- Player contains the score data from self.Players[InitPlayerName] - local Player = self.Players[InitPlayerName] - - -- Ensure there is a hit table per TargetCategory and TargetUnitName. - Player.Hit[TargetCategory] = Player.Hit[TargetCategory] or {} - Player.Hit[TargetCategory][TargetUnitName] = Player.Hit[TargetCategory][TargetUnitName] or {} - - -- PlayerHit contains the score counters and data per unit that was hit. - local PlayerHit = Player.Hit[TargetCategory][TargetUnitName] - - PlayerHit.Score = PlayerHit.Score or 0 - PlayerHit.Penalty = PlayerHit.Penalty or 0 - PlayerHit.ScoreHit = PlayerHit.ScoreHit or 0 - PlayerHit.PenaltyHit = PlayerHit.PenaltyHit or 0 - PlayerHit.TimeStamp = PlayerHit.TimeStamp or 0 - PlayerHit.UNIT = PlayerHit.UNIT or TargetUNIT - PlayerHit.ThreatLevel, PlayerHit.ThreatType = PlayerHit.UNIT:GetThreatLevel() - - -- Only grant hit scores if there was more than one second between the last hit. - if timer.getTime() - PlayerHit.TimeStamp > 1 then - PlayerHit.TimeStamp = timer.getTime() - - if TargetPlayerName ~= nil then -- It is a player hitting another player ... - - -- Ensure there is a Player to Player hit reference table. - Player.HitPlayers[TargetPlayerName] = true - end - - local Score = 0 - - if InitCoalition then -- A coalition object was hit. - if InitCoalition == TargetCoalition then - Player.Penalty = Player.Penalty + 10 - PlayerHit.Penalty = PlayerHit.Penalty + 10 - PlayerHit.PenaltyHit = PlayerHit.PenaltyHit + 1 - - if TargetPlayerName ~= nil then -- It is a player hitting another player ... - MESSAGE - :New( "Player '" .. InitPlayerName .. "' hit friendly player '" .. TargetPlayerName .. "' " .. - TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.PenaltyHit .. " times. " .. - "Penalty: -" .. PlayerHit.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, - 2 - ) - :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) - else - MESSAGE - :New( "Player '" .. InitPlayerName .. "' hit a friendly target " .. - TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.PenaltyHit .. " times. " .. - "Penalty: -" .. PlayerHit.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, - 2 - ) - :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) - end - self:ScoreCSV( InitPlayerName, TargetPlayerName, "HIT_PENALTY", 1, -10, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - else - Player.Score = Player.Score + 1 - PlayerHit.Score = PlayerHit.Score + 1 - PlayerHit.ScoreHit = PlayerHit.ScoreHit + 1 - if TargetPlayerName ~= nil then -- It is a player hitting another player ... - MESSAGE - :New( "Player '" .. InitPlayerName .. "' hit enemy player '" .. TargetPlayerName .. "' " .. - TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.ScoreHit .. " times. " .. - "Score: " .. PlayerHit.Score .. ". Score Total:" .. Player.Score - Player.Penalty, - 2 - ) - :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) - else - MESSAGE - :New( "Player '" .. InitPlayerName .. "' hit an enemy target " .. - TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.ScoreHit .. " times. " .. - "Score: " .. PlayerHit.Score .. ". Score Total:" .. Player.Score - Player.Penalty, - 2 - ) - :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) - end - self:ScoreCSV( InitPlayerName, TargetPlayerName, "HIT_SCORE", 1, 1, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - end - else -- A scenery object was hit. - MESSAGE - :New( "Player '" .. InitPlayerName .. "' hit a scenery object.", - 2 - ) - :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) - self:ScoreCSV( InitPlayerName, "", "HIT_SCORE", 1, 0, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, "", "Scenery", TargetUnitType ) - end - end - end - end - elseif InitPlayerName == nil then -- It is an AI hitting a player??? - - end - - -- It is a weapon initiated by a player, that is hitting something - -- This seems to occur only with scenery and static objects. - if Event.WeaponPlayerName ~= nil then - self:_AddPlayerFromUnit( Event.WeaponUNIT ) - if self.Players[Event.WeaponPlayerName] then -- This should normally not happen, but i'll test it anyway. - if TargetPlayerName ~= nil then -- It is a player hitting another player ... - self:_AddPlayerFromUnit( TargetUNIT ) - end - - self:T( "Hitting Scenery" ) - - -- What is he hitting? - if TargetCategory then - - -- A scenery or static got hit, score it. - -- Player contains the score data from self.Players[WeaponPlayerName] - local Player = self.Players[Event.WeaponPlayerName] - - -- Ensure there is a hit table per TargetCategory and TargetUnitName. - Player.Hit[TargetCategory] = Player.Hit[TargetCategory] or {} - Player.Hit[TargetCategory][TargetUnitName] = Player.Hit[TargetCategory][TargetUnitName] or {} - - -- PlayerHit contains the score counters and data per unit that was hit. - local PlayerHit = Player.Hit[TargetCategory][TargetUnitName] - - PlayerHit.Score = PlayerHit.Score or 0 - PlayerHit.Penalty = PlayerHit.Penalty or 0 - PlayerHit.ScoreHit = PlayerHit.ScoreHit or 0 - PlayerHit.PenaltyHit = PlayerHit.PenaltyHit or 0 - PlayerHit.TimeStamp = PlayerHit.TimeStamp or 0 - PlayerHit.UNIT = PlayerHit.UNIT or TargetUNIT - PlayerHit.ThreatLevel, PlayerHit.ThreatType = PlayerHit.UNIT:GetThreatLevel() - - -- Only grant hit scores if there was more than one second between the last hit. - if timer.getTime() - PlayerHit.TimeStamp > 1 then - PlayerHit.TimeStamp = timer.getTime() - - local Score = 0 - - if InitCoalition then -- A coalition object was hit, probably a static. - if InitCoalition == TargetCoalition then - -- TODO: Penalty according scale - Player.Penalty = Player.Penalty + 10 - PlayerHit.Penalty = PlayerHit.Penalty + 10 - PlayerHit.PenaltyHit = PlayerHit.PenaltyHit + 1 - - MESSAGE - :New( "Player '" .. Event.WeaponPlayerName .. "' hit a friendly target " .. - TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.PenaltyHit .. " times. " .. - "Penalty: -" .. PlayerHit.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, - 2 - ) - :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) - :ToCoalitionIf( Event.WeaponCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) - self:ScoreCSV( Event.WeaponPlayerName, TargetPlayerName, "HIT_PENALTY", 1, -10, Event.WeaponName, Event.WeaponCoalition, Event.WeaponCategory, Event.WeaponTypeName, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - else - Player.Score = Player.Score + 1 - PlayerHit.Score = PlayerHit.Score + 1 - PlayerHit.ScoreHit = PlayerHit.ScoreHit + 1 - MESSAGE - :New( "Player '" .. Event.WeaponPlayerName .. "' hit an enemy target " .. - TargetUnitCategory .. " ( " .. TargetType .. " ) " .. PlayerHit.ScoreHit .. " times. " .. - "Score: " .. PlayerHit.Score .. ". Score Total:" .. Player.Score - Player.Penalty, - 2 - ) - :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) - :ToCoalitionIf( Event.WeaponCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) - self:ScoreCSV( Event.WeaponPlayerName, TargetPlayerName, "HIT_SCORE", 1, 1, Event.WeaponName, Event.WeaponCoalition, Event.WeaponCategory, Event.WeaponTypeName, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - end - else -- A scenery object was hit. - MESSAGE - :New( "Player '" .. Event.WeaponPlayerName .. "' hit a scenery object.", - 2 - ) - :ToAllIf( self:IfMessagesHit() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesHit() and self:IfMessagesToCoalition() ) - self:ScoreCSV( Event.WeaponPlayerName, "", "HIT_SCORE", 1, 0, Event.WeaponName, Event.WeaponCoalition, Event.WeaponCategory, Event.WeaponTypeName, TargetUnitName, "", "Scenery", TargetUnitType ) - end - end - end - end - end -end - ---- Track DEAD or CRASH events for the scoring. --- @param #SCORING self --- @param Core.Event#EVENTDATA Event -function SCORING:_EventOnDeadOrCrash( Event ) - self:F( { Event } ) - - local TargetUnit = nil - local TargetGroup = nil - local TargetUnitName = "" - local TargetGroupName = "" - local TargetPlayerName = "" - local TargetCoalition = nil - local TargetCategory = nil - local TargetType = nil - local TargetUnitCoalition = nil - local TargetUnitCategory = nil - local TargetUnitType = nil - - if Event.IniDCSUnit then - - TargetUnit = Event.IniUnit - TargetUnitName = Event.IniDCSUnitName - TargetGroup = Event.IniDCSGroup - TargetGroupName = Event.IniDCSGroupName - TargetPlayerName = Event.IniPlayerName - - TargetCoalition = Event.IniCoalition - --TargetCategory = TargetUnit:getCategory() - --TargetCategory = TargetUnit:getDesc().category -- Workaround - TargetCategory = Event.IniCategory - TargetType = Event.IniTypeName - - TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] - TargetUnitCategory = _SCORINGCategory[TargetCategory] - TargetUnitType = TargetType - - self:T( { TargetUnitName, TargetGroupName, TargetPlayerName, TargetCoalition, TargetCategory, TargetType } ) - end - - -- Player contains the score and reference data for the player. - for PlayerName, Player in pairs( self.Players ) do - if Player then -- This should normally not happen, but i'll test it anyway. - self:T( "Something got destroyed" ) - - -- Some variables - local InitUnitName = Player.UnitName - local InitUnitType = Player.UnitType - local InitCoalition = Player.UnitCoalition - local InitCategory = Player.UnitCategory - local InitUnitCoalition = _SCORINGCoalition[InitCoalition] - local InitUnitCategory = _SCORINGCategory[InitCategory] - - self:T( { InitUnitName, InitUnitType, InitUnitCoalition, InitCoalition, InitUnitCategory, InitCategory } ) - - local Destroyed = false - - -- What is the player destroying? - if Player and Player.Hit and Player.Hit[TargetCategory] and Player.Hit[TargetCategory][TargetUnitName] and Player.Hit[TargetCategory][TargetUnitName].TimeStamp ~= 0 then -- Was there a hit for this unit for this player before registered??? - - local TargetThreatLevel = Player.Hit[TargetCategory][TargetUnitName].ThreatLevel - local TargetThreatType = Player.Hit[TargetCategory][TargetUnitName].ThreatType - - Player.Destroy[TargetCategory] = Player.Destroy[TargetCategory] or {} - Player.Destroy[TargetCategory][TargetType] = Player.Destroy[TargetCategory][TargetType] or {} - - -- PlayerDestroy contains the destroy score data per category and target type of the player. - local TargetDestroy = Player.Destroy[TargetCategory][TargetType] - TargetDestroy.Score = TargetDestroy.Score or 0 - TargetDestroy.ScoreDestroy = TargetDestroy.ScoreDestroy or 0 - TargetDestroy.Penalty = TargetDestroy.Penalty or 0 - TargetDestroy.PenaltyDestroy = TargetDestroy.PenaltyDestroy or 0 - - if TargetCoalition then - if InitCoalition == TargetCoalition then - local ThreatLevelTarget = TargetThreatLevel - local ThreatTypeTarget = TargetThreatType - local ThreatLevelPlayer = Player.ThreatLevel / 10 + 1 - local ThreatPenalty = math.ceil( ( ThreatLevelTarget / ThreatLevelPlayer ) * self.ScaleDestroyPenalty / 10 ) - self:E( { ThreatLevel = ThreatPenalty, ThreatLevelTarget = ThreatLevelTarget, ThreatTypeTarget = ThreatTypeTarget, ThreatLevelPlayer = ThreatLevelPlayer } ) - - Player.Penalty = Player.Penalty + ThreatPenalty - TargetDestroy.Penalty = TargetDestroy.Penalty + ThreatPenalty - TargetDestroy.PenaltyDestroy = TargetDestroy.PenaltyDestroy + 1 - - if Player.HitPlayers[TargetPlayerName] then -- A player destroyed another player - MESSAGE - :New( "Player '" .. PlayerName .. "' destroyed friendly player '" .. TargetPlayerName .. "' " .. - TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. TargetDestroy.PenaltyDestroy .. " times. " .. - "Penalty: -" .. TargetDestroy.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, - 15 - ) - :ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesDestroy() and self:IfMessagesToCoalition() ) - else - MESSAGE - :New( "Player '" .. PlayerName .. "' destroyed a friendly target " .. - TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. TargetDestroy.PenaltyDestroy .. " times. " .. - "Penalty: -" .. TargetDestroy.Penalty .. ". Score Total:" .. Player.Score - Player.Penalty, - 15 - ) - :ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesDestroy() and self:IfMessagesToCoalition() ) - end - - Destroyed = true - self:ScoreCSV( PlayerName, TargetPlayerName, "DESTROY_PENALTY", 1, ThreatPenalty, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - else - - local ThreatLevelTarget = TargetThreatLevel - local ThreatTypeTarget = TargetThreatType - local ThreatLevelPlayer = Player.ThreatLevel / 10 + 1 - local ThreatScore = math.ceil( ( ThreatLevelTarget / ThreatLevelPlayer ) * self.ScaleDestroyScore / 10 ) - - self:E( { ThreatLevel = ThreatScore, ThreatLevelTarget = ThreatLevelTarget, ThreatTypeTarget = ThreatTypeTarget, ThreatLevelPlayer = ThreatLevelPlayer } ) - - Player.Score = Player.Score + ThreatScore - TargetDestroy.Score = TargetDestroy.Score + ThreatScore - TargetDestroy.ScoreDestroy = TargetDestroy.ScoreDestroy + 1 - if Player.HitPlayers[TargetPlayerName] then -- A player destroyed another player - MESSAGE - :New( "Player '" .. PlayerName .. "' destroyed enemy player '" .. TargetPlayerName .. "' " .. - TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. TargetDestroy.ScoreDestroy .. " times. " .. - "Score: " .. TargetDestroy.Score .. ". Score Total:" .. Player.Score - Player.Penalty, - 15 - ) - :ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesDestroy() and self:IfMessagesToCoalition() ) - else - MESSAGE - :New( "Player '" .. PlayerName .. "' destroyed an enemy " .. - TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. TargetDestroy.ScoreDestroy .. " times. " .. - "Score: " .. TargetDestroy.Score .. ". Total:" .. Player.Score - Player.Penalty, - 15 - ) - :ToAllIf( self:IfMessagesDestroy() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesDestroy() and self:IfMessagesToCoalition() ) - end - Destroyed = true - self:ScoreCSV( PlayerName, TargetPlayerName, "DESTROY_SCORE", 1, ThreatScore, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - - local UnitName = TargetUnit:GetName() - local Score = self.ScoringObjects[UnitName] - if Score then - Player.Score = Player.Score + Score - TargetDestroy.Score = TargetDestroy.Score + Score - MESSAGE - :New( "Special target '" .. TargetUnitCategory .. " ( " .. ThreatTypeTarget .. " ) " .. " destroyed! " .. - "Player '" .. PlayerName .. "' receives an extra " .. Score .. " points! Total: " .. Player.Score - Player.Penalty, - 15 - ) - :ToAllIf( self:IfMessagesScore() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesScore() and self:IfMessagesToCoalition() ) - self:ScoreCSV( PlayerName, TargetPlayerName, "DESTROY_SCORE", 1, Score, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - Destroyed = true - end - - -- Check if there are Zones where the destruction happened. - for ZoneName, ScoreZoneData in pairs( self.ScoringZones ) do - self:E( { ScoringZone = ScoreZoneData } ) - local ScoreZone = ScoreZoneData.ScoreZone -- Core.Zone#ZONE_BASE - local Score = ScoreZoneData.Score - if ScoreZone:IsVec2InZone( TargetUnit:GetVec2() ) then - Player.Score = Player.Score + Score - TargetDestroy.Score = TargetDestroy.Score + Score - MESSAGE - :New( "Target destroyed in zone '" .. ScoreZone:GetName() .. "'." .. - "Player '" .. PlayerName .. "' receives an extra " .. Score .. " points! " .. - "Total: " .. Player.Score - Player.Penalty, - 15 ) - :ToAllIf( self:IfMessagesZone() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesZone() and self:IfMessagesToCoalition() ) - self:ScoreCSV( PlayerName, TargetPlayerName, "DESTROY_SCORE", 1, Score, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - Destroyed = true - end - end - - end - else - -- Check if there are Zones where the destruction happened. - for ZoneName, ScoreZoneData in pairs( self.ScoringZones ) do - self:E( { ScoringZone = ScoreZoneData } ) - local ScoreZone = ScoreZoneData.ScoreZone -- Core.Zone#ZONE_BASE - local Score = ScoreZoneData.Score - if ScoreZone:IsVec2InZone( TargetUnit:GetVec2() ) then - Player.Score = Player.Score + Score - TargetDestroy.Score = TargetDestroy.Score + Score - MESSAGE - :New( "Scenery destroyed in zone '" .. ScoreZone:GetName() .. "'." .. - "Player '" .. PlayerName .. "' receives an extra " .. Score .. " points! " .. - "Total: " .. Player.Score - Player.Penalty, - 15 - ) - :ToAllIf( self:IfMessagesZone() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesZone() and self:IfMessagesToCoalition() ) - Destroyed = true - self:ScoreCSV( PlayerName, "", "DESTROY_SCORE", 1, Score, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, "", "Scenery", TargetUnitType ) - end - end - end - - -- Delete now the hit cache if the target was destroyed. - -- Otherwise points will be granted every time a target gets killed by the players that hit that target. - -- This is only relevant for player to player destroys. - if Destroyed then - Player.Hit[TargetCategory][TargetUnitName].TimeStamp = 0 - end - end - end - end -end - - ---- Produce detailed report of player hit scores. --- @param #SCORING self --- @param #string PlayerName The name of the player. --- @return #string The report. -function SCORING:ReportDetailedPlayerHits( PlayerName ) - - local ScoreMessage = "" - local PlayerScore = 0 - local PlayerPenalty = 0 - - local PlayerData = self.Players[PlayerName] - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local ScoreMessageHits = "" - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - self:T( CategoryName ) - if PlayerData.Hit[CategoryID] then - self:T( "Hit scores exist for player " .. PlayerName ) - local Score = 0 - local ScoreHit = 0 - local Penalty = 0 - local PenaltyHit = 0 - for UnitName, UnitData in pairs( PlayerData.Hit[CategoryID] ) do - Score = Score + UnitData.Score - ScoreHit = ScoreHit + UnitData.ScoreHit - Penalty = Penalty + UnitData.Penalty - PenaltyHit = UnitData.PenaltyHit - end - local ScoreMessageHit = string.format( "%s:%d ", CategoryName, Score - Penalty ) - self:T( ScoreMessageHit ) - ScoreMessageHits = ScoreMessageHits .. ScoreMessageHit - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageHits = ScoreMessageHits .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageHits ~= "" then - ScoreMessage = "Hits: " .. ScoreMessageHits - end - end - - return ScoreMessage, PlayerScore, PlayerPenalty -end - - ---- Produce detailed report of player destroy scores. --- @param #SCORING self --- @param #string PlayerName The name of the player. --- @return #string The report. -function SCORING:ReportDetailedPlayerDestroys( PlayerName ) - - local ScoreMessage = "" - local PlayerScore = 0 - local PlayerPenalty = 0 - - local PlayerData = self.Players[PlayerName] - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local ScoreMessageDestroys = "" - for CategoryID, CategoryName in pairs( _SCORINGCategory ) do - if PlayerData.Destroy[CategoryID] then - self:T( "Destroy scores exist for player " .. PlayerName ) - local Score = 0 - local ScoreDestroy = 0 - local Penalty = 0 - local PenaltyDestroy = 0 - - for UnitName, UnitData in pairs( PlayerData.Destroy[CategoryID] ) do - self:E( { UnitData = UnitData } ) - if UnitData ~= {} then - Score = Score + UnitData.Score - ScoreDestroy = ScoreDestroy + UnitData.ScoreDestroy - Penalty = Penalty + UnitData.Penalty - PenaltyDestroy = PenaltyDestroy + UnitData.PenaltyDestroy - end - end - - local ScoreMessageDestroy = string.format( " %s:%d ", CategoryName, Score - Penalty ) - self:T( ScoreMessageDestroy ) - ScoreMessageDestroys = ScoreMessageDestroys .. ScoreMessageDestroy - - PlayerScore = PlayerScore + Score - PlayerPenalty = PlayerPenalty + Penalty - else - --ScoreMessageDestroys = ScoreMessageDestroys .. string.format( "%s:%d ", string.format(CategoryName, 1, 1), 0 ) - end - end - if ScoreMessageDestroys ~= "" then - ScoreMessage = "Destroys: " .. ScoreMessageDestroys - end - end - - return ScoreMessage, PlayerScore, PlayerPenalty -end - ---- Produce detailed report of player penalty scores because of changing the coalition. --- @param #SCORING self --- @param #string PlayerName The name of the player. --- @return #string The report. -function SCORING:ReportDetailedPlayerCoalitionChanges( PlayerName ) - - local ScoreMessage = "" - local PlayerScore = 0 - local PlayerPenalty = 0 - - local PlayerData = self.Players[PlayerName] - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local ScoreMessageCoalitionChangePenalties = "" - if PlayerData.PenaltyCoalition ~= 0 then - ScoreMessageCoalitionChangePenalties = ScoreMessageCoalitionChangePenalties .. string.format( " -%d (%d changed)", PlayerData.Penalty, PlayerData.PenaltyCoalition ) - PlayerPenalty = PlayerPenalty + PlayerData.Penalty - end - if ScoreMessageCoalitionChangePenalties ~= "" then - ScoreMessage = ScoreMessage .. "Coalition Penalties: " .. ScoreMessageCoalitionChangePenalties - end - end - - return ScoreMessage, PlayerScore, PlayerPenalty -end - ---- Produce detailed report of player goal scores. --- @param #SCORING self --- @param #string PlayerName The name of the player. --- @return #string The report. -function SCORING:ReportDetailedPlayerGoals( PlayerName ) - - local ScoreMessage = "" - local PlayerScore = 0 - local PlayerPenalty = 0 - - local PlayerData = self.Players[PlayerName] - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local ScoreMessageGoal = "" - local ScoreGoal = 0 - local ScoreTask = 0 - for GoalName, GoalData in pairs( PlayerData.Goals ) do - ScoreGoal = ScoreGoal + GoalData.Score - ScoreMessageGoal = ScoreMessageGoal .. "'" .. GoalName .. "':" .. GoalData.Score .. "; " - end - PlayerScore = PlayerScore + ScoreGoal - - if ScoreMessageGoal ~= "" then - ScoreMessage = "Goals: " .. ScoreMessageGoal - end - end - - return ScoreMessage, PlayerScore, PlayerPenalty -end - ---- Produce detailed report of player penalty scores because of changing the coalition. --- @param #SCORING self --- @param #string PlayerName The name of the player. --- @return #string The report. -function SCORING:ReportDetailedPlayerMissions( PlayerName ) - - local ScoreMessage = "" - local PlayerScore = 0 - local PlayerPenalty = 0 - - local PlayerData = self.Players[PlayerName] - if PlayerData then -- This should normally not happen, but i'll test it anyway. - self:T( "Score Player: " .. PlayerName ) - - -- Some variables - local InitUnitCoalition = _SCORINGCoalition[PlayerData.UnitCoalition] - local InitUnitCategory = _SCORINGCategory[PlayerData.UnitCategory] - local InitUnitType = PlayerData.UnitType - local InitUnitName = PlayerData.UnitName - - local ScoreMessageMission = "" - local ScoreMission = 0 - local ScoreTask = 0 - for MissionName, MissionData in pairs( PlayerData.Mission ) do - ScoreMission = ScoreMission + MissionData.ScoreMission - ScoreTask = ScoreTask + MissionData.ScoreTask - ScoreMessageMission = ScoreMessageMission .. "'" .. MissionName .. "'; " - end - PlayerScore = PlayerScore + ScoreMission + ScoreTask - - if ScoreMessageMission ~= "" then - ScoreMessage = "Tasks: " .. ScoreTask .. " Mission: " .. ScoreMission .. " ( " .. ScoreMessageMission .. ")" - end - end - - return ScoreMessage, PlayerScore, PlayerPenalty -end - - ---- Report Group Score Summary --- @param #SCORING self --- @param Wrapper.Group#GROUP PlayerGroup The player group. -function SCORING:ReportScoreGroupSummary( PlayerGroup ) - - local PlayerMessage = "" - - self:T( "Report Score Group Summary" ) - - local PlayerUnits = PlayerGroup:GetUnits() - for UnitID, PlayerUnit in pairs( PlayerUnits ) do - local PlayerUnit = PlayerUnit -- Wrapper.Unit#UNIT - local PlayerName = PlayerUnit:GetPlayerName() - - if PlayerName then - - local ReportHits, ScoreHits, PenaltyHits = self:ReportDetailedPlayerHits( PlayerName ) - ReportHits = ReportHits ~= "" and "\n- " .. ReportHits or ReportHits - self:E( { ReportHits, ScoreHits, PenaltyHits } ) - - local ReportDestroys, ScoreDestroys, PenaltyDestroys = self:ReportDetailedPlayerDestroys( PlayerName ) - ReportDestroys = ReportDestroys ~= "" and "\n- " .. ReportDestroys or ReportDestroys - self:E( { ReportDestroys, ScoreDestroys, PenaltyDestroys } ) - - local ReportCoalitionChanges, ScoreCoalitionChanges, PenaltyCoalitionChanges = self:ReportDetailedPlayerCoalitionChanges( PlayerName ) - ReportCoalitionChanges = ReportCoalitionChanges ~= "" and "\n- " .. ReportCoalitionChanges or ReportCoalitionChanges - self:E( { ReportCoalitionChanges, ScoreCoalitionChanges, PenaltyCoalitionChanges } ) - - local ReportGoals, ScoreGoals, PenaltyGoals = self:ReportDetailedPlayerGoals( PlayerName ) - ReportGoals = ReportGoals ~= "" and "\n- " .. ReportGoals or ReportGoals - self:E( { ReportGoals, ScoreGoals, PenaltyGoals } ) - - local ReportMissions, ScoreMissions, PenaltyMissions = self:ReportDetailedPlayerMissions( PlayerName ) - ReportMissions = ReportMissions ~= "" and "\n- " .. ReportMissions or ReportMissions - self:E( { ReportMissions, ScoreMissions, PenaltyMissions } ) - - local PlayerScore = ScoreHits + ScoreDestroys + ScoreCoalitionChanges + ScoreGoals + ScoreMissions - local PlayerPenalty = PenaltyHits + PenaltyDestroys + PenaltyCoalitionChanges + ScoreGoals + PenaltyMissions - - PlayerMessage = - string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties )", - PlayerName, - PlayerScore - PlayerPenalty, - PlayerScore, - PlayerPenalty - ) - MESSAGE:New( PlayerMessage, 30, "Player '" .. PlayerName .. "'" ):ToGroup( PlayerGroup ) - end - end - -end - ---- Report Group Score Detailed --- @param #SCORING self --- @param Wrapper.Group#GROUP PlayerGroup The player group. -function SCORING:ReportScoreGroupDetailed( PlayerGroup ) - - local PlayerMessage = "" - - self:T( "Report Score Group Detailed" ) - - local PlayerUnits = PlayerGroup:GetUnits() - for UnitID, PlayerUnit in pairs( PlayerUnits ) do - local PlayerUnit = PlayerUnit -- Wrapper.Unit#UNIT - local PlayerName = PlayerUnit:GetPlayerName() - - if PlayerName then - - local ReportHits, ScoreHits, PenaltyHits = self:ReportDetailedPlayerHits( PlayerName ) - ReportHits = ReportHits ~= "" and "\n- " .. ReportHits or ReportHits - self:E( { ReportHits, ScoreHits, PenaltyHits } ) - - local ReportDestroys, ScoreDestroys, PenaltyDestroys = self:ReportDetailedPlayerDestroys( PlayerName ) - ReportDestroys = ReportDestroys ~= "" and "\n- " .. ReportDestroys or ReportDestroys - self:E( { ReportDestroys, ScoreDestroys, PenaltyDestroys } ) - - local ReportCoalitionChanges, ScoreCoalitionChanges, PenaltyCoalitionChanges = self:ReportDetailedPlayerCoalitionChanges( PlayerName ) - ReportCoalitionChanges = ReportCoalitionChanges ~= "" and "\n- " .. ReportCoalitionChanges or ReportCoalitionChanges - self:E( { ReportCoalitionChanges, ScoreCoalitionChanges, PenaltyCoalitionChanges } ) - - local ReportGoals, ScoreGoals, PenaltyGoals = self:ReportDetailedPlayerGoals( PlayerName ) - ReportGoals = ReportGoals ~= "" and "\n- " .. ReportGoals or ReportGoals - self:E( { ReportGoals, ScoreGoals, PenaltyGoals } ) - - local ReportMissions, ScoreMissions, PenaltyMissions = self:ReportDetailedPlayerMissions( PlayerName ) - ReportMissions = ReportMissions ~= "" and "\n- " .. ReportMissions or ReportMissions - self:E( { ReportMissions, ScoreMissions, PenaltyMissions } ) - - local PlayerScore = ScoreHits + ScoreDestroys + ScoreCoalitionChanges + ScoreGoals + ScoreMissions - local PlayerPenalty = PenaltyHits + PenaltyDestroys + PenaltyCoalitionChanges + ScoreGoals + PenaltyMissions - - PlayerMessage = - string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties )%s%s%s%s%s", - PlayerName, - PlayerScore - PlayerPenalty, - PlayerScore, - PlayerPenalty, - ReportHits, - ReportDestroys, - ReportCoalitionChanges, - ReportGoals, - ReportMissions - ) - MESSAGE:New( PlayerMessage, 30, "Player '" .. PlayerName .. "'" ):ToGroup( PlayerGroup ) - end - end - -end - ---- Report all players score --- @param #SCORING self --- @param Wrapper.Group#GROUP PlayerGroup The player group. -function SCORING:ReportScoreAllSummary( PlayerGroup ) - - local PlayerMessage = "" - - self:T( "Report Score All Players" ) - - for PlayerName, PlayerData in pairs( self.Players ) do - - if PlayerName then - - local ReportHits, ScoreHits, PenaltyHits = self:ReportDetailedPlayerHits( PlayerName ) - ReportHits = ReportHits ~= "" and "\n- " .. ReportHits or ReportHits - self:E( { ReportHits, ScoreHits, PenaltyHits } ) - - local ReportDestroys, ScoreDestroys, PenaltyDestroys = self:ReportDetailedPlayerDestroys( PlayerName ) - ReportDestroys = ReportDestroys ~= "" and "\n- " .. ReportDestroys or ReportDestroys - self:E( { ReportDestroys, ScoreDestroys, PenaltyDestroys } ) - - local ReportCoalitionChanges, ScoreCoalitionChanges, PenaltyCoalitionChanges = self:ReportDetailedPlayerCoalitionChanges( PlayerName ) - ReportCoalitionChanges = ReportCoalitionChanges ~= "" and "\n- " .. ReportCoalitionChanges or ReportCoalitionChanges - self:E( { ReportCoalitionChanges, ScoreCoalitionChanges, PenaltyCoalitionChanges } ) - - local ReportGoals, ScoreGoals, PenaltyGoals = self:ReportDetailedPlayerGoals( PlayerName ) - ReportGoals = ReportGoals ~= "" and "\n- " .. ReportGoals or ReportGoals - self:E( { ReportGoals, ScoreGoals, PenaltyGoals } ) - - local ReportMissions, ScoreMissions, PenaltyMissions = self:ReportDetailedPlayerMissions( PlayerName ) - ReportMissions = ReportMissions ~= "" and "\n- " .. ReportMissions or ReportMissions - self:E( { ReportMissions, ScoreMissions, PenaltyMissions } ) - - local PlayerScore = ScoreHits + ScoreDestroys + ScoreCoalitionChanges + ScoreGoals + ScoreMissions - local PlayerPenalty = PenaltyHits + PenaltyDestroys + PenaltyCoalitionChanges + ScoreGoals + PenaltyMissions - - PlayerMessage = - string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties )", - PlayerName, - PlayerScore - PlayerPenalty, - PlayerScore, - PlayerPenalty - ) - MESSAGE:New( PlayerMessage, 30, "Player '" .. PlayerName .. "'" ):ToGroup( PlayerGroup ) - end - end - -end - - -function SCORING:SecondsToClock(sSeconds) - local nSeconds = sSeconds - if nSeconds == 0 then - --return nil; - return "00:00:00"; - else - nHours = string.format("%02.f", math.floor(nSeconds/3600)); - nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60))); - nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60)); - return nHours..":"..nMins..":"..nSecs - end -end - ---- Opens a score CSV file to log the scores. --- @param #SCORING self --- @param #string ScoringCSV --- @return #SCORING self --- @usage --- -- Open a new CSV file to log the scores of the game Gori Valley. Let the name of the CSV file begin with "Player Scores". --- ScoringObject = SCORING:New( "Gori Valley" ) --- ScoringObject:OpenCSV( "Player Scores" ) -function SCORING:OpenCSV( ScoringCSV ) - self:F( ScoringCSV ) - - if lfs and io and os then - if ScoringCSV then - self.ScoringCSV = ScoringCSV - local fdir = lfs.writedir() .. [[Logs\]] .. self.ScoringCSV .. " " .. os.date( "%Y-%m-%d %H-%M-%S" ) .. ".csv" - - self.CSVFile, self.err = io.open( fdir, "w+" ) - if not self.CSVFile then - error( "Error: Cannot open CSV file in " .. lfs.writedir() ) - end - - self.CSVFile:write( '"GameName","RunTime","Time","PlayerName","TargetPlayerName","ScoreType","PlayerUnitCoaltion","PlayerUnitCategory","PlayerUnitType","PlayerUnitName","TargetUnitCoalition","TargetUnitCategory","TargetUnitType","TargetUnitName","Times","Score"\n' ) - - self.RunTime = os.date("%y-%m-%d_%H-%M-%S") - else - error( "A string containing the CSV file name must be given." ) - end - else - self:E( "The MissionScripting.lua file has not been changed to allow lfs, io and os modules to be used..." ) - end - return self -end - - ---- Registers a score for a player. --- @param #SCORING self --- @param #string PlayerName The name of the player. --- @param #string TargetPlayerName The name of the target player. --- @param #string ScoreType The type of the score. --- @param #string ScoreTimes The amount of scores achieved. --- @param #string ScoreAmount The score given. --- @param #string PlayerUnitName The unit name of the player. --- @param #string PlayerUnitCoalition The coalition of the player unit. --- @param #string PlayerUnitCategory The category of the player unit. --- @param #string PlayerUnitType The type of the player unit. --- @param #string TargetUnitName The name of the target unit. --- @param #string TargetUnitCoalition The coalition of the target unit. --- @param #string TargetUnitCategory The category of the target unit. --- @param #string TargetUnitType The type of the target unit. --- @return #SCORING self -function SCORING:ScoreCSV( PlayerName, TargetPlayerName, ScoreType, ScoreTimes, ScoreAmount, PlayerUnitName, PlayerUnitCoalition, PlayerUnitCategory, PlayerUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType ) - --write statistic information to file - local ScoreTime = self:SecondsToClock( timer.getTime() ) - PlayerName = PlayerName:gsub( '"', '_' ) - - TargetPlayerName = TargetPlayerName or "" - TargetPlayerName = TargetPlayerName:gsub( '"', '_' ) - - if PlayerUnitName and PlayerUnitName ~= '' then - local PlayerUnit = Unit.getByName( PlayerUnitName ) - - if PlayerUnit then - if not PlayerUnitCategory then - --PlayerUnitCategory = SCORINGCategory[PlayerUnit:getCategory()] - PlayerUnitCategory = _SCORINGCategory[PlayerUnit:getDesc().category] - end - - if not PlayerUnitCoalition then - PlayerUnitCoalition = _SCORINGCoalition[PlayerUnit:getCoalition()] - end - - if not PlayerUnitType then - PlayerUnitType = PlayerUnit:getTypeName() - end - else - PlayerUnitName = '' - PlayerUnitCategory = '' - PlayerUnitCoalition = '' - PlayerUnitType = '' - end - else - PlayerUnitName = '' - PlayerUnitCategory = '' - PlayerUnitCoalition = '' - PlayerUnitType = '' - end - - TargetUnitCoalition = TargetUnitCoalition or "" - TargetUnitCategory = TargetUnitCategory or "" - TargetUnitType = TargetUnitType or "" - TargetUnitName = TargetUnitName or "" - - if lfs and io and os then - self.CSVFile:write( - '"' .. self.GameName .. '"' .. ',' .. - '"' .. self.RunTime .. '"' .. ',' .. - '' .. ScoreTime .. '' .. ',' .. - '"' .. PlayerName .. '"' .. ',' .. - '"' .. TargetPlayerName .. '"' .. ',' .. - '"' .. ScoreType .. '"' .. ',' .. - '"' .. PlayerUnitCoalition .. '"' .. ',' .. - '"' .. PlayerUnitCategory .. '"' .. ',' .. - '"' .. PlayerUnitType .. '"' .. ',' .. - '"' .. PlayerUnitName .. '"' .. ',' .. - '"' .. TargetUnitCoalition .. '"' .. ',' .. - '"' .. TargetUnitCategory .. '"' .. ',' .. - '"' .. TargetUnitType .. '"' .. ',' .. - '"' .. TargetUnitName .. '"' .. ',' .. - '' .. ScoreTimes .. '' .. ',' .. - '' .. ScoreAmount - ) - - self.CSVFile:write( "\n" ) - end -end - - -function SCORING:CloseCSV() - if lfs and io and os then - self.CSVFile:close() - end -end - ---- The CLEANUP class keeps an area clean of crashing or colliding airplanes. It also prevents airplanes from firing within this area. --- @module CleanUp --- @author Flightcontrol - - - - - - - ---- The CLEANUP class. --- @type CLEANUP --- @extends Core.Base#BASE -CLEANUP = { - ClassName = "CLEANUP", - ZoneNames = {}, - TimeInterval = 300, - CleanUpList = {}, -} - ---- Creates the main object which is handling the cleaning of the debris within the given Zone Names. --- @param #CLEANUP self --- @param #table ZoneNames Is a table of zone names where the debris should be cleaned. Also a single string can be passed with one zone name. --- @param #number TimeInterval The interval in seconds when the clean activity takes place. The default is 300 seconds, thus every 5 minutes. --- @return #CLEANUP --- @usage --- -- Clean these Zones. --- CleanUpAirports = CLEANUP:New( { 'CLEAN Tbilisi', 'CLEAN Kutaisi' }, 150 ) --- or --- CleanUpTbilisi = CLEANUP:New( 'CLEAN Tbilisi', 150 ) --- CleanUpKutaisi = CLEANUP:New( 'CLEAN Kutaisi', 600 ) -function CLEANUP:New( ZoneNames, TimeInterval ) - - local self = BASE:Inherit( self, BASE:New() ) -- #CLEANUP - self:F( { ZoneNames, TimeInterval } ) - - if type( ZoneNames ) == 'table' then - self.ZoneNames = ZoneNames - else - self.ZoneNames = { ZoneNames } - end - if TimeInterval then - self.TimeInterval = TimeInterval - end - - self:HandleEvent( EVENTS.Birth ) - - self.CleanUpScheduler = SCHEDULER:New( self, self._CleanUpScheduler, {}, 1, TimeInterval ) - - return self -end - - ---- Destroys a group from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param Dcs.DCSWrapper.Group#Group GroupObject The object to be destroyed. --- @param #string CleanUpGroupName The groupname... -function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName ) - self:F( { GroupObject, CleanUpGroupName } ) - - if GroupObject then -- and GroupObject:isExist() then - trigger.action.deactivateGroup(GroupObject) - self:T( { "GroupObject Destroyed", GroupObject } ) - end -end - ---- Destroys a @{DCSWrapper.Unit#Unit} from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param Dcs.DCSWrapper.Unit#Unit CleanUpUnit The object to be destroyed. --- @param #string CleanUpUnitName The Unit name ... -function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName ) - self:F( { CleanUpUnit, CleanUpUnitName } ) - - if CleanUpUnit then - local CleanUpGroup = Unit.getGroup(CleanUpUnit) - -- TODO Client bug in 1.5.3 - if CleanUpGroup and CleanUpGroup:isExist() then - local CleanUpGroupUnits = CleanUpGroup:getUnits() - if #CleanUpGroupUnits == 1 then - local CleanUpGroupName = CleanUpGroup:getName() - --self:CreateEventCrash( timer.getTime(), CleanUpUnit ) - CleanUpGroup:destroy() - self:T( { "Destroyed Group:", CleanUpGroupName } ) - else - CleanUpUnit:destroy() - self:T( { "Destroyed Unit:", CleanUpUnitName } ) - end - self.CleanUpList[CleanUpUnitName] = nil -- Cleaning from the list - CleanUpUnit = nil - end - end -end - --- TODO check Dcs.DCSTypes#Weapon ---- Destroys a missile from the simulator, but checks first if it is still existing! --- @param #CLEANUP self --- @param Dcs.DCSTypes#Weapon MissileObject -function CLEANUP:_DestroyMissile( MissileObject ) - self:F( { MissileObject } ) - - if MissileObject and MissileObject:isExist() then - MissileObject:destroy() - self:T( "MissileObject Destroyed") - end -end - ---- @param #CLEANUP self --- @param Core.Event#EVENTDATA EventData -function CLEANUP:_OnEventBirth( EventData ) - self:F( { EventData } ) - - self.CleanUpList[EventData.IniDCSUnitName] = {} - self.CleanUpList[EventData.IniDCSUnitName].CleanUpUnit = EventData.IniDCSUnit - self.CleanUpList[EventData.IniDCSUnitName].CleanUpGroup = EventData.IniDCSGroup - self.CleanUpList[EventData.IniDCSUnitName].CleanUpGroupName = EventData.IniDCSGroupName - self.CleanUpList[EventData.IniDCSUnitName].CleanUpUnitName = EventData.IniDCSUnitName - - EventData.IniUnit:HandleEvent( EVENTS.EngineShutdown , self._EventAddForCleanUp ) - EventData.IniUnit:HandleEvent( EVENTS.EngineStartup, self._EventAddForCleanUp ) - EventData.IniUnit:HandleEvent( EVENTS.Hit, self._EventAddForCleanUp ) - EventData.IniUnit:HandleEvent( EVENTS.PilotDead, self._EventCrash ) - EventData.IniUnit:HandleEvent( EVENTS.Dead, self._EventCrash ) - EventData.IniUnit:HandleEvent( EVENTS.Crash, self._EventCrash ) - EventData.IniUnit:HandleEvent( EVENTS.Shot, self._EventShot ) - -end - ---- Detects if a crash event occurs. --- Crashed units go into a CleanUpList for removal. --- @param #CLEANUP self --- @param Dcs.DCSTypes#Event event -function CLEANUP:_EventCrash( Event ) - self:F( { Event } ) - - --TODO: This stuff is not working due to a DCS bug. Burning units cannot be destroyed. - -- self:T("before getGroup") - -- local _grp = Unit.getGroup(event.initiator)-- Identify the group that fired - -- self:T("after getGroup") - -- _grp:destroy() - -- self:T("after deactivateGroup") - -- event.initiator:destroy() - - self.CleanUpList[Event.IniDCSUnitName] = {} - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnit = Event.IniDCSUnit - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroup = Event.IniDCSGroup - self.CleanUpList[Event.IniDCSUnitName].CleanUpGroupName = Event.IniDCSGroupName - self.CleanUpList[Event.IniDCSUnitName].CleanUpUnitName = Event.IniDCSUnitName - -end - ---- Detects if a unit shoots a missile. --- If this occurs within one of the zones, then the weapon used must be destroyed. --- @param #CLEANUP self --- @param Dcs.DCSTypes#Event event -function CLEANUP:_EventShot( Event ) - self:F( { Event } ) - - -- Test if the missile was fired within one of the CLEANUP.ZoneNames. - local CurrentLandingZoneID = 0 - CurrentLandingZoneID = routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) - if ( CurrentLandingZoneID ) then - -- Okay, the missile was fired within the CLEANUP.ZoneNames, destroy the fired weapon. - --_SEADmissile:destroy() - SCHEDULER:New( self, CLEANUP._DestroyMissile, { Event.Weapon }, 0.1 ) - end -end - - ---- Detects if the Unit has an S_EVENT_HIT within the given ZoneNames. If this is the case, destroy the unit. --- @param #CLEANUP self --- @param Dcs.DCSTypes#Event event -function CLEANUP:_EventHitCleanUp( Event ) - self:F( { Event } ) - - if Event.IniDCSUnit then - if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then - self:T( { "Life: ", Event.IniDCSUnitName, ' = ', Event.IniDCSUnit:getLife(), "/", Event.IniDCSUnit:getLife0() } ) - if Event.IniDCSUnit:getLife() < Event.IniDCSUnit:getLife0() then - self:T( "CleanUp: Destroy: " .. Event.IniDCSUnitName ) - SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.IniDCSUnit }, 0.1 ) - end - end - end - - if Event.TgtDCSUnit then - if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then - self:T( { "Life: ", Event.TgtDCSUnitName, ' = ', Event.TgtDCSUnit:getLife(), "/", Event.TgtDCSUnit:getLife0() } ) - if Event.TgtDCSUnit:getLife() < Event.TgtDCSUnit:getLife0() then - self:T( "CleanUp: Destroy: " .. Event.TgtDCSUnitName ) - SCHEDULER:New( self, CLEANUP._DestroyUnit, { Event.TgtDCSUnit }, 0.1 ) - end - end - end -end - ---- Add the @{DCSWrapper.Unit#Unit} to the CleanUpList for CleanUp. -function CLEANUP:_AddForCleanUp( CleanUpUnit, CleanUpUnitName ) - self:F( { CleanUpUnit, CleanUpUnitName } ) - - self.CleanUpList[CleanUpUnitName] = {} - self.CleanUpList[CleanUpUnitName].CleanUpUnit = CleanUpUnit - self.CleanUpList[CleanUpUnitName].CleanUpUnitName = CleanUpUnitName - self.CleanUpList[CleanUpUnitName].CleanUpGroup = Unit.getGroup(CleanUpUnit) - self.CleanUpList[CleanUpUnitName].CleanUpGroupName = Unit.getGroup(CleanUpUnit):getName() - self.CleanUpList[CleanUpUnitName].CleanUpTime = timer.getTime() - self.CleanUpList[CleanUpUnitName].CleanUpMoved = false - - self:T( { "CleanUp: Add to CleanUpList: ", Unit.getGroup(CleanUpUnit):getName(), CleanUpUnitName } ) - -end - ---- Detects if the Unit has an S_EVENT_ENGINE_SHUTDOWN or an S_EVENT_HIT within the given ZoneNames. If this is the case, add the Group to the CLEANUP List. --- @param #CLEANUP self --- @param Dcs.DCSTypes#Event event -function CLEANUP:_EventAddForCleanUp( Event ) - - if Event.IniDCSUnit then - if self.CleanUpList[Event.IniDCSUnitName] == nil then - if routines.IsUnitInZones( Event.IniDCSUnit, self.ZoneNames ) ~= nil then - self:_AddForCleanUp( Event.IniDCSUnit, Event.IniDCSUnitName ) - end - end - end - - if Event.TgtDCSUnit then - if self.CleanUpList[Event.TgtDCSUnitName] == nil then - if routines.IsUnitInZones( Event.TgtDCSUnit, self.ZoneNames ) ~= nil then - self:_AddForCleanUp( Event.TgtDCSUnit, Event.TgtDCSUnitName ) - end - end - end - -end - -local CleanUpSurfaceTypeText = { - "LAND", - "SHALLOW_WATER", - "WATER", - "ROAD", - "RUNWAY" - } - ---- At the defined time interval, CleanUp the Groups within the CleanUpList. --- @param #CLEANUP self -function CLEANUP:_CleanUpScheduler() - self:F( { "CleanUp Scheduler" } ) - - local CleanUpCount = 0 - for CleanUpUnitName, UnitData in pairs( self.CleanUpList ) do - CleanUpCount = CleanUpCount + 1 - - self:T( { CleanUpUnitName, UnitData } ) - local CleanUpUnit = Unit.getByName(UnitData.CleanUpUnitName) - local CleanUpGroupName = UnitData.CleanUpGroupName - local CleanUpUnitName = UnitData.CleanUpUnitName - if CleanUpUnit then - self:T( { "CleanUp Scheduler", "Checking:", CleanUpUnitName } ) - if _DATABASE:GetStatusGroup( CleanUpGroupName ) ~= "ReSpawn" then - local CleanUpUnitVec3 = CleanUpUnit:getPoint() - --self:T( CleanUpUnitVec3 ) - local CleanUpUnitVec2 = {} - CleanUpUnitVec2.x = CleanUpUnitVec3.x - CleanUpUnitVec2.y = CleanUpUnitVec3.z - --self:T( CleanUpUnitVec2 ) - local CleanUpSurfaceType = land.getSurfaceType(CleanUpUnitVec2) - --self:T( CleanUpSurfaceType ) - - if CleanUpUnit and CleanUpUnit:getLife() <= CleanUpUnit:getLife0() * 0.95 then - if CleanUpSurfaceType == land.SurfaceType.RUNWAY then - if CleanUpUnit:inAir() then - local CleanUpLandHeight = land.getHeight(CleanUpUnitVec2) - local CleanUpUnitHeight = CleanUpUnitVec3.y - CleanUpLandHeight - self:T( { "CleanUp Scheduler", "Height = " .. CleanUpUnitHeight } ) - if CleanUpUnitHeight < 30 then - self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because below safe height and damaged." } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - else - self:T( { "CleanUp Scheduler", "Destroy " .. CleanUpUnitName .. " because on runway and damaged." } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - end - end - -- Clean Units which are waiting for a very long time in the CleanUpZone. - if CleanUpUnit then - local CleanUpUnitVelocity = CleanUpUnit:getVelocity() - local CleanUpUnitVelocityTotal = math.abs(CleanUpUnitVelocity.x) + math.abs(CleanUpUnitVelocity.y) + math.abs(CleanUpUnitVelocity.z) - if CleanUpUnitVelocityTotal < 1 then - if UnitData.CleanUpMoved then - if UnitData.CleanUpTime + 180 <= timer.getTime() then - self:T( { "CleanUp Scheduler", "Destroy due to not moving anymore " .. CleanUpUnitName } ) - self:_DestroyUnit(CleanUpUnit, CleanUpUnitName) - end - end - else - UnitData.CleanUpTime = timer.getTime() - UnitData.CleanUpMoved = true - end - end - - else - -- Do nothing ... - self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE - end - else - self:T( "CleanUp: Group " .. CleanUpUnitName .. " cannot be found in DCS RTE, removing ..." ) - self.CleanUpList[CleanUpUnitName] = nil -- Not anymore in the DCSRTE - end - end - self:T(CleanUpCount) - - return true -end - ---- Single-Player:**Yes** / Multi-Player:**Yes** / AI:**Yes** / Human:**No** / Types:**All** -- --- **Spawn groups of units dynamically in your missions.** --- --- ![Banner Image](..\Presentations\SPAWN\SPAWN.JPG) --- --- === --- --- # 1) @{#SPAWN} class, extends @{Base#BASE} --- --- The @{#SPAWN} class allows to spawn dynamically new groups, based on pre-defined initialization settings, modifying the behaviour when groups are spawned. --- For each group to be spawned, within the mission editor, a group has to be created with the "late activation flag" set. We call this group the *"Spawn Template"* of the SPAWN object. --- A reference to this Spawn Template needs to be provided when constructing the SPAWN object, by indicating the name of the group within the mission editor in the constructor methods. --- --- Within the SPAWN object, there is an internal index that keeps track of which group from the internal group list was spawned. --- When new groups get spawned by using the SPAWN methods (see below), it will be validated whether the Limits (@{#SPAWN.Limit}) of the SPAWN object are not reached. --- When all is valid, a new group will be created by the spawning methods, and the internal index will be increased with 1. --- --- Regarding the name of new spawned groups, a _SpawnPrefix_ will be assigned for each new group created. --- If you want to have the Spawn Template name to be used as the _SpawnPrefix_ name, use the @{#SPAWN.New} constructor. --- However, when the @{#SPAWN.NewWithAlias} constructor was used, the Alias name will define the _SpawnPrefix_ name. --- Groups will follow the following naming structure when spawned at run-time: --- --- 1. Spawned groups will have the name _SpawnPrefix_#ggg, where ggg is a counter from 0 to 999. --- 2. Spawned units will have the name _SpawnPrefix_#ggg-uu, where uu is a counter from 0 to 99 for each new spawned unit belonging to the group. --- --- Some additional notes that need to be remembered: --- --- * Templates are actually groups defined within the mission editor, with the flag "Late Activation" set. As such, these groups are never used within the mission, but are used by the @{#SPAWN} module. --- * It is important to defined BEFORE you spawn new groups, a proper initialization of the SPAWN instance is done with the options you want to use. --- * When designing a mission, NEVER name groups using a "#" within the name of the group Spawn Template(s), or the SPAWN module logic won't work anymore. --- --- ## 1.1) SPAWN construction methods --- --- Create a new SPAWN object with the @{#SPAWN.New}() or the @{#SPAWN.NewWithAlias}() methods: --- --- * @{#SPAWN.New}(): Creates a new SPAWN object taking the name of the group that represents the GROUP Template (definition). --- * @{#SPAWN.NewWithAlias}(): Creates a new SPAWN object taking the name of the group that represents the GROUP Template (definition), and gives each spawned @{Group} an different name. --- --- It is important to understand how the SPAWN class works internally. The SPAWN object created will contain internally a list of groups that will be spawned and that are already spawned. --- The initialization methods will modify this list of groups so that when a group gets spawned, ALL information is already prepared when spawning. This is done for performance reasons. --- So in principle, the group list will contain all parameters and configurations after initialization, and when groups get actually spawned, this spawning can be done quickly and efficient. --- --- ## 1.2) SPAWN initialization methods --- --- A spawn object will behave differently based on the usage of **initialization** methods, which all start with the **Init** prefix: --- --- * @{#SPAWN.InitKeepUnitNames}(): Keeps the unit names as defined within the mission editor, but note that anything after a # mark is ignored, and any spaces before and after the resulting name are removed. IMPORTANT! This method MUST be the first used after :New !!! --- * @{#SPAWN.InitLimit}(): Limits the amount of groups that can be alive at the same time and that can be dynamically spawned. --- * @{#SPAWN.InitRandomizeRoute}(): Randomize the routes of spawned groups, and for air groups also optionally the height. --- * @{#SPAWN.InitRandomizeTemplate}(): Randomize the group templates so that when a new group is spawned, a random group template is selected from one of the templates defined. --- * @{#SPAWN.InitUnControlled}(): Spawn plane groups uncontrolled. --- * @{#SPAWN.InitArray}(): Make groups visible before they are actually activated, and order these groups like a batallion in an array. --- * @{#SPAWN.InitRepeat}(): Re-spawn groups when they land at the home base. Similar methods are @{#SPAWN.InitRepeatOnLanding} and @{#SPAWN.InitRepeatOnEngineShutDown}. --- * @{#SPAWN.InitRandomizePosition}(): Randomizes the position of @{Group}s that are spawned within a **radius band**, given an Outer and Inner radius, from the point that the spawn happens. --- * @{#SPAWN.InitRandomizeUnits}(): Randomizes the @{Unit}s in the @{Group} that is spawned within a **radius band**, given an Outer and Inner radius. --- * @{#SPAWN.InitRandomizeZones}(): Randomizes the spawning between a predefined list of @{Zone}s that are declared using this function. Each zone can be given a probability factor. --- * @{#SPAWN.InitAIOn}(): Turns the AI On when spawning the new @{Group} object. --- * @{#SPAWN.InitAIOff}(): Turns the AI Off when spawning the new @{Group} object. --- * @{#SPAWN.InitAIOnOff}(): Turns the AI On or Off when spawning the new @{Group} object. --- --- ## 1.3) SPAWN spawning methods --- --- Groups can be spawned at different times and methods: --- --- * @{#SPAWN.Spawn}(): Spawn one new group based on the last spawned index. --- * @{#SPAWN.ReSpawn}(): Re-spawn a group based on a given index. --- * @{#SPAWN.SpawnScheduled}(): Spawn groups at scheduled but randomized intervals. You can use @{#SPAWN.SpawnScheduleStart}() and @{#SPAWN.SpawnScheduleStop}() to start and stop the schedule respectively. --- * @{#SPAWN.SpawnFromVec3}(): Spawn a new group from a Vec3 coordinate. (The group will can be spawned at a point in the air). --- * @{#SPAWN.SpawnFromVec2}(): Spawn a new group from a Vec2 coordinate. (The group will be spawned at land height ). --- * @{#SPAWN.SpawnFromStatic}(): Spawn a new group from a structure, taking the position of a @{Static}. --- * @{#SPAWN.SpawnFromUnit}(): Spawn a new group taking the position of a @{Unit}. --- * @{#SPAWN.SpawnInZone}(): Spawn a new group in a @{Zone}. --- --- Note that @{#SPAWN.Spawn} and @{#SPAWN.ReSpawn} return a @{GROUP#GROUP.New} object, that contains a reference to the DCSGroup object. --- You can use the @{GROUP} object to do further actions with the DCSGroup. --- --- ## 1.4) Retrieve alive GROUPs spawned by the SPAWN object --- --- The SPAWN class administers which GROUPS it has reserved (in stock) or has created during mission execution. --- Every time a SPAWN object spawns a new GROUP object, a reference to the GROUP object is added to an internal table of GROUPS. --- SPAWN provides methods to iterate through that internal GROUP object reference table: --- --- * @{#SPAWN.GetFirstAliveGroup}(): Will find the first alive GROUP it has spawned, and return the alive GROUP object and the first Index where the first alive GROUP object has been found. --- * @{#SPAWN.GetNextAliveGroup}(): Will find the next alive GROUP object from a given Index, and return a reference to the alive GROUP object and the next Index where the alive GROUP has been found. --- * @{#SPAWN.GetLastAliveGroup}(): Will find the last alive GROUP object, and will return a reference to the last live GROUP object and the last Index where the last alive GROUP object has been found. --- --- You can use the methods @{#SPAWN.GetFirstAliveGroup}() and sequently @{#SPAWN.GetNextAliveGroup}() to iterate through the alive GROUPS within the SPAWN object, and to actions... See the respective methods for an example. --- The method @{#SPAWN.GetGroupFromIndex}() will return the GROUP object reference from the given Index, dead or alive... --- --- ## 1.5) SPAWN object cleaning --- --- Sometimes, it will occur during a mission run-time, that ground or especially air objects get damaged, and will while being damged stop their activities, while remaining alive. --- In such cases, the SPAWN object will just sit there and wait until that group gets destroyed, but most of the time it won't, --- and it may occur that no new groups are or can be spawned as limits are reached. --- To prevent this, a @{#SPAWN.InitCleanUp}() initialization method has been defined that will silently monitor the status of each spawned group. --- Once a group has a velocity = 0, and has been waiting for a defined interval, that group will be cleaned or removed from run-time. --- There is a catch however :-) If a damaged group has returned to an airbase within the coalition, that group will not be considered as "lost"... --- In such a case, when the inactive group is cleaned, a new group will Re-spawned automatically. --- This models AI that has succesfully returned to their airbase, to restart their combat activities. --- Check the @{#SPAWN.InitCleanUp}() for further info. --- --- ## 1.6) Catch the @{Group} spawn event in a callback function! --- --- When using the SpawnScheduled method, new @{Group}s are created following the schedule timing parameters. --- When a new @{Group} is spawned, you maybe want to execute actions with that group spawned at the spawn event. --- To SPAWN class supports this functionality through the @{#SPAWN.OnSpawnGroup}( **function( SpawnedGroup ) end ** ) method, which takes a function as a parameter that you can define locally. --- Whenever a new @{Group} is spawned, the given function is called, and the @{Group} that was just spawned, is given as a parameter. --- As a result, your spawn event handling function requires one parameter to be declared, which will contain the spawned @{Group} object. --- A coding example is provided at the description of the @{#SPAWN.OnSpawnGroup}( **function( SpawnedGroup ) end ** ) method. --- --- ==== --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-03-14: SPAWN:**InitKeepUnitNames()** added. --- 2017-03-14: SPAWN:**InitRandomizePosition( RandomizePosition, OuterRadious, InnerRadius )** added. --- --- 2017-02-04: SPAWN:InitUnControlled( **UnControlled** ) replaces SPAWN:InitUnControlled(). --- --- 2017-01-24: SPAWN:**InitAIOnOff( AIOnOff )** added. --- --- 2017-01-24: SPAWN:**InitAIOn()** added. --- --- 2017-01-24: SPAWN:**InitAIOff()** added. --- --- 2016-08-15: SPAWN:**InitCleanUp**( SpawnCleanUpInterval ) replaces SPAWN:_CleanUp_( SpawnCleanUpInterval ). --- --- 2016-08-15: SPAWN:**InitRandomizeZones( SpawnZones )** added. --- --- 2016-08-14: SPAWN:**OnSpawnGroup**( SpawnCallBackFunction, ... ) replaces SPAWN:_SpawnFunction_( SpawnCallBackFunction, ... ). --- --- 2016-08-14: SPAWN.SpawnInZone( Zone, __RandomizeGroup__, SpawnIndex ) replaces SpawnInZone( Zone, _RandomizeUnits, OuterRadius, InnerRadius,_ SpawnIndex ). --- --- 2016-08-14: SPAWN.SpawnFromVec3( Vec3, SpawnIndex ) replaces SpawnFromVec3( Vec3, _RandomizeUnits, OuterRadius, InnerRadius,_ SpawnIndex ): --- --- 2016-08-14: SPAWN.SpawnFromVec2( Vec2, SpawnIndex ) replaces SpawnFromVec2( Vec2, _RandomizeUnits, OuterRadius, InnerRadius,_ SpawnIndex ): --- --- 2016-08-14: SPAWN.SpawnFromUnit( SpawnUnit, SpawnIndex ) replaces SpawnFromUnit( SpawnUnit, _RandomizeUnits, OuterRadius, InnerRadius,_ SpawnIndex ): --- --- 2016-08-14: SPAWN.SpawnFromUnit( SpawnUnit, SpawnIndex ) replaces SpawnFromStatic( SpawnStatic, _RandomizeUnits, OuterRadius, InnerRadius,_ SpawnIndex ): --- --- 2016-08-14: SPAWN.**InitRandomizeUnits( RandomizeUnits, OuterRadius, InnerRadius )** added: --- --- 2016-08-14: SPAWN.**Init**Limit( SpawnMaxUnitsAlive, SpawnMaxGroups ) replaces SPAWN._Limit_( SpawnMaxUnitsAlive, SpawnMaxGroups ): --- --- 2016-08-14: SPAWN.**Init**Array( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY ) replaces SPAWN._Array_( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY ). --- --- 2016-08-14: SPAWN.**Init**RandomizeRoute( SpawnStartPoint, SpawnEndPoint, SpawnRadius, SpawnHeight ) replaces SPAWN._RandomizeRoute_( SpawnStartPoint, SpawnEndPoint, SpawnRadius, SpawnHeight ). --- --- 2016-08-14: SPAWN.**Init**RandomizeTemplate( SpawnTemplatePrefixTable ) replaces SPAWN._RandomizeTemplate_( SpawnTemplatePrefixTable ). --- --- 2016-08-14: SPAWN.**Init**UnControlled() replaces SPAWN._UnControlled_(). --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * **Aaron**: Posed the idea for Group position randomization at SpawnInZone and make the Unit randomization separate from the Group randomization. --- * [**Entropy**](https://forums.eagle.ru/member.php?u=111471), **Afinegan**: Came up with the requirement for AIOnOff(). --- --- ### Authors: --- --- * **FlightControl**: Design & Programming --- --- @module Spawn - - - ---- SPAWN Class --- @type SPAWN --- @extends Core.Base#BASE --- @field ClassName --- @field #string SpawnTemplatePrefix --- @field #string SpawnAliasPrefix --- @field #number AliveUnits --- @field #number MaxAliveUnits --- @field #number SpawnIndex --- @field #number MaxAliveGroups --- @field #SPAWN.SpawnZoneTable SpawnZoneTable -SPAWN = { - ClassName = "SPAWN", - SpawnTemplatePrefix = nil, - SpawnAliasPrefix = nil, -} - - ---- @type SPAWN.SpawnZoneTable --- @list SpawnZone - - ---- Creates the main object to spawn a @{Group} defined in the DCS ME. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. Each new group will have the name starting with SpawnTemplatePrefix. --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ) --- @usage local Plane = SPAWN:New( "Plane" ) -- Creates a new local variable that can initiate new planes with the name "Plane#ddd" using the template "Plane" as defined within the ME. -function SPAWN:New( SpawnTemplatePrefix ) - local self = BASE:Inherit( self, BASE:New() ) -- #SPAWN - self:F( { SpawnTemplatePrefix } ) - - local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) - if TemplateGroup then - self.SpawnTemplatePrefix = SpawnTemplatePrefix - self.SpawnIndex = 0 - self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. - self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! - self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. - self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. - self.SpawnInitLimit = false -- By default, no InitLimit - self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. - self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. - self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. - self.AIOnOff = true -- The AI is on by default when spawning a group. - self.SpawnUnControlled = false - self.SpawnInitKeepUnitNames = false -- Overwrite unit names by default with group name. - - self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. - else - error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) - end - - self:SetEventPriority( 5 ) - - return self -end - ---- Creates a new SPAWN instance to create new groups based on the defined template and using a new alias for each new group. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix is the name of the Group in the ME that defines the Template. --- @param #string SpawnAliasPrefix is the name that will be given to the Group at runtime. --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- Spawn_BE_KA50 = SPAWN:NewWithAlias( 'BE KA-50@RAMP-Ground Defense', 'Helicopter Attacking a City' ) --- @usage local PlaneWithAlias = SPAWN:NewWithAlias( "Plane", "Bomber" ) -- Creates a new local variable that can instantiate new planes with the name "Bomber#ddd" using the template "Plane" as defined within the ME. -function SPAWN:NewWithAlias( SpawnTemplatePrefix, SpawnAliasPrefix ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( { SpawnTemplatePrefix, SpawnAliasPrefix } ) - - local TemplateGroup = Group.getByName( SpawnTemplatePrefix ) - if TemplateGroup then - self.SpawnTemplatePrefix = SpawnTemplatePrefix - self.SpawnAliasPrefix = SpawnAliasPrefix - self.SpawnIndex = 0 - self.SpawnCount = 0 -- The internal counter of the amount of spawning the has happened since SpawnStart. - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.SpawnIsScheduled = false -- Reflects if the spawning for this SpawnTemplatePrefix is going to be scheduled or not. - self.SpawnTemplate = self._GetTemplate( self, SpawnTemplatePrefix ) -- Contains the template structure for a Group Spawn from the Mission Editor. Note that this group must have lateActivation always on!!! - self.Repeat = false -- Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning. - self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. - self.SpawnInitLimit = false -- By default, no InitLimit - self.SpawnMaxUnitsAlive = 0 -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. - self.SpawnRandomize = false -- Sets the randomization flag of new Spawned units to false. - self.SpawnVisible = false -- Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned. - self.AIOnOff = true -- The AI is on by default when spawning a group. - self.SpawnUnControlled = false - self.SpawnInitKeepUnitNames = false -- Overwrite unit names by default with group name. - - self.SpawnGroups = {} -- Array containing the descriptions of each Group to be Spawned. - else - error( "SPAWN:New: There is no group declared in the mission editor with SpawnTemplatePrefix = '" .. SpawnTemplatePrefix .. "'" ) - end - - self:SetEventPriority( 5 ) - - return self -end - - ---- Limits the Maximum amount of Units that can be alive at the same time, and the maximum amount of groups that can be spawned. --- Note that this method is exceptionally important to balance the performance of the mission. Depending on the machine etc, a mission can only process a maximum amount of units. --- If the time interval must be short, but there should not be more Units or Groups alive than a maximum amount of units, then this method should be used... --- When a @{#SPAWN.New} is executed and the limit of the amount of units alive is reached, then no new spawn will happen of the group, until some of these units of the spawn object will be destroyed. --- @param #SPAWN self --- @param #number SpawnMaxUnitsAlive The maximum amount of units that can be alive at runtime. --- @param #number SpawnMaxGroups The maximum amount of groups that can be spawned. When the limit is reached, then no more actual spawns will happen of the group. --- This parameter is useful to define a maximum amount of airplanes, ground troops, helicopters, ships etc within a supply area. --- This parameter accepts the value 0, which defines that there are no maximum group limits, but there are limits on the maximum of units that can be alive at the same time. --- @return #SPAWN self --- @usage --- -- NATO helicopters engaging in the battle field. --- -- This helicopter group consists of one Unit. So, this group will SPAWN maximum 2 groups simultaneously within the DCSRTE. --- -- There will be maximum 24 groups spawned during the whole mission lifetime. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):InitLimit( 2, 24 ) -function SPAWN:InitLimit( SpawnMaxUnitsAlive, SpawnMaxGroups ) - self:F( { self.SpawnTemplatePrefix, SpawnMaxUnitsAlive, SpawnMaxGroups } ) - - self.SpawnInitLimit = true - self.SpawnMaxUnitsAlive = SpawnMaxUnitsAlive -- The maximum amount of groups that can be alive of SpawnTemplatePrefix at the same time. - self.SpawnMaxGroups = SpawnMaxGroups -- The maximum amount of groups that can be spawned. - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:_InitializeSpawnGroups( SpawnGroupID ) - end - - return self -end - ---- Keeps the unit names as defined within the mission editor, --- but note that anything after a # mark is ignored, --- and any spaces before and after the resulting name are removed. --- IMPORTANT! This method MUST be the first used after :New !!! --- @param #SPAWN self --- @return #SPAWN self -function SPAWN:InitKeepUnitNames() - self:F( ) - - self.SpawnInitKeepUnitNames = true - - return self -end - - ---- Randomizes the defined route of the SpawnTemplatePrefix group in the ME. This is very useful to define extra variation of the behaviour of groups. --- @param #SPAWN self --- @param #number SpawnStartPoint is the waypoint where the randomization begins. --- Note that the StartPoint = 0 equaling the point where the group is spawned. --- @param #number SpawnEndPoint is the waypoint where the randomization ends counting backwards. --- This parameter is useful to avoid randomization to end at a waypoint earlier than the last waypoint on the route. --- @param #number SpawnRadius is the radius in meters in which the randomization of the new waypoints, with the original waypoint of the original template located in the middle ... --- @param #number SpawnHeight (optional) Specifies the **additional** height in meters that can be added to the base height specified at each waypoint in the ME. --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- -- The KA-50 has waypoints Start point ( =0 or SP ), 1, 2, 3, 4, End point (= 5 or DP). --- -- Waypoints 2 and 3 will only be randomized. The others will remain on their original position with each new spawn of the helicopter. --- -- The randomization of waypoint 2 and 3 will take place within a radius of 2000 meters. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):InitRandomizeRoute( 2, 2, 2000 ) -function SPAWN:InitRandomizeRoute( SpawnStartPoint, SpawnEndPoint, SpawnRadius, SpawnHeight ) - self:F( { self.SpawnTemplatePrefix, SpawnStartPoint, SpawnEndPoint, SpawnRadius, SpawnHeight } ) - - self.SpawnRandomizeRoute = true - self.SpawnRandomizeRouteStartPoint = SpawnStartPoint - self.SpawnRandomizeRouteEndPoint = SpawnEndPoint - self.SpawnRandomizeRouteRadius = SpawnRadius - self.SpawnRandomizeRouteHeight = SpawnHeight - - for GroupID = 1, self.SpawnMaxGroups do - self:_RandomizeRoute( GroupID ) - end - - return self -end - ---- Randomizes the position of @{Group}s that are spawned within a **radius band**, given an Outer and Inner radius, from the point that the spawn happens. --- @param #SPAWN self --- @param #boolean RandomizePosition If true, SPAWN will perform the randomization of the @{Group}s position between a given outer and inner radius. --- @param Dcs.DCSTypes#Distance OuterRadius (optional) The outer radius in meters where the new group will be spawned. --- @param Dcs.DCSTypes#Distance InnerRadius (optional) The inner radius in meters where the new group will NOT be spawned. --- @return #SPAWN -function SPAWN:InitRandomizePosition( RandomizePosition, OuterRadius, InnerRadius ) - self:F( { self.SpawnTemplatePrefix, RandomizePosition, OuterRadius, InnerRadius } ) - - self.SpawnRandomizePosition = RandomizePosition or false - self.SpawnRandomizePositionOuterRadius = OuterRadius or 0 - self.SpawnRandomizePositionInnerRadius = InnerRadius or 0 - - for GroupID = 1, self.SpawnMaxGroups do - self:_RandomizeRoute( GroupID ) - end - - return self -end - - ---- Randomizes the UNITs that are spawned within a radius band given an Outer and Inner radius. --- @param #SPAWN self --- @param #boolean RandomizeUnits If true, SPAWN will perform the randomization of the @{UNIT}s position within the group between a given outer and inner radius. --- @param Dcs.DCSTypes#Distance OuterRadius (optional) The outer radius in meters where the new group will be spawned. --- @param Dcs.DCSTypes#Distance InnerRadius (optional) The inner radius in meters where the new group will NOT be spawned. --- @return #SPAWN --- @usage --- -- NATO helicopters engaging in the battle field. --- -- The KA-50 has waypoints Start point ( =0 or SP ), 1, 2, 3, 4, End point (= 5 or DP). --- -- Waypoints 2 and 3 will only be randomized. The others will remain on their original position with each new spawn of the helicopter. --- -- The randomization of waypoint 2 and 3 will take place within a radius of 2000 meters. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):InitRandomizeRoute( 2, 2, 2000 ) -function SPAWN:InitRandomizeUnits( RandomizeUnits, OuterRadius, InnerRadius ) - self:F( { self.SpawnTemplatePrefix, RandomizeUnits, OuterRadius, InnerRadius } ) - - self.SpawnRandomizeUnits = RandomizeUnits or false - self.SpawnOuterRadius = OuterRadius or 0 - self.SpawnInnerRadius = InnerRadius or 0 - - for GroupID = 1, self.SpawnMaxGroups do - self:_RandomizeRoute( GroupID ) - end - - return self -end - ---- This method is rather complicated to understand. But I'll try to explain. --- This method becomes useful when you need to spawn groups with random templates of groups defined within the mission editor, --- but they will all follow the same Template route and have the same prefix name. --- In other words, this method randomizes between a defined set of groups the template to be used for each new spawn of a group. --- @param #SPAWN self --- @param #string SpawnTemplatePrefixTable A table with the names of the groups defined within the mission editor, from which one will be choosen when a new group will be spawned. --- @return #SPAWN --- @usage --- -- NATO Tank Platoons invading Gori. --- -- Choose between 13 different 'US Tank Platoon' configurations for each new SPAWN the Group to be spawned for the --- -- 'US Tank Platoon Left', 'US Tank Platoon Middle' and 'US Tank Platoon Right' SpawnTemplatePrefixes. --- -- Each new SPAWN will randomize the route, with a defined time interval of 200 seconds with 40% time variation (randomization) and --- -- with a limit set of maximum 12 Units alive simulteneously and 150 Groups to be spawned during the whole mission. --- Spawn_US_Platoon = { 'US Tank Platoon 1', 'US Tank Platoon 2', 'US Tank Platoon 3', 'US Tank Platoon 4', 'US Tank Platoon 5', --- 'US Tank Platoon 6', 'US Tank Platoon 7', 'US Tank Platoon 8', 'US Tank Platoon 9', 'US Tank Platoon 10', --- 'US Tank Platoon 11', 'US Tank Platoon 12', 'US Tank Platoon 13' } --- Spawn_US_Platoon_Left = SPAWN:New( 'US Tank Platoon Left' ):InitLimit( 12, 150 ):Schedule( 200, 0.4 ):InitRandomizeTemplate( Spawn_US_Platoon ):InitRandomizeRoute( 3, 3, 2000 ) --- Spawn_US_Platoon_Middle = SPAWN:New( 'US Tank Platoon Middle' ):InitLimit( 12, 150 ):Schedule( 200, 0.4 ):InitRandomizeTemplate( Spawn_US_Platoon ):InitRandomizeRoute( 3, 3, 2000 ) --- Spawn_US_Platoon_Right = SPAWN:New( 'US Tank Platoon Right' ):InitLimit( 12, 150 ):Schedule( 200, 0.4 ):InitRandomizeTemplate( Spawn_US_Platoon ):InitRandomizeRoute( 3, 3, 2000 ) -function SPAWN:InitRandomizeTemplate( SpawnTemplatePrefixTable ) - self:F( { self.SpawnTemplatePrefix, SpawnTemplatePrefixTable } ) - - self.SpawnTemplatePrefixTable = SpawnTemplatePrefixTable - self.SpawnRandomizeTemplate = true - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:_RandomizeTemplate( SpawnGroupID ) - end - - return self -end - ---TODO: Add example. ---- This method provides the functionality to randomize the spawning of the Groups at a given list of zones of different types. --- @param #SPAWN self --- @param #table SpawnZoneTable A table with @{Zone} objects. If this table is given, then each spawn will be executed within the given list of @{Zone}s objects. --- @return #SPAWN --- @usage --- -- NATO Tank Platoons invading Gori. --- -- Choose between 3 different zones for each new SPAWN the Group to be executed, regardless of the zone type. -function SPAWN:InitRandomizeZones( SpawnZoneTable ) - self:F( { self.SpawnTemplatePrefix, SpawnZoneTable } ) - - self.SpawnZoneTable = SpawnZoneTable - self.SpawnRandomizeZones = true - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:_RandomizeZones( SpawnGroupID ) - end - - return self -end - - - - - ---- For planes and helicopters, when these groups go home and land on their home airbases and farps, they normally would taxi to the parking spot, shut-down their engines and wait forever until the Group is removed by the runtime environment. --- This method is used to re-spawn automatically (so no extra call is needed anymore) the same group after it has landed. --- This will enable a spawned group to be re-spawned after it lands, until it is destroyed... --- Note: When the group is respawned, it will re-spawn from the original airbase where it took off. --- So ensure that the routes for groups that respawn, always return to the original airbase, or players may get confused ... --- @param #SPAWN self --- @return #SPAWN self --- @usage --- -- RU Su-34 - AI Ship Attack --- -- Re-SPAWN the Group(s) after each landing and Engine Shut-Down automatically. --- SpawnRU_SU34 = SPAWN:New( 'TF1 RU Su-34 Krymsk@AI - Attack Ships' ):Schedule( 2, 3, 1800, 0.4 ):SpawnUncontrolled():InitRandomizeRoute( 1, 1, 3000 ):RepeatOnEngineShutDown() -function SPAWN:InitRepeat() - self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } ) - - self.Repeat = true - self.RepeatOnEngineShutDown = false - self.RepeatOnLanding = true - - return self -end - ---- Respawn group after landing. --- @param #SPAWN self --- @return #SPAWN self -function SPAWN:InitRepeatOnLanding() - self:F( { self.SpawnTemplatePrefix } ) - - self:InitRepeat() - self.RepeatOnEngineShutDown = false - self.RepeatOnLanding = true - - return self -end - - ---- Respawn after landing when its engines have shut down. --- @param #SPAWN self --- @return #SPAWN self -function SPAWN:InitRepeatOnEngineShutDown() - self:F( { self.SpawnTemplatePrefix } ) - - self:InitRepeat() - self.RepeatOnEngineShutDown = true - self.RepeatOnLanding = false - - return self -end - - ---- CleanUp groups when they are still alive, but inactive. --- When groups are still alive and have become inactive due to damage and are unable to contribute anything, then this group will be removed at defined intervals in seconds. --- @param #SPAWN self --- @param #string SpawnCleanUpInterval The interval to check for inactive groups within seconds. --- @return #SPAWN self --- @usage Spawn_Helicopter:CleanUp( 20 ) -- CleanUp the spawning of the helicopters every 20 seconds when they become inactive. -function SPAWN:InitCleanUp( SpawnCleanUpInterval ) - self:F( { self.SpawnTemplatePrefix, SpawnCleanUpInterval } ) - - self.SpawnCleanUpInterval = SpawnCleanUpInterval - self.SpawnCleanUpTimeStamps = {} - - local SpawnGroup, SpawnCursor = self:GetFirstAliveGroup() - self:T( { "CleanUp Scheduler:", SpawnGroup } ) - - --self.CleanUpFunction = routines.scheduleFunction( self._SpawnCleanUpScheduler, { self }, timer.getTime() + 1, SpawnCleanUpInterval ) - self.CleanUpScheduler = SCHEDULER:New( self, self._SpawnCleanUpScheduler, {}, 1, SpawnCleanUpInterval, 0.2 ) - return self -end - - - ---- Makes the groups visible before start (like a batallion). --- The method will take the position of the group as the first position in the array. --- @param #SPAWN self --- @param #number SpawnAngle The angle in degrees how the groups and each unit of the group will be positioned. --- @param #number SpawnWidth The amount of Groups that will be positioned on the X axis. --- @param #number SpawnDeltaX The space between each Group on the X-axis. --- @param #number SpawnDeltaY The space between each Group on the Y-axis. --- @return #SPAWN self --- @usage --- -- Define an array of Groups. --- Spawn_BE_Ground = SPAWN:New( 'BE Ground' ):InitLimit( 2, 24 ):InitArray( 90, "Diamond", 10, 100, 50 ) -function SPAWN:InitArray( SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY ) - self:F( { self.SpawnTemplatePrefix, SpawnAngle, SpawnWidth, SpawnDeltaX, SpawnDeltaY } ) - - self.SpawnVisible = true -- When the first Spawn executes, all the Groups need to be made visible before start. - - local SpawnX = 0 - local SpawnY = 0 - local SpawnXIndex = 0 - local SpawnYIndex = 0 - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self:T( { SpawnX, SpawnY, SpawnXIndex, SpawnYIndex } ) - - self.SpawnGroups[SpawnGroupID].Visible = true - self.SpawnGroups[SpawnGroupID].Spawned = false - - SpawnXIndex = SpawnXIndex + 1 - if SpawnWidth and SpawnWidth ~= 0 then - if SpawnXIndex >= SpawnWidth then - SpawnXIndex = 0 - SpawnYIndex = SpawnYIndex + 1 - end - end - - local SpawnRootX = self.SpawnGroups[SpawnGroupID].SpawnTemplate.x - local SpawnRootY = self.SpawnGroups[SpawnGroupID].SpawnTemplate.y - - self:_TranslateRotate( SpawnGroupID, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) - - self.SpawnGroups[SpawnGroupID].SpawnTemplate.lateActivation = true - self.SpawnGroups[SpawnGroupID].SpawnTemplate.visible = true - - self.SpawnGroups[SpawnGroupID].Visible = true - - self:HandleEvent( EVENTS.Birth, self._OnBirth ) - self:HandleEvent( EVENTS.Dead, self._OnDeadOrCrash ) - self:HandleEvent( EVENTS.Crash, self._OnDeadOrCrash ) - if self.Repeat then - self:HandleEvent( EVENTS.Takeoff, self._OnTakeOff ) - self:HandleEvent( EVENTS.Land, self._OnLand ) - end - if self.RepeatOnEngineShutDown then - self:HandleEvent( EVENTS.EngineShutdown, self._OnEngineShutDown ) - end - - self.SpawnGroups[SpawnGroupID].Group = _DATABASE:Spawn( self.SpawnGroups[SpawnGroupID].SpawnTemplate ) - - SpawnX = SpawnXIndex * SpawnDeltaX - SpawnY = SpawnYIndex * SpawnDeltaY - end - - return self -end - -do -- AI methods - --- Turns the AI On or Off for the @{Group} when spawning. - -- @param #SPAWN self - -- @param #boolean AIOnOff A value of true sets the AI On, a value of false sets the AI Off. - -- @return #SPAWN The SPAWN object - function SPAWN:InitAIOnOff( AIOnOff ) - - self.AIOnOff = AIOnOff - return self - end - - --- Turns the AI On for the @{Group} when spawning. - -- @param #SPAWN self - -- @return #SPAWN The SPAWN object - function SPAWN:InitAIOn() - - return self:InitAIOnOff( true ) - end - - --- Turns the AI Off for the @{Group} when spawning. - -- @param #SPAWN self - -- @return #SPAWN The SPAWN object - function SPAWN:InitAIOff() - - return self:InitAIOnOff( false ) - end - -end -- AI methods - ---- Will spawn a group based on the internal index. --- Note: Uses @{DATABASE} module defined in MOOSE. --- @param #SPAWN self --- @return Wrapper.Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:Spawn() - self:F( { self.SpawnTemplatePrefix, self.SpawnIndex, self.AliveUnits } ) - - return self:SpawnWithIndex( self.SpawnIndex + 1 ) -end - ---- Will re-spawn a group based on a given index. --- Note: Uses @{DATABASE} module defined in MOOSE. --- @param #SPAWN self --- @param #string SpawnIndex The index of the group to be spawned. --- @return Wrapper.Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:ReSpawn( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) - - if not SpawnIndex then - SpawnIndex = 1 - end - --- TODO: This logic makes DCS crash and i don't know why (yet). - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - local WayPoints = SpawnGroup and SpawnGroup.WayPoints or nil - if SpawnGroup then - local SpawnDCSGroup = SpawnGroup:GetDCSObject() - if SpawnDCSGroup then - SpawnGroup:Destroy() - end - end - - local SpawnGroup = self:SpawnWithIndex( SpawnIndex ) - if SpawnGroup and WayPoints then - -- If there were WayPoints set, then Re-Execute those WayPoints! - SpawnGroup:WayPointInitialize( WayPoints ) - SpawnGroup:WayPointExecute( 1, 5 ) - end - - if SpawnGroup.ReSpawnFunction then - SpawnGroup:ReSpawnFunction() - end - - return SpawnGroup -end - ---- Will spawn a group with a specified index number. --- Uses @{DATABASE} global object defined in MOOSE. --- @param #SPAWN self --- @param #string SpawnIndex The index of the group to be spawned. --- @return Wrapper.Group#GROUP The group that was spawned. You can use this group for further actions. -function SPAWN:SpawnWithIndex( SpawnIndex ) - self:F2( { SpawnTemplatePrefix = self.SpawnTemplatePrefix, SpawnIndex = SpawnIndex, AliveUnits = self.AliveUnits, SpawnMaxGroups = self.SpawnMaxGroups } ) - - if self:_GetSpawnIndex( SpawnIndex ) then - - if self.SpawnGroups[self.SpawnIndex].Visible then - self.SpawnGroups[self.SpawnIndex].Group:Activate() - else - - local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate - self:T( SpawnTemplate.name ) - - if SpawnTemplate then - - local PointVec3 = POINT_VEC3:New( SpawnTemplate.route.points[1].x, SpawnTemplate.route.points[1].alt, SpawnTemplate.route.points[1].y ) - self:T( { "Current point of ", self.SpawnTemplatePrefix, PointVec3 } ) - - -- If RandomizePosition, then Randomize the formation in the zone band, keeping the template. - if self.SpawnRandomizePosition then - local RandomVec2 = PointVec3:GetRandomVec2InRadius( self.SpawnRandomizePositionOuterRadius, self.SpawnRandomizePositionInnerRadius ) - local CurrentX = SpawnTemplate.units[1].x - local CurrentY = SpawnTemplate.units[1].y - SpawnTemplate.x = RandomVec2.x - SpawnTemplate.y = RandomVec2.y - for UnitID = 1, #SpawnTemplate.units do - SpawnTemplate.units[UnitID].x = SpawnTemplate.units[UnitID].x + ( RandomVec2.x - CurrentX ) - SpawnTemplate.units[UnitID].y = SpawnTemplate.units[UnitID].y + ( RandomVec2.y - CurrentY ) - self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) - end - end - - -- If RandomizeUnits, then Randomize the formation at the start point. - if self.SpawnRandomizeUnits then - for UnitID = 1, #SpawnTemplate.units do - local RandomVec2 = PointVec3:GetRandomVec2InRadius( self.SpawnOuterRadius, self.SpawnInnerRadius ) - SpawnTemplate.units[UnitID].x = RandomVec2.x - SpawnTemplate.units[UnitID].y = RandomVec2.y - self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) - end - end - - if SpawnTemplate.CategoryID == Group.Category.HELICOPTER or SpawnTemplate.CategoryID == Group.Category.AIRPLANE then - if SpawnTemplate.route.points[1].type == "TakeOffParking" then - SpawnTemplate.uncontrolled = self.SpawnUnControlled - end - end - end - - self:HandleEvent( EVENTS.Birth, self._OnBirth ) - self:HandleEvent( EVENTS.Dead, self._OnDeadOrCrash ) - self:HandleEvent( EVENTS.Crash, self._OnDeadOrCrash ) - if self.Repeat then - self:HandleEvent( EVENTS.Takeoff, self._OnTakeOff ) - self:HandleEvent( EVENTS.Land, self._OnLand ) - end - if self.RepeatOnEngineShutDown then - self:HandleEvent( EVENTS.EngineShutdown, self._OnEngineShutDown ) - end - - self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( SpawnTemplate ) - - local SpawnGroup = self.SpawnGroups[self.SpawnIndex].Group -- Wrapper.Group#GROUP - - --TODO: Need to check if this function doesn't need to be scheduled, as the group may not be immediately there! - if SpawnGroup then - - SpawnGroup:SetAIOnOff( self.AIOnOff ) - end - - self:T3( SpawnTemplate.name ) - - -- If there is a SpawnFunction hook defined, call it. - if self.SpawnFunctionHook then - self.SpawnFunctionHook( self.SpawnGroups[self.SpawnIndex].Group, unpack( self.SpawnFunctionArguments ) ) - end - -- TODO: Need to fix this by putting an "R" in the name of the group when the group repeats. - --if self.Repeat then - -- _DATABASE:SetStatusGroup( SpawnTemplate.name, "ReSpawn" ) - --end - end - - self.SpawnGroups[self.SpawnIndex].Spawned = true - return self.SpawnGroups[self.SpawnIndex].Group - else - --self:E( { self.SpawnTemplatePrefix, "No more Groups to Spawn:", SpawnIndex, self.SpawnMaxGroups } ) - end - - return nil -end - ---- Spawns new groups at varying time intervals. --- This is useful if you want to have continuity within your missions of certain (AI) groups to be present (alive) within your missions. --- @param #SPAWN self --- @param #number SpawnTime The time interval defined in seconds between each new spawn of new groups. --- @param #number SpawnTimeVariation The variation to be applied on the defined time interval between each new spawn. --- The variation is a number between 0 and 1, representing the %-tage of variation to be applied on the time interval. --- @return #SPAWN self --- @usage --- -- NATO helicopters engaging in the battle field. --- -- The time interval is set to SPAWN new helicopters between each 600 seconds, with a time variation of 50%. --- -- The time variation in this case will be between 450 seconds and 750 seconds. --- -- This is calculated as follows: --- -- Low limit: 600 * ( 1 - 0.5 / 2 ) = 450 --- -- High limit: 600 * ( 1 + 0.5 / 2 ) = 750 --- -- Between these two values, a random amount of seconds will be choosen for each new spawn of the helicopters. --- Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 ) -function SPAWN:SpawnScheduled( SpawnTime, SpawnTimeVariation ) - self:F( { SpawnTime, SpawnTimeVariation } ) - - if SpawnTime ~= nil and SpawnTimeVariation ~= nil then - self.SpawnScheduler = SCHEDULER:New( self, self._Scheduler, {}, 1, SpawnTime, SpawnTimeVariation ) - end - - return self -end - ---- Will re-start the spawning scheduler. --- Note: This method is only required to be called when the schedule was stopped. -function SPAWN:SpawnScheduleStart() - self:F( { self.SpawnTemplatePrefix } ) - - self.SpawnScheduler:Start() -end - ---- Will stop the scheduled spawning scheduler. -function SPAWN:SpawnScheduleStop() - self:F( { self.SpawnTemplatePrefix } ) - - self.SpawnScheduler:Stop() -end - - ---- Allows to place a CallFunction hook when a new group spawns. --- The provided method will be called when a new group is spawned, including its given parameters. --- The first parameter of the SpawnFunction is the @{Group#GROUP} that was spawned. --- @param #SPAWN self --- @param #function SpawnCallBackFunction The function to be called when a group spawns. --- @param SpawnFunctionArguments A random amount of arguments to be provided to the function when the group spawns. --- @return #SPAWN --- @usage --- -- Declare SpawnObject and call a function when a new Group is spawned. --- local SpawnObject = SPAWN --- :New( "SpawnObject" ) --- :InitLimit( 2, 10 ) --- :OnSpawnGroup( --- function( SpawnGroup ) --- SpawnGroup:E( "I am spawned" ) --- end --- ) --- :SpawnScheduled( 300, 0.3 ) -function SPAWN:OnSpawnGroup( SpawnCallBackFunction, ... ) - self:F( "OnSpawnGroup" ) - - self.SpawnFunctionHook = SpawnCallBackFunction - self.SpawnFunctionArguments = {} - if arg then - self.SpawnFunctionArguments = arg - end - - return self -end - - ---- Will spawn a group from a Vec3 in 3D space. --- This method is mostly advisable to be used if you want to simulate spawning units in the air, like helicopters or airplanes. --- Note that each point in the route assigned to the spawning group is reset to the point of the spawn. --- You can use the returned group to further define the route to be followed. --- @param #SPAWN self --- @param Dcs.DCSTypes#Vec3 Vec3 The Vec3 coordinates where to spawn the group. --- @param #number SpawnIndex (optional) The index which group to spawn within the given zone. --- @return Wrapper.Group#GROUP that was spawned. --- @return #nil Nothing was spawned. -function SPAWN:SpawnFromVec3( Vec3, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, Vec3, SpawnIndex } ) - - local PointVec3 = POINT_VEC3:NewFromVec3( Vec3 ) - self:T2(PointVec3) - - if SpawnIndex then - else - SpawnIndex = self.SpawnIndex + 1 - end - - if self:_GetSpawnIndex( SpawnIndex ) then - - local SpawnTemplate = self.SpawnGroups[self.SpawnIndex].SpawnTemplate - - if SpawnTemplate then - - self:T( { "Current point of ", self.SpawnTemplatePrefix, Vec3 } ) - - -- Translate the position of the Group Template to the Vec3. - for UnitID = 1, #SpawnTemplate.units do - self:T( 'Before Translation SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) - local UnitTemplate = SpawnTemplate.units[UnitID] - local SX = UnitTemplate.x - local SY = UnitTemplate.y - local BX = SpawnTemplate.route.points[1].x - local BY = SpawnTemplate.route.points[1].y - local TX = Vec3.x + ( SX - BX ) - local TY = Vec3.z + ( SY - BY ) - SpawnTemplate.units[UnitID].x = TX - SpawnTemplate.units[UnitID].y = TY - SpawnTemplate.units[UnitID].alt = Vec3.y - self:T( 'After Translation SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) - end - - SpawnTemplate.route.points[1].x = Vec3.x - SpawnTemplate.route.points[1].y = Vec3.z - SpawnTemplate.route.points[1].alt = Vec3.y - - SpawnTemplate.x = Vec3.x - SpawnTemplate.y = Vec3.z - - return self:SpawnWithIndex( self.SpawnIndex ) - end - end - - return nil -end - ---- Will spawn a group from a Vec2 in 3D space. --- This method is mostly advisable to be used if you want to simulate spawning groups on the ground from air units, like vehicles. --- Note that each point in the route assigned to the spawning group is reset to the point of the spawn. --- You can use the returned group to further define the route to be followed. --- @param #SPAWN self --- @param Dcs.DCSTypes#Vec2 Vec2 The Vec2 coordinates where to spawn the group. --- @param #number SpawnIndex (optional) The index which group to spawn within the given zone. --- @return Wrapper.Group#GROUP that was spawned. --- @return #nil Nothing was spawned. -function SPAWN:SpawnFromVec2( Vec2, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, Vec2, SpawnIndex } ) - - local PointVec2 = POINT_VEC2:NewFromVec2( Vec2 ) - return self:SpawnFromVec3( PointVec2:GetVec3(), SpawnIndex ) -end - - ---- Will spawn a group from a hosting unit. This method is mostly advisable to be used if you want to simulate spawning from air units, like helicopters, which are dropping infantry into a defined Landing Zone. --- Note that each point in the route assigned to the spawning group is reset to the point of the spawn. --- You can use the returned group to further define the route to be followed. --- @param #SPAWN self --- @param Wrapper.Unit#UNIT HostUnit The air or ground unit dropping or unloading the group. --- @param #number SpawnIndex (optional) The index which group to spawn within the given zone. --- @return Wrapper.Group#GROUP that was spawned. --- @return #nil Nothing was spawned. -function SPAWN:SpawnFromUnit( HostUnit, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, HostUnit, SpawnIndex } ) - - if HostUnit and HostUnit:IsAlive() then -- and HostUnit:getUnit(1):inAir() == false then - return self:SpawnFromVec3( HostUnit:GetVec3(), SpawnIndex ) - end - - return nil -end - ---- Will spawn a group from a hosting static. This method is mostly advisable to be used if you want to simulate spawning from buldings and structures (static buildings). --- You can use the returned group to further define the route to be followed. --- @param #SPAWN self --- @param Wrapper.Static#STATIC HostStatic The static dropping or unloading the group. --- @param #number SpawnIndex (optional) The index which group to spawn within the given zone. --- @return Wrapper.Group#GROUP that was spawned. --- @return #nil Nothing was spawned. -function SPAWN:SpawnFromStatic( HostStatic, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, HostStatic, SpawnIndex } ) - - if HostStatic and HostStatic:IsAlive() then - return self:SpawnFromVec3( HostStatic:GetVec3(), SpawnIndex ) - end - - return nil -end - ---- Will spawn a Group within a given @{Zone}. --- The @{Zone} can be of any type derived from @{Zone#ZONE_BASE}. --- Once the @{Group} is spawned within the zone, the @{Group} will continue on its route. --- The **first waypoint** (where the group is spawned) is replaced with the zone location coordinates. --- @param #SPAWN self --- @param Core.Zone#ZONE Zone The zone where the group is to be spawned. --- @param #boolean RandomizeGroup (optional) Randomization of the @{Group} position in the zone. --- @param #number SpawnIndex (optional) The index which group to spawn within the given zone. --- @return Wrapper.Group#GROUP that was spawned. --- @return #nil when nothing was spawned. -function SPAWN:SpawnInZone( Zone, RandomizeGroup, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, Zone, RandomizeGroup, SpawnIndex } ) - - if Zone then - if RandomizeGroup then - return self:SpawnFromVec2( Zone:GetRandomVec2(), SpawnIndex ) - else - return self:SpawnFromVec2( Zone:GetVec2(), SpawnIndex ) - end - end - - return nil -end - ---- (**AIR**) Will spawn a plane group in UnControlled or Controlled mode... --- This will be similar to the uncontrolled flag setting in the ME. --- You can use UnControlled mode to simulate planes startup and ready for take-off but aren't moving (yet). --- ReSpawn the plane in Controlled mode, and the plane will move... --- @param #SPAWN self --- @param #boolean UnControlled true if UnControlled, false if Controlled. --- @return #SPAWN self -function SPAWN:InitUnControlled( UnControlled ) - self:F2( { self.SpawnTemplatePrefix, UnControlled } ) - - self.SpawnUnControlled = UnControlled - - for SpawnGroupID = 1, self.SpawnMaxGroups do - self.SpawnGroups[SpawnGroupID].UnControlled = UnControlled - end - - return self -end - - - ---- Will return the SpawnGroupName either with with a specific count number or without any count. --- @param #SPAWN self --- @param #number SpawnIndex Is the number of the Group that is to be spawned. --- @return #string SpawnGroupName -function SPAWN:SpawnGroupName( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex } ) - - local SpawnPrefix = self.SpawnTemplatePrefix - if self.SpawnAliasPrefix then - SpawnPrefix = self.SpawnAliasPrefix - end - - if SpawnIndex then - local SpawnName = string.format( '%s#%03d', SpawnPrefix, SpawnIndex ) - self:T( SpawnName ) - return SpawnName - else - self:T( SpawnPrefix ) - return SpawnPrefix - end - -end - ---- Will find the first alive @{Group} it has spawned, and return the alive @{Group} object and the first Index where the first alive @{Group} object has been found. --- @param #SPAWN self --- @return Wrapper.Group#GROUP, #number The @{Group} object found, the new Index where the group was found. --- @return #nil, #nil When no group is found, #nil is returned. --- @usage --- -- Find the first alive @{Group} object of the SpawnPlanes SPAWN object @{Group} collection that it has spawned during the mission. --- local GroupPlane, Index = SpawnPlanes:GetFirstAliveGroup() --- while GroupPlane ~= nil do --- -- Do actions with the GroupPlane object. --- GroupPlane, Index = SpawnPlanes:GetNextAliveGroup( Index ) --- end -function SPAWN:GetFirstAliveGroup() - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) - - for SpawnIndex = 1, self.SpawnCount do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - return SpawnGroup, SpawnIndex - end - end - - return nil, nil -end - - ---- Will find the next alive @{Group} object from a given Index, and return a reference to the alive @{Group} object and the next Index where the alive @{Group} has been found. --- @param #SPAWN self --- @param #number SpawnIndexStart A Index holding the start position to search from. This method can also be used to find the first alive @{Group} object from the given Index. --- @return Wrapper.Group#GROUP, #number The next alive @{Group} object found, the next Index where the next alive @{Group} object was found. --- @return #nil, #nil When no alive @{Group} object is found from the start Index position, #nil is returned. --- @usage --- -- Find the first alive @{Group} object of the SpawnPlanes SPAWN object @{Group} collection that it has spawned during the mission. --- local GroupPlane, Index = SpawnPlanes:GetFirstAliveGroup() --- while GroupPlane ~= nil do --- -- Do actions with the GroupPlane object. --- GroupPlane, Index = SpawnPlanes:GetNextAliveGroup( Index ) --- end -function SPAWN:GetNextAliveGroup( SpawnIndexStart ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndexStart } ) - - SpawnIndexStart = SpawnIndexStart + 1 - for SpawnIndex = SpawnIndexStart, self.SpawnCount do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - return SpawnGroup, SpawnIndex - end - end - - return nil, nil -end - ---- Will find the last alive @{Group} object, and will return a reference to the last live @{Group} object and the last Index where the last alive @{Group} object has been found. --- @param #SPAWN self --- @return Wrapper.Group#GROUP, #number The last alive @{Group} object found, the last Index where the last alive @{Group} object was found. --- @return #nil, #nil When no alive @{Group} object is found, #nil is returned. --- @usage --- -- Find the last alive @{Group} object of the SpawnPlanes SPAWN object @{Group} collection that it has spawned during the mission. --- local GroupPlane, Index = SpawnPlanes:GetLastAliveGroup() --- if GroupPlane then -- GroupPlane can be nil!!! --- -- Do actions with the GroupPlane object. --- end -function SPAWN:GetLastAliveGroup() - self:F( { self.SpawnTemplatePrefixself.SpawnAliasPrefix } ) - - self.SpawnIndex = self:_GetLastIndex() - for SpawnIndex = self.SpawnIndex, 1, -1 do - local SpawnGroup = self:GetGroupFromIndex( SpawnIndex ) - if SpawnGroup and SpawnGroup:IsAlive() then - self.SpawnIndex = SpawnIndex - return SpawnGroup - end - end - - self.SpawnIndex = nil - return nil -end - - - ---- Get the group from an index. --- Returns the group from the SpawnGroups list. --- If no index is given, it will return the first group in the list. --- @param #SPAWN self --- @param #number SpawnIndex The index of the group to return. --- @return Wrapper.Group#GROUP self -function SPAWN:GetGroupFromIndex( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) - - if not SpawnIndex then - SpawnIndex = 1 - end - - if self.SpawnGroups and self.SpawnGroups[SpawnIndex] then - local SpawnGroup = self.SpawnGroups[SpawnIndex].Group - return SpawnGroup - else - return nil - end -end - - ---- Return the prefix of a SpawnUnit. --- The method will search for a #-mark, and will return the text before the #-mark. --- It will return nil of no prefix was found. --- @param #SPAWN self --- @param Dcs.DCSWrapper.Unit#UNIT DCSUnit The @{DCSUnit} to be searched. --- @return #string The prefix --- @return #nil Nothing found -function SPAWN:_GetPrefixFromGroup( SpawnGroup ) - self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } ) - - local GroupName = SpawnGroup:GetName() - if GroupName then - local SpawnPrefix = string.match( GroupName, ".*#" ) - if SpawnPrefix then - SpawnPrefix = SpawnPrefix:sub( 1, -2 ) - end - return SpawnPrefix - end - - return nil -end - - ---- Get the index from a given group. --- The function will search the name of the group for a #, and will return the number behind the #-mark. -function SPAWN:GetSpawnIndexFromGroup( SpawnGroup ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } ) - - local IndexString = string.match( SpawnGroup:GetName(), "#(%d*)$" ):sub( 2 ) - local Index = tonumber( IndexString ) - - self:T3( IndexString, Index ) - return Index - -end - ---- Return the last maximum index that can be used. -function SPAWN:_GetLastIndex() - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) - - return self.SpawnMaxGroups -end - ---- Initalize the SpawnGroups collection. --- @param #SPAWN self -function SPAWN:_InitializeSpawnGroups( SpawnIndex ) - self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } ) - - if not self.SpawnGroups[SpawnIndex] then - self.SpawnGroups[SpawnIndex] = {} - self.SpawnGroups[SpawnIndex].Visible = false - self.SpawnGroups[SpawnIndex].Spawned = false - self.SpawnGroups[SpawnIndex].UnControlled = false - self.SpawnGroups[SpawnIndex].SpawnTime = 0 - - self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefix - self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) - end - - self:_RandomizeTemplate( SpawnIndex ) - self:_RandomizeRoute( SpawnIndex ) - --self:_TranslateRotate( SpawnIndex ) - - return self.SpawnGroups[SpawnIndex] -end - - - ---- Gets the CategoryID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCategoryID( SpawnPrefix ) - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - return TemplateGroup:getCategory() - else - return nil - end -end - ---- Gets the CoalitionID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCoalitionID( SpawnPrefix ) - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - return TemplateGroup:getCoalition() - else - return nil - end -end - ---- Gets the CountryID of the Group with the given SpawnPrefix -function SPAWN:_GetGroupCountryID( SpawnPrefix ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnPrefix } ) - - local TemplateGroup = Group.getByName( SpawnPrefix ) - - if TemplateGroup then - local TemplateUnits = TemplateGroup:getUnits() - return TemplateUnits[1]:getCountry() - else - return nil - end -end - ---- Gets the Group Template from the ME environment definition. --- This method used the @{DATABASE} object, which contains ALL initial and new spawned object in MOOSE. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix --- @return @SPAWN self -function SPAWN:_GetTemplate( SpawnTemplatePrefix ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnTemplatePrefix } ) - - local SpawnTemplate = nil - - SpawnTemplate = routines.utils.deepCopy( _DATABASE.Templates.Groups[SpawnTemplatePrefix].Template ) - - if SpawnTemplate == nil then - error( 'No Template returned for SpawnTemplatePrefix = ' .. SpawnTemplatePrefix ) - end - - --SpawnTemplate.SpawnCoalitionID = self:_GetGroupCoalitionID( SpawnTemplatePrefix ) - --SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix ) - --SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix ) - - self:T3( { SpawnTemplate } ) - return SpawnTemplate -end - ---- Prepares the new Group Template. --- @param #SPAWN self --- @param #string SpawnTemplatePrefix --- @param #number SpawnIndex --- @return #SPAWN self -function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix } ) - - local SpawnTemplate = self:_GetTemplate( SpawnTemplatePrefix ) - SpawnTemplate.name = self:SpawnGroupName( SpawnIndex ) - - SpawnTemplate.groupId = nil - --SpawnTemplate.lateActivation = false - SpawnTemplate.lateActivation = false - - if SpawnTemplate.CategoryID == Group.Category.GROUND then - self:T3( "For ground units, visible needs to be false..." ) - SpawnTemplate.visible = false - end - - if self.SpawnInitKeepUnitNames == false then - for UnitID = 1, #SpawnTemplate.units do - SpawnTemplate.units[UnitID].name = string.format( SpawnTemplate.name .. '-%02d', UnitID ) - SpawnTemplate.units[UnitID].unitId = nil - end - else - for UnitID = 1, #SpawnTemplate.units do - local UnitPrefix, Rest = string.match( SpawnTemplate.units[UnitID].name, "^([^#]+)#?" ):gsub( "^%s*(.-)%s*$", "%1" ) - self:T( { UnitPrefix, Rest } ) - - SpawnTemplate.units[UnitID].name = string.format( '%s#%03d-%02d', UnitPrefix, SpawnIndex, UnitID ) - SpawnTemplate.units[UnitID].unitId = nil - end - end - - self:T3( { "Template:", SpawnTemplate } ) - return SpawnTemplate - -end - ---- Private method randomizing the routes. --- @param #SPAWN self --- @param #number SpawnIndex The index of the group to be spawned. --- @return #SPAWN -function SPAWN:_RandomizeRoute( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeRoute, self.SpawnRandomizeRouteStartPoint, self.SpawnRandomizeRouteEndPoint, self.SpawnRandomizeRouteRadius } ) - - if self.SpawnRandomizeRoute then - local SpawnTemplate = self.SpawnGroups[SpawnIndex].SpawnTemplate - local RouteCount = #SpawnTemplate.route.points - - for t = self.SpawnRandomizeRouteStartPoint + 1, ( RouteCount - self.SpawnRandomizeRouteEndPoint ) do - - SpawnTemplate.route.points[t].x = SpawnTemplate.route.points[t].x + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) - SpawnTemplate.route.points[t].y = SpawnTemplate.route.points[t].y + math.random( self.SpawnRandomizeRouteRadius * -1, self.SpawnRandomizeRouteRadius ) - - -- Manage randomization of altitude for airborne units ... - if SpawnTemplate.CategoryID == Group.Category.AIRPLANE or SpawnTemplate.CategoryID == Group.Category.HELICOPTER then - if SpawnTemplate.route.points[t].alt and self.SpawnRandomizeRouteHeight then - SpawnTemplate.route.points[t].alt = SpawnTemplate.route.points[t].alt + math.random( 1, self.SpawnRandomizeRouteHeight ) - end - else - SpawnTemplate.route.points[t].alt = nil - end - - self:T( 'SpawnTemplate.route.points[' .. t .. '].x = ' .. SpawnTemplate.route.points[t].x .. ', SpawnTemplate.route.points[' .. t .. '].y = ' .. SpawnTemplate.route.points[t].y ) - end - end - - self:_RandomizeZones( SpawnIndex ) - - return self -end - ---- Private method that randomizes the template of the group. --- @param #SPAWN self --- @param #number SpawnIndex --- @return #SPAWN self -function SPAWN:_RandomizeTemplate( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeTemplate } ) - - if self.SpawnRandomizeTemplate then - self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix = self.SpawnTemplatePrefixTable[ math.random( 1, #self.SpawnTemplatePrefixTable ) ] - self.SpawnGroups[SpawnIndex].SpawnTemplate = self:_Prepare( self.SpawnGroups[SpawnIndex].SpawnTemplatePrefix, SpawnIndex ) - self.SpawnGroups[SpawnIndex].SpawnTemplate.route = routines.utils.deepCopy( self.SpawnTemplate.route ) - self.SpawnGroups[SpawnIndex].SpawnTemplate.x = self.SpawnTemplate.x - self.SpawnGroups[SpawnIndex].SpawnTemplate.y = self.SpawnTemplate.y - self.SpawnGroups[SpawnIndex].SpawnTemplate.start_time = self.SpawnTemplate.start_time - local OldX = self.SpawnGroups[SpawnIndex].SpawnTemplate.units[1].x - local OldY = self.SpawnGroups[SpawnIndex].SpawnTemplate.units[1].y - for UnitID = 1, #self.SpawnGroups[SpawnIndex].SpawnTemplate.units do - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].heading = self.SpawnTemplate.units[1].heading - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].x = self.SpawnTemplate.units[1].x + ( self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].x - OldX ) - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].y = self.SpawnTemplate.units[1].y + ( self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].y - OldY ) - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[UnitID].alt = self.SpawnTemplate.units[1].alt - end - end - - self:_RandomizeRoute( SpawnIndex ) - - return self -end - ---- Private method that randomizes the @{Zone}s where the Group will be spawned. --- @param #SPAWN self --- @param #number SpawnIndex --- @return #SPAWN self -function SPAWN:_RandomizeZones( SpawnIndex ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnRandomizeZones } ) - - if self.SpawnRandomizeZones then - local SpawnZone = nil -- Core.Zone#ZONE_BASE - while not SpawnZone do - self:T( { SpawnZoneTableCount = #self.SpawnZoneTable, self.SpawnZoneTable } ) - local ZoneID = math.random( #self.SpawnZoneTable ) - self:T( ZoneID ) - SpawnZone = self.SpawnZoneTable[ ZoneID ]:GetZoneMaybe() - end - - self:T( "Preparing Spawn in Zone", SpawnZone:GetName() ) - - local SpawnVec2 = SpawnZone:GetRandomVec2() - - self:T( { SpawnVec2 = SpawnVec2 } ) - - local SpawnTemplate = self.SpawnGroups[SpawnIndex].SpawnTemplate - - self:T( { Route = SpawnTemplate.route } ) - - for UnitID = 1, #SpawnTemplate.units do - local UnitTemplate = SpawnTemplate.units[UnitID] - self:T( 'Before Translation SpawnTemplate.units['..UnitID..'].x = ' .. UnitTemplate.x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. UnitTemplate.y ) - local SX = UnitTemplate.x - local SY = UnitTemplate.y - local BX = SpawnTemplate.route.points[1].x - local BY = SpawnTemplate.route.points[1].y - local TX = SpawnVec2.x + ( SX - BX ) - local TY = SpawnVec2.y + ( SY - BY ) - UnitTemplate.x = TX - UnitTemplate.y = TY - -- TODO: Manage altitude based on landheight... - --SpawnTemplate.units[UnitID].alt = SpawnVec2: - self:T( 'After Translation SpawnTemplate.units['..UnitID..'].x = ' .. UnitTemplate.x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. UnitTemplate.y ) - end - SpawnTemplate.x = SpawnVec2.x - SpawnTemplate.y = SpawnVec2.y - SpawnTemplate.route.points[1].x = SpawnVec2.x - SpawnTemplate.route.points[1].y = SpawnVec2.y - end - - return self - -end - -function SPAWN:_TranslateRotate( SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle ) - self:F( { self.SpawnTemplatePrefix, SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle } ) - - -- Translate - local TranslatedX = SpawnX - local TranslatedY = SpawnY - - -- Rotate - -- From Wikipedia: https://en.wikipedia.org/wiki/Rotation_matrix#Common_rotations - -- x' = x \cos \theta - y \sin \theta\ - -- y' = x \sin \theta + y \cos \theta\ - local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) - + TranslatedY * math.sin( math.rad( SpawnAngle ) ) - local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) - + TranslatedY * math.cos( math.rad( SpawnAngle ) ) - - -- Assign - self.SpawnGroups[SpawnIndex].SpawnTemplate.x = SpawnRootX - RotatedX - self.SpawnGroups[SpawnIndex].SpawnTemplate.y = SpawnRootY + RotatedY - - - local SpawnUnitCount = table.getn( self.SpawnGroups[SpawnIndex].SpawnTemplate.units ) - for u = 1, SpawnUnitCount do - - -- Translate - local TranslatedX = SpawnX - local TranslatedY = SpawnY - 10 * ( u - 1 ) - - -- Rotate - local RotatedX = - TranslatedX * math.cos( math.rad( SpawnAngle ) ) - + TranslatedY * math.sin( math.rad( SpawnAngle ) ) - local RotatedY = TranslatedX * math.sin( math.rad( SpawnAngle ) ) - + TranslatedY * math.cos( math.rad( SpawnAngle ) ) - - -- Assign - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].x = SpawnRootX - RotatedX - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].y = SpawnRootY + RotatedY - self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading = self.SpawnGroups[SpawnIndex].SpawnTemplate.units[u].heading + math.rad( SpawnAngle ) - end - - return self -end - ---- Get the next index of the groups to be spawned. This method is complicated, as it is used at several spaces. -function SPAWN:_GetSpawnIndex( SpawnIndex ) - self:F2( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } ) - - if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then - if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits + #self.SpawnTemplate.units <= self.SpawnMaxUnitsAlive ) or self.UnControlled == true then - if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then - self.SpawnCount = self.SpawnCount + 1 - SpawnIndex = self.SpawnCount - end - self.SpawnIndex = SpawnIndex - if not self.SpawnGroups[self.SpawnIndex] then - self:_InitializeSpawnGroups( self.SpawnIndex ) - end - else - return nil - end - else - return nil - end - - return self.SpawnIndex -end - - --- TODO Need to delete this... _DATABASE does this now ... - ---- @param #SPAWN self --- @param Core.Event#EVENTDATA EventData -function SPAWN:_OnBirth( EventData ) - self:F( self.SpawnTemplatePrefix ) - - local SpawnGroup = EventData.IniGroup - - if SpawnGroup then - local EventPrefix = self:_GetPrefixFromGroup( SpawnGroup ) - self:T( { "Birth Event:", EventPrefix, self.SpawnTemplatePrefix } ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - self.AliveUnits = self.AliveUnits + 1 - self:T( "Alive Units: " .. self.AliveUnits ) - end - end - -end - ---- Obscolete --- @todo Need to delete this... _DATABASE does this now ... - ---- @param #SPAWN self --- @param Core.Event#EVENTDATA EventData -function SPAWN:_OnDeadOrCrash( EventData ) - self:F( self.SpawnTemplatePrefix ) - - local SpawnGroup = EventData.IniGroup - - if SpawnGroup then - local EventPrefix = self:_GetPrefixFromGroup( SpawnGroup ) - self:T( { "Dead event: " .. EventPrefix } ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - self.AliveUnits = self.AliveUnits - 1 - self:T( "Alive Units: " .. self.AliveUnits ) - end - end -end - ---- Will detect AIR Units taking off... When the event takes place, the spawned Group is registered as airborne... --- This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups. --- @param #SPAWN self --- @param Core.Event#EVENTDATA EventData -function SPAWN:_OnTakeOff( EventData ) - self:F( self.SpawnTemplatePrefix ) - - local SpawnGroup = EventData.IniGroup - if SpawnGroup then - local EventPrefix = self:_GetPrefixFromGroup( SpawnGroup ) - self:T( { "TakeOff event: " .. EventPrefix } ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - self:T( "self.Landed = false" ) - SpawnGroup:SetState( SpawnGroup, "Spawn_Landed", false ) - end - end -end - ---- Will detect AIR Units landing... When the event takes place, the spawned Group is registered as landed. --- This is needed to ensure that Re-SPAWNing is only done for landed AIR Groups. --- @param #SPAWN self --- @param Core.Event#EVENTDATA EventData -function SPAWN:_OnLand( EventData ) - self:F( self.SpawnTemplatePrefix ) - - local SpawnGroup = EventData.IniGroup - if SpawnGroup then - local EventPrefix = self:_GetPrefixFromGroup( SpawnGroup ) - self:T( { "Land event: " .. EventPrefix } ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - -- TODO: Check if this is the last unit of the group that lands. - SpawnGroup:SetState( SpawnGroup, "Spawn_Landed", true ) - if self.RepeatOnLanding then - local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) - self:T( { "Landed:", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) - self:ReSpawn( SpawnGroupIndex ) - end - end - end -end - ---- Will detect AIR Units shutting down their engines ... --- When the event takes place, and the method @{RepeatOnEngineShutDown} was called, the spawned Group will Re-SPAWN. --- But only when the Unit was registered to have landed. --- @param #SPAWN self --- @param Core.Event#EVENTDATA EventData -function SPAWN:_OnEngineShutDown( EventData ) - self:F( self.SpawnTemplatePrefix ) - - local SpawnGroup = EventData.IniGroup - if SpawnGroup then - local EventPrefix = self:_GetPrefixFromGroup( SpawnGroup ) - self:T( { "EngineShutdown event: " .. EventPrefix } ) - if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then - -- todo: test if on the runway - local Landed = SpawnGroup:GetState( SpawnGroup, "Spawn_Landed" ) - if Landed and self.RepeatOnEngineShutDown then - local SpawnGroupIndex = self:GetSpawnIndexFromGroup( SpawnGroup ) - self:T( { "EngineShutDown: ", "ReSpawn:", SpawnGroup:GetName(), SpawnGroupIndex } ) - self:ReSpawn( SpawnGroupIndex ) - end - end - end -end - ---- This function is called automatically by the Spawning scheduler. --- It is the internal worker method SPAWNing new Groups on the defined time intervals. -function SPAWN:_Scheduler() - self:F2( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } ) - - -- Validate if there are still groups left in the batch... - self:Spawn() - - return true -end - ---- Schedules the CleanUp of Groups --- @param #SPAWN self --- @return #boolean True = Continue Scheduler -function SPAWN:_SpawnCleanUpScheduler() - self:F( { "CleanUp Scheduler:", self.SpawnTemplatePrefix } ) - - local SpawnGroup, SpawnCursor = self:GetFirstAliveGroup() - self:T( { "CleanUp Scheduler:", SpawnGroup, SpawnCursor } ) - - while SpawnGroup do - - local SpawnUnits = SpawnGroup:GetUnits() - - for UnitID, UnitData in pairs( SpawnUnits ) do - - local SpawnUnit = UnitData -- Wrapper.Unit#UNIT - local SpawnUnitName = SpawnUnit:GetName() - - - self.SpawnCleanUpTimeStamps[SpawnUnitName] = self.SpawnCleanUpTimeStamps[SpawnUnitName] or {} - local Stamp = self.SpawnCleanUpTimeStamps[SpawnUnitName] - self:T( { SpawnUnitName, Stamp } ) - - if Stamp.Vec2 then - if SpawnUnit:InAir() == false and SpawnUnit:GetVelocityKMH() < 1 then - local NewVec2 = SpawnUnit:GetVec2() - if Stamp.Vec2.x == NewVec2.x and Stamp.Vec2.y == NewVec2.y then - -- If the plane is not moving, and is on the ground, assign it with a timestamp... - if Stamp.Time + self.SpawnCleanUpInterval < timer.getTime() then - self:T( { "CleanUp Scheduler:", "ReSpawning:", SpawnGroup:GetName() } ) - self:ReSpawn( SpawnCursor ) - Stamp.Vec2 = nil - Stamp.Time = nil - end - else - Stamp.Time = timer.getTime() - Stamp.Vec2 = SpawnUnit:GetVec2() - end - else - Stamp.Vec2 = nil - Stamp.Time = nil - end - else - if SpawnUnit:InAir() == false then - Stamp.Vec2 = SpawnUnit:GetVec2() - if SpawnUnit:GetVelocityKMH() < 1 then - Stamp.Time = timer.getTime() - end - else - Stamp.Time = nil - Stamp.Vec2 = nil - end - end - end - - SpawnGroup, SpawnCursor = self:GetNextAliveGroup( SpawnCursor ) - - self:T( { "CleanUp Scheduler:", SpawnGroup, SpawnCursor } ) - - end - - return true -- Repeat - -end ---- Limit the simultaneous movement of Groups within a running Mission. --- This module is defined to improve the performance in missions, and to bring additional realism for GROUND vehicles. --- Performance: If in a DCSRTE there are a lot of moving GROUND units, then in a multi player mission, this WILL create lag if --- the main DCS execution core of your CPU is fully utilized. So, this class will limit the amount of simultaneous moving GROUND units --- on defined intervals (currently every minute). --- @module Movement - ---- the MOVEMENT class --- @type MOVEMENT --- @extends Core.Base#BASE -MOVEMENT = { - ClassName = "MOVEMENT", -} - ---- Creates the main object which is handling the GROUND forces movement. --- @param table{string,...}|string MovePrefixes is a table of the Prefixes (names) of the GROUND Groups that need to be controlled by the MOVEMENT Object. --- @param number MoveMaximum is a number that defines the maximum amount of GROUND Units to be moving during one minute. --- @return MOVEMENT --- @usage --- -- Limit the amount of simultaneous moving units on the ground to prevent lag. --- Movement_US_Platoons = MOVEMENT:New( { 'US Tank Platoon Left', 'US Tank Platoon Middle', 'US Tank Platoon Right', 'US CH-47D Troops' }, 15 ) - -function MOVEMENT:New( MovePrefixes, MoveMaximum ) - local self = BASE:Inherit( self, BASE:New() ) -- #MOVEMENT - self:F( { MovePrefixes, MoveMaximum } ) - - if type( MovePrefixes ) == 'table' then - self.MovePrefixes = MovePrefixes - else - self.MovePrefixes = { MovePrefixes } - end - self.MoveCount = 0 -- The internal counter of the amount of Moveing the has happened since MoveStart. - self.MoveMaximum = MoveMaximum -- Contains the Maximum amount of units that are allowed to move... - self.AliveUnits = 0 -- Contains the counter how many units are currently alive - self.MoveUnits = {} -- Reflects if the Moving for this MovePrefixes is going to be scheduled or not. - - self:HandleEvent( EVENTS.Birth ) - --- self:AddEvent( world.event.S_EVENT_BIRTH, self.OnBirth ) --- --- self:EnableEvents() - - self:ScheduleStart() - - return self -end - ---- Call this function to start the MOVEMENT scheduling. -function MOVEMENT:ScheduleStart() - self:F() - --self.MoveFunction = routines.scheduleFunction( self._Scheduler, { self }, timer.getTime() + 1, 120 ) - self.MoveFunction = SCHEDULER:New( self, self._Scheduler, {}, 1, 120 ) -end - ---- Call this function to stop the MOVEMENT scheduling. --- @todo need to implement it ... Forgot. -function MOVEMENT:ScheduleStop() - self:F() - -end - ---- Captures the birth events when new Units were spawned. --- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. --- @param #MOVEMENT self --- @param Core.Event#EVENTDATA self -function MOVEMENT:OnEventBirth( EventData ) - self:F( { EventData } ) - - if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line - if EventData.IniDCSUnit then - self:T( "Birth object : " .. EventData.IniDCSUnitName ) - if EventData.IniDCSGroup and EventData.IniDCSGroup:isExist() then - for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do - if string.find( EventData.IniDCSUnitName, MovePrefix, 1, true ) then - self.AliveUnits = self.AliveUnits + 1 - self.MoveUnits[EventData.IniDCSUnitName] = EventData.IniDCSGroupName - self:T( self.AliveUnits ) - end - end - end - end - - EventData.IniUnit:HandleEvent( EVENTS.DEAD, self.OnDeadOrCrash ) - end - -end - ---- Captures the Dead or Crash events when Units crash or are destroyed. --- @todo This method should become obsolete. The new @{DATABASE} class will handle the collection administration. -function MOVEMENT:OnDeadOrCrash( Event ) - self:F( { Event } ) - - if Event.IniDCSUnit then - self:T( "Dead object : " .. Event.IniDCSUnitName ) - for MovePrefixID, MovePrefix in pairs( self.MovePrefixes ) do - if string.find( Event.IniDCSUnitName, MovePrefix, 1, true ) then - self.AliveUnits = self.AliveUnits - 1 - self.MoveUnits[Event.IniDCSUnitName] = nil - self:T( self.AliveUnits ) - end - end - end -end - ---- This function is called automatically by the MOVEMENT scheduler. A new function is scheduled when MoveScheduled is true. -function MOVEMENT:_Scheduler() - self:F( { self.MovePrefixes, self.MoveMaximum, self.AliveUnits, self.MovementGroups } ) - - if self.AliveUnits > 0 then - local MoveProbability = ( self.MoveMaximum * 100 ) / self.AliveUnits - self:T( 'Move Probability = ' .. MoveProbability ) - - for MovementUnitName, MovementGroupName in pairs( self.MoveUnits ) do - local MovementGroup = Group.getByName( MovementGroupName ) - if MovementGroup and MovementGroup:isExist() then - local MoveOrStop = math.random( 1, 100 ) - self:T( 'MoveOrStop = ' .. MoveOrStop ) - if MoveOrStop <= MoveProbability then - self:T( 'Group continues moving = ' .. MovementGroupName ) - trigger.action.groupContinueMoving( MovementGroup ) - else - self:T( 'Group stops moving = ' .. MovementGroupName ) - trigger.action.groupStopMoving( MovementGroup ) - end - else - self.MoveUnits[MovementUnitName] = nil - end - end - end - return true -end ---- Provides defensive behaviour to a set of SAM sites within a running Mission. --- @module Sead --- @author to be searched on the forum --- @author (co) Flightcontrol (Modified and enriched with functionality) - ---- The SEAD class --- @type SEAD --- @extends Core.Base#BASE -SEAD = { - ClassName = "SEAD", - TargetSkill = { - Average = { Evade = 50, DelayOff = { 10, 25 }, DelayOn = { 10, 30 } } , - Good = { Evade = 30, DelayOff = { 8, 20 }, DelayOn = { 20, 40 } } , - High = { Evade = 15, DelayOff = { 5, 17 }, DelayOn = { 30, 50 } } , - Excellent = { Evade = 10, DelayOff = { 3, 10 }, DelayOn = { 30, 60 } } - }, - SEADGroupPrefixes = {} -} - ---- Creates the main object which is handling defensive actions for SA sites or moving SA vehicles. --- When an anti radiation missile is fired (KH-58, KH-31P, KH-31A, KH-25MPU, HARM missiles), the SA will shut down their radars and will take evasive actions... --- Chances are big that the missile will miss. --- @param table{string,...}|string SEADGroupPrefixes which is a table of Prefixes of the SA Groups in the DCSRTE on which evasive actions need to be taken. --- @return SEAD --- @usage --- -- CCCP SEAD Defenses --- -- Defends the Russian SA installations from SEAD attacks. --- SEAD_RU_SAM_Defenses = SEAD:New( { 'RU SA-6 Kub', 'RU SA-6 Defenses', 'RU MI-26 Troops', 'RU Attack Gori' } ) -function SEAD:New( SEADGroupPrefixes ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( SEADGroupPrefixes ) - if type( SEADGroupPrefixes ) == 'table' then - for SEADGroupPrefixID, SEADGroupPrefix in pairs( SEADGroupPrefixes ) do - self.SEADGroupPrefixes[SEADGroupPrefix] = SEADGroupPrefix - end - else - self.SEADGroupNames[SEADGroupPrefixes] = SEADGroupPrefixes - end - - self:HandleEvent( EVENTS.Shot ) - - return self -end - ---- Detects if an SA site was shot with an anti radiation missile. In this case, take evasive actions based on the skill level set within the ME. --- @see SEAD --- @param #SEAD --- @param Core.Event#EVENTDATA EventData -function SEAD:OnEventShot( EventData ) - self:F( { EventData } ) - - local SEADUnit = EventData.IniDCSUnit - local SEADUnitName = EventData.IniDCSUnitName - local SEADWeapon = EventData.Weapon -- Identify the weapon fired - local SEADWeaponName = EventData.WeaponName -- return weapon type - -- Start of the 2nd loop - self:T( "Missile Launched = " .. SEADWeaponName ) - if SEADWeaponName == "KH-58" or SEADWeaponName == "KH-25MPU" or SEADWeaponName == "AGM-88" or SEADWeaponName == "KH-31A" or SEADWeaponName == "KH-31P" then -- Check if the missile is a SEAD - local _evade = math.random (1,100) -- random number for chance of evading action - local _targetMim = EventData.Weapon:getTarget() -- Identify target - local _targetMimname = Unit.getName(_targetMim) - local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) - local _targetMimgroupName = _targetMimgroup:getName() - local _targetMimcont= _targetMimgroup:getController() - local _targetskill = _DATABASE.Templates.Units[_targetMimname].Template.skill - self:T( self.SEADGroupPrefixes ) - self:T( _targetMimgroupName ) - local SEADGroupFound = false - for SEADGroupPrefixID, SEADGroupPrefix in pairs( self.SEADGroupPrefixes ) do - if string.find( _targetMimgroupName, SEADGroupPrefix, 1, true ) then - SEADGroupFound = true - self:T( 'Group Found' ) - break - end - end - if SEADGroupFound == true then - if _targetskill == "Random" then -- when skill is random, choose a skill - local Skills = { "Average", "Good", "High", "Excellent" } - _targetskill = Skills[ math.random(1,4) ] - end - self:T( _targetskill ) - if self.TargetSkill[_targetskill] then - if (_evade > self.TargetSkill[_targetskill].Evade) then - self:T( string.format("Evading, target skill " ..string.format(_targetskill)) ) - local _targetMim = Weapon.getTarget(SEADWeapon) - local _targetMimname = Unit.getName(_targetMim) - local _targetMimgroup = Unit.getGroup(Weapon.getTarget(SEADWeapon)) - local _targetMimcont= _targetMimgroup:getController() - routines.groupRandomDistSelf(_targetMimgroup,300,'Diamond',250,20) -- move randomly - local SuppressedGroups1 = {} -- unit suppressed radar off for a random time - local function SuppressionEnd1(id) - id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) - SuppressedGroups1[id.groupName] = nil - end - local id = { - groupName = _targetMimgroup, - ctrl = _targetMimcont - } - local delay1 = math.random(self.TargetSkill[_targetskill].DelayOff[1], self.TargetSkill[_targetskill].DelayOff[2]) - if SuppressedGroups1[id.groupName] == nil then - SuppressedGroups1[id.groupName] = { - SuppressionEndTime1 = timer.getTime() + delay1, - SuppressionEndN1 = SuppressionEndCounter1 --Store instance of SuppressionEnd() scheduled function - } - Controller.setOption(_targetMimcont, AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.GREEN) - timer.scheduleFunction(SuppressionEnd1, id, SuppressedGroups1[id.groupName].SuppressionEndTime1) --Schedule the SuppressionEnd() function - --trigger.action.outText( string.format("Radar Off " ..string.format(delay1)), 20) - end - - local SuppressedGroups = {} - local function SuppressionEnd(id) - id.ctrl:setOption(AI.Option.Ground.id.ALARM_STATE,AI.Option.Ground.val.ALARM_STATE.RED) - SuppressedGroups[id.groupName] = nil - end - local id = { - groupName = _targetMimgroup, - ctrl = _targetMimcont - } - local delay = math.random(self.TargetSkill[_targetskill].DelayOn[1], self.TargetSkill[_targetskill].DelayOn[2]) - if SuppressedGroups[id.groupName] == nil then - SuppressedGroups[id.groupName] = { - SuppressionEndTime = timer.getTime() + delay, - SuppressionEndN = SuppressionEndCounter --Store instance of SuppressionEnd() scheduled function - } - timer.scheduleFunction(SuppressionEnd, id, SuppressedGroups[id.groupName].SuppressionEndTime) --Schedule the SuppressionEnd() function - --trigger.action.outText( string.format("Radar On " ..string.format(delay)), 20) - end - end - end - end - end -end ---- Taking the lead of AI escorting your flight. --- --- @{#ESCORT} class --- ================ --- The @{#ESCORT} class allows you to interact with escorting AI on your flight and take the lead. --- Each escorting group can be commanded with a whole set of radio commands (radio menu in your flight, and then F10). --- --- The radio commands will vary according the category of the group. The richest set of commands are with Helicopters and AirPlanes. --- Ships and Ground troops will have a more limited set, but they can provide support through the bombing of targets designated by the other escorts. --- --- RADIO MENUs that can be created: --- ================================ --- Find a summary below of the current available commands: --- --- Navigation ...: --- --------------- --- Escort group navigation functions: --- --- * **"Join-Up and Follow at x meters":** The escort group fill follow you at about x meters, and they will follow you. --- * **"Flare":** Provides menu commands to let the escort group shoot a flare in the air in a color. --- * **"Smoke":** Provides menu commands to let the escort group smoke the air in a color. Note that smoking is only available for ground and naval troops. --- --- Hold position ...: --- ------------------ --- Escort group navigation functions: --- --- * **"At current location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. --- * **"At client location":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped. --- --- Report targets ...: --- ------------------- --- Report targets will make the escort group to report any target that it identifies within a 8km range. Any detected target can be attacked using the 4. Attack nearby targets function. (see below). --- --- * **"Report now":** Will report the current detected targets. --- * **"Report targets on":** Will make the escort group to report detected targets and will fill the "Attack nearby targets" menu list. --- * **"Report targets off":** Will stop detecting targets. --- --- Scan targets ...: --- ----------------- --- Menu items to pop-up the escort group for target scanning. After scanning, the escort group will resume with the mission or defined task. --- --- * **"Scan targets 30 seconds":** Scan 30 seconds for targets. --- * **"Scan targets 60 seconds":** Scan 60 seconds for targets. --- --- Attack targets ...: --- ------------------- --- This menu item will list all detected targets within a 15km range. Depending on the level of detection (known/unknown) and visuality, the targets type will also be listed. --- --- Request assistance from ...: --- ---------------------------- --- This menu item will list all detected targets within a 15km range, as with the menu item **Attack Targets**. --- This menu item allows to request attack support from other escorts supporting the current client group. --- eg. the function allows a player to request support from the Ship escort to attack a target identified by the Plane escort with its Tomahawk missiles. --- eg. the function allows a player to request support from other Planes escorting to bomb the unit with illumination missiles or bombs, so that the main plane escort can attack the area. --- --- ROE ...: --- -------- --- Sets the Rules of Engagement (ROE) of the escort group when in flight. --- --- * **"Hold Fire":** The escort group will hold fire. --- * **"Return Fire":** The escort group will return fire. --- * **"Open Fire":** The escort group will open fire on designated targets. --- * **"Weapon Free":** The escort group will engage with any target. --- --- Evasion ...: --- ------------ --- Will define the evasion techniques that the escort group will perform during flight or combat. --- --- * **"Fight until death":** The escort group will have no reaction to threats. --- * **"Use flares, chaff and jammers":** The escort group will use passive defense using flares and jammers. No evasive manoeuvres are executed. --- * **"Evade enemy fire":** The rescort group will evade enemy fire before firing. --- * **"Go below radar and evade fire":** The escort group will perform evasive vertical manoeuvres. --- --- Resume Mission ...: --- ------------------- --- Escort groups can have their own mission. This menu item will allow the escort group to resume their Mission from a given waypoint. --- Note that this is really fantastic, as you now have the dynamic of taking control of the escort groups, and allowing them to resume their path or mission. --- --- ESCORT construction methods. --- ============================ --- Create a new SPAWN object with the @{#ESCORT.New} method: --- --- * @{#ESCORT.New}: Creates a new ESCORT object from a @{Group#GROUP} for a @{Client#CLIENT}, with an optional briefing text. --- --- ESCORT initialization methods. --- ============================== --- The following menus are created within the RADIO MENU (F10) of an active unit hosted by a player: --- --- * @{#ESCORT.MenuFollowAt}: Creates a menu to make the escort follow the client. --- * @{#ESCORT.MenuHoldAtEscortPosition}: Creates a menu to hold the escort at its current position. --- * @{#ESCORT.MenuHoldAtLeaderPosition}: Creates a menu to hold the escort at the client position. --- * @{#ESCORT.MenuScanForTargets}: Creates a menu so that the escort scans targets. --- * @{#ESCORT.MenuFlare}: Creates a menu to disperse flares. --- * @{#ESCORT.MenuSmoke}: Creates a menu to disparse smoke. --- * @{#ESCORT.MenuReportTargets}: Creates a menu so that the escort reports targets. --- * @{#ESCORT.MenuReportPosition}: Creates a menu so that the escort reports its current position from bullseye. --- * @{#ESCORT.MenuAssistedAttack: Creates a menu so that the escort supportes assisted attack from other escorts with the client. --- * @{#ESCORT.MenuROE: Creates a menu structure to set the rules of engagement of the escort. --- * @{#ESCORT.MenuEvasion: Creates a menu structure to set the evasion techniques when the escort is under threat. --- * @{#ESCORT.MenuResumeMission}: Creates a menu structure so that the escort can resume from a waypoint. --- --- --- @usage --- -- Declare a new EscortPlanes object as follows: --- --- -- First find the GROUP object and the CLIENT object. --- local EscortClient = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor. --- local EscortGroup = GROUP:FindByName( "Group Name" ) -- The Group Name is the name of the group that will escort the Escort Client. --- --- -- Now use these 2 objects to construct the new EscortPlanes object. --- EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the mission. You are escorted by a plane with code name 'Desert', which can be instructed through the F10 radio menu." ) --- --- --- --- @module Escort --- @author FlightControl - ---- ESCORT class --- @type ESCORT --- @extends Core.Base#BASE --- @field Wrapper.Client#CLIENT EscortClient --- @field Wrapper.Group#GROUP EscortGroup --- @field #string EscortName --- @field #ESCORT.MODE EscortMode The mode the escort is in. --- @field Core.Scheduler#SCHEDULER FollowScheduler The instance of the SCHEDULER class. --- @field #number FollowDistance The current follow distance. --- @field #boolean ReportTargets If true, nearby targets are reported. --- @Field Dcs.DCSTypes#AI.Option.Air.val.ROE OptionROE Which ROE is set to the EscortGroup. --- @field Dcs.DCSTypes#AI.Option.Air.val.REACTION_ON_THREAT OptionReactionOnThreat Which REACTION_ON_THREAT is set to the EscortGroup. --- @field Core.Menu#MENU_CLIENT EscortMenuResumeMission --- @field Functional.Detection#DETECTION_BASE Detection -ESCORT = { - ClassName = "ESCORT", - EscortName = nil, -- The Escort Name - EscortClient = nil, - EscortGroup = nil, - EscortMode = 1, - MODE = { - FOLLOW = 1, - MISSION = 2, - }, - Targets = {}, -- The identified targets - FollowScheduler = nil, - ReportTargets = true, - OptionROE = AI.Option.Air.val.ROE.OPEN_FIRE, - OptionReactionOnThreat = AI.Option.Air.val.REACTION_ON_THREAT.ALLOW_ABORT_MISSION, - SmokeDirectionVector = false, - TaskPoints = {} -} - ---- ESCORT.Mode class --- @type ESCORT.MODE --- @field #number FOLLOW --- @field #number MISSION - ---- MENUPARAM type --- @type MENUPARAM --- @field #ESCORT ParamSelf --- @field #Distance ParamDistance --- @field #function ParamFunction --- @field #string ParamMessage - ---- ESCORT class constructor for an AI group --- @param #ESCORT self --- @param Wrapper.Client#CLIENT EscortClient The client escorted by the EscortGroup. --- @param Wrapper.Group#GROUP EscortGroup The group AI escorting the EscortClient. --- @param #string EscortName Name of the escort. --- @param #string EscortBriefing A text showing the ESCORT briefing to the player. Note that if no EscortBriefing is provided, the default briefing will be shown. --- @return #ESCORT self --- @usage --- -- Declare a new EscortPlanes object as follows: --- --- -- First find the GROUP object and the CLIENT object. --- local EscortClient = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor. --- local EscortGroup = GROUP:FindByName( "Group Name" ) -- The Group Name is the name of the group that will escort the Escort Client. --- --- -- Now use these 2 objects to construct the new EscortPlanes object. --- EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the mission. You are escorted by a plane with code name 'Desert', which can be instructed through the F10 radio menu." ) -function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing ) - - local self = BASE:Inherit( self, BASE:New() ) -- #ESCORT - self:F( { EscortClient, EscortGroup, EscortName } ) - - self.EscortClient = EscortClient -- Wrapper.Client#CLIENT - self.EscortGroup = EscortGroup -- Wrapper.Group#GROUP - self.EscortName = EscortName - self.EscortBriefing = EscortBriefing - - self.EscortSetGroup = SET_GROUP:New() - self.EscortSetGroup:AddObject( self.EscortGroup ) - self.EscortSetGroup:Flush() - self.Detection = DETECTION_UNITS:New( self.EscortSetGroup, 15000 ) - - self.EscortGroup.Detection = self.Detection - - -- Set EscortGroup known at EscortClient. - if not self.EscortClient._EscortGroups then - self.EscortClient._EscortGroups = {} - end - - if not self.EscortClient._EscortGroups[EscortGroup:GetName()] then - self.EscortClient._EscortGroups[EscortGroup:GetName()] = {} - self.EscortClient._EscortGroups[EscortGroup:GetName()].EscortGroup = self.EscortGroup - self.EscortClient._EscortGroups[EscortGroup:GetName()].EscortName = self.EscortName - self.EscortClient._EscortGroups[EscortGroup:GetName()].Detection = self.EscortGroup.Detection - end - - self.EscortMenu = MENU_CLIENT:New( self.EscortClient, self.EscortName ) - - self.EscortGroup:WayPointInitialize(1) - - self.EscortGroup:OptionROTVertical() - self.EscortGroup:OptionROEOpenFire() - - if not EscortBriefing then - EscortGroup:MessageToClient( EscortGroup:GetCategoryName() .. " '" .. EscortName .. "' (" .. EscortGroup:GetCallsign() .. ") reporting! " .. - "We're escorting your flight. " .. - "Use the Radio Menu and F10 and use the options under + " .. EscortName .. "\n", - 60, EscortClient - ) - else - EscortGroup:MessageToClient( EscortGroup:GetCategoryName() .. " '" .. EscortName .. "' (" .. EscortGroup:GetCallsign() .. ") " .. EscortBriefing, - 60, EscortClient - ) - end - - self.FollowDistance = 100 - self.CT1 = 0 - self.GT1 = 0 - - self.FollowScheduler, self.FollowSchedule = SCHEDULER:New( self, self._FollowScheduler, {}, 1, .5, .01 ) - self.FollowScheduler:Stop( self.FollowSchedule ) - - self.EscortMode = ESCORT.MODE.MISSION - - - return self -end - ---- Set a Detection method for the EscortClient to be reported upon. --- Detection methods are based on the derived classes from DETECTION_BASE. --- @param #ESCORT self --- @param Function.Detection#DETECTION_BASE Detection -function ESCORT:SetDetection( Detection ) - - self.Detection = Detection - self.EscortGroup.Detection = self.Detection - self.EscortClient._EscortGroups[self.EscortGroup:GetName()].Detection = self.EscortGroup.Detection - - Detection:__Start( 1 ) - -end - ---- This function is for test, it will put on the frequency of the FollowScheduler a red smoke at the direction vector calculated for the escort to fly to. --- This allows to visualize where the escort is flying to. --- @param #ESCORT self --- @param #boolean SmokeDirection If true, then the direction vector will be smoked. -function ESCORT:TestSmokeDirectionVector( SmokeDirection ) - self.SmokeDirectionVector = ( SmokeDirection == true ) and true or false -end - - ---- Defines the default menus --- @param #ESCORT self --- @return #ESCORT -function ESCORT:Menus() - self:F() - - self:MenuFollowAt( 100 ) - self:MenuFollowAt( 200 ) - self:MenuFollowAt( 300 ) - self:MenuFollowAt( 400 ) - - self:MenuScanForTargets( 100, 60 ) - - self:MenuHoldAtEscortPosition( 30 ) - self:MenuHoldAtLeaderPosition( 30 ) - - self:MenuFlare() - self:MenuSmoke() - - self:MenuReportTargets( 60 ) - self:MenuAssistedAttack() - self:MenuROE() - self:MenuEvasion() - self:MenuResumeMission() - - - return self -end - - - ---- Defines a menu slot to let the escort Join and Follow you at a certain distance. --- This menu will appear under **Navigation**. --- @param #ESCORT self --- @param Dcs.DCSTypes#Distance Distance The distance in meters that the escort needs to follow the client. --- @return #ESCORT -function ESCORT:MenuFollowAt( Distance ) - self:F(Distance) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - if not self.EscortMenuJoinUpAndFollow then - self.EscortMenuJoinUpAndFollow = {} - end - - self.EscortMenuJoinUpAndFollow[#self.EscortMenuJoinUpAndFollow+1] = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at " .. Distance, self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, self, Distance ) - - self.EscortMode = ESCORT.MODE.FOLLOW - end - - return self -end - ---- Defines a menu slot to let the escort hold at their current position and stay low with a specified height during a specified time in seconds. --- This menu will appear under **Hold position**. --- @param #ESCORT self --- @param Dcs.DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param Dcs.DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT --- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. -function ESCORT:MenuHoldAtEscortPosition( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - - if not self.EscortMenuHold then - self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) - end - - if not Height then - Height = 30 - end - - if not Seconds then - Seconds = 0 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "Hold at %d meter", Height ) - else - MenuText = string.format( "Hold at %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuHoldPosition then - self.EscortMenuHoldPosition = {} - end - - self.EscortMenuHoldPosition[#self.EscortMenuHoldPosition+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuHold, - ESCORT._HoldPosition, - self, - self.EscortGroup, - Height, - Seconds - ) - end - - return self -end - - ---- Defines a menu slot to let the escort hold at the client position and stay low with a specified height during a specified time in seconds. --- This menu will appear under **Navigation**. --- @param #ESCORT self --- @param Dcs.DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param Dcs.DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT --- TODO: Implement Seconds parameter. Challenge is to first develop the "continue from last activity" function. -function ESCORT:MenuHoldAtLeaderPosition( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - - if not self.EscortMenuHold then - self.EscortMenuHold = MENU_CLIENT:New( self.EscortClient, "Hold position", self.EscortMenu ) - end - - if not Height then - Height = 30 - end - - if not Seconds then - Seconds = 0 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "Rejoin and hold at %d meter", Height ) - else - MenuText = string.format( "Rejoin and hold at %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuHoldAtLeaderPosition then - self.EscortMenuHoldAtLeaderPosition = {} - end - - self.EscortMenuHoldAtLeaderPosition[#self.EscortMenuHoldAtLeaderPosition+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuHold, - ESCORT._HoldPosition, - { ParamSelf = self, - ParamOrbitGroup = self.EscortClient, - ParamHeight = Height, - ParamSeconds = Seconds - } - ) - end - - return self -end - ---- Defines a menu slot to let the escort scan for targets at a certain height for a certain time in seconds. --- This menu will appear under **Scan targets**. --- @param #ESCORT self --- @param Dcs.DCSTypes#Distance Height Optional parameter that sets the height in meters to let the escort orbit at the current location. The default value is 30 meters. --- @param Dcs.DCSTypes#Time Seconds Optional parameter that lets the escort orbit at the current position for a specified time. (not implemented yet). The default value is 0 seconds, meaning, that the escort will orbit forever until a sequent command is given. --- @param #string MenuTextFormat Optional parameter that shows the menu option text. The text string is formatted, and should contain one or two %d tokens in the string. The first for the Height, the second for the Time (if given). If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuScanForTargets( Height, Seconds, MenuTextFormat ) - self:F( { Height, Seconds, MenuTextFormat } ) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuScan then - self.EscortMenuScan = MENU_CLIENT:New( self.EscortClient, "Scan for targets", self.EscortMenu ) - end - - if not Height then - Height = 100 - end - - if not Seconds then - Seconds = 30 - end - - local MenuText = "" - if not MenuTextFormat then - if Seconds == 0 then - MenuText = string.format( "At %d meter", Height ) - else - MenuText = string.format( "At %d meter for %d seconds", Height, Seconds ) - end - else - if Seconds == 0 then - MenuText = string.format( MenuTextFormat, Height ) - else - MenuText = string.format( MenuTextFormat, Height, Seconds ) - end - end - - if not self.EscortMenuScanForTargets then - self.EscortMenuScanForTargets = {} - end - - self.EscortMenuScanForTargets[#self.EscortMenuScanForTargets+1] = MENU_CLIENT_COMMAND - :New( - self.EscortClient, - MenuText, - self.EscortMenuScan, - ESCORT._ScanTargets, - self, - 30 - ) - end - - return self -end - - - ---- Defines a menu slot to let the escort disperse a flare in a certain color. --- This menu will appear under **Navigation**. --- The flare will be fired from the first unit in the group. --- @param #ESCORT self --- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuFlare( MenuTextFormat ) - self:F() - - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - local MenuText = "" - if not MenuTextFormat then - MenuText = "Flare" - else - MenuText = MenuTextFormat - end - - if not self.EscortMenuFlare then - self.EscortMenuFlare = MENU_CLIENT:New( self.EscortClient, MenuText, self.EscortMenuReportNavigation, ESCORT._Flare, self ) - self.EscortMenuFlareGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green flare", self.EscortMenuFlare, ESCORT._Flare, self, FLARECOLOR.Green, "Released a green flare!" ) - self.EscortMenuFlareRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red flare", self.EscortMenuFlare, ESCORT._Flare, self, FLARECOLOR.Red, "Released a red flare!" ) - self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, self, FLARECOLOR.White, "Released a white flare!" ) - self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, self, FLARECOLOR.Yellow, "Released a yellow flare!" ) - end - - return self -end - ---- Defines a menu slot to let the escort disperse a smoke in a certain color. --- This menu will appear under **Navigation**. --- Note that smoke menu options will only be displayed for ships and ground units. Not for air units. --- The smoke will be fired from the first unit in the group. --- @param #ESCORT self --- @param #string MenuTextFormat Optional parameter that shows the menu option text. If no text is given, the default text will be displayed. --- @return #ESCORT -function ESCORT:MenuSmoke( MenuTextFormat ) - self:F() - - if not self.EscortGroup:IsAir() then - if not self.EscortMenuReportNavigation then - self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - end - - local MenuText = "" - if not MenuTextFormat then - MenuText = "Smoke" - else - MenuText = MenuTextFormat - end - - if not self.EscortMenuSmoke then - self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, self ) - self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.Green, "Releasing green smoke!" ) - self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.Red, "Releasing red smoke!" ) - self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.White, "Releasing white smoke!" ) - self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.Orange, "Releasing orange smoke!" ) - self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.Blue, "Releasing blue smoke!" ) - end - end - - return self -end - ---- Defines a menu slot to let the escort report their current detected targets with a specified time interval in seconds. --- This menu will appear under **Report targets**. --- Note that if a report targets menu is not specified, no targets will be detected by the escort, and the attack and assisted attack menus will not be displayed. --- @param #ESCORT self --- @param Dcs.DCSTypes#Time Seconds Optional parameter that lets the escort report their current detected targets after specified time interval in seconds. The default time is 30 seconds. --- @return #ESCORT -function ESCORT:MenuReportTargets( Seconds ) - self:F( { Seconds } ) - - if not self.EscortMenuReportNearbyTargets then - self.EscortMenuReportNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Report targets", self.EscortMenu ) - end - - if not Seconds then - Seconds = 30 - end - - -- Report Targets - self.EscortMenuReportNearbyTargetsNow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets now!", self.EscortMenuReportNearbyTargets, ESCORT._ReportNearbyTargetsNow, self ) - self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets on", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, self, true ) - self.EscortMenuReportNearbyTargetsOff = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets off", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, self, false ) - - -- Attack Targets - self.EscortMenuAttackNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Attack targets", self.EscortMenu ) - - - self.ReportTargetsScheduler = SCHEDULER:New( self, self._ReportTargetsScheduler, {}, 1, Seconds ) - - return self -end - ---- Defines a menu slot to let the escort attack its detected targets using assisted attack from another escort joined also with the client. --- This menu will appear under **Request assistance from**. --- Note that this method needs to be preceded with the method MenuReportTargets. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuAssistedAttack() - self:F() - - -- Request assistance from other escorts. - -- This is very useful to let f.e. an escorting ship attack a target detected by an escorting plane... - self.EscortMenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, "Request assistance from", self.EscortMenu ) - - return self -end - ---- Defines a menu to let the escort set its rules of engagement. --- All rules of engagement will appear under the menu **ROE**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuROE( MenuTextFormat ) - self:F( MenuTextFormat ) - - if not self.EscortMenuROE then - -- Rules of Engagement - self.EscortMenuROE = MENU_CLIENT:New( self.EscortClient, "ROE", self.EscortMenu ) - if self.EscortGroup:OptionROEHoldFirePossible() then - self.EscortMenuROEHoldFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Fire", self.EscortMenuROE, ESCORT._ROE, self, self.EscortGroup:OptionROEHoldFire(), "Holding weapons!" ) - end - if self.EscortGroup:OptionROEReturnFirePossible() then - self.EscortMenuROEReturnFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Return Fire", self.EscortMenuROE, ESCORT._ROE, self, self.EscortGroup:OptionROEReturnFire(), "Returning fire!" ) - end - if self.EscortGroup:OptionROEOpenFirePossible() then - self.EscortMenuROEOpenFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Open Fire", self.EscortMenuROE, ESCORT._ROE, self, self.EscortGroup:OptionROEOpenFire(), "Opening fire on designated targets!!" ) - end - if self.EscortGroup:OptionROEWeaponFreePossible() then - self.EscortMenuROEWeaponFree = MENU_CLIENT_COMMAND:New( self.EscortClient, "Weapon Free", self.EscortMenuROE, ESCORT._ROE, self, self.EscortGroup:OptionROEWeaponFree(), "Opening fire on targets of opportunity!" ) - end - end - - return self -end - - ---- Defines a menu to let the escort set its evasion when under threat. --- All rules of engagement will appear under the menu **Evasion**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuEvasion( MenuTextFormat ) - self:F( MenuTextFormat ) - - if self.EscortGroup:IsAir() then - if not self.EscortMenuEvasion then - -- Reaction to Threats - self.EscortMenuEvasion = MENU_CLIENT:New( self.EscortClient, "Evasion", self.EscortMenu ) - if self.EscortGroup:OptionROTNoReactionPossible() then - self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._ROT, self, self.EscortGroup:OptionROTNoReaction(), "Fighting until death!" ) - end - if self.EscortGroup:OptionROTPassiveDefensePossible() then - self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._ROT, self, self.EscortGroup:OptionROTPassiveDefense(), "Defending using jammers, chaff and flares!" ) - end - if self.EscortGroup:OptionROTEvadeFirePossible() then - self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._ROT, self, self.EscortGroup:OptionROTEvadeFire(), "Evading on enemy fire!" ) - end - if self.EscortGroup:OptionROTVerticalPossible() then - self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._ROT, self, self.EscortGroup:OptionROTVertical(), "Evading on enemy fire with vertical manoeuvres!" ) - end - end - end - - return self -end - ---- Defines a menu to let the escort resume its mission from a waypoint on its route. --- All rules of engagement will appear under the menu **Resume mission from**. --- @param #ESCORT self --- @return #ESCORT -function ESCORT:MenuResumeMission() - self:F() - - if not self.EscortMenuResumeMission then - -- Mission Resume Menu Root - self.EscortMenuResumeMission = MENU_CLIENT:New( self.EscortClient, "Resume mission from", self.EscortMenu ) - end - - return self -end - - ---- @param #MENUPARAM MenuParam -function ESCORT:_HoldPosition( OrbitGroup, OrbitHeight, OrbitSeconds ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - local OrbitUnit = OrbitGroup:GetUnit(1) -- Wrapper.Unit#UNIT - - self.FollowScheduler:Stop( self.FollowSchedule ) - - local PointFrom = {} - local GroupVec3 = EscortGroup:GetUnit(1):GetVec3() - PointFrom = {} - PointFrom.x = GroupVec3.x - PointFrom.y = GroupVec3.z - PointFrom.speed = 250 - PointFrom.type = AI.Task.WaypointType.TURNING_POINT - PointFrom.alt = GroupVec3.y - PointFrom.alt_type = AI.Task.AltitudeType.BARO - - local OrbitPoint = OrbitUnit:GetVec2() - local PointTo = {} - PointTo.x = OrbitPoint.x - PointTo.y = OrbitPoint.y - PointTo.speed = 250 - PointTo.type = AI.Task.WaypointType.TURNING_POINT - PointTo.alt = OrbitHeight - PointTo.alt_type = AI.Task.AltitudeType.BARO - PointTo.task = EscortGroup:TaskOrbitCircleAtVec2( OrbitPoint, OrbitHeight, 0 ) - - local Points = { PointFrom, PointTo } - - EscortGroup:OptionROEHoldFire() - EscortGroup:OptionROTPassiveDefense() - - EscortGroup:SetTask( EscortGroup:TaskRoute( Points ) ) - EscortGroup:MessageToClient( "Orbiting at location.", 10, EscortClient ) - -end - ---- @param #MENUPARAM MenuParam -function ESCORT:_JoinUpAndFollow( Distance ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self.Distance = Distance - - self:JoinUpAndFollow( EscortGroup, EscortClient, self.Distance ) -end - ---- JoinsUp and Follows a CLIENT. --- @param Functional.Escort#ESCORT self --- @param Wrapper.Group#GROUP EscortGroup --- @param Wrapper.Client#CLIENT EscortClient --- @param Dcs.DCSTypes#Distance Distance -function ESCORT:JoinUpAndFollow( EscortGroup, EscortClient, Distance ) - self:F( { EscortGroup, EscortClient, Distance } ) - - self.FollowScheduler:Stop( self.FollowSchedule ) - - EscortGroup:OptionROEHoldFire() - EscortGroup:OptionROTPassiveDefense() - - self.EscortMode = ESCORT.MODE.FOLLOW - - self.CT1 = 0 - self.GT1 = 0 - self.FollowScheduler:Start( self.FollowSchedule ) - - EscortGroup:MessageToClient( "Rejoining and Following at " .. Distance .. "!", 30, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT:_Flare( Color, Message ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - EscortGroup:GetUnit(1):Flare( Color ) - EscortGroup:MessageToClient( Message, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT:_Smoke( Color, Message ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - EscortGroup:GetUnit(1):Smoke( Color ) - EscortGroup:MessageToClient( Message, 10, EscortClient ) -end - - ---- @param #MENUPARAM MenuParam -function ESCORT:_ReportNearbyTargetsNow() - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self:_ReportTargetsScheduler() - -end - -function ESCORT:_SwitchReportNearbyTargets( ReportTargets ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self.ReportTargets = ReportTargets - - if self.ReportTargets then - if not self.ReportTargetsScheduler then - self.ReportTargetsScheduler:Schedule( self, self._ReportTargetsScheduler, {}, 1, 30 ) - end - else - routines.removeFunction( self.ReportTargetsScheduler ) - self.ReportTargetsScheduler = nil - end -end - ---- @param #MENUPARAM MenuParam -function ESCORT:_ScanTargets( ScanDuration ) - - local EscortGroup = self.EscortGroup -- Wrapper.Group#GROUP - local EscortClient = self.EscortClient - - self.FollowScheduler:Stop( self.FollowSchedule ) - - if EscortGroup:IsHelicopter() then - EscortGroup:PushTask( - EscortGroup:TaskControlled( - EscortGroup:TaskOrbitCircle( 200, 20 ), - EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) - ), 1 ) - elseif EscortGroup:IsAirPlane() then - EscortGroup:PushTask( - EscortGroup:TaskControlled( - EscortGroup:TaskOrbitCircle( 1000, 500 ), - EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) - ), 1 ) - end - - EscortGroup:MessageToClient( "Scanning targets for " .. ScanDuration .. " seconds.", ScanDuration, EscortClient ) - - if self.EscortMode == ESCORT.MODE.FOLLOW then - self.FollowScheduler:Start( self.FollowSchedule ) - end - -end - ---- @param Wrapper.Group#GROUP EscortGroup -function _Resume( EscortGroup ) - env.info( '_Resume' ) - - local Escort = EscortGroup:GetState( EscortGroup, "Escort" ) - env.info( "EscortMode = " .. Escort.EscortMode ) - if Escort.EscortMode == ESCORT.MODE.FOLLOW then - Escort:JoinUpAndFollow( EscortGroup, Escort.EscortClient, Escort.Distance ) - end - -end - ---- @param #ESCORT self --- @param #number DetectedItemID -function ESCORT:_AttackTarget( DetectedItemID ) - - local EscortGroup = self.EscortGroup -- Wrapper.Group#GROUP - self:E( EscortGroup ) - - local EscortClient = self.EscortClient - - self.FollowScheduler:Stop( self.FollowSchedule ) - - if EscortGroup:IsAir() then - EscortGroup:OptionROEOpenFire() - EscortGroup:OptionROTPassiveDefense() - EscortGroup:SetState( EscortGroup, "Escort", self ) - - local DetectedSet = self.Detection:GetDetectedSet( DetectedItemID ) - - local Tasks = {} - - DetectedSet:ForEachUnit( - --- @param Wrapper.Unit#UNIT DetectedUnit - function( DetectedUnit, Tasks ) - if DetectedUnit:IsAlive() then - Tasks[#Tasks+1] = EscortGroup:TaskAttackUnit( DetectedUnit ) - end - end, Tasks - ) - - Tasks[#Tasks+1] = EscortGroup:TaskFunction( 1, 2, "_Resume", { "''" } ) - - EscortGroup:SetTask( - EscortGroup:TaskCombo( - Tasks - ), 1 - ) - - else - - local DetectedSet = self.Detection:GetDetectedSet( DetectedItemID ) - - local Tasks = {} - - DetectedSet:ForEachUnit( - --- @param Wrapper.Unit#UNIT DetectedUnit - function( DetectedUnit, Tasks ) - if DetectedUnit:IsAlive() then - Tasks[#Tasks+1] = EscortGroup:TaskFireAtPoint( DetectedUnit:GetVec2(), 50 ) - end - end, Tasks - ) - - EscortGroup:SetTask( - EscortGroup:TaskCombo( - Tasks - ), 1 - ) - - end - - EscortGroup:MessageToClient( "Engaging Designated Unit!", 10, EscortClient ) - -end - ---- --- @param #number DetectedItemID -function ESCORT:_AssistTarget( EscortGroupAttack, DetectedItemID ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self.FollowScheduler:Stop( self.FollowSchedule ) - - if EscortGroupAttack:IsAir() then - EscortGroupAttack:OptionROEOpenFire() - EscortGroupAttack:OptionROTVertical() - - local DetectedSet = self.Detection:GetDetectedSet( DetectedItemID ) - - local Tasks = {} - - DetectedSet:ForEachUnit( - --- @param Wrapper.Unit#UNIT DetectedUnit - function( DetectedUnit, Tasks ) - if DetectedUnit:IsAlive() then - Tasks[#Tasks+1] = EscortGroupAttack:TaskAttackUnit( DetectedUnit ) - end - end, Tasks - ) - - Tasks[#Tasks+1] = EscortGroupAttack:TaskOrbitCircle( 500, 350 ) - - EscortGroupAttack:SetTask( - EscortGroupAttack:TaskCombo( - Tasks - ), 1 - ) - - else - local DetectedSet = self.Detection:GetDetectedSet( DetectedItemID ) - - local Tasks = {} - - DetectedSet:ForEachUnit( - --- @param Wrapper.Unit#UNIT DetectedUnit - function( DetectedUnit, Tasks ) - if DetectedUnit:IsAlive() then - Tasks[#Tasks+1] = EscortGroupAttack:TaskFireAtPoint( DetectedUnit:GetVec2(), 50 ) - end - end, Tasks - ) - - EscortGroupAttack:SetTask( - EscortGroupAttack:TaskCombo( - Tasks - ), 1 - ) - - end - - EscortGroupAttack:MessageToClient( "Assisting with the destroying the enemy unit!", 10, EscortClient ) - -end - ---- @param #MENUPARAM MenuParam -function ESCORT:_ROE( EscortROEFunction, EscortROEMessage ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - pcall( function() EscortROEFunction() end ) - EscortGroup:MessageToClient( EscortROEMessage, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT:_ROT( EscortROTFunction, EscortROTMessage ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - pcall( function() EscortROTFunction() end ) - EscortGroup:MessageToClient( EscortROTMessage, 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT:_ResumeMission( WayPoint ) - - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - self.FollowScheduler:Stop( self.FollowSchedule ) - - local WayPoints = EscortGroup:GetTaskRoute() - self:T( WayPoint, WayPoints ) - - for WayPointIgnore = 1, WayPoint do - table.remove( WayPoints, 1 ) - end - - SCHEDULER:New( EscortGroup, EscortGroup.SetTask, { EscortGroup:TaskRoute( WayPoints ) }, 1 ) - - EscortGroup:MessageToClient( "Resuming mission from waypoint " .. WayPoint .. ".", 10, EscortClient ) -end - ---- Registers the waypoints --- @param #ESCORT self --- @return #table -function ESCORT:RegisterRoute() - self:F() - - local EscortGroup = self.EscortGroup -- Wrapper.Group#GROUP - - local TaskPoints = EscortGroup:GetTaskRoute() - - self:T( TaskPoints ) - - return TaskPoints -end - ---- @param Functional.Escort#ESCORT self -function ESCORT:_FollowScheduler() - self:F( { self.FollowDistance } ) - - self:T( {self.EscortClient.UnitName, self.EscortGroup.GroupName } ) - if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then - - local ClientUnit = self.EscortClient:GetClientGroupUnit() - local GroupUnit = self.EscortGroup:GetUnit( 1 ) - local FollowDistance = self.FollowDistance - - self:T( {ClientUnit.UnitName, GroupUnit.UnitName } ) - - if self.CT1 == 0 and self.GT1 == 0 then - self.CV1 = ClientUnit:GetVec3() - self:T( { "self.CV1", self.CV1 } ) - self.CT1 = timer.getTime() - self.GV1 = GroupUnit:GetVec3() - self.GT1 = timer.getTime() - else - local CT1 = self.CT1 - local CT2 = timer.getTime() - local CV1 = self.CV1 - local CV2 = ClientUnit:GetVec3() - self.CT1 = CT2 - self.CV1 = CV2 - - local CD = ( ( CV2.x - CV1.x )^2 + ( CV2.y - CV1.y )^2 + ( CV2.z - CV1.z )^2 ) ^ 0.5 - local CT = CT2 - CT1 - - local CS = ( 3600 / CT ) * ( CD / 1000 ) - - self:T2( { "Client:", CS, CD, CT, CV2, CV1, CT2, CT1 } ) - - local GT1 = self.GT1 - local GT2 = timer.getTime() - local GV1 = self.GV1 - local GV2 = GroupUnit:GetVec3() - self.GT1 = GT2 - self.GV1 = GV2 - - local GD = ( ( GV2.x - GV1.x )^2 + ( GV2.y - GV1.y )^2 + ( GV2.z - GV1.z )^2 ) ^ 0.5 - local GT = GT2 - GT1 - - local GS = ( 3600 / GT ) * ( GD / 1000 ) - - self:T2( { "Group:", GS, GD, GT, GV2, GV1, GT2, GT1 } ) - - -- Calculate the group direction vector - local GV = { x = GV2.x - CV2.x, y = GV2.y - CV2.y, z = GV2.z - CV2.z } - - -- Calculate GH2, GH2 with the same height as CV2. - local GH2 = { x = GV2.x, y = CV2.y, z = GV2.z } - - -- Calculate the angle of GV to the orthonormal plane - local alpha = math.atan2( GV.z, GV.x ) - - -- Now we calculate the intersecting vector between the circle around CV2 with radius FollowDistance and GH2. - -- From the GeoGebra model: CVI = (x(CV2) + FollowDistance cos(alpha), y(GH2) + FollowDistance sin(alpha), z(CV2)) - local CVI = { x = CV2.x + FollowDistance * math.cos(alpha), - y = GH2.y, - z = CV2.z + FollowDistance * math.sin(alpha), - } - - -- Calculate the direction vector DV of the escort group. We use CVI as the base and CV2 as the direction. - local DV = { x = CV2.x - CVI.x, y = CV2.y - CVI.y, z = CV2.z - CVI.z } - - -- We now calculate the unary direction vector DVu, so that we can multiply DVu with the speed, which is expressed in meters / s. - -- We need to calculate this vector to predict the point the escort group needs to fly to according its speed. - -- The distance of the destination point should be far enough not to have the aircraft starting to swipe left to right... - local DVu = { x = DV.x / FollowDistance, y = DV.y / FollowDistance, z = DV.z / FollowDistance } - - -- Now we can calculate the group destination vector GDV. - local GDV = { x = DVu.x * CS * 8 + CVI.x, y = CVI.y, z = DVu.z * CS * 8 + CVI.z } - - if self.SmokeDirectionVector == true then - trigger.action.smoke( GDV, trigger.smokeColor.Red ) - end - - self:T2( { "CV2:", CV2 } ) - self:T2( { "CVI:", CVI } ) - self:T2( { "GDV:", GDV } ) - - -- Measure distance between client and group - local CatchUpDistance = ( ( GDV.x - GV2.x )^2 + ( GDV.y - GV2.y )^2 + ( GDV.z - GV2.z )^2 ) ^ 0.5 - - -- The calculation of the Speed would simulate that the group would take 30 seconds to overcome - -- the requested Distance). - local Time = 10 - local CatchUpSpeed = ( CatchUpDistance - ( CS * 8.4 ) ) / Time - - local Speed = CS + CatchUpSpeed - if Speed < 0 then - Speed = 0 - end - - self:T( { "Client Speed, Escort Speed, Speed, FollowDistance, Time:", CS, GS, Speed, FollowDistance, Time } ) - - -- Now route the escort to the desired point with the desired speed. - self.EscortGroup:RouteToVec3( GDV, Speed / 3.6 ) -- DCS models speed in Mps (Miles per second) - end - - return true - end - - return false -end - - ---- Report Targets Scheduler. --- @param #ESCORT self -function ESCORT:_ReportTargetsScheduler() - self:F( self.EscortGroup:GetName() ) - - if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then - - if true then - - local EscortGroupName = self.EscortGroup:GetName() - - self.EscortMenuAttackNearbyTargets:RemoveSubMenus() - - if self.EscortMenuTargetAssistance then - self.EscortMenuTargetAssistance:RemoveSubMenus() - end - - local DetectedItems = self.Detection:GetDetectedItems() - self:E( DetectedItems ) - - local DetectedTargets = false - - local DetectedMsgs = {} - - for ClientEscortGroupName, EscortGroupData in pairs( self.EscortClient._EscortGroups ) do - - local ClientEscortTargets = EscortGroupData.Detection - - for DetectedItemID, DetectedItem in ipairs( DetectedItems ) do - self:E( { DetectedItemID, DetectedItem } ) - -- Remove the sub menus of the Attack menu of the Escort for the EscortGroup. - - local DetectedItemReportSummary = self.Detection:DetectedItemReportSummary( DetectedItemID ) - - if ClientEscortGroupName == EscortGroupName then - - DetectedMsgs[#DetectedMsgs+1] = DetectedItemReportSummary - - MENU_CLIENT_COMMAND:New( self.EscortClient, - DetectedItemReportSummary, - self.EscortMenuAttackNearbyTargets, - ESCORT._AttackTarget, - self, - DetectedItemID - ) - else - if self.EscortMenuTargetAssistance then - - self:T( DetectedItemReportSummary ) - local MenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, EscortGroupData.EscortName, self.EscortMenuTargetAssistance ) - MENU_CLIENT_COMMAND:New( self.EscortClient, - DetectedItemReportSummary, - MenuTargetAssistance, - ESCORT._AssistTarget, - self, - EscortGroupData.EscortGroup, - DetectedItemID - ) - end - end - - DetectedTargets = true - - end - end - self:E( DetectedMsgs ) - if DetectedTargets then - self.EscortGroup:MessageToClient( "Detected targets:\n" .. table.concat( DetectedMsgs, "\n" ), 20, self.EscortClient ) - else - self.EscortGroup:MessageToClient( "No targets detected.", 10, self.EscortClient ) - end - - return true - else --- local EscortGroupName = self.EscortGroup:GetName() --- local EscortTargets = self.EscortGroup:GetDetectedTargets() --- --- local ClientEscortTargets = self.EscortClient._EscortGroups[EscortGroupName].Targets --- --- local EscortTargetMessages = "" --- for EscortTargetID, EscortTarget in pairs( EscortTargets ) do --- local EscortObject = EscortTarget.object --- self:T( EscortObject ) --- if EscortObject and EscortObject:isExist() and EscortObject.id_ < 50000000 then --- --- local EscortTargetUnit = UNIT:Find( EscortObject ) --- local EscortTargetUnitName = EscortTargetUnit:GetName() --- --- --- --- -- local EscortTargetIsDetected, --- -- EscortTargetIsVisible, --- -- EscortTargetLastTime, --- -- EscortTargetKnowType, --- -- EscortTargetKnowDistance, --- -- EscortTargetLastPos, --- -- EscortTargetLastVelocity --- -- = self.EscortGroup:IsTargetDetected( EscortObject ) --- -- --- -- self:T( { EscortTargetIsDetected, --- -- EscortTargetIsVisible, --- -- EscortTargetLastTime, --- -- EscortTargetKnowType, --- -- EscortTargetKnowDistance, --- -- EscortTargetLastPos, --- -- EscortTargetLastVelocity } ) --- --- --- local EscortTargetUnitVec3 = EscortTargetUnit:GetVec3() --- local EscortVec3 = self.EscortGroup:GetVec3() --- local Distance = ( ( EscortTargetUnitVec3.x - EscortVec3.x )^2 + --- ( EscortTargetUnitVec3.y - EscortVec3.y )^2 + --- ( EscortTargetUnitVec3.z - EscortVec3.z )^2 --- ) ^ 0.5 / 1000 --- --- self:T( { self.EscortGroup:GetName(), EscortTargetUnit:GetName(), Distance, EscortTarget } ) --- --- if Distance <= 15 then --- --- if not ClientEscortTargets[EscortTargetUnitName] then --- ClientEscortTargets[EscortTargetUnitName] = {} --- end --- ClientEscortTargets[EscortTargetUnitName].AttackUnit = EscortTargetUnit --- ClientEscortTargets[EscortTargetUnitName].visible = EscortTarget.visible --- ClientEscortTargets[EscortTargetUnitName].type = EscortTarget.type --- ClientEscortTargets[EscortTargetUnitName].distance = EscortTarget.distance --- else --- if ClientEscortTargets[EscortTargetUnitName] then --- ClientEscortTargets[EscortTargetUnitName] = nil --- end --- end --- end --- end --- --- self:T( { "Sorting Targets Table:", ClientEscortTargets } ) --- table.sort( ClientEscortTargets, function( a, b ) return a.Distance < b.Distance end ) --- self:T( { "Sorted Targets Table:", ClientEscortTargets } ) --- --- -- Remove the sub menus of the Attack menu of the Escort for the EscortGroup. --- self.EscortMenuAttackNearbyTargets:RemoveSubMenus() --- --- if self.EscortMenuTargetAssistance then --- self.EscortMenuTargetAssistance:RemoveSubMenus() --- end --- --- --for MenuIndex = 1, #self.EscortMenuAttackTargets do --- -- self:T( { "Remove Menu:", self.EscortMenuAttackTargets[MenuIndex] } ) --- -- self.EscortMenuAttackTargets[MenuIndex] = self.EscortMenuAttackTargets[MenuIndex]:Remove() --- --end --- --- --- if ClientEscortTargets then --- for ClientEscortTargetUnitName, ClientEscortTargetData in pairs( ClientEscortTargets ) do --- --- for ClientEscortGroupName, EscortGroupData in pairs( self.EscortClient._EscortGroups ) do --- --- if ClientEscortTargetData and ClientEscortTargetData.AttackUnit:IsAlive() then --- --- local EscortTargetMessage = "" --- local EscortTargetCategoryName = ClientEscortTargetData.AttackUnit:GetCategoryName() --- local EscortTargetCategoryType = ClientEscortTargetData.AttackUnit:GetTypeName() --- if ClientEscortTargetData.type then --- EscortTargetMessage = EscortTargetMessage .. EscortTargetCategoryName .. " (" .. EscortTargetCategoryType .. ") at " --- else --- EscortTargetMessage = EscortTargetMessage .. "Unknown target at " --- end --- --- local EscortTargetUnitVec3 = ClientEscortTargetData.AttackUnit:GetVec3() --- local EscortVec3 = self.EscortGroup:GetVec3() --- local Distance = ( ( EscortTargetUnitVec3.x - EscortVec3.x )^2 + --- ( EscortTargetUnitVec3.y - EscortVec3.y )^2 + --- ( EscortTargetUnitVec3.z - EscortVec3.z )^2 --- ) ^ 0.5 / 1000 --- --- self:T( { self.EscortGroup:GetName(), ClientEscortTargetData.AttackUnit:GetName(), Distance, ClientEscortTargetData.AttackUnit } ) --- if ClientEscortTargetData.visible == false then --- EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " estimated km" --- else --- EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " km" --- end --- --- if ClientEscortTargetData.visible then --- EscortTargetMessage = EscortTargetMessage .. ", visual" --- end --- --- if ClientEscortGroupName == EscortGroupName then --- --- MENU_CLIENT_COMMAND:New( self.EscortClient, --- EscortTargetMessage, --- self.EscortMenuAttackNearbyTargets, --- ESCORT._AttackTarget, --- { ParamSelf = self, --- ParamUnit = ClientEscortTargetData.AttackUnit --- } --- ) --- EscortTargetMessages = EscortTargetMessages .. "\n - " .. EscortTargetMessage --- else --- if self.EscortMenuTargetAssistance then --- local MenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, EscortGroupData.EscortName, self.EscortMenuTargetAssistance ) --- MENU_CLIENT_COMMAND:New( self.EscortClient, --- EscortTargetMessage, --- MenuTargetAssistance, --- ESCORT._AssistTarget, --- self, --- EscortGroupData.EscortGroup, --- ClientEscortTargetData.AttackUnit --- ) --- end --- end --- else --- ClientEscortTargetData = nil --- end --- end --- end --- --- if EscortTargetMessages ~= "" and self.ReportTargets == true then --- self.EscortGroup:MessageToClient( "Detected targets within 15 km range:" .. EscortTargetMessages:gsub("\n$",""), 20, self.EscortClient ) --- else --- self.EscortGroup:MessageToClient( "No targets detected!", 20, self.EscortClient ) --- end --- end --- --- if self.EscortMenuResumeMission then --- self.EscortMenuResumeMission:RemoveSubMenus() --- --- -- if self.EscortMenuResumeWayPoints then --- -- for MenuIndex = 1, #self.EscortMenuResumeWayPoints do --- -- self:T( { "Remove Menu:", self.EscortMenuResumeWayPoints[MenuIndex] } ) --- -- self.EscortMenuResumeWayPoints[MenuIndex] = self.EscortMenuResumeWayPoints[MenuIndex]:Remove() --- -- end --- -- end --- --- local TaskPoints = self:RegisterRoute() --- for WayPointID, WayPoint in pairs( TaskPoints ) do --- local EscortVec3 = self.EscortGroup:GetVec3() --- local Distance = ( ( WayPoint.x - EscortVec3.x )^2 + --- ( WayPoint.y - EscortVec3.z )^2 --- ) ^ 0.5 / 1000 --- MENU_CLIENT_COMMAND:New( self.EscortClient, "Waypoint " .. WayPointID .. " at " .. string.format( "%.2f", Distance ).. "km", self.EscortMenuResumeMission, ESCORT._ResumeMission, { ParamSelf = self, ParamWayPoint = WayPointID } ) --- end --- end --- --- return true - end - end - - return false -end ---- This module contains the MISSILETRAINER class. --- --- === --- --- 1) @{MissileTrainer#MISSILETRAINER} class, extends @{Base#BASE} --- =============================================================== --- The @{#MISSILETRAINER} class uses the DCS world messaging system to be alerted of any missiles fired, and when a missile would hit your aircraft, --- the class will destroy the missile within a certain range, to avoid damage to your aircraft. --- It suports the following functionality: --- --- * Track the missiles fired at you and other players, providing bearing and range information of the missiles towards the airplanes. --- * Provide alerts of missile launches, including detailed information of the units launching, including bearing, range � --- * Provide alerts when a missile would have killed your aircraft. --- * Provide alerts when the missile self destructs. --- * Enable / Disable and Configure the Missile Trainer using the various menu options. --- --- When running a mission where MISSILETRAINER is used, the following radio menu structure ( 'Radio Menu' -> 'Other (F10)' -> 'MissileTrainer' ) options are available for the players: --- --- * **Messages**: Menu to configure all messages. --- * **Messages On**: Show all messages. --- * **Messages Off**: Disable all messages. --- * **Tracking**: Menu to configure missile tracking messages. --- * **To All**: Shows missile tracking messages to all players. --- * **To Target**: Shows missile tracking messages only to the player where the missile is targetted at. --- * **Tracking On**: Show missile tracking messages. --- * **Tracking Off**: Disable missile tracking messages. --- * **Frequency Increase**: Increases the missile tracking message frequency with one second. --- * **Frequency Decrease**: Decreases the missile tracking message frequency with one second. --- * **Alerts**: Menu to configure alert messages. --- * **To All**: Shows alert messages to all players. --- * **To Target**: Shows alert messages only to the player where the missile is (was) targetted at. --- * **Hits On**: Show missile hit alert messages. --- * **Hits Off**: Disable missile hit alert messages. --- * **Launches On**: Show missile launch messages. --- * **Launches Off**: Disable missile launch messages. --- * **Details**: Menu to configure message details. --- * **Range On**: Shows range information when a missile is fired to a target. --- * **Range Off**: Disable range information when a missile is fired to a target. --- * **Bearing On**: Shows bearing information when a missile is fired to a target. --- * **Bearing Off**: Disable bearing information when a missile is fired to a target. --- * **Distance**: Menu to configure the distance when a missile needs to be destroyed when near to a player, during tracking. This will improve/influence hit calculation accuracy, but has the risk of damaging the aircraft when the missile reaches the aircraft before the distance is measured. --- * **50 meter**: Destroys the missile when the distance to the aircraft is below or equal to 50 meter. --- * **100 meter**: Destroys the missile when the distance to the aircraft is below or equal to 100 meter. --- * **150 meter**: Destroys the missile when the distance to the aircraft is below or equal to 150 meter. --- * **200 meter**: Destroys the missile when the distance to the aircraft is below or equal to 200 meter. --- --- --- 1.1) MISSILETRAINER construction methods: --- ----------------------------------------- --- Create a new MISSILETRAINER object with the @{#MISSILETRAINER.New} method: --- --- * @{#MISSILETRAINER.New}: Creates a new MISSILETRAINER object taking the maximum distance to your aircraft to evaluate when a missile needs to be destroyed. --- --- MISSILETRAINER will collect each unit declared in the mission with a skill level "Client" and "Player", and will monitor the missiles shot at those. --- --- 1.2) MISSILETRAINER initialization methods: --- ------------------------------------------- --- A MISSILETRAINER object will behave differently based on the usage of initialization methods: --- --- * @{#MISSILETRAINER.InitMessagesOnOff}: Sets by default the display of any message to be ON or OFF. --- * @{#MISSILETRAINER.InitTrackingToAll}: Sets by default the missile tracking report for all players or only for those missiles targetted to you. --- * @{#MISSILETRAINER.InitTrackingOnOff}: Sets by default the display of missile tracking report to be ON or OFF. --- * @{#MISSILETRAINER.InitTrackingFrequency}: Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. --- * @{#MISSILETRAINER.InitAlertsToAll}: Sets by default the display of alerts to be shown to all players or only to you. --- * @{#MISSILETRAINER.InitAlertsHitsOnOff}: Sets by default the display of hit alerts ON or OFF. --- * @{#MISSILETRAINER.InitAlertsLaunchesOnOff}: Sets by default the display of launch alerts ON or OFF. --- * @{#MISSILETRAINER.InitRangeOnOff}: Sets by default the display of range information of missiles ON of OFF. --- * @{#MISSILETRAINER.InitBearingOnOff}: Sets by default the display of bearing information of missiles ON of OFF. --- * @{#MISSILETRAINER.InitMenusOnOff}: Allows to configure the options through the radio menu. --- --- === --- --- CREDITS --- ======= --- **Stuka (Danny)** Who you can search on the Eagle Dynamics Forums. --- Working together with Danny has resulted in the MISSILETRAINER class. --- Danny has shared his ideas and together we made a design. --- Together with the **476 virtual team**, we tested the MISSILETRAINER class, and got much positive feedback! --- --- @module MissileTrainer --- @author FlightControl - - ---- The MISSILETRAINER class --- @type MISSILETRAINER --- @field Core.Set#SET_CLIENT DBClients --- @extends Core.Base#BASE -MISSILETRAINER = { - ClassName = "MISSILETRAINER", - TrackingMissiles = {}, -} - -function MISSILETRAINER._Alive( Client, self ) - - if self.Briefing then - Client:Message( self.Briefing, 15, "Trainer" ) - end - - if self.MenusOnOff == true then - Client:Message( "Use the 'Radio Menu' -> 'Other (F10)' -> 'Missile Trainer' menu options to change the Missile Trainer settings (for all players).", 15, "Trainer" ) - - Client.MainMenu = MENU_CLIENT:New( Client, "Missile Trainer", nil ) -- Menu#MENU_CLIENT - - Client.MenuMessages = MENU_CLIENT:New( Client, "Messages", Client.MainMenu ) - Client.MenuOn = MENU_CLIENT_COMMAND:New( Client, "Messages On", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = true } ) - Client.MenuOff = MENU_CLIENT_COMMAND:New( Client, "Messages Off", Client.MenuMessages, self._MenuMessages, { MenuSelf = self, MessagesOnOff = false } ) - - Client.MenuTracking = MENU_CLIENT:New( Client, "Tracking", Client.MainMenu ) - Client.MenuTrackingToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = true } ) - Client.MenuTrackingToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingToAll = false } ) - Client.MenuTrackOn = MENU_CLIENT_COMMAND:New( Client, "Tracking On", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = true } ) - Client.MenuTrackOff = MENU_CLIENT_COMMAND:New( Client, "Tracking Off", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingOnOff = false } ) - Client.MenuTrackIncrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Increase", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = -1 } ) - Client.MenuTrackDecrease = MENU_CLIENT_COMMAND:New( Client, "Frequency Decrease", Client.MenuTracking, self._MenuMessages, { MenuSelf = self, TrackingFrequency = 1 } ) - - Client.MenuAlerts = MENU_CLIENT:New( Client, "Alerts", Client.MainMenu ) - Client.MenuAlertsToAll = MENU_CLIENT_COMMAND:New( Client, "To All", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = true } ) - Client.MenuAlertsToTarget = MENU_CLIENT_COMMAND:New( Client, "To Target", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsToAll = false } ) - Client.MenuHitsOn = MENU_CLIENT_COMMAND:New( Client, "Hits On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = true } ) - Client.MenuHitsOff = MENU_CLIENT_COMMAND:New( Client, "Hits Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsHitsOnOff = false } ) - Client.MenuLaunchesOn = MENU_CLIENT_COMMAND:New( Client, "Launches On", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = true } ) - Client.MenuLaunchesOff = MENU_CLIENT_COMMAND:New( Client, "Launches Off", Client.MenuAlerts, self._MenuMessages, { MenuSelf = self, AlertsLaunchesOnOff = false } ) - - Client.MenuDetails = MENU_CLIENT:New( Client, "Details", Client.MainMenu ) - Client.MenuDetailsDistanceOn = MENU_CLIENT_COMMAND:New( Client, "Range On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = true } ) - Client.MenuDetailsDistanceOff = MENU_CLIENT_COMMAND:New( Client, "Range Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsRangeOnOff = false } ) - Client.MenuDetailsBearingOn = MENU_CLIENT_COMMAND:New( Client, "Bearing On", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = true } ) - Client.MenuDetailsBearingOff = MENU_CLIENT_COMMAND:New( Client, "Bearing Off", Client.MenuDetails, self._MenuMessages, { MenuSelf = self, DetailsBearingOnOff = false } ) - - Client.MenuDistance = MENU_CLIENT:New( Client, "Set distance to plane", Client.MainMenu ) - Client.MenuDistance50 = MENU_CLIENT_COMMAND:New( Client, "50 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 50 / 1000 } ) - Client.MenuDistance100 = MENU_CLIENT_COMMAND:New( Client, "100 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 100 / 1000 } ) - Client.MenuDistance150 = MENU_CLIENT_COMMAND:New( Client, "150 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 150 / 1000 } ) - Client.MenuDistance200 = MENU_CLIENT_COMMAND:New( Client, "200 meter", Client.MenuDistance, self._MenuMessages, { MenuSelf = self, Distance = 200 / 1000 } ) - else - if Client.MainMenu then - Client.MainMenu:Remove() - end - end - - local ClientID = Client:GetID() - self:T( ClientID ) - if not self.TrackingMissiles[ClientID] then - self.TrackingMissiles[ClientID] = {} - end - self.TrackingMissiles[ClientID].Client = Client - if not self.TrackingMissiles[ClientID].MissileData then - self.TrackingMissiles[ClientID].MissileData = {} - end -end - ---- Creates the main object which is handling missile tracking. --- When a missile is fired a SCHEDULER is set off that follows the missile. When near a certain a client player, the missile will be destroyed. --- @param #MISSILETRAINER self --- @param #number Distance The distance in meters when a tracked missile needs to be destroyed when close to a player. --- @param #string Briefing (Optional) Will show a text to the players when starting their mission. Can be used for briefing purposes. --- @return #MISSILETRAINER -function MISSILETRAINER:New( Distance, Briefing ) - local self = BASE:Inherit( self, BASE:New() ) - self:F( Distance ) - - if Briefing then - self.Briefing = Briefing - end - - self.Schedulers = {} - self.SchedulerID = 0 - - self.MessageInterval = 2 - self.MessageLastTime = timer.getTime() - - self.Distance = Distance / 1000 - - self:HandleEvent( EVENTS.Shot ) - - self.DBClients = SET_CLIENT:New():FilterStart() - - --- for ClientID, Client in pairs( self.DBClients.Database ) do --- self:E( "ForEach:" .. Client.UnitName ) --- Client:Alive( self._Alive, self ) --- end --- - self.DBClients:ForEachClient( - function( Client ) - self:E( "ForEach:" .. Client.UnitName ) - Client:Alive( self._Alive, self ) - end - ) - - - --- self.DB:ForEachClient( --- --- @param Wrapper.Client#CLIENT Client --- function( Client ) --- --- ... actions ... --- --- end --- ) - - self.MessagesOnOff = true - - self.TrackingToAll = false - self.TrackingOnOff = true - self.TrackingFrequency = 3 - - self.AlertsToAll = true - self.AlertsHitsOnOff = true - self.AlertsLaunchesOnOff = true - - self.DetailsRangeOnOff = true - self.DetailsBearingOnOff = true - - self.MenusOnOff = true - - self.TrackingMissiles = {} - - self.TrackingScheduler = SCHEDULER:New( self, self._TrackMissiles, {}, 0.5, 0.05, 0 ) - - return self -end - --- Initialization methods. - - - ---- Sets by default the display of any message to be ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean MessagesOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitMessagesOnOff( MessagesOnOff ) - self:F( MessagesOnOff ) - - self.MessagesOnOff = MessagesOnOff - if self.MessagesOnOff == true then - MESSAGE:New( "Messages ON", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Messages OFF", 15, "Menu" ):ToAll() - end - - return self -end - ---- Sets by default the missile tracking report for all players or only for those missiles targetted to you. --- @param #MISSILETRAINER self --- @param #boolean TrackingToAll true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingToAll( TrackingToAll ) - self:F( TrackingToAll ) - - self.TrackingToAll = TrackingToAll - if self.TrackingToAll == true then - MESSAGE:New( "Missile tracking to all players ON", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Missile tracking to all players OFF", 15, "Menu" ):ToAll() - end - - return self -end - ---- Sets by default the display of missile tracking report to be ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean TrackingOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingOnOff( TrackingOnOff ) - self:F( TrackingOnOff ) - - self.TrackingOnOff = TrackingOnOff - if self.TrackingOnOff == true then - MESSAGE:New( "Missile tracking ON", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Missile tracking OFF", 15, "Menu" ):ToAll() - end - - return self -end - ---- Increases, decreases the missile tracking message display frequency with the provided time interval in seconds. --- The default frequency is a 3 second interval, so the Tracking Frequency parameter specifies the increase or decrease from the default 3 seconds or the last frequency update. --- @param #MISSILETRAINER self --- @param #number TrackingFrequency Provide a negative or positive value in seconds to incraese or decrease the display frequency. --- @return #MISSILETRAINER self -function MISSILETRAINER:InitTrackingFrequency( TrackingFrequency ) - self:F( TrackingFrequency ) - - self.TrackingFrequency = self.TrackingFrequency + TrackingFrequency - if self.TrackingFrequency < 0.5 then - self.TrackingFrequency = 0.5 - end - if self.TrackingFrequency then - MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", 15, "Menu" ):ToAll() - end - - return self -end - ---- Sets by default the display of alerts to be shown to all players or only to you. --- @param #MISSILETRAINER self --- @param #boolean AlertsToAll true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsToAll( AlertsToAll ) - self:F( AlertsToAll ) - - self.AlertsToAll = AlertsToAll - if self.AlertsToAll == true then - MESSAGE:New( "Alerts to all players ON", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Alerts to all players OFF", 15, "Menu" ):ToAll() - end - - return self -end - ---- Sets by default the display of hit alerts ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean AlertsHitsOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsHitsOnOff( AlertsHitsOnOff ) - self:F( AlertsHitsOnOff ) - - self.AlertsHitsOnOff = AlertsHitsOnOff - if self.AlertsHitsOnOff == true then - MESSAGE:New( "Alerts Hits ON", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Alerts Hits OFF", 15, "Menu" ):ToAll() - end - - return self -end - ---- Sets by default the display of launch alerts ON or OFF. --- @param #MISSILETRAINER self --- @param #boolean AlertsLaunchesOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitAlertsLaunchesOnOff( AlertsLaunchesOnOff ) - self:F( AlertsLaunchesOnOff ) - - self.AlertsLaunchesOnOff = AlertsLaunchesOnOff - if self.AlertsLaunchesOnOff == true then - MESSAGE:New( "Alerts Launches ON", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Alerts Launches OFF", 15, "Menu" ):ToAll() - end - - return self -end - ---- Sets by default the display of range information of missiles ON of OFF. --- @param #MISSILETRAINER self --- @param #boolean DetailsRangeOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitRangeOnOff( DetailsRangeOnOff ) - self:F( DetailsRangeOnOff ) - - self.DetailsRangeOnOff = DetailsRangeOnOff - if self.DetailsRangeOnOff == true then - MESSAGE:New( "Range display ON", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Range display OFF", 15, "Menu" ):ToAll() - end - - return self -end - ---- Sets by default the display of bearing information of missiles ON of OFF. --- @param #MISSILETRAINER self --- @param #boolean DetailsBearingOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitBearingOnOff( DetailsBearingOnOff ) - self:F( DetailsBearingOnOff ) - - self.DetailsBearingOnOff = DetailsBearingOnOff - if self.DetailsBearingOnOff == true then - MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll() - end - - return self -end - ---- Enables / Disables the menus. --- @param #MISSILETRAINER self --- @param #boolean MenusOnOff true or false --- @return #MISSILETRAINER self -function MISSILETRAINER:InitMenusOnOff( MenusOnOff ) - self:F( MenusOnOff ) - - self.MenusOnOff = MenusOnOff - if self.MenusOnOff == true then - MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", 15, "Menu" ):ToAll() - else - MESSAGE:New( "Menus are DISABLED", 15, "Menu" ):ToAll() - end - - return self -end - - --- Menu functions - -function MISSILETRAINER._MenuMessages( MenuParameters ) - - local self = MenuParameters.MenuSelf - - if MenuParameters.MessagesOnOff ~= nil then - self:InitMessagesOnOff( MenuParameters.MessagesOnOff ) - end - - if MenuParameters.TrackingToAll ~= nil then - self:InitTrackingToAll( MenuParameters.TrackingToAll ) - end - - if MenuParameters.TrackingOnOff ~= nil then - self:InitTrackingOnOff( MenuParameters.TrackingOnOff ) - end - - if MenuParameters.TrackingFrequency ~= nil then - self:InitTrackingFrequency( MenuParameters.TrackingFrequency ) - end - - if MenuParameters.AlertsToAll ~= nil then - self:InitAlertsToAll( MenuParameters.AlertsToAll ) - end - - if MenuParameters.AlertsHitsOnOff ~= nil then - self:InitAlertsHitsOnOff( MenuParameters.AlertsHitsOnOff ) - end - - if MenuParameters.AlertsLaunchesOnOff ~= nil then - self:InitAlertsLaunchesOnOff( MenuParameters.AlertsLaunchesOnOff ) - end - - if MenuParameters.DetailsRangeOnOff ~= nil then - self:InitRangeOnOff( MenuParameters.DetailsRangeOnOff ) - end - - if MenuParameters.DetailsBearingOnOff ~= nil then - self:InitBearingOnOff( MenuParameters.DetailsBearingOnOff ) - end - - if MenuParameters.Distance ~= nil then - self.Distance = MenuParameters.Distance - MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", 15, "Menu" ):ToAll() - end - -end - ---- Detects if an SA site was shot with an anti radiation missile. In this case, take evasive actions based on the skill level set within the ME. --- @param #MISSILETRAINER self --- @param Core.Event#EVENTDATA EventData -function MISSILETRAINER:OnEventShot( EVentData ) - self:F( { EVentData } ) - - local TrainerSourceDCSUnit = EVentData.IniDCSUnit - local TrainerSourceDCSUnitName = EVentData.IniDCSUnitName - local TrainerWeapon = EVentData.Weapon -- Identify the weapon fired - local TrainerWeaponName = EVentData.WeaponName -- return weapon type - - self:T( "Missile Launched = " .. TrainerWeaponName ) - - local TrainerTargetDCSUnit = TrainerWeapon:getTarget() -- Identify target - if TrainerTargetDCSUnit then - local TrainerTargetDCSUnitName = Unit.getName( TrainerTargetDCSUnit ) - local TrainerTargetSkill = _DATABASE.Templates.Units[TrainerTargetDCSUnitName].Template.skill - - self:T(TrainerTargetDCSUnitName ) - - local Client = self.DBClients:FindClient( TrainerTargetDCSUnitName ) - if Client then - - local TrainerSourceUnit = UNIT:Find( TrainerSourceDCSUnit ) - local TrainerTargetUnit = UNIT:Find( TrainerTargetDCSUnit ) - - if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then - - local Message = MESSAGE:New( - string.format( "%s launched a %s", - TrainerSourceUnit:GetTypeName(), - TrainerWeaponName - ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ), 5, "Launch Alert" ) - - if self.AlertsToAll then - Message:ToAll() - else - Message:ToClient( Client ) - end - end - - local ClientID = Client:GetID() - self:T( ClientID ) - local MissileData = {} - MissileData.TrainerSourceUnit = TrainerSourceUnit - MissileData.TrainerWeapon = TrainerWeapon - MissileData.TrainerTargetUnit = TrainerTargetUnit - MissileData.TrainerWeaponTypeName = TrainerWeapon:getTypeName() - MissileData.TrainerWeaponLaunched = true - table.insert( self.TrackingMissiles[ClientID].MissileData, MissileData ) - --self:T( self.TrackingMissiles ) - end - else - -- TODO: some weapons don't know the target unit... Need to develop a workaround for this. - if ( TrainerWeapon:getTypeName() == "9M311" ) then - SCHEDULER:New( TrainerWeapon, TrainerWeapon.destroy, {}, 1 ) - else - end - end -end - -function MISSILETRAINER:_AddRange( Client, TrainerWeapon ) - - local RangeText = "" - - if self.DetailsRangeOnOff then - - local PositionMissile = TrainerWeapon:getPoint() - local TargetVec3 = Client:GetVec3() - - local Range = ( ( PositionMissile.x - TargetVec3.x )^2 + - ( PositionMissile.y - TargetVec3.y )^2 + - ( PositionMissile.z - TargetVec3.z )^2 - ) ^ 0.5 / 1000 - - RangeText = string.format( ", at %4.2fkm", Range ) - end - - return RangeText -end - -function MISSILETRAINER:_AddBearing( Client, TrainerWeapon ) - - local BearingText = "" - - if self.DetailsBearingOnOff then - - local PositionMissile = TrainerWeapon:getPoint() - local TargetVec3 = Client:GetVec3() - - self:T2( { TargetVec3, PositionMissile }) - - local DirectionVector = { x = PositionMissile.x - TargetVec3.x, y = PositionMissile.y - TargetVec3.y, z = PositionMissile.z - TargetVec3.z } - local DirectionRadians = math.atan2( DirectionVector.z, DirectionVector.x ) - --DirectionRadians = DirectionRadians + routines.getNorthCorrection( PositionTarget ) - if DirectionRadians < 0 then - DirectionRadians = DirectionRadians + 2 * math.pi - end - local DirectionDegrees = DirectionRadians * 180 / math.pi - - BearingText = string.format( ", %d degrees", DirectionDegrees ) - end - - return BearingText -end - - -function MISSILETRAINER:_TrackMissiles() - self:F2() - - - local ShowMessages = false - if self.MessagesOnOff and self.MessageLastTime + self.TrackingFrequency <= timer.getTime() then - self.MessageLastTime = timer.getTime() - ShowMessages = true - end - - -- ALERTS PART - - -- Loop for all Player Clients to check the alerts and deletion of missiles. - for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do - - local Client = ClientData.Client - self:T2( { Client:GetName() } ) - - for MissileDataID, MissileData in pairs( ClientData.MissileData ) do - self:T3( MissileDataID ) - - local TrainerSourceUnit = MissileData.TrainerSourceUnit - local TrainerWeapon = MissileData.TrainerWeapon - local TrainerTargetUnit = MissileData.TrainerTargetUnit - local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName - local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched - - if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then - local PositionMissile = TrainerWeapon:getPosition().p - local TargetVec3 = Client:GetVec3() - - local Distance = ( ( PositionMissile.x - TargetVec3.x )^2 + - ( PositionMissile.y - TargetVec3.y )^2 + - ( PositionMissile.z - TargetVec3.z )^2 - ) ^ 0.5 / 1000 - - if Distance <= self.Distance then - -- Hit alert - TrainerWeapon:destroy() - if self.MessagesOnOff == true and self.AlertsHitsOnOff == true then - - self:T( "killed" ) - - local Message = MESSAGE:New( - string.format( "%s launched by %s killed %s", - TrainerWeapon:getTypeName(), - TrainerSourceUnit:GetTypeName(), - TrainerTargetUnit:GetPlayerName() - ), 15, "Hit Alert" ) - - if self.AlertsToAll == true then - Message:ToAll() - else - Message:ToClient( Client ) - end - - MissileData = nil - table.remove( ClientData.MissileData, MissileDataID ) - self:T(ClientData.MissileData) - end - end - else - if not ( TrainerWeapon and TrainerWeapon:isExist() ) then - if self.MessagesOnOff == true and self.AlertsLaunchesOnOff == true then - -- Weapon does not exist anymore. Delete from Table - local Message = MESSAGE:New( - string.format( "%s launched by %s self destructed!", - TrainerWeaponTypeName, - TrainerSourceUnit:GetTypeName() - ), 5, "Tracking" ) - - if self.AlertsToAll == true then - Message:ToAll() - else - Message:ToClient( Client ) - end - end - MissileData = nil - table.remove( ClientData.MissileData, MissileDataID ) - self:T( ClientData.MissileData ) - end - end - end - end - - if ShowMessages == true and self.MessagesOnOff == true and self.TrackingOnOff == true then -- Only do this when tracking information needs to be displayed. - - -- TRACKING PART - - -- For the current client, the missile range and bearing details are displayed To the Player Client. - -- For the other clients, the missile range and bearing details are displayed To the other Player Clients. - -- To achieve this, a cross loop is done for each Player Client <-> Other Player Client missile information. - - -- Main Player Client loop - for ClientDataID, ClientData in pairs( self.TrackingMissiles ) do - - local Client = ClientData.Client - self:T2( { Client:GetName() } ) - - - ClientData.MessageToClient = "" - ClientData.MessageToAll = "" - - -- Other Players Client loop - for TrackingDataID, TrackingData in pairs( self.TrackingMissiles ) do - - for MissileDataID, MissileData in pairs( TrackingData.MissileData ) do - self:T3( MissileDataID ) - - local TrainerSourceUnit = MissileData.TrainerSourceUnit - local TrainerWeapon = MissileData.TrainerWeapon - local TrainerTargetUnit = MissileData.TrainerTargetUnit - local TrainerWeaponTypeName = MissileData.TrainerWeaponTypeName - local TrainerWeaponLaunched = MissileData.TrainerWeaponLaunched - - if Client and Client:IsAlive() and TrainerSourceUnit and TrainerSourceUnit:IsAlive() and TrainerWeapon and TrainerWeapon:isExist() and TrainerTargetUnit and TrainerTargetUnit:IsAlive() then - - if ShowMessages == true then - local TrackingTo - TrackingTo = string.format( " -> %s", - TrainerWeaponTypeName - ) - - if ClientDataID == TrackingDataID then - if ClientData.MessageToClient == "" then - ClientData.MessageToClient = "Missiles to You:\n" - end - ClientData.MessageToClient = ClientData.MessageToClient .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. "\n" - else - if self.TrackingToAll == true then - if ClientData.MessageToAll == "" then - ClientData.MessageToAll = "Missiles to other Players:\n" - end - ClientData.MessageToAll = ClientData.MessageToAll .. TrackingTo .. self:_AddRange( ClientData.Client, TrainerWeapon ) .. self:_AddBearing( ClientData.Client, TrainerWeapon ) .. " ( " .. TrainerTargetUnit:GetPlayerName() .. " )\n" - end - end - end - end - end - end - - -- Once the Player Client and the Other Player Client tracking messages are prepared, show them. - if ClientData.MessageToClient ~= "" or ClientData.MessageToAll ~= "" then - local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, 1, "Tracking" ):ToClient( Client ) - end - end - end - - return true -end ---- This module contains the AIRBASEPOLICE classes. --- --- === --- --- 1) @{AirbasePolice#AIRBASEPOLICE_BASE} class, extends @{Base#BASE} --- ================================================================== --- The @{AirbasePolice#AIRBASEPOLICE_BASE} class provides the main methods to monitor CLIENT behaviour at airbases. --- CLIENTS should not be allowed to: --- --- * Don't taxi faster than 40 km/h. --- * Don't take-off on taxiways. --- * Avoid to hit other planes on the airbase. --- * Obey ground control orders. --- --- 2) @{AirbasePolice#AIRBASEPOLICE_CAUCASUS} class, extends @{AirbasePolice#AIRBASEPOLICE_BASE} --- ============================================================================================= --- All the airbases on the caucasus map can be monitored using this class. --- If you want to monitor specific airbases, you need to use the @{#AIRBASEPOLICE_BASE.Monitor}() method, which takes a table or airbase names. --- The following names can be given: --- * AnapaVityazevo --- * Batumi --- * Beslan --- * Gelendzhik --- * Gudauta --- * Kobuleti --- * KrasnodarCenter --- * KrasnodarPashkovsky --- * Krymsk --- * Kutaisi --- * MaykopKhanskaya --- * MineralnyeVody --- * Mozdok --- * Nalchik --- * Novorossiysk --- * SenakiKolkhi --- * SochiAdler --- * Soganlug --- * SukhumiBabushara --- * TbilisiLochini --- * Vaziani --- --- 3) @{AirbasePolice#AIRBASEPOLICE_NEVADA} class, extends @{AirbasePolice#AIRBASEPOLICE_BASE} --- ============================================================================================= --- All the airbases on the NEVADA map can be monitored using this class. --- If you want to monitor specific airbases, you need to use the @{#AIRBASEPOLICE_BASE.Monitor}() method, which takes a table or airbase names. --- The following names can be given: --- * Nellis --- * McCarran --- * Creech --- * Groom Lake --- --- ### Contributions: Dutch Baron - Concept & Testing --- ### Author: FlightControl - Framework Design & Programming --- --- @module AirbasePolice - - - - - ---- @type AIRBASEPOLICE_BASE --- @field Core.Set#SET_CLIENT SetClient --- @extends Core.Base#BASE - -AIRBASEPOLICE_BASE = { - ClassName = "AIRBASEPOLICE_BASE", - SetClient = nil, - Airbases = nil, - AirbaseNames = nil, -} - - ---- Creates a new AIRBASEPOLICE_BASE object. --- @param #AIRBASEPOLICE_BASE self --- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. --- @param Airbases A table of Airbase Names. --- @return #AIRBASEPOLICE_BASE self -function AIRBASEPOLICE_BASE:New( SetClient, Airbases ) - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) - self:E( { self.ClassName, SetClient, Airbases } ) - - self.SetClient = SetClient - self.Airbases = Airbases - - for AirbaseID, Airbase in pairs( self.Airbases ) do - Airbase.ZoneBoundary = ZONE_POLYGON_BASE:New( "Boundary", Airbase.PointsBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - for PointsRunwayID, PointsRunway in pairs( Airbase.PointsRunways ) do - Airbase.ZoneRunways[PointsRunwayID] = ZONE_POLYGON_BASE:New( "Runway " .. PointsRunwayID, PointsRunway ):SmokeZone(SMOKECOLOR.Red):Flush() - end - end - --- -- Template --- local TemplateBoundary = GROUP:FindByName( "Template Boundary" ) --- self.Airbases.Template.ZoneBoundary = ZONE_POLYGON:New( "Template Boundary", TemplateBoundary ):SmokeZone(SMOKECOLOR.White):Flush() --- --- local TemplateRunway1 = GROUP:FindByName( "Template Runway 1" ) --- self.Airbases.Template.ZoneRunways[1] = ZONE_POLYGON:New( "Template Runway 1", TemplateRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - - self.SetClient:ForEachClient( - --- @param Wrapper.Client#CLIENT Client - function( Client ) - Client:SetState( self, "Speeding", false ) - Client:SetState( self, "Warnings", 0) - Client:SetState( self, "Taxi", false ) - end - ) - - self.AirbaseMonitor = SCHEDULER:New( self, self._AirbaseMonitor, {}, 0, 2, 0.05 ) - - return self -end - ---- @type AIRBASEPOLICE_BASE.AirbaseNames --- @list <#string> - ---- Monitor a table of airbase names. --- @param #AIRBASEPOLICE_BASE self --- @param #AIRBASEPOLICE_BASE.AirbaseNames AirbaseNames A list of AirbaseNames to monitor. If this parameters is nil, then all airbases will be monitored. --- @return #AIRBASEPOLICE_BASE self -function AIRBASEPOLICE_BASE:Monitor( AirbaseNames ) - - if AirbaseNames then - if type( AirbaseNames ) == "table" then - self.AirbaseNames = AirbaseNames - else - self.AirbaseNames = { AirbaseNames } - end - end -end - ---- @param #AIRBASEPOLICE_BASE self -function AIRBASEPOLICE_BASE:_AirbaseMonitor() - - for AirbaseID, Airbase in pairs( self.Airbases ) do - - if not self.AirbaseNames or self.AirbaseNames[AirbaseID] then - - self:E( AirbaseID ) - - self.SetClient:ForEachClientInZone( Airbase.ZoneBoundary, - - --- @param Wrapper.Client#CLIENT Client - function( Client ) - - self:E( Client.UnitName ) - if Client:IsAlive() then - local NotInRunwayZone = true - for ZoneRunwayID, ZoneRunway in pairs( Airbase.ZoneRunways ) do - NotInRunwayZone = ( Client:IsNotInZone( ZoneRunway ) == true ) and NotInRunwayZone or false - end - - if NotInRunwayZone then - local Taxi = self:GetState( self, "Taxi" ) - self:E( Taxi ) - if Taxi == false then - Client:Message( "Welcome at " .. AirbaseID .. ". The maximum taxiing speed is " .. Airbase.MaximumSpeed " km/h.", 20, "ATC" ) - self:SetState( self, "Taxi", true ) - end - - -- TODO: GetVelocityKMH function usage - local VelocityVec3 = Client:GetVelocity() - local Velocity = ( VelocityVec3.x ^ 2 + VelocityVec3.y ^ 2 + VelocityVec3.z ^ 2 ) ^ 0.5 -- in meters / sec - local Velocity = Velocity * 3.6 -- now it is in km/h. - -- MESSAGE:New( "Velocity = " .. Velocity, 1 ):ToAll() - local IsAboveRunway = Client:IsAboveRunway() - local IsOnGround = Client:InAir() == false - self:T( IsAboveRunway, IsOnGround ) - - if IsAboveRunway and IsOnGround then - - if Velocity > Airbase.MaximumSpeed then - local IsSpeeding = Client:GetState( self, "Speeding" ) - - if IsSpeeding == true then - local SpeedingWarnings = Client:GetState( self, "Warnings" ) - self:T( SpeedingWarnings ) - - if SpeedingWarnings <= 3 then - Client:Message( "You are speeding on the taxiway! Slow down or you will be removed from this airbase! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Warning " .. SpeedingWarnings .. " / 3" ) - Client:SetState( self, "Warnings", SpeedingWarnings + 1 ) - else - MESSAGE:New( "Player " .. Client:GetPlayerName() .. " has been removed from the airbase, due to a speeding violation ...", 10, "Airbase Police" ):ToAll() - Client:Destroy() - trigger.action.setUserFlag( "AIRCRAFT_"..Client:GetID(), 100) - Client:SetState( self, "Speeding", false ) - Client:SetState( self, "Warnings", 0 ) - end - - else - Client:Message( "You are speeding on the taxiway, slow down now! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Attention! " ) - Client:SetState( self, "Speeding", true ) - Client:SetState( self, "Warnings", 1 ) - end - - else - Client:SetState( self, "Speeding", false ) - Client:SetState( self, "Warnings", 0 ) - end - end - - else - Client:SetState( self, "Speeding", false ) - Client:SetState( self, "Warnings", 0 ) - local Taxi = self:GetState( self, "Taxi" ) - if Taxi == true then - Client:Message( "You have progressed to the runway ... Await take-off clearance ...", 20, "ATC" ) - self:SetState( self, "Taxi", false ) - end - end - end - end - ) - end - end - - return true -end - - ---- @type AIRBASEPOLICE_CAUCASUS --- @field Core.Set#SET_CLIENT SetClient --- @extends #AIRBASEPOLICE_BASE - -AIRBASEPOLICE_CAUCASUS = { - ClassName = "AIRBASEPOLICE_CAUCASUS", - Airbases = { - AnapaVityazevo = { - PointsBoundary = { - [1]={["y"]=242234.85714287,["x"]=-6616.5714285726,}, - [2]={["y"]=241060.57142858,["x"]=-5585.142857144,}, - [3]={["y"]=243806.2857143,["x"]=-3962.2857142868,}, - [4]={["y"]=245240.57142858,["x"]=-4816.5714285726,}, - [5]={["y"]=244783.42857144,["x"]=-5630.8571428583,}, - [6]={["y"]=243800.57142858,["x"]=-5065.142857144,}, - [7]={["y"]=242232.00000001,["x"]=-6622.2857142868,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=242140.57142858,["x"]=-6478.8571428583,}, - [2]={["y"]=242188.57142858,["x"]=-6522.0000000011,}, - [3]={["y"]=244124.2857143,["x"]=-4344.0000000011,}, - [4]={["y"]=244068.2857143,["x"]=-4296.5714285726,}, - [5]={["y"]=242140.57142858,["x"]=-6480.0000000011,} - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Batumi = { - PointsBoundary = { - [1]={["y"]=617567.14285714,["x"]=-355313.14285715,}, - [2]={["y"]=616181.42857142,["x"]=-354800.28571429,}, - [3]={["y"]=616007.14285714,["x"]=-355128.85714286,}, - [4]={["y"]=618230,["x"]=-356914.57142858,}, - [5]={["y"]=618727.14285714,["x"]=-356166,}, - [6]={["y"]=617572.85714285,["x"]=-355308.85714286,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=616442.28571429,["x"]=-355090.28571429,}, - [2]={["y"]=618450.57142857,["x"]=-356522,}, - [3]={["y"]=618407.71428571,["x"]=-356584.85714286,}, - [4]={["y"]=618361.99999999,["x"]=-356554.85714286,}, - [5]={["y"]=618324.85714285,["x"]=-356599.14285715,}, - [6]={["y"]=618250.57142856,["x"]=-356543.42857143,}, - [7]={["y"]=618257.7142857,["x"]=-356496.28571429,}, - [8]={["y"]=618237.7142857,["x"]=-356459.14285715,}, - [9]={["y"]=616555.71428571,["x"]=-355258.85714286,}, - [10]={["y"]=616486.28571428,["x"]=-355280.57142858,}, - [11]={["y"]=616410.57142856,["x"]=-355227.71428572,}, - [12]={["y"]=616441.99999999,["x"]=-355179.14285715,}, - [13]={["y"]=616401.99999999,["x"]=-355147.71428572,}, - [14]={["y"]=616441.42857142,["x"]=-355092.57142858,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Beslan = { - PointsBoundary = { - [1]={["y"]=842082.57142857,["x"]=-148445.14285715,}, - [2]={["y"]=845237.71428572,["x"]=-148639.71428572,}, - [3]={["y"]=845232,["x"]=-148765.42857143,}, - [4]={["y"]=844220.57142857,["x"]=-149168.28571429,}, - [5]={["y"]=843274.85714286,["x"]=-149125.42857143,}, - [6]={["y"]=842077.71428572,["x"]=-148554,}, - [7]={["y"]=842083.42857143,["x"]=-148445.42857143,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=842104.57142857,["x"]=-148460.57142857,}, - [2]={["y"]=845225.71428572,["x"]=-148656,}, - [3]={["y"]=845220.57142858,["x"]=-148750,}, - [4]={["y"]=842098.85714286,["x"]=-148556.28571429,}, - [5]={["y"]=842104,["x"]=-148460.28571429,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Gelendzhik = { - PointsBoundary = { - [1]={["y"]=297856.00000001,["x"]=-51151.428571429,}, - [2]={["y"]=299044.57142858,["x"]=-49720.000000001,}, - [3]={["y"]=298861.71428572,["x"]=-49580.000000001,}, - [4]={["y"]=298198.85714286,["x"]=-49842.857142858,}, - [5]={["y"]=297990.28571429,["x"]=-50151.428571429,}, - [6]={["y"]=297696.00000001,["x"]=-51054.285714286,}, - [7]={["y"]=297850.28571429,["x"]=-51160.000000001,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=297834.00000001,["x"]=-51107.428571429,}, - [2]={["y"]=297786.57142858,["x"]=-51068.857142858,}, - [3]={["y"]=298946.57142858,["x"]=-49686.000000001,}, - [4]={["y"]=298993.14285715,["x"]=-49725.714285715,}, - [5]={["y"]=297835.14285715,["x"]=-51107.714285715,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Gudauta = { - PointsBoundary = { - [1]={["y"]=517246.57142857,["x"]=-197850.28571429,}, - [2]={["y"]=516749.42857142,["x"]=-198070.28571429,}, - [3]={["y"]=515755.14285714,["x"]=-197598.85714286,}, - [4]={["y"]=515369.42857142,["x"]=-196538.85714286,}, - [5]={["y"]=515623.71428571,["x"]=-195618.85714286,}, - [6]={["y"]=515946.57142857,["x"]=-195510.28571429,}, - [7]={["y"]=517243.71428571,["x"]=-197858.85714286,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=517096.57142857,["x"]=-197804.57142857,}, - [2]={["y"]=515880.85714285,["x"]=-195590.28571429,}, - [3]={["y"]=515812.28571428,["x"]=-195628.85714286,}, - [4]={["y"]=517036.57142857,["x"]=-197834.57142857,}, - [5]={["y"]=517097.99999999,["x"]=-197807.42857143,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Kobuleti = { - PointsBoundary = { - [1]={["y"]=634427.71428571,["x"]=-318290.28571429,}, - [2]={["y"]=635033.42857143,["x"]=-317550.2857143,}, - [3]={["y"]=635864.85714286,["x"]=-317333.14285715,}, - [4]={["y"]=636967.71428571,["x"]=-317261.71428572,}, - [5]={["y"]=637144.85714286,["x"]=-317913.14285715,}, - [6]={["y"]=634630.57142857,["x"]=-318687.42857144,}, - [7]={["y"]=634424.85714286,["x"]=-318290.2857143,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=634509.71428571,["x"]=-318339.42857144,}, - [2]={["y"]=636767.42857143,["x"]=-317516.57142858,}, - [3]={["y"]=636790,["x"]=-317575.71428572,}, - [4]={["y"]=634531.42857143,["x"]=-318398.00000001,}, - [5]={["y"]=634510.28571429,["x"]=-318339.71428572,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - KrasnodarCenter = { - PointsBoundary = { - [1]={["y"]=366680.28571429,["x"]=11699.142857142,}, - [2]={["y"]=366654.28571429,["x"]=11225.142857142,}, - [3]={["y"]=367497.14285715,["x"]=11082.285714285,}, - [4]={["y"]=368025.71428572,["x"]=10396.57142857,}, - [5]={["y"]=369854.28571429,["x"]=11367.999999999,}, - [6]={["y"]=369840.00000001,["x"]=11910.857142856,}, - [7]={["y"]=366682.57142858,["x"]=11697.999999999,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=369205.42857144,["x"]=11789.142857142,}, - [2]={["y"]=369209.71428572,["x"]=11714.857142856,}, - [3]={["y"]=366699.71428572,["x"]=11581.714285713,}, - [4]={["y"]=366698.28571429,["x"]=11659.142857142,}, - [5]={["y"]=369208.85714286,["x"]=11788.57142857,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - KrasnodarPashkovsky = { - PointsBoundary = { - [1]={["y"]=386754,["x"]=6476.5714285703,}, - [2]={["y"]=389182.57142858,["x"]=8722.2857142846,}, - [3]={["y"]=388832.57142858,["x"]=9086.5714285703,}, - [4]={["y"]=386961.14285715,["x"]=7707.9999999989,}, - [5]={["y"]=385404,["x"]=9179.4285714274,}, - [6]={["y"]=383239.71428572,["x"]=7386.5714285703,}, - [7]={["y"]=383954,["x"]=6486.5714285703,}, - [8]={["y"]=385775.42857143,["x"]=8097.9999999989,}, - [9]={["y"]=386804,["x"]=7319.4285714274,}, - [10]={["y"]=386375.42857143,["x"]=6797.9999999989,}, - [11]={["y"]=386746.85714286,["x"]=6472.2857142846,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=385891.14285715,["x"]=8416.5714285703,}, - [2]={["y"]=385842.28571429,["x"]=8467.9999999989,}, - [3]={["y"]=384180.85714286,["x"]=6917.1428571417,}, - [4]={["y"]=384228.57142858,["x"]=6867.7142857132,}, - [5]={["y"]=385891.14285715,["x"]=8416.5714285703,}, - }, - [2] = { - [1]={["y"]=386714.85714286,["x"]=6674.857142856,}, - [2]={["y"]=386757.71428572,["x"]=6627.7142857132,}, - [3]={["y"]=389028.57142858,["x"]=8741.4285714275,}, - [4]={["y"]=388981.71428572,["x"]=8790.5714285703,}, - [5]={["y"]=386714.57142858,["x"]=6674.5714285703,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Krymsk = { - PointsBoundary = { - [1]={["y"]=293338.00000001,["x"]=-7575.4285714297,}, - [2]={["y"]=295199.42857144,["x"]=-5434.0000000011,}, - [3]={["y"]=295595.14285715,["x"]=-6239.7142857154,}, - [4]={["y"]=294152.2857143,["x"]=-8325.4285714297,}, - [5]={["y"]=293345.14285715,["x"]=-7596.8571428582,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=293522.00000001,["x"]=-7567.4285714297,}, - [2]={["y"]=293578.57142858,["x"]=-7616.0000000011,}, - [3]={["y"]=295246.00000001,["x"]=-5591.142857144,}, - [4]={["y"]=295187.71428573,["x"]=-5546.0000000011,}, - [5]={["y"]=293523.14285715,["x"]=-7568.2857142868,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Kutaisi = { - PointsBoundary = { - [1]={["y"]=682087.42857143,["x"]=-284512.85714286,}, - [2]={["y"]=685387.42857143,["x"]=-283662.85714286,}, - [3]={["y"]=685294.57142857,["x"]=-284977.14285715,}, - [4]={["y"]=682744.57142857,["x"]=-286505.71428572,}, - [5]={["y"]=682094.57142857,["x"]=-284527.14285715,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=682638,["x"]=-285202.28571429,}, - [2]={["y"]=685050.28571429,["x"]=-284507.42857144,}, - [3]={["y"]=685068.85714286,["x"]=-284578.85714286,}, - [4]={["y"]=682657.42857143,["x"]=-285264.28571429,}, - [5]={["y"]=682638.28571429,["x"]=-285202.85714286,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - MaykopKhanskaya = { - PointsBoundary = { - [1]={["y"]=456876.28571429,["x"]=-27665.42857143,}, - [2]={["y"]=457800,["x"]=-28392.857142858,}, - [3]={["y"]=459368.57142857,["x"]=-26378.571428573,}, - [4]={["y"]=459425.71428572,["x"]=-25242.857142858,}, - [5]={["y"]=458961.42857143,["x"]=-24964.285714287,}, - [6]={["y"]=456878.57142857,["x"]=-27667.714285715,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=457005.42857143,["x"]=-27668.000000001,}, - [2]={["y"]=459028.85714286,["x"]=-25168.857142858,}, - [3]={["y"]=459082.57142857,["x"]=-25216.857142858,}, - [4]={["y"]=457060,["x"]=-27714.285714287,}, - [5]={["y"]=457004.57142857,["x"]=-27669.714285715,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - MineralnyeVody = { - PointsBoundary = { - [1]={["y"]=703857.14285714,["x"]=-50226.000000002,}, - [2]={["y"]=707385.71428571,["x"]=-51911.714285716,}, - [3]={["y"]=707595.71428571,["x"]=-51434.857142859,}, - [4]={["y"]=707900,["x"]=-51568.857142859,}, - [5]={["y"]=707542.85714286,["x"]=-52326.000000002,}, - [6]={["y"]=706628.57142857,["x"]=-52568.857142859,}, - [7]={["y"]=705142.85714286,["x"]=-51790.285714288,}, - [8]={["y"]=703678.57142857,["x"]=-50611.714285716,}, - [9]={["y"]=703857.42857143,["x"]=-50226.857142859,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=703904,["x"]=-50352.571428573,}, - [2]={["y"]=707596.28571429,["x"]=-52094.571428573,}, - [3]={["y"]=707560.57142858,["x"]=-52161.714285716,}, - [4]={["y"]=703871.71428572,["x"]=-50420.571428573,}, - [5]={["y"]=703902,["x"]=-50352.000000002,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Mozdok = { - PointsBoundary = { - [1]={["y"]=832123.42857143,["x"]=-83608.571428573,}, - [2]={["y"]=835916.28571429,["x"]=-83144.285714288,}, - [3]={["y"]=835474.28571429,["x"]=-84170.571428573,}, - [4]={["y"]=832911.42857143,["x"]=-84470.571428573,}, - [5]={["y"]=832487.71428572,["x"]=-85565.714285716,}, - [6]={["y"]=831573.42857143,["x"]=-85351.42857143,}, - [7]={["y"]=832123.71428572,["x"]=-83610.285714288,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=832201.14285715,["x"]=-83699.428571431,}, - [2]={["y"]=832212.57142857,["x"]=-83780.571428574,}, - [3]={["y"]=835730.28571429,["x"]=-83335.714285717,}, - [4]={["y"]=835718.85714286,["x"]=-83246.571428574,}, - [5]={["y"]=832200.57142857,["x"]=-83700.000000002,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Nalchik = { - PointsBoundary = { - [1]={["y"]=759370,["x"]=-125502.85714286,}, - [2]={["y"]=761384.28571429,["x"]=-124177.14285714,}, - [3]={["y"]=761472.85714286,["x"]=-124325.71428572,}, - [4]={["y"]=761092.85714286,["x"]=-125048.57142857,}, - [5]={["y"]=760295.71428572,["x"]=-125685.71428572,}, - [6]={["y"]=759444.28571429,["x"]=-125734.28571429,}, - [7]={["y"]=759375.71428572,["x"]=-125511.42857143,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=759454.28571429,["x"]=-125551.42857143,}, - [2]={["y"]=759492.85714286,["x"]=-125610.85714286,}, - [3]={["y"]=761406.28571429,["x"]=-124304.28571429,}, - [4]={["y"]=761361.14285714,["x"]=-124239.71428572,}, - [5]={["y"]=759456,["x"]=-125552.57142857,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Novorossiysk = { - PointsBoundary = { - [1]={["y"]=278677.71428573,["x"]=-41656.571428572,}, - [2]={["y"]=278446.2857143,["x"]=-41453.714285715,}, - [3]={["y"]=278989.14285716,["x"]=-40188.000000001,}, - [4]={["y"]=279717.71428573,["x"]=-39968.000000001,}, - [5]={["y"]=280020.57142859,["x"]=-40208.000000001,}, - [6]={["y"]=278674.85714287,["x"]=-41660.857142858,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=278673.14285716,["x"]=-41615.142857144,}, - [2]={["y"]=278625.42857144,["x"]=-41570.571428572,}, - [3]={["y"]=279835.42857144,["x"]=-40226.000000001,}, - [4]={["y"]=279882.2857143,["x"]=-40270.000000001,}, - [5]={["y"]=278672.00000001,["x"]=-41614.857142858,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - SenakiKolkhi = { - PointsBoundary = { - [1]={["y"]=646036.57142857,["x"]=-281778.85714286,}, - [2]={["y"]=646045.14285714,["x"]=-281191.71428571,}, - [3]={["y"]=647032.28571429,["x"]=-280598.85714285,}, - [4]={["y"]=647669.42857143,["x"]=-281273.14285714,}, - [5]={["y"]=648323.71428571,["x"]=-281370.28571428,}, - [6]={["y"]=648520.85714286,["x"]=-281978.85714285,}, - [7]={["y"]=646039.42857143,["x"]=-281783.14285714,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=646060.85714285,["x"]=-281736,}, - [2]={["y"]=646056.57142857,["x"]=-281631.71428571,}, - [3]={["y"]=648442.28571428,["x"]=-281840.28571428,}, - [4]={["y"]=648432.28571428,["x"]=-281918.85714286,}, - [5]={["y"]=646063.71428571,["x"]=-281738.85714286,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - SochiAdler = { - PointsBoundary = { - [1]={["y"]=460642.28571428,["x"]=-164861.71428571,}, - [2]={["y"]=462820.85714285,["x"]=-163368.85714286,}, - [3]={["y"]=463649.42857142,["x"]=-163340.28571429,}, - [4]={["y"]=463835.14285714,["x"]=-164040.28571429,}, - [5]={["y"]=462535.14285714,["x"]=-165654.57142857,}, - [6]={["y"]=460678,["x"]=-165247.42857143,}, - [7]={["y"]=460635.14285714,["x"]=-164876,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=460831.42857143,["x"]=-165180,}, - [2]={["y"]=460878.57142857,["x"]=-165257.14285714,}, - [3]={["y"]=463663.71428571,["x"]=-163793.14285714,}, - [4]={["y"]=463612.28571428,["x"]=-163697.42857143,}, - [5]={["y"]=460831.42857143,["x"]=-165177.14285714,}, - }, - [2] = { - [1]={["y"]=460831.42857143,["x"]=-165180,}, - [2]={["y"]=460878.57142857,["x"]=-165257.14285714,}, - [3]={["y"]=463663.71428571,["x"]=-163793.14285714,}, - [4]={["y"]=463612.28571428,["x"]=-163697.42857143,}, - [5]={["y"]=460831.42857143,["x"]=-165177.14285714,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Soganlug = { - PointsBoundary = { - [1]={["y"]=894530.85714286,["x"]=-316928.28571428,}, - [2]={["y"]=896422.28571428,["x"]=-318622.57142857,}, - [3]={["y"]=896090.85714286,["x"]=-318934,}, - [4]={["y"]=894019.42857143,["x"]=-317119.71428571,}, - [5]={["y"]=894533.71428571,["x"]=-316925.42857143,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=894525.71428571,["x"]=-316964,}, - [2]={["y"]=896363.14285714,["x"]=-318634.28571428,}, - [3]={["y"]=896299.14285714,["x"]=-318702.85714286,}, - [4]={["y"]=894464,["x"]=-317031.71428571,}, - [5]={["y"]=894524.57142857,["x"]=-316963.71428571,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - SukhumiBabushara = { - PointsBoundary = { - [1]={["y"]=562541.14285714,["x"]=-219852.28571429,}, - [2]={["y"]=562691.14285714,["x"]=-219395.14285714,}, - [3]={["y"]=564326.85714286,["x"]=-219523.71428571,}, - [4]={["y"]=566262.57142857,["x"]=-221166.57142857,}, - [5]={["y"]=566069.71428571,["x"]=-221580.85714286,}, - [6]={["y"]=562534,["x"]=-219873.71428571,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=562684,["x"]=-219779.71428571,}, - [2]={["y"]=562717.71428571,["x"]=-219718,}, - [3]={["y"]=566046.85714286,["x"]=-221376.57142857,}, - [4]={["y"]=566012.28571428,["x"]=-221446.57142857,}, - [5]={["y"]=562684.57142857,["x"]=-219782.57142857,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - TbilisiLochini = { - PointsBoundary = { - [1]={["y"]=895172.85714286,["x"]=-314667.42857143,}, - [2]={["y"]=895337.42857143,["x"]=-314143.14285714,}, - [3]={["y"]=895990.28571429,["x"]=-314036,}, - [4]={["y"]=897730.28571429,["x"]=-315284.57142857,}, - [5]={["y"]=897901.71428571,["x"]=-316284.57142857,}, - [6]={["y"]=897684.57142857,["x"]=-316618.85714286,}, - [7]={["y"]=895173.14285714,["x"]=-314667.42857143,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=895261.14285715,["x"]=-314652.28571428,}, - [2]={["y"]=897654.57142857,["x"]=-316523.14285714,}, - [3]={["y"]=897711.71428571,["x"]=-316450.28571429,}, - [4]={["y"]=895327.42857143,["x"]=-314568.85714286,}, - [5]={["y"]=895261.71428572,["x"]=-314656,}, - }, - [2] = { - [1]={["y"]=895605.71428572,["x"]=-314724.57142857,}, - [2]={["y"]=897639.71428572,["x"]=-316148,}, - [3]={["y"]=897683.42857143,["x"]=-316087.14285714,}, - [4]={["y"]=895650,["x"]=-314660,}, - [5]={["y"]=895606,["x"]=-314724.85714286,} - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Vaziani = { - PointsBoundary = { - [1]={["y"]=902122,["x"]=-318163.71428572,}, - [2]={["y"]=902678.57142857,["x"]=-317594,}, - [3]={["y"]=903275.71428571,["x"]=-317405.42857143,}, - [4]={["y"]=903418.57142857,["x"]=-317891.14285714,}, - [5]={["y"]=904292.85714286,["x"]=-318748.28571429,}, - [6]={["y"]=904542,["x"]=-319740.85714286,}, - [7]={["y"]=904042,["x"]=-320166.57142857,}, - [8]={["y"]=902121.42857143,["x"]=-318164.85714286,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=902239.14285714,["x"]=-318190.85714286,}, - [2]={["y"]=904014.28571428,["x"]=-319994.57142857,}, - [3]={["y"]=904064.85714285,["x"]=-319945.14285715,}, - [4]={["y"]=902294.57142857,["x"]=-318146,}, - [5]={["y"]=902247.71428571,["x"]=-318190.85714286,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - }, -} - ---- Creates a new AIRBASEPOLICE_CAUCASUS object. --- @param #AIRBASEPOLICE_CAUCASUS self --- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. --- @return #AIRBASEPOLICE_CAUCASUS self -function AIRBASEPOLICE_CAUCASUS:New( SetClient ) - - -- Inherits from BASE - local self = BASE:Inherit( self, AIRBASEPOLICE_BASE:New( SetClient, self.Airbases ) ) - - -- -- AnapaVityazevo - -- local AnapaVityazevoBoundary = GROUP:FindByName( "AnapaVityazevo Boundary" ) - -- self.Airbases.AnapaVityazevo.ZoneBoundary = ZONE_POLYGON:New( "AnapaVityazevo Boundary", AnapaVityazevoBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local AnapaVityazevoRunway1 = GROUP:FindByName( "AnapaVityazevo Runway 1" ) - -- self.Airbases.AnapaVityazevo.ZoneRunways[1] = ZONE_POLYGON:New( "AnapaVityazevo Runway 1", AnapaVityazevoRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Batumi - -- local BatumiBoundary = GROUP:FindByName( "Batumi Boundary" ) - -- self.Airbases.Batumi.ZoneBoundary = ZONE_POLYGON:New( "Batumi Boundary", BatumiBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local BatumiRunway1 = GROUP:FindByName( "Batumi Runway 1" ) - -- self.Airbases.Batumi.ZoneRunways[1] = ZONE_POLYGON:New( "Batumi Runway 1", BatumiRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Beslan - -- local BeslanBoundary = GROUP:FindByName( "Beslan Boundary" ) - -- self.Airbases.Beslan.ZoneBoundary = ZONE_POLYGON:New( "Beslan Boundary", BeslanBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local BeslanRunway1 = GROUP:FindByName( "Beslan Runway 1" ) - -- self.Airbases.Beslan.ZoneRunways[1] = ZONE_POLYGON:New( "Beslan Runway 1", BeslanRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Gelendzhik - -- local GelendzhikBoundary = GROUP:FindByName( "Gelendzhik Boundary" ) - -- self.Airbases.Gelendzhik.ZoneBoundary = ZONE_POLYGON:New( "Gelendzhik Boundary", GelendzhikBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local GelendzhikRunway1 = GROUP:FindByName( "Gelendzhik Runway 1" ) - -- self.Airbases.Gelendzhik.ZoneRunways[1] = ZONE_POLYGON:New( "Gelendzhik Runway 1", GelendzhikRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Gudauta - -- local GudautaBoundary = GROUP:FindByName( "Gudauta Boundary" ) - -- self.Airbases.Gudauta.ZoneBoundary = ZONE_POLYGON:New( "Gudauta Boundary", GudautaBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local GudautaRunway1 = GROUP:FindByName( "Gudauta Runway 1" ) - -- self.Airbases.Gudauta.ZoneRunways[1] = ZONE_POLYGON:New( "Gudauta Runway 1", GudautaRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Kobuleti - -- local KobuletiBoundary = GROUP:FindByName( "Kobuleti Boundary" ) - -- self.Airbases.Kobuleti.ZoneBoundary = ZONE_POLYGON:New( "Kobuleti Boundary", KobuletiBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local KobuletiRunway1 = GROUP:FindByName( "Kobuleti Runway 1" ) - -- self.Airbases.Kobuleti.ZoneRunways[1] = ZONE_POLYGON:New( "Kobuleti Runway 1", KobuletiRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- KrasnodarCenter - -- local KrasnodarCenterBoundary = GROUP:FindByName( "KrasnodarCenter Boundary" ) - -- self.Airbases.KrasnodarCenter.ZoneBoundary = ZONE_POLYGON:New( "KrasnodarCenter Boundary", KrasnodarCenterBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local KrasnodarCenterRunway1 = GROUP:FindByName( "KrasnodarCenter Runway 1" ) - -- self.Airbases.KrasnodarCenter.ZoneRunways[1] = ZONE_POLYGON:New( "KrasnodarCenter Runway 1", KrasnodarCenterRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- KrasnodarPashkovsky - -- local KrasnodarPashkovskyBoundary = GROUP:FindByName( "KrasnodarPashkovsky Boundary" ) - -- self.Airbases.KrasnodarPashkovsky.ZoneBoundary = ZONE_POLYGON:New( "KrasnodarPashkovsky Boundary", KrasnodarPashkovskyBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local KrasnodarPashkovskyRunway1 = GROUP:FindByName( "KrasnodarPashkovsky Runway 1" ) - -- self.Airbases.KrasnodarPashkovsky.ZoneRunways[1] = ZONE_POLYGON:New( "KrasnodarPashkovsky Runway 1", KrasnodarPashkovskyRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- local KrasnodarPashkovskyRunway2 = GROUP:FindByName( "KrasnodarPashkovsky Runway 2" ) - -- self.Airbases.KrasnodarPashkovsky.ZoneRunways[2] = ZONE_POLYGON:New( "KrasnodarPashkovsky Runway 2", KrasnodarPashkovskyRunway2 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Krymsk - -- local KrymskBoundary = GROUP:FindByName( "Krymsk Boundary" ) - -- self.Airbases.Krymsk.ZoneBoundary = ZONE_POLYGON:New( "Krymsk Boundary", KrymskBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local KrymskRunway1 = GROUP:FindByName( "Krymsk Runway 1" ) - -- self.Airbases.Krymsk.ZoneRunways[1] = ZONE_POLYGON:New( "Krymsk Runway 1", KrymskRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Kutaisi - -- local KutaisiBoundary = GROUP:FindByName( "Kutaisi Boundary" ) - -- self.Airbases.Kutaisi.ZoneBoundary = ZONE_POLYGON:New( "Kutaisi Boundary", KutaisiBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local KutaisiRunway1 = GROUP:FindByName( "Kutaisi Runway 1" ) - -- self.Airbases.Kutaisi.ZoneRunways[1] = ZONE_POLYGON:New( "Kutaisi Runway 1", KutaisiRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- MaykopKhanskaya - -- local MaykopKhanskayaBoundary = GROUP:FindByName( "MaykopKhanskaya Boundary" ) - -- self.Airbases.MaykopKhanskaya.ZoneBoundary = ZONE_POLYGON:New( "MaykopKhanskaya Boundary", MaykopKhanskayaBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local MaykopKhanskayaRunway1 = GROUP:FindByName( "MaykopKhanskaya Runway 1" ) - -- self.Airbases.MaykopKhanskaya.ZoneRunways[1] = ZONE_POLYGON:New( "MaykopKhanskaya Runway 1", MaykopKhanskayaRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- MineralnyeVody - -- local MineralnyeVodyBoundary = GROUP:FindByName( "MineralnyeVody Boundary" ) - -- self.Airbases.MineralnyeVody.ZoneBoundary = ZONE_POLYGON:New( "MineralnyeVody Boundary", MineralnyeVodyBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local MineralnyeVodyRunway1 = GROUP:FindByName( "MineralnyeVody Runway 1" ) - -- self.Airbases.MineralnyeVody.ZoneRunways[1] = ZONE_POLYGON:New( "MineralnyeVody Runway 1", MineralnyeVodyRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Mozdok - -- local MozdokBoundary = GROUP:FindByName( "Mozdok Boundary" ) - -- self.Airbases.Mozdok.ZoneBoundary = ZONE_POLYGON:New( "Mozdok Boundary", MozdokBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local MozdokRunway1 = GROUP:FindByName( "Mozdok Runway 1" ) - -- self.Airbases.Mozdok.ZoneRunways[1] = ZONE_POLYGON:New( "Mozdok Runway 1", MozdokRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Nalchik - -- local NalchikBoundary = GROUP:FindByName( "Nalchik Boundary" ) - -- self.Airbases.Nalchik.ZoneBoundary = ZONE_POLYGON:New( "Nalchik Boundary", NalchikBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local NalchikRunway1 = GROUP:FindByName( "Nalchik Runway 1" ) - -- self.Airbases.Nalchik.ZoneRunways[1] = ZONE_POLYGON:New( "Nalchik Runway 1", NalchikRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Novorossiysk - -- local NovorossiyskBoundary = GROUP:FindByName( "Novorossiysk Boundary" ) - -- self.Airbases.Novorossiysk.ZoneBoundary = ZONE_POLYGON:New( "Novorossiysk Boundary", NovorossiyskBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local NovorossiyskRunway1 = GROUP:FindByName( "Novorossiysk Runway 1" ) - -- self.Airbases.Novorossiysk.ZoneRunways[1] = ZONE_POLYGON:New( "Novorossiysk Runway 1", NovorossiyskRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- SenakiKolkhi - -- local SenakiKolkhiBoundary = GROUP:FindByName( "SenakiKolkhi Boundary" ) - -- self.Airbases.SenakiKolkhi.ZoneBoundary = ZONE_POLYGON:New( "SenakiKolkhi Boundary", SenakiKolkhiBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local SenakiKolkhiRunway1 = GROUP:FindByName( "SenakiKolkhi Runway 1" ) - -- self.Airbases.SenakiKolkhi.ZoneRunways[1] = ZONE_POLYGON:New( "SenakiKolkhi Runway 1", SenakiKolkhiRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- SochiAdler - -- local SochiAdlerBoundary = GROUP:FindByName( "SochiAdler Boundary" ) - -- self.Airbases.SochiAdler.ZoneBoundary = ZONE_POLYGON:New( "SochiAdler Boundary", SochiAdlerBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local SochiAdlerRunway1 = GROUP:FindByName( "SochiAdler Runway 1" ) - -- self.Airbases.SochiAdler.ZoneRunways[1] = ZONE_POLYGON:New( "SochiAdler Runway 1", SochiAdlerRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- local SochiAdlerRunway2 = GROUP:FindByName( "SochiAdler Runway 2" ) - -- self.Airbases.SochiAdler.ZoneRunways[2] = ZONE_POLYGON:New( "SochiAdler Runway 2", SochiAdlerRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Soganlug - -- local SoganlugBoundary = GROUP:FindByName( "Soganlug Boundary" ) - -- self.Airbases.Soganlug.ZoneBoundary = ZONE_POLYGON:New( "Soganlug Boundary", SoganlugBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local SoganlugRunway1 = GROUP:FindByName( "Soganlug Runway 1" ) - -- self.Airbases.Soganlug.ZoneRunways[1] = ZONE_POLYGON:New( "Soganlug Runway 1", SoganlugRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- SukhumiBabushara - -- local SukhumiBabusharaBoundary = GROUP:FindByName( "SukhumiBabushara Boundary" ) - -- self.Airbases.SukhumiBabushara.ZoneBoundary = ZONE_POLYGON:New( "SukhumiBabushara Boundary", SukhumiBabusharaBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local SukhumiBabusharaRunway1 = GROUP:FindByName( "SukhumiBabushara Runway 1" ) - -- self.Airbases.SukhumiBabushara.ZoneRunways[1] = ZONE_POLYGON:New( "SukhumiBabushara Runway 1", SukhumiBabusharaRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- TbilisiLochini - -- local TbilisiLochiniBoundary = GROUP:FindByName( "TbilisiLochini Boundary" ) - -- self.Airbases.TbilisiLochini.ZoneBoundary = ZONE_POLYGON:New( "TbilisiLochini Boundary", TbilisiLochiniBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local TbilisiLochiniRunway1 = GROUP:FindByName( "TbilisiLochini Runway 1" ) - -- self.Airbases.TbilisiLochini.ZoneRunways[1] = ZONE_POLYGON:New( "TbilisiLochini Runway 1", TbilisiLochiniRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- local TbilisiLochiniRunway2 = GROUP:FindByName( "TbilisiLochini Runway 2" ) - -- self.Airbases.TbilisiLochini.ZoneRunways[2] = ZONE_POLYGON:New( "TbilisiLochini Runway 2", TbilisiLochiniRunway2 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - -- -- Vaziani - -- local VazianiBoundary = GROUP:FindByName( "Vaziani Boundary" ) - -- self.Airbases.Vaziani.ZoneBoundary = ZONE_POLYGON:New( "Vaziani Boundary", VazianiBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local VazianiRunway1 = GROUP:FindByName( "Vaziani Runway 1" ) - -- self.Airbases.Vaziani.ZoneRunways[1] = ZONE_POLYGON:New( "Vaziani Runway 1", VazianiRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - -- - -- - -- - - - -- Template - -- local TemplateBoundary = GROUP:FindByName( "Template Boundary" ) - -- self.Airbases.Template.ZoneBoundary = ZONE_POLYGON:New( "Template Boundary", TemplateBoundary ):SmokeZone(SMOKECOLOR.White):Flush() - -- - -- local TemplateRunway1 = GROUP:FindByName( "Template Runway 1" ) - -- self.Airbases.Template.ZoneRunways[1] = ZONE_POLYGON:New( "Template Runway 1", TemplateRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() - - return self - -end - - - - ---- @type AIRBASEPOLICE_NEVADA --- @extends Functional.AirbasePolice#AIRBASEPOLICE_BASE -AIRBASEPOLICE_NEVADA = { - ClassName = "AIRBASEPOLICE_NEVADA", - Airbases = { - Nellis = { - PointsBoundary = { - [1]={["y"]=-17814.714285714,["x"]=-399823.14285714,}, - [2]={["y"]=-16875.857142857,["x"]=-398763.14285714,}, - [3]={["y"]=-16251.571428571,["x"]=-398988.85714286,}, - [4]={["y"]=-16163,["x"]=-398693.14285714,}, - [5]={["y"]=-16328.714285714,["x"]=-398034.57142857,}, - [6]={["y"]=-15943,["x"]=-397571.71428571,}, - [7]={["y"]=-15711.571428571,["x"]=-397551.71428571,}, - [8]={["y"]=-15748.714285714,["x"]=-396806,}, - [9]={["y"]=-16288.714285714,["x"]=-396517.42857143,}, - [10]={["y"]=-16751.571428571,["x"]=-396308.85714286,}, - [11]={["y"]=-17263,["x"]=-396234.57142857,}, - [12]={["y"]=-17577.285714286,["x"]=-396640.28571429,}, - [13]={["y"]=-17614.428571429,["x"]=-397400.28571429,}, - [14]={["y"]=-19405.857142857,["x"]=-399428.85714286,}, - [15]={["y"]=-19234.428571429,["x"]=-399683.14285714,}, - [16]={["y"]=-18708.714285714,["x"]=-399408.85714286,}, - [17]={["y"]=-18397.285714286,["x"]=-399657.42857143,}, - [18]={["y"]=-17814.428571429,["x"]=-399823.42857143,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=-18687,["x"]=-399380.28571429,}, - [2]={["y"]=-18620.714285714,["x"]=-399436.85714286,}, - [3]={["y"]=-16217.857142857,["x"]=-396596.85714286,}, - [4]={["y"]=-16300.142857143,["x"]=-396530,}, - [5]={["y"]=-18687,["x"]=-399380.85714286,}, - }, - [2] = { - [1]={["y"]=-18451.571428572,["x"]=-399580.57142857,}, - [2]={["y"]=-18392.142857143,["x"]=-399628.57142857,}, - [3]={["y"]=-16011,["x"]=-396806.85714286,}, - [4]={["y"]=-16074.714285714,["x"]=-396751.71428572,}, - [5]={["y"]=-18451.571428572,["x"]=-399580.85714285,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - McCarran = { - PointsBoundary = { - [1]={["y"]=-29455.285714286,["x"]=-416277.42857142,}, - [2]={["y"]=-28860.142857143,["x"]=-416492,}, - [3]={["y"]=-25044.428571429,["x"]=-416344.85714285,}, - [4]={["y"]=-24580.142857143,["x"]=-415959.14285714,}, - [5]={["y"]=-25073,["x"]=-415630.57142857,}, - [6]={["y"]=-25087.285714286,["x"]=-415130.57142857,}, - [7]={["y"]=-25830.142857143,["x"]=-414866.28571428,}, - [8]={["y"]=-26658.714285715,["x"]=-414880.57142857,}, - [9]={["y"]=-26973,["x"]=-415273.42857142,}, - [10]={["y"]=-27380.142857143,["x"]=-415187.71428571,}, - [11]={["y"]=-27715.857142857,["x"]=-414144.85714285,}, - [12]={["y"]=-27551.571428572,["x"]=-413473.42857142,}, - [13]={["y"]=-28630.142857143,["x"]=-413201.99999999,}, - [14]={["y"]=-29494.428571429,["x"]=-415437.71428571,}, - [15]={["y"]=-29455.571428572,["x"]=-416277.71428571,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=-29408.428571429,["x"]=-416016.28571428,}, - [2]={["y"]=-29408.142857144,["x"]=-416105.42857142,}, - [3]={["y"]=-24680.714285715,["x"]=-416003.14285713,}, - [4]={["y"]=-24681.857142858,["x"]=-415926.57142856,}, - [5]={["y"]=-29408.42857143,["x"]=-416016.57142856,}, - }, - [2] = { - [1]={["y"]=-28575.571428572,["x"]=-416303.14285713,}, - [2]={["y"]=-28575.571428572,["x"]=-416382.57142856,}, - [3]={["y"]=-25111.000000001,["x"]=-416309.7142857,}, - [4]={["y"]=-25111.000000001,["x"]=-416249.14285713,}, - [5]={["y"]=-28575.571428572,["x"]=-416303.7142857,}, - }, - [3] = { - [1]={["y"]=-29331.000000001,["x"]=-416275.42857141,}, - [2]={["y"]=-29259.000000001,["x"]=-416306.85714284,}, - [3]={["y"]=-28005.571428572,["x"]=-413449.7142857,}, - [4]={["y"]=-28068.714285715,["x"]=-413422.85714284,}, - [5]={["y"]=-29331.000000001,["x"]=-416275.7142857,}, - }, - [4] = { - [1]={["y"]=-29073.285714286,["x"]=-416386.57142856,}, - [2]={["y"]=-28997.285714286,["x"]=-416417.42857141,}, - [3]={["y"]=-27697.571428572,["x"]=-413464.57142856,}, - [4]={["y"]=-27767.857142858,["x"]=-413434.28571427,}, - [5]={["y"]=-29073.000000001,["x"]=-416386.85714284,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - Creech = { - PointsBoundary = { - [1]={["y"]=-74522.714285715,["x"]=-360887.99999998,}, - [2]={["y"]=-74197,["x"]=-360556.57142855,}, - [3]={["y"]=-74402.714285715,["x"]=-359639.42857141,}, - [4]={["y"]=-74637,["x"]=-359279.42857141,}, - [5]={["y"]=-75759.857142857,["x"]=-359005.14285712,}, - [6]={["y"]=-75834.142857143,["x"]=-359045.14285712,}, - [7]={["y"]=-75902.714285714,["x"]=-359782.28571427,}, - [8]={["y"]=-76099.857142857,["x"]=-360399.42857141,}, - [9]={["y"]=-77314.142857143,["x"]=-360219.42857141,}, - [10]={["y"]=-77728.428571429,["x"]=-360445.14285713,}, - [11]={["y"]=-77585.571428571,["x"]=-360585.14285713,}, - [12]={["y"]=-76471.285714286,["x"]=-360819.42857141,}, - [13]={["y"]=-76325.571428571,["x"]=-360942.28571427,}, - [14]={["y"]=-74671.857142857,["x"]=-360927.7142857,}, - [15]={["y"]=-74522.714285714,["x"]=-360888.85714284,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=-74237.571428571,["x"]=-360591.7142857,}, - [2]={["y"]=-74234.428571429,["x"]=-360493.71428571,}, - [3]={["y"]=-77605.285714286,["x"]=-360399.14285713,}, - [4]={["y"]=-77608.714285715,["x"]=-360498.85714285,}, - [5]={["y"]=-74237.857142857,["x"]=-360591.7142857,}, - }, - [2] = { - [1]={["y"]=-75807.571428572,["x"]=-359073.42857142,}, - [2]={["y"]=-74770.142857144,["x"]=-360581.71428571,}, - [3]={["y"]=-74641.285714287,["x"]=-360585.42857142,}, - [4]={["y"]=-75734.142857144,["x"]=-359023.14285714,}, - [5]={["y"]=-75807.285714287,["x"]=-359073.42857142,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - GroomLake = { - PointsBoundary = { - [1]={["y"]=-88916.714285714,["x"]=-289102.28571425,}, - [2]={["y"]=-87023.571428572,["x"]=-290388.57142857,}, - [3]={["y"]=-85916.428571429,["x"]=-290674.28571428,}, - [4]={["y"]=-87645.000000001,["x"]=-286567.14285714,}, - [5]={["y"]=-88380.714285715,["x"]=-286388.57142857,}, - [6]={["y"]=-89670.714285715,["x"]=-283524.28571428,}, - [7]={["y"]=-89797.857142858,["x"]=-283567.14285714,}, - [8]={["y"]=-88635.000000001,["x"]=-286749.99999999,}, - [9]={["y"]=-89177.857142858,["x"]=-287207.14285714,}, - [10]={["y"]=-89092.142857144,["x"]=-288892.85714285,}, - [11]={["y"]=-88917.000000001,["x"]=-289102.85714285,}, - }, - PointsRunways = { - [1] = { - [1]={["y"]=-86039.000000001,["x"]=-290606.28571428,}, - [2]={["y"]=-85965.285714287,["x"]=-290573.99999999,}, - [3]={["y"]=-87692.714285715,["x"]=-286634.85714285,}, - [4]={["y"]=-87756.714285715,["x"]=-286663.99999999,}, - [5]={["y"]=-86038.714285715,["x"]=-290606.85714285,}, - }, - [2] = { - [1]={["y"]=-86808.428571429,["x"]=-290375.7142857,}, - [2]={["y"]=-86732.714285715,["x"]=-290344.28571427,}, - [3]={["y"]=-89672.714285714,["x"]=-283546.57142855,}, - [4]={["y"]=-89772.142857143,["x"]=-283587.71428569,}, - [5]={["y"]=-86808.142857143,["x"]=-290375.7142857,}, - }, - }, - ZoneBoundary = {}, - ZoneRunways = {}, - MaximumSpeed = 50, - }, - }, -} - ---- Creates a new AIRBASEPOLICE_NEVADA object. --- @param #AIRBASEPOLICE_NEVADA self --- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. --- @return #AIRBASEPOLICE_NEVADA self -function AIRBASEPOLICE_NEVADA:New( SetClient ) - - -- Inherits from BASE - local self = BASE:Inherit( self, AIRBASEPOLICE_BASE:New( SetClient, self.Airbases ) ) - --- -- Nellis --- local NellisBoundary = GROUP:FindByName( "Nellis Boundary" ) --- self.Airbases.Nellis.ZoneBoundary = ZONE_POLYGON:New( "Nellis Boundary", NellisBoundary ):SmokeZone(SMOKECOLOR.White):Flush() --- --- local NellisRunway1 = GROUP:FindByName( "Nellis Runway 1" ) --- self.Airbases.Nellis.ZoneRunways[1] = ZONE_POLYGON:New( "Nellis Runway 1", NellisRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- local NellisRunway2 = GROUP:FindByName( "Nellis Runway 2" ) --- self.Airbases.Nellis.ZoneRunways[2] = ZONE_POLYGON:New( "Nellis Runway 2", NellisRunway2 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- -- McCarran --- local McCarranBoundary = GROUP:FindByName( "McCarran Boundary" ) --- self.Airbases.McCarran.ZoneBoundary = ZONE_POLYGON:New( "McCarran Boundary", McCarranBoundary ):SmokeZone(SMOKECOLOR.White):Flush() --- --- local McCarranRunway1 = GROUP:FindByName( "McCarran Runway 1" ) --- self.Airbases.McCarran.ZoneRunways[1] = ZONE_POLYGON:New( "McCarran Runway 1", McCarranRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- local McCarranRunway2 = GROUP:FindByName( "McCarran Runway 2" ) --- self.Airbases.McCarran.ZoneRunways[2] = ZONE_POLYGON:New( "McCarran Runway 2", McCarranRunway2 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- local McCarranRunway3 = GROUP:FindByName( "McCarran Runway 3" ) --- self.Airbases.McCarran.ZoneRunways[3] = ZONE_POLYGON:New( "McCarran Runway 3", McCarranRunway3 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- local McCarranRunway4 = GROUP:FindByName( "McCarran Runway 4" ) --- self.Airbases.McCarran.ZoneRunways[4] = ZONE_POLYGON:New( "McCarran Runway 4", McCarranRunway4 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- -- Creech --- local CreechBoundary = GROUP:FindByName( "Creech Boundary" ) --- self.Airbases.Creech.ZoneBoundary = ZONE_POLYGON:New( "Creech Boundary", CreechBoundary ):SmokeZone(SMOKECOLOR.White):Flush() --- --- local CreechRunway1 = GROUP:FindByName( "Creech Runway 1" ) --- self.Airbases.Creech.ZoneRunways[1] = ZONE_POLYGON:New( "Creech Runway 1", CreechRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- local CreechRunway2 = GROUP:FindByName( "Creech Runway 2" ) --- self.Airbases.Creech.ZoneRunways[2] = ZONE_POLYGON:New( "Creech Runway 2", CreechRunway2 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- -- Groom Lake --- local GroomLakeBoundary = GROUP:FindByName( "GroomLake Boundary" ) --- self.Airbases.GroomLake.ZoneBoundary = ZONE_POLYGON:New( "GroomLake Boundary", GroomLakeBoundary ):SmokeZone(SMOKECOLOR.White):Flush() --- --- local GroomLakeRunway1 = GROUP:FindByName( "GroomLake Runway 1" ) --- self.Airbases.GroomLake.ZoneRunways[1] = ZONE_POLYGON:New( "GroomLake Runway 1", GroomLakeRunway1 ):SmokeZone(SMOKECOLOR.Red):Flush() --- --- local GroomLakeRunway2 = GROUP:FindByName( "GroomLake Runway 2" ) --- self.Airbases.GroomLake.ZoneRunways[2] = ZONE_POLYGON:New( "GroomLake Runway 2", GroomLakeRunway2 ):SmokeZone(SMOKECOLOR.Red):Flush() - -end - - - - - - --- **Functional** - DETECTION_ classes model the detection of enemy units by FACs or RECCEs and group them according various methods. --- --- ![Banner Image](..\Presentations\DETECTION\Dia1.JPG) --- --- === --- --- DETECTION classes facilitate the detection of enemy units within the battle zone executed by FACs (Forward Air Controllers) or RECCEs (Reconnassance Units). --- DETECTION uses the in-built detection capabilities of DCS World, but adds new functionalities. --- --- Please watch this [youtube video](https://youtu.be/C7p81dUwP-E) that explains the detection concepts. --- --- --- ### Contributions: --- --- * Mechanist : Early concept of DETECTION_AREAS. --- --- ### Authors: --- --- * FlightControl : Analysis, Design, Programming, Testing --- --- @module Detection - - -do -- DETECTION_BASE - - --- # 1) DETECTION_BASE class, extends @{Fsm#FSM} - -- - -- The DETECTION_BASE class defines the core functions to administer detected objects. - -- The DETECTION_BASE class will detect objects within the battle zone for a list of @{Group}s detecting targets following (a) detection method(s). - -- - -- ## 1.1) DETECTION_BASE constructor - -- - -- Construct a new DETECTION_BASE instance using the @{#DETECTION_BASE.New}() method. - -- - -- ## 1.2) DETECTION_BASE initialization - -- - -- By default, detection will return detected objects with all the detection sensors available. - -- However, you can ask how the objects were found with specific detection methods. - -- If you use one of the below methods, the detection will work with the detection method specified. - -- You can specify to apply multiple detection methods. - -- - -- Use the following functions to report the objects it detected using the methods Visual, Optical, Radar, IRST, RWR, DLINK: - -- - -- * @{#DETECTION_BASE.InitDetectVisual}(): Detected using Visual. - -- * @{#DETECTION_BASE.InitDetectOptical}(): Detected using Optical. - -- * @{#DETECTION_BASE.InitDetectRadar}(): Detected using Radar. - -- * @{#DETECTION_BASE.InitDetectIRST}(): Detected using IRST. - -- * @{#DETECTION_BASE.InitDetectRWR}(): Detected using RWR. - -- * @{#DETECTION_BASE.InitDetectDLINK}(): Detected using DLINK. - -- - -- ## 1.3) DETECTION_BASE derived classes group the detected units into a DetectedItems[] list - -- - -- DETECTION_BASE derived classes build a list called DetectedItems[], which is essentially a first later - -- of grouping of detected units. Each DetectedItem within the DetectedItems[] list contains - -- a SET_UNIT object that contains the detected units that belong to that group. - -- - -- Derived classes will apply different methods to group the detected units. - -- Examples are per area, per quadrant, per distance, per type. - -- See further the derived DETECTION classes on which grouping methods are currently supported. - -- - -- Various methods exist how to retrieve the grouped items from a DETECTION_BASE derived class: - -- - -- * The method @{Detection#DETECTION_BASE.GetDetectedItems}() retrieves the DetectedItems[] list. - -- * A DetectedItem from the DetectedItems[] list can be retrieved using the method @{Detection#DETECTION_BASE.GetDetectedItem}( DetectedItemIndex ). - -- Note that this method returns a DetectedItem element from the list, that contains a Set variable and further information - -- about the DetectedItem that is set by the DETECTION_BASE derived classes, used to group the DetectedItem. - -- * A DetectedSet from the DetectedItems[] list can be retrieved using the method @{Detection#DETECTION_BASE.GetDetectedSet}( DetectedItemIndex ). - -- This method retrieves the Set from a DetectedItem element from the DetectedItem list (DetectedItems[ DetectedItemIndex ].Set ). - -- - -- ## 1.4) Apply additional Filters to fine-tune the detected objects - -- - -- By default, DCS World will return any object that is in LOS and within "visual reach", or detectable through one of the electronic detection means. - -- That being said, the DCS World detection algorithm can sometimes be unrealistic. - -- Especially for a visual detection, DCS World is able to report within 1 second a detailed detection of a group of 20 units (including types of the units) that are 10 kilometers away, using only visual capabilities. - -- Additionally, trees and other obstacles are not accounted during the DCS World detection. - -- - -- Therefore, an additional (optional) filtering has been built into the DETECTION_BASE class, that can be set for visual detected units. - -- For electronic detection, this filtering is not applied, only for visually detected targets. - -- - -- The following additional filtering can be applied for visual filtering: - -- - -- * A probability factor per kilometer distance. - -- * A probability factor based on the alpha angle between the detected object and the unit detecting. - -- A detection from a higher altitude allows for better detection than when on the ground. - -- * Define a probability factor for "cloudy zones", which are zones where forests or villages are located. In these zones, detection will be much more difficult. - -- The mission designer needs to define these cloudy zones within the mission, and needs to register these zones in the DETECTION_ objects additing a probability factor per zone. - -- - -- I advise however, that, when you first use the DETECTION derived classes, that you don't use these filters. - -- Only when you experience unrealistic behaviour in your missions, these filters could be applied. - -- - -- ### 1.4.1 ) Distance visual detection probability - -- - -- Upon a **visual** detection, the further away a detected object is, the less likely it is to be detected properly. - -- Also, the speed of accurate detection plays a role. - -- - -- A distance probability factor between 0 and 1 can be given, that will model a linear extrapolated probability over 10 km distance. - -- - -- For example, if a probability factor of 0.6 (60%) is given, the extrapolated probabilities over 15 kilometers would like like: - -- 1 km: 96%, 2 km: 92%, 3 km: 88%, 4 km: 84%, 5 km: 80%, 6 km: 76%, 7 km: 72%, 8 km: 68%, 9 km: 64%, 10 km: 60%, 11 km: 56%, 12 km: 52%, 13 km: 48%, 14 km: 44%, 15 km: 40%. - -- - -- Note that based on this probability factor, not only the detection but also the **type** of the unit will be applied! - -- - -- Use the method @{Detection#DETECTION_BASE.SetDistanceProbability}() to set the probability factor upon a 10 km distance. - -- - -- ### 1.4.2 ) Alpha Angle visual detection probability - -- - -- Upon a **visual** detection, the higher the unit is during the detecting process, the more likely the detected unit is to be detected properly. - -- A detection at a 90% alpha angle is the most optimal, a detection at 10% is less and a detection at 0% is less likely to be correct. - -- - -- A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0° angle. - -- - -- For example, if a alpha angle probability factor of 0.7 is given, the extrapolated probabilities of the different angles would look like: - -- 0°: 70%, 10°: 75,21%, 20°: 80,26%, 30°: 85%, 40°: 89,28%, 50°: 92,98%, 60°: 95,98%, 70°: 98,19%, 80°: 99,54%, 90°: 100% - -- - -- Use the method @{Detection#DETECTION_BASE.SetAlphaAngleProbability}() to set the probability factor if 0°. - -- - -- ### 1.4.3 ) Cloudy Zones detection probability - -- - -- Upon a **visual** detection, the more a detected unit is within a cloudy zone, the less likely the detected unit is to be detected successfully. - -- The Cloudy Zones work with the ZONE_BASE derived classes. The mission designer can define within the mission - -- zones that reflect cloudy areas where detected units may not be so easily visually detected. - -- - -- Use the method @{Detection#DETECTION_BASE.SetZoneProbability}() to set for a defined number of zones, the probability factors. - -- - -- Note however, that the more zones are defined to be "cloudy" within a detection, the more performance it will take - -- from the DETECTION_BASE to calculate the presence of the detected unit within each zone. - -- Expecially for ZONE_POLYGON, try to limit the amount of nodes of the polygon! - -- - -- Typically, this kind of filter would be applied for very specific areas were a detection needs to be very realisting for - -- AI not to detect so easily targets within a forrest or village rich area. - -- - -- ## 1.5 ) Accept / Reject detected units - -- - -- DETECTION_BASE can accept or reject successful detections based on the location of the detected object, - -- if it is located in range or located inside or outside of specific zones. - -- - -- ### 1.5.1 ) Detection acceptance of within range limit - -- - -- A range can be set that will limit a successful detection for a unit. - -- Use the method @{Detection#DETECTION_BASE.SetAcceptRange}() to apply a range in meters till where detected units will be accepted. - -- - -- local SetGroup = SET_GROUP:New():FilterPrefixes( "FAC" ):FilterStart() -- Build a SetGroup of Forward Air Controllers. - -- - -- -- Build a detect object. - -- local Detection = DETECTION_BASE:New( SetGroup ) - -- - -- -- This will accept detected units if the range is below 5000 meters. - -- Detection:SetAcceptRange( 5000 ) - -- - -- -- Start the Detection. - -- Detection:Start() - -- - -- - -- ### 1.5.2 ) Detection acceptance if within zone(s). - -- - -- Specific ZONE_BASE object(s) can be given as a parameter, which will only accept a detection if the unit is within the specified ZONE_BASE object(s). - -- Use the method @{Detection#DETECTION_BASE.SetAcceptZones}() will accept detected units if they are within the specified zones. - -- - -- local SetGroup = SET_GROUP:New():FilterPrefixes( "FAC" ):FilterStart() -- Build a SetGroup of Forward Air Controllers. - -- - -- -- Search fo the zones where units are to be accepted. - -- local ZoneAccept1 = ZONE:New( "AcceptZone1" ) - -- local ZoneAccept2 = ZONE:New( "AcceptZone2" ) - -- - -- -- Build a detect object. - -- local Detection = DETECTION_BASE:New( SetGroup ) - -- - -- -- This will accept detected units by Detection when the unit is within ZoneAccept1 OR ZoneAccept2. - -- Detection:SetAcceptZones( { ZoneAccept1, ZoneAccept2 } ) - -- - -- -- Start the Detection. - -- Detection:Start() - -- - -- ### 1.5.3 ) Detection rejectance if within zone(s). - -- - -- Specific ZONE_BASE object(s) can be given as a parameter, which will reject detection if the unit is within the specified ZONE_BASE object(s). - -- Use the method @{Detection#DETECTION_BASE.SetRejectZones}() will reject detected units if they are within the specified zones. - -- An example of how to use the method is shown below. - -- - -- local SetGroup = SET_GROUP:New():FilterPrefixes( "FAC" ):FilterStart() -- Build a SetGroup of Forward Air Controllers. - -- - -- -- Search fo the zones where units are to be rejected. - -- local ZoneReject1 = ZONE:New( "RejectZone1" ) - -- local ZoneReject2 = ZONE:New( "RejectZone2" ) - -- - -- -- Build a detect object. - -- local Detection = DETECTION_BASE:New( SetGroup ) - -- - -- -- This will reject detected units by Detection when the unit is within ZoneReject1 OR ZoneReject2. - -- Detection:SetRejectZones( { ZoneReject1, ZoneReject2 } ) - -- - -- -- Start the Detection. - -- Detection:Start() - -- - -- ## 1.6) DETECTION_BASE is a Finite State Machine - -- - -- Various Events and State Transitions can be tailored using DETECTION_BASE. - -- - -- ### 1.6.1) DETECTION_BASE States - -- - -- * **Detecting**: The detection is running. - -- * **Stopped**: The detection is stopped. - -- - -- ### 1.6.2) DETECTION_BASE Events - -- - -- * **Start**: Start the detection process. - -- * **Detect**: Detect new units. - -- * **Detected**: New units have been detected. - -- * **Stop**: Stop the detection process. - -- - -- @type DETECTION_BASE - -- @field Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. - -- @field Dcs.DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. - -- @field #DETECTION_BASE.DetectedObjects DetectedObjects The list of detected objects. - -- @field #table DetectedObjectsIdentified Map of the DetectedObjects identified. - -- @field #number DetectionRun - -- @extends Core.Fsm#FSM - DETECTION_BASE = { - ClassName = "DETECTION_BASE", - DetectionSetGroup = nil, - DetectionRange = nil, - DetectedObjects = {}, - DetectionRun = 0, - DetectedObjectsIdentified = {}, - DetectedItems = {}, - } - - --- @type DETECTION_BASE.DetectedObjects - -- @list <#DETECTION_BASE.DetectedObject> - - --- @type DETECTION_BASE.DetectedObject - -- @field #string Name - -- @field #boolean Visible - -- @field #string Type - -- @field #number Distance - -- @field #boolean Identified - - --- @type DETECTION_BASE.DetectedItems - -- @list <#DETECTION_BASE.DetectedItem> - - --- @type DETECTION_BASE.DetectedItem - -- @field Core.Set#SET_UNIT Set - -- @field Core.Set#SET_UNIT Set -- The Set of Units in the detected area. - -- @field Core.Zone#ZONE_UNIT Zone -- The Zone of the detected area. - -- @field #boolean Changed Documents if the detected area has changes. - -- @field #table Changes A list of the changes reported on the detected area. (It is up to the user of the detected area to consume those changes). - -- @field #number ItemID -- The identifier of the detected area. - -- @field #boolean FriendliesNearBy Indicates if there are friendlies within the detected area. - -- @field Wrapper.Unit#UNIT NearestFAC The nearest FAC near the Area. - - - --- DETECTION constructor. - -- @param #DETECTION_BASE self - -- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. - -- @return #DETECTION_BASE self - function DETECTION_BASE:New( DetectionSetGroup ) - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM:New() ) -- #DETECTION_BASE - - self.DetectedItemCount = 0 - self.DetectedItemMax = 0 - self.DetectedItems = {} - - self.DetectionSetGroup = DetectionSetGroup - - self.DetectionInterval = 30 - - self:InitDetectVisual( true ) - self:InitDetectOptical( false ) - self:InitDetectRadar( false ) - self:InitDetectRWR( false ) - self:InitDetectIRST( false ) - self:InitDetectDLINK( false ) - - -- Create FSM transitions. - - self:SetStartState( "Stopped" ) - self.CountryID = DetectionSetGroup:GetFirst():GetCountry() - - self:AddTransition( "Stopped", "Start", "Detecting") - - --- OnLeave Transition Handler for State Stopped. - -- @function [parent=#DETECTION_BASE] OnLeaveStopped - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Stopped. - -- @function [parent=#DETECTION_BASE] OnEnterStopped - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore Transition Handler for Event Start. - -- @function [parent=#DETECTION_BASE] OnBeforeStart - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Start. - -- @function [parent=#DETECTION_BASE] OnAfterStart - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Start. - -- @function [parent=#DETECTION_BASE] Start - -- @param #DETECTION_BASE self - - --- Asynchronous Event Trigger for Event Start. - -- @function [parent=#DETECTION_BASE] __Start - -- @param #DETECTION_BASE self - -- @param #number Delay The delay in seconds. - - --- OnLeave Transition Handler for State Detecting. - -- @function [parent=#DETECTION_BASE] OnLeaveDetecting - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Detecting. - -- @function [parent=#DETECTION_BASE] OnEnterDetecting - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - self:AddTransition( "Detecting", "Detect", "Detecting" ) - self:AddTransition( "Detecting", "DetectionGroup", "Detecting" ) - - --- OnBefore Transition Handler for Event Detect. - -- @function [parent=#DETECTION_BASE] OnBeforeDetect - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Detect. - -- @function [parent=#DETECTION_BASE] OnAfterDetect - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Detect. - -- @function [parent=#DETECTION_BASE] Detect - -- @param #DETECTION_BASE self - - --- Asynchronous Event Trigger for Event Detect. - -- @function [parent=#DETECTION_BASE] __Detect - -- @param #DETECTION_BASE self - -- @param #number Delay The delay in seconds. - - - self:AddTransition( "Detecting", "Detected", "Detecting" ) - - --- OnBefore Transition Handler for Event Detected. - -- @function [parent=#DETECTION_BASE] OnBeforeDetected - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Detected. - -- @function [parent=#DETECTION_BASE] OnAfterDetected - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Detected. - -- @function [parent=#DETECTION_BASE] Detected - -- @param #DETECTION_BASE self - - --- Asynchronous Event Trigger for Event Detected. - -- @function [parent=#DETECTION_BASE] __Detected - -- @param #DETECTION_BASE self - -- @param #number Delay The delay in seconds. - - - self:AddTransition( "*", "Stop", "Stopped" ) - - --- OnBefore Transition Handler for Event Stop. - -- @function [parent=#DETECTION_BASE] OnBeforeStop - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Stop. - -- @function [parent=#DETECTION_BASE] OnAfterStop - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Stop. - -- @function [parent=#DETECTION_BASE] Stop - -- @param #DETECTION_BASE self - - --- Asynchronous Event Trigger for Event Stop. - -- @function [parent=#DETECTION_BASE] __Stop - -- @param #DETECTION_BASE self - -- @param #number Delay The delay in seconds. - - --- OnLeave Transition Handler for State Stopped. - -- @function [parent=#DETECTION_BASE] OnLeaveStopped - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Stopped. - -- @function [parent=#DETECTION_BASE] OnEnterStopped - -- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - return self - end - - do -- State Transition Handling - - --- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - function DETECTION_BASE:onafterStart(From,Event,To) - self:__Detect(0.1) - end - - --- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - function DETECTION_BASE:onafterDetect(From,Event,To) - self:E( {From,Event,To}) - - local DetectDelay = 0.1 - self.DetectionCount = 0 - self.DetectionRun = 0 - self:UnIdentifyAllDetectedObjects() -- Resets the DetectedObjectsIdentified table - - self.DetectionSetGroup:Flush() - - for DetectionGroupID, DetectionGroupData in pairs( self.DetectionSetGroup:GetSet() ) do - self:E( {DetectionGroupData}) - self:__DetectionGroup( DetectDelay, DetectionGroupData ) -- Process each detection asynchronously. - self.DetectionCount = self.DetectionCount + 1 - DetectDelay = DetectDelay + 0.1 - end - end - - --- @param #DETECTION_BASE self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @param Wrapper.Group#GROUP DetectionGroup The Group detecting. - function DETECTION_BASE:onafterDetectionGroup( From, Event, To, DetectionGroup ) - self:E( {From,Event,To}) - - self.DetectionRun = self.DetectionRun + 1 - - local HasDetectedObjects = false - - if DetectionGroup:IsAlive() then - - self:T( { "DetectionGroup is Alive", DetectionGroup:GetName() } ) - - local DetectionGroupName = DetectionGroup:GetName() - - local DetectedUnits = {} - - local DetectedTargets = DetectionGroup:GetDetectedTargets( - self.DetectVisual, - self.DetectOptical, - self.DetectRadar, - self.DetectIRST, - self.DetectRWR, - self.DetectDLINK - ) - - self:T( DetectedTargets ) - - for DetectionObjectID, Detection in pairs( DetectedTargets ) do - local DetectedObject = Detection.object -- Dcs.DCSWrapper.Object#Object - self:T2( DetectedObject ) - - if DetectedObject and DetectedObject:isExist() and DetectedObject.id_ < 50000000 then - - local DetectionAccepted = true - - local DetectedObjectName = DetectedObject:getName() - - local DetectedObjectVec3 = DetectedObject:getPoint() - local DetectedObjectVec2 = { x = DetectedObjectVec3.x, y = DetectedObjectVec3.z } - local DetectionGroupVec3 = DetectionGroup:GetVec3() - local DetectionGroupVec2 = { x = DetectionGroupVec3.x, y = DetectionGroupVec3.z } - - local Distance = ( ( DetectedObjectVec3.x - DetectionGroupVec3.x )^2 + - ( DetectedObjectVec3.y - DetectionGroupVec3.y )^2 + - ( DetectedObjectVec3.z - DetectionGroupVec3.z )^2 - ) ^ 0.5 / 1000 - - self:T( { "Detected Target", DetectionGroupName, DetectedObjectName, Distance } ) - - -- Calculate Acceptance - - if self.AcceptRange and Distance > self.AcceptRange then - DetectionAccepted = false - end - - if self.AcceptZones then - for AcceptZoneID, AcceptZone in pairs( self.AcceptZones ) do - local AcceptZone = AcceptZone -- Core.Zone#ZONE_BASE - if AcceptZone:IsPointVec2InZone( DetectedObjectVec2 ) == false then - DetectionAccepted = false - end - end - end - - if self.RejectZones then - for RejectZoneID, RejectZone in pairs( self.RejectZones ) do - local RejectZone = RejectZone -- Core.Zone#ZONE_BASE - if RejectZone:IsPointVec2InZone( DetectedObjectVec2 ) == true then - DetectionAccepted = false - end - end - end - - -- Calculate additional probabilities - - if not self.DetectedObjects[DetectedObjectName] and Detection.visible and self.DistanceProbability then - local DistanceFactor = Distance / 4 - local DistanceProbabilityReversed = ( 1 - self.DistanceProbability ) * DistanceFactor - local DistanceProbability = 1 - DistanceProbabilityReversed - DistanceProbability = DistanceProbability * 30 / 300 - local Probability = math.random() -- Selects a number between 0 and 1 - self:T( { Probability, DistanceProbability } ) - if Probability > DistanceProbability then - DetectionAccepted = false - end - end - - if not self.DetectedObjects[DetectedObjectName] and Detection.visible and self.AlphaAngleProbability then - local NormalVec2 = { x = DetectedObjectVec2.x - DetectionGroupVec2.x, y = DetectedObjectVec2.y - DetectionGroupVec2.y } - local AlphaAngle = math.atan2( NormalVec2.y, NormalVec2.x ) - local Sinus = math.sin( AlphaAngle ) - local AlphaAngleProbabilityReversed = ( 1 - self.AlphaAngleProbability ) * ( 1 - Sinus ) - local AlphaAngleProbability = 1 - AlphaAngleProbabilityReversed - - AlphaAngleProbability = AlphaAngleProbability * 30 / 300 - - local Probability = math.random() -- Selects a number between 0 and 1 - self:T( { Probability, AlphaAngleProbability } ) - if Probability > AlphaAngleProbability then - DetectionAccepted = false - end - - end - - if not self.DetectedObjects[DetectedObjectName] and Detection.visible and self.ZoneProbability then - - for ZoneDataID, ZoneData in pairs( self.ZoneProbability ) do - self:E({ZoneData}) - local ZoneObject = ZoneData[1] -- Core.Zone#ZONE_BASE - local ZoneProbability = ZoneData[2] -- #number - ZoneProbability = ZoneProbability * 30 / 300 - - if ZoneObject:IsPointVec2InZone( DetectedObjectVec2 ) == true then - local Probability = math.random() -- Selects a number between 0 and 1 - self:T( { Probability, ZoneProbability } ) - if Probability > ZoneProbability then - DetectionAccepted = false - break - end - end - end - end - - if DetectionAccepted then - - HasDetectedObjects = true - - if not self.DetectedObjects[DetectedObjectName] then - self.DetectedObjects[DetectedObjectName] = {} - end - self.DetectedObjects[DetectedObjectName].Name = DetectedObjectName - self.DetectedObjects[DetectedObjectName].Visible = Detection.visible - self.DetectedObjects[DetectedObjectName].Type = Detection.type - self.DetectedObjects[DetectedObjectName].Distance = Distance - - local DetectedUnit = UNIT:FindByName( DetectedObjectName ) - - DetectedUnits[DetectedObjectName] = DetectedUnit - else - -- if beyond the DetectionRange then nullify... - if self.DetectedObjects[DetectedObjectName] then - self.DetectedObjects[DetectedObjectName] = nil - end - end - end - - self:T2( self.DetectedObjects ) - end - - if HasDetectedObjects then - self:__Detected( 0.1, DetectedUnits ) - end - - end - - if self.DetectionCount > 0 and self.DetectionRun == self.DetectionCount then - self:__Detect( self.DetectionInterval ) - - self:T( "--> Create Detection Sets" ) - self:CreateDetectionSets() - end - - end - - - end - - do -- Initialization methods - - --- Detect Visual. - -- @param #DETECTION_BASE self - -- @param #boolean DetectVisual - -- @return #DETECTION_BASE self - function DETECTION_BASE:InitDetectVisual( DetectVisual ) - - self.DetectVisual = DetectVisual - end - - --- Detect Optical. - -- @param #DETECTION_BASE self - -- @param #boolean DetectOptical - -- @return #DETECTION_BASE self - function DETECTION_BASE:InitDetectOptical( DetectOptical ) - self:F2() - - self.DetectOptical = DetectOptical - end - - --- Detect Radar. - -- @param #DETECTION_BASE self - -- @param #boolean DetectRadar - -- @return #DETECTION_BASE self - function DETECTION_BASE:InitDetectRadar( DetectRadar ) - self:F2() - - self.DetectRadar = DetectRadar - end - - --- Detect IRST. - -- @param #DETECTION_BASE self - -- @param #boolean DetectIRST - -- @return #DETECTION_BASE self - function DETECTION_BASE:InitDetectIRST( DetectIRST ) - self:F2() - - self.DetectIRST = DetectIRST - end - - --- Detect RWR. - -- @param #DETECTION_BASE self - -- @param #boolean DetectRWR - -- @return #DETECTION_BASE self - function DETECTION_BASE:InitDetectRWR( DetectRWR ) - self:F2() - - self.DetectRWR = DetectRWR - end - - --- Detect DLINK. - -- @param #DETECTION_BASE self - -- @param #boolean DetectDLINK - -- @return #DETECTION_BASE self - function DETECTION_BASE:InitDetectDLINK( DetectDLINK ) - self:F2() - - self.DetectDLINK = DetectDLINK - end - - end - - do - - --- Set the detection interval time in seconds. - -- @param #DETECTION_BASE self - -- @param #number DetectionInterval Interval in seconds. - -- @return #DETECTION_BASE self - function DETECTION_BASE:SetDetectionInterval( DetectionInterval ) - self:F2() - - self.DetectionInterval = DetectionInterval - - return self - end - - end - - do -- Accept / Reject detected units - - --- Accept detections if within a range in meters. - -- @param #DETECTION_BASE self - -- @param #number AcceptRange Accept a detection if the unit is within the AcceptRange in meters. - -- @return #DETECTION_BASE self - function DETECTION_BASE:SetAcceptRange( AcceptRange ) - self:F2() - - self.AcceptRange = AcceptRange - - return self - end - - --- Accept detections if within the specified zone(s). - -- @param #DETECTION_BASE self - -- @param AcceptZones Can be a list or ZONE_BASE objects, or a single ZONE_BASE object. - -- @return #DETECTION_BASE self - function DETECTION_BASE:SetAcceptZones( AcceptZones ) - self:F2() - - if type( AcceptZones ) == "table" then - self.AcceptZones = AcceptZones - else - self.AcceptZones = { AcceptZones } - end - - return self - end - - --- Reject detections if within the specified zone(s). - -- @param #DETECTION_BASE self - -- @param RejectZones Can be a list or ZONE_BASE objects, or a single ZONE_BASE object. - -- @return #DETECTION_BASE self - function DETECTION_BASE:SetRejectZones( RejectZones ) - self:F2() - - if type( RejectZones ) == "table" then - self.RejectZones = RejectZones - else - self.RejectZones = { RejectZones } - end - - return self - end - - end - - do -- Probability methods - - --- Upon a **visual** detection, the further away a detected object is, the less likely it is to be detected properly. - -- Also, the speed of accurate detection plays a role. - -- A distance probability factor between 0 and 1 can be given, that will model a linear extrapolated probability over 10 km distance. - -- For example, if a probability factor of 0.6 (60%) is given, the extrapolated probabilities over 15 kilometers would like like: - -- 1 km: 96%, 2 km: 92%, 3 km: 88%, 4 km: 84%, 5 km: 80%, 6 km: 76%, 7 km: 72%, 8 km: 68%, 9 km: 64%, 10 km: 60%, 11 km: 56%, 12 km: 52%, 13 km: 48%, 14 km: 44%, 15 km: 40%. - -- @param #DETECTION_BASE self - -- @param DistanceProbability The probability factor. - -- @return #DETECTION_BASE self - function DETECTION_BASE:SetDistanceProbability( DistanceProbability ) - self:F2() - - self.DistanceProbability = DistanceProbability - - return self - end - - - --- Upon a **visual** detection, the higher the unit is during the detecting process, the more likely the detected unit is to be detected properly. - -- A detection at a 90% alpha angle is the most optimal, a detection at 10% is less and a detection at 0% is less likely to be correct. - -- - -- A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0° angle. - -- - -- For example, if a alpha angle probability factor of 0.7 is given, the extrapolated probabilities of the different angles would look like: - -- 0°: 70%, 10°: 75,21%, 20°: 80,26%, 30°: 85%, 40°: 89,28%, 50°: 92,98%, 60°: 95,98%, 70°: 98,19%, 80°: 99,54%, 90°: 100% - -- @param #DETECTION_BASE self - -- @param AlphaAngleProbability The probability factor. - -- @return #DETECTION_BASE self - function DETECTION_BASE:SetAlphaAngleProbability( AlphaAngleProbability ) - self:F2() - - self.AlphaAngleProbability = AlphaAngleProbability - - return self - end - - --- Upon a **visual** detection, the more a detected unit is within a cloudy zone, the less likely the detected unit is to be detected successfully. - -- The Cloudy Zones work with the ZONE_BASE derived classes. The mission designer can define within the mission - -- zones that reflect cloudy areas where detected units may not be so easily visually detected. - -- @param #DETECTION_BASE self - -- @param ZoneArray Aray of a The ZONE_BASE object and a ZoneProbability pair.. - -- @return #DETECTION_BASE self - function DETECTION_BASE:SetZoneProbability( ZoneArray ) - self:F2() - - self.ZoneProbability = ZoneArray - - return self - end - - - end - - do -- Change processing - - --- Accepts changes from the detected item. - -- @param #DETECTION_BASE self - -- @param #DETECTION_BASE.DetectedItem DetectedItem - -- @return #DETECTION_BASE self - function DETECTION_BASE:AcceptChanges( DetectedItem ) - - DetectedItem.Changed = false - DetectedItem.Changes = {} - - return self - end - - --- Add a change to the detected zone. - -- @param #DETECTION_BASE self - -- @param #DETECTION_BASE.DetectedItem DetectedItem - -- @param #string ChangeCode - -- @return #DETECTION_BASE self - function DETECTION_BASE:AddChangeItem( DetectedItem, ChangeCode, ItemUnitType ) - - DetectedItem.Changed = true - local ItemID = DetectedItem.ItemID - - DetectedItem.Changes = DetectedItem.Changes or {} - DetectedItem.Changes[ChangeCode] = DetectedItem.Changes[ChangeCode] or {} - DetectedItem.Changes[ChangeCode].ItemID = ItemID - DetectedItem.Changes[ChangeCode].ItemUnitType = ItemUnitType - - self:T( { "Change on Detection Item:", DetectedItem.ItemID, ChangeCode, ItemUnitType } ) - - return self - end - - - --- Add a change to the detected zone. - -- @param #DETECTION_BASE self - -- @param #DETECTION_BASE.DetectedItem DetectedItem - -- @param #string ChangeCode - -- @param #string ChangeUnitType - -- @return #DETECTION_BASE self - function DETECTION_BASE:AddChangeUnit( DetectedItem, ChangeCode, ChangeUnitType ) - - DetectedItem.Changed = true - local ItemID = DetectedItem.ItemID - - DetectedItem.Changes = DetectedItem.Changes or {} - DetectedItem.Changes[ChangeCode] = DetectedItem.Changes[ChangeCode] or {} - DetectedItem.Changes[ChangeCode][ChangeUnitType] = DetectedItem.Changes[ChangeCode][ChangeUnitType] or 0 - DetectedItem.Changes[ChangeCode][ChangeUnitType] = DetectedItem.Changes[ChangeCode][ChangeUnitType] + 1 - DetectedItem.Changes[ChangeCode].ItemID = ItemID - - self:T( { "Change on Detection Item:", DetectedItem.ItemID, ChangeCode, ChangeUnitType } ) - - return self - end - - - end - - do -- Threat - - --- Returns if there are friendlies nearby the FAC units ... - -- @param #DETECTION_BASE self - -- @return #boolean trhe if there are friendlies nearby - function DETECTION_BASE:IsFriendliesNearBy( DetectedItem ) - - self:T3( DetectedItem.FriendliesNearBy ) - return DetectedItem.FriendliesNearBy or false - end - - --- Background worker function to determine if there are friendlies nearby ... - -- @param #DETECTION_BASE self - function DETECTION_BASE:ReportFriendliesNearBy( ReportGroupData ) - self:F2() - - local DetectedItem = ReportGroupData.DetectedItem -- Functional.Detection#DETECTION_BASE.DetectedItem - local DetectedSet = ReportGroupData.DetectedItem.Set - local DetectedUnit = DetectedSet:GetFirst() - - DetectedItem.FriendliesNearBy = false - - if DetectedUnit then - - - local SphereSearch = { - id = world.VolumeType.SPHERE, - params = { - point = DetectedUnit:GetVec3(), - radius = 6000, - } - - } - - --- @param Dcs.DCSWrapper.Unit#Unit FoundDCSUnit - -- @param Wrapper.Group#GROUP ReportGroup - -- @param Set#SET_GROUP ReportSetGroup - local FindNearByFriendlies = function( FoundDCSUnit, ReportGroupData ) - - local DetectedItem = ReportGroupData.DetectedItem -- Functional.Detection#DETECTION_BASE.DetectedItem - local DetectedSet = ReportGroupData.DetectedItem.Set - local DetectedUnit = DetectedSet:GetFirst() -- Wrapper.Unit#UNIT - local ReportSetGroup = ReportGroupData.ReportSetGroup - - local EnemyCoalition = DetectedUnit:GetCoalition() - - local FoundUnitCoalition = FoundDCSUnit:getCoalition() - local FoundUnitName = FoundDCSUnit:getName() - local FoundUnitGroupName = FoundDCSUnit:getGroup():getName() - local EnemyUnitName = DetectedUnit:GetName() - local FoundUnitInReportSetGroup = ReportSetGroup:FindGroup( FoundUnitGroupName ) ~= nil - - self:T3( { "Friendlies search:", FoundUnitName, FoundUnitCoalition, EnemyUnitName, EnemyCoalition, FoundUnitInReportSetGroup } ) - - if FoundUnitCoalition ~= EnemyCoalition and FoundUnitInReportSetGroup == false then - DetectedItem.FriendliesNearBy = true - return false - end - - return true - end - - world.searchObjects( Object.Category.UNIT, SphereSearch, FindNearByFriendlies, ReportGroupData ) - end - end - - end - - --- Determines if a detected object has already been identified during detection processing. - -- @param #DETECTION_BASE self - -- @param #DETECTION_BASE.DetectedObject DetectedObject - -- @return #boolean true if already identified. - function DETECTION_BASE:IsDetectedObjectIdentified( DetectedObject ) - self:F3( DetectedObject.Name ) - - local DetectedObjectName = DetectedObject.Name - local DetectedObjectIdentified = self.DetectedObjectsIdentified[DetectedObjectName] == true - self:T3( DetectedObjectIdentified ) - return DetectedObjectIdentified - end - - --- Identifies a detected object during detection processing. - -- @param #DETECTION_BASE self - -- @param #DETECTION_BASE.DetectedObject DetectedObject - function DETECTION_BASE:IdentifyDetectedObject( DetectedObject ) - self:F( { "Identified:", DetectedObject.Name } ) - - local DetectedObjectName = DetectedObject.Name - self.DetectedObjectsIdentified[DetectedObjectName] = true - end - - --- UnIdentify a detected object during detection processing. - -- @param #DETECTION_BASE self - -- @param #DETECTION_BASE.DetectedObject DetectedObject - function DETECTION_BASE:UnIdentifyDetectedObject( DetectedObject ) - - local DetectedObjectName = DetectedObject.Name - self.DetectedObjectsIdentified[DetectedObjectName] = false - end - - --- UnIdentify all detected objects during detection processing. - -- @param #DETECTION_BASE self - function DETECTION_BASE:UnIdentifyAllDetectedObjects() - - self.DetectedObjectsIdentified = {} -- Table will be garbage collected. - end - - --- Gets a detected object with a given name. - -- @param #DETECTION_BASE self - -- @param #string ObjectName - -- @return #DETECTION_BASE.DetectedObject - function DETECTION_BASE:GetDetectedObject( ObjectName ) - self:F( ObjectName ) - - if ObjectName then - local DetectedObject = self.DetectedObjects[ObjectName] - - -- Only return detected objects that are alive! - local DetectedUnit = UNIT:FindByName( ObjectName ) - if DetectedUnit and DetectedUnit:IsAlive() then - if self:IsDetectedObjectIdentified( DetectedObject ) == false then - return DetectedObject - end - end - end - - return nil - end - - - --- Adds a new DetectedItem to the DetectedItems list. - -- The DetectedItem is a table and contains a SET_UNIT in the field Set. - -- @param #DETECTION_BASE self - -- @param #string DetectedItemIndex The index of the DetectedItem. - -- @param Core.Set#SET_UNIT Set (optional) The Set of Units to be added. - -- @return #DETECTION_BASE.DetectedItem - function DETECTION_BASE:AddDetectedItem( DetectedItemIndex, Set ) - - local DetectedItem = {} - self.DetectedItemCount = self.DetectedItemCount + 1 - self.DetectedItemMax = self.DetectedItemMax + 1 - - if DetectedItemIndex then - self.DetectedItems[DetectedItemIndex] = DetectedItem - else - self.DetectedItems[self.DetectedItemCount] = DetectedItem - end - - DetectedItem.Set = Set or SET_UNIT:New() - DetectedItem.ItemID = self.DetectedItemMax - DetectedItem.Removed = false - - return DetectedItem - end - - --- Adds a new DetectedItem to the DetectedItems list. - -- The DetectedItem is a table and contains a SET_UNIT in the field Set. - -- @param #DETECTION_BASE self - -- @param #string DetectedItemIndex The index of the DetectedItem. - -- @param Core.Set#SET_UNIT Set (optional) The Set of Units to be added. - -- @param Core.Zone#ZONE_UNIT Zone (optional) The Zone to be added where the Units are located. - -- @return #DETECTION_BASE.DetectedItem - function DETECTION_BASE:AddDetectedItemZone( DetectedItemIndex, Set, Zone ) - - local DetectedItem = self:AddDetectedItem( DetectedItemIndex, Set ) - - DetectedItem.Zone = Zone - - return DetectedItem - end - - --- Removes an existing DetectedItem from the DetectedItems list. - -- The DetectedItem is a table and contains a SET_UNIT in the field Set. - -- @param #DETECTION_BASE self - -- @param #number DetectedItemIndex The index or position in the DetectedItems list where the item needs to be removed. - function DETECTION_BASE:RemoveDetectedItem( DetectedItemIndex ) - - self.DetectedItemCount = self.DetectedItemCount - 1 - self.DetectedItems[DetectedItemIndex] = nil - end - - - --- Get the detected @{Set#SET_BASE}s. - -- @param #DETECTION_BASE self - -- @return #DETECTION_BASE.DetectedItems - function DETECTION_BASE:GetDetectedItems() - - return self.DetectedItems - end - - --- Get the amount of SETs with detected objects. - -- @param #DETECTION_BASE self - -- @return #number Count - function DETECTION_BASE:GetDetectedItemsCount() - - local DetectedCount = self.DetectedItemCount - return DetectedCount - end - - --- Get a detected item using a given numeric index. - -- @param #DETECTION_BASE self - -- @param #number Index - -- @return #DETECTION_BASE.DetectedItem - function DETECTION_BASE:GetDetectedItem( Index ) - - local DetectedItem = self.DetectedItems[Index] - if DetectedItem then - return DetectedItem - end - - return nil - end - - --- Get the @{Set#SET_UNIT} of a detecttion area using a given numeric index. - -- @param #DETECTION_BASE self - -- @param #number Index - -- @return Core.Set#SET_UNIT DetectedSet - function DETECTION_BASE:GetDetectedSet( Index ) - - local DetectedItem = self:GetDetectedItem( Index ) - local DetectedSetUnit = DetectedItem.Set - if DetectedSetUnit then - return DetectedSetUnit - end - - return nil - end - - do -- Zones - - --- Get the @{Zone#ZONE_UNIT} of a detection area using a given numeric index. - -- @param #DETECTION_BASE self - -- @param #number Index - -- @return Core.Zone#ZONE_UNIT DetectedZone - function DETECTION_BASE:GetDetectedZone( Index ) - - local DetectedZone = self.DetectedItems[Index].Zone - if DetectedZone then - return DetectedZone - end - - return nil - end - - end - - - --- Report summary of a detected item using a given numeric index. - -- @param #DETECTION_BASE self - -- @param Index - -- @return #string - function DETECTION_BASE:DetectedItemReportSummary( Index ) - self:F( Index ) - return nil - end - - --- Report detailed of a detectedion result. - -- @param #DETECTION_BASE self - -- @return #string - function DETECTION_BASE:DetectedReportDetailed() - self:F() - return nil - end - - --- Get the detection Groups. - -- @param #DETECTION_BASE self - -- @return Wrapper.Group#GROUP - function DETECTION_BASE:GetDetectionSetGroup() - - local DetectionSetGroup = self.DetectionSetGroup - return DetectionSetGroup - end - - --- Make a DetectionSet table. This function will be overridden in the derived clsses. - -- @param #DETECTION_BASE self - -- @return #DETECTION_BASE self - function DETECTION_BASE:CreateDetectionSets() - self:F2() - - self:E( "Error, in DETECTION_BASE class..." ) - - end - - - --- Schedule the DETECTION construction. - -- @param #DETECTION_BASE self - -- @param #number DelayTime The delay in seconds to wait the reporting. - -- @param #number RepeatInterval The repeat interval in seconds for the reporting to happen repeatedly. - -- @return #DETECTION_BASE self - function DETECTION_BASE:Schedule( DelayTime, RepeatInterval ) - self:F2() - - self.ScheduleDelayTime = DelayTime - self.ScheduleRepeatInterval = RepeatInterval - - self.DetectionScheduler = SCHEDULER:New( self, self._DetectionScheduler, { self, "Detection" }, DelayTime, RepeatInterval ) - return self - end - -end - -do -- DETECTION_UNITS - - --- # 2) DETECTION_UNITS class, extends @{Detection#DETECTION_BASE} - -- - -- The DETECTION_UNITS class will detect units within the battle zone. - -- It will build a DetectedItems list filled with DetectedItems. Each DetectedItem will contain a field Set, which contains a @{Set#SET_UNIT} containing ONE @{UNIT} object reference. - -- Beware that when the amount of units detected is large, the DetectedItems list will be large also. - -- - -- @type DETECTION_UNITS - -- @field Dcs.DCSTypes#Distance DetectionRange The range till which targets are detected. - -- @extends #DETECTION_BASE - DETECTION_UNITS = { - ClassName = "DETECTION_UNITS", - DetectionRange = nil, - } - - --- DETECTION_UNITS constructor. - -- @param Functional.Detection#DETECTION_UNITS self - -- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. - -- @return Functional.Detection#DETECTION_UNITS self - function DETECTION_UNITS:New( DetectionSetGroup ) - - -- Inherits from DETECTION_BASE - local self = BASE:Inherit( self, DETECTION_BASE:New( DetectionSetGroup ) ) -- #DETECTION_UNITS - - self._SmokeDetectedUnits = false - self._FlareDetectedUnits = false - self._SmokeDetectedZones = false - self._FlareDetectedZones = false - self._BoundDetectedZones = false - - return self - end - - --- Make text documenting the changes of the detected zone. - -- @param #DETECTION_UNITS self - -- @param #DETECTION_UNITS.DetectedItem DetectedItem - -- @return #string The Changes text - function DETECTION_UNITS:GetChangeText( DetectedItem ) - self:F( DetectedItem ) - - local MT = {} - - for ChangeCode, ChangeData in pairs( DetectedItem.Changes ) do - - if ChangeCode == "AU" then - local MTUT = {} - for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then - MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType - end - end - MT[#MT+1] = " New target(s) detected: " .. table.concat( MTUT, ", " ) .. "." - end - - if ChangeCode == "RU" then - local MTUT = {} - for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then - MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType - end - end - MT[#MT+1] = " Invisible or destroyed target(s): " .. table.concat( MTUT, ", " ) .. "." - end - - end - - return table.concat( MT, "\n" ) - - end - - - --- Create the DetectedItems list from the DetectedObjects table. - -- For each DetectedItem, a one field array is created containing the Unit detected. - -- @param #DETECTION_UNITS self - -- @return #DETECTION_UNITS self - function DETECTION_UNITS:CreateDetectionSets() - self:F2( #self.DetectedObjects ) - - -- Loop the current detected items, and check if each object still exists and is detected. - - for DetectedItemID, DetectedItem in pairs( self.DetectedItems ) do - - local DetectedItemSet = DetectedItem.Set -- Core.Set#SET_UNIT - local DetectedTypeName = DetectedItem.Type - - for DetectedUnitName, DetectedUnitData in pairs( DetectedItemSet:GetSet() ) do - local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT - - local DetectedObject = nil - self:E( DetectedUnit ) - if DetectedUnit:IsAlive() then - --self:E(DetectedUnit:GetName()) - DetectedObject = self:GetDetectedObject( DetectedUnit:GetName() ) - end - if DetectedObject then - - -- Yes, the DetectedUnit is still detected or exists. Flag as identified. - self:IdentifyDetectedObject( DetectedObject ) - else - -- There was no DetectedObject, remove DetectedUnit from the Set. - self:AddChangeUnit( DetectedItem, "RU", DetectedUnitName ) - DetectedItemSet:Remove( DetectedUnitName ) - end - end - end - - - -- Now we need to loop through the unidentified detected units and add these... These are all new items. - for DetectedUnitName, DetectedObjectData in pairs( self.DetectedObjects ) do - - local DetectedObject = self:GetDetectedObject( DetectedUnitName ) - if DetectedObject then - self:T( { "Detected Unit #", DetectedUnitName } ) - - local DetectedUnit = UNIT:FindByName( DetectedUnitName ) -- Wrapper.Unit#UNIT - - if DetectedUnit then - local DetectedTypeName = DetectedUnit:GetTypeName() - local DetectedItem = self:GetDetectedItem( DetectedUnitName ) - if not DetectedItem then - self:T( "Added new DetectedItem" ) - DetectedItem = self:AddDetectedItem( DetectedUnitName ) - DetectedItem.Type = DetectedUnit:GetTypeName() - DetectedItem.Name = DetectedObjectData.Name - DetectedItem.Visible = DetectedObjectData.Visible - DetectedItem.Distance = DetectedObjectData.Distance - end - - DetectedItem.Set:AddUnit( DetectedUnit ) - self:AddChangeUnit( DetectedItem, "AU", DetectedTypeName ) - end - end - end - - for DetectedItemID, DetectedItemData in pairs( self.DetectedItems ) do - - local DetectedItem = DetectedItemData -- #DETECTION_BASE.DetectedItem - local DetectedSet = DetectedItem.Set - - self:ReportFriendliesNearBy( { DetectedItem = DetectedItem, ReportSetGroup = self.DetectionSetGroup } ) -- Fill the Friendlies table - --self:NearestFAC( DetectedItem ) - end - - end - - --- Report summary of a DetectedItem using a given numeric index. - -- @param #DETECTION_UNITS self - -- @param Index - -- @return #string - function DETECTION_UNITS:DetectedItemReportSummary( Index ) - self:F( Index ) - - local DetectedItem = self:GetDetectedItem( Index ) - local DetectedSet = self:GetDetectedSet( Index ) - - self:T( DetectedSet ) - if DetectedSet then - local ReportSummary = "" - local UnitDistanceText = "" - local UnitCategoryText = "" - - local DetectedItemUnit = DetectedSet:GetFirst() -- Wrapper.Unit#UNIT - - if DetectedItemUnit and DetectedItemUnit:IsAlive() then - self:T(DetectedItemUnit) - - local UnitCategoryName = DetectedItemUnit:GetCategoryName() or "" - local UnitCategoryType = DetectedItemUnit:GetTypeName() or "" - - if DetectedItem.Type and UnitCategoryName and UnitCategoryType then - UnitCategoryText = UnitCategoryName .. " (" .. UnitCategoryType .. ") at " - else - UnitCategoryText = "Unknown target at " - end - - if DetectedItem.Visible == false then - UnitDistanceText = string.format( "%.2f", DetectedItem.Distance ) .. " estimated km" - else - UnitDistanceText = string.format( "%.2f", DetectedItem.Distance ) .. " km, visual contact" - end - - local DetectedItemPointVec3 = DetectedItemUnit:GetPointVec3() - local DetectedItemPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) - - local ThreatLevelA2G = DetectedItemUnit:GetThreatLevel( DetectedItem ) - - ReportSummary = string.format( - "%s - Threat [%s] (%2d) - %s%s", - DetectedItemPointLL, - string.rep( "â– ", ThreatLevelA2G ), - ThreatLevelA2G, - UnitCategoryText, - UnitDistanceText - ) - end - - self:T( ReportSummary ) - - return ReportSummary - end - end - - --- Report detailed of a detection result. - -- @param #DETECTION_UNITS self - -- @return #string - function DETECTION_UNITS:DetectedReportDetailed() - self:F() - - local Report = REPORT:New( "Detected units:" ) - for DetectedItemID, DetectedItem in pairs( self.DetectedItems ) do - local DetectedItem = DetectedItem -- #DETECTION_BASE.DetectedItem - local ReportSummary = self:DetectedItemReportSummary( DetectedItemID ) - Report:Add( ReportSummary ) - end - - local ReportText = Report:Text() - - return ReportText - end - -end - -do -- DETECTION_TYPES - - --- # 3) DETECTION_TYPES class, extends @{Detection#DETECTION_BASE} - -- - -- The DETECTION_TYPES class will detect units within the battle zone. - -- It will build a DetectedItems[] list filled with DetectedItems, grouped by the type of units detected. - -- Each DetectedItem will contain a field Set, which contains a @{Set#SET_UNIT} containing ONE @{UNIT} object reference. - -- Beware that when the amount of different types detected is large, the DetectedItems[] list will be large also. - -- - -- @type DETECTION_TYPES - -- @extends #DETECTION_BASE - DETECTION_TYPES = { - ClassName = "DETECTION_TYPES", - DetectionRange = nil, - } - - --- DETECTION_TYPES constructor. - -- @param Functional.Detection#DETECTION_TYPES self - -- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Recce role. - -- @return Functional.Detection#DETECTION_TYPES self - function DETECTION_TYPES:New( DetectionSetGroup ) - - -- Inherits from DETECTION_BASE - local self = BASE:Inherit( self, DETECTION_BASE:New( DetectionSetGroup ) ) -- #DETECTION_TYPES - - self._SmokeDetectedUnits = false - self._FlareDetectedUnits = false - self._SmokeDetectedZones = false - self._FlareDetectedZones = false - self._BoundDetectedZones = false - - return self - end - - --- Make text documenting the changes of the detected zone. - -- @param #DETECTION_TYPES self - -- @param #DETECTION_TYPES.DetectedItem DetectedItem - -- @return #string The Changes text - function DETECTION_TYPES:GetChangeText( DetectedItem ) - self:F( DetectedItem ) - - local MT = {} - - for ChangeCode, ChangeData in pairs( DetectedItem.Changes ) do - - if ChangeCode == "AU" then - local MTUT = {} - for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then - MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType - end - end - MT[#MT+1] = " New target(s) detected: " .. table.concat( MTUT, ", " ) .. "." - end - - if ChangeCode == "RU" then - local MTUT = {} - for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then - MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType - end - end - MT[#MT+1] = " Invisible or destroyed target(s): " .. table.concat( MTUT, ", " ) .. "." - end - - end - - return table.concat( MT, "\n" ) - - end - - - --- Create the DetectedItems list from the DetectedObjects table. - -- For each DetectedItem, a one field array is created containing the Unit detected. - -- @param #DETECTION_TYPES self - -- @return #DETECTION_TYPES self - function DETECTION_TYPES:CreateDetectionSets() - self:F2( #self.DetectedObjects ) - - -- Loop the current detected items, and check if each object still exists and is detected. - - for DetectedItemID, DetectedItem in pairs( self.DetectedItems ) do - - local DetectedItemSet = DetectedItem.Set -- Core.Set#SET_UNIT - local DetectedTypeName = DetectedItem.Type - - for DetectedUnitName, DetectedUnitData in pairs( DetectedItemSet:GetSet() ) do - local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT - - local DetectedObject = nil - if DetectedUnit:IsAlive() then - --self:E(DetectedUnit:GetName()) - DetectedObject = self:GetDetectedObject( DetectedUnit:GetName() ) - end - if DetectedObject then - - -- Yes, the DetectedUnit is still detected or exists. Flag as identified. - self:IdentifyDetectedObject( DetectedObject ) - else - -- There was no DetectedObject, remove DetectedUnit from the Set. - self:AddChangeUnit( DetectedItem, "RU", DetectedUnitName ) - DetectedItemSet:Remove( DetectedUnitName ) - end - end - end - - - -- Now we need to loop through the unidentified detected units and add these... These are all new items. - for DetectedUnitName, DetectedObjectData in pairs( self.DetectedObjects ) do - - local DetectedObject = self:GetDetectedObject( DetectedUnitName ) - if DetectedObject then - self:T( { "Detected Unit #", DetectedUnitName } ) - - local DetectedUnit = UNIT:FindByName( DetectedUnitName ) -- Wrapper.Unit#UNIT - - if DetectedUnit then - local DetectedTypeName = DetectedUnit:GetTypeName() - local DetectedItem = self:GetDetectedItem( DetectedTypeName ) - if not DetectedItem then - DetectedItem = self:AddDetectedItem( DetectedTypeName ) - DetectedItem.Type = DetectedUnit:GetTypeName() - end - - DetectedItem.Set:AddUnit( DetectedUnit ) - self:AddChangeUnit( DetectedItem, "AU", DetectedTypeName ) - end - end - end - - for DetectedItemID, DetectedItemData in pairs( self.DetectedItems ) do - - local DetectedItem = DetectedItemData -- #DETECTION_BASE.DetectedItem - local DetectedSet = DetectedItem.Set - - self:ReportFriendliesNearBy( { DetectedItem = DetectedItem, ReportSetGroup = self.DetectionSetGroup } ) -- Fill the Friendlies table - --self:NearestFAC( DetectedItem ) - end - - end - - --- Report summary of a DetectedItem using a given numeric index. - -- @param #DETECTION_TYPES self - -- @param Index - -- @return #string - function DETECTION_TYPES:DetectedItemReportSummary( DetectedTypeName ) - self:F( DetectedTypeName ) - - local DetectedItem = self:GetDetectedItem( DetectedTypeName ) - local DetectedSet = self:GetDetectedSet( DetectedTypeName ) - - self:T( DetectedItem ) - if DetectedItem then - - local ThreatLevelA2G = DetectedSet:CalculateThreatLevelA2G() - local DetectedItemsCount = DetectedSet:Count() - local DetectedItemType = DetectedItem.Type - - local ReportSummary = string.format( - "Threat [%s] (%2d) - %2d of %s", - string.rep( "â– ", ThreatLevelA2G ), - ThreatLevelA2G, - DetectedItemsCount, - DetectedItemType - ) - self:T( ReportSummary ) - - return ReportSummary - end - end - - --- Report detailed of a detection result. - -- @param #DETECTION_TYPES self - -- @return #string - function DETECTION_TYPES:DetectedReportDetailed() - self:F() - - local Report = REPORT:New( "Detected types:" ) - for DetectedItemTypeName, DetectedItem in pairs( self.DetectedItems ) do - local DetectedItem = DetectedItem -- #DETECTION_BASE.DetectedItem - local ReportSummary = self:DetectedItemReportSummary( DetectedItemTypeName ) - Report:Add( ReportSummary ) - end - - local ReportText = Report:Text() - - return ReportText - end - -end - - -do -- DETECTION_AREAS - - --- # 4) DETECTION_AREAS class, extends @{Detection#DETECTION_BASE} - -- - -- The DETECTION_AREAS class will detect units within the battle zone for a list of @{Group}s detecting targets following (a) detection method(s), - -- and will build a list (table) of @{Set#SET_UNIT}s containing the @{Unit#UNIT}s detected. - -- The class is group the detected units within zones given a DetectedZoneRange parameter. - -- A set with multiple detected zones will be created as there are groups of units detected. - -- - -- ## 4.1) Retrieve the Detected Unit Sets and Detected Zones - -- - -- The methods to manage the DetectedItems[].Set(s) are implemented in @{Detection#DECTECTION_BASE} and - -- the methods to manage the DetectedItems[].Zone(s) is implemented in @{Detection#DETECTION_AREAS}. - -- - -- Retrieve the DetectedItems[].Set with the method @{Detection#DETECTION_BASE.GetDetectedSet}(). A @{Set#SET_UNIT} object will be returned. - -- - -- Retrieve the formed @{Zone@ZONE_UNIT}s as a result of the grouping the detected units within the DetectionZoneRange, use the method @{Detection#DETECTION_BASE.GetDetectionZones}(). - -- To understand the amount of zones created, use the method @{Detection#DETECTION_BASE.GetDetectionZoneCount}(). - -- If you want to obtain a specific zone from the DetectedZones, use the method @{Detection#DETECTION_BASE.GetDetectionZone}() with a given index. - -- - -- ## 4.4) Flare or Smoke detected units - -- - -- Use the methods @{Detection#DETECTION_AREAS.FlareDetectedUnits}() or @{Detection#DETECTION_AREAS.SmokeDetectedUnits}() to flare or smoke the detected units when a new detection has taken place. - -- - -- ## 4.5) Flare or Smoke or Bound detected zones - -- - -- Use the methods: - -- - -- * @{Detection#DETECTION_AREAS.FlareDetectedZones}() to flare in a color - -- * @{Detection#DETECTION_AREAS.SmokeDetectedZones}() to smoke in a color - -- * @{Detection#DETECTION_AREAS.SmokeDetectedZones}() to bound with a tire with a white flag - -- - -- the detected zones when a new detection has taken place. - -- - -- @type DETECTION_AREAS - -- @field Dcs.DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. - -- @field #DETECTION_BASE.DetectedItems DetectedItems A list of areas containing the set of @{Unit}s, @{Zone}s, the center @{Unit} within the zone, and ID of each area that was detected within a DetectionZoneRange. - -- @extends #DETECTION_BASE - DETECTION_AREAS = { - ClassName = "DETECTION_AREAS", - DetectionZoneRange = nil, - } - - - --- DETECTION_AREAS constructor. - -- @param #DETECTION_AREAS self - -- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. - -- @param Dcs.DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. - -- @return #DETECTION_AREAS - function DETECTION_AREAS:New( DetectionSetGroup, DetectionZoneRange ) - - -- Inherits from DETECTION_BASE - local self = BASE:Inherit( self, DETECTION_BASE:New( DetectionSetGroup ) ) - - self.DetectionZoneRange = DetectionZoneRange - - self._SmokeDetectedUnits = false - self._FlareDetectedUnits = false - self._SmokeDetectedZones = false - self._FlareDetectedZones = false - self._BoundDetectedZones = false - - return self - end - - --- Report summary of a detected item using a given numeric index. - -- @param #DETECTION_AREAS self - -- @param Index - -- @return #string - function DETECTION_AREAS:DetectedItemReportSummary( Index ) - self:F( Index ) - - local DetectedItem = self:GetDetectedItem( Index ) - if DetectedItem then - local DetectedSet = self:GetDetectedSet( Index ) - local ReportSummaryItem - - local DetectedZone = self:GetDetectedZone( Index ) - local DetectedItemPointVec3 = DetectedZone:GetPointVec3() - local DetectedItemPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) - - local ThreatLevelA2G = self:GetTreatLevelA2G( DetectedItem ) - local DetectedItemsCount = DetectedSet:Count() - local DetectedItemsTypes = DetectedSet:GetTypeNames() - - local ReportSummary = string.format( - "%s - Threat [%s] (%2d) - %2d of %s", - DetectedItemPointLL, - string.rep( "â– ", ThreatLevelA2G ), - ThreatLevelA2G, - DetectedItemsCount, - DetectedItemsTypes - ) - - return ReportSummary - end - - return nil - end - - - --- Returns if there are friendlies nearby the FAC units ... - -- @param #DETECTION_AREAS self - -- @return #boolean trhe if there are friendlies nearby - function DETECTION_AREAS:IsFriendliesNearBy( DetectedItem ) - - self:T3( DetectedItem.FriendliesNearBy ) - return DetectedItem.FriendliesNearBy or false - end - - --- Calculate the maxium A2G threat level of the DetectedItem. - -- @param #DETECTION_AREAS self - -- @param #DETECTION_BASE.DetectedItem DetectedItem - function DETECTION_AREAS:CalculateThreatLevelA2G( DetectedItem ) - - local MaxThreatLevelA2G = 0 - for UnitName, UnitData in pairs( DetectedItem.Set:GetSet() ) do - local ThreatUnit = UnitData -- Wrapper.Unit#UNIT - local ThreatLevelA2G = ThreatUnit:GetThreatLevel() - if ThreatLevelA2G > MaxThreatLevelA2G then - MaxThreatLevelA2G = ThreatLevelA2G - end - end - - self:T3( MaxThreatLevelA2G ) - DetectedItem.MaxThreatLevelA2G = MaxThreatLevelA2G - - end - - --- Find the nearest FAC of the DetectedItem. - -- @param #DETECTION_AREAS self - -- @param #DETECTION_BASE.DetectedItem DetectedItem - -- @return Wrapper.Unit#UNIT The nearest FAC unit - function DETECTION_AREAS:NearestFAC( DetectedItem ) - - local NearestFAC = nil - local MinDistance = 1000000000 -- Units are not further than 1000000 km away from an area :-) - - for FACGroupName, FACGroupData in pairs( self.DetectionSetGroup:GetSet() ) do - for FACUnit, FACUnitData in pairs( FACGroupData:GetUnits() ) do - local FACUnit = FACUnitData -- Wrapper.Unit#UNIT - if FACUnit:IsActive() then - local Vec3 = FACUnit:GetVec3() - local PointVec3 = POINT_VEC3:NewFromVec3( Vec3 ) - local Distance = PointVec3:Get2DDistance(POINT_VEC3:NewFromVec3( FACUnit:GetVec3() ) ) - if Distance < MinDistance then - MinDistance = Distance - NearestFAC = FACUnit - end - end - end - end - - DetectedItem.NearestFAC = NearestFAC - - end - - --- Returns the A2G threat level of the units in the DetectedItem - -- @param #DETECTION_AREAS self - -- @param #DETECTION_BASE.DetectedItem DetectedItem - -- @return #number a scale from 0 to 10. - function DETECTION_AREAS:GetTreatLevelA2G( DetectedItem ) - - self:T3( DetectedItem.MaxThreatLevelA2G ) - return DetectedItem.MaxThreatLevelA2G - end - - - - --- Smoke the detected units - -- @param #DETECTION_AREAS self - -- @return #DETECTION_AREAS self - function DETECTION_AREAS:SmokeDetectedUnits() - self:F2() - - self._SmokeDetectedUnits = true - return self - end - - --- Flare the detected units - -- @param #DETECTION_AREAS self - -- @return #DETECTION_AREAS self - function DETECTION_AREAS:FlareDetectedUnits() - self:F2() - - self._FlareDetectedUnits = true - return self - end - - --- Smoke the detected zones - -- @param #DETECTION_AREAS self - -- @return #DETECTION_AREAS self - function DETECTION_AREAS:SmokeDetectedZones() - self:F2() - - self._SmokeDetectedZones = true - return self - end - - --- Flare the detected zones - -- @param #DETECTION_AREAS self - -- @return #DETECTION_AREAS self - function DETECTION_AREAS:FlareDetectedZones() - self:F2() - - self._FlareDetectedZones = true - return self - end - - --- Bound the detected zones - -- @param #DETECTION_AREAS self - -- @return #DETECTION_AREAS self - function DETECTION_AREAS:BoundDetectedZones() - self:F2() - - self._BoundDetectedZones = true - return self - end - - --- Make text documenting the changes of the detected zone. - -- @param #DETECTION_AREAS self - -- @param #DETECTION_BASE.DetectedItem DetectedItem - -- @return #string The Changes text - function DETECTION_AREAS:GetChangeText( DetectedItem ) - self:F( DetectedItem ) - - local MT = {} - - for ChangeCode, ChangeData in pairs( DetectedItem.Changes ) do - - if ChangeCode == "AA" then - MT[#MT+1] = "Detected new area " .. ChangeData.ItemID .. ". The center target is a " .. ChangeData.ItemUnitType .. "." - end - - if ChangeCode == "RAU" then - MT[#MT+1] = "Changed area " .. ChangeData.ItemID .. ". Removed the center target." - end - - if ChangeCode == "AAU" then - MT[#MT+1] = "Changed area " .. ChangeData.ItemID .. ". The new center target is a " .. ChangeData.ItemUnitType .. "." - end - - if ChangeCode == "RA" then - MT[#MT+1] = "Removed old area " .. ChangeData.ItemID .. ". No more targets in this area." - end - - if ChangeCode == "AU" then - local MTUT = {} - for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then - MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType - end - end - MT[#MT+1] = "Detected for area " .. ChangeData.ItemID .. " new target(s) " .. table.concat( MTUT, ", " ) .. "." - end - - if ChangeCode == "RU" then - local MTUT = {} - for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then - MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType - end - end - MT[#MT+1] = "Removed for area " .. ChangeData.ItemID .. " invisible or destroyed target(s) " .. table.concat( MTUT, ", " ) .. "." - end - - end - - return table.concat( MT, "\n" ) - - end - - - --- Make a DetectionSet table. This function will be overridden in the derived clsses. - -- @param #DETECTION_AREAS self - -- @return #DETECTION_AREAS self - function DETECTION_AREAS:CreateDetectionSets() - self:F2() - - - self:T( "Checking Detected Items for new Detected Units ..." ) - -- First go through all detected sets, and check if there are new detected units, match all existing detected units and identify undetected units. - -- Regroup when needed, split groups when needed. - for DetectedItemID, DetectedItemData in pairs( self.DetectedItems ) do - - local DetectedItem = DetectedItemData -- #DETECTION_BASE.DetectedItem - if DetectedItem then - - self:T( { "Detected Item ID:", DetectedItemID } ) - - - local DetectedSet = DetectedItem.Set - - local AreaExists = false -- This flag will determine of the detected area is still existing. - - -- First test if the center unit is detected in the detection area. - self:T3( { "Zone Center Unit:", DetectedItem.Zone.ZoneUNIT.UnitName } ) - local DetectedZoneObject = self:GetDetectedObject( DetectedItem.Zone.ZoneUNIT.UnitName ) - self:T3( { "Detected Zone Object:", DetectedItem.Zone:GetName(), DetectedZoneObject } ) - - if DetectedZoneObject then - - --self:IdentifyDetectedObject( DetectedZoneObject ) - AreaExists = true - - - - else - -- The center object of the detected area has not been detected. Find an other unit of the set to become the center of the area. - -- First remove the center unit from the set. - DetectedSet:RemoveUnitsByName( DetectedItem.Zone.ZoneUNIT.UnitName ) - - self:AddChangeItem( DetectedItem, 'RAU', "Dummy" ) - - -- Then search for a new center area unit within the set. Note that the new area unit candidate must be within the area range. - for DetectedUnitName, DetectedUnitData in pairs( DetectedSet:GetSet() ) do - - local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT - local DetectedObject = self:GetDetectedObject( DetectedUnit.UnitName ) - - -- The DetectedObject can be nil when the DetectedUnit is not alive anymore or it is not in the DetectedObjects map. - -- If the DetectedUnit was already identified, DetectedObject will be nil. - if DetectedObject then - self:IdentifyDetectedObject( DetectedObject ) - AreaExists = true - - DetectedItem.Zone:BoundZone( 12, self.CountryID, true) - - -- Assign the Unit as the new center unit of the detected area. - DetectedItem.Zone = ZONE_UNIT:New( DetectedUnit:GetName(), DetectedUnit, self.DetectionZoneRange ) - - self:AddChangeItem( DetectedItem, "AAU", DetectedItem.Zone.ZoneUNIT:GetTypeName() ) - - -- We don't need to add the DetectedObject to the area set, because it is already there ... - break - end - end - end - - -- Now we've determined the center unit of the area, now we can iterate the units in the detected area. - -- Note that the position of the area may have moved due to the center unit repositioning. - -- If no center unit was identified, then the detected area does not exist anymore and should be deleted, as there are no valid units that can be the center unit. - if AreaExists then - - -- ok, we found the center unit of the area, now iterate through the detected area set and see which units are still within the center unit zone ... - -- Those units within the zone are flagged as Identified. - -- If a unit was not found in the set, remove it from the set. This may be added later to other existing or new sets. - for DetectedUnitName, DetectedUnitData in pairs( DetectedSet:GetSet() ) do - - local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT - local DetectedObject = nil - if DetectedUnit:IsAlive() then - --self:E(DetectedUnit:GetName()) - DetectedObject = self:GetDetectedObject( DetectedUnit:GetName() ) - end - if DetectedObject then - - -- Check if the DetectedUnit is within the DetectedItem.Zone - if DetectedUnit:IsInZone( DetectedItem.Zone ) then - - -- Yes, the DetectedUnit is within the DetectedItem.Zone, no changes, DetectedUnit can be kept within the Set. - self:IdentifyDetectedObject( DetectedObject ) - - else - -- No, the DetectedUnit is not within the DetectedItem.Zone, remove DetectedUnit from the Set. - DetectedSet:Remove( DetectedUnitName ) - self:AddChangeUnit( DetectedItem, "RU", DetectedUnit:GetTypeName() ) - end - - else - -- There was no DetectedObject, remove DetectedUnit from the Set. - self:AddChangeUnit( DetectedItem, "RU", "destroyed target" ) - DetectedSet:Remove( DetectedUnitName ) - - -- The DetectedObject has been identified, because it does not exist ... - -- self:IdentifyDetectedObject( DetectedObject ) - end - end - else - DetectedItem.Zone:BoundZone( 12, self.CountryID, true) - self:RemoveDetectedItem( DetectedItemID ) - self:AddChangeItem( DetectedItem, "RA" ) - end - end - end - - -- We iterated through the existing detection areas and: - -- - We checked which units are still detected in each detection area. Those units were flagged as Identified. - -- - We recentered the detection area to new center units where it was needed. - -- - -- Now we need to loop through the unidentified detected units and see where they belong: - -- - They can be added to a new detection area and become the new center unit. - -- - They can be added to a new detection area. - for DetectedUnitName, DetectedObjectData in pairs( self.DetectedObjects ) do - - local DetectedObject = self:GetDetectedObject( DetectedUnitName ) - - if DetectedObject then - - -- We found an unidentified unit outside of any existing detection area. - local DetectedUnit = UNIT:FindByName( DetectedUnitName ) -- Wrapper.Unit#UNIT - - local AddedToDetectionArea = false - - for DetectedItemID, DetectedItemData in pairs( self.DetectedItems ) do - - local DetectedItem = DetectedItemData -- #DETECTION_BASE.DetectedItem - if DetectedItem then - self:T( "Detection Area #" .. DetectedItem.ItemID ) - local DetectedSet = DetectedItem.Set - if not self:IsDetectedObjectIdentified( DetectedObject ) and DetectedUnit:IsInZone( DetectedItem.Zone ) then - self:IdentifyDetectedObject( DetectedObject ) - DetectedSet:AddUnit( DetectedUnit ) - AddedToDetectionArea = true - self:AddChangeUnit( DetectedItem, "AU", DetectedUnit:GetTypeName() ) - end - end - end - - if AddedToDetectionArea == false then - - -- New detection area - local DetectedItem = self:AddDetectedItemZone( nil, - SET_UNIT:New(), - ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) - ) - --self:E( DetectedItem.Zone.ZoneUNIT.UnitName ) - DetectedItem.Set:AddUnit( DetectedUnit ) - self:AddChangeItem( DetectedItem, "AA", DetectedUnit:GetTypeName() ) - end - end - end - - -- Now all the tests should have been build, now make some smoke and flares... - -- We also report here the friendlies within the detected areas. - - for DetectedItemID, DetectedItemData in pairs( self.DetectedItems ) do - - local DetectedItem = DetectedItemData -- #DETECTION_BASE.DetectedItem - local DetectedSet = DetectedItem.Set - local DetectedZone = DetectedItem.Zone - - self:ReportFriendliesNearBy( { DetectedItem = DetectedItem, ReportSetGroup = self.DetectionSetGroup } ) -- Fill the Friendlies table - self:CalculateThreatLevelA2G( DetectedItem ) -- Calculate A2G threat level - self:NearestFAC( DetectedItem ) - - if DETECTION_AREAS._SmokeDetectedUnits or self._SmokeDetectedUnits then - DetectedZone.ZoneUNIT:SmokeRed() - end - DetectedSet:ForEachUnit( - --- @param Wrapper.Unit#UNIT DetectedUnit - function( DetectedUnit ) - if DetectedUnit:IsAlive() then - self:T( "Detected Set #" .. DetectedItem.ItemID .. ":" .. DetectedUnit:GetName() ) - if DETECTION_AREAS._FlareDetectedUnits or self._FlareDetectedUnits then - DetectedUnit:FlareGreen() - end - if DETECTION_AREAS._SmokeDetectedUnits or self._SmokeDetectedUnits then - DetectedUnit:SmokeGreen() - end - end - end - ) - if DETECTION_AREAS._FlareDetectedZones or self._FlareDetectedZones then - DetectedZone:FlareZone( SMOKECOLOR.White, 30, math.random( 0,90 ) ) - end - if DETECTION_AREAS._SmokeDetectedZones or self._SmokeDetectedZones then - DetectedZone:SmokeZone( SMOKECOLOR.White, 30 ) - end - - if DETECTION_AREAS._BoundDetectedZones or self._BoundDetectedZones then - DetectedZone:BoundZone( 12, self.CountryID ) - end - end - - end - -end ---- Single-Player:**No** / Multi-Player:**Yes** / AI:**Yes** / Human:**No** / Types:**All** -- **AI Balancing will replace in multi player missions --- non-occupied human slots with AI groups, in order to provide an engaging simulation environment, --- even when there are hardly any players in the mission.** --- --- ![Banner Image](..\Presentations\AI_Balancer\Dia1.JPG) --- --- === --- --- # 1) @{AI_Balancer#AI_BALANCER} class, extends @{Fsm#FSM_SET} --- --- The @{AI_Balancer#AI_BALANCER} class monitors and manages as many replacement AI groups as there are --- CLIENTS in a SET_CLIENT collection, which are not occupied by human players. --- In other words, use AI_BALANCER to simulate human behaviour by spawning in replacement AI in multi player missions. --- --- The parent class @{Fsm#FSM_SET} manages the functionality to control the Finite State Machine (FSM). --- The mission designer can tailor the behaviour of the AI_BALANCER, by defining event and state transition methods. --- An explanation about state and event transition methods can be found in the @{FSM} module documentation. --- --- The mission designer can tailor the AI_BALANCER behaviour, by implementing a state or event handling method for the following: --- --- * **@{#AI_BALANCER.OnAfterSpawned}**( AISet, From, Event, To, AIGroup ): Define to add extra logic when an AI is spawned. --- --- ## 1.1) AI_BALANCER construction --- --- Create a new AI_BALANCER object with the @{#AI_BALANCER.New}() method: --- --- ## 1.2) AI_BALANCER is a FSM --- --- ![Process](..\Presentations\AI_Balancer\Dia13.JPG) --- --- ### 1.2.1) AI_BALANCER States --- --- * **Monitoring** ( Set ): Monitoring the Set if all AI is spawned for the Clients. --- * **Spawning** ( Set, ClientName ): There is a new AI group spawned with ClientName as the name of reference. --- * **Spawned** ( Set, AIGroup ): A new AI has been spawned. You can handle this event to customize the AI behaviour with other AI FSMs or own processes. --- * **Destroying** ( Set, AIGroup ): The AI is being destroyed. --- * **Returning** ( Set, AIGroup ): The AI is returning to the airbase specified by the ReturnToAirbase methods. Handle this state to customize the return behaviour of the AI, if any. --- --- ### 1.2.2) AI_BALANCER Events --- --- * **Monitor** ( Set ): Every 10 seconds, the Monitor event is triggered to monitor the Set. --- * **Spawn** ( Set, ClientName ): Triggers when there is a new AI group to be spawned with ClientName as the name of reference. --- * **Spawned** ( Set, AIGroup ): Triggers when a new AI has been spawned. You can handle this event to customize the AI behaviour with other AI FSMs or own processes. --- * **Destroy** ( Set, AIGroup ): The AI is being destroyed. --- * **Return** ( Set, AIGroup ): The AI is returning to the airbase specified by the ReturnToAirbase methods. --- --- ## 1.3) AI_BALANCER spawn interval for replacement AI --- --- Use the method @{#AI_BALANCER.InitSpawnInterval}() to set the earliest and latest interval in seconds that is waited until a new replacement AI is spawned. --- --- ## 1.4) AI_BALANCER returns AI to Airbases --- --- By default, When a human player joins a slot that is AI_BALANCED, the AI group will be destroyed by default. --- However, there are 2 additional options that you can use to customize the destroy behaviour. --- When a human player joins a slot, you can configure to let the AI return to: --- --- * @{#AI_BALANCER.ReturnToHomeAirbase}: Returns the AI to the **home** @{Airbase#AIRBASE}. --- * @{#AI_BALANCER.ReturnToNearestAirbases}: Returns the AI to the **nearest friendly** @{Airbase#AIRBASE}. --- --- Note that when AI returns to an airbase, the AI_BALANCER will trigger the **Return** event and the AI will return, --- otherwise the AI_BALANCER will trigger a **Destroy** event, and the AI will be destroyed. --- --- === --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-01-17: There is still a problem with AI being destroyed, but not respawned. Need to check further upon that. --- --- 2017-01-08: AI_BALANCER:**InitSpawnInterval( Earliest, Latest )** added. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * **[Dutch_Baron](https://forums.eagle.ru/member.php?u=112075)**: Working together with James has resulted in the creation of the AI_BALANCER class. James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-) --- * **SNAFU**: Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. None of the script code has been used however within the new AI_BALANCER moose class. --- --- ### Authors: --- --- * FlightControl: Framework Design & Programming and Documentation. --- --- @module AI_Balancer - ---- AI_BALANCER class --- @type AI_BALANCER --- @field Core.Set#SET_CLIENT SetClient --- @field Functional.Spawn#SPAWN SpawnAI --- @field Wrapper.Group#GROUP Test --- @extends Core.Fsm#FSM_SET -AI_BALANCER = { - ClassName = "AI_BALANCER", - PatrolZones = {}, - AIGroups = {}, - Earliest = 5, -- Earliest a new AI can be spawned is in 5 seconds. - Latest = 60, -- Latest a new AI can be spawned is in 60 seconds. -} - - - ---- Creates a new AI_BALANCER object --- @param #AI_BALANCER self --- @param Core.Set#SET_CLIENT SetClient A SET\_CLIENT object that will contain the CLIENT objects to be monitored if they are alive or not (joined by a player). --- @param Functional.Spawn#SPAWN SpawnAI The default Spawn object to spawn new AI Groups when needed. --- @return #AI_BALANCER -function AI_BALANCER:New( SetClient, SpawnAI ) - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM_SET:New( SET_GROUP:New() ) ) -- AI.AI_Balancer#AI_BALANCER - - -- TODO: Define the OnAfterSpawned event - self:SetStartState( "None" ) - self:AddTransition( "*", "Monitor", "Monitoring" ) - self:AddTransition( "*", "Spawn", "Spawning" ) - self:AddTransition( "Spawning", "Spawned", "Spawned" ) - self:AddTransition( "*", "Destroy", "Destroying" ) - self:AddTransition( "*", "Return", "Returning" ) - - self.SetClient = SetClient - self.SetClient:FilterOnce() - self.SpawnAI = SpawnAI - - self.SpawnQueue = {} - - self.ToNearestAirbase = false - self.ToHomeAirbase = false - - self:__Monitor( 1 ) - - return self -end - ---- Sets the earliest to the latest interval in seconds how long AI_BALANCER will wait to spawn a new AI. --- Provide 2 identical seconds if the interval should be a fixed amount of seconds. --- @param #AI_BALANCER self --- @param #number Earliest The earliest a new AI can be spawned in seconds. --- @param #number Latest The latest a new AI can be spawned in seconds. --- @return self -function AI_BALANCER:InitSpawnInterval( Earliest, Latest ) - - self.Earliest = Earliest - self.Latest = Latest - - return self -end - ---- Returns the AI to the nearest friendly @{Airbase#AIRBASE}. --- @param #AI_BALANCER self --- @param Dcs.DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. --- @param Core.Set#SET_AIRBASE ReturnAirbaseSet The SET of @{Set#SET_AIRBASE}s to evaluate where to return to. -function AI_BALANCER:ReturnToNearestAirbases( ReturnTresholdRange, ReturnAirbaseSet ) - - self.ToNearestAirbase = true - self.ReturnTresholdRange = ReturnTresholdRange - self.ReturnAirbaseSet = ReturnAirbaseSet -end - ---- Returns the AI to the home @{Airbase#AIRBASE}. --- @param #AI_BALANCER self --- @param Dcs.DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. -function AI_BALANCER:ReturnToHomeAirbase( ReturnTresholdRange ) - - self.ToHomeAirbase = true - self.ReturnTresholdRange = ReturnTresholdRange -end - ---- @param #AI_BALANCER self --- @param Core.Set#SET_GROUP SetGroup --- @param #string ClientName --- @param Wrapper.Group#GROUP AIGroup -function AI_BALANCER:onenterSpawning( SetGroup, From, Event, To, ClientName ) - - -- OK, Spawn a new group from the default SpawnAI object provided. - local AIGroup = self.SpawnAI:Spawn() -- Wrapper.Group#GROUP - if AIGroup then - AIGroup:E( "Spawning new AIGroup" ) - --TODO: need to rework UnitName thing ... - - SetGroup:Add( ClientName, AIGroup ) - self.SpawnQueue[ClientName] = nil - - -- Fire the Spawned event. The first parameter is the AIGroup just Spawned. - -- Mission designers can catch this event to bind further actions to the AIGroup. - self:Spawned( AIGroup ) - end -end - ---- @param #AI_BALANCER self --- @param Core.Set#SET_GROUP SetGroup --- @param Wrapper.Group#GROUP AIGroup -function AI_BALANCER:onenterDestroying( SetGroup, From, Event, To, ClientName, AIGroup ) - - AIGroup:Destroy() - SetGroup:Flush() - SetGroup:Remove( ClientName ) - SetGroup:Flush() -end - ---- @param #AI_BALANCER self --- @param Core.Set#SET_GROUP SetGroup --- @param Wrapper.Group#GROUP AIGroup -function AI_BALANCER:onenterReturning( SetGroup, From, Event, To, AIGroup ) - - local AIGroupTemplate = AIGroup:GetTemplate() - if self.ToHomeAirbase == true then - local WayPointCount = #AIGroupTemplate.route.points - local SwitchWayPointCommand = AIGroup:CommandSwitchWayPoint( 1, WayPointCount, 1 ) - AIGroup:SetCommand( SwitchWayPointCommand ) - AIGroup:MessageToRed( "Returning to home base ...", 30 ) - else - -- Okay, we need to send this Group back to the nearest base of the Coalition of the AI. - --TODO: i need to rework the POINT_VEC2 thing. - local PointVec2 = POINT_VEC2:New( AIGroup:GetVec2().x, AIGroup:GetVec2().y ) - local ClosestAirbase = self.ReturnAirbaseSet:FindNearestAirbaseFromPointVec2( PointVec2 ) - self:T( ClosestAirbase.AirbaseName ) - AIGroup:MessageToRed( "Returning to " .. ClosestAirbase:GetName().. " ...", 30 ) - local RTBRoute = AIGroup:RouteReturnToAirbase( ClosestAirbase ) - AIGroupTemplate.route = RTBRoute - AIGroup:Respawn( AIGroupTemplate ) - end - -end - - ---- @param #AI_BALANCER self -function AI_BALANCER:onenterMonitoring( SetGroup ) - - self:T2( { self.SetClient:Count() } ) - --self.SetClient:Flush() - - self.SetClient:ForEachClient( - --- @param Wrapper.Client#CLIENT Client - function( Client ) - self:T3(Client.ClientName) - - local AIGroup = self.Set:Get( Client.UnitName ) -- Wrapper.Group#GROUP - if Client:IsAlive() then - - if AIGroup and AIGroup:IsAlive() == true then - - if self.ToNearestAirbase == false and self.ToHomeAirbase == false then - self:Destroy( Client.UnitName, AIGroup ) - else - -- We test if there is no other CLIENT within the self.ReturnTresholdRange of the first unit of the AI group. - -- If there is a CLIENT, the AI stays engaged and will not return. - -- If there is no CLIENT within the self.ReturnTresholdRange, then the unit will return to the Airbase return method selected. - - local PlayerInRange = { Value = false } - local RangeZone = ZONE_RADIUS:New( 'RangeZone', AIGroup:GetVec2(), self.ReturnTresholdRange ) - - self:T2( RangeZone ) - - _DATABASE:ForEachPlayer( - --- @param Wrapper.Unit#UNIT RangeTestUnit - function( RangeTestUnit, RangeZone, AIGroup, PlayerInRange ) - self:T2( { PlayerInRange, RangeTestUnit.UnitName, RangeZone.ZoneName } ) - if RangeTestUnit:IsInZone( RangeZone ) == true then - self:T2( "in zone" ) - if RangeTestUnit:GetCoalition() ~= AIGroup:GetCoalition() then - self:T2( "in range" ) - PlayerInRange.Value = true - end - end - end, - - --- @param Core.Zone#ZONE_RADIUS RangeZone - -- @param Wrapper.Group#GROUP AIGroup - function( RangeZone, AIGroup, PlayerInRange ) - if PlayerInRange.Value == false then - self:Return( AIGroup ) - end - end - , RangeZone, AIGroup, PlayerInRange - ) - - end - self.Set:Remove( Client.UnitName ) - end - else - if not AIGroup or not AIGroup:IsAlive() == true then - self:T( "Client " .. Client.UnitName .. " not alive." ) - if not self.SpawnQueue[Client.UnitName] then - -- Spawn a new AI taking into account the spawn interval Earliest, Latest - self:__Spawn( math.random( self.Earliest, self.Latest ), Client.UnitName ) - self.SpawnQueue[Client.UnitName] = true - self:E( "New AI Spawned for Client " .. Client.UnitName ) - end - end - end - return true - end - ) - - self:__Monitor( 10 ) -end - - - ---- **AI** -- **Air Patrolling or Staging.** --- --- ![Banner Image](..\Presentations\AI_PATROL\Dia1.JPG) --- --- === --- --- AI PATROL classes makes AI Controllables execute an Patrol. --- --- There are the following types of PATROL classes defined: --- --- * @{#AI_PATROL_ZONE}: Perform a PATROL in a zone. --- --- ==== --- --- # **OPEN ISSUES** --- --- 2017-01-17: When Spawned AI is located at an airbase, it will be routed first back to the airbase after take-off. --- --- 2016-01-17: --- -- Fixed problem with AI returning to base too early and unexpected. --- -- ReSpawning of AI will reset the AI_PATROL and derived classes. --- -- Checked the correct workings of SCHEDULER, and it DOES work correctly. --- --- ==== --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-01-17: Rename of class: **AI\_PATROL\_ZONE** is the new name for the old _AI\_PATROLZONE_. --- --- 2017-01-15: Complete revision. AI_PATROL_ZONE is the base class for other AI_PATROL like classes. --- --- 2016-09-01: Initial class and API. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * **[Dutch_Baron](https://forums.eagle.ru/member.php?u=112075)**: Working together with James has resulted in the creation of the AI_BALANCER class. James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-) --- * **[Pikey](https://forums.eagle.ru/member.php?u=62835)**: Testing and API concept review. --- --- ### Authors: --- --- * **FlightControl**: Design & Programming. --- --- @module AI_Patrol - ---- AI_PATROL_ZONE class --- @type AI_PATROL_ZONE --- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. --- @field Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. --- @field Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. --- @field Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. --- @field Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. --- @field Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. --- @field Functional.Spawn#SPAWN CoordTest --- @extends Core.Fsm#FSM_CONTROLLABLE - ---- # 1) @{#AI_PATROL_ZONE} class, extends @{Fsm#FSM_CONTROLLABLE} --- --- The @{#AI_PATROL_ZONE} class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}. --- --- ![Process](..\Presentations\AI_PATROL\Dia3.JPG) --- --- The AI_PATROL_ZONE is assigned a @{Group} and this must be done before the AI_PATROL_ZONE process can be started using the **Start** event. --- --- ![Process](..\Presentations\AI_PATROL\Dia4.JPG) --- --- The AI will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits. --- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. --- --- ![Process](..\Presentations\AI_PATROL\Dia5.JPG) --- --- This cycle will continue. --- --- ![Process](..\Presentations\AI_PATROL\Dia6.JPG) --- --- During the patrol, the AI will detect enemy targets, which are reported through the **Detected** event. --- --- ![Process](..\Presentations\AI_PATROL\Dia9.JPG) --- ----- Note that the enemy is not engaged! To model enemy engagement, either tailor the **Detected** event, or --- use derived AI_ classes to model AI offensive or defensive behaviour. --- --- ![Process](..\Presentations\AI_PATROL\Dia10.JPG) --- --- Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. --- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land. --- --- ![Process](..\Presentations\AI_PATROL\Dia11.JPG) --- --- ## 1.1) AI_PATROL_ZONE constructor --- --- * @{#AI_PATROL_ZONE.New}(): Creates a new AI_PATROL_ZONE object. --- --- ## 1.2) AI_PATROL_ZONE is a FSM --- --- ![Process](..\Presentations\AI_PATROL\Dia2.JPG) --- --- ### 1.2.1) AI_PATROL_ZONE States --- --- * **None** ( Group ): The process is not started yet. --- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone. --- * **Returning** ( Group ): The AI is returning to Base. --- * **Stopped** ( Group ): The process is stopped. --- * **Crashed** ( Group ): The AI has crashed or is dead. --- --- ### 1.2.2) AI_PATROL_ZONE Events --- --- * **Start** ( Group ): Start the process. --- * **Stop** ( Group ): Stop the process. --- * **Route** ( Group ): Route the AI to a new random 3D point within the Patrol Zone. --- * **RTB** ( Group ): Route the AI to the home base. --- * **Detect** ( Group ): The AI is detecting targets. --- * **Detected** ( Group ): The AI has detected new targets. --- * **Status** ( Group ): The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB. --- --- ## 1.3) Set or Get the AI controllable --- --- * @{#AI_PATROL_ZONE.SetControllable}(): Set the AIControllable. --- * @{#AI_PATROL_ZONE.GetControllable}(): Get the AIControllable. --- --- ## 1.4) Set the Speed and Altitude boundaries of the AI controllable --- --- * @{#AI_PATROL_ZONE.SetSpeed}(): Set the patrol speed boundaries of the AI, for the next patrol. --- * @{#AI_PATROL_ZONE.SetAltitude}(): Set altitude boundaries of the AI, for the next patrol. --- --- ## 1.5) Manage the detection process of the AI controllable --- --- The detection process of the AI controllable can be manipulated. --- Detection requires an amount of CPU power, which has an impact on your mission performance. --- Only put detection on when absolutely necessary, and the frequency of the detection can also be set. --- --- * @{#AI_PATROL_ZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets. --- * @{#AI_PATROL_ZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased. --- --- The detection frequency can be set with @{#AI_PATROL_ZONE.SetDetectionInterval}( seconds ), where the amount of seconds specify how much seconds will be waited before the next detection. --- Use the method @{#AI_PATROL_ZONE.GetDetectedUnits}() to obtain a list of the @{Unit}s detected by the AI. --- --- The detection can be filtered to potential targets in a specific zone. --- Use the method @{#AI_PATROL_ZONE.SetDetectionZone}() to set the zone where targets need to be detected. --- Note that when the zone is too far away, or the AI is not heading towards the zone, or the AI is too high, no targets may be detected --- according the weather conditions. --- --- ## 1.6) Manage the "out of fuel" in the AI_PATROL_ZONE --- --- When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. --- Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. --- When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, --- while a new AI is targetted to the AI_PATROL_ZONE. --- Once the time is finished, the old AI will return to the base. --- Use the method @{#AI_PATROL_ZONE.ManageFuel}() to have this proces in place. --- --- ## 1.7) Manage "damage" behaviour of the AI in the AI_PATROL_ZONE --- --- When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on. --- Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB). --- Use the method @{#AI_PATROL_ZONE.ManageDamage}() to have this proces in place. --- --- === --- --- @field #AI_PATROL_ZONE AI_PATROL_ZONE --- -AI_PATROL_ZONE = { - ClassName = "AI_PATROL_ZONE", -} - ---- Creates a new AI_PATROL_ZONE object --- @param #AI_PATROL_ZONE self --- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. --- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. --- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. --- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. --- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. --- @param Dcs.DCSTypes#AltitudeType PatrolAltType The altitude type ("RADIO"=="AGL", "BARO"=="ASL"). Defaults to RADIO --- @return #AI_PATROL_ZONE self --- @usage --- -- Define a new AI_PATROL_ZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h. --- PatrolZone = ZONE:New( 'PatrolZone' ) --- PatrolSpawn = SPAWN:New( 'Patrol Group' ) --- PatrolArea = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 600, 900 ) -function AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType ) - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- #AI_PATROL_ZONE - - - self.PatrolZone = PatrolZone - self.PatrolFloorAltitude = PatrolFloorAltitude - self.PatrolCeilingAltitude = PatrolCeilingAltitude - self.PatrolMinSpeed = PatrolMinSpeed - self.PatrolMaxSpeed = PatrolMaxSpeed - - -- defafult PatrolAltType to "RADIO" if not specified - self.PatrolAltType = PatrolAltType or "RADIO" - - self:SetDetectionInterval( 30 ) - - self.CheckStatus = true - - self:ManageFuel( .2, 60 ) - self:ManageDamage( 1 ) - - - self.DetectedUnits = {} -- This table contains the targets detected during patrol. - - self:SetStartState( "None" ) - - self:AddTransition( "*", "Stop", "Stopped" ) - ---- OnLeave Transition Handler for State Stopped. --- @function [parent=#AI_PATROL_ZONE] OnLeaveStopped --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnEnter Transition Handler for State Stopped. --- @function [parent=#AI_PATROL_ZONE] OnEnterStopped --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - ---- OnBefore Transition Handler for Event Stop. --- @function [parent=#AI_PATROL_ZONE] OnBeforeStop --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnAfter Transition Handler for Event Stop. --- @function [parent=#AI_PATROL_ZONE] OnAfterStop --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - ---- Synchronous Event Trigger for Event Stop. --- @function [parent=#AI_PATROL_ZONE] Stop --- @param #AI_PATROL_ZONE self - ---- Asynchronous Event Trigger for Event Stop. --- @function [parent=#AI_PATROL_ZONE] __Stop --- @param #AI_PATROL_ZONE self --- @param #number Delay The delay in seconds. - - self:AddTransition( "None", "Start", "Patrolling" ) - ---- OnBefore Transition Handler for Event Start. --- @function [parent=#AI_PATROL_ZONE] OnBeforeStart --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnAfter Transition Handler for Event Start. --- @function [parent=#AI_PATROL_ZONE] OnAfterStart --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - ---- Synchronous Event Trigger for Event Start. --- @function [parent=#AI_PATROL_ZONE] Start --- @param #AI_PATROL_ZONE self - ---- Asynchronous Event Trigger for Event Start. --- @function [parent=#AI_PATROL_ZONE] __Start --- @param #AI_PATROL_ZONE self --- @param #number Delay The delay in seconds. - ---- OnLeave Transition Handler for State Patrolling. --- @function [parent=#AI_PATROL_ZONE] OnLeavePatrolling --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnEnter Transition Handler for State Patrolling. --- @function [parent=#AI_PATROL_ZONE] OnEnterPatrolling --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - - self:AddTransition( "Patrolling", "Route", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE. - ---- OnBefore Transition Handler for Event Route. --- @function [parent=#AI_PATROL_ZONE] OnBeforeRoute --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnAfter Transition Handler for Event Route. --- @function [parent=#AI_PATROL_ZONE] OnAfterRoute --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - ---- Synchronous Event Trigger for Event Route. --- @function [parent=#AI_PATROL_ZONE] Route --- @param #AI_PATROL_ZONE self - ---- Asynchronous Event Trigger for Event Route. --- @function [parent=#AI_PATROL_ZONE] __Route --- @param #AI_PATROL_ZONE self --- @param #number Delay The delay in seconds. - - self:AddTransition( "*", "Status", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE. - ---- OnBefore Transition Handler for Event Status. --- @function [parent=#AI_PATROL_ZONE] OnBeforeStatus --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnAfter Transition Handler for Event Status. --- @function [parent=#AI_PATROL_ZONE] OnAfterStatus --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - ---- Synchronous Event Trigger for Event Status. --- @function [parent=#AI_PATROL_ZONE] Status --- @param #AI_PATROL_ZONE self - ---- Asynchronous Event Trigger for Event Status. --- @function [parent=#AI_PATROL_ZONE] __Status --- @param #AI_PATROL_ZONE self --- @param #number Delay The delay in seconds. - - self:AddTransition( "*", "Detect", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE. - ---- OnBefore Transition Handler for Event Detect. --- @function [parent=#AI_PATROL_ZONE] OnBeforeDetect --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnAfter Transition Handler for Event Detect. --- @function [parent=#AI_PATROL_ZONE] OnAfterDetect --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - ---- Synchronous Event Trigger for Event Detect. --- @function [parent=#AI_PATROL_ZONE] Detect --- @param #AI_PATROL_ZONE self - ---- Asynchronous Event Trigger for Event Detect. --- @function [parent=#AI_PATROL_ZONE] __Detect --- @param #AI_PATROL_ZONE self --- @param #number Delay The delay in seconds. - - self:AddTransition( "*", "Detected", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE. - ---- OnBefore Transition Handler for Event Detected. --- @function [parent=#AI_PATROL_ZONE] OnBeforeDetected --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnAfter Transition Handler for Event Detected. --- @function [parent=#AI_PATROL_ZONE] OnAfterDetected --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - ---- Synchronous Event Trigger for Event Detected. --- @function [parent=#AI_PATROL_ZONE] Detected --- @param #AI_PATROL_ZONE self - ---- Asynchronous Event Trigger for Event Detected. --- @function [parent=#AI_PATROL_ZONE] __Detected --- @param #AI_PATROL_ZONE self --- @param #number Delay The delay in seconds. - - self:AddTransition( "*", "RTB", "Returning" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE. - ---- OnBefore Transition Handler for Event RTB. --- @function [parent=#AI_PATROL_ZONE] OnBeforeRTB --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnAfter Transition Handler for Event RTB. --- @function [parent=#AI_PATROL_ZONE] OnAfterRTB --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - ---- Synchronous Event Trigger for Event RTB. --- @function [parent=#AI_PATROL_ZONE] RTB --- @param #AI_PATROL_ZONE self - ---- Asynchronous Event Trigger for Event RTB. --- @function [parent=#AI_PATROL_ZONE] __RTB --- @param #AI_PATROL_ZONE self --- @param #number Delay The delay in seconds. - ---- OnLeave Transition Handler for State Returning. --- @function [parent=#AI_PATROL_ZONE] OnLeaveReturning --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnEnter Transition Handler for State Returning. --- @function [parent=#AI_PATROL_ZONE] OnEnterReturning --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - - self:AddTransition( "*", "Reset", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE. - - self:AddTransition( "*", "Eject", "*" ) - self:AddTransition( "*", "Crash", "Crashed" ) - self:AddTransition( "*", "PilotDead", "*" ) - - return self -end - - - - ---- Sets (modifies) the minimum and maximum speed of the patrol. --- @param #AI_PATROL_ZONE self --- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. --- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed ) - self:F2( { PatrolMinSpeed, PatrolMaxSpeed } ) - - self.PatrolMinSpeed = PatrolMinSpeed - self.PatrolMaxSpeed = PatrolMaxSpeed -end - - - ---- Sets the floor and ceiling altitude of the patrol. --- @param #AI_PATROL_ZONE self --- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. --- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude ) - self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } ) - - self.PatrolFloorAltitude = PatrolFloorAltitude - self.PatrolCeilingAltitude = PatrolCeilingAltitude -end - --- * @{#AI_PATROL_ZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets. --- * @{#AI_PATROL_ZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased. - ---- Set the detection on. The AI will detect for targets. --- @param #AI_PATROL_ZONE self --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetDetectionOn() - self:F2() - - self.DetectOn = true -end - ---- Set the detection off. The AI will NOT detect for targets. --- However, the list of already detected targets will be kept and can be enquired! --- @param #AI_PATROL_ZONE self --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetDetectionOff() - self:F2() - - self.DetectOn = false -end - ---- Set the status checking off. --- @param #AI_PATROL_ZONE self --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetStatusOff() - self:F2() - - self.CheckStatus = false -end - ---- Activate the detection. The AI will detect for targets if the Detection is switched On. --- @param #AI_PATROL_ZONE self --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetDetectionActivated() - self:F2() - - self:ClearDetectedUnits() - self.DetectActivated = true - self:__Detect( -self.DetectInterval ) -end - ---- Deactivate the detection. The AI will NOT detect for targets. --- @param #AI_PATROL_ZONE self --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetDetectionDeactivated() - self:F2() - - self:ClearDetectedUnits() - self.DetectActivated = false -end - ---- Set the interval in seconds between each detection executed by the AI. --- The list of already detected targets will be kept and updated. --- Newly detected targets will be added, but already detected targets that were --- not detected in this cycle, will NOT be removed! --- The default interval is 30 seconds. --- @param #AI_PATROL_ZONE self --- @param #number Seconds The interval in seconds. --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetDetectionInterval( Seconds ) - self:F2() - - if Seconds then - self.DetectInterval = Seconds - else - self.DetectInterval = 30 - end -end - ---- Set the detection zone where the AI is detecting targets. --- @param #AI_PATROL_ZONE self --- @param Core.Zone#ZONE DetectionZone The zone where to detect targets. --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:SetDetectionZone( DetectionZone ) - self:F2() - - if DetectionZone then - self.DetectZone = DetectionZone - else - self.DetectZone = nil - end -end - ---- Gets a list of @{Unit#UNIT}s that were detected by the AI. --- No filtering is applied, so, ANY detected UNIT can be in this list. --- It is up to the mission designer to use the @{Unit} class and methods to filter the targets. --- @param #AI_PATROL_ZONE self --- @return #table The list of @{Unit#UNIT}s -function AI_PATROL_ZONE:GetDetectedUnits() - self:F2() - - return self.DetectedUnits -end - ---- Clears the list of @{Unit#UNIT}s that were detected by the AI. --- @param #AI_PATROL_ZONE self -function AI_PATROL_ZONE:ClearDetectedUnits() - self:F2() - self.DetectedUnits = {} -end - ---- When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. --- Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. --- When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE. --- Once the time is finished, the old AI will return to the base. --- @param #AI_PATROL_ZONE self --- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel. --- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel AIControllable will orbit before returning to the base. --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime ) - - self.PatrolManageFuel = true - self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage - self.PatrolOutOfFuelOrbitTime = PatrolOutOfFuelOrbitTime - - return self -end - ---- When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base. --- However, damage cannot be foreseen early on. --- Therefore, when the damage treshold is reached, --- the AI will return immediately to the home base (RTB). --- Note that for groups, the average damage of the complete group will be calculated. --- So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25. --- @param #AI_PATROL_ZONE self --- @param #number PatrolDamageTreshold The treshold in percentage (between 0 and 1) when the AI is considered to be damaged. --- @return #AI_PATROL_ZONE self -function AI_PATROL_ZONE:ManageDamage( PatrolDamageTreshold ) - - self.PatrolManageDamage = true - self.PatrolDamageTreshold = PatrolDamageTreshold - - return self -end - ---- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings. --- @param #AI_PATROL_ZONE self --- @return #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_PATROL_ZONE:onafterStart( Controllable, From, Event, To ) - self:F2() - - self:__Route( 1 ) -- Route to the patrol point. The asynchronous trigger is important, because a spawned group and units takes at least one second to come live. - self:__Status( 60 ) -- Check status status every 30 seconds. - self:SetDetectionActivated() - - self:HandleEvent( EVENTS.PilotDead, self.OnPilotDead ) - self:HandleEvent( EVENTS.Crash, self.OnCrash ) - self:HandleEvent( EVENTS.Ejection, self.OnEjection ) - - Controllable:OptionROEHoldFire() - Controllable:OptionROTVertical() - - self.Controllable:OnReSpawn( - function( PatrolGroup ) - self:E( "ReSpawn" ) - self:__Reset( 1 ) - self:__Route( 5 ) - end - ) - - self:SetDetectionOn() - -end - - ---- @param #AI_PATROL_ZONE self ---- @param Wrapper.Controllable#CONTROLLABLE Controllable -function AI_PATROL_ZONE:onbeforeDetect( Controllable, From, Event, To ) - - return self.DetectOn and self.DetectActivated -end - ---- @param #AI_PATROL_ZONE self ---- @param Wrapper.Controllable#CONTROLLABLE Controllable -function AI_PATROL_ZONE:onafterDetect( Controllable, From, Event, To ) - - local Detected = false - - local DetectedTargets = Controllable:GetDetectedTargets() - for TargetID, Target in pairs( DetectedTargets or {} ) do - local TargetObject = Target.object - - if TargetObject and TargetObject:isExist() and TargetObject.id_ < 50000000 then - - local TargetUnit = UNIT:Find( TargetObject ) - local TargetUnitName = TargetUnit:GetName() - - if self.DetectionZone then - if TargetUnit:IsInZone( self.DetectionZone ) then - self:T( {"Detected ", TargetUnit } ) - if self.DetectedUnits[TargetUnit] == nil then - self.DetectedUnits[TargetUnit] = true - end - Detected = true - end - else - if self.DetectedUnits[TargetUnit] == nil then - self.DetectedUnits[TargetUnit] = true - end - Detected = true - end - end - end - - self:__Detect( -self.DetectInterval ) - - if Detected == true then - self:__Detected( 1.5 ) - end - -end - ---- @param Wrapper.Controllable#CONTROLLABLE AIControllable --- This statis method is called from the route path within the last task at the last waaypoint of the Controllable. --- Note that this method is required, as triggers the next route when patrolling for the Controllable. -function AI_PATROL_ZONE:_NewPatrolRoute( AIControllable ) - - local PatrolZone = AIControllable:GetState( AIControllable, "PatrolZone" ) -- PatrolCore.Zone#AI_PATROL_ZONE - PatrolZone:__Route( 1 ) -end - - ---- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings. --- @param #AI_PATROL_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_PATROL_ZONE:onafterRoute( Controllable, From, Event, To ) - - self:F2() - - -- When RTB, don't allow anymore the routing. - if From == "RTB" then - return - end - - - if self.Controllable:IsAlive() then - -- Determine if the AIControllable is within the PatrolZone. - -- If not, make a waypoint within the to that the AIControllable will fly at maximum speed to that point. - - local PatrolRoute = {} - - -- Calculate the current route point of the controllable as the start point of the route. - -- However, when the controllable is not in the air, - -- the controllable current waypoint is probably the airbase... - -- Thus, if we would take the current waypoint as the startpoint, upon take-off, the controllable flies - -- immediately back to the airbase, and this is not correct. - -- Therefore, when on a runway, get as the current route point a random point within the PatrolZone. - -- This will make the plane fly immediately to the patrol zone. - - if self.Controllable:InAir() == false then - self:E( "Not in the air, finding route path within PatrolZone" ) - local CurrentVec2 = self.Controllable:GetVec2() - --TODO: Create GetAltitude function for GROUP, and delete GetUnit(1). - local CurrentAltitude = self.Controllable:GetUnit(1):GetAltitude() - local CurrentPointVec3 = POINT_VEC3:New( CurrentVec2.x, CurrentAltitude, CurrentVec2.y ) - local ToPatrolZoneSpeed = self.PatrolMaxSpeed - local CurrentRoutePoint = CurrentPointVec3:RoutePointAir( - self.PatrolAltType, - POINT_VEC3.RoutePointType.TakeOffParking, - POINT_VEC3.RoutePointAction.FromParkingArea, - ToPatrolZoneSpeed, - true - ) - PatrolRoute[#PatrolRoute+1] = CurrentRoutePoint - else - self:E( "In the air, finding route path within PatrolZone" ) - local CurrentVec2 = self.Controllable:GetVec2() - --TODO: Create GetAltitude function for GROUP, and delete GetUnit(1). - local CurrentAltitude = self.Controllable:GetUnit(1):GetAltitude() - local CurrentPointVec3 = POINT_VEC3:New( CurrentVec2.x, CurrentAltitude, CurrentVec2.y ) - local ToPatrolZoneSpeed = self.PatrolMaxSpeed - local CurrentRoutePoint = CurrentPointVec3:RoutePointAir( - self.PatrolAltType, - POINT_VEC3.RoutePointType.TurningPoint, - POINT_VEC3.RoutePointAction.TurningPoint, - ToPatrolZoneSpeed, - true - ) - PatrolRoute[#PatrolRoute+1] = CurrentRoutePoint - end - - - --- Define a random point in the @{Zone}. The AI will fly to that point within the zone. - - --- Find a random 2D point in PatrolZone. - local ToTargetVec2 = self.PatrolZone:GetRandomVec2() - self:T2( ToTargetVec2 ) - - --- Define Speed and Altitude. - local ToTargetAltitude = math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ) - local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed ) - self:T2( { self.PatrolMinSpeed, self.PatrolMaxSpeed, ToTargetSpeed } ) - - --- Obtain a 3D @{Point} from the 2D point + altitude. - local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, ToTargetAltitude, ToTargetVec2.y ) - - --- Create a route point of type air. - local ToTargetRoutePoint = ToTargetPointVec3:RoutePointAir( - self.PatrolAltType, - POINT_VEC3.RoutePointType.TurningPoint, - POINT_VEC3.RoutePointAction.TurningPoint, - ToTargetSpeed, - true - ) - - --self.CoordTest:SpawnFromVec3( ToTargetPointVec3:GetVec3() ) - - --ToTargetPointVec3:SmokeRed() - - PatrolRoute[#PatrolRoute+1] = ToTargetRoutePoint - - --- Now we're going to do something special, we're going to call a function from a waypoint action at the AIControllable... - self.Controllable:WayPointInitialize( PatrolRoute ) - - --- Do a trick, link the NewPatrolRoute function of the PATROLGROUP object to the AIControllable in a temporary variable ... - self.Controllable:SetState( self.Controllable, "PatrolZone", self ) - self.Controllable:WayPointFunction( #PatrolRoute, 1, "AI_PATROL_ZONE:_NewPatrolRoute" ) - - --- NOW ROUTE THE GROUP! - self.Controllable:WayPointExecute( 1, 2 ) - end - -end - ---- @param #AI_PATROL_ZONE self -function AI_PATROL_ZONE:onbeforeStatus() - - return self.CheckStatus -end - ---- @param #AI_PATROL_ZONE self -function AI_PATROL_ZONE:onafterStatus() - self:F2() - - if self.Controllable and self.Controllable:IsAlive() then - - local RTB = false - - local Fuel = self.Controllable:GetUnit(1):GetFuel() - if Fuel < self.PatrolFuelTresholdPercentage then - self:E( self.Controllable:GetName() .. " is out of fuel:" .. Fuel .. ", RTB!" ) - local OldAIControllable = self.Controllable - local AIControllableTemplate = self.Controllable:GetTemplate() - - local OrbitTask = OldAIControllable:TaskOrbitCircle( math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ), self.PatrolMinSpeed ) - local TimedOrbitTask = OldAIControllable:TaskControlled( OrbitTask, OldAIControllable:TaskCondition(nil,nil,nil,nil,self.PatrolOutOfFuelOrbitTime,nil ) ) - OldAIControllable:SetTask( TimedOrbitTask, 10 ) - - RTB = true - else - end - - -- TODO: Check GROUP damage function. - local Damage = self.Controllable:GetLife() - if Damage <= self.PatrolDamageTreshold then - self:E( self.Controllable:GetName() .. " is damaged:" .. Damage .. ", RTB!" ) - RTB = true - end - - if RTB == true then - self:RTB() - else - self:__Status( 60 ) -- Execute the Patrol event after 30 seconds. - end - end -end - ---- @param #AI_PATROL_ZONE self -function AI_PATROL_ZONE:onafterRTB() - self:F2() - - if self.Controllable and self.Controllable:IsAlive() then - - self:SetDetectionOff() - self.CheckStatus = false - - local PatrolRoute = {} - - --- Calculate the current route point. - local CurrentVec2 = self.Controllable:GetVec2() - - --TODO: Create GetAltitude function for GROUP, and delete GetUnit(1). - local CurrentAltitude = self.Controllable:GetUnit(1):GetAltitude() - local CurrentPointVec3 = POINT_VEC3:New( CurrentVec2.x, CurrentAltitude, CurrentVec2.y ) - local ToPatrolZoneSpeed = self.PatrolMaxSpeed - local CurrentRoutePoint = CurrentPointVec3:RoutePointAir( - self.PatrolAltType, - POINT_VEC3.RoutePointType.TurningPoint, - POINT_VEC3.RoutePointAction.TurningPoint, - ToPatrolZoneSpeed, - true - ) - - PatrolRoute[#PatrolRoute+1] = CurrentRoutePoint - - --- Now we're going to do something special, we're going to call a function from a waypoint action at the AIControllable... - self.Controllable:WayPointInitialize( PatrolRoute ) - - --- NOW ROUTE THE GROUP! - self.Controllable:WayPointExecute( 1, 1 ) - - end - -end - ---- @param #AI_PATROL_ZONE self -function AI_PATROL_ZONE:onafterDead() - self:SetDetectionOff() - self:SetStatusOff() -end - ---- @param #AI_PATROL_ZONE self --- @param Core.Event#EVENTDATA EventData -function AI_PATROL_ZONE:OnCrash( EventData ) - - if self.Controllable:IsAlive() and EventData.IniDCSGroupName == self.Controllable:GetName() then - self:E( self.Controllable:GetUnits() ) - if #self.Controllable:GetUnits() == 1 then - self:__Crash( 1, EventData ) - end - end -end - ---- @param #AI_PATROL_ZONE self --- @param Core.Event#EVENTDATA EventData -function AI_PATROL_ZONE:OnEjection( EventData ) - - if self.Controllable:IsAlive() and EventData.IniDCSGroupName == self.Controllable:GetName() then - self:__Eject( 1, EventData ) - end -end - ---- @param #AI_PATROL_ZONE self --- @param Core.Event#EVENTDATA EventData -function AI_PATROL_ZONE:OnPilotDead( EventData ) - - if self.Controllable:IsAlive() and EventData.IniDCSGroupName == self.Controllable:GetName() then - self:__PilotDead( 1, EventData ) - end -end ---- **AI** - **Execute Combat Air Patrol (CAP).** --- --- ![Banner Image](..\Presentations\AI_CAP\Dia1.JPG) --- --- === --- --- AI CAP classes makes AI Controllables execute a Combat Air Patrol. --- --- There are the following types of CAP classes defined: --- --- * @{#AI_CAP_ZONE}: Perform a CAP in a zone. --- --- ==== --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-01-15: Initial class and API. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * **[Quax](https://forums.eagle.ru/member.php?u=90530)**: Concept, Advice & Testing. --- * **[Pikey](https://forums.eagle.ru/member.php?u=62835)**: Concept, Advice & Testing. --- * **[Gunterlund](http://forums.eagle.ru:8080/member.php?u=75036)**: Test case revision. --- * **[Whisper](http://forums.eagle.ru/member.php?u=3829): Testing. --- * **[Delta99](https://forums.eagle.ru/member.php?u=125166): Testing. --- --- ### Authors: --- --- * **FlightControl**: Concept, Design & Programming. --- --- @module AI_Cap - - ---- @type AI_CAP_ZONE --- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. --- @field Core.Zone#ZONE_BASE TargetZone The @{Zone} where the patrol needs to be executed. --- @extends AI.AI_Patrol#AI_PATROL_ZONE - - ---- # 1) @{#AI_CAP_ZONE} class, extends @{AI_CAP#AI_PATROL_ZONE} --- --- The @{#AI_CAP_ZONE} class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group} --- and automatically engage any airborne enemies that are within a certain range or within a certain zone. --- --- ![Process](..\Presentations\AI_CAP\Dia3.JPG) --- --- The AI_CAP_ZONE is assigned a @{Group} and this must be done before the AI_CAP_ZONE process can be started using the **Start** event. --- --- ![Process](..\Presentations\AI_CAP\Dia4.JPG) --- --- The AI will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits. --- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. --- --- ![Process](..\Presentations\AI_CAP\Dia5.JPG) --- --- This cycle will continue. --- --- ![Process](..\Presentations\AI_CAP\Dia6.JPG) --- --- During the patrol, the AI will detect enemy targets, which are reported through the **Detected** event. --- --- ![Process](..\Presentations\AI_CAP\Dia9.JPG) --- --- When enemies are detected, the AI will automatically engage the enemy. --- --- ![Process](..\Presentations\AI_CAP\Dia10.JPG) --- --- Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. --- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land. --- --- ![Process](..\Presentations\AI_CAP\Dia13.JPG) --- --- ## 1.1) AI_CAP_ZONE constructor --- --- * @{#AI_CAP_ZONE.New}(): Creates a new AI_CAP_ZONE object. --- --- ## 1.2) AI_CAP_ZONE is a FSM --- --- ![Process](..\Presentations\AI_CAP\Dia2.JPG) --- --- ### 1.2.1) AI_CAP_ZONE States --- --- * **None** ( Group ): The process is not started yet. --- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone. --- * **Engaging** ( Group ): The AI is engaging the bogeys. --- * **Returning** ( Group ): The AI is returning to Base.. --- --- ### 1.2.2) AI_CAP_ZONE Events --- --- * **@{AI_Patrol#AI_PATROL_ZONE.Start}**: Start the process. --- * **@{AI_Patrol#AI_PATROL_ZONE.Route}**: Route the AI to a new random 3D point within the Patrol Zone. --- * **@{#AI_CAP_ZONE.Engage}**: Let the AI engage the bogeys. --- * **@{#AI_CAP_ZONE.Abort}**: Aborts the engagement and return patrolling in the patrol zone. --- * **@{AI_Patrol#AI_PATROL_ZONE.RTB}**: Route the AI to the home base. --- * **@{AI_Patrol#AI_PATROL_ZONE.Detect}**: The AI is detecting targets. --- * **@{AI_Patrol#AI_PATROL_ZONE.Detected}**: The AI has detected new targets. --- * **@{#AI_CAP_ZONE.Destroy}**: The AI has destroyed a bogey @{Unit}. --- * **@{#AI_CAP_ZONE.Destroyed}**: The AI has destroyed all bogeys @{Unit}s assigned in the CAS task. --- * **Status** ( Group ): The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB. --- --- ## 1.3) Set the Range of Engagement --- --- ![Range](..\Presentations\AI_CAP\Dia11.JPG) --- --- An optional range can be set in meters, --- that will define when the AI will engage with the detected airborne enemy targets. --- The range can be beyond or smaller than the range of the Patrol Zone. --- The range is applied at the position of the AI. --- Use the method @{AI_CAP#AI_CAP_ZONE.SetEngageRange}() to define that range. --- --- ## 1.4) Set the Zone of Engagement --- --- ![Zone](..\Presentations\AI_CAP\Dia12.JPG) --- --- An optional @{Zone} can be set, --- that will define when the AI will engage with the detected airborne enemy targets. --- Use the method @{AI_Cap#AI_CAP_ZONE.SetEngageZone}() to define that Zone. --- --- === --- --- @field #AI_CAP_ZONE AI_CAP_ZONE --- -AI_CAP_ZONE = { - ClassName = "AI_CAP_ZONE", -} - - - ---- Creates a new AI_CAP_ZONE object --- @param #AI_CAP_ZONE self --- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. --- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. --- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. --- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. --- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. --- @param Dcs.DCSTypes#AltitudeType PatrolAltType The altitude type ("RADIO"=="AGL", "BARO"=="ASL"). Defaults to RADIO --- @return #AI_CAP_ZONE self -function AI_CAP_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType ) - - -- Inherits from BASE - local self = BASE:Inherit( self, AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType ) ) -- #AI_CAP_ZONE - - self.Accomplished = false - self.Engaging = false - - self:AddTransition( { "Patrolling", "Engaging" }, "Engage", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAP_ZONE. - - --- OnBefore Transition Handler for Event Engage. - -- @function [parent=#AI_CAP_ZONE] OnBeforeEngage - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Engage. - -- @function [parent=#AI_CAP_ZONE] OnAfterEngage - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Engage. - -- @function [parent=#AI_CAP_ZONE] Engage - -- @param #AI_CAP_ZONE self - - --- Asynchronous Event Trigger for Event Engage. - -- @function [parent=#AI_CAP_ZONE] __Engage - -- @param #AI_CAP_ZONE self - -- @param #number Delay The delay in seconds. - ---- OnLeave Transition Handler for State Engaging. --- @function [parent=#AI_CAP_ZONE] OnLeaveEngaging --- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnEnter Transition Handler for State Engaging. --- @function [parent=#AI_CAP_ZONE] OnEnterEngaging --- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - - self:AddTransition( "Engaging", "Fired", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAP_ZONE. - - --- OnBefore Transition Handler for Event Fired. - -- @function [parent=#AI_CAP_ZONE] OnBeforeFired - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Fired. - -- @function [parent=#AI_CAP_ZONE] OnAfterFired - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Fired. - -- @function [parent=#AI_CAP_ZONE] Fired - -- @param #AI_CAP_ZONE self - - --- Asynchronous Event Trigger for Event Fired. - -- @function [parent=#AI_CAP_ZONE] __Fired - -- @param #AI_CAP_ZONE self - -- @param #number Delay The delay in seconds. - - self:AddTransition( "*", "Destroy", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_CAP_ZONE. - - --- OnBefore Transition Handler for Event Destroy. - -- @function [parent=#AI_CAP_ZONE] OnBeforeDestroy - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Destroy. - -- @function [parent=#AI_CAP_ZONE] OnAfterDestroy - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Destroy. - -- @function [parent=#AI_CAP_ZONE] Destroy - -- @param #AI_CAP_ZONE self - - --- Asynchronous Event Trigger for Event Destroy. - -- @function [parent=#AI_CAP_ZONE] __Destroy - -- @param #AI_CAP_ZONE self - -- @param #number Delay The delay in seconds. - - - self:AddTransition( "Engaging", "Abort", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_CAP_ZONE. - - --- OnBefore Transition Handler for Event Abort. - -- @function [parent=#AI_CAP_ZONE] OnBeforeAbort - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Abort. - -- @function [parent=#AI_CAP_ZONE] OnAfterAbort - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Abort. - -- @function [parent=#AI_CAP_ZONE] Abort - -- @param #AI_CAP_ZONE self - - --- Asynchronous Event Trigger for Event Abort. - -- @function [parent=#AI_CAP_ZONE] __Abort - -- @param #AI_CAP_ZONE self - -- @param #number Delay The delay in seconds. - - self:AddTransition( "Engaging", "Accomplish", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_CAP_ZONE. - - --- OnBefore Transition Handler for Event Accomplish. - -- @function [parent=#AI_CAP_ZONE] OnBeforeAccomplish - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Accomplish. - -- @function [parent=#AI_CAP_ZONE] OnAfterAccomplish - -- @param #AI_CAP_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Accomplish. - -- @function [parent=#AI_CAP_ZONE] Accomplish - -- @param #AI_CAP_ZONE self - - --- Asynchronous Event Trigger for Event Accomplish. - -- @function [parent=#AI_CAP_ZONE] __Accomplish - -- @param #AI_CAP_ZONE self - -- @param #number Delay The delay in seconds. - - return self -end - - ---- Set the Engage Zone which defines where the AI will engage bogies. --- @param #AI_CAP_ZONE self --- @param Core.Zone#ZONE EngageZone The zone where the AI is performing CAP. --- @return #AI_CAP_ZONE self -function AI_CAP_ZONE:SetEngageZone( EngageZone ) - self:F2() - - if EngageZone then - self.EngageZone = EngageZone - else - self.EngageZone = nil - end -end - ---- Set the Engage Range when the AI will engage with airborne enemies. --- @param #AI_CAP_ZONE self --- @param #number EngageRange The Engage Range. --- @return #AI_CAP_ZONE self -function AI_CAP_ZONE:SetEngageRange( EngageRange ) - self:F2() - - if EngageRange then - self.EngageRange = EngageRange - else - self.EngageRange = nil - end -end - ---- onafter State Transition for Event Start. --- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAP_ZONE:onafterStart( Controllable, From, Event, To ) - - -- Call the parent Start event handler - self:GetParent(self).onafterStart( self, Controllable, From, Event, To ) - self:HandleEvent( EVENTS.Dead ) - -end - --- todo: need to fix this global function - ---- @param Wrapper.Controllable#CONTROLLABLE AIControllable -function _NewEngageCapRoute( AIControllable ) - - AIControllable:T( "NewEngageRoute" ) - local EngageZone = AIControllable:GetState( AIControllable, "EngageZone" ) -- AI.AI_Cap#AI_CAP_ZONE - EngageZone:__Engage( 1 ) -end - ---- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAP_ZONE:onbeforeEngage( Controllable, From, Event, To ) - - if self.Accomplished == true then - return false - end -end - ---- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAP_ZONE:onafterDetected( Controllable, From, Event, To ) - - if From ~= "Engaging" then - - local Engage = false - - for DetectedUnit, Detected in pairs( self.DetectedUnits ) do - - local DetectedUnit = DetectedUnit -- Wrapper.Unit#UNIT - self:T( DetectedUnit ) - if DetectedUnit:IsAlive() and DetectedUnit:IsAir() then - Engage = true - break - end - end - - if Engage == true then - self:E( 'Detected -> Engaging' ) - self:__Engage( 1 ) - end - end -end - - ---- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAP_ZONE:onafterAbort( Controllable, From, Event, To ) - Controllable:ClearTasks() - self:__Route( 1 ) -end - - - - ---- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAP_ZONE:onafterEngage( Controllable, From, Event, To ) - - if Controllable:IsAlive() then - - local EngageRoute = {} - - --- Calculate the current route point. - local CurrentVec2 = self.Controllable:GetVec2() - - --TODO: Create GetAltitude function for GROUP, and delete GetUnit(1). - local CurrentAltitude = self.Controllable:GetUnit(1):GetAltitude() - local CurrentPointVec3 = POINT_VEC3:New( CurrentVec2.x, CurrentAltitude, CurrentVec2.y ) - local ToEngageZoneSpeed = self.PatrolMaxSpeed - local CurrentRoutePoint = CurrentPointVec3:RoutePointAir( - self.PatrolAltType, - POINT_VEC3.RoutePointType.TurningPoint, - POINT_VEC3.RoutePointAction.TurningPoint, - ToEngageZoneSpeed, - true - ) - - EngageRoute[#EngageRoute+1] = CurrentRoutePoint - - - --- Find a random 2D point in PatrolZone. - local ToTargetVec2 = self.PatrolZone:GetRandomVec2() - self:T2( ToTargetVec2 ) - - --- Define Speed and Altitude. - local ToTargetAltitude = math.random( self.EngageFloorAltitude, self.EngageCeilingAltitude ) - local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed ) - self:T2( { self.PatrolMinSpeed, self.PatrolMaxSpeed, ToTargetSpeed } ) - - --- Obtain a 3D @{Point} from the 2D point + altitude. - local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, ToTargetAltitude, ToTargetVec2.y ) - - --- Create a route point of type air. - local ToPatrolRoutePoint = ToTargetPointVec3:RoutePointAir( - self.PatrolAltType, - POINT_VEC3.RoutePointType.TurningPoint, - POINT_VEC3.RoutePointAction.TurningPoint, - ToTargetSpeed, - true - ) - - EngageRoute[#EngageRoute+1] = ToPatrolRoutePoint - - Controllable:OptionROEOpenFire() - Controllable:OptionROTPassiveDefense() - - local AttackTasks = {} - - for DetectedUnit, Detected in pairs( self.DetectedUnits ) do - local DetectedUnit = DetectedUnit -- Wrapper.Unit#UNIT - self:T( { DetectedUnit, DetectedUnit:IsAlive(), DetectedUnit:IsAir() } ) - if DetectedUnit:IsAlive() and DetectedUnit:IsAir() then - if self.EngageZone then - if DetectedUnit:IsInZone( self.EngageZone ) then - self:E( {"Within Zone and Engaging ", DetectedUnit } ) - AttackTasks[#AttackTasks+1] = Controllable:TaskAttackUnit( DetectedUnit ) - end - else - if self.EngageRange then - if DetectedUnit:GetPointVec3():Get2DDistance(Controllable:GetPointVec3() ) <= self.EngageRange then - self:E( {"Within Range and Engaging", DetectedUnit } ) - AttackTasks[#AttackTasks+1] = Controllable:TaskAttackUnit( DetectedUnit ) - end - else - AttackTasks[#AttackTasks+1] = Controllable:TaskAttackUnit( DetectedUnit ) - end - end - else - self.DetectedUnits[DetectedUnit] = nil - end - end - - --- Now we're going to do something special, we're going to call a function from a waypoint action at the AIControllable... - self.Controllable:WayPointInitialize( EngageRoute ) - - - if #AttackTasks == 0 then - self:E("No targets found -> Going back to Patrolling") - self:__Abort( 1 ) - self:__Route( 1 ) - self:SetDetectionActivated() - else - EngageRoute[1].task = Controllable:TaskCombo( AttackTasks ) - - --- Do a trick, link the NewEngageRoute function of the object to the AIControllable in a temporary variable ... - self.Controllable:SetState( self.Controllable, "EngageZone", self ) - - self.Controllable:WayPointFunction( #EngageRoute, 1, "_NewEngageCapRoute" ) - - self:SetDetectionDeactivated() - end - - --- NOW ROUTE THE GROUP! - self.Controllable:WayPointExecute( 1, 2 ) - - end -end - ---- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAP_ZONE:onafterAccomplish( Controllable, From, Event, To ) - self.Accomplished = true - self:SetDetectionOff() -end - ---- @param #AI_CAP_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @param Core.Event#EVENTDATA EventData -function AI_CAP_ZONE:onafterDestroy( Controllable, From, Event, To, EventData ) - - if EventData.IniUnit then - self.DetectedUnits[EventData.IniUnit] = nil - end -end - ---- @param #AI_CAP_ZONE self --- @param Core.Event#EVENTDATA EventData -function AI_CAP_ZONE:OnEventDead( EventData ) - self:F( { "EventDead", EventData } ) - - if EventData.IniDCSUnit then - if self.DetectedUnits and self.DetectedUnits[EventData.IniUnit] then - self:__Destroy( 1, EventData ) - end - end -end ---- **AI** -- **Provide Close Air Support to friendly ground troops.** --- --- ![Banner Image](..\Presentations\AI_CAS\Dia1.JPG) --- --- === --- --- AI CAS classes makes AI Controllables execute a Close Air Support. --- --- There are the following types of CAS classes defined: --- --- * @{#AI_CAS_ZONE}: Perform a CAS in a zone. --- --- === --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-01-15: Initial class and API. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * **[Quax](https://forums.eagle.ru/member.php?u=90530)**: Concept, Advice & Testing. --- * **[Pikey](https://forums.eagle.ru/member.php?u=62835)**: Concept, Advice & Testing. --- * **[Gunterlund](http://forums.eagle.ru:8080/member.php?u=75036)**: Test case revision. --- --- ### Authors: --- --- * **FlightControl**: Concept, Design & Programming. --- --- @module AI_Cas - - ---- AI_CAS_ZONE class --- @type AI_CAS_ZONE --- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. --- @field Core.Zone#ZONE_BASE TargetZone The @{Zone} where the patrol needs to be executed. --- @extends AI.AI_Patrol#AI_PATROL_ZONE - ---- # 1) @{#AI_CAS_ZONE} class, extends @{AI_Patrol#AI_PATROL_ZONE} --- --- @{#AI_CAS_ZONE} derives from the @{AI_Patrol#AI_PATROL_ZONE}, inheriting its methods and behaviour. --- --- The @{#AI_CAS_ZONE} class implements the core functions to provide Close Air Support in an Engage @{Zone} by an AIR @{Controllable} or @{Group}. --- The AI_CAS_ZONE runs a process. It holds an AI in a Patrol Zone and when the AI is commanded to engage, it will fly to an Engage Zone. --- --- ![HoldAndEngage](..\Presentations\AI_CAS\Dia3.JPG) --- --- The AI_CAS_ZONE is assigned a @{Group} and this must be done before the AI_CAS_ZONE process can be started through the **Start** event. --- --- ![Start Event](..\Presentations\AI_CAS\Dia4.JPG) --- --- Upon started, The AI will **Route** itself towards the random 3D point within a patrol zone, --- using a random speed within the given altitude and speed limits. --- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. --- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. --- --- ![Route Event](..\Presentations\AI_CAS\Dia5.JPG) --- --- When the AI is commanded to provide Close Air Support (through the event **Engage**), the AI will fly towards the Engage Zone. --- Any target that is detected in the Engage Zone will be reported and will be destroyed by the AI. --- --- ![Engage Event](..\Presentations\AI_CAS\Dia6.JPG) --- --- The AI will detect the targets and will only destroy the targets within the Engage Zone. --- --- ![Engage Event](..\Presentations\AI_CAS\Dia7.JPG) --- --- Every target that is destroyed, is reported< by the AI. --- --- ![Engage Event](..\Presentations\AI_CAS\Dia8.JPG) --- --- Note that the AI does not know when the Engage Zone is cleared, and therefore will keep circling in the zone. --- --- ![Engage Event](..\Presentations\AI_CAS\Dia9.JPG) --- --- Until it is notified through the event **Accomplish**, which is to be triggered by an observing party: --- --- * a FAC --- * a timed event --- * a menu option selected by a human --- * a condition --- * others ... --- --- ![Engage Event](..\Presentations\AI_CAS\Dia10.JPG) --- --- When the AI has accomplished the CAS, it will fly back to the Patrol Zone. --- --- ![Engage Event](..\Presentations\AI_CAS\Dia11.JPG) --- --- It will keep patrolling there, until it is notified to RTB or move to another CAS Zone. --- It can be notified to go RTB through the **RTB** event. --- --- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land. --- --- ![Engage Event](..\Presentations\AI_CAS\Dia12.JPG) --- --- # 1.1) AI_CAS_ZONE constructor --- --- * @{#AI_CAS_ZONE.New}(): Creates a new AI_CAS_ZONE object. --- --- ## 1.2) AI_CAS_ZONE is a FSM --- --- ![Process](..\Presentations\AI_CAS\Dia2.JPG) --- --- ### 1.2.1) AI_CAS_ZONE States --- --- * **None** ( Group ): The process is not started yet. --- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone. --- * **Engaging** ( Group ): The AI is engaging the targets in the Engage Zone, executing CAS. --- * **Returning** ( Group ): The AI is returning to Base.. --- --- ### 1.2.2) AI_CAS_ZONE Events --- --- * **@{AI_Patrol#AI_PATROL_ZONE.Start}**: Start the process. --- * **@{AI_Patrol#AI_PATROL_ZONE.Route}**: Route the AI to a new random 3D point within the Patrol Zone. --- * **@{#AI_CAS_ZONE.Engage}**: Engage the AI to provide CAS in the Engage Zone, destroying any target it finds. --- * **@{#AI_CAS_ZONE.Abort}**: Aborts the engagement and return patrolling in the patrol zone. --- * **@{AI_Patrol#AI_PATROL_ZONE.RTB}**: Route the AI to the home base. --- * **@{AI_Patrol#AI_PATROL_ZONE.Detect}**: The AI is detecting targets. --- * **@{AI_Patrol#AI_PATROL_ZONE.Detected}**: The AI has detected new targets. --- * **@{#AI_CAS_ZONE.Destroy}**: The AI has destroyed a target @{Unit}. --- * **@{#AI_CAS_ZONE.Destroyed}**: The AI has destroyed all target @{Unit}s assigned in the CAS task. --- * **Status**: The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB. --- --- === --- --- @field #AI_CAS_ZONE AI_CAS_ZONE --- -AI_CAS_ZONE = { - ClassName = "AI_CAS_ZONE", -} - - - ---- Creates a new AI_CAS_ZONE object --- @param #AI_CAS_ZONE self --- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. --- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. --- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. --- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. --- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. --- @param Core.Zone#ZONE_BASE EngageZone The zone where the engage will happen. --- @param Dcs.DCSTypes#AltitudeType PatrolAltType The altitude type ("RADIO"=="AGL", "BARO"=="ASL"). Defaults to RADIO --- @return #AI_CAS_ZONE self -function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone, PatrolAltType ) - - -- Inherits from BASE - local self = BASE:Inherit( self, AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, PatrolAltType ) ) -- #AI_CAS_ZONE - - self.EngageZone = EngageZone - self.Accomplished = false - - self:SetDetectionZone( self.EngageZone ) - - self:AddTransition( { "Patrolling", "Engaging" }, "Engage", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. - - --- OnBefore Transition Handler for Event Engage. - -- @function [parent=#AI_CAS_ZONE] OnBeforeEngage - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Engage. - -- @function [parent=#AI_CAS_ZONE] OnAfterEngage - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Engage. - -- @function [parent=#AI_CAS_ZONE] Engage - -- @param #AI_CAS_ZONE self - -- @param #number EngageSpeed (optional) The speed the Group will hold when engaging to the target zone. - -- @param Dcs.DCSTypes#Distance EngageAltitude (optional) Desired altitude to perform the unit engagement. - -- @param Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend (optional) Determines how much weapon will be released at each attack. - -- If parameter is not defined the unit / controllable will choose expend on its own discretion. - -- Use the structure @{DCSTypes#AI.Task.WeaponExpend} to define the amount of weapons to be release at each attack. - -- @param #number EngageAttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. - -- @param Dcs.DCSTypes#Azimuth EngageDirection (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. - - --- Asynchronous Event Trigger for Event Engage. - -- @function [parent=#AI_CAS_ZONE] __Engage - -- @param #AI_CAS_ZONE self - -- @param #number Delay The delay in seconds. - -- @param #number EngageSpeed (optional) The speed the Group will hold when engaging to the target zone. - -- @param Dcs.DCSTypes#Distance EngageAltitude (optional) Desired altitude to perform the unit engagement. - -- @param Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend (optional) Determines how much weapon will be released at each attack. - -- If parameter is not defined the unit / controllable will choose expend on its own discretion. - -- Use the structure @{DCSTypes#AI.Task.WeaponExpend} to define the amount of weapons to be release at each attack. - -- @param #number EngageAttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. - -- @param Dcs.DCSTypes#Azimuth EngageDirection (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. - ---- OnLeave Transition Handler for State Engaging. --- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging --- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @return #boolean Return false to cancel Transition. - ---- OnEnter Transition Handler for State Engaging. --- @function [parent=#AI_CAS_ZONE] OnEnterEngaging --- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. - - self:AddTransition( "Engaging", "Target", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. - - self:AddTransition( "Engaging", "Fired", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. - - --- OnBefore Transition Handler for Event Fired. - -- @function [parent=#AI_CAS_ZONE] OnBeforeFired - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Fired. - -- @function [parent=#AI_CAS_ZONE] OnAfterFired - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Fired. - -- @function [parent=#AI_CAS_ZONE] Fired - -- @param #AI_CAS_ZONE self - - --- Asynchronous Event Trigger for Event Fired. - -- @function [parent=#AI_CAS_ZONE] __Fired - -- @param #AI_CAS_ZONE self - -- @param #number Delay The delay in seconds. - - self:AddTransition( "*", "Destroy", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. - - --- OnBefore Transition Handler for Event Destroy. - -- @function [parent=#AI_CAS_ZONE] OnBeforeDestroy - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Destroy. - -- @function [parent=#AI_CAS_ZONE] OnAfterDestroy - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Destroy. - -- @function [parent=#AI_CAS_ZONE] Destroy - -- @param #AI_CAS_ZONE self - - --- Asynchronous Event Trigger for Event Destroy. - -- @function [parent=#AI_CAS_ZONE] __Destroy - -- @param #AI_CAS_ZONE self - -- @param #number Delay The delay in seconds. - - - self:AddTransition( "Engaging", "Abort", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. - - --- OnBefore Transition Handler for Event Abort. - -- @function [parent=#AI_CAS_ZONE] OnBeforeAbort - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Abort. - -- @function [parent=#AI_CAS_ZONE] OnAfterAbort - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Abort. - -- @function [parent=#AI_CAS_ZONE] Abort - -- @param #AI_CAS_ZONE self - - --- Asynchronous Event Trigger for Event Abort. - -- @function [parent=#AI_CAS_ZONE] __Abort - -- @param #AI_CAS_ZONE self - -- @param #number Delay The delay in seconds. - - self:AddTransition( "Engaging", "Accomplish", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. - - --- OnBefore Transition Handler for Event Accomplish. - -- @function [parent=#AI_CAS_ZONE] OnBeforeAccomplish - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Accomplish. - -- @function [parent=#AI_CAS_ZONE] OnAfterAccomplish - -- @param #AI_CAS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Accomplish. - -- @function [parent=#AI_CAS_ZONE] Accomplish - -- @param #AI_CAS_ZONE self - - --- Asynchronous Event Trigger for Event Accomplish. - -- @function [parent=#AI_CAS_ZONE] __Accomplish - -- @param #AI_CAS_ZONE self - -- @param #number Delay The delay in seconds. - - return self -end - - ---- Set the Engage Zone where the AI is performing CAS. Note that if the EngageZone is changed, the AI needs to re-detect targets. --- @param #AI_CAS_ZONE self --- @param Core.Zone#ZONE EngageZone The zone where the AI is performing CAS. --- @return #AI_CAS_ZONE self -function AI_CAS_ZONE:SetEngageZone( EngageZone ) - self:F2() - - if EngageZone then - self.EngageZone = EngageZone - else - self.EngageZone = nil - end -end - - - ---- onafter State Transition for Event Start. --- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAS_ZONE:onafterStart( Controllable, From, Event, To ) - - -- Call the parent Start event handler - self:GetParent(self).onafterStart( self, Controllable, From, Event, To ) - self:HandleEvent( EVENTS.Dead ) - - self:SetDetectionDeactivated() -- When not engaging, set the detection off. -end - ---- @param Wrapper.Controllable#CONTROLLABLE AIControllable -function _NewEngageRoute( AIControllable ) - - AIControllable:T( "NewEngageRoute" ) - local EngageZone = AIControllable:GetState( AIControllable, "EngageZone" ) -- AI.AI_Cas#AI_CAS_ZONE - EngageZone:__Engage( 1, EngageZone.EngageSpeed, EngageZone.EngageAltitude, EngageZone.EngageWeaponExpend, EngageZone.EngageAttackQty, EngageZone.EngageDirection ) -end - - ---- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAS_ZONE:onbeforeEngage( Controllable, From, Event, To ) - - if self.Accomplished == true then - return false - end -end - ---- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAS_ZONE:onafterTarget( Controllable, From, Event, To ) - self:E("onafterTarget") - - if Controllable:IsAlive() then - - local AttackTasks = {} - - for DetectedUnit, Detected in pairs( self.DetectedUnits ) do - local DetectedUnit = DetectedUnit -- Wrapper.Unit#UNIT - if DetectedUnit:IsAlive() then - if DetectedUnit:IsInZone( self.EngageZone ) then - if Detected == true then - self:E( {"Target: ", DetectedUnit } ) - self.DetectedUnits[DetectedUnit] = false - local AttackTask = Controllable:TaskAttackUnit( DetectedUnit, false, self.EngageWeaponExpend, self.EngageAttackQty, self.EngageDirection, self.EngageAltitude, nil ) - self.Controllable:PushTask( AttackTask, 1 ) - end - end - else - self.DetectedUnits[DetectedUnit] = nil - end - end - - self:__Target( -10 ) - - end -end - - ---- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAS_ZONE:onafterAbort( Controllable, From, Event, To ) - Controllable:ClearTasks() - self:__Route( 1 ) -end - ---- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @param #number EngageSpeed (optional) The speed the Group will hold when engaging to the target zone. --- @param Dcs.DCSTypes#Distance EngageAltitude (optional) Desired altitude to perform the unit engagement. --- @param Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend (optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion. --- @param #number EngageAttackQty (optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo. --- @param Dcs.DCSTypes#Azimuth EngageDirection (optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction. -function AI_CAS_ZONE:onafterEngage( Controllable, From, Event, To, - EngageSpeed, - EngageAltitude, - EngageWeaponExpend, - EngageAttackQty, - EngageDirection ) - self:F("onafterEngage") - - self.EngageSpeed = EngageSpeed or 400 - self.EngageAltitude = EngageAltitude or 2000 - self.EngageWeaponExpend = EngageWeaponExpend - self.EngageAttackQty = EngageAttackQty - self.EngageDirection = EngageDirection - - if Controllable:IsAlive() then - - local EngageRoute = {} - - --- Calculate the current route point. - local CurrentVec2 = self.Controllable:GetVec2() - - --TODO: Create GetAltitude function for GROUP, and delete GetUnit(1). - local CurrentAltitude = self.Controllable:GetUnit(1):GetAltitude() - local CurrentPointVec3 = POINT_VEC3:New( CurrentVec2.x, CurrentAltitude, CurrentVec2.y ) - local ToEngageZoneSpeed = self.PatrolMaxSpeed - local CurrentRoutePoint = CurrentPointVec3:RoutePointAir( - self.PatrolAltType, - POINT_VEC3.RoutePointType.TurningPoint, - POINT_VEC3.RoutePointAction.TurningPoint, - self.EngageSpeed, - true - ) - - EngageRoute[#EngageRoute+1] = CurrentRoutePoint - - local AttackTasks = {} - - for DetectedUnitID, DetectedUnit in pairs( self.DetectedUnits ) do - local DetectedUnit = DetectedUnit -- Wrapper.Unit#UNIT - self:T( DetectedUnit ) - if DetectedUnit:IsAlive() then - if DetectedUnit:IsInZone( self.EngageZone ) then - self:E( {"Engaging ", DetectedUnit } ) - AttackTasks[#AttackTasks+1] = Controllable:TaskAttackUnit( DetectedUnit, - true, - EngageWeaponExpend, - EngageAttackQty, - EngageDirection - ) - end - else - self.DetectedUnits[DetectedUnit] = nil - end - end - - EngageRoute[1].task = Controllable:TaskCombo( AttackTasks ) - - --- Define a random point in the @{Zone}. The AI will fly to that point within the zone. - - --- Find a random 2D point in EngageZone. - local ToTargetVec2 = self.EngageZone:GetRandomVec2() - self:T2( ToTargetVec2 ) - - --- Obtain a 3D @{Point} from the 2D point + altitude. - local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, self.EngageAltitude, ToTargetVec2.y ) - - --- Create a route point of type air. - local ToTargetRoutePoint = ToTargetPointVec3:RoutePointAir( - self.PatrolAltType, - POINT_VEC3.RoutePointType.TurningPoint, - POINT_VEC3.RoutePointAction.TurningPoint, - self.EngageSpeed, - true - ) - - EngageRoute[#EngageRoute+1] = ToTargetRoutePoint - - --- Now we're going to do something special, we're going to call a function from a waypoint action at the AIControllable... - Controllable:WayPointInitialize( EngageRoute ) - - --- Do a trick, link the NewEngageRoute function of the object to the AIControllable in a temporary variable ... - Controllable:SetState( Controllable, "EngageZone", self ) - - Controllable:WayPointFunction( #EngageRoute, 1, "_NewEngageRoute" ) - - --- NOW ROUTE THE GROUP! - Controllable:WayPointExecute( 1 ) - - Controllable:OptionROEOpenFire() - Controllable:OptionROTVertical() - - self:SetDetectionInterval( 2 ) - self:SetDetectionActivated() - self:__Target( -2 ) -- Start Targetting - end -end - - ---- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. -function AI_CAS_ZONE:onafterAccomplish( Controllable, From, Event, To ) - self.Accomplished = true - self:SetDetectionDeactivated() -end - - ---- @param #AI_CAS_ZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. --- @param #string From The From State string. --- @param #string Event The Event string. --- @param #string To The To State string. --- @param Core.Event#EVENTDATA EventData -function AI_CAS_ZONE:onafterDestroy( Controllable, From, Event, To, EventData ) - - if EventData.IniUnit then - self.DetectedUnits[EventData.IniUnit] = nil - end -end - - ---- @param #AI_CAS_ZONE self --- @param Core.Event#EVENTDATA EventData -function AI_CAS_ZONE:OnEventDead( EventData ) - self:F( { "EventDead", EventData } ) - - if EventData.IniDCSUnit then - if self.DetectedUnits and self.DetectedUnits[EventData.IniUnit] then - self:__Destroy( 1, EventData ) - end - end -end - - ----Single-Player:**Yes** / Multi-Player:**Yes** / AI:**Yes** / Human:**No** / Types:**Ground** -- --- **Management of logical cargo objects, that can be transported from and to transportation carriers.** --- --- ![Banner Image](..\Presentations\AI_CARGO\CARGO.JPG) --- --- === --- --- Cargo can be of various forms, always are composed out of ONE object ( one unit or one static or one slingload crate ): --- --- * AI_CARGO_UNIT, represented by a @{Unit} in a @{Group}: Cargo can be represented by a Unit in a Group. Destruction of the Unit will mean that the cargo is lost. --- * CARGO_STATIC, represented by a @{Static}: Cargo can be represented by a Static. Destruction of the Static will mean that the cargo is lost. --- * AI_CARGO_PACKAGE, contained in a @{Unit} of a @{Group}: Cargo can be contained within a Unit of a Group. The cargo can be **delivered** by the @{Unit}. If the Unit is destroyed, the cargo will be destroyed also. --- * AI_CARGO_PACKAGE, Contained in a @{Static}: Cargo can be contained within a Static. The cargo can be **collected** from the @Static. If the @{Static} is destroyed, the cargo will be destroyed. --- * CARGO_SLINGLOAD, represented by a @{Cargo} that is transportable: Cargo can be represented by a Cargo object that is transportable. Destruction of the Cargo will mean that the cargo is lost. --- --- * AI_CARGO_GROUPED, represented by a Group of CARGO_UNITs. --- --- # 1) @{#AI_CARGO} class, extends @{Fsm#FSM_PROCESS} --- --- The @{#AI_CARGO} class defines the core functions that defines a cargo object within MOOSE. --- A cargo is a logical object defined that is available for transport, and has a life status within a simulation. --- --- The AI_CARGO is a state machine: it manages the different events and states of the cargo. --- All derived classes from AI_CARGO follow the same state machine, expose the same cargo event functions, and provide the same cargo states. --- --- ## 1.2.1) AI_CARGO Events: --- --- * @{#AI_CARGO.Board}( ToCarrier ): Boards the cargo to a carrier. --- * @{#AI_CARGO.Load}( ToCarrier ): Loads the cargo into a carrier, regardless of its position. --- * @{#AI_CARGO.UnBoard}( ToPointVec2 ): UnBoard the cargo from a carrier. This will trigger a movement of the cargo to the option ToPointVec2. --- * @{#AI_CARGO.UnLoad}( ToPointVec2 ): UnLoads the cargo from a carrier. --- * @{#AI_CARGO.Dead}( Controllable ): The cargo is dead. The cargo process will be ended. --- --- ## 1.2.2) AI_CARGO States: --- --- * **UnLoaded**: The cargo is unloaded from a carrier. --- * **Boarding**: The cargo is currently boarding (= running) into a carrier. --- * **Loaded**: The cargo is loaded into a carrier. --- * **UnBoarding**: The cargo is currently unboarding (=running) from a carrier. --- * **Dead**: The cargo is dead ... --- * **End**: The process has come to an end. --- --- ## 1.2.3) AI_CARGO state transition methods: --- --- State transition functions can be set **by the mission designer** customizing or improving the behaviour of the state. --- There are 2 moments when state transition methods will be called by the state machine: --- --- * **Leaving** the state. --- The state transition method needs to start with the name **OnLeave + the name of the state**. --- If the state transition method returns false, then the processing of the state transition will not be done! --- If you want to change the behaviour of the AIControllable at this event, return false, --- but then you'll need to specify your own logic using the AIControllable! --- --- * **Entering** the state. --- The state transition method needs to start with the name **OnEnter + the name of the state**. --- These state transition methods need to provide a return value, which is specified at the function description. --- --- # 2) #AI_CARGO_UNIT class --- --- The AI_CARGO_UNIT class defines a cargo that is represented by a UNIT object within the simulator, and can be transported by a carrier. --- Use the event functions as described above to Load, UnLoad, Board, UnBoard the AI_CARGO_UNIT objects to and from carriers. --- --- # 5) #AI_CARGO_GROUPED class --- --- The AI_CARGO_GROUPED class defines a cargo that is represented by a group of UNIT objects within the simulator, and can be transported by a carrier. --- Use the event functions as described above to Load, UnLoad, Board, UnBoard the AI_CARGO_UNIT objects to and from carriers. --- --- This module is still under construction, but is described above works already, and will keep working ... --- --- @module Cargo - --- Events - --- Board - ---- Boards the cargo to a Carrier. The event will create a movement (= running or driving) of the cargo to the Carrier. --- The cargo must be in the **UnLoaded** state. --- @function [parent=#AI_CARGO] Board --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE ToCarrier The Carrier that will hold the cargo. - ---- Boards the cargo to a Carrier. The event will create a movement (= running or driving) of the cargo to the Carrier. --- The cargo must be in the **UnLoaded** state. --- @function [parent=#AI_CARGO] __Board --- @param #AI_CARGO self --- @param #number DelaySeconds The amount of seconds to delay the action. --- @param Wrapper.Controllable#CONTROLLABLE ToCarrier The Carrier that will hold the cargo. - - --- UnBoard - ---- UnBoards the cargo to a Carrier. The event will create a movement (= running or driving) of the cargo from the Carrier. --- The cargo must be in the **Loaded** state. --- @function [parent=#AI_CARGO] UnBoard --- @param #AI_CARGO self --- @param Core.Point#POINT_VEC2 ToPointVec2 (optional) @{Point#POINT_VEC2) to where the cargo should run after onboarding. If not provided, the cargo will run to 60 meters behind the Carrier location. - ---- UnBoards the cargo to a Carrier. The event will create a movement (= running or driving) of the cargo from the Carrier. --- The cargo must be in the **Loaded** state. --- @function [parent=#AI_CARGO] __UnBoard --- @param #AI_CARGO self --- @param #number DelaySeconds The amount of seconds to delay the action. --- @param Core.Point#POINT_VEC2 ToPointVec2 (optional) @{Point#POINT_VEC2) to where the cargo should run after onboarding. If not provided, the cargo will run to 60 meters behind the Carrier location. - - --- Load - ---- Loads the cargo to a Carrier. The event will load the cargo into the Carrier regardless of its position. There will be no movement simulated of the cargo loading. --- The cargo must be in the **UnLoaded** state. --- @function [parent=#AI_CARGO] Load --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE ToCarrier The Carrier that will hold the cargo. - ---- Loads the cargo to a Carrier. The event will load the cargo into the Carrier regardless of its position. There will be no movement simulated of the cargo loading. --- The cargo must be in the **UnLoaded** state. --- @function [parent=#AI_CARGO] __Load --- @param #AI_CARGO self --- @param #number DelaySeconds The amount of seconds to delay the action. --- @param Wrapper.Controllable#CONTROLLABLE ToCarrier The Carrier that will hold the cargo. - - --- UnLoad - ---- UnLoads the cargo to a Carrier. The event will unload the cargo from the Carrier. There will be no movement simulated of the cargo loading. --- The cargo must be in the **Loaded** state. --- @function [parent=#AI_CARGO] UnLoad --- @param #AI_CARGO self --- @param Core.Point#POINT_VEC2 ToPointVec2 (optional) @{Point#POINT_VEC2) to where the cargo will be placed after unloading. If not provided, the cargo will be placed 60 meters behind the Carrier location. - ---- UnLoads the cargo to a Carrier. The event will unload the cargo from the Carrier. There will be no movement simulated of the cargo loading. --- The cargo must be in the **Loaded** state. --- @function [parent=#AI_CARGO] __UnLoad --- @param #AI_CARGO self --- @param #number DelaySeconds The amount of seconds to delay the action. --- @param Core.Point#POINT_VEC2 ToPointVec2 (optional) @{Point#POINT_VEC2) to where the cargo will be placed after unloading. If not provided, the cargo will be placed 60 meters behind the Carrier location. - --- State Transition Functions - --- UnLoaded - ---- @function [parent=#AI_CARGO] OnLeaveUnLoaded --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @return #boolean - ---- @function [parent=#AI_CARGO] OnEnterUnLoaded --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE Controllable - --- Loaded - ---- @function [parent=#AI_CARGO] OnLeaveLoaded --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @return #boolean - ---- @function [parent=#AI_CARGO] OnEnterLoaded --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE Controllable - --- Boarding - ---- @function [parent=#AI_CARGO] OnLeaveBoarding --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @return #boolean - ---- @function [parent=#AI_CARGO] OnEnterBoarding --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE Controllable - --- UnBoarding - ---- @function [parent=#AI_CARGO] OnLeaveUnBoarding --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @return #boolean - ---- @function [parent=#AI_CARGO] OnEnterUnBoarding --- @param #AI_CARGO self --- @param Wrapper.Controllable#CONTROLLABLE Controllable - - --- TODO: Find all Carrier objects and make the type of the Carriers Wrapper.Unit#UNIT in the documentation. - -CARGOS = {} - -do -- AI_CARGO - - --- @type AI_CARGO - -- @extends Core.Fsm#FSM_PROCESS - -- @field #string Type A string defining the type of the cargo. eg. Engineers, Equipment, Screwdrivers. - -- @field #string Name A string defining the name of the cargo. The name is the unique identifier of the cargo. - -- @field #number Weight A number defining the weight of the cargo. The weight is expressed in kg. - -- @field #number ReportRadius (optional) A number defining the radius in meters when the cargo is signalling or reporting to a Carrier. - -- @field #number NearRadius (optional) A number defining the radius in meters when the cargo is near to a Carrier, so that it can be loaded. - -- @field Wrapper.Controllable#CONTROLLABLE CargoObject The alive DCS object representing the cargo. This value can be nil, meaning, that the cargo is not represented anywhere... - -- @field Wrapper.Controllable#CONTROLLABLE CargoCarrier The alive DCS object carrying the cargo. This value can be nil, meaning, that the cargo is not contained anywhere... - -- @field #boolean Slingloadable This flag defines if the cargo can be slingloaded. - -- @field #boolean Moveable This flag defines if the cargo is moveable. - -- @field #boolean Representable This flag defines if the cargo can be represented by a DCS Unit. - -- @field #boolean Containable This flag defines if the cargo can be contained within a DCS Unit. - AI_CARGO = { - ClassName = "AI_CARGO", - Type = nil, - Name = nil, - Weight = nil, - CargoObject = nil, - CargoCarrier = nil, - Representable = false, - Slingloadable = false, - Moveable = false, - Containable = false, - } - ---- @type AI_CARGO.CargoObjects --- @map < #string, Wrapper.Positionable#POSITIONABLE > The alive POSITIONABLE objects representing the the cargo. - - ---- AI_CARGO Constructor. This class is an abstract class and should not be instantiated. --- @param #AI_CARGO self --- @param #string Type --- @param #string Name --- @param #number Weight --- @param #number ReportRadius (optional) --- @param #number NearRadius (optional) --- @return #AI_CARGO -function AI_CARGO:New( Type, Name, Weight, ReportRadius, NearRadius ) - - local self = BASE:Inherit( self, FSM:New() ) -- Core.Fsm#FSM_CONTROLLABLE - self:F( { Type, Name, Weight, ReportRadius, NearRadius } ) - - self:SetStartState( "UnLoaded" ) - self:AddTransition( "UnLoaded", "Board", "Boarding" ) - self:AddTransition( "Boarding", "Boarding", "Boarding" ) - self:AddTransition( "Boarding", "Load", "Loaded" ) - self:AddTransition( "UnLoaded", "Load", "Loaded" ) - self:AddTransition( "Loaded", "UnBoard", "UnBoarding" ) - self:AddTransition( "UnBoarding", "UnBoarding", "UnBoarding" ) - self:AddTransition( "UnBoarding", "UnLoad", "UnLoaded" ) - self:AddTransition( "Loaded", "UnLoad", "UnLoaded" ) - - - self.Type = Type - self.Name = Name - self.Weight = Weight - self.ReportRadius = ReportRadius - self.NearRadius = NearRadius - self.CargoObject = nil - self.CargoCarrier = nil - self.Representable = false - self.Slingloadable = false - self.Moveable = false - self.Containable = false - - - self.CargoScheduler = SCHEDULER:New() - - CARGOS[self.Name] = self - - return self -end - - ---- Template method to spawn a new representation of the AI_CARGO in the simulator. --- @param #AI_CARGO self --- @return #AI_CARGO -function AI_CARGO:Spawn( PointVec2 ) - self:F() - -end - - ---- Check if CargoCarrier is near the Cargo to be Loaded. --- @param #AI_CARGO self --- @param Core.Point#POINT_VEC2 PointVec2 --- @return #boolean -function AI_CARGO:IsNear( PointVec2 ) - self:F( { PointVec2 } ) - - local Distance = PointVec2:DistanceFromPointVec2( self.CargoObject:GetPointVec2() ) - self:T( Distance ) - - if Distance <= self.NearRadius then - return true - else - return false - end -end - -end - -do -- AI_CARGO_REPRESENTABLE - - --- @type AI_CARGO_REPRESENTABLE - -- @extends #AI_CARGO - AI_CARGO_REPRESENTABLE = { - ClassName = "AI_CARGO_REPRESENTABLE" - } - ---- AI_CARGO_REPRESENTABLE Constructor. --- @param #AI_CARGO_REPRESENTABLE self --- @param Wrapper.Controllable#Controllable CargoObject --- @param #string Type --- @param #string Name --- @param #number Weight --- @param #number ReportRadius (optional) --- @param #number NearRadius (optional) --- @return #AI_CARGO_REPRESENTABLE -function AI_CARGO_REPRESENTABLE:New( CargoObject, Type, Name, Weight, ReportRadius, NearRadius ) - local self = BASE:Inherit( self, AI_CARGO:New( Type, Name, Weight, ReportRadius, NearRadius ) ) -- #AI_CARGO - self:F( { Type, Name, Weight, ReportRadius, NearRadius } ) - - return self -end - ---- Route a cargo unit to a PointVec2. --- @param #AI_CARGO_REPRESENTABLE self --- @param Core.Point#POINT_VEC2 ToPointVec2 --- @param #number Speed --- @return #AI_CARGO_REPRESENTABLE -function AI_CARGO_REPRESENTABLE:RouteTo( ToPointVec2, Speed ) - self:F2( ToPointVec2 ) - - local Points = {} - - local PointStartVec2 = self.CargoObject:GetPointVec2() - - Points[#Points+1] = PointStartVec2:RoutePointGround( Speed ) - Points[#Points+1] = ToPointVec2:RoutePointGround( Speed ) - - local TaskRoute = self.CargoObject:TaskRoute( Points ) - self.CargoObject:SetTask( TaskRoute, 2 ) - return self -end - -end -- AI_CARGO - -do -- AI_CARGO_UNIT - - --- @type AI_CARGO_UNIT - -- @extends #AI_CARGO_REPRESENTABLE - AI_CARGO_UNIT = { - ClassName = "AI_CARGO_UNIT" - } - ---- AI_CARGO_UNIT Constructor. --- @param #AI_CARGO_UNIT self --- @param Wrapper.Unit#UNIT CargoUnit --- @param #string Type --- @param #string Name --- @param #number Weight --- @param #number ReportRadius (optional) --- @param #number NearRadius (optional) --- @return #AI_CARGO_UNIT -function AI_CARGO_UNIT:New( CargoUnit, Type, Name, Weight, ReportRadius, NearRadius ) - local self = BASE:Inherit( self, AI_CARGO_REPRESENTABLE:New( CargoUnit, Type, Name, Weight, ReportRadius, NearRadius ) ) -- #AI_CARGO_UNIT - self:F( { Type, Name, Weight, ReportRadius, NearRadius } ) - - self:T( CargoUnit ) - self.CargoObject = CargoUnit - - self:T( self.ClassName ) - - return self -end - ---- Enter UnBoarding State. --- @param #AI_CARGO_UNIT self --- @param #string Event --- @param #string From --- @param #string To --- @param Core.Point#POINT_VEC2 ToPointVec2 -function AI_CARGO_UNIT:onenterUnBoarding( From, Event, To, ToPointVec2 ) - self:F() - - local Angle = 180 - local Speed = 10 - local DeployDistance = 5 - local RouteDistance = 60 - - if From == "Loaded" then - - local CargoCarrierPointVec2 = self.CargoCarrier:GetPointVec2() - local CargoCarrierHeading = self.CargoCarrier:GetHeading() -- Get Heading of object in degrees. - local CargoDeployHeading = ( ( CargoCarrierHeading + Angle ) >= 360 ) and ( CargoCarrierHeading + Angle - 360 ) or ( CargoCarrierHeading + Angle ) - local CargoDeployPointVec2 = CargoCarrierPointVec2:Translate( DeployDistance, CargoDeployHeading ) - local CargoRoutePointVec2 = CargoCarrierPointVec2:Translate( RouteDistance, CargoDeployHeading ) - - -- if there is no ToPointVec2 given, then use the CargoRoutePointVec2 - ToPointVec2 = ToPointVec2 or CargoRoutePointVec2 - - local FromPointVec2 = CargoCarrierPointVec2 - - -- Respawn the group... - if self.CargoObject then - self.CargoObject:ReSpawn( CargoDeployPointVec2:GetVec3(), CargoDeployHeading ) - self.CargoCarrier = nil - - local Points = {} - Points[#Points+1] = FromPointVec2:RoutePointGround( Speed ) - Points[#Points+1] = ToPointVec2:RoutePointGround( Speed ) - - local TaskRoute = self.CargoObject:TaskRoute( Points ) - self.CargoObject:SetTask( TaskRoute, 1 ) - - self:__UnBoarding( 1, ToPointVec2 ) - end - end - -end - ---- Leave UnBoarding State. --- @param #AI_CARGO_UNIT self --- @param #string Event --- @param #string From --- @param #string To --- @param Core.Point#POINT_VEC2 ToPointVec2 -function AI_CARGO_UNIT:onleaveUnBoarding( From, Event, To, ToPointVec2 ) - self:F( { ToPointVec2, From, Event, To } ) - - local Angle = 180 - local Speed = 10 - local Distance = 5 - - if From == "UnBoarding" then - if self:IsNear( ToPointVec2 ) then - return true - else - self:__UnBoarding( 1, ToPointVec2 ) - end - return false - end - -end - ---- UnBoard Event. --- @param #AI_CARGO_UNIT self --- @param #string Event --- @param #string From --- @param #string To --- @param Core.Point#POINT_VEC2 ToPointVec2 -function AI_CARGO_UNIT:onafterUnBoarding( From, Event, To, ToPointVec2 ) - self:F( { ToPointVec2, From, Event, To } ) - - self.CargoInAir = self.CargoObject:InAir() - - self:T( self.CargoInAir ) - - -- Only unboard the cargo when the carrier is not in the air. - -- (eg. cargo can be on a oil derrick, moving the cargo on the oil derrick will drop the cargo on the sea). - if not self.CargoInAir then - - end - - self:__UnLoad( 1, ToPointVec2 ) - -end - - - ---- Enter UnLoaded State. --- @param #AI_CARGO_UNIT self --- @param #string Event --- @param #string From --- @param #string To --- @param Core.Point#POINT_VEC2 -function AI_CARGO_UNIT:onenterUnLoaded( From, Event, To, ToPointVec2 ) - self:F( { ToPointVec2, From, Event, To } ) - - local Angle = 180 - local Speed = 10 - local Distance = 5 - - if From == "Loaded" then - local StartPointVec2 = self.CargoCarrier:GetPointVec2() - local CargoCarrierHeading = self.CargoCarrier:GetHeading() -- Get Heading of object in degrees. - local CargoDeployHeading = ( ( CargoCarrierHeading + Angle ) >= 360 ) and ( CargoCarrierHeading + Angle - 360 ) or ( CargoCarrierHeading + Angle ) - local CargoDeployPointVec2 = StartPointVec2:Translate( Distance, CargoDeployHeading ) - - ToPointVec2 = ToPointVec2 or POINT_VEC2:New( CargoDeployPointVec2:GetX(), CargoDeployPointVec2:GetY() ) - - -- Respawn the group... - if self.CargoObject then - self.CargoObject:ReSpawn( ToPointVec2:GetVec3(), 0 ) - self.CargoCarrier = nil - end - - end - - if self.OnUnLoadedCallBack then - self.OnUnLoadedCallBack( self, unpack( self.OnUnLoadedParameters ) ) - self.OnUnLoadedCallBack = nil - end - -end - - - ---- Enter Boarding State. --- @param #AI_CARGO_UNIT self --- @param #string Event --- @param #string From --- @param #string To --- @param Wrapper.Unit#UNIT CargoCarrier -function AI_CARGO_UNIT:onenterBoarding( From, Event, To, CargoCarrier ) - self:F( { CargoCarrier.UnitName, From, Event, To } ) - - local Speed = 10 - local Angle = 180 - local Distance = 5 - - if From == "UnLoaded" then - local CargoCarrierPointVec2 = CargoCarrier:GetPointVec2() - local CargoCarrierHeading = CargoCarrier:GetHeading() -- Get Heading of object in degrees. - local CargoDeployHeading = ( ( CargoCarrierHeading + Angle ) >= 360 ) and ( CargoCarrierHeading + Angle - 360 ) or ( CargoCarrierHeading + Angle ) - local CargoDeployPointVec2 = CargoCarrierPointVec2:Translate( Distance, CargoDeployHeading ) - - local Points = {} - - local PointStartVec2 = self.CargoObject:GetPointVec2() - - Points[#Points+1] = PointStartVec2:RoutePointGround( Speed ) - Points[#Points+1] = CargoDeployPointVec2:RoutePointGround( Speed ) - - local TaskRoute = self.CargoObject:TaskRoute( Points ) - self.CargoObject:SetTask( TaskRoute, 2 ) - end - -end - ---- Leave Boarding State. --- @param #AI_CARGO_UNIT self --- @param #string Event --- @param #string From --- @param #string To --- @param Wrapper.Unit#UNIT CargoCarrier -function AI_CARGO_UNIT:onleaveBoarding( From, Event, To, CargoCarrier ) - self:F( { CargoCarrier.UnitName, From, Event, To } ) - - if self:IsNear( CargoCarrier:GetPointVec2() ) then - self:__Load( 1, CargoCarrier ) - return true - else - self:__Boarding( 1, CargoCarrier ) - end - return false -end - ---- Loaded State. --- @param #AI_CARGO_UNIT self --- @param #string Event --- @param #string From --- @param #string To --- @param Wrapper.Unit#UNIT CargoCarrier -function AI_CARGO_UNIT:onenterLoaded( From, Event, To, CargoCarrier ) - self:F() - - self.CargoCarrier = CargoCarrier - - -- Only destroy the CargoObject is if there is a CargoObject (packages don't have CargoObjects). - if self.CargoObject then - self:T("Destroying") - self.CargoObject:Destroy() - end -end - - ---- Board Event. --- @param #AI_CARGO_UNIT self --- @param #string Event --- @param #string From --- @param #string To -function AI_CARGO_UNIT:onafterBoard( From, Event, To, CargoCarrier ) - self:F() - - self.CargoInAir = self.CargoObject:InAir() - - self:T( self.CargoInAir ) - - -- Only move the group to the carrier when the cargo is not in the air - -- (eg. cargo can be on a oil derrick, moving the cargo on the oil derrick will drop the cargo on the sea). - if not self.CargoInAir then - self:Load( CargoCarrier ) - end - -end - -end - -do -- AI_CARGO_PACKAGE - - --- @type AI_CARGO_PACKAGE - -- @extends #AI_CARGO_REPRESENTABLE - AI_CARGO_PACKAGE = { - ClassName = "AI_CARGO_PACKAGE" - } - ---- AI_CARGO_PACKAGE Constructor. --- @param #AI_CARGO_PACKAGE self --- @param Wrapper.Unit#UNIT CargoCarrier The UNIT carrying the package. --- @param #string Type --- @param #string Name --- @param #number Weight --- @param #number ReportRadius (optional) --- @param #number NearRadius (optional) --- @return #AI_CARGO_PACKAGE -function AI_CARGO_PACKAGE:New( CargoCarrier, Type, Name, Weight, ReportRadius, NearRadius ) - local self = BASE:Inherit( self, AI_CARGO_REPRESENTABLE:New( CargoCarrier, Type, Name, Weight, ReportRadius, NearRadius ) ) -- #AI_CARGO_PACKAGE - self:F( { Type, Name, Weight, ReportRadius, NearRadius } ) - - self:T( CargoCarrier ) - self.CargoCarrier = CargoCarrier - - return self -end - ---- Board Event. --- @param #AI_CARGO_PACKAGE self --- @param #string Event --- @param #string From --- @param #string To --- @param Wrapper.Unit#UNIT CargoCarrier --- @param #number Speed --- @param #number BoardDistance --- @param #number Angle -function AI_CARGO_PACKAGE:onafterOnBoard( From, Event, To, CargoCarrier, Speed, BoardDistance, LoadDistance, Angle ) - self:F() - - self.CargoInAir = self.CargoCarrier:InAir() - - self:T( self.CargoInAir ) - - -- Only move the CargoCarrier to the New CargoCarrier when the New CargoCarrier is not in the air. - if not self.CargoInAir then - - local Points = {} - - local StartPointVec2 = self.CargoCarrier:GetPointVec2() - local CargoCarrierHeading = CargoCarrier:GetHeading() -- Get Heading of object in degrees. - local CargoDeployHeading = ( ( CargoCarrierHeading + Angle ) >= 360 ) and ( CargoCarrierHeading + Angle - 360 ) or ( CargoCarrierHeading + Angle ) - self:T( { CargoCarrierHeading, CargoDeployHeading } ) - local CargoDeployPointVec2 = CargoCarrier:GetPointVec2():Translate( BoardDistance, CargoDeployHeading ) - - Points[#Points+1] = StartPointVec2:RoutePointGround( Speed ) - Points[#Points+1] = CargoDeployPointVec2:RoutePointGround( Speed ) - - local TaskRoute = self.CargoCarrier:TaskRoute( Points ) - self.CargoCarrier:SetTask( TaskRoute, 1 ) - end - - self:Boarded( CargoCarrier, Speed, BoardDistance, LoadDistance, Angle ) - -end - ---- Check if CargoCarrier is near the Cargo to be Loaded. --- @param #AI_CARGO_PACKAGE self --- @param Wrapper.Unit#UNIT CargoCarrier --- @return #boolean -function AI_CARGO_PACKAGE:IsNear( CargoCarrier ) - self:F() - - local CargoCarrierPoint = CargoCarrier:GetPointVec2() - - local Distance = CargoCarrierPoint:DistanceFromPointVec2( self.CargoCarrier:GetPointVec2() ) - self:T( Distance ) - - if Distance <= self.NearRadius then - return true - else - return false - end -end - ---- Boarded Event. --- @param #AI_CARGO_PACKAGE self --- @param #string Event --- @param #string From --- @param #string To --- @param Wrapper.Unit#UNIT CargoCarrier -function AI_CARGO_PACKAGE:onafterOnBoarded( From, Event, To, CargoCarrier, Speed, BoardDistance, LoadDistance, Angle ) - self:F() - - if self:IsNear( CargoCarrier ) then - self:__Load( 1, CargoCarrier, Speed, LoadDistance, Angle ) - else - self:__Boarded( 1, CargoCarrier, Speed, BoardDistance, LoadDistance, Angle ) - end -end - ---- UnBoard Event. --- @param #AI_CARGO_PACKAGE self --- @param #string Event --- @param #string From --- @param #string To --- @param #number Speed --- @param #number UnLoadDistance --- @param #number UnBoardDistance --- @param #number Radius --- @param #number Angle -function AI_CARGO_PACKAGE:onafterUnBoard( From, Event, To, CargoCarrier, Speed, UnLoadDistance, UnBoardDistance, Radius, Angle ) - self:F() - - self.CargoInAir = self.CargoCarrier:InAir() - - self:T( self.CargoInAir ) - - -- Only unboard the cargo when the carrier is not in the air. - -- (eg. cargo can be on a oil derrick, moving the cargo on the oil derrick will drop the cargo on the sea). - if not self.CargoInAir then - - self:_Next( self.FsmP.UnLoad, UnLoadDistance, Angle ) - - local Points = {} - - local StartPointVec2 = CargoCarrier:GetPointVec2() - local CargoCarrierHeading = self.CargoCarrier:GetHeading() -- Get Heading of object in degrees. - local CargoDeployHeading = ( ( CargoCarrierHeading + Angle ) >= 360 ) and ( CargoCarrierHeading + Angle - 360 ) or ( CargoCarrierHeading + Angle ) - self:T( { CargoCarrierHeading, CargoDeployHeading } ) - local CargoDeployPointVec2 = StartPointVec2:Translate( UnBoardDistance, CargoDeployHeading ) - - Points[#Points+1] = StartPointVec2:RoutePointGround( Speed ) - Points[#Points+1] = CargoDeployPointVec2:RoutePointGround( Speed ) - - local TaskRoute = CargoCarrier:TaskRoute( Points ) - CargoCarrier:SetTask( TaskRoute, 1 ) - end - - self:__UnBoarded( 1 , CargoCarrier, Speed ) - -end - ---- UnBoarded Event. --- @param #AI_CARGO_PACKAGE self --- @param #string Event --- @param #string From --- @param #string To --- @param Wrapper.Unit#UNIT CargoCarrier -function AI_CARGO_PACKAGE:onafterUnBoarded( From, Event, To, CargoCarrier, Speed ) - self:F() - - if self:IsNear( CargoCarrier ) then - self:__UnLoad( 1, CargoCarrier, Speed ) - else - self:__UnBoarded( 1, CargoCarrier, Speed ) - end -end - ---- Load Event. --- @param #AI_CARGO_PACKAGE self --- @param #string Event --- @param #string From --- @param #string To --- @param Wrapper.Unit#UNIT CargoCarrier --- @param #number Speed --- @param #number LoadDistance --- @param #number Angle -function AI_CARGO_PACKAGE:onafterLoad( From, Event, To, CargoCarrier, Speed, LoadDistance, Angle ) - self:F() - - self.CargoCarrier = CargoCarrier - - local StartPointVec2 = self.CargoCarrier:GetPointVec2() - local CargoCarrierHeading = self.CargoCarrier:GetHeading() -- Get Heading of object in degrees. - local CargoDeployHeading = ( ( CargoCarrierHeading + Angle ) >= 360 ) and ( CargoCarrierHeading + Angle - 360 ) or ( CargoCarrierHeading + Angle ) - local CargoDeployPointVec2 = StartPointVec2:Translate( LoadDistance, CargoDeployHeading ) - - local Points = {} - Points[#Points+1] = StartPointVec2:RoutePointGround( Speed ) - Points[#Points+1] = CargoDeployPointVec2:RoutePointGround( Speed ) - - local TaskRoute = self.CargoCarrier:TaskRoute( Points ) - self.CargoCarrier:SetTask( TaskRoute, 1 ) - -end - ---- UnLoad Event. --- @param #AI_CARGO_PACKAGE self --- @param #string Event --- @param #string From --- @param #string To --- @param #number Distance --- @param #number Angle -function AI_CARGO_PACKAGE:onafterUnLoad( From, Event, To, CargoCarrier, Speed, Distance, Angle ) - self:F() - - local StartPointVec2 = self.CargoCarrier:GetPointVec2() - local CargoCarrierHeading = self.CargoCarrier:GetHeading() -- Get Heading of object in degrees. - local CargoDeployHeading = ( ( CargoCarrierHeading + Angle ) >= 360 ) and ( CargoCarrierHeading + Angle - 360 ) or ( CargoCarrierHeading + Angle ) - local CargoDeployPointVec2 = StartPointVec2:Translate( Distance, CargoDeployHeading ) - - self.CargoCarrier = CargoCarrier - - local Points = {} - Points[#Points+1] = StartPointVec2:RoutePointGround( Speed ) - Points[#Points+1] = CargoDeployPointVec2:RoutePointGround( Speed ) - - local TaskRoute = self.CargoCarrier:TaskRoute( Points ) - self.CargoCarrier:SetTask( TaskRoute, 1 ) - -end - - -end - -do -- AI_CARGO_GROUP - - --- @type AI_CARGO_GROUP - -- @extends AI.AI_Cargo#AI_CARGO - -- @field Set#SET_BASE CargoSet A set of cargo objects. - -- @field #string Name A string defining the name of the cargo group. The name is the unique identifier of the cargo. - AI_CARGO_GROUP = { - ClassName = "AI_CARGO_GROUP", - } - ---- AI_CARGO_GROUP constructor. --- @param #AI_CARGO_GROUP self --- @param Core.Set#Set_BASE CargoSet --- @param #string Type --- @param #string Name --- @param #number Weight --- @param #number ReportRadius (optional) --- @param #number NearRadius (optional) --- @return #AI_CARGO_GROUP -function AI_CARGO_GROUP:New( CargoSet, Type, Name, ReportRadius, NearRadius ) - local self = BASE:Inherit( self, AI_CARGO:New( Type, Name, 0, ReportRadius, NearRadius ) ) -- #AI_CARGO_GROUP - self:F( { Type, Name, ReportRadius, NearRadius } ) - - self.CargoSet = CargoSet - - - return self -end - -end -- AI_CARGO_GROUP - -do -- AI_CARGO_GROUPED - - --- @type AI_CARGO_GROUPED - -- @extends AI.AI_Cargo#AI_CARGO_GROUP - AI_CARGO_GROUPED = { - ClassName = "AI_CARGO_GROUPED", - } - ---- AI_CARGO_GROUPED constructor. --- @param #AI_CARGO_GROUPED self --- @param Core.Set#Set_BASE CargoSet --- @param #string Type --- @param #string Name --- @param #number Weight --- @param #number ReportRadius (optional) --- @param #number NearRadius (optional) --- @return #AI_CARGO_GROUPED -function AI_CARGO_GROUPED:New( CargoSet, Type, Name, ReportRadius, NearRadius ) - local self = BASE:Inherit( self, AI_CARGO_GROUP:New( CargoSet, Type, Name, ReportRadius, NearRadius ) ) -- #AI_CARGO_GROUPED - self:F( { Type, Name, ReportRadius, NearRadius } ) - - return self -end - ---- Enter Boarding State. --- @param #AI_CARGO_GROUPED self --- @param Wrapper.Unit#UNIT CargoCarrier --- @param #string Event --- @param #string From --- @param #string To -function AI_CARGO_GROUPED:onenterBoarding( From, Event, To, CargoCarrier ) - self:F( { CargoCarrier.UnitName, From, Event, To } ) - - if From == "UnLoaded" then - - -- For each Cargo object within the AI_CARGO_GROUPED, route each object to the CargoLoadPointVec2 - self.CargoSet:ForEach( - function( Cargo ) - Cargo:__Board( 1, CargoCarrier ) - end - ) - - self:__Boarding( 1, CargoCarrier ) - end - -end - ---- Enter Loaded State. --- @param #AI_CARGO_GROUPED self --- @param Wrapper.Unit#UNIT CargoCarrier --- @param #string Event --- @param #string From --- @param #string To -function AI_CARGO_GROUPED:onenterLoaded( From, Event, To, CargoCarrier ) - self:F( { CargoCarrier.UnitName, From, Event, To } ) - - if From == "UnLoaded" then - -- For each Cargo object within the AI_CARGO_GROUPED, load each cargo to the CargoCarrier. - for CargoID, Cargo in pairs( self.CargoSet:GetSet() ) do - Cargo:Load( CargoCarrier ) - end - end -end - ---- Leave Boarding State. --- @param #AI_CARGO_GROUPED self --- @param Wrapper.Unit#UNIT CargoCarrier --- @param #string Event --- @param #string From --- @param #string To -function AI_CARGO_GROUPED:onleaveBoarding( From, Event, To, CargoCarrier ) - self:F( { CargoCarrier.UnitName, From, Event, To } ) - - local Boarded = true - - -- For each Cargo object within the AI_CARGO_GROUPED, route each object to the CargoLoadPointVec2 - for CargoID, Cargo in pairs( self.CargoSet:GetSet() ) do - self:T( Cargo.current ) - if not Cargo:is( "Loaded" ) then - Boarded = false - end - end - - if not Boarded then - self:__Boarding( 1, CargoCarrier ) - else - self:__Load( 1, CargoCarrier ) - end - return Boarded -end - ---- Enter UnBoarding State. --- @param #AI_CARGO_GROUPED self --- @param Core.Point#POINT_VEC2 ToPointVec2 --- @param #string Event --- @param #string From --- @param #string To -function AI_CARGO_GROUPED:onenterUnBoarding( From, Event, To, ToPointVec2 ) - self:F() - - local Timer = 1 - - if From == "Loaded" then - - -- For each Cargo object within the AI_CARGO_GROUPED, route each object to the CargoLoadPointVec2 - self.CargoSet:ForEach( - function( Cargo ) - Cargo:__UnBoard( Timer, ToPointVec2 ) - Timer = Timer + 10 - end - ) - - self:__UnBoarding( 1, ToPointVec2 ) - end - -end - ---- Leave UnBoarding State. --- @param #AI_CARGO_GROUPED self --- @param Core.Point#POINT_VEC2 ToPointVec2 --- @param #string Event --- @param #string From --- @param #string To -function AI_CARGO_GROUPED:onleaveUnBoarding( From, Event, To, ToPointVec2 ) - self:F( { ToPointVec2, From, Event, To } ) - - local Angle = 180 - local Speed = 10 - local Distance = 5 - - if From == "UnBoarding" then - local UnBoarded = true - - -- For each Cargo object within the AI_CARGO_GROUPED, route each object to the CargoLoadPointVec2 - for CargoID, Cargo in pairs( self.CargoSet:GetSet() ) do - self:T( Cargo.current ) - if not Cargo:is( "UnLoaded" ) then - UnBoarded = false - end - end - - if UnBoarded then - return true - else - self:__UnBoarding( 1, ToPointVec2 ) - end - - return false - end - -end - ---- UnBoard Event. --- @param #AI_CARGO_GROUPED self --- @param Core.Point#POINT_VEC2 ToPointVec2 --- @param #string Event --- @param #string From --- @param #string To -function AI_CARGO_GROUPED:onafterUnBoarding( From, Event, To, ToPointVec2 ) - self:F( { ToPointVec2, From, Event, To } ) - - self:__UnLoad( 1, ToPointVec2 ) -end - - - ---- Enter UnLoaded State. --- @param #AI_CARGO_GROUPED self --- @param Core.Point#POINT_VEC2 --- @param #string Event --- @param #string From --- @param #string To -function AI_CARGO_GROUPED:onenterUnLoaded( From, Event, To, ToPointVec2 ) - self:F( { ToPointVec2, From, Event, To } ) - - if From == "Loaded" then - - -- For each Cargo object within the AI_CARGO_GROUPED, route each object to the CargoLoadPointVec2 - self.CargoSet:ForEach( - function( Cargo ) - Cargo:UnLoad( ToPointVec2 ) - end - ) - - end - -end - -end -- AI_CARGO_GROUPED - - - ---- (SP) (MP) (FSM) Accept or reject process for player (task) assignments. --- --- === --- --- # @{#ACT_ASSIGN} FSM template class, extends @{Fsm#FSM_PROCESS} --- --- ## ACT_ASSIGN state machine: --- --- This class is a state machine: it manages a process that is triggered by events causing state transitions to occur. --- All derived classes from this class will start with the class name, followed by a \_. See the relevant derived class descriptions below. --- Each derived class follows exactly the same process, using the same events and following the same state transitions, --- but will have **different implementation behaviour** upon each event or state transition. --- --- ### ACT_ASSIGN **Events**: --- --- These are the events defined in this class: --- --- * **Start**: Start the tasking acceptance process. --- * **Assign**: Assign the task. --- * **Reject**: Reject the task.. --- --- ### ACT_ASSIGN **Event methods**: --- --- Event methods are available (dynamically allocated by the state machine), that accomodate for state transitions occurring in the process. --- There are two types of event methods, which you can use to influence the normal mechanisms in the state machine: --- --- * **Immediate**: The event method has exactly the name of the event. --- * **Delayed**: The event method starts with a __ + the name of the event. The first parameter of the event method is a number value, expressing the delay in seconds when the event will be executed. --- --- ### ACT_ASSIGN **States**: --- --- * **UnAssigned**: The player has not accepted the task. --- * **Assigned (*)**: The player has accepted the task. --- * **Rejected (*)**: The player has not accepted the task. --- * **Waiting**: The process is awaiting player feedback. --- * **Failed (*)**: The process has failed. --- --- (*) End states of the process. --- --- ### ACT_ASSIGN state transition methods: --- --- State transition functions can be set **by the mission designer** customizing or improving the behaviour of the state. --- There are 2 moments when state transition methods will be called by the state machine: --- --- * **Before** the state transition. --- The state transition method needs to start with the name **OnBefore + the name of the state**. --- If the state transition method returns false, then the processing of the state transition will not be done! --- If you want to change the behaviour of the AIControllable at this event, return false, --- but then you'll need to specify your own logic using the AIControllable! --- --- * **After** the state transition. --- The state transition method needs to start with the name **OnAfter + the name of the state**. --- These state transition methods need to provide a return value, which is specified at the function description. --- --- === --- --- # 1) @{#ACT_ASSIGN_ACCEPT} class, extends @{Fsm.Assign#ACT_ASSIGN} --- --- The ACT_ASSIGN_ACCEPT class accepts by default a task for a player. No player intervention is allowed to reject the task. --- --- ## 1.1) ACT_ASSIGN_ACCEPT constructor: --- --- * @{#ACT_ASSIGN_ACCEPT.New}(): Creates a new ACT_ASSIGN_ACCEPT object. --- --- === --- --- # 2) @{#ACT_ASSIGN_MENU_ACCEPT} class, extends @{Fsm.Assign#ACT_ASSIGN} --- --- The ACT_ASSIGN_MENU_ACCEPT class accepts a task when the player accepts the task through an added menu option. --- This assignment type is useful to conditionally allow the player to choose whether or not he would accept the task. --- The assignment type also allows to reject the task. --- --- ## 2.1) ACT_ASSIGN_MENU_ACCEPT constructor: --- ----------------------------------------- --- --- * @{#ACT_ASSIGN_MENU_ACCEPT.New}(): Creates a new ACT_ASSIGN_MENU_ACCEPT object. --- --- === --- --- @module Assign - - -do -- ACT_ASSIGN - - --- ACT_ASSIGN class - -- @type ACT_ASSIGN - -- @field Tasking.Task#TASK Task - -- @field Wrapper.Unit#UNIT ProcessUnit - -- @field Core.Zone#ZONE_BASE TargetZone - -- @extends Core.Fsm#FSM_PROCESS - ACT_ASSIGN = { - ClassName = "ACT_ASSIGN", - } - - - --- Creates a new task assignment state machine. The process will accept the task by default, no player intervention accepted. - -- @param #ACT_ASSIGN self - -- @return #ACT_ASSIGN The task acceptance process. - function ACT_ASSIGN:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM_PROCESS:New( "ACT_ASSIGN" ) ) -- Core.Fsm#FSM_PROCESS - - self:AddTransition( "UnAssigned", "Start", "Waiting" ) - self:AddTransition( "Waiting", "Assign", "Assigned" ) - self:AddTransition( "Waiting", "Reject", "Rejected" ) - self:AddTransition( "*", "Fail", "Failed" ) - - self:AddEndState( "Assigned" ) - self:AddEndState( "Rejected" ) - self:AddEndState( "Failed" ) - - self:SetStartState( "UnAssigned" ) - - return self - end - -end -- ACT_ASSIGN - - - -do -- ACT_ASSIGN_ACCEPT - - --- ACT_ASSIGN_ACCEPT class - -- @type ACT_ASSIGN_ACCEPT - -- @field Tasking.Task#TASK Task - -- @field Wrapper.Unit#UNIT ProcessUnit - -- @field Core.Zone#ZONE_BASE TargetZone - -- @extends #ACT_ASSIGN - ACT_ASSIGN_ACCEPT = { - ClassName = "ACT_ASSIGN_ACCEPT", - } - - - --- Creates a new task assignment state machine. The process will accept the task by default, no player intervention accepted. - -- @param #ACT_ASSIGN_ACCEPT self - -- @param #string TaskBriefing - function ACT_ASSIGN_ACCEPT:New( TaskBriefing ) - - local self = BASE:Inherit( self, ACT_ASSIGN:New() ) -- #ACT_ASSIGN_ACCEPT - - self.TaskBriefing = TaskBriefing - - return self - end - - function ACT_ASSIGN_ACCEPT:Init( FsmAssign ) - - self.TaskBriefing = FsmAssign.TaskBriefing - end - - --- StateMachine callback function - -- @param #ACT_ASSIGN_ACCEPT self - -- @param Wrapper.Unit#UNIT ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ASSIGN_ACCEPT:onafterStart( ProcessUnit, From, Event, To ) - self:E( { ProcessUnit, From, Event, To } ) - - self:__Assign( 1 ) - end - - --- StateMachine callback function - -- @param #ACT_ASSIGN_ACCEPT self - -- @param Wrapper.Unit#UNIT ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ASSIGN_ACCEPT:onenterAssigned( ProcessUnit, From, Event, To ) - env.info( "in here" ) - self:E( { ProcessUnit, From, Event, To } ) - - local ProcessGroup = ProcessUnit:GetGroup() - - self:Message( "You are assigned to the task " .. self.Task:GetName() ) - - self.Task:Assign( ProcessUnit, ProcessUnit:GetPlayerName() ) - end - -end -- ACT_ASSIGN_ACCEPT - - -do -- ACT_ASSIGN_MENU_ACCEPT - - --- ACT_ASSIGN_MENU_ACCEPT class - -- @type ACT_ASSIGN_MENU_ACCEPT - -- @field Tasking.Task#TASK Task - -- @field Wrapper.Unit#UNIT ProcessUnit - -- @field Core.Zone#ZONE_BASE TargetZone - -- @extends #ACT_ASSIGN - ACT_ASSIGN_MENU_ACCEPT = { - ClassName = "ACT_ASSIGN_MENU_ACCEPT", - } - - --- Init. - -- @param #ACT_ASSIGN_MENU_ACCEPT self - -- @param #string TaskName - -- @param #string TaskBriefing - -- @return #ACT_ASSIGN_MENU_ACCEPT self - function ACT_ASSIGN_MENU_ACCEPT:New( TaskName, TaskBriefing ) - - -- Inherits from BASE - local self = BASE:Inherit( self, ACT_ASSIGN:New() ) -- #ACT_ASSIGN_MENU_ACCEPT - - self.TaskName = TaskName - self.TaskBriefing = TaskBriefing - - return self - end - - function ACT_ASSIGN_MENU_ACCEPT:Init( FsmAssign ) - - self.TaskName = FsmAssign.TaskName - self.TaskBriefing = FsmAssign.TaskBriefing - end - - - --- Creates a new task assignment state machine. The process will request from the menu if it accepts the task, if not, the unit is removed from the simulator. - -- @param #ACT_ASSIGN_MENU_ACCEPT self - -- @param #string TaskName - -- @param #string TaskBriefing - -- @return #ACT_ASSIGN_MENU_ACCEPT self - function ACT_ASSIGN_MENU_ACCEPT:Init( TaskName, TaskBriefing ) - - self.TaskBriefing = TaskBriefing - self.TaskName = TaskName - - return self - end - - --- StateMachine callback function - -- @param #ACT_ASSIGN_MENU_ACCEPT self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ASSIGN_MENU_ACCEPT:onafterStart( ProcessUnit, From, Event, To ) - self:E( { ProcessUnit, From, Event, To } ) - - self:Message( "Access the radio menu to accept the task. You have 30 seconds or the assignment will be cancelled." ) - - local ProcessGroup = ProcessUnit:GetGroup() - - self.Menu = MENU_GROUP:New( ProcessGroup, "Task " .. self.TaskName .. " acceptance" ) - self.MenuAcceptTask = MENU_GROUP_COMMAND:New( ProcessGroup, "Accept task " .. self.TaskName, self.Menu, self.MenuAssign, self ) - self.MenuRejectTask = MENU_GROUP_COMMAND:New( ProcessGroup, "Reject task " .. self.TaskName, self.Menu, self.MenuReject, self ) - end - - --- Menu function. - -- @param #ACT_ASSIGN_MENU_ACCEPT self - function ACT_ASSIGN_MENU_ACCEPT:MenuAssign() - self:E( ) - - self:__Assign( 1 ) - end - - --- Menu function. - -- @param #ACT_ASSIGN_MENU_ACCEPT self - function ACT_ASSIGN_MENU_ACCEPT:MenuReject() - self:E( ) - - self:__Reject( 1 ) - end - - --- StateMachine callback function - -- @param #ACT_ASSIGN_MENU_ACCEPT self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ASSIGN_MENU_ACCEPT:onafterAssign( ProcessUnit, From, Event, To ) - self:E( { ProcessUnit.UnitNameFrom, Event, To } ) - - self.Menu:Remove() - end - - --- StateMachine callback function - -- @param #ACT_ASSIGN_MENU_ACCEPT self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ASSIGN_MENU_ACCEPT:onafterReject( ProcessUnit, From, Event, To ) - self:E( { ProcessUnit.UnitName, From, Event, To } ) - - self.Menu:Remove() - --TODO: need to resolve this problem ... it has to do with the events ... - --self.Task:UnAssignFromUnit( ProcessUnit )needs to become a callback funtion call upon the event - ProcessUnit:Destroy() - end - -end -- ACT_ASSIGN_MENU_ACCEPT ---- (SP) (MP) (FSM) Route AI or players through waypoints or to zones. --- --- === --- --- # @{#ACT_ROUTE} FSM class, extends @{Fsm#FSM_PROCESS} --- --- ## ACT_ROUTE state machine: --- --- This class is a state machine: it manages a process that is triggered by events causing state transitions to occur. --- All derived classes from this class will start with the class name, followed by a \_. See the relevant derived class descriptions below. --- Each derived class follows exactly the same process, using the same events and following the same state transitions, --- but will have **different implementation behaviour** upon each event or state transition. --- --- ### ACT_ROUTE **Events**: --- --- These are the events defined in this class: --- --- * **Start**: The process is started. The process will go into the Report state. --- * **Report**: The process is reporting to the player the route to be followed. --- * **Route**: The process is routing the controllable. --- * **Pause**: The process is pausing the route of the controllable. --- * **Arrive**: The controllable has arrived at a route point. --- * **More**: There are more route points that need to be followed. The process will go back into the Report state. --- * **NoMore**: There are no more route points that need to be followed. The process will go into the Success state. --- --- ### ACT_ROUTE **Event methods**: --- --- Event methods are available (dynamically allocated by the state machine), that accomodate for state transitions occurring in the process. --- There are two types of event methods, which you can use to influence the normal mechanisms in the state machine: --- --- * **Immediate**: The event method has exactly the name of the event. --- * **Delayed**: The event method starts with a __ + the name of the event. The first parameter of the event method is a number value, expressing the delay in seconds when the event will be executed. --- --- ### ACT_ROUTE **States**: --- --- * **None**: The controllable did not receive route commands. --- * **Arrived (*)**: The controllable has arrived at a route point. --- * **Aborted (*)**: The controllable has aborted the route path. --- * **Routing**: The controllable is understay to the route point. --- * **Pausing**: The process is pausing the routing. AI air will go into hover, AI ground will stop moving. Players can fly around. --- * **Success (*)**: All route points were reached. --- * **Failed (*)**: The process has failed. --- --- (*) End states of the process. --- --- ### ACT_ROUTE state transition methods: --- --- State transition functions can be set **by the mission designer** customizing or improving the behaviour of the state. --- There are 2 moments when state transition methods will be called by the state machine: --- --- * **Before** the state transition. --- The state transition method needs to start with the name **OnBefore + the name of the state**. --- If the state transition method returns false, then the processing of the state transition will not be done! --- If you want to change the behaviour of the AIControllable at this event, return false, --- but then you'll need to specify your own logic using the AIControllable! --- --- * **After** the state transition. --- The state transition method needs to start with the name **OnAfter + the name of the state**. --- These state transition methods need to provide a return value, which is specified at the function description. --- --- === --- --- # 1) @{#ACT_ROUTE_ZONE} class, extends @{Fsm.Route#ACT_ROUTE} --- --- The ACT_ROUTE_ZONE class implements the core functions to route an AIR @{Controllable} player @{Unit} to a @{Zone}. --- The player receives on perioding times messages with the coordinates of the route to follow. --- Upon arrival at the zone, a confirmation of arrival is sent, and the process will be ended. --- --- # 1.1) ACT_ROUTE_ZONE constructor: --- --- * @{#ACT_ROUTE_ZONE.New}(): Creates a new ACT_ROUTE_ZONE object. --- --- === --- --- @module Route - - -do -- ACT_ROUTE - - --- ACT_ROUTE class - -- @type ACT_ROUTE - -- @field Tasking.Task#TASK TASK - -- @field Wrapper.Unit#UNIT ProcessUnit - -- @field Core.Zone#ZONE_BASE Zone - -- @extends Core.Fsm#FSM_PROCESS - ACT_ROUTE = { - ClassName = "ACT_ROUTE", - } - - - --- Creates a new routing state machine. The process will route a CLIENT to a ZONE until the CLIENT is within that ZONE. - -- @param #ACT_ROUTE self - -- @return #ACT_ROUTE self - function ACT_ROUTE:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM_PROCESS:New( "ACT_ROUTE" ) ) -- Core.Fsm#FSM_PROCESS - - self:AddTransition( "None", "Start", "Routing" ) - self:AddTransition( "*", "Report", "Reporting" ) - self:AddTransition( "*", "Route", "Routing" ) - self:AddTransition( "Routing", "Pause", "Pausing" ) - self:AddTransition( "*", "Abort", "Aborted" ) - self:AddTransition( "Routing", "Arrive", "Arrived" ) - self:AddTransition( "Arrived", "Success", "Success" ) - self:AddTransition( "*", "Fail", "Failed" ) - self:AddTransition( "", "", "" ) - self:AddTransition( "", "", "" ) - - self:AddEndState( "Arrived" ) - self:AddEndState( "Failed" ) - - self:SetStartState( "None" ) - - return self - end - - --- Task Events - - --- StateMachine callback function - -- @param #ACT_ROUTE self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ROUTE:onafterStart( ProcessUnit, From, Event, To ) - - - self:__Route( 1 ) - end - - --- Check if the controllable has arrived. - -- @param #ACT_ROUTE self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @return #boolean - function ACT_ROUTE:onfuncHasArrived( ProcessUnit ) - return false - end - - --- StateMachine callback function - -- @param #ACT_ROUTE self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ROUTE:onbeforeRoute( ProcessUnit, From, Event, To ) - self:F( { "BeforeRoute 1", self.DisplayCount, self.DisplayInterval } ) - - if ProcessUnit:IsAlive() then - self:F( "BeforeRoute 2" ) - local HasArrived = self:onfuncHasArrived( ProcessUnit ) -- Polymorphic - if self.DisplayCount >= self.DisplayInterval then - self:T( { HasArrived = HasArrived } ) - if not HasArrived then - self:Report() - end - self.DisplayCount = 1 - else - self.DisplayCount = self.DisplayCount + 1 - end - - self:T( { DisplayCount = self.DisplayCount } ) - - if HasArrived then - self:__Arrive( 1 ) - else - self:__Route( 1 ) - end - - return HasArrived -- if false, then the event will not be executed... - end - - return false - - end - -end -- ACT_ROUTE - - -do -- ACT_ROUTE_POINT - - --- ACT_ROUTE_POINT class - -- @type ACT_ROUTE_POINT - -- @field Tasking.Task#TASK TASK - -- @extends #ACT_ROUTE - ACT_ROUTE_POINT = { - ClassName = "ACT_ROUTE_POINT", - } - - - --- Creates a new routing state machine. - -- The task will route a controllable to a PointVec2 until the controllable is within the Range. - -- @param #ACT_ROUTE_POINT self - -- @param Core.Point#POINT_VEC2 The PointVec2 to Target. - -- @param #number Range The Distance to Target. - -- @param Core.Zone#ZONE_BASE Zone - function ACT_ROUTE_POINT:New( PointVec2, Range ) - local self = BASE:Inherit( self, ACT_ROUTE:New() ) -- #ACT_ROUTE_POINT - - self.PointVec2 = PointVec2 - self.Range = Range or 0 - - self.DisplayInterval = 30 - self.DisplayCount = 30 - self.DisplayMessage = true - self.DisplayTime = 10 -- 10 seconds is the default - - return self - end - - function ACT_ROUTE_POINT:Init( FsmRoute ) - - self.PointVec2 = FsmRoute.PointVec2 - self.Range = FsmRoute.Range or 0 - - self.DisplayInterval = 30 - self.DisplayCount = 30 - self.DisplayMessage = true - self.DisplayTime = 10 -- 10 seconds is the default - end - - --- Set PointVec2 - -- @param #ACT_ROUTE_POINT self - -- @param Core.Point#POINT_VEC2 PointVec2 The PointVec2 to route to. - function ACT_ROUTE_POINT:SetPointVec2( PointVec2 ) - self:F2( { PointVec2 } ) - self.PointVec2 = PointVec2 - end - - --- Get PointVec2 - -- @param #ACT_ROUTE_POINT self - -- @return Core.Point#POINT_VEC2 PointVec2 The PointVec2 to route to. - function ACT_ROUTE_POINT:GetPointVec2() - self:F2( { self.PointVec2 } ) - return self.PointVec2 - end - - --- Set Range around PointVec2 - -- @param #ACT_ROUTE_POINT self - -- @param #number Range The Range to consider the arrival. Default is 10000 meters. - function ACT_ROUTE_POINT:SetRange( Range ) - self:F2( { self.Range } ) - self.Range = Range or 10000 - end - - --- Get Range around PointVec2 - -- @param #ACT_ROUTE_POINT self - -- @return #number The Range to consider the arrival. Default is 10000 meters. - function ACT_ROUTE_POINT:GetRange() - return self.Range - end - - --- Method override to check if the controllable has arrived. - -- @param #ACT_ROUTE_POINT self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @return #boolean - function ACT_ROUTE_POINT:onfuncHasArrived( ProcessUnit ) - - if ProcessUnit:IsAlive() then - local Distance = self.PointVec2:Get2DDistance( ProcessUnit:GetPointVec2() ) - - if Distance <= self.Range then - local RouteText = "You have arrived." - self:Message( RouteText ) - return true - end - end - - return false - end - - --- Task Events - - --- StateMachine callback function - -- @param #ACT_ROUTE_POINT self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ROUTE_POINT:onenterReporting( ProcessUnit, From, Event, To ) - - local TaskUnitPointVec2 = ProcessUnit:GetPointVec2() - local RouteText = "Route to " .. TaskUnitPointVec2:GetBRText( self.PointVec2 ) .. " km." - self:Message( RouteText ) - end - -end -- ACT_ROUTE_POINT - - -do -- ACT_ROUTE_ZONE - - --- ACT_ROUTE_ZONE class - -- @type ACT_ROUTE_ZONE - -- @field Tasking.Task#TASK TASK - -- @field Wrapper.Unit#UNIT ProcessUnit - -- @field Core.Zone#ZONE_BASE Zone - -- @extends #ACT_ROUTE - ACT_ROUTE_ZONE = { - ClassName = "ACT_ROUTE_ZONE", - } - - - --- Creates a new routing state machine. The task will route a controllable to a ZONE until the controllable is within that ZONE. - -- @param #ACT_ROUTE_ZONE self - -- @param Core.Zone#ZONE_BASE Zone - function ACT_ROUTE_ZONE:New( Zone ) - local self = BASE:Inherit( self, ACT_ROUTE:New() ) -- #ACT_ROUTE_ZONE - - self.Zone = Zone - - self.DisplayInterval = 30 - self.DisplayCount = 30 - self.DisplayMessage = true - self.DisplayTime = 10 -- 10 seconds is the default - - return self - end - - function ACT_ROUTE_ZONE:Init( FsmRoute ) - - self.Zone = FsmRoute.Zone - - self.DisplayInterval = 30 - self.DisplayCount = 30 - self.DisplayMessage = true - self.DisplayTime = 10 -- 10 seconds is the default - end - - --- Set Zone - -- @param #ACT_ROUTE_ZONE self - -- @param Core.Zone#ZONE_BASE Zone The Zone object where to route to. - function ACT_ROUTE_ZONE:SetZone( Zone ) - self.Zone = Zone - end - - --- Get Zone - -- @param #ACT_ROUTE_ZONE self - -- @return Core.Zone#ZONE_BASE Zone The Zone object where to route to. - function ACT_ROUTE_ZONE:GetZone() - return self.Zone - end - - --- Method override to check if the controllable has arrived. - -- @param #ACT_ROUTE self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @return #boolean - function ACT_ROUTE_ZONE:onfuncHasArrived( ProcessUnit ) - - if ProcessUnit:IsInZone( self.Zone ) then - local RouteText = "You have arrived within the zone." - self:Message( RouteText ) - end - - return ProcessUnit:IsInZone( self.Zone ) - end - - --- Task Events - - --- StateMachine callback function - -- @param #ACT_ROUTE_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ROUTE_ZONE:onenterReporting( ProcessUnit, From, Event, To ) - - local ZoneVec2 = self.Zone:GetVec2() - local ZonePointVec2 = POINT_VEC2:New( ZoneVec2.x, ZoneVec2.y ) - local TaskUnitVec2 = ProcessUnit:GetVec2() - local TaskUnitPointVec2 = POINT_VEC2:New( TaskUnitVec2.x, TaskUnitVec2.y ) - local RouteText = "Route to " .. TaskUnitPointVec2:GetBRText( ZonePointVec2 ) .. " km." - self:Message( RouteText ) - end - -end -- ACT_ROUTE_ZONE ---- **Actions** - ACT_ACCOUNT_ classes **account for** (detect, count & report) various DCS events occuring on @{Unit}s. --- --- ![Banner Image](..\Presentations\ACT_ACCOUNT\Dia1.JPG) --- --- === --- --- @module Account - - -do -- ACT_ACCOUNT - - --- # @{#ACT_ACCOUNT} FSM class, extends @{Fsm#FSM_PROCESS} - -- - -- ## ACT_ACCOUNT state machine: - -- - -- This class is a state machine: it manages a process that is triggered by events causing state transitions to occur. - -- All derived classes from this class will start with the class name, followed by a \_. See the relevant derived class descriptions below. - -- Each derived class follows exactly the same process, using the same events and following the same state transitions, - -- but will have **different implementation behaviour** upon each event or state transition. - -- - -- ### ACT_ACCOUNT States - -- - -- * **Asigned**: The player is assigned. - -- * **Waiting**: Waiting for an event. - -- * **Report**: Reporting. - -- * **Account**: Account for an event. - -- * **Accounted**: All events have been accounted for, end of the process. - -- * **Failed**: Failed the process. - -- - -- ### ACT_ACCOUNT Events - -- - -- * **Start**: Start the process. - -- * **Wait**: Wait for an event. - -- * **Report**: Report the status of the accounting. - -- * **Event**: An event happened, process the event. - -- * **More**: More targets. - -- * **NoMore (*)**: No more targets. - -- * **Fail (*)**: The action process has failed. - -- - -- (*) End states of the process. - -- - -- ### ACT_ACCOUNT state transition methods: - -- - -- State transition functions can be set **by the mission designer** customizing or improving the behaviour of the state. - -- There are 2 moments when state transition methods will be called by the state machine: - -- - -- * **Before** the state transition. - -- The state transition method needs to start with the name **OnBefore + the name of the state**. - -- If the state transition method returns false, then the processing of the state transition will not be done! - -- If you want to change the behaviour of the AIControllable at this event, return false, - -- but then you'll need to specify your own logic using the AIControllable! - -- - -- * **After** the state transition. - -- The state transition method needs to start with the name **OnAfter + the name of the state**. - -- These state transition methods need to provide a return value, which is specified at the function description. - -- - -- @type ACT_ACCOUNT - -- @field Set#SET_UNIT TargetSetUnit - -- @extends Core.Fsm#FSM_PROCESS - ACT_ACCOUNT = { - ClassName = "ACT_ACCOUNT", - TargetSetUnit = nil, - } - - --- Creates a new DESTROY process. - -- @param #ACT_ACCOUNT self - -- @return #ACT_ACCOUNT - function ACT_ACCOUNT:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM_PROCESS:New() ) -- Core.Fsm#FSM_PROCESS - - self:AddTransition( "Assigned", "Start", "Waiting") - self:AddTransition( "*", "Wait", "Waiting") - self:AddTransition( "*", "Report", "Report") - self:AddTransition( "*", "Event", "Account") - self:AddTransition( "Account", "More", "Wait") - self:AddTransition( "Account", "NoMore", "Accounted") - self:AddTransition( "*", "Fail", "Failed") - - self:AddEndState( "Accounted" ) - self:AddEndState( "Failed" ) - - self:SetStartState( "Assigned" ) - - return self - end - - --- Process Events - - --- StateMachine callback function - -- @param #ACT_ACCOUNT self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ACCOUNT:onafterStart( ProcessUnit, From, Event, To ) - - self:HandleEvent( EVENTS.Dead, self.onfuncEventDead ) - - self:__Wait( 1 ) - end - - - --- StateMachine callback function - -- @param #ACT_ACCOUNT self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ACCOUNT:onenterWaiting( ProcessUnit, From, Event, To ) - - if self.DisplayCount >= self.DisplayInterval then - self:Report() - self.DisplayCount = 1 - else - self.DisplayCount = self.DisplayCount + 1 - end - - return true -- Process always the event. - end - - --- StateMachine callback function - -- @param #ACT_ACCOUNT self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ACCOUNT:onafterEvent( ProcessUnit, From, Event, To, Event ) - - self:__NoMore( 1 ) - end - -end -- ACT_ACCOUNT - -do -- ACT_ACCOUNT_DEADS - - --- # @{#ACT_ACCOUNT_DEADS} FSM class, extends @{Fsm.Account#ACT_ACCOUNT} - -- - -- The ACT_ACCOUNT_DEADS class accounts (detects, counts and reports) successful kills of DCS units. - -- The process is given a @{Set} of units that will be tracked upon successful destruction. - -- The process will end after each target has been successfully destroyed. - -- Each successful dead will trigger an Account state transition that can be scored, modified or administered. - -- - -- - -- ## ACT_ACCOUNT_DEADS constructor: - -- - -- * @{#ACT_ACCOUNT_DEADS.New}(): Creates a new ACT_ACCOUNT_DEADS object. - -- - -- @type ACT_ACCOUNT_DEADS - -- @field Set#SET_UNIT TargetSetUnit - -- @extends #ACT_ACCOUNT - ACT_ACCOUNT_DEADS = { - ClassName = "ACT_ACCOUNT_DEADS", - TargetSetUnit = nil, - } - - - --- Creates a new DESTROY process. - -- @param #ACT_ACCOUNT_DEADS self - -- @param Set#SET_UNIT TargetSetUnit - -- @param #string TaskName - function ACT_ACCOUNT_DEADS:New( TargetSetUnit, TaskName ) - -- Inherits from BASE - local self = BASE:Inherit( self, ACT_ACCOUNT:New() ) -- #ACT_ACCOUNT_DEADS - - self.TargetSetUnit = TargetSetUnit - self.TaskName = TaskName - - self.DisplayInterval = 30 - self.DisplayCount = 30 - self.DisplayMessage = true - self.DisplayTime = 10 -- 10 seconds is the default - self.DisplayCategory = "HQ" -- Targets is the default display category - - return self - end - - function ACT_ACCOUNT_DEADS:Init( FsmAccount ) - - self.TargetSetUnit = FsmAccount.TargetSetUnit - self.TaskName = FsmAccount.TaskName - end - - --- Process Events - - --- StateMachine callback function - -- @param #ACT_ACCOUNT_DEADS self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ACCOUNT_DEADS:onenterReport( ProcessUnit, Task, From, Event, To ) - self:E( { ProcessUnit, From, Event, To } ) - - self:Message( "Your group with assigned " .. self.TaskName .. " task has " .. self.TargetSetUnit:GetUnitTypesText() .. " targets left to be destroyed." ) - end - - - --- StateMachine callback function - -- @param #ACT_ACCOUNT_DEADS self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ACCOUNT_DEADS:onenterAccount( ProcessUnit, Task, From, Event, To, EventData ) - self:T( { ProcessUnit, EventData, From, Event, To } ) - - self:T({self.Controllable}) - - self.TargetSetUnit:Flush() - - self:T( { "Before sending Message", EventData.IniUnitName, self.TargetSetUnit:FindUnit( EventData.IniUnitName ) } ) - if self.TargetSetUnit:FindUnit( EventData.IniUnitName ) then - self:T( "Sending Message" ) - local TaskGroup = ProcessUnit:GetGroup() - self.TargetSetUnit:Remove( EventData.IniUnitName ) - self:Message( "You hit a target. Your group with assigned " .. self.TaskName .. " task has " .. self.TargetSetUnit:Count() .. " targets ( " .. self.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." ) - end - self:T( { "After sending Message" } ) - end - - --- StateMachine callback function - -- @param #ACT_ACCOUNT_DEADS self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ACCOUNT_DEADS:onafterEvent( ProcessUnit, Task, From, Event, To ) - - if self.TargetSetUnit:Count() > 0 then - self:__More( 1 ) - else - self:__NoMore( 1 ) - end - end - - --- DCS Events - - --- @param #ACT_ACCOUNT_DEADS self - -- @param Event#EVENTDATA EventData - function ACT_ACCOUNT_DEADS:onfuncEventDead( EventData ) - self:T( { "EventDead", EventData } ) - - if EventData.IniDCSUnit then - self:Event( EventData ) - end - end - -end -- ACT_ACCOUNT DEADS ---- (SP) (MP) (FSM) Route AI or players through waypoints or to zones. --- --- === --- --- # @{#ACT_ASSIST} FSM class, extends @{Fsm#FSM_PROCESS} --- --- ## ACT_ASSIST state machine: --- --- This class is a state machine: it manages a process that is triggered by events causing state transitions to occur. --- All derived classes from this class will start with the class name, followed by a \_. See the relevant derived class descriptions below. --- Each derived class follows exactly the same process, using the same events and following the same state transitions, --- but will have **different implementation behaviour** upon each event or state transition. --- --- ### ACT_ASSIST **Events**: --- --- These are the events defined in this class: --- --- * **Start**: The process is started. --- * **Next**: The process is smoking the targets in the given zone. --- --- ### ACT_ASSIST **Event methods**: --- --- Event methods are available (dynamically allocated by the state machine), that accomodate for state transitions occurring in the process. --- There are two types of event methods, which you can use to influence the normal mechanisms in the state machine: --- --- * **Immediate**: The event method has exactly the name of the event. --- * **Delayed**: The event method starts with a __ + the name of the event. The first parameter of the event method is a number value, expressing the delay in seconds when the event will be executed. --- --- ### ACT_ASSIST **States**: --- --- * **None**: The controllable did not receive route commands. --- * **AwaitSmoke (*)**: The process is awaiting to smoke the targets in the zone. --- * **Smoking (*)**: The process is smoking the targets in the zone. --- * **Failed (*)**: The process has failed. --- --- (*) End states of the process. --- --- ### ACT_ASSIST state transition methods: --- --- State transition functions can be set **by the mission designer** customizing or improving the behaviour of the state. --- There are 2 moments when state transition methods will be called by the state machine: --- --- * **Before** the state transition. --- The state transition method needs to start with the name **OnBefore + the name of the state**. --- If the state transition method returns false, then the processing of the state transition will not be done! --- If you want to change the behaviour of the AIControllable at this event, return false, --- but then you'll need to specify your own logic using the AIControllable! --- --- * **After** the state transition. --- The state transition method needs to start with the name **OnAfter + the name of the state**. --- These state transition methods need to provide a return value, which is specified at the function description. --- --- === --- --- # 1) @{#ACT_ASSIST_SMOKE_TARGETS_ZONE} class, extends @{Fsm.Route#ACT_ASSIST} --- --- The ACT_ASSIST_SMOKE_TARGETS_ZONE class implements the core functions to smoke targets in a @{Zone}. --- The targets are smoked within a certain range around each target, simulating a realistic smoking behaviour. --- At random intervals, a new target is smoked. --- --- # 1.1) ACT_ASSIST_SMOKE_TARGETS_ZONE constructor: --- --- * @{#ACT_ASSIST_SMOKE_TARGETS_ZONE.New}(): Creates a new ACT_ASSIST_SMOKE_TARGETS_ZONE object. --- --- === --- --- @module Smoke - -do -- ACT_ASSIST - - --- ACT_ASSIST class - -- @type ACT_ASSIST - -- @extends Core.Fsm#FSM_PROCESS - ACT_ASSIST = { - ClassName = "ACT_ASSIST", - } - - --- Creates a new target smoking state machine. The process will request from the menu if it accepts the task, if not, the unit is removed from the simulator. - -- @param #ACT_ASSIST self - -- @return #ACT_ASSIST - function ACT_ASSIST:New() - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM_PROCESS:New( "ACT_ASSIST" ) ) -- Core.Fsm#FSM_PROCESS - - self:AddTransition( "None", "Start", "AwaitSmoke" ) - self:AddTransition( "AwaitSmoke", "Next", "Smoking" ) - self:AddTransition( "Smoking", "Next", "AwaitSmoke" ) - self:AddTransition( "*", "Stop", "Success" ) - self:AddTransition( "*", "Fail", "Failed" ) - - self:AddEndState( "Failed" ) - self:AddEndState( "Success" ) - - self:SetStartState( "None" ) - - return self - end - - --- Task Events - - --- StateMachine callback function - -- @param #ACT_ASSIST self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ASSIST:onafterStart( ProcessUnit, From, Event, To ) - - local ProcessGroup = ProcessUnit:GetGroup() - local MissionMenu = self:GetMission():GetMenu( ProcessGroup ) - - local function MenuSmoke( MenuParam ) - self:E( MenuParam ) - local self = MenuParam.self - local SmokeColor = MenuParam.SmokeColor - self.SmokeColor = SmokeColor - self:__Next( 1 ) - end - - self.Menu = MENU_GROUP:New( ProcessGroup, "Target acquisition", MissionMenu ) - self.MenuSmokeBlue = MENU_GROUP_COMMAND:New( ProcessGroup, "Drop blue smoke on targets", self.Menu, MenuSmoke, { self = self, SmokeColor = SMOKECOLOR.Blue } ) - self.MenuSmokeGreen = MENU_GROUP_COMMAND:New( ProcessGroup, "Drop green smoke on targets", self.Menu, MenuSmoke, { self = self, SmokeColor = SMOKECOLOR.Green } ) - self.MenuSmokeOrange = MENU_GROUP_COMMAND:New( ProcessGroup, "Drop Orange smoke on targets", self.Menu, MenuSmoke, { self = self, SmokeColor = SMOKECOLOR.Orange } ) - self.MenuSmokeRed = MENU_GROUP_COMMAND:New( ProcessGroup, "Drop Red smoke on targets", self.Menu, MenuSmoke, { self = self, SmokeColor = SMOKECOLOR.Red } ) - self.MenuSmokeWhite = MENU_GROUP_COMMAND:New( ProcessGroup, "Drop White smoke on targets", self.Menu, MenuSmoke, { self = self, SmokeColor = SMOKECOLOR.White } ) - end - - --- StateMachine callback function - -- @param #ACT_ASSIST self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ASSIST:onafterStop( ProcessUnit, From, Event, To ) - - self.Menu:Remove() -- When stopped, remove the menus - end - -end - -do -- ACT_ASSIST_SMOKE_TARGETS_ZONE - - --- ACT_ASSIST_SMOKE_TARGETS_ZONE class - -- @type ACT_ASSIST_SMOKE_TARGETS_ZONE - -- @field Set#SET_UNIT TargetSetUnit - -- @field Core.Zone#ZONE_BASE TargetZone - -- @extends #ACT_ASSIST - ACT_ASSIST_SMOKE_TARGETS_ZONE = { - ClassName = "ACT_ASSIST_SMOKE_TARGETS_ZONE", - } - --- function ACT_ASSIST_SMOKE_TARGETS_ZONE:_Destructor() --- self:E("_Destructor") --- --- self.Menu:Remove() --- self:EventRemoveAll() --- end - - --- Creates a new target smoking state machine. The process will request from the menu if it accepts the task, if not, the unit is removed from the simulator. - -- @param #ACT_ASSIST_SMOKE_TARGETS_ZONE self - -- @param Set#SET_UNIT TargetSetUnit - -- @param Core.Zone#ZONE_BASE TargetZone - function ACT_ASSIST_SMOKE_TARGETS_ZONE:New( TargetSetUnit, TargetZone ) - local self = BASE:Inherit( self, ACT_ASSIST:New() ) -- #ACT_ASSIST - - self.TargetSetUnit = TargetSetUnit - self.TargetZone = TargetZone - - return self - end - - function ACT_ASSIST_SMOKE_TARGETS_ZONE:Init( FsmSmoke ) - - self.TargetSetUnit = FsmSmoke.TargetSetUnit - self.TargetZone = FsmSmoke.TargetZone - end - - --- Creates a new target smoking state machine. The process will request from the menu if it accepts the task, if not, the unit is removed from the simulator. - -- @param #ACT_ASSIST_SMOKE_TARGETS_ZONE self - -- @param Set#SET_UNIT TargetSetUnit - -- @param Core.Zone#ZONE_BASE TargetZone - -- @return #ACT_ASSIST_SMOKE_TARGETS_ZONE self - function ACT_ASSIST_SMOKE_TARGETS_ZONE:Init( TargetSetUnit, TargetZone ) - - self.TargetSetUnit = TargetSetUnit - self.TargetZone = TargetZone - - return self - end - - --- StateMachine callback function - -- @param #ACT_ASSIST_SMOKE_TARGETS_ZONE self - -- @param Wrapper.Controllable#CONTROLLABLE ProcessUnit - -- @param #string Event - -- @param #string From - -- @param #string To - function ACT_ASSIST_SMOKE_TARGETS_ZONE:onenterSmoking( ProcessUnit, From, Event, To ) - - self.TargetSetUnit:ForEachUnit( - --- @param Wrapper.Unit#UNIT SmokeUnit - function( SmokeUnit ) - if math.random( 1, ( 100 * self.TargetSetUnit:Count() ) / 4 ) <= 100 then - SCHEDULER:New( self, - function() - if SmokeUnit:IsAlive() then - SmokeUnit:Smoke( self.SmokeColor, 150 ) - end - end, {}, math.random( 10, 60 ) - ) - end - end - ) - - end - -end--- A COMMANDCENTER is the owner of multiple missions within MOOSE. --- A COMMANDCENTER governs multiple missions, the tasking and the reporting. --- @module CommandCenter - - - ---- The REPORT class --- @type REPORT --- @extends Core.Base#BASE -REPORT = { - ClassName = "REPORT", -} - ---- Create a new REPORT. --- @param #REPORT self --- @param #string Title --- @return #REPORT -function REPORT:New( Title ) - - local self = BASE:Inherit( self, BASE:New() ) - - self.Report = {} - if Title then - self.Report[#self.Report+1] = Title - end - - return self -end - ---- Add a new line to a REPORT. --- @param #REPORT self --- @param #string Text --- @return #REPORT -function REPORT:Add( Text ) - self.Report[#self.Report+1] = Text - return self.Report[#self.Report] -end - ---- Produces the text of the report, taking into account an optional delimeter, which is \n by default. --- @param #REPORT self --- @param #string Delimiter (optional) A delimiter text. --- @return #string The report text. -function REPORT:Text( Delimiter ) - Delimiter = Delimiter or "\n" - local ReportText = table.concat( self.Report, Delimiter ) or "" - return ReportText -end - ---- The COMMANDCENTER class --- @type COMMANDCENTER --- @field Wrapper.Group#GROUP HQ --- @field Dcs.DCSCoalitionWrapper.Object#coalition CommandCenterCoalition --- @list Missions --- @extends Core.Base#BASE -COMMANDCENTER = { - ClassName = "COMMANDCENTER", - CommandCenterName = "", - CommandCenterCoalition = nil, - CommandCenterPositionable = nil, - Name = "", -} ---- The constructor takes an IDENTIFIABLE as the HQ command center. --- @param #COMMANDCENTER self --- @param Wrapper.Positionable#POSITIONABLE CommandCenterPositionable --- @param #string CommandCenterName --- @return #COMMANDCENTER -function COMMANDCENTER:New( CommandCenterPositionable, CommandCenterName ) - - local self = BASE:Inherit( self, BASE:New() ) - - self.CommandCenterPositionable = CommandCenterPositionable - self.CommandCenterName = CommandCenterName or CommandCenterPositionable:GetName() - self.CommandCenterCoalition = CommandCenterPositionable:GetCoalition() - - self.Missions = {} - - self:HandleEvent( EVENTS.Birth, - --- @param #COMMANDCENTER self - -- @param Core.Event#EVENTDATA EventData - function( self, EventData ) - if EventData.IniObjectCategory == 1 then - local EventGroup = GROUP:Find( EventData.IniDCSGroup ) - if EventGroup and self:HasGroup( EventGroup ) then - local MenuReporting = MENU_GROUP:New( EventGroup, "Reporting", self.CommandCenterMenu ) - local MenuMissionsSummary = MENU_GROUP_COMMAND:New( EventGroup, "Missions Summary Report", MenuReporting, self.ReportSummary, self, EventGroup ) - local MenuMissionsDetails = MENU_GROUP_COMMAND:New( EventGroup, "Missions Details Report", MenuReporting, self.ReportDetails, self, EventGroup ) - self:ReportSummary( EventGroup ) - end - local PlayerUnit = EventData.IniUnit - for MissionID, Mission in pairs( self:GetMissions() ) do - local Mission = Mission -- Tasking.Mission#MISSION - local PlayerGroup = EventData.IniGroup -- The GROUP object should be filled! - Mission:JoinUnit( PlayerUnit, PlayerGroup ) - Mission:ReportDetails() - end - end - - end - ) - - -- When a player enters a client or a unit, the CommandCenter will check for each Mission and each Task in the Mission if the player has things to do. - -- For these elements, it will= - -- - Set the correct menu. - -- - Assign the PlayerUnit to the Task if required. - -- - Send a message to the other players in the group that this player has joined. - self:HandleEvent( EVENTS.PlayerEnterUnit, - --- @param #COMMANDCENTER self - -- @param Core.Event#EVENTDATA EventData - function( self, EventData ) - local PlayerUnit = EventData.IniUnit - for MissionID, Mission in pairs( self:GetMissions() ) do - local Mission = Mission -- Tasking.Mission#MISSION - local PlayerGroup = EventData.IniGroup -- The GROUP object should be filled! - Mission:JoinUnit( PlayerUnit, PlayerGroup ) - Mission:ReportDetails() - end - end - ) - - -- Handle when a player leaves a slot and goes back to spectators ... - -- The PlayerUnit will be UnAssigned from the Task. - -- When there is no Unit left running the Task, the Task goes into Abort... - self:HandleEvent( EVENTS.PlayerLeaveUnit, - --- @param #TASK self - -- @param Core.Event#EVENTDATA EventData - function( self, EventData ) - local PlayerUnit = EventData.IniUnit - for MissionID, Mission in pairs( self:GetMissions() ) do - local Mission = Mission -- Tasking.Mission#MISSION - Mission:AbortUnit( PlayerUnit ) - end - end - ) - - -- Handle when a player leaves a slot and goes back to spectators ... - -- The PlayerUnit will be UnAssigned from the Task. - -- When there is no Unit left running the Task, the Task goes into Abort... - self:HandleEvent( EVENTS.Crash, - --- @param #TASK self - -- @param Core.Event#EVENTDATA EventData - function( self, EventData ) - local PlayerUnit = EventData.IniUnit - for MissionID, Mission in pairs( self:GetMissions() ) do - Mission:CrashUnit( PlayerUnit ) - end - end - ) - - return self -end - ---- Gets the name of the HQ command center. --- @param #COMMANDCENTER self --- @return #string -function COMMANDCENTER:GetName() - - return self.CommandCenterName -end - ---- Gets the POSITIONABLE of the HQ command center. --- @param #COMMANDCENTER self --- @return Wrapper.Positionable#POSITIONABLE -function COMMANDCENTER:GetPositionable() - return self.CommandCenterPositionable -end - ---- Get the Missions governed by the HQ command center. --- @param #COMMANDCENTER self --- @return #list -function COMMANDCENTER:GetMissions() - - return self.Missions -end - ---- Add a MISSION to be governed by the HQ command center. --- @param #COMMANDCENTER self --- @param Tasking.Mission#MISSION Mission --- @return Tasking.Mission#MISSION -function COMMANDCENTER:AddMission( Mission ) - - self.Missions[Mission] = Mission - - return Mission -end - ---- Removes a MISSION to be governed by the HQ command center. --- The given Mission is not nilified. --- @param #COMMANDCENTER self --- @param Tasking.Mission#MISSION Mission --- @return Tasking.Mission#MISSION -function COMMANDCENTER:RemoveMission( Mission ) - - self.Missions[Mission] = nil - - return Mission -end - ---- Sets the menu structure of the Missions governed by the HQ command center. --- @param #COMMANDCENTER self -function COMMANDCENTER:SetMenu() - self:F() - - self.CommandCenterMenu = self.CommandCenterMenu or MENU_COALITION:New( self.CommandCenterCoalition, "Command Center (" .. self:GetName() .. ")" ) - - local MenuTime = timer.getTime() - for MissionID, Mission in pairs( self:GetMissions() ) do - local Mission = Mission -- Tasking.Mission#MISSION - Mission:SetMenu( MenuTime ) - end - - for MissionID, Mission in pairs( self:GetMissions() ) do - local Mission = Mission -- Tasking.Mission#MISSION - Mission:RemoveMenu( MenuTime ) - end - -end - ---- Gets the commandcenter menu structure governed by the HQ command center. --- @param #COMMANDCENTER self --- @return Core.Menu#MENU_COALITION -function COMMANDCENTER:GetMenu() - self:F() - return self.CommandCenterMenu -end - ---- Checks of the COMMANDCENTER has a GROUP. --- @param #COMMANDCENTER self --- @param Wrapper.Group#GROUP --- @return #boolean -function COMMANDCENTER:HasGroup( MissionGroup ) - - local Has = false - - for MissionID, Mission in pairs( self.Missions ) do - local Mission = Mission -- Tasking.Mission#MISSION - if Mission:HasGroup( MissionGroup ) then - Has = true - break - end - end - - return Has -end - ---- Send a CC message to the coalition of the CC. --- @param #COMMANDCENTER self -function COMMANDCENTER:MessageToAll( Message ) - - self:GetPositionable():MessageToAll( Message, 20, self:GetName() ) - -end - ---- Send a CC message to a GROUP. --- @param #COMMANDCENTER self --- @param #string Message --- @param Wrapper.Group#GROUP TaskGroup --- @param #sring Name (optional) The name of the Group used as a prefix for the message to the Group. If not provided, there will be nothing shown. -function COMMANDCENTER:MessageToGroup( Message, TaskGroup, Name ) - - local Prefix = "@ Group" - Prefix = Prefix .. ( Name and " (" .. Name .. "): " or '' ) - Message = Prefix .. Message - self:GetPositionable():MessageToGroup( Message , 20, TaskGroup, self:GetName() ) - -end - ---- Send a CC message to the coalition of the CC. --- @param #COMMANDCENTER self -function COMMANDCENTER:MessageToCoalition( Message ) - - local CCCoalition = self:GetPositionable():GetCoalition() - --TODO: Fix coalition bug! - self:GetPositionable():MessageToCoalition( Message, 20, CCCoalition, self:GetName() ) - -end - - ---- Report the status of all MISSIONs to a GROUP. --- Each Mission is listed, with an indication how many Tasks are still to be completed. --- @param #COMMANDCENTER self -function COMMANDCENTER:ReportSummary( ReportGroup ) - self:E( ReportGroup ) - - local Report = REPORT:New() - - for MissionID, Mission in pairs( self.Missions ) do - local Mission = Mission -- Tasking.Mission#MISSION - Report:Add( " - " .. Mission:ReportOverview() ) - end - - self:GetPositionable():MessageToGroup( Report:Text(), 30, ReportGroup ) - -end - ---- Report the status of a Task to a Group. --- Report the details of a Mission, listing the Mission, and all the Task details. --- @param #COMMANDCENTER self -function COMMANDCENTER:ReportDetails( ReportGroup, Task ) - self:E( ReportGroup ) - - local Report = REPORT:New() - - for MissionID, Mission in pairs( self.Missions ) do - local Mission = Mission -- Tasking.Mission#MISSION - Report:Add( " - " .. Mission:ReportDetails() ) - end - - self:GetPositionable():MessageToGroup( Report:Text(), 30, ReportGroup ) -end - ---- A MISSION is the main owner of a Mission orchestration within MOOSE . The Mission framework orchestrates @{CLIENT}s, @{TASK}s, @{STAGE}s etc. --- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}. --- @module Mission - ---- The MISSION class --- @type MISSION --- @field #MISSION.Clients _Clients --- @field Core.Menu#MENU_COALITION MissionMenu --- @field #string MissionBriefing --- @extends Core.Fsm#FSM -MISSION = { - ClassName = "MISSION", - Name = "", - MissionStatus = "PENDING", -} - ---- This is the main MISSION declaration method. Each Mission is like the master or a Mission orchestration between, Clients, Tasks, Stages etc. --- @param #MISSION self --- @param Tasking.CommandCenter#COMMANDCENTER CommandCenter --- @param #string MissionName is the name of the mission. This name will be used to reference the status of each mission by the players. --- @param #string MissionPriority is a string indicating the "priority" of the Mission. f.e. "Primary", "Secondary" or "First", "Second". It is free format and up to the Mission designer to choose. There are no rules behind this field. --- @param #string MissionBriefing is a string indicating the mission briefing to be shown when a player joins a @{CLIENT}. --- @param Dcs.DCSCoalitionWrapper.Object#coalition MissionCoalition is a string indicating the coalition or party to which this mission belongs to. It is free format and can be chosen freely by the mission designer. Note that this field is not to be confused with the coalition concept of the ME. Examples of a Mission Coalition could be "NATO", "CCCP", "Intruders", "Terrorists"... --- @return #MISSION self -function MISSION:New( CommandCenter, MissionName, MissionPriority, MissionBriefing, MissionCoalition ) - - local self = BASE:Inherit( self, FSM:New() ) -- Core.Fsm#FSM - - self:SetStartState( "Idle" ) - - self:AddTransition( "Idle", "Start", "Ongoing" ) - - --- OnLeave Transition Handler for State Idle. - -- @function [parent=#MISSION] OnLeaveIdle - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Idle. - -- @function [parent=#MISSION] OnEnterIdle - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnLeave Transition Handler for State Ongoing. - -- @function [parent=#MISSION] OnLeaveOngoing - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Ongoing. - -- @function [parent=#MISSION] OnEnterOngoing - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore Transition Handler for Event Start. - -- @function [parent=#MISSION] OnBeforeStart - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Start. - -- @function [parent=#MISSION] OnAfterStart - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Start. - -- @function [parent=#MISSION] Start - -- @param #MISSION self - - --- Asynchronous Event Trigger for Event Start. - -- @function [parent=#MISSION] __Start - -- @param #MISSION self - -- @param #number Delay The delay in seconds. - - self:AddTransition( "Ongoing", "Stop", "Idle" ) - - --- OnLeave Transition Handler for State Idle. - -- @function [parent=#MISSION] OnLeaveIdle - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Idle. - -- @function [parent=#MISSION] OnEnterIdle - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore Transition Handler for Event Stop. - -- @function [parent=#MISSION] OnBeforeStop - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Stop. - -- @function [parent=#MISSION] OnAfterStop - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Stop. - -- @function [parent=#MISSION] Stop - -- @param #MISSION self - - --- Asynchronous Event Trigger for Event Stop. - -- @function [parent=#MISSION] __Stop - -- @param #MISSION self - -- @param #number Delay The delay in seconds. - - self:AddTransition( "Ongoing", "Complete", "Completed" ) - - --- OnLeave Transition Handler for State Completed. - -- @function [parent=#MISSION] OnLeaveCompleted - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Completed. - -- @function [parent=#MISSION] OnEnterCompleted - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore Transition Handler for Event Complete. - -- @function [parent=#MISSION] OnBeforeComplete - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Complete. - -- @function [parent=#MISSION] OnAfterComplete - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Complete. - -- @function [parent=#MISSION] Complete - -- @param #MISSION self - - --- Asynchronous Event Trigger for Event Complete. - -- @function [parent=#MISSION] __Complete - -- @param #MISSION self - -- @param #number Delay The delay in seconds. - - self:AddTransition( "*", "Fail", "Failed" ) - - --- OnLeave Transition Handler for State Failed. - -- @function [parent=#MISSION] OnLeaveFailed - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter Transition Handler for State Failed. - -- @function [parent=#MISSION] OnEnterFailed - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore Transition Handler for Event Fail. - -- @function [parent=#MISSION] OnBeforeFail - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter Transition Handler for Event Fail. - -- @function [parent=#MISSION] OnAfterFail - -- @param #MISSION self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Synchronous Event Trigger for Event Fail. - -- @function [parent=#MISSION] Fail - -- @param #MISSION self - - --- Asynchronous Event Trigger for Event Fail. - -- @function [parent=#MISSION] __Fail - -- @param #MISSION self - -- @param #number Delay The delay in seconds. - - self:T( { MissionName, MissionPriority, MissionBriefing, MissionCoalition } ) - - self.CommandCenter = CommandCenter - CommandCenter:AddMission( self ) - - self.Name = MissionName - self.MissionPriority = MissionPriority - self.MissionBriefing = MissionBriefing - self.MissionCoalition = MissionCoalition - - self.Tasks = {} - - -- Private implementations - - - - return self -end - --- FSM function for a MISSION --- @param #MISSION self --- @param #string From --- @param #string Event --- @param #string To -function MISSION:onbeforeComplete( From, Event, To ) - - for TaskID, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - if not Task:IsStateSuccess() and not Task:IsStateFailed() and not Task:IsStateAborted() and not Task:IsStateCancelled() then - return false -- Mission cannot be completed. Other Tasks are still active. - end - end - return true -- Allow Mission completion. -end - --- FSM function for a MISSION --- @param #MISSION self --- @param #string From --- @param #string Event --- @param #string To -function MISSION:onenterCompleted( From, Event, To ) - - self:GetCommandCenter():MessageToCoalition( "Mission " .. self:GetName() .. " has been completed! Good job guys!" ) -end - ---- Gets the mission name. --- @param #MISSION self --- @return #MISSION self -function MISSION:GetName() - return self.Name -end - ---- Add a Unit to join the Mission. --- For each Task within the Mission, the Unit is joined with the Task. --- If the Unit was not part of a Task in the Mission, false is returned. --- If the Unit is part of a Task in the Mission, true is returned. --- @param #MISSION self --- @param Wrapper.Unit#UNIT PlayerUnit The CLIENT or UNIT of the Player joining the Mission. --- @param Wrapper.Group#GROUP PlayerGroup The GROUP of the player joining the Mission. --- @return #boolean true if Unit is part of a Task in the Mission. -function MISSION:JoinUnit( PlayerUnit, PlayerGroup ) - self:F( { PlayerUnit = PlayerUnit, PlayerGroup = PlayerGroup } ) - - local PlayerUnitAdded = false - - for TaskID, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - if Task:JoinUnit( PlayerUnit, PlayerGroup ) then - PlayerUnitAdded = true - end - end - - return PlayerUnitAdded -end - ---- Aborts a PlayerUnit from the Mission. --- For each Task within the Mission, the PlayerUnit is removed from Task where it is assigned. --- If the Unit was not part of a Task in the Mission, false is returned. --- If the Unit is part of a Task in the Mission, true is returned. --- @param #MISSION self --- @param Wrapper.Unit#UNIT PlayerUnit The CLIENT or UNIT of the Player joining the Mission. --- @return #boolean true if Unit is part of a Task in the Mission. -function MISSION:AbortUnit( PlayerUnit ) - self:F( { PlayerUnit = PlayerUnit } ) - - local PlayerUnitRemoved = false - - for TaskID, Task in pairs( self:GetTasks() ) do - if Task:AbortUnit( PlayerUnit ) then - PlayerUnitRemoved = true - end - end - - return PlayerUnitRemoved -end - ---- Handles a crash of a PlayerUnit from the Mission. --- For each Task within the Mission, the PlayerUnit is removed from Task where it is assigned. --- If the Unit was not part of a Task in the Mission, false is returned. --- If the Unit is part of a Task in the Mission, true is returned. --- @param #MISSION self --- @param Wrapper.Unit#UNIT PlayerUnit The CLIENT or UNIT of the Player crashing. --- @return #boolean true if Unit is part of a Task in the Mission. -function MISSION:CrashUnit( PlayerUnit ) - self:F( { PlayerUnit = PlayerUnit } ) - - local PlayerUnitRemoved = false - - for TaskID, Task in pairs( self:GetTasks() ) do - if Task:CrashUnit( PlayerUnit ) then - PlayerUnitRemoved = true - end - end - - return PlayerUnitRemoved -end - ---- Add a scoring to the mission. --- @param #MISSION self --- @return #MISSION self -function MISSION:AddScoring( Scoring ) - self.Scoring = Scoring - return self -end - ---- Get the scoring object of a mission. --- @param #MISSION self --- @return #SCORING Scoring -function MISSION:GetScoring() - return self.Scoring -end - ---- Get the groups for which TASKS are given in the mission --- @param #MISSION self --- @return Core.Set#SET_GROUP -function MISSION:GetGroups() - - local SetGroup = SET_GROUP:New() - - for TaskID, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - local GroupSet = Task:GetGroups() - GroupSet:ForEachGroup( - function( TaskGroup ) - SetGroup:Add( TaskGroup, TaskGroup ) - end - ) - end - - return SetGroup - -end - - ---- Sets the Planned Task menu. --- @param #MISSION self --- @param #number MenuTime -function MISSION:SetMenu( MenuTime ) - self:F() - - for _, TaskData in pairs( self:GetTasks() ) do - local Task = TaskData -- Tasking.Task#TASK - Task:SetMenu( MenuTime ) - end -end - ---- Removes the Planned Task menu. --- @param #MISSION self --- @param #number MenuTime -function MISSION:RemoveMenu( MenuTime ) - self:F() - - for _, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - Task:RemoveMenu( MenuTime ) - end -end - - ---- Gets the COMMANDCENTER. --- @param #MISSION self --- @return Tasking.CommandCenter#COMMANDCENTER -function MISSION:GetCommandCenter() - return self.CommandCenter -end - - ---- Removes a Task menu. --- @param #MISSION self --- @param Tasking.Task#TASK Task --- @return #MISSION self -function MISSION:RemoveTaskMenu( Task ) - - Task:RemoveMenu() -end - - ---- Gets the mission menu for the coalition. --- @param #MISSION self --- @param Wrapper.Group#GROUP TaskGroup --- @return Core.Menu#MENU_COALITION self -function MISSION:GetMenu( TaskGroup ) - - local CommandCenter = self:GetCommandCenter() - local CommandCenterMenu = CommandCenter:GetMenu() - - local MissionName = self:GetName() - local MissionMenu = CommandCenterMenu:GetMenu( MissionName ) - - return MissionMenu -end - - ---- Get the TASK identified by the TaskNumber from the Mission. This function is useful in GoalFunctions. --- @param #string TaskName The Name of the @{Task} within the @{Mission}. --- @return Tasking.Task#TASK The Task --- @return #nil Returns nil if no task was found. -function MISSION:GetTask( TaskName ) - self:F( { TaskName } ) - - return self.Tasks[TaskName] -end - - ---- Register a @{Task} to be completed within the @{Mission}. --- Note that there can be multiple @{Task}s registered to be completed. --- Each Task can be set a certain Goals. The Mission will not be completed until all Goals are reached. --- @param #MISSION self --- @param Tasking.Task#TASK Task is the @{Task} object. --- @return Tasking.Task#TASK The task added. -function MISSION:AddTask( Task ) - - local TaskName = Task:GetTaskName() - self:F( TaskName ) - - self.Tasks[TaskName] = self.Tasks[TaskName] or { n = 0 } - - self.Tasks[TaskName] = Task - - self:GetCommandCenter():SetMenu() - - return Task -end - ---- Removes a @{Task} to be completed within the @{Mission}. --- Note that there can be multiple @{Task}s registered to be completed. --- Each Task can be set a certain Goals. The Mission will not be completed until all Goals are reached. --- @param #MISSION self --- @param Tasking.Task#TASK Task is the @{Task} object. --- @return #nil The cleaned Task reference. -function MISSION:RemoveTask( Task ) - - local TaskName = Task:GetTaskName() - - self:F( TaskName ) - self.Tasks[TaskName] = self.Tasks[TaskName] or { n = 0 } - - -- Ensure everything gets garbarge collected. - self.Tasks[TaskName] = nil - Task = nil - - collectgarbage() - - self:GetCommandCenter():SetMenu() - - return nil -end - ---- Return the next @{Task} ID to be completed within the @{Mission}. --- @param #MISSION self --- @param Tasking.Task#TASK Task is the @{Task} object. --- @return Tasking.Task#TASK The task added. -function MISSION:GetNextTaskID( Task ) - - local TaskName = Task:GetTaskName() - self:F( TaskName ) - self.Tasks[TaskName] = self.Tasks[TaskName] or { n = 0 } - - self.Tasks[TaskName].n = self.Tasks[TaskName].n + 1 - - return self.Tasks[TaskName].n -end - ---- Is the @{Mission} **Completed**. --- @param #MISSION self --- @return #boolean -function MISSION:IsCompleted() - return self:Is( "Completed" ) -end - ---- Is the @{Mission} **Idle**. --- @param #MISSION self --- @return #boolean -function MISSION:IsIdle() - return self:Is( "Idle" ) -end - ---- Is the @{Mission} **Ongoing**. --- @param #MISSION self --- @return #boolean -function MISSION:IsOngoing() - return self:Is( "Ongoing" ) -end - ---- Is the @{Mission} **Failed**. --- @param #MISSION self --- @return #boolean -function MISSION:IsFailed() - return self:Is( "Failed" ) -end - ---- Is the @{Mission} **Hold**. --- @param #MISSION self --- @return #boolean -function MISSION:IsHold() - return self:Is( "Hold" ) -end - ---- Validates if the Mission has a Group --- @param #MISSION --- @return #boolean true if the Mission has a Group. -function MISSION:HasGroup( TaskGroup ) - local Has = false - - for TaskID, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - if Task:HasGroup( TaskGroup ) then - Has = true - break - end - end - - return Has -end - ---- Create a summary report of the Mission (one line). --- @param #MISSION self --- @return #string -function MISSION:ReportSummary() - - local Report = REPORT:New() - - -- List the name of the mission. - local Name = self:GetName() - - -- Determine the status of the mission. - local Status = self:GetState() - - -- Determine how many tasks are remaining. - local TasksRemaining = 0 - for TaskID, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - if Task:IsStateSuccess() or Task:IsStateFailed() then - else - TasksRemaining = TasksRemaining + 1 - end - end - - Report:Add( "Mission " .. Name .. " - " .. Status .. " - " .. TasksRemaining .. " tasks remaining." ) - - return Report:Text() -end - ---- Create a overview report of the Mission (multiple lines). --- @param #MISSION self --- @return #string -function MISSION:ReportOverview() - - local Report = REPORT:New() - - -- List the name of the mission. - local Name = self:GetName() - - -- Determine the status of the mission. - local Status = self:GetState() - - Report:Add( "Mission " .. Name .. " - State '" .. Status .. "'" ) - - -- Determine how many tasks are remaining. - local TasksRemaining = 0 - for TaskID, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - Report:Add( "- " .. Task:ReportSummary() ) - end - - return Report:Text() -end - ---- Create a detailed report of the Mission, listing all the details of the Task. --- @param #MISSION self --- @return #string -function MISSION:ReportDetails() - - local Report = REPORT:New() - - -- List the name of the mission. - local Name = self:GetName() - - -- Determine the status of the mission. - local Status = self:GetState() - - Report:Add( "Mission " .. Name .. " - State '" .. Status .. "'" ) - - -- Determine how many tasks are remaining. - local TasksRemaining = 0 - for TaskID, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - Report:Add( Task:ReportDetails() ) - end - - return Report:Text() -end - ---- Get all the TASKs from the Mission. This function is useful in GoalFunctions. --- @return {TASK,...} Structure of TASKS with the @{TASK} number as the key. --- @usage --- -- Get Tasks from the Mission. --- Tasks = Mission:GetTasks() --- env.info( "Task 2 Completion = " .. Tasks[2]:GetGoalPercentage() .. "%" ) -function MISSION:GetTasks() - self:F() - - return self.Tasks -end - - ---- **Tasking** -- This module contains the TASK class. --- --- === --- --- --- === --- --- ### Authors: FlightControl - Design and Programming --- --- @module Task - ---- @type TASK --- @field Core.Scheduler#SCHEDULER TaskScheduler --- @field Tasking.Mission#MISSION Mission --- @field Core.Set#SET_GROUP SetGroup The Set of Groups assigned to the Task --- @field Core.Fsm#FSM_PROCESS FsmTemplate --- @field Tasking.Mission#MISSION Mission --- @field Tasking.CommandCenter#COMMANDCENTER CommandCenter --- @extends Core.Fsm#FSM_TASK - ---- --- # TASK class, extends @{Base#BASE} --- --- ## The TASK class implements the methods for task orchestration within MOOSE. --- --- The class provides a couple of methods to: --- --- * @{#TASK.AssignToGroup}():Assign a task to a group (of players). --- * @{#TASK.AddProcess}():Add a @{Process} to a task. --- * @{#TASK.RemoveProcesses}():Remove a running @{Process} from a running task. --- * @{#TASK.SetStateMachine}():Set a @{Fsm} to a task. --- * @{#TASK.RemoveStateMachine}():Remove @{Fsm} from a task. --- * @{#TASK.HasStateMachine}():Enquire if the task has a @{Fsm} --- * @{#TASK.AssignToUnit}(): Assign a task to a unit. (Needs to be implemented in the derived classes from @{#TASK}. --- * @{#TASK.UnAssignFromUnit}(): Unassign the task from a unit. --- * @{#TASK.SetTimeOut}(): Set timer in seconds before task gets cancelled if not assigned. --- --- ## 1.2) Set and enquire task status (beyond the task state machine processing). --- --- A task needs to implement as a minimum the following task states: --- --- * **Success**: Expresses the successful execution and finalization of the task. --- * **Failed**: Expresses the failure of a task. --- * **Planned**: Expresses that the task is created, but not yet in execution and is not assigned yet. --- * **Assigned**: Expresses that the task is assigned to a Group of players, and that the task is in execution mode. --- --- A task may also implement the following task states: --- --- * **Rejected**: Expresses that the task is rejected by a player, who was requested to accept the task. --- * **Cancelled**: Expresses that the task is cancelled by HQ or through a logical situation where a cancellation of the task is required. --- --- A task can implement more statusses than the ones outlined above. Please consult the documentation of the specific tasks to understand the different status modelled. --- --- The status of tasks can be set by the methods **State** followed by the task status. An example is `StateAssigned()`. --- The status of tasks can be enquired by the methods **IsState** followed by the task status name. An example is `if IsStateAssigned() then`. --- --- ## 1.3) Add scoring when reaching a certain task status: --- --- Upon reaching a certain task status in a task, additional scoring can be given. If the Mission has a scoring system attached, the scores will be added to the mission scoring. --- Use the method @{#TASK.AddScore}() to add scores when a status is reached. --- --- ## 1.4) Task briefing: --- --- A task briefing can be given that is shown to the player when he is assigned to the task. --- --- @field #TASK TASK --- -TASK = { - ClassName = "TASK", - TaskScheduler = nil, - ProcessClasses = {}, -- The container of the Process classes that will be used to create and assign new processes for the task to ProcessUnits. - Processes = {}, -- The container of actual process objects instantiated and assigned to ProcessUnits. - Players = nil, - Scores = {}, - Menu = {}, - SetGroup = nil, - FsmTemplate = nil, - Mission = nil, - CommandCenter = nil, - TimeOut = 0, -} - ---- FSM PlayerAborted event handler prototype for TASK. --- @function [parent=#TASK] OnAfterPlayerAborted --- @param #TASK self --- @param Wrapper.Unit#UNIT PlayerUnit The Unit of the Player when he went back to spectators or left the mission. --- @param #string PlayerName The name of the Player. - ---- FSM PlayerCrashed event handler prototype for TASK. --- @function [parent=#TASK] OnAfterPlayerCrashed --- @param #TASK self --- @param Wrapper.Unit#UNIT PlayerUnit The Unit of the Player when he crashed in the mission. --- @param #string PlayerName The name of the Player. - ---- FSM PlayerDead event handler prototype for TASK. --- @function [parent=#TASK] OnAfterPlayerDead --- @param #TASK self --- @param Wrapper.Unit#UNIT PlayerUnit The Unit of the Player when he died in the mission. --- @param #string PlayerName The name of the Player. - ---- FSM Fail synchronous event function for TASK. --- Use this event to Fail the Task. --- @function [parent=#TASK] Fail --- @param #TASK self - ---- FSM Fail asynchronous event function for TASK. --- Use this event to Fail the Task. --- @function [parent=#TASK] __Fail --- @param #TASK self - ---- FSM Abort synchronous event function for TASK. --- Use this event to Abort the Task. --- @function [parent=#TASK] Abort --- @param #TASK self - ---- FSM Abort asynchronous event function for TASK. --- Use this event to Abort the Task. --- @function [parent=#TASK] __Abort --- @param #TASK self - ---- FSM Success synchronous event function for TASK. --- Use this event to make the Task a Success. --- @function [parent=#TASK] Success --- @param #TASK self - ---- FSM Success asynchronous event function for TASK. --- Use this event to make the Task a Success. --- @function [parent=#TASK] __Success --- @param #TASK self - ---- FSM Cancel synchronous event function for TASK. --- Use this event to Cancel the Task. --- @function [parent=#TASK] Cancel --- @param #TASK self - ---- FSM Cancel asynchronous event function for TASK. --- Use this event to Cancel the Task. --- @function [parent=#TASK] __Cancel --- @param #TASK self - ---- FSM Replan synchronous event function for TASK. --- Use this event to Replan the Task. --- @function [parent=#TASK] Replan --- @param #TASK self - ---- FSM Replan asynchronous event function for TASK. --- Use this event to Replan the Task. --- @function [parent=#TASK] __Replan --- @param #TASK self - - ---- Instantiates a new TASK. Should never be used. Interface Class. --- @param #TASK self --- @param Tasking.Mission#MISSION Mission The mission wherein the Task is registered. --- @param Core.Set#SET_GROUP SetGroupAssign The set of groups for which the Task can be assigned. --- @param #string TaskName The name of the Task --- @param #string TaskType The type of the Task --- @return #TASK self -function TASK:New( Mission, SetGroupAssign, TaskName, TaskType ) - - local self = BASE:Inherit( self, FSM_TASK:New() ) -- Core.Fsm#FSM_TASK - - self:SetStartState( "Planned" ) - self:AddTransition( "Planned", "Assign", "Assigned" ) - self:AddTransition( "Assigned", "AssignUnit", "Assigned" ) - self:AddTransition( "Assigned", "Success", "Success" ) - self:AddTransition( "Assigned", "Fail", "Failed" ) - self:AddTransition( "Assigned", "Abort", "Aborted" ) - self:AddTransition( "Assigned", "Cancel", "Cancelled" ) - self:AddTransition( "*", "PlayerCrashed", "*" ) - self:AddTransition( "*", "PlayerAborted", "*" ) - self:AddTransition( "*", "PlayerDead", "*" ) - self:AddTransition( { "Failed", "Aborted", "Cancelled" }, "Replan", "Planned" ) - self:AddTransition( "*", "TimeOut", "Cancelled" ) - - self:E( "New TASK " .. TaskName ) - - self.Processes = {} - self.Fsm = {} - - self.Mission = Mission - self.CommandCenter = Mission:GetCommandCenter() - - self.SetGroup = SetGroupAssign - - self:SetType( TaskType ) - self:SetName( TaskName ) - self:SetID( Mission:GetNextTaskID( self ) ) -- The Mission orchestrates the task sequences .. - - self.TaskBriefing = "You are invited for the task: " .. self.TaskName .. "." - - self.FsmTemplate = self.FsmTemplate or FSM_PROCESS:New() - - - return self -end - ---- Get the Task FSM Process Template --- @param #TASK self --- @return Core.Fsm#FSM_PROCESS -function TASK:GetUnitProcess( TaskUnit ) - - if TaskUnit then - return self:GetStateMachine( TaskUnit ) - else - return self.FsmTemplate - end -end - ---- Sets the Task FSM Process Template --- @param #TASK self --- @param Core.Fsm#FSM_PROCESS -function TASK:SetUnitProcess( FsmTemplate ) - - self.FsmTemplate = FsmTemplate -end - ---- Add a PlayerUnit to join the Task. --- For each Group within the Task, the Unit is check if it can join the Task. --- If the Unit was not part of the Task, false is returned. --- If the Unit is part of the Task, true is returned. --- @param #TASK self --- @param Wrapper.Unit#UNIT PlayerUnit The CLIENT or UNIT of the Player joining the Mission. --- @param Wrapper.Group#GROUP PlayerGroup The GROUP of the player joining the Mission. --- @return #boolean true if Unit is part of the Task. -function TASK:JoinUnit( PlayerUnit, PlayerGroup ) - self:F( { PlayerUnit = PlayerUnit, PlayerGroup = PlayerGroup } ) - - local PlayerUnitAdded = false - - local PlayerGroups = self:GetGroups() - - -- Is the PlayerGroup part of the PlayerGroups? - if PlayerGroups:IsIncludeObject( PlayerGroup ) then - - -- Check if the PlayerGroup is already assigned to the Task. If yes, the PlayerGroup is added to the Task. - -- If the PlayerGroup is not assigned to the Task, the menu needs to be set. In that case, the PlayerUnit will become the GroupPlayer leader. - if self:IsStatePlanned() or self:IsStateReplanned() then - self:SetMenuForGroup( PlayerGroup ) - --self:MessageToGroups( PlayerUnit:GetPlayerName() .. " is planning to join Task " .. self:GetName() ) - end - if self:IsStateAssigned() then - local IsAssignedToGroup = self:IsAssignedToGroup( PlayerGroup ) - self:E( { IsAssignedToGroup = IsAssignedToGroup } ) - if IsAssignedToGroup then - self:AssignToUnit( PlayerUnit ) - self:MessageToGroups( PlayerUnit:GetPlayerName() .. " joined Task " .. self:GetName() ) - end - end - end - - return PlayerUnitAdded -end - ---- Abort a PlayerUnit from a Task. --- If the Unit was not part of the Task, false is returned. --- If the Unit is part of the Task, true is returned. --- @param #TASK self --- @param Wrapper.Unit#UNIT PlayerUnit The CLIENT or UNIT of the Player aborting the Task. --- @return #boolean true if Unit is part of the Task. -function TASK:AbortUnit( PlayerUnit ) - self:F( { PlayerUnit = PlayerUnit } ) - - local PlayerUnitAborted = false - - local PlayerGroups = self:GetGroups() - local PlayerGroup = PlayerUnit:GetGroup() - - -- Is the PlayerGroup part of the PlayerGroups? - if PlayerGroups:IsIncludeObject( PlayerGroup ) then - - -- Check if the PlayerGroup is already assigned to the Task. If yes, the PlayerGroup is aborted from the Task. - -- If the PlayerUnit was the last unit of the PlayerGroup, the menu needs to be removed from the Group. - if self:IsStateAssigned() then - local IsAssignedToGroup = self:IsAssignedToGroup( PlayerGroup ) - self:E( { IsAssignedToGroup = IsAssignedToGroup } ) - if IsAssignedToGroup then - self:UnAssignFromUnit( PlayerUnit ) - self:MessageToGroups( PlayerUnit:GetPlayerName() .. " aborted Task " .. self:GetName() ) - self:E( { TaskGroup = PlayerGroup:GetName(), GetUnits = PlayerGroup:GetUnits() } ) - if #PlayerGroup:GetUnits() == 1 then - self:UnAssignFromGroup( PlayerGroup ) - PlayerGroup:SetState( PlayerGroup, "Assigned", nil ) - self:RemoveMenuForGroup( PlayerGroup ) - end - self:Abort() - end - end - end - - return PlayerUnitAborted -end - ---- A PlayerUnit crashed in a Task. Abort the Player. --- If the Unit was not part of the Task, false is returned. --- If the Unit is part of the Task, true is returned. --- @param #TASK self --- @param Wrapper.Unit#UNIT PlayerUnit The CLIENT or UNIT of the Player aborting the Task. --- @return #boolean true if Unit is part of the Task. -function TASK:CrashUnit( PlayerUnit ) - self:F( { PlayerUnit = PlayerUnit } ) - - local PlayerUnitCrashed = false - - local PlayerGroups = self:GetGroups() - local PlayerGroup = PlayerUnit:GetGroup() - - -- Is the PlayerGroup part of the PlayerGroups? - if PlayerGroups:IsIncludeObject( PlayerGroup ) then - - -- Check if the PlayerGroup is already assigned to the Task. If yes, the PlayerGroup is aborted from the Task. - -- If the PlayerUnit was the last unit of the PlayerGroup, the menu needs to be removed from the Group. - if self:IsStateAssigned() then - local IsAssignedToGroup = self:IsAssignedToGroup( PlayerGroup ) - self:E( { IsAssignedToGroup = IsAssignedToGroup } ) - if IsAssignedToGroup then - self:UnAssignFromUnit( PlayerUnit ) - self:MessageToGroups( PlayerUnit:GetPlayerName() .. " crashed in Task " .. self:GetName() ) - self:E( { TaskGroup = PlayerGroup:GetName(), GetUnits = PlayerGroup:GetUnits() } ) - if #PlayerGroup:GetUnits() == 1 then - PlayerGroup:SetState( PlayerGroup, "Assigned", nil ) - self:RemoveMenuForGroup( PlayerGroup ) - end - self:PlayerCrashed( PlayerUnit ) - end - end - end - - return PlayerUnitCrashed -end - - - ---- Gets the Mission to where the TASK belongs. --- @param #TASK self --- @return Tasking.Mission#MISSION -function TASK:GetMission() - - return self.Mission -end - - ---- Gets the SET_GROUP assigned to the TASK. --- @param #TASK self --- @return Core.Set#SET_GROUP -function TASK:GetGroups() - return self.SetGroup -end - - - ---- Assign the @{Task} to a @{Group}. --- @param #TASK self --- @param Wrapper.Group#GROUP TaskGroup --- @return #TASK -function TASK:AssignToGroup( TaskGroup ) - self:F2( TaskGroup:GetName() ) - - local TaskGroupName = TaskGroup:GetName() - - TaskGroup:SetState( TaskGroup, "Assigned", self ) - - local Mission = self:GetMission() - local MissionMenu = Mission:GetMenu( TaskGroup ) - MissionMenu:RemoveSubMenus() - - --self:RemoveMenuForGroup( TaskGroup ) - self:SetAssignedMenuForGroup( TaskGroup ) - - local TaskUnits = TaskGroup:GetUnits() - for UnitID, UnitData in pairs( TaskUnits ) do - local TaskUnit = UnitData -- Wrapper.Unit#UNIT - local PlayerName = TaskUnit:GetPlayerName() - self:E(PlayerName) - if PlayerName ~= nil or PlayerName ~= "" then - self:AssignToUnit( TaskUnit ) - end - end - - return self -end - ---- --- @param #TASK self --- @param Wrapper.Group#GROUP FindGroup --- @return #boolean -function TASK:HasGroup( FindGroup ) - - return self:GetGroups():IsIncludeObject( FindGroup ) - -end - ---- Assign the @{Task} to an alive @{Unit}. --- @param #TASK self --- @param Wrapper.Unit#UNIT TaskUnit --- @return #TASK self -function TASK:AssignToUnit( TaskUnit ) - self:F( TaskUnit:GetName() ) - - local FsmTemplate = self:GetUnitProcess() - - -- Assign a new FsmUnit to TaskUnit. - local FsmUnit = self:SetStateMachine( TaskUnit, FsmTemplate:Copy( TaskUnit, self ) ) -- Core.Fsm#FSM_PROCESS - self:E({"Address FsmUnit", tostring( FsmUnit ) } ) - - FsmUnit:SetStartState( "Planned" ) - - FsmUnit:Accept() -- Each Task needs to start with an Accept event to start the flow. - - return self -end - ---- UnAssign the @{Task} from an alive @{Unit}. --- @param #TASK self --- @param Wrapper.Unit#UNIT TaskUnit --- @return #TASK self -function TASK:UnAssignFromUnit( TaskUnit ) - self:F( TaskUnit:GetName() ) - - self:RemoveStateMachine( TaskUnit ) - - return self -end - ---- Sets the TimeOut for the @{Task}. If @{Task} stayed planned for longer than TimeOut, it gets into Cancelled status. --- @param #TASK self --- @param #integer Timer in seconds --- @return #TASK self -function TASK:SetTimeOut ( Timer ) - self:F( Timer ) - self.TimeOut = Timer - self:__TimeOut( self.TimeOut ) - return self -end - ---- Send a message of the @{Task} to the assigned @{Group}s. --- @param #TASK self -function TASK:MessageToGroups( Message ) - self:F( { Message = Message } ) - - local Mission = self:GetMission() - local CC = Mission:GetCommandCenter() - - for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do - local TaskGroup = TaskGroup -- Wrapper.Group#GROUP - CC:MessageToGroup( Message, TaskGroup, TaskGroup:GetName() ) - end -end - - ---- Send the briefng message of the @{Task} to the assigned @{Group}s. --- @param #TASK self -function TASK:SendBriefingToAssignedGroups() - self:F2() - - for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do - - if self:IsAssignedToGroup( TaskGroup ) then - TaskGroup:Message( self.TaskBriefing, 60 ) - end - end -end - - ---- UnAssign the @{Task} from the @{Group}s. --- @param #TASK self -function TASK:UnAssignFromGroups() - self:F2() - - for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do - self:UnAssignFromGroup( TaskGroup ) - end -end - ---- UnAssign the @{Task} from a @{Group}. --- @param #TASK self -function TASK:UnAssignFromGroup( TaskGroup ) - self:F2( { TaskGroup } ) - - TaskGroup:SetState( TaskGroup, "Assigned", nil ) - - self:RemoveAssignedMenuForGroup( TaskGroup ) - - local TaskUnits = TaskGroup:GetUnits() - for UnitID, UnitData in pairs( TaskUnits ) do - local TaskUnit = UnitData -- Wrapper.Unit#UNIT - local PlayerName = TaskUnit:GetPlayerName() - if PlayerName ~= nil or PlayerName ~= "" then - self:UnAssignFromUnit( TaskUnit ) - end - end -end - - - ---- Returns if the @{Task} is assigned to the Group. --- @param #TASK self --- @param Wrapper.Group#GROUP TaskGroup --- @return #boolean -function TASK:IsAssignedToGroup( TaskGroup ) - - local TaskGroupName = TaskGroup:GetName() - - if self:IsStateAssigned() then - if TaskGroup:GetState( TaskGroup, "Assigned" ) == self then - self:T( { "Task is assigned to:", TaskGroup:GetName() } ) - return true - end - end - - self:T( { "Task is not assigned to:", TaskGroup:GetName() } ) - return false -end - ---- Returns if the @{Task} has still alive and assigned Units. --- @param #TASK self --- @return #boolean -function TASK:HasAliveUnits() - self:F() - - for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do - if self:IsStateAssigned() then - if self:IsAssignedToGroup( TaskGroup ) then - for TaskUnitID, TaskUnit in pairs( TaskGroup:GetUnits() ) do - if TaskUnit:IsAlive() then - self:T( { HasAliveUnits = true } ) - return true - end - end - end - end - end - - self:T( { HasAliveUnits = false } ) - return false -end - ---- Set the menu options of the @{Task} to all the groups in the SetGroup. --- @param #TASK self --- @param #number MenuTime --- @return #TASK -function TASK:SetMenu( MenuTime ) - self:F() - - self.SetGroup:Flush() - for TaskGroupID, TaskGroupData in pairs( self.SetGroup:GetSet() ) do - local TaskGroup = TaskGroupData -- Wrapper.Group#GROUP - if TaskGroup:IsAlive() and TaskGroup:GetPlayerNames() then - if self:IsStatePlanned() or self:IsStateReplanned() then - self:SetMenuForGroup( TaskGroup, MenuTime ) - end - end - end -end - - - ---- Set the Menu for a Group --- @param #TASK self --- @param #number MenuTime --- @return #TASK -function TASK:SetMenuForGroup( TaskGroup, MenuTime ) - - if not TaskGroup:GetState( TaskGroup, "Assigned" ) then - self:SetPlannedMenuForGroup( TaskGroup, self:GetTaskName(), MenuTime ) - else - if not self:IsAssignedToGroup( TaskGroup ) then - self:SetAssignedMenuForGroup( TaskGroup, MenuTime ) - end - end -end - - ---- Set the planned menu option of the @{Task}. --- @param #TASK self --- @param Wrapper.Group#GROUP TaskGroup --- @param #string MenuText The menu text. --- @param #number MenuTime --- @return #TASK self -function TASK:SetPlannedMenuForGroup( TaskGroup, MenuText, MenuTime ) - self:E( TaskGroup:GetName() ) - - local Mission = self:GetMission() - local MissionName = Mission:GetName() - local CommandCenter = Mission:GetCommandCenter() - local CommandCenterMenu = CommandCenter:GetMenu() - - local MissionMenu = MENU_GROUP:New( TaskGroup, MissionName, CommandCenterMenu ):SetTime( MenuTime ) - - - local MissionMenu = Mission:GetMenu( TaskGroup ) - - local TaskType = self:GetType() - local TaskTypeMenu = MENU_GROUP:New( TaskGroup, TaskType, MissionMenu ):SetTime( MenuTime ) - local TaskMenu = MENU_GROUP_COMMAND:New( TaskGroup, MenuText, TaskTypeMenu, self.MenuAssignToGroup, { self = self, TaskGroup = TaskGroup } ):SetTime( MenuTime ):SetRemoveParent( true ) - - return self -end - ---- Set the assigned menu options of the @{Task}. --- @param #TASK self --- @param Wrapper.Group#GROUP TaskGroup --- @param #number MenuTime --- @return #TASK self -function TASK:SetAssignedMenuForGroup( TaskGroup, MenuTime ) - self:E( TaskGroup:GetName() ) - - local Mission = self:GetMission() - local MissionMenu = Mission:GetMenu( TaskGroup ) - - self:E( { MissionMenu = MissionMenu } ) - - local TaskTypeMenu = MENU_GROUP_COMMAND:New( TaskGroup, "Task Status", MissionMenu, self.MenuTaskStatus, self, TaskGroup ):SetTime( MenuTime ) - local TaskMenu = MENU_GROUP_COMMAND:New( TaskGroup, "Abort Task", MissionMenu, self.MenuTaskAbort, self, TaskGroup ):SetTime( MenuTime ) - - return self -end - ---- Remove the menu options of the @{Task} to all the groups in the SetGroup. --- @param #TASK self --- @param #number MenuTime --- @return #TASK -function TASK:RemoveMenu( MenuTime ) - self:F() - - for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do - local TaskGroup = TaskGroup -- Wrapper.Group#GROUP - if TaskGroup:IsAlive() and TaskGroup:GetPlayerNames() then - if not self:IsAssignedToGroup( TaskGroup ) then - self:RemovePlannedMenuForGroup( TaskGroup, MenuTime ) - end - end - end -end - - ---- Remove the menu option of the @{Task} for a @{Group}. --- @param #TASK self --- @param Wrapper.Group#GROUP TaskGroup --- @param #number MenuTime --- @return #TASK self -function TASK:RemovePlannedMenuForGroup( TaskGroup, MenuTime ) - self:F() - - local Mission = self:GetMission() - local MissionName = Mission:GetName() - - local MissionMenu = Mission:GetMenu( TaskGroup ) - - if MissionMenu then - local TaskType = self:GetType() - local TypeMenu = MissionMenu:GetMenu( TaskType ) - - if TypeMenu then - local TaskMenu = TypeMenu:GetMenu( self:GetTaskName() ) - if TaskMenu then - TaskMenu:Remove( MenuTime ) - end - end - end - -end - ---- Remove the assigned menu option of the @{Task} for a @{Group}. --- @param #TASK self --- @param Wrapper.Group#GROUP TaskGroup --- @param #number MenuTime --- @return #TASK self -function TASK:RemoveAssignedMenuForGroup( TaskGroup ) - self:F() - - local Mission = self:GetMission() - local MissionName = Mission:GetName() - - local MissionMenu = Mission:GetMenu( TaskGroup ) - - if MissionMenu then - MissionMenu:RemoveSubMenus() - end - -end - -function TASK.MenuAssignToGroup( MenuParam ) - - local self = MenuParam.self - local TaskGroup = MenuParam.TaskGroup - - self:E( "Assigned menu selected") - - self:AssignToGroup( TaskGroup ) -end - ---- Report the task status. --- @param #TASK self -function TASK:MenuTaskStatus( TaskGroup ) - - local ReportText = self:ReportDetails() - - self:T( ReportText ) - self:GetMission():GetCommandCenter():MessageToGroup( ReportText, TaskGroup ) - -end - ---- Report the task status. --- @param #TASK self -function TASK:MenuTaskAbort( TaskGroup ) - - self:Abort() -end - - - ---- Returns the @{Task} name. --- @param #TASK self --- @return #string TaskName -function TASK:GetTaskName() - return self.TaskName -end - - - - ---- Get the default or currently assigned @{Process} template with key ProcessName. --- @param #TASK self --- @param #string ProcessName --- @return Core.Fsm#FSM_PROCESS -function TASK:GetProcessTemplate( ProcessName ) - - local ProcessTemplate = self.ProcessClasses[ProcessName] - - return ProcessTemplate -end - - - --- TODO: Obscolete? ---- Fail processes from @{Task} with key @{Unit} --- @param #TASK self --- @param #string TaskUnitName --- @return #TASK self -function TASK:FailProcesses( TaskUnitName ) - - for ProcessID, ProcessData in pairs( self.Processes[TaskUnitName] ) do - local Process = ProcessData - Process.Fsm:Fail() - end -end - ---- Add a FiniteStateMachine to @{Task} with key Task@{Unit} --- @param #TASK self --- @param Wrapper.Unit#UNIT TaskUnit --- @param Core.Fsm#FSM_PROCESS Fsm --- @return #TASK self -function TASK:SetStateMachine( TaskUnit, Fsm ) - self:F2( { TaskUnit, self.Fsm[TaskUnit] ~= nil, Fsm:GetClassNameAndID() } ) - - self.Fsm[TaskUnit] = Fsm - - return Fsm -end - ---- Gets the FiniteStateMachine of @{Task} with key Task@{Unit} --- @param #TASK self --- @param Wrapper.Unit#UNIT TaskUnit --- @return Core.Fsm#FSM_PROCESS -function TASK:GetStateMachine( TaskUnit ) - self:F2( { TaskUnit, self.Fsm[TaskUnit] ~= nil } ) - - return self.Fsm[TaskUnit] -end - ---- Remove FiniteStateMachines from @{Task} with key Task@{Unit} --- @param #TASK self --- @param Wrapper.Unit#UNIT TaskUnit --- @return #TASK self -function TASK:RemoveStateMachine( TaskUnit ) - self:F( { TaskUnit, self.Fsm[TaskUnit] ~= nil } ) - - self:E( self.Fsm ) - for TaskUnitT, Fsm in pairs( self.Fsm ) do - self:E( TaskUnitT ) - end - - self.Fsm[TaskUnit] = nil - - collectgarbage() - self:E( "Garbage Collected, Processes should be finalized now ...") -end - ---- Checks if there is a FiniteStateMachine assigned to Task@{Unit} for @{Task} --- @param #TASK self --- @param Wrapper.Unit#UNIT TaskUnit --- @return #TASK self -function TASK:HasStateMachine( TaskUnit ) - self:F( { TaskUnit, self.Fsm[TaskUnit] ~= nil } ) - - return ( self.Fsm[TaskUnit] ~= nil ) -end - - ---- Gets the Scoring of the task --- @param #TASK self --- @return Functional.Scoring#SCORING Scoring -function TASK:GetScoring() - return self.Mission:GetScoring() -end - - ---- Gets the Task Index, which is a combination of the Task type, the Task name. --- @param #TASK self --- @return #string The Task ID -function TASK:GetTaskIndex() - - local TaskType = self:GetType() - local TaskName = self:GetName() - - return TaskType .. "." .. TaskName -end - ---- Sets the Name of the Task --- @param #TASK self --- @param #string TaskName -function TASK:SetName( TaskName ) - self.TaskName = TaskName -end - ---- Gets the Name of the Task --- @param #TASK self --- @return #string The Task Name -function TASK:GetName() - return self.TaskName -end - ---- Sets the Type of the Task --- @param #TASK self --- @param #string TaskType -function TASK:SetType( TaskType ) - self.TaskType = TaskType -end - ---- Gets the Type of the Task --- @param #TASK self --- @return #string TaskType -function TASK:GetType() - return self.TaskType -end - ---- Sets the ID of the Task --- @param #TASK self --- @param #string TaskID -function TASK:SetID( TaskID ) - self.TaskID = TaskID -end - ---- Gets the ID of the Task --- @param #TASK self --- @return #string TaskID -function TASK:GetID() - return self.TaskID -end - - ---- Sets a @{Task} to status **Success**. --- @param #TASK self -function TASK:StateSuccess() - self:SetState( self, "State", "Success" ) - return self -end - ---- Is the @{Task} status **Success**. --- @param #TASK self -function TASK:IsStateSuccess() - return self:Is( "Success" ) -end - ---- Sets a @{Task} to status **Failed**. --- @param #TASK self -function TASK:StateFailed() - self:SetState( self, "State", "Failed" ) - return self -end - ---- Is the @{Task} status **Failed**. --- @param #TASK self -function TASK:IsStateFailed() - return self:Is( "Failed" ) -end - ---- Sets a @{Task} to status **Planned**. --- @param #TASK self -function TASK:StatePlanned() - self:SetState( self, "State", "Planned" ) - return self -end - ---- Is the @{Task} status **Planned**. --- @param #TASK self -function TASK:IsStatePlanned() - return self:Is( "Planned" ) -end - ---- Sets a @{Task} to status **Aborted**. --- @param #TASK self -function TASK:StateAborted() - self:SetState( self, "State", "Aborted" ) - return self -end - ---- Is the @{Task} status **Aborted**. --- @param #TASK self -function TASK:IsStateAborted() - return self:Is( "Aborted" ) -end - ---- Sets a @{Task} to status **Cancelled**. --- @param #TASK self -function TASK:StateCancelled() - self:SetState( self, "State", "Cancelled" ) - return self -end - ---- Is the @{Task} status **Cancelled**. --- @param #TASK self -function TASK:IsStateCancelled() - return self:Is( "Cancelled" ) -end - ---- Sets a @{Task} to status **Assigned**. --- @param #TASK self -function TASK:StateAssigned() - self:SetState( self, "State", "Assigned" ) - return self -end - ---- Is the @{Task} status **Assigned**. --- @param #TASK self -function TASK:IsStateAssigned() - return self:Is( "Assigned" ) -end - ---- Sets a @{Task} to status **Hold**. --- @param #TASK self -function TASK:StateHold() - self:SetState( self, "State", "Hold" ) - return self -end - ---- Is the @{Task} status **Hold**. --- @param #TASK self -function TASK:IsStateHold() - return self:Is( "Hold" ) -end - ---- Sets a @{Task} to status **Replanned**. --- @param #TASK self -function TASK:StateReplanned() - self:SetState( self, "State", "Replanned" ) - return self -end - ---- Is the @{Task} status **Replanned**. --- @param #TASK self -function TASK:IsStateReplanned() - return self:Is( "Replanned" ) -end - ---- Gets the @{Task} status. --- @param #TASK self -function TASK:GetStateString() - return self:GetState( self, "State" ) -end - ---- Sets a @{Task} briefing. --- @param #TASK self --- @param #string TaskBriefing --- @return #TASK self -function TASK:SetBriefing( TaskBriefing ) - self.TaskBriefing = TaskBriefing - return self -end - - - - ---- FSM function for a TASK --- @param #TASK self --- @param #string Event --- @param #string From --- @param #string To -function TASK:onenterAssigned( From, Event, To, PlayerUnit, PlayerName ) - - self:E( { "Task Assigned", self.Dispatcher } ) - - self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned to your group." ) - - if self.Dispatcher then - self:E( "Firing Assign event " ) - self.Dispatcher:Assign( self, PlayerUnit, PlayerName ) - end - - self:GetMission():__Start( 1 ) -end - - ---- FSM function for a TASK --- @param #TASK self --- @param #string Event --- @param #string From --- @param #string To -function TASK:onenterSuccess( From, Event, To ) - - self:E( "Task Success" ) - - self:GetMission():GetCommandCenter():MessageToCoalition( "Task " .. self:GetName() .. " is successful! Good job!" ) - self:UnAssignFromGroups() - - self:GetMission():__Complete( 1 ) - -end - - ---- FSM function for a TASK --- @param #TASK self --- @param #string From --- @param #string Event --- @param #string To -function TASK:onenterAborted( From, Event, To ) - - self:E( "Task Aborted" ) - - self:GetMission():GetCommandCenter():MessageToCoalition( "Task " .. self:GetName() .. " has been aborted! Task may be replanned." ) - - self:UnAssignFromGroups() - - self:__Replan( 5 ) -end - ---- FSM function for a TASK --- @param #TASK self --- @param #string From --- @param #string Event --- @param #string To -function TASK:onafterReplan( From, Event, To ) - - self:E( "Task Replanned" ) - - self:GetMission():GetCommandCenter():MessageToCoalition( "Replanning Task " .. self:GetName() .. "." ) - - self:SetMenu() - -end - ---- FSM function for a TASK --- @param #TASK self --- @param #string From --- @param #string Event --- @param #string To -function TASK:onenterFailed( From, Event, To ) - - self:E( "Task Failed" ) - - self:GetMission():GetCommandCenter():MessageToCoalition( "Task " .. self:GetName() .. " has failed!" ) - - self:UnAssignFromGroups() -end - ---- FSM function for a TASK --- @param #TASK self --- @param #string Event --- @param #string From --- @param #string To -function TASK:onstatechange( From, Event, To ) - - if self:IsTrace() then - MESSAGE:New( "@ Task " .. self.TaskName .. " : " .. Event .. " changed to state " .. To, 2 ):ToAll() - end - - if self.Scores[To] then - local Scoring = self:GetScoring() - if Scoring then - self:E( { self.Scores[To].ScoreText, self.Scores[To].Score } ) - Scoring:_AddMissionScore( self.Mission, self.Scores[To].ScoreText, self.Scores[To].Score ) - end - end - -end - ---- FSM function for a TASK --- @param #TASK self --- @param #string Event --- @param #string From --- @param #string To -function TASK:onenterPlanned( From, Event, To) - if not self.TimeOut == 0 then - self.__TimeOut( self.TimeOut ) - end -end - ---- FSM function for a TASK --- @param #TASK self --- @param #string Event --- @param #string From --- @param #string To -function TASK:onbeforeTimeOut( From, Event, To ) - if From == "Planned" then - self:RemoveMenu() - return true - end - return false -end - -do -- Dispatcher - - --- Set dispatcher of a task - -- @param #TASK self - -- @param Tasking.DetectionManager#DETECTION_MANAGER Dispatcher - -- @return #TASK - function TASK:SetDispatcher( Dispatcher ) - self.Dispatcher = Dispatcher - end - -end - -do -- Reporting - ---- Create a summary report of the Task. --- List the Task Name and Status --- @param #TASK self --- @return #string -function TASK:ReportSummary() - - local Report = REPORT:New() - - -- List the name of the Task. - local Name = self:GetName() - - -- Determine the status of the Task. - local State = self:GetState() - - Report:Add( "Task " .. Name .. " - State '" .. State ) - - return Report:Text() -end - - ---- Create a detailed report of the Task. --- List the Task Status, and the Players assigned to the Task. --- @param #TASK self --- @return #string -function TASK:ReportDetails() - - local Report = REPORT:New() - - -- List the name of the Task. - local Name = self:GetName() - - -- Determine the status of the Task. - local State = self:GetState() - - -- Loop each Unit active in the Task, and find Player Names. - local PlayerNames = {} - local PlayerReport = REPORT:New( " - Players:" ) - for PlayerGroupID, PlayerGroupData in pairs( self:GetGroups():GetSet() ) do - local PlayerGroup = PlayerGroupData -- Wrapper.Group#GROUP - PlayerNames = PlayerGroup:GetPlayerNames() - if PlayerNames then - PlayerReport:Add( " -- Group " .. PlayerGroup:GetCallsign() .. ": " .. table.concat( PlayerNames, ", " ) ) - end - end - - -- Loop each Process in the Task, and find Reporting Details. - Report:Add( string.format( " - Task %s\n -- State '%s'\n%s", Name, State, PlayerReport:Text() ) ) - return Report:Text() -end - - -end -- Reporting ---- This module contains the DETECTION_MANAGER class and derived classes. --- --- === --- --- 1) @{DetectionManager#DETECTION_MANAGER} class, extends @{Fsm#FSM} --- ==================================================================== --- The @{DetectionManager#DETECTION_MANAGER} class defines the core functions to report detected objects to groups. --- Reportings can be done in several manners, and it is up to the derived classes if DETECTION_MANAGER to model the reporting behaviour. --- --- 1.1) DETECTION_MANAGER constructor: --- ----------------------------------- --- * @{DetectionManager#DETECTION_MANAGER.New}(): Create a new DETECTION_MANAGER instance. --- --- 1.2) DETECTION_MANAGER reporting: --- --------------------------------- --- Derived DETECTION_MANAGER classes will reports detected units using the method @{DetectionManager#DETECTION_MANAGER.ReportDetected}(). This method implements polymorphic behaviour. --- --- The time interval in seconds of the reporting can be changed using the methods @{DetectionManager#DETECTION_MANAGER.SetReportInterval}(). --- To control how long a reporting message is displayed, use @{DetectionManager#DETECTION_MANAGER.SetReportDisplayTime}(). --- Derived classes need to implement the method @{DetectionManager#DETECTION_MANAGER.GetReportDisplayTime}() to use the correct display time for displayed messages during a report. --- --- Reporting can be started and stopped using the methods @{DetectionManager#DETECTION_MANAGER.StartReporting}() and @{DetectionManager#DETECTION_MANAGER.StopReporting}() respectively. --- If an ad-hoc report is requested, use the method @{DetectionManager#DETECTION_MANAGER#ReportNow}(). --- --- The default reporting interval is every 60 seconds. The reporting messages are displayed 15 seconds. --- --- === --- --- 2) @{DetectionManager#DETECTION_REPORTING} class, extends @{DetectionManager#DETECTION_MANAGER} --- ========================================================================================= --- The @{DetectionManager#DETECTION_REPORTING} class implements detected units reporting. Reporting can be controlled using the reporting methods available in the @{DetectionManager#DETECTION_MANAGER} class. --- --- 2.1) DETECTION_REPORTING constructor: --- ------------------------------- --- The @{DetectionManager#DETECTION_REPORTING.New}() method creates a new DETECTION_REPORTING instance. --- --- --- === --- --- ### Contributions: Mechanist, Prof_Hilactic, FlightControl - Concept & Testing --- ### Author: FlightControl - Framework Design & Programming --- --- @module DetectionManager - -do -- DETECTION MANAGER - - --- DETECTION_MANAGER class. - -- @type DETECTION_MANAGER - -- @field Set#SET_GROUP SetGroup The groups to which the FAC will report to. - -- @field Functional.Detection#DETECTION_BASE Detection The DETECTION_BASE object that is used to report the detected objects. - -- @extends Core.Fsm#FSM - DETECTION_MANAGER = { - ClassName = "DETECTION_MANAGER", - SetGroup = nil, - Detection = nil, - } - - --- FAC constructor. - -- @param #DETECTION_MANAGER self - -- @param Set#SET_GROUP SetGroup - -- @param Functional.Detection#DETECTION_BASE Detection - -- @return #DETECTION_MANAGER self - function DETECTION_MANAGER:New( SetGroup, Detection ) - - -- Inherits from BASE - local self = BASE:Inherit( self, FSM:New() ) -- #DETECTION_MANAGER - - self.SetGroup = SetGroup - self.Detection = Detection - - self:SetStartState( "Stopped" ) - self:AddTransition( "Stopped", "Start", "Started" ) - self:AddTransition( "Started", "Stop", "Stopped" ) - self:AddTransition( "Started", "Report", "Started" ) - - self:SetReportInterval( 30 ) - self:SetReportDisplayTime( 25 ) - - Detection:__Start( 1 ) - - return self - end - - function DETECTION_MANAGER:onafterStart( From, Event, To ) - self:Report() - end - - function DETECTION_MANAGER:onafterReport( From, Event, To ) - - self:E( "onafterReport" ) - - self:__Report( -self._ReportInterval ) - - self:ProcessDetected( self.Detection ) - end - - --- Set the reporting time interval. - -- @param #DETECTION_MANAGER self - -- @param #number ReportInterval The interval in seconds when a report needs to be done. - -- @return #DETECTION_MANAGER self - function DETECTION_MANAGER:SetReportInterval( ReportInterval ) - self:F2() - - self._ReportInterval = ReportInterval - end - - - --- Set the reporting message display time. - -- @param #DETECTION_MANAGER self - -- @param #number ReportDisplayTime The display time in seconds when a report needs to be done. - -- @return #DETECTION_MANAGER self - function DETECTION_MANAGER:SetReportDisplayTime( ReportDisplayTime ) - self:F2() - - self._ReportDisplayTime = ReportDisplayTime - end - - --- Get the reporting message display time. - -- @param #DETECTION_MANAGER self - -- @return #number ReportDisplayTime The display time in seconds when a report needs to be done. - function DETECTION_MANAGER:GetReportDisplayTime() - self:F2() - - return self._ReportDisplayTime - end - - --- Reports the detected items to the @{Set#SET_GROUP}. - -- @param #DETECTION_MANAGER self - -- @param Functional.Detection#DETECTION_BASE Detection - -- @return #DETECTION_MANAGER self - function DETECTION_MANAGER:ProcessDetected( Detection ) - self:E() - - end - -end - - -do -- DETECTION_REPORTING - - --- DETECTION_REPORTING class. - -- @type DETECTION_REPORTING - -- @field Set#SET_GROUP SetGroup The groups to which the FAC will report to. - -- @field Functional.Detection#DETECTION_BASE Detection The DETECTION_BASE object that is used to report the detected objects. - -- @extends #DETECTION_MANAGER - DETECTION_REPORTING = { - ClassName = "DETECTION_REPORTING", - } - - - --- DETECTION_REPORTING constructor. - -- @param #DETECTION_REPORTING self - -- @param Set#SET_GROUP SetGroup - -- @param Functional.Detection#DETECTION_AREAS Detection - -- @return #DETECTION_REPORTING self - function DETECTION_REPORTING:New( SetGroup, Detection ) - - -- Inherits from DETECTION_MANAGER - local self = BASE:Inherit( self, DETECTION_MANAGER:New( SetGroup, Detection ) ) -- #DETECTION_REPORTING - - self:Schedule( 1, 30 ) - return self - end - - --- Creates a string of the detected items in a @{Detection}. - -- @param #DETECTION_MANAGER self - -- @param Set#SET_UNIT DetectedSet The detected Set created by the @{Detection#DETECTION_BASE} object. - -- @return #DETECTION_MANAGER self - function DETECTION_REPORTING:GetDetectedItemsText( DetectedSet ) - self:F2() - - local MT = {} -- Message Text - local UnitTypes = {} - - for DetectedUnitID, DetectedUnitData in pairs( DetectedSet:GetSet() ) do - local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT - if DetectedUnit:IsAlive() then - local UnitType = DetectedUnit:GetTypeName() - - if not UnitTypes[UnitType] then - UnitTypes[UnitType] = 1 - else - UnitTypes[UnitType] = UnitTypes[UnitType] + 1 - end - end - end - - for UnitTypeID, UnitType in pairs( UnitTypes ) do - MT[#MT+1] = UnitType .. " of " .. UnitTypeID - end - - return table.concat( MT, ", " ) - end - - - - --- Reports the detected items to the @{Set#SET_GROUP}. - -- @param #DETECTION_REPORTING self - -- @param Wrapper.Group#GROUP Group The @{Group} object to where the report needs to go. - -- @param Functional.Detection#DETECTION_AREAS Detection The detection created by the @{Detection#DETECTION_BASE} object. - -- @return #boolean Return true if you want the reporting to continue... false will cancel the reporting loop. - function DETECTION_REPORTING:ProcessDetected( Group, Detection ) - self:F2( Group ) - - self:E( Group ) - local DetectedMsg = {} - for DetectedAreaID, DetectedAreaData in pairs( Detection:GetDetectedAreas() ) do - local DetectedArea = DetectedAreaData -- Functional.Detection#DETECTION_AREAS.DetectedArea - DetectedMsg[#DetectedMsg+1] = " - Group #" .. DetectedAreaID .. ": " .. self:GetDetectedItemsText( DetectedArea.Set ) - end - local FACGroup = Detection:GetDetectionGroups() - FACGroup:MessageToGroup( "Reporting detected target groups:\n" .. table.concat( DetectedMsg, "\n" ), self:GetReportDisplayTime(), Group ) - - return true - end - -end - ---- **Tasking** - The TASK_A2G_DISPATCHER creates and manages player TASK_A2G tasks based on detected targets. --- --- === --- --- # 1) @{#TASK_A2G_DISPATCHER} class, extends @{#DETECTION_MANAGER} --- --- The @{#TASK_A2G_DISPATCHER} class implements the dynamic dispatching of tasks upon groups of detected units determined a @{Set} of FAC (groups). --- The FAC will detect units, will group them, and will dispatch @{Task}s to groups. Depending on the type of target detected, different tasks will be dispatched. --- Find a summary below describing for which situation a task type is created: --- --- * **CAS Task**: Is created when there are enemy ground units within range of the FAC, while there are friendly units in the FAC perimeter. --- * **BAI Task**: Is created when there are enemy ground units within range of the FAC, while there are NO other friendly units within the FAC perimeter. --- * **SEAD Task**: Is created when there are enemy ground units wihtin range of the FAC, with air search radars. --- --- Other task types will follow... --- --- 3.1) TASK_A2G_DISPATCHER constructor: --- -------------------------------------- --- The @{#TASK_A2G_DISPATCHER.New}() method creates a new TASK_A2G_DISPATCHER instance. --- --- === --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-03-09: Initial class and API. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- ### Authors: --- --- * **FlightControl**: Concept, Design & Programming. --- --- @module Task_A2G_Dispatcher - -do -- TASK_A2G_DISPATCHER - - --- TASK_A2G_DISPATCHER class. - -- @type TASK_A2G_DISPATCHER - -- @field Set#SET_GROUP SetGroup The groups to which the FAC will report to. - -- @field Functional.Detection#DETECTION_BASE Detection The DETECTION_BASE object that is used to report the detected objects. - -- @field Tasking.Mission#MISSION Mission - -- @extends Tasking.DetectionManager#DETECTION_MANAGER - TASK_A2G_DISPATCHER = { - ClassName = "TASK_A2G_DISPATCHER", - Mission = nil, - Detection = nil, - } - - - --- TASK_A2G_DISPATCHER constructor. - -- @param #TASK_A2G_DISPATCHER self - -- @param Tasking.Mission#MISSION Mission The mission for which the task dispatching is done. - -- @param Set#SET_GROUP SetGroup The set of groups that can join the tasks within the mission. - -- @param Functional.Detection#DETECTION_BASE Detection The detection results that are used to dynamically assign new tasks to human players. - -- @return #TASK_A2G_DISPATCHER self - function TASK_A2G_DISPATCHER:New( Mission, SetGroup, Detection ) - - -- Inherits from DETECTION_MANAGER - local self = BASE:Inherit( self, DETECTION_MANAGER:New( SetGroup, Detection ) ) -- #TASK_A2G_DISPATCHER - - self.Detection = Detection - self.Mission = Mission - - self:AddTransition( "Started", "Assign", "Started" ) - - --- OnAfter Transition Handler for Event Assign. - -- @function [parent=#TASK_A2G_DISPATCHER] OnAfterAssign - -- @param #TASK_A2G_DISPATCHER self - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @param Tasking.Task_A2G#TASK_A2G Task - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param #string PlayerName - - self:__Start( 5 ) - - return self - end - - - --- Creates a SEAD task when there are targets for it. - -- @param #TASK_A2G_DISPATCHER self - -- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem - -- @return Set#SET_UNIT TargetSetUnit: The target set of units. - -- @return #nil If there are no targets to be set. - function TASK_A2G_DISPATCHER:EvaluateSEAD( DetectedItem ) - self:F( { DetectedItem.ItemID } ) - - local DetectedSet = DetectedItem.Set - local DetectedZone = DetectedItem.Zone - - -- Determine if the set has radar targets. If it does, construct a SEAD task. - local RadarCount = DetectedSet:HasSEAD() - - if RadarCount > 0 then - - -- Here we're doing something advanced... We're copying the DetectedSet, but making a new Set only with SEADable Radar units in it. - local TargetSetUnit = SET_UNIT:New() - TargetSetUnit:SetDatabase( DetectedSet ) - TargetSetUnit:FilterHasSEAD() - TargetSetUnit:FilterOnce() -- Filter but don't do any events!!! Elements are added manually upon each detection. - - return TargetSetUnit - end - - return nil - end - - --- Creates a CAS task when there are targets for it. - -- @param #TASK_A2G_DISPATCHER self - -- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem - -- @return Tasking.Task#TASK - function TASK_A2G_DISPATCHER:EvaluateCAS( DetectedItem ) - self:F( { DetectedItem.ItemID } ) - - local DetectedSet = DetectedItem.Set - local DetectedZone = DetectedItem.Zone - - - -- Determine if the set has radar targets. If it does, construct a SEAD task. - local GroundUnitCount = DetectedSet:HasGroundUnits() - local FriendliesNearBy = self.Detection:IsFriendliesNearBy( DetectedItem ) - - if GroundUnitCount > 0 and FriendliesNearBy == true then - - -- Copy the Set - local TargetSetUnit = SET_UNIT:New() - TargetSetUnit:SetDatabase( DetectedSet ) - TargetSetUnit:FilterOnce() -- Filter but don't do any events!!! Elements are added manually upon each detection. - - return TargetSetUnit - end - - return nil - end - - --- Creates a BAI task when there are targets for it. - -- @param #TASK_A2G_DISPATCHER self - -- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem - -- @return Tasking.Task#TASK - function TASK_A2G_DISPATCHER:EvaluateBAI( DetectedItem, FriendlyCoalition ) - self:F( { DetectedItem.ItemID } ) - - local DetectedSet = DetectedItem.Set - local DetectedZone = DetectedItem.Zone - - - -- Determine if the set has radar targets. If it does, construct a SEAD task. - local GroundUnitCount = DetectedSet:HasGroundUnits() - local FriendliesNearBy = self.Detection:IsFriendliesNearBy( DetectedItem ) - - if GroundUnitCount > 0 and FriendliesNearBy == false then - - -- Copy the Set - local TargetSetUnit = SET_UNIT:New() - TargetSetUnit:SetDatabase( DetectedSet ) - TargetSetUnit:FilterOnce() -- Filter but don't do any events!!! Elements are added manually upon each detection. - - return TargetSetUnit - end - - return nil - end - - --- Evaluates the removal of the Task from the Mission. - -- Can only occur when the DetectedItem is Changed AND the state of the Task is "Planned". - -- @param #TASK_A2G_DISPATCHER self - -- @param Tasking.Mission#MISSION Mission - -- @param Tasking.Task#TASK Task - -- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem - -- @return Tasking.Task#TASK - function TASK_A2G_DISPATCHER:EvaluateRemoveTask( Mission, Task, DetectedItem ) - - if Task then - if Task:IsStatePlanned() and DetectedItem.Changed == true then - self:E( "Removing Tasking: " .. Task:GetTaskName() ) - Task = Mission:RemoveTask( Task ) - end - end - - return Task - end - - - --- Assigns tasks in relation to the detected items to the @{Set#SET_GROUP}. - -- @param #TASK_A2G_DISPATCHER self - -- @param Functional.Detection#DETECTION_BASE Detection The detection created by the @{Detection#DETECTION_BASE} derived object. - -- @return #boolean Return true if you want the task assigning to continue... false will cancel the loop. - function TASK_A2G_DISPATCHER:ProcessDetected( Detection ) - self:E() - - local AreaMsg = {} - local TaskMsg = {} - local ChangeMsg = {} - - local Mission = self.Mission - local ReportSEAD = REPORT:New( "- SEAD Tasks:") - local ReportCAS = REPORT:New( "- CAS Tasks:") - local ReportBAI = REPORT:New( "- BAI Tasks:") - local ReportChanges = REPORT:New( " - Changes:" ) - - --- First we need to the detected targets. - for DetectedItemID, DetectedItem in pairs( Detection:GetDetectedItems() ) do - - local DetectedItem = DetectedItem -- Functional.Detection#DETECTION_BASE.DetectedItem - local DetectedSet = DetectedItem.Set -- Functional.Detection#DETECTION_BASE.DetectedSet - local DetectedZone = DetectedItem.Zone - self:E( { "Targets in DetectedItem", DetectedItem.ItemID, DetectedSet:Count(), tostring( DetectedItem ) } ) - DetectedSet:Flush() - - local ItemID = DetectedItem.ItemID - - -- Evaluate SEAD Tasking - local SEADTask = Mission:GetTask( string.format( "SEAD.%03d", ItemID ) ) - SEADTask = self:EvaluateRemoveTask( Mission, SEADTask, DetectedItem ) - if not SEADTask then - local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed... - if TargetSetUnit then - local Task = TASK_SEAD:New( Mission, self.SetGroup, string.format( "SEAD.%03d", ItemID ), TargetSetUnit ) - Task:SetTargetZone( DetectedZone ) - Task:SetDispatcher( self ) - SEADTask = Mission:AddTask( Task ) - end - end - if SEADTask and SEADTask:IsStatePlanned() then - ReportSEAD:Add( string.format( " - %s.%02d - %s", "SEAD", ItemID, Detection:DetectedItemReportSummary(DetectedItemID) ) ) - end - - -- Evaluate CAS Tasking - local CASTask = Mission:GetTask( string.format( "CAS.%03d", ItemID ) ) - CASTask = self:EvaluateRemoveTask( Mission, CASTask, DetectedItem ) - if not CASTask then - local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed... - if TargetSetUnit then - local Task = TASK_CAS:New( Mission, self.SetGroup, string.format( "CAS.%03d", ItemID ), TargetSetUnit ) - Task:SetTargetZone( DetectedZone ) - Task:SetDispatcher( self ) - CASTask = Mission:AddTask( Task ) - end - end - if CASTask and CASTask:IsStatePlanned() then - ReportCAS:Add( string.format( " - %s.%02d - %s", "CAS", ItemID, Detection:DetectedItemReportSummary(DetectedItemID) ) ) - end - - -- Evaluate BAI Tasking - local BAITask = Mission:GetTask( string.format( "BAI.%03d", ItemID ) ) - BAITask = self:EvaluateRemoveTask( Mission, BAITask, DetectedItem ) - if not BAITask then - local TargetSetUnit = self:EvaluateBAI( DetectedItem, self.Mission:GetCommandCenter():GetPositionable():GetCoalition() ) -- Returns a SetUnit if there are targets to be SEADed... - if TargetSetUnit then - local Task = TASK_BAI:New( Mission, self.SetGroup, string.format( "BAI.%03d", ItemID ), TargetSetUnit ) - Task:SetTargetZone( DetectedZone ) - Task:SetDispatcher( self ) - BAITask = Mission:AddTask( Task ) - end - end - if BAITask and BAITask:IsStatePlanned() then - ReportBAI:Add( string.format( " - %s.%02d - %s", "BAI", ItemID, Detection:DetectedItemReportSummary(DetectedItemID) ) ) - end - - - -- Loop through the changes ... - local ChangeText = Detection:GetChangeText( DetectedItem ) - ReportChanges:Add( ChangeText ) - - - -- OK, so the tasking has been done, now delete the changes reported for the area. - Detection:AcceptChanges( DetectedItem ) - - end - - -- TODO set menus using the HQ coordinator - Mission:GetCommandCenter():SetMenu() - - for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do - if not TaskGroup:GetState( TaskGroup, "Assigned" ) then - Mission:GetCommandCenter():MessageToGroup( - string.format( "HQ Reporting - Planned tasks for mission '%s':\n%s\n", - self.Mission:GetName(), - string.format( "%s\n\n%s\n\n%s\n\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text() - ) - ), TaskGroup - ) - end - end - - return true - end - -end--- **Tasking** - The TASK_A2G models tasks for players in Air to Ground engagements. --- --- ![Banner Image](..\Presentations\TASK_A2G\Dia1.JPG) --- --- --- # 1) @{Task_A2G#TASK_A2G} class, extends @{Task#TASK} --- --- The @{#TASK_A2G} class defines Air To Ground tasks for a @{Set} of Target Units, --- based on the tasking capabilities defined in @{Task#TASK}. --- The TASK_A2G is implemented using a @{Statemachine#FSM_TASK}, and has the following statuses: --- --- * **None**: Start of the process --- * **Planned**: The A2G task is planned. --- * **Assigned**: The A2G task is assigned to a @{Group#GROUP}. --- * **Success**: The A2G task is successfully completed. --- * **Failed**: The A2G task has failed. This will happen if the player exists the task early, without communicating a possible cancellation to HQ. --- --- # 1.1) Set the scoring of achievements in an A2G attack. --- --- Scoring or penalties can be given in the following circumstances: --- --- * @{#TASK_A2G.SetScoreOnDestroy}(): Set a score when a target in scope of the A2G attack, has been destroyed. --- * @{#TASK_A2G.SetScoreOnSuccess}(): Set a score when all the targets in scope of the A2G attack, have been destroyed. --- * @{#TASK_A2G.SetPenaltyOnFailed}(): Set a penalty when the A2G attack has failed. --- --- # 2) @{Task_A2G#TASK_SEAD} class, extends @{Task_A2G#TASK_A2G} --- --- The @{#TASK_SEAD} class defines a SEAD task for a @{Set} of Target Units. --- --- === --- --- # 3) @{Task_A2G#TASK_CAS} class, extends @{Task_A2G#TASK_A2G} --- --- The @{#TASK_CAS} class defines a CAS task for a @{Set} of Target Units. --- --- === --- --- # 4) @{Task_A2G#TASK_BAI} class, extends @{Task_A2G#TASK_A2G} --- --- The @{#TASK_BAI} class defines a BAI task for a @{Set} of Target Units. --- --- ==== --- --- # **API CHANGE HISTORY** --- --- The underlying change log documents the API changes. Please read this carefully. The following notation is used: --- --- * **Added** parts are expressed in bold type face. --- * _Removed_ parts are expressed in italic type face. --- --- Hereby the change log: --- --- 2017-03-09: Revised version. --- --- === --- --- # **AUTHORS and CONTRIBUTIONS** --- --- ### Contributions: --- --- * **[WingThor]**: Concept, Advice & Testing. --- --- ### Authors: --- --- * **FlightControl**: Concept, Design & Programming. --- --- @module Task_A2G - -do -- TASK_A2G - - --- The TASK_A2G class - -- @type TASK_A2G - -- @field Set#SET_UNIT TargetSetUnit - -- @extends Tasking.Task#TASK - TASK_A2G = { - ClassName = "TASK_A2G", - } - - --- Instantiates a new TASK_A2G. - -- @param #TASK_A2G self - -- @param Tasking.Mission#MISSION Mission - -- @param Set#SET_GROUP SetGroup The set of groups for which the Task can be assigned. - -- @param #string TaskName The name of the Task. - -- @param Set#SET_UNIT UnitSetTargets - -- @param #number TargetDistance The distance to Target when the Player is considered to have "arrived" at the engagement range. - -- @param Core.Zone#ZONE_BASE TargetZone The target zone, if known. - -- If the TargetZone parameter is specified, the player will be routed to the center of the zone where all the targets are assumed to be. - -- @return #TASK_A2G self - function TASK_A2G:New( Mission, SetGroup, TaskName, TargetSetUnit, TaskType ) - local self = BASE:Inherit( self, TASK:New( Mission, SetGroup, TaskName, TaskType ) ) -- Tasking.Task#TASK_A2G - self:F() - - self.TargetSetUnit = TargetSetUnit - self.TaskType = TaskType - - Mission:AddTask( self ) - - local Fsm = self:GetUnitProcess() - - - Fsm:AddProcess ( "Planned", "Accept", ACT_ASSIGN_ACCEPT:New( self.TaskBriefing ), { Assigned = "RouteToRendezVous", Rejected = "Reject" } ) - - Fsm:AddTransition( "Assigned", "RouteToRendezVous", "RoutingToRendezVous" ) - Fsm:AddProcess ( "RoutingToRendezVous", "RouteToRendezVousPoint", ACT_ROUTE_POINT:New(), { Arrived = "ArriveAtRendezVous" } ) - Fsm:AddProcess ( "RoutingToRendezVous", "RouteToRendezVousZone", ACT_ROUTE_ZONE:New(), { Arrived = "ArriveAtRendezVous" } ) - - Fsm:AddTransition( { "Arrived", "RoutingToRendezVous" }, "ArriveAtRendezVous", "ArrivedAtRendezVous" ) - - Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" ) - Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" ) - - Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, self.TaskType ), { Accounted = "Success" } ) - Fsm:AddTransition( "Engaging", "RouteToTarget", "Engaging" ) - Fsm:AddProcess( "Engaging", "RouteToTargetZone", ACT_ROUTE_ZONE:New(), {} ) - Fsm:AddProcess( "Engaging", "RouteToTargetPoint", ACT_ROUTE_POINT:New(), {} ) - Fsm:AddTransition( "Engaging", "RouteToTargets", "Engaging" ) - - Fsm:AddTransition( "Accounted", "DestroyedAll", "Accounted" ) - Fsm:AddTransition( "Accounted", "Success", "Success" ) - Fsm:AddTransition( "Rejected", "Reject", "Aborted" ) - Fsm:AddTransition( "Failed", "Fail", "Failed" ) - - - --- Test - -- @param #FSM_PROCESS self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param Tasking.Task_A2G#TASK_A2G Task - function Fsm:onafterRouteToRendezVous( TaskUnit, Task ) - self:E( { TaskUnit = TaskUnit, Task = Task and Task:GetClassNameAndID() } ) - -- Determine the first Unit from the self.RendezVousSetUnit - - if Task:GetRendezVousZone( TaskUnit ) then - self:__RouteToRendezVousZone( 0.1 ) - else - if Task:GetRendezVousPointVec2( TaskUnit ) then - self:__RouteToRendezVousPoint( 0.1 ) - else - self:__ArriveAtRendezVous( 0.1 ) - end - end - end - - --- Test - -- @param #FSM_PROCESS self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param Tasking.Task#TASK_A2G Task - function Fsm:OnAfterArriveAtRendezVous( TaskUnit, Task ) - self:E( { TaskUnit = TaskUnit, Task = Task and Task:GetClassNameAndID() } ) - -- Determine the first Unit from the self.TargetSetUnit - - self:__Engage( 0.1 ) - end - - --- Test - -- @param #FSM_PROCESS self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param Tasking.Task#TASK_A2G Task - function Fsm:onafterEngage( TaskUnit, Task ) - self:E( { self } ) - self:__Account( 0.1 ) - self:__RouteToTarget(0.1 ) - self:__RouteToTargets( -10 ) - end - - --- Test - -- @param #FSM_PROCESS self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param Tasking.Task_A2G#TASK_A2G Task - function Fsm:onafterRouteToTarget( TaskUnit, Task ) - self:E( { TaskUnit = TaskUnit, Task = Task and Task:GetClassNameAndID() } ) - -- Determine the first Unit from the self.TargetSetUnit - - if Task:GetTargetZone( TaskUnit ) then - self:__RouteToTargetZone( 0.1 ) - else - local TargetUnit = Task.TargetSetUnit:GetFirst() -- Wrapper.Unit#UNIT - if TargetUnit then - local PointVec2 = TargetUnit:GetPointVec2() - self:T( { TargetPointVec2 = PointVec2, PointVec2:GetX(), PointVec2:GetAlt(), PointVec2:GetZ() } ) - Task:SetTargetPointVec2( TargetUnit:GetPointVec2(), TaskUnit ) - end - self:__RouteToTargetPoint( 0.1 ) - end - end - - --- Test - -- @param #FSM_PROCESS self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @param Tasking.Task_A2G#TASK_A2G Task - function Fsm:onafterRouteToTargets( TaskUnit, Task ) - self:E( { TaskUnit = TaskUnit, Task = Task and Task:GetClassNameAndID() } ) - local TargetUnit = Task.TargetSetUnit:GetFirst() -- Wrapper.Unit#UNIT - if TargetUnit then - Task:SetTargetPointVec2( TargetUnit:GetPointVec2(), TaskUnit ) - end - self:__RouteToTargets( -10 ) - end - - return self - - end - - --- @param #TASK_A2G self - function TASK_A2G:GetPlannedMenuText() - return self:GetStateString() .. " - " .. self:GetTaskName() .. " ( " .. self.TargetSetUnit:GetUnitTypesText() .. " )" - end - - --- @param #TASK_A2G self - -- @param Core.Point#POINT_VEC2 RendezVousPointVec2 The PointVec2 object referencing to the 2D point where the RendezVous point is located on the map. - -- @param #number RendezVousRange The RendezVousRange that defines when the player is considered to have arrived at the RendezVous point. - -- @param Wrapper.Unit#UNIT TaskUnit - function TASK_A2G:SetRendezVousPointVec2( RendezVousPointVec2, RendezVousRange, TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteRendezVous = ProcessUnit:GetProcess( "RoutingToRendezVous", "RouteToRendezVousPoint" ) -- Actions.Act_Route#ACT_ROUTE_POINT - ActRouteRendezVous:SetPointVec2( RendezVousPointVec2 ) - ActRouteRendezVous:SetRange( RendezVousRange ) - end - - --- @param #TASK_A2G self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return Core.Point#POINT_VEC2 The PointVec2 object referencing to the 2D point where the RendezVous point is located on the map. - -- @return #number The RendezVousRange that defines when the player is considered to have arrived at the RendezVous point. - function TASK_A2G:GetRendezVousPointVec2( TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteRendezVous = ProcessUnit:GetProcess( "RoutingToRendezVous", "RouteToRendezVousPoint" ) -- Actions.Act_Route#ACT_ROUTE_POINT - return ActRouteRendezVous:GetPointVec2(), ActRouteRendezVous:GetRange() - end - - - - --- @param #TASK_A2G self - -- @param Core.Zone#ZONE_BASE RendezVousZone The Zone object where the RendezVous is located on the map. - -- @param Wrapper.Unit#UNIT TaskUnit - function TASK_A2G:SetRendezVousZone( RendezVousZone, TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteRendezVous = ProcessUnit:GetProcess( "RoutingToRendezVous", "RouteToRendezVousZone" ) -- Actions.Act_Route#ACT_ROUTE_ZONE - ActRouteRendezVous:SetZone( RendezVousZone ) - end - - --- @param #TASK_A2G self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return Core.Zone#ZONE_BASE The Zone object where the RendezVous is located on the map. - function TASK_A2G:GetRendezVousZone( TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteRendezVous = ProcessUnit:GetProcess( "RoutingToRendezVous", "RouteToRendezVousZone" ) -- Actions.Act_Route#ACT_ROUTE_ZONE - return ActRouteRendezVous:GetZone() - end - - --- @param #TASK_A2G self - -- @param Core.Point#POINT_VEC2 TargetPointVec2 The PointVec2 object where the Target is located on the map. - -- @param Wrapper.Unit#UNIT TaskUnit - function TASK_A2G:SetTargetPointVec2( TargetPointVec2, TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteTarget = ProcessUnit:GetProcess( "Engaging", "RouteToTargetPoint" ) -- Actions.Act_Route#ACT_ROUTE_POINT - ActRouteTarget:SetPointVec2( TargetPointVec2 ) - end - - - --- @param #TASK_A2G self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return Core.Point#POINT_VEC2 The PointVec2 object where the Target is located on the map. - function TASK_A2G:GetTargetPointVec2( TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteTarget = ProcessUnit:GetProcess( "Engaging", "RouteToTargetPoint" ) -- Actions.Act_Route#ACT_ROUTE_POINT - return ActRouteTarget:GetPointVec2() - end - - - --- @param #TASK_A2G self - -- @param Core.Zone#ZONE_BASE TargetZone The Zone object where the Target is located on the map. - -- @param Wrapper.Unit#UNIT TaskUnit - function TASK_A2G:SetTargetZone( TargetZone, TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteTarget = ProcessUnit:GetProcess( "Engaging", "RouteToTargetZone" ) -- Actions.Act_Route#ACT_ROUTE_ZONE - ActRouteTarget:SetZone( TargetZone ) - end - - - --- @param #TASK_A2G self - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return Core.Zone#ZONE_BASE The Zone object where the Target is located on the map. - function TASK_A2G:GetTargetZone( TaskUnit ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - local ActRouteTarget = ProcessUnit:GetProcess( "Engaging", "RouteToTargetZone" ) -- Actions.Act_Route#ACT_ROUTE_ZONE - return ActRouteTarget:GetZone() - end - - --- Set a score when a target in scope of the A2G attack, has been destroyed . - -- @param #TASK_A2G self - -- @param #string Text The text to display to the player, when the target has been destroyed. - -- @param #number Score The score in points. - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return #TASK_A2G - function TASK_A2G:SetScoreOnDestroy( Text, Score, TaskUnit ) - self:F( { Text, Score, TaskUnit } ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - ProcessUnit:AddScoreProcess( "Engaging", "Account", "Account", Text, Score ) - - return self - end - - --- Set a score when all the targets in scope of the A2G attack, have been destroyed. - -- @param #TASK_A2G self - -- @param #string Text The text to display to the player, when all targets hav been destroyed. - -- @param #number Score The score in points. - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return #TASK_A2G - function TASK_A2G:SetScoreOnSuccess( Text, Score, TaskUnit ) - self:F( { Text, Score, TaskUnit } ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - ProcessUnit:AddScore( "Success", Text, Score ) - - return self - end - - --- Set a penalty when the A2G attack has failed. - -- @param #TASK_A2G self - -- @param #string Text The text to display to the player, when the A2G attack has failed. - -- @param #number Penalty The penalty in points. - -- @param Wrapper.Unit#UNIT TaskUnit - -- @return #TASK_A2G - function TASK_A2G:SetPenaltyOnFailed( Text, Penalty, TaskUnit ) - self:F( { Text, Score, TaskUnit } ) - - local ProcessUnit = self:GetUnitProcess( TaskUnit ) - - ProcessUnit:AddScore( "Failed", Text, Penalty ) - - return self - end - - -end - - -do -- TASK_SEAD - - --- The TASK_SEAD class - -- @type TASK_SEAD - -- @field Set#SET_UNIT TargetSetUnit - -- @extends Tasking.Task#TASK - TASK_SEAD = { - ClassName = "TASK_SEAD", - } - - --- Instantiates a new TASK_SEAD. - -- @param #TASK_SEAD self - -- @param Tasking.Mission#MISSION Mission - -- @param Set#SET_GROUP SetGroup The set of groups for which the Task can be assigned. - -- @param #string TaskName The name of the Task. - -- @param Set#SET_UNIT TargetSetUnit - -- @return #TASK_SEAD self - function TASK_SEAD:New( Mission, SetGroup, TaskName, TargetSetUnit ) - local self = BASE:Inherit( self, TASK_A2G:New( Mission, SetGroup, TaskName, TargetSetUnit, "SEAD" ) ) -- #TASK_SEAD - self:F() - - return self - end - -end - -do -- TASK_BAI - - --- The TASK_BAI class - -- @type TASK_BAI - -- @field Set#SET_UNIT TargetSetUnit - -- @extends Tasking.Task#TASK - TASK_BAI = { - ClassName = "TASK_BAI", - } - - --- Instantiates a new TASK_BAI. - -- @param #TASK_BAI self - -- @param Tasking.Mission#MISSION Mission - -- @param Set#SET_GROUP SetGroup The set of groups for which the Task can be assigned. - -- @param #string TaskName The name of the Task. - -- @param Set#SET_UNIT UnitSetTargets - -- @param #number TargetDistance The distance to Target when the Player is considered to have "arrived" at the engagement range. - -- @param Core.Zone#ZONE_BASE TargetZone The target zone, if known. - -- If the TargetZone parameter is specified, the player will be routed to the center of the zone where all the targets are assumed to be. - -- @return #TASK_BAI self - function TASK_BAI:New( Mission, SetGroup, TaskName, TargetSetUnit ) - local self = BASE:Inherit( self, TASK_A2G:New( Mission, SetGroup, TaskName, TargetSetUnit, "BAI" ) ) -- #TASK_BAI - self:F() - - return self - end - -end - -do -- TASK_CAS - - --- The TASK_CAS class - -- @type TASK_CAS - -- @field Set#SET_UNIT TargetSetUnit - -- @extends Tasking.Task#TASK - TASK_CAS = { - ClassName = "TASK_CAS", - } - - --- Instantiates a new TASK_CAS. - -- @param #TASK_CAS self - -- @param Tasking.Mission#MISSION Mission - -- @param Set#SET_GROUP SetGroup The set of groups for which the Task can be assigned. - -- @param #string TaskName The name of the Task. - -- @param Set#SET_UNIT UnitSetTargets - -- @param #number TargetDistance The distance to Target when the Player is considered to have "arrived" at the engagement range. - -- @param Core.Zone#ZONE_BASE TargetZone The target zone, if known. - -- If the TargetZone parameter is specified, the player will be routed to the center of the zone where all the targets are assumed to be. - -- @return #TASK_CAS self - function TASK_CAS:New( Mission, SetGroup, TaskName, TargetSetUnit ) - local self = BASE:Inherit( self, TASK_A2G:New( Mission, SetGroup, TaskName, TargetSetUnit, "CAS" ) ) -- #TASK_CAS - self:F() - - return self - end - -end --- The order of the declarations is important here. Don't touch it. - ---- Declare the event dispatcher based on the EVENT class -_EVENTDISPATCHER = EVENT:New() -- Core.Event#EVENT - ---- Declare the timer dispatcher based on the SCHEDULEDISPATCHER class -_SCHEDULEDISPATCHER = SCHEDULEDISPATCHER:New() -- Core.Timer#SCHEDULEDISPATCHER - ---- Declare the main database object, which is used internally by the MOOSE classes. -_DATABASE = DATABASE:New() -- Database#DATABASE - - - -BASE:TraceOnOff( false ) + env.info( "Moose: " .. IncludeFile .. " dynamically loaded from " .. __Moose.ProgramPath ) + return f() + end + end +end + +__Moose.ProgramPath = "Scripts/Moose/" + +__Moose.Includes = {} +__Moose.Include( 'Utilities/Routines.lua' ) +__Moose.Include( 'Utilities/Utils.lua' ) +__Moose.Include( 'Core/Base.lua' ) +__Moose.Include( 'Core/Scheduler.lua' ) +__Moose.Include( 'Core/ScheduleDispatcher.lua' ) +__Moose.Include( 'Core/Event.lua' ) +__Moose.Include( 'Core/Menu.lua' ) +__Moose.Include( 'Core/Zone.lua' ) +__Moose.Include( 'Core/Database.lua' ) +__Moose.Include( 'Core/Set.lua' ) +__Moose.Include( 'Core/Point.lua' ) +__Moose.Include( 'Core/Message.lua' ) +__Moose.Include( 'Core/Fsm.lua' ) +__Moose.Include( 'Core/Radio.lua' ) +__Moose.Include( 'Wrapper/Object.lua' ) +__Moose.Include( 'Wrapper/Identifiable.lua' ) +__Moose.Include( 'Wrapper/Positionable.lua' ) +__Moose.Include( 'Wrapper/Controllable.lua' ) +__Moose.Include( 'Wrapper/Group.lua' ) +__Moose.Include( 'Wrapper/Unit.lua' ) +__Moose.Include( 'Wrapper/Client.lua' ) +__Moose.Include( 'Wrapper/Static.lua' ) +__Moose.Include( 'Wrapper/Airbase.lua' ) +__Moose.Include( 'Wrapper/Scenery.lua' ) +__Moose.Include( 'Functional/Scoring.lua' ) +__Moose.Include( 'Functional/CleanUp.lua' ) +__Moose.Include( 'Functional/Spawn.lua' ) +__Moose.Include( 'Functional/Movement.lua' ) +__Moose.Include( 'Functional/Sead.lua' ) +__Moose.Include( 'Functional/Escort.lua' ) +__Moose.Include( 'Functional/MissileTrainer.lua' ) +__Moose.Include( 'Functional/AirbasePolice.lua' ) +__Moose.Include( 'Functional/Detection.lua' ) +__Moose.Include( 'AI/AI_Balancer.lua' ) +__Moose.Include( 'AI/AI_Patrol.lua' ) +__Moose.Include( 'AI/AI_Cap.lua' ) +__Moose.Include( 'AI/AI_Cas.lua' ) +__Moose.Include( 'AI/AI_Cargo.lua' ) +__Moose.Include( 'Actions/Act_Assign.lua' ) +__Moose.Include( 'Actions/Act_Route.lua' ) +__Moose.Include( 'Actions/Act_Account.lua' ) +__Moose.Include( 'Actions/Act_Assist.lua' ) +__Moose.Include( 'Tasking/CommandCenter.lua' ) +__Moose.Include( 'Tasking/Mission.lua' ) +__Moose.Include( 'Tasking/Task.lua' ) +__Moose.Include( 'Tasking/DetectionManager.lua' ) +__Moose.Include( 'Tasking/Task_A2G_Dispatcher.lua' ) +__Moose.Include( 'Tasking/Task_A2G.lua' ) +__Moose.Include( 'Moose.lua' ) +BASE:TraceOnOff( true ) env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Utils/lua/5.1/bin/lua.exe b/Utils/lua/5.1/bin/lua.exe deleted file mode 100644 index d8566c5159e32555fd14b14e01be0678d5dd58b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 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

!*&Hg$pDQb zCN4_`$+jbw?Vc(Rr{chlgS_5zPxJ$8itwsl0tF;q$(P)OP$q6i@mmZpu_7MW2?G?M z;wWmEXwYT3Xxt+v1q@qVl}NC5Du-D%?r<1Bd>QW6^D+x;xegU41}*~*aaAI=+f z?jcIWK(Ab^X)=J1^f2xP*DELnE3>d=fL*I8IOVqLOPooP&kYuTTXSs<4zNtY9LEpn zrK|sOIqK0l!YmwU)W-;R-6%$jsDdPl73J}$`ZczU9>hgp57&P@Figz>Vjx+Q;3N9o zI1ooClnwbwgAS+$*S{Hr&66;UZ(>VzOT3Mk3uP!TaybOS6GvwnzCfoyN8*7nkfak5 z^u|N8`Yh0XAl`vGhsS-Ej)deKYpJ)qL5~X$s2pD4vLD!C2!ApOADAYi&y(fqRMMBD z+JPMv)+1kVeIP&dKy}M#fe`PY%p(V&Ca2LT@a4hvaMyqpdE%;tpzuJv1#poum#ES3 z^BUu+#*PC!5AQ(C^zhCDJNpnto)$i#$vs3(jdH4%u0GOow5euaUP8muFdeWcn zCkFmP5`psu)`Ja+cJx47hN0Y$Ntc)rv^Oy|qnMAwB?xX)PYf%Q3`YdKaB6P=rXj#p zj%s0Qn4GppA5NVZPQc9d3@M!)h*C>D4RHOUD!ey&E}g~biT(<`JZ%kZ`hoDJ1dZI0 zb}*2}x6W*^`u+sYrB;2QJx@J}*wOKp$N>6AYQ{Izg+}XOanp2gZ(%jTH78){wCFWB zd~_95C&_)9HLf(XwqyV%*W;UpG(8ueik-WuP+AXGb%7(03SRIx7PXyVriH;p+Is~s z(ph5+He{;{s0BXp+SQgJoLD=fX*4w%4|V(z7z~=!0R%}@XMmEy*egYSiy9z&4Y3YG zBwXO)suy7(2=;>!=nrP(f!O{KKPYe`MYQNbg6XPpcJ9)fb3oCgw|J~>0*Z1w#FmX3RxpCOI}!K=4c)Il}Tmd4-Qs z=;f+r%%=c)1vSY2!wk?RrU9A+Xe!9UCs8|zR`j9P!yr&gu<)7iXaE}EriQ;2+{PcA zMF(uj7!)YV0Gz;!Qnf3AieFMe5*27_XEX}iV&k$P8}mv z2W}+7C~~!&iJ5%JP{6U#-d4Yl6*3HcXacvXEjugv!`Q=q#_YO6#s*~P!9FD7b;c0o z0dCT1>WSERNsSnI3i+_G+-^f4c`)~9|4}=;aJ={E2{g3x$T3VH2mkQ&yS~5a#*28= z%UJW??Sz3uz6aVG7zVM1EMqXr9cYOHS6s1fa6qwe4X)UgB6=u83~DsWAqiNQB(TK^ zZsid};8%~*_R)nyH#4QW$#=5qfiG|a?@NT(D*(}MGWl%iYYJJcTntd)tw_Z99Jo;j zv@08Rz>y0Wd*emWVpZk zX*R>q!Ylr17^qo*!14Q^fi$Q$P|0>QnrA{oNrvH2{|3a|xWaVR%k`<~I=O+V>Hy*w zy_>(DgJWn;rkonS)Ku=F!@of~zeWa+kRg_)?js9KLA5#*sGA1^zJYCz{DydQH53r+ zRL3G0&)eE)Orf0^9p_U3&^OfAVi=z_Nx8^6fQ zS~(C?ToxR@=TLxd(JG!xn4}IZNQ{is*B6(-uXe)4;{3u3S~2~=;{cTUEc9JJettV_ zepx-R+A*GCPDuH_B0ZPsA;M0wie>^)Qh9XV5juOh7F|ka{R>K zWJ5k;a1y>jA`g{B`o)BiO2RmUCh!hg?i6aj=3FGs0h)(Rdu+Nkh-5-W=?e_!spKZ6 zi-B*!+Q?P9#fn_6rq7BzL)YilJ@#(!m*<0+R7O28Yn{A?22^;il6$WWx=n>Em{|qSOiM z0X0c}5cNd+R`(eAY~@5I=5pRy-M!FUAcyGPl7=#2FXDgiuE?!>!&qgWUC2GUL$1~9$8NblxhP!!`d z-V|EzUm4|!_k+$}UGcUNo?vPhJ5zZH|>b=8po>MkJY}Y;|S$D+* z2M#+m3w4KNB?jmb04l?+-OVKo>9RKbycF<@Rfv6q^`PHLopw^2KoC>&*o?02B^5E8 z7i~RyEaR7>#NbID)qD^3qd)Tk$5OwKP}YyoOIFGwjgM&vkxAs~vvN0aw-Ryp(#yMoH^3rOEmRWtd#qz9w5?zXYajk%V8Ci1TkaP&6#ZHErGb0k{#x@_aM3f4WC+*Y7bg|Qy;H>n|SS^*% zswsvWodTZ(R(F~s_Y#o}9%2yb zA1)nqDc9MJ^Fi(gc4Fy4z$=q4P}s8pVb5i40JYHT^9iXXh`C7sGU_v;m=o>NyRrIA zjjS>p2_qgp9aXK$WP2#b5lZ@v`(Vi^WwHZ5K(s>|2%iJ{B?IUUduT}xJKfF8+Gf|D z6}Rp%HR3hJVLV=1IUVmX!24aNKxxknS$Y{iA&OXTttpgackf*KJ$XLsFr_hi9u;KI zj%@@O?d#7w!=qL5xM_DWXwy5S$W=o^_u_Sb6?k#FWXEt9s~(IZMjSX)ah0zPPg0uM z6>_f^g&FvW6Wk#o{-~DbV{Ed8%vEym>a^Qu+Qk?5=_7st zxHeY~JK%r9IwEF_-&ueisBSfz8bS{{@Yu!*(0V8GGO+8F=Sso5(>hKg6H!vO9oge> zFoT4*0)f1vP-7=}GN)nH+2$D`WYI1`()U>my7fRknA2Voo!gm|QlL9AQwct%7 zzfhK52)6sKhMh@`^siJB@h+nQD8h3c?&{(;SW4QDn@gsYEvG%W1wcrPp}7o_8I6&T zDW&2q^af`bagfjieNG|gAB;-}9~`JjG>p^zGf;@b3U~qZ)C*~Qk{gE|ybZht!bcHRZM#{h_-qfO?lwOw=O;QdX{B9k-oyOK&g&HY$A_@bzCfz#E*b{C&Uj#e}jkO47TlK_Pay7U8Gc#&g=4h3EOQVhv2< z%~~Qi>n~tE-TY0+^1;=>U9HAdx5iQT==WAJQfj3+F(f4x_Ka29YJ^N#3m!k<KseblOfVD{S6Le&++?&+B;af#hx!Q1Wdm}+byO({M*4#z|tn4 z2SZ^p{dCKZ)jy8Fkf8lSPiPixaA(md)puVUibcWLafp9y>sWw^{fw#evJ*JG@*Vce zEeZ^u8-dTVgX{#=PUw<`W8@~?o?|T~57>iD>?J*RxPBd` zN6z)z;K30dqN>}6qYR9D?4;=@3;Y=5JP$Ruq9z8WC-M>)`X=mE_wQAzpK{j<@4O?| z%)?iWEXN_^O%c8IlXHW9h$RPxVurHJuH@U@M@wzkA3cioaVPtZZ4X(lxgD>wgb5V? z7{+%@$W9Rhw6O*=<_vip$Vd#?D%ehU6KvzClFLBAD6+ZG`LM-Zv+QhW z5&^kFmJLX-OO2`RHFpcH9q39@i3A7AK_<| zmeOsrs_!I6P)Hg!WJoV4z1A+R@i51}v%u#BHZq1zHp?y>d%}>! z_mze|((}?ZhbGYhAiS;(vp}2}q$m8U&zo5j#_LpNydT4acBwx@c6+VKHv~T$af@z^67bY#Yu6%1@8OYYK4gwhkClLTJZIKrgOE3vb4q%Tl9pbU5AD|^DDq_3i zVe{w^kp6=p+)c-->@T`X)U*E5F0VmML3`%9EWrRxn!#Gr+2s6h>Ad7UD7 zoEDA$K%4Qp{vS~v?Keo*!1H?2%wY`OUQ1lm+l>6VA)fB&4?mbO6R5l8(QEWe80HNM z{W64|ovl6}Z)yoWMys<#Joe$8(RC^&j309)er8a!6V@_Ci*K zZCZS1LXKylO*Hg9$}|jdhy3*j%)qu#Mg==36@#I6Cn$qkn#4XzhI*#8M-mKu!7_~8 zF!JXn7A3OIdISb&x%r;3`6s6 zP>OeK8ODa4?{P?LxkDP+4JD=bF;B;!<W+Y!5G(G) zH-33)BDW$pV0lR@1;!`oKM2E?+mwk|R60VBJ3>#>jx!(iB$<%qIV5)crZ95#c?e4b zWH}7}$=ean!wV=bC==n(q#ZI`8Y^5H8+^G~E%qsbI*19-u^kwL3(FeFOf0<@G~0+H z#3`cds;bDAuM= zxvPV4f!sJAJovHifXxY029mZ*aD|O zVEdD+o4=!%NaJh)7C~uvjK?6PBwi`)Z2m4Zd1&*og#9eTb;N?b7`y?PzdxJ+OZovK zx#A;=09^UrE!3?u zn2<7PiKD++9JM>x>E`cXU8ivoup`N*o4;aO!Z|kCfs%-P9;<1b*u|dWtVA~1?)z85 zT7GJ*1w-P485Q>GFXGv)gjGH>BKcD`IEI=ncSOLg$SeB%19gKX4&8?ZS3&^0^H_Y< z;QAi=$soG-wVmzt6D-k@!dZ_{Ss5L9;f$Vk8tL~&+GeCDjZ`(#<3`$Qq=${P#Yp!W zX_JxeHqu5TtuxZFk#058%|^P>NH-YidLvzDq;DDNY9oE!NMAA1N+Yc>QooU|Fw*5l zy2MC}jC6sK<{0S|Bb{udSw`wH(hMU_H_~xNnrfseMmow!T}J9O(j+5IG*X9=+Ktp^ zq*f!f7^z^S7fu^;7Km51e-T(%hej&%X^7#Z$3A`Udi; zH*HTx2Ufq0NPob)l3Um(NV{SR=H9vNG4X>gxnl%=!4ehUcj620kKdkr9z*s(^SA6= zb8Et9>;Np5jZysE+I#|eU!zP-Xag$zNNmRfm(9Jen6}{XuzmAa?(HSh-TQpgLYYy# zkfpn=G&l`CcX+#$RlXJO3h!J?_SBK>DAX;B`9=Bvfn`8M+0 zGr)^f@M0W>P&y_Q*da_R=V=C_lcN~rzAM}pmrlh_ZdXS;d4}En?_4%Z{6NJC0N-4Y zZ*ix%#OJ;Q4~P`;*#o$uAqSr0H;DD&-u=D+yz}LU9wxVg$(@|ZjU7Kk{sr?ZwHB+y z$8Uyf8)vVUdOosq!91!WS=*;k|ALlxQ+QA*C%kz0TNnJ1yrB|=+&oS zxyAh{ob>(01K`A3OGNjlzJY8%tGy9(?$xlFJDEn(N^Tj}g=U(8>q|7&(tILDQYG7! ze0Ep^&C$dm%>gzWoYj-)$UH+2XYo`&&wd=gd*oE@G^-Cygna?KYo(d`A#Y3gYWR)V zI3)kwODmSd5H6A82eMND45`%P!Hr)$2V+XVzV0Ff?Oe=Kf8$g+PIe*4EQqg$Bi{na zdyc<(@Iafo=vhM_BKu?V=j&_rU7Xf~{ogPIt9OR$?w^zgg;CE-9*B^B$R!%(7ytA1 z{|pCihhX8x<7}HCEP||F|#;SQZyM7eDgrg87njVTp6mV#ztrSt1oLT=ZzNump)D=rHr=6%`@V zc|Fg(-Z^SyNwP4$L|U+Lk#K!R!Q#R@t``OfQ*tNFxqIr}GlcQoS5tiRoVScg8*_`( znYnn$Q^gA(eN1wW%1m~qx!vPNk4;S*>jcP{#l?@NICF9{N8i72u`qtr{KZc^F>lcV zC)zAXMh~9!Ei5h&q{WM!$bQN>ulP~l69tQ;5~sA-Su($P;Sxze9)5yq^k|5|S2FL> zg4@tz=j_Exq=kzYmE=2T>tN2=fGf$*A2VRW(s>Ju<~>qW;51->wcxe^PUq+XaA2O~ zbQUZxnD3M5j`-oco^r1zfFkE2h|%dZ=mM3G6wfPu%6UCybBKjb{SP!26g#=R=FOKD zE-i3Av3Nm&b6z23>-crlybrwUQlo0gV~dwLmlhP4fPP>oTwMIbJn9P(FggY!Eneb$ z42C@G@Glu9qZav!ijsw#`|qAQW8xg|tek06y;En*$+~;e-7}_R@Oy+k59^=S zIeOY;q_KQTE0MRv$j?EVYFyVFb$i49uU@Y)aQKWg2kA(B1mnIbzZZ=U^<4k79cQn; z#LE16e;+;ulViYmW}}a2%Y%;{pX11HHS)qp3BJK--;aC3ZRv%-Kf$8BcblX)j@454DjdPVzzp20T{8N9-8Isj} zr=_d(jVngKk}>w7Nx5_{2!4E=6QIecNE7{PLV!H|kIecod`gY`ODAmxyvw7PKd7gk z7xlEFR!@K3$y0w|4B8WfrpxE^G_e17JT3U>BTAifR-5lasxF;;E2VF~a@7+^Jzu?^ z`X%wg)_wNN_PgEV-}yf4 zNAc~kZ~X3sPpt3F9+|m#{en^b8flna`p;bc3w zo_#3e!;-Qi(}wykT^YHUPycVtzmqaEZ*z{CG&MKbIc`k)7(UYb@?puV6b&U?O@A20~3+$!6)OsX!LWW1QRshH7Gtyjw8Hzly`qL z$|r}+!JcOZTM+NX+n(_mh5VsZ4wRHvfzP;~VpYSQ1M;1h5+9e|E$_a@){IWki@R3gmd*MhpGE1h^wa)iS=jm|T*DG_Hdji1 zEp6c?KEdPO=?}l_n+?na^~UDIp%+48!7RAgs$BK{EpuK5Vz=71CGYlS|A_7h%m!yJ z32baK%^YIz zaZ%$-U6gO~d{&;*pKHf(rZ8Mw!Ps$F{IRMgfA>;q3dDvlJm2N;$v8UU9j5fwDq`0A z=JImO+{H(C!ndoMFEks7&IE7t>>^_6o4rcN5*_XY$C3MLwH$GLU9*Xmy_SwNA9ig@ z>~BBlA))rcYW_sC!-3DsO%KL;A>BSq8>`(mD!L=aLleBr^Vh2T2oV5hgW;J=bhySq z^<+&|bRlz^PLY~{Z>z0doN!}RhklL7MC9}$g~Z23;Y(o>Lod_ugj%NOadbHui9 zrF8725|6^NcZ7-YvBlwR2zE){+kk9G?O2JgUM%a@kGX@Y-gXGrVV^08UOQ-4Vt&Wg z%HCJ4KOE-H`nWB&ycd~%WD?vvIyd``iS@E+Mp(n@Xdkk8RJ{WsCcbupc1pA(@3L}< z4NJ_QhW0rj7~f?*&0ai)QFvRivBRb4Vh-LX<%JktbIu7nvC@sWUZ}h#P-BW_JvJa8 zEZFvM+`f#w8*6p6hF|Xzhdvq>7cyg?L-tW*&3Os=Mm8$`A~w1Y-hcbVbp1qCKT#`? z(and$^khOjduyY1yWMtsO18a^dvE^4l~psrDbuR!`HoXcC2XxK2PQ;B-3`dW`)_mGyO;joa@&)0RZM^1Q?jgkHyD|!oY%~roOM}NTEpy-91om$ zFR^kTypqpYzwRb(ML0+O%zxEaAhI9icG&j!C`Epcj!KL+@j~yaj?rOD{N*G#3;$PK ze)rs09hW*_^J%#uIpp4!D9X1%%fc<&EU*#r7m_3!%3jZVc@ z&LdyA%eEhP<-Id{jLo)U9wBR_QV~Cred7#rzjfuR-x0(*zE!vH_F385jTkv;XNq>F zXZVg6<8ao}#D24XOFPHw+6h_tMHE@1L$q^nw{1UP9lKehUUSgBBUlv`dr`O1-2yU0 z_t^Fbsm+eQ>*7zir4YE*FZ_h9M*i1NQ{u0=`)vCTcTQ#>aL#ex_F`bfs+{2?)__N6 ze;x5E5p!-c{xVlNht0~FMEtp1-(Isu^g9Cffy?f*=~u#28j$kx2y442QB!)9+38x=b_246Xz zRoj{bHBR9*XFTzzX=HYSD<8D&H9mT9&qp!+9UtEaS!;YI9J1EByw!&^)@#t0x$z#p zn{mn9Uu0|#i6NmkpO`e=6ln7^zKFQMqK^ZNWB5=5*S*h|TXX~Ds()`Bf@a3|xNTqI zqdT)Vhg+8G=X_cYTRVKHW{;IMFM+-LZTkjF$6g8qY_`r`r;vB`M&pt(2}Is}(CykA z8{!fU$wAqNy1)URhbg7~%HDfNC4lj$6^O4KhqsMVE|J{{PC}DeCE8XD(bNU5+~=uIrvkQ-Z(f5m7H-ztRCm4-x@T-5uKa>D-PK9tDX$;XODay zRQ0YvB=WI7qm!lR@)+_T6M4=r2@V3%ZU^+!&^I*Jbu7^5=K>+KuNROD{*cdOJb83l zo_nrp?tPX{R#n9qrT+uS4gJWrFZbjZ#mR2{NB?=XA%70Jchu-PisJ_XU?D$^?=bX8xZTl)|m#dNgO!G|qXXK!5%a3n6^Ys}+ zpKoV+i!XVV4>jzC_}W+A3y6Sov<-jdUAl_a`7h39 z&`R)@uS3w5{HC> z0|vkbFboRdb}$R}f^UFFzya_KI0AkFPJrKoKY{Z=uHZizKWGPCpdV}kIWPrwgE=q{ z4uT`#I5-U!K=3?14cb5_=mVQT0qh2IU>-aLj)3FfG*|#jSWmewuF1P^O@66*(z$dg z9Ujk?vSb+!l8Q){n>wo^k~>#VRv&JPOl3>4@qCi}F}0#8njK4pbNOPL)05msv*X25 zl%%r|+oGWiq^DfM=BDU)I^FMN>#5yMz3EceNi^&y&oHFk5=wufSc*tqq*5Qy)Ys-y z6S;JsB-xoZg(lsHoD?>G7)Y-oIVqdSk#SZ(+%r657G$$+OQ#}JNpkhJq}3aGRk3Gf zc(6a6NUbC#E;2jV7{Vl3}Sr)JKQo$%*m!XoC5zrCx}~ z(_@p_ah6xz=+rZk52;j=S}|RUCklmlX-5IdeJY+zv(idEt>WaMj^*)Z70-~9S4fmb zRC7~2n;+(v(I|_F63JnAHpTN}M&z+3Y0PQ4S0{$^<0Unq$!Ij~#kk97`Hv$t=Elkp z+jJ(An<(=7lhzp~QB>P>#w5CCRF1oeQc{hYvZ!v;8EiUXx;;IjM~BJ4+@35d^_V87GFjL`?9^mknxP!h4BQb_&*@@z z%UB}E{-IHLas-P!X6{7azmmIL8cm*%JN_y42VKhN^4nSQvwE^T0rk43JHr_aa97GR z1oS4Uoc;0SNIJQV#8$F_`2j+QW-@*yUS8qUa~R<8L?%PKN`0_G%iv||Lr#4xyr^=junKbB0e#_S7Dz2I>2T{ow0(osv2rVGzC zhPH(jlg|{TT{NG`rgOZ!eYRXDzg3=p-qf>W#Wai0b%Rqcq9{^8m5Q1=sn13;I z)BP&v9*amO87zsdO0D*2nQ{|qjYpFV-z`QzYdu=d-?9nCbDiI(*LPzO{P2DTuDEI(c)xsyyQ^ZslS_1J=QM9`o9FLcAfLp0$Ih2 o*E`XG{e|%KMx$t+ho3P-@S!98z5m#L`NW{cOFDpRseMMqQwxbdB4w`b2c0F-p~90 z%SW?&&dfaX%rnnCzvh|QtFG_x_&gqupZ^C2Jf2N_%D-y$_kaJ>O7X}uH;?o@HT+L! zZSv0k(^>PD-qsvhzT(a=uekZ&BVW4tjyvv5M80@yWJU6h$ZdB-YOZdK{QI4^+&byx zlSf1y&<(X7&us4q`{`>1p1b&V&{K5IN#24}Jx_Q&p05^oJp6Z4hywY)lXsrJCF(ox z1#fvHpXy(){qopdJ~b|nCt|mg2GX8?>f?t6p8HPX;fVr|HC(;^{67Z^JP)1x`9<>9 z-&5cz{+#08|0?i2C5ZhG|0X4FU7eupFaJp;K}g1$8-(5HCQrjnlWw^=aWjtrc_m|K zcqam`_LO%{T47gQ_65p&s8`A7Mn3cYReP3KPr7yK;w8+EeLr#b{324BIZ*ZP`J8$yZe4cgmpt|y9;AFE_1Au;-gE);|Kq<#{oP`7 zjK8CQNor3b_9G8p(hEL`y}Ii3^hTkF=}UDc0s}pE9X;!hy}B}MgrnAnk9$4ch0;)} zb^FzVw$A;v*Q0MMUbwX*{nU9ef-$$)upNI&jP#Ei0WvioD6@|+DWrir}j{% zzO6*t*!l6^t>FK^)c+3ksk*fz{~z>&dSQlrL(j1#*6*leY}McOD>Z#p%3j9n@C+tTL{CCH5x)@W56gdiq>Gw4RH+8;x zY{`_lffat?52I&mTmJ`p2L|q~ZRywi-tr{xz$^E;YKR-Bc(; zn6@B2ZGl_=L-&iz@BKxM$*Wse7kLuV)XtV#ZDYf**zR>xO=hF(4SEegxlNtS@j}HG zshws+sAc?=nbCEpnld}6az7P~`aWa2j0!?I_%t!a{|V$iA}+-e!utCwtn^U z{M7!I@n&6#@hTLVup`#fa<*9)?t07beId3W(Cjl71U890(6`CdIrI_gqsM3pv|LuP)4Vp29S%R# zP?zz)APw{`uXMlHcuC(9GOi7n<*|&p+Arl_FxL2ucp&+r2%)_3(%!E<-B8JAV2ROC zx%C8mq#Ozcpt?DIfiW{Tkq*6-yqDz=51IAVvHF@7!oJq?%b0jR|Me8Z6y}HX#pKZA zfzS|n&dkW9Oq?F<>hlYK%PO25^{4i%K2P|0ZqS?-h;3Op#-Sgx)?M8PBu}ho#Svp} zV5`2xD;&u;Sr$UR8`Ok{jlI@up9~C`vt(t(b~Tqsxp}d9k00uo)BB7S2aS9FZcMjg zyH;3wCS=Tl6&AY_mE#A%1;Hu=xCd=;u^q;)<})3Aw&El6`d;FCV?!N}Kq6rJQ$Kv;*pjWA_R@Er{1N_<_HXqM3{>pVR|kra{XIGR z!Sqz@5ox16yoI+*I`ntTm|S81a_b42(7?A@R&8QjS|;5e6{1>WUh&Wn?JLdnZDoV- z-2R$rY~vdOU)}QQeO~QbohWL=(dXb7r@q+`(EAIthr0CsVd(YYJEXS5=nnt6^b>I~ zFDg7ef`&%Fv7N62#|8%4K2<~-=k(3=gpEWr#B^s4wt74ZD>{Xz^W>YWzve}wfOrlN z04`PVelrN~-xNG!OJY(*r#Ukan-fSB*@6t{ewMcIg0*O$M@*83F-gMUj+o<%7&7hhi_yW2JHvvj|3=X4kp`p_!HG?aUnKec}d2Q zJSBBBF}+(X21kj&|3l^MjbCP^+cSCOLpNH9=#n=|NQ5GbT8@_OsnTnoYH0 z{nHAxu>t$(zvW!Lzc3Mk9g}rp(KrB@Bx4@ioy>vsv^lb0J(PpMLAMC-I-^0^g6i0U8cn~C@uS(M z)Rk)OUz6{yk&0zimBcdn6N7~fR&XvALZ%YrDwh7W#(7> z#@ax!u`EzxUW1+uL@3jb4^TV#H)Y+(D%I=6y0KNQYwyv;CgKGSCaIN>)~u_~$fvSL zn6ZkTI?kmB7SSH=GDg59%4`%a5q;;_UjbDj?!t-uBkR{Su&~plI5vGb3Pse(3HDr$ z-nP*A{fD44%V8mZdTuWwFsMX(^NS9pKckQIcO%SqISe!z?yp3EtpWTh@bD1$eT zVgGV7Kt6vx?)#lukIEPN%z6}SH2^+A$XG6@iAhkHC=?NQj)-9Kv`bwRT42~d1;oO~ zS?Q70*52_5@6i`~^BkYgvtM8Q!0BKZyxkv2OxOF15@(2CIw-#4L;WF8fV9;?m{JWu zyjYQPZZ%A~SpgW@Y?^I&&AJ9-uHTpz7*gpe6}WNmIblAh3P#G~715QRi6tEo_A_Qj zgI2?z;fmW?Y7zi)*ig;qiTw9*ugib8erG8E-T3SOiT~0Ky^8&W^unoc{YiDk`c*9G z>dVjYk4ax5bi31a2c@Ao%$8Ap>w{-ufu>$_&PN7Pq|c}qt6eCu8nbJK)dZR|`%*g-)6JQ^HUk@fP9%keuQfxdoyN>SV!_dA_z~Bb9_2~QWPWW= z0`0SJF;2r|XMXefzu5G+jHyr!E7nK;L?wK=q^CCz=z0HmVw_ISIrnc9dIpp!dBoqr6I85FdXVAdWZf(k4k7U8(7uA ztWWJpE;i>x@B%QKQQ&1C?-9S8kOab8R5SwJ|HLVM;{VBdVD*+x*u~$VRXvSvj}IhH z(zjLS=!MfdCopAZV8tQW!Y;rKz2rT}J|{9^2f?i&@*>Y(rz5q~B0YdiJ)dQ;%ftqW zmiiA03d)2J;thy+4_N;#5CiCPh*zIp8!Zw1F$)+&kXJP_7OUlL z#0LUe6`;xI$cVO;D;;H{`D_3uA^U7D{)K;{=8qUgxj8qW-_utl<1cgN7cRC~y2*Fx zV{&dpcAu5fCl;^~v<ZCWC=G(&zRohryXfk5KRR^ z4Lq>O8jM*D_B`9q^Nd;Z?C0)y^}lRu&vx6)c#RRSrc6C9>3}NMBZM*CHbb0W4cPenWpXU2l$vZCQ1((KTVWvCEiMoju)|R)P1}^&U^_nlYZl*=A!kl?m@y zM8X$>M+f+TJU&x4(;?HQh?%Jt6n6|{CX3Z{0)MD@IWuqFbs_CKRlt^ppRaHJbO=5p zAfyZ(3HLfHr1o*8Ku6iqByYbV7qH4(9}@pn_A^@#Epx==RE9wF7ciD5)&<3q{&+tF zB^IY|4H4JUEw5sy!@JmAT;$r&YE~6}uR|y~vz*$WJZLTo@EYb&K7}y1#6PXC{|q}K zZrk-f+tkbpEV}-NlPd+R0>pz^h9&Liks@-c% z%rM0gvc;$kMq$@7(__8DOYETWJW4FxtT69ZK|DgaD|#h>G*bddiZKax*vrMz>vL%w7;VzY&Lw7Uj7N;-?y%4ebxpw9Orktdc)c{etN=(BsO}wtZ{9}2AHhG znXw&-)4Sd%YJ2mF&Vd01x$TY4D?FazyNt2aZF|$xxz5vdut?u^+VCx^T)lVJ0|RL? zwl^9tB`#6?^^5>j(abNhR?Q+XGlP%h440$PffE`@H+YR}OWhey*NKV@d-fcY-Mr8Mf|Adms4}=j z1_g!zcX$un&UoZCueM~SLBj){eQTqWw5MyLlb#ALp?cZAWzn+zH$+SMoCLbLo)qJW z^HmkK+M5*LMHokBDNtN{w$b#!FtAHd*k#%$>FYi*w&-tO(Yo1Y7r*H>UNE+FSw%RH zHct@9Jhf9lSUtSQ@GU&ipS1N4lPq+tT>tTI?+eDhu488!J1X{0*fCYuw&fJFfD!wP zp#W>mI`u|S8`-v1%DUbf+4jbOaN7&Uc(s0A#pcMf`PZhG24RS9;}ujZ+y>1`l4obH zbLq|60w`Aa2gV^wHdDpom}0zU4ug!<#t~sa{}Wx-$P3jH>KjPkQ0^sS$?y=%!?zlJ z)+XZacu!A3%bM(yXk4|HZMK|$t??q=zbqVCX4V(u?_h8Eql(R0c@jBrS$3uoQBqHh; za~I0pc^i~#EH>)G*~gvnr|Zi8_x9r5xa}`;+Xt1hRr=tRquafS;kj)&ZDak#v0ZBq z>r10v^{U-nJp4|oCnth>-^j$Jj%!Is_!{+liQYdlQSjkbn8$C9VsZ(ar-NTJM}ZZ6wPCAyyvC?*k7RY__)Titxf^a9 zGyJu#L#R(B5gG{oIt$yTCxh@4nQACzgPpb*1|6T|`y)30-oPeqL$K?uacs4~$i-c6 zjywr|9{wss4RyU$H2l?tnH6k^Em8Z!B8k|)pkfUYX-a)bOE9%FIaw{;-7Tf8&w8lf z`bq(zh|HnkkEUl|CIU2QrPMOAC6QTdE)1rZnV*QJ`?LO!EA&r&$<4-}yWTG{KGZgT z7(24|ad{e-Zt=$Y*Zq*b>rtNrvF-Oh*L83l@>`~+%ecyueO&FQ<#{&J_jvkd7Fi|Y zSlLbv+ijp@eJXP#9!_rkV}F)1Xtg0{o|K;3j}yLX4w3m~EDEZbjX?yK*8X>ZVyda{ z#Q*TaC2XmdJx`)x{SuL-6UG~|9;TyipUfnYD}7sOE}n$S7mUi~UFLPxcDFA`ExQWx z&Lt#$@ik|VJL^cgv|^uu&0NYvHj*kaQr}f*JiGcKHW;8U87<`6ry?pM{wz^qp7#+9u;gtTki1{%*MlRGEeK48R<% z_Xk(agwP!}p9*FfNCb(pfNkoJzo`OssabIF05#9KZu_oYBP`SxMG+B8Qv`6m^gN4^w6VOty-eFzY9)CnRabD0o0$B&Nwe??iO)*t9bzkGz&el8uG zO(FA+aO{xQ&W@o6)e!ke>V;QT!{z{oQxWiZBG1XP)nFQctafzcA^t`p81=&lQ^k0N_<*xrt?m2n6l z=M$A@;3?rvp}SPwEPt}=#k6Hya6!6G%z3}HnT@Z z^LYTCEzh5n!OV&pN7B>0MqHGgv6o%Bg+NLZjoNEf0QfWcG&X$4Ul-3@80y;se@ZYh z#(kl7WkfKDLyfB%i-!`2wT*Qb6Dx>yt=((%8n0R(z`C$sc3-}|fJ76C?KkVgvHDP= zAiF`vDx}U-&`XE(UuoWeq)uRsI{kM;8j}P8e`5Kn@tD`mS+|e6iFRPY5m*+#O&j&pE|!(kqvk08}P!N#VRxjZ`1c>Qu97neyMnZ@F!Cs z(+|BOB6I%Ev~~L=QQC;JV=MuF<+iil{))Z5-FN{HP>&UA?UFi}Ejh6Fz~1aw{y#;1 z3%c;-DLv!;iud$`|I$+L3p|I&qW@!-(Y0()$A1{cL4ORBzi*`3x*rTCJ=O5ya1D zjx+EBd-okw>+8V5*AG6beQm3}TL^>O!$Bkl4zSQ(Y4v)tf7|!|zMTi&c>UmkeUIK# zq_uySy8F7QQu?=JB0HsGy3OmsCXBqclfR{}y^;O-35^modhJ-YuenEb@Bd=Bb zAOUI6{}NY1uvmAYMi9a^M1hn<@>`4LO_#iZJrb)$#A zhx5+PHIVh1XJ4;XM!&2i{NRzRW}&MsctP=dRn*!dl3clqfplDXjfiqb$!8_rum)d z?l23CE)^ylqqUP~Xs>+6{FrE48_zMk&MbiS^6(d*DN?a>^Ek?K=x<}~D19b!it=Y< z?o}0>uOaV>Dadx82v5~l&^Dh+1)<1Yfb4MF(w}O$Vemz^hw%x|Mc5HJSB&VcH^vR$ zVJ8X~DONv5BdWMG|Ub71lazr7WF~~0l&<=U1?Fr#;|T< z&lSh0KnXuM_&On14IVVA8WTbkuIgMZlAv`x46a`x%JPmtx1;}^5C;62zE)K4Ms@+S zuM7QbRs1t~UN6s0jr-o$->s1~h6Zdvp2+6Q0y?Q;R>WGEET1SgzLts_Ni14XhIUJy z1*Md>jvxZidlm>jlzO68`(c+A2AH9=VU{I=U(eczBwaWBkF*7)quW6)WJD?%Ur-8_yy*t z?xpWS-`@$o-99mLv%hfpvD+upoc)gbtmLgVmR-%vH9+XF?frv1NVj*|_1lZRq{!{m9wO>Ejs~`2jDZ316gQq`1F(9S32D55#@R00Uie)5 z@oC8_D8f!!)qs)JTqx{x{U(Mle2yU+w$brhlNhh;-w;!46pI+i8F9-_q0F&<^Wrml z--x6p3E6wC|B|Vz3uJ#)vC}xh^N(1m*+);vx3Tf7Av_{6Aap9Rk(?@D0Mohb=o6e_ zN1xU%{w)1quc$A0yX^dUl!Q@{^~s{}6tW>#_1_9Z2xm1F8%_2=>LPC0m6UbImHloH zgf5kgQ%{-AB4Bd%%Fwb!iqi`drw)C6KF*YDpTeujH-t}<`?Eh>(xIrFStQJ=>^YW2 zMrv8oBdZ*il6@+nkNEG;z*e+PZlkSQE+V}D&g9Da zV(UNoGl4wQyc+c$kqJ=cOqZ0q@E-y`ylabs!G1&@xc!WhMR=`HMy=ud=pp;d`PXhf zGnJhyY$8FOdMtw3P^a2Npr@A(koW(uGe165(aFJs35N)?V(6!@_Y%22tE=re0d!Bx zRIy%>`2l^q7me>C!KeRhdbj?M@Hm8fRpOU@YJbgGh5Ka7aPSWeHWpC1hBwnNucm!W zq0zj~udg9x^E~tP)-`NokDn4qTwqQk`ysSYW$_n)+}0fZ6+bK-d`4$a3ugD^%85m! ziS_Q&JHyrwp-rlDb;N8WtKGbYJk~JVm?xY5`v%W{sqHW74ah6#ukxq#;{}N+`f*?4 ztkizBLzM`){seicNS49#AV;6~CeP3|7R0)=?|16GUddYC%JV{Ad`~6JwZ8r7lmLa< zHv~TRWVcLCjagj=b&6r2h|#5OoH47aU%UT5A+WY_@l5;`_;Ni~wYCuz%Bw34OF!uK zlAjv;aNSHJtG`v)dYlYfit1yFB@?oG-51Qo<*|JUKYPBV%zY%)*>aP4H9@krPv|OS zYz3&F0Lfcd=*Pz=u6FD#bRIj6?s}qKh*iW6>LY%r$fjYYL_b!vYMi3OO9%CXGZHU! zWyhuVYwf>6H2_YuCJ<;9A-9nOL@YvW!|CW=vw~fee*&cIy&`sjGTO$S`tftY#lPzQ z7_8CK#)6Tk{A8m~@0^98udH|vBull8tSidO($|(6uWK8BAe%`rlIUv>@1y#`qV+Y= zD~!GRL0=UD?I`cnc(nU=p}?vNwA7P)cD+9`{Z+5$(}9YkfJMl5T7GF!ptXxDi`~L>uf#~laLb59O(1(*gz9~$PmL5RVG3-Ek zzSr36?TJ0FeXlD<%%0h9@6y^w(M21Z8=|8*(?ggdb9^6ivuuzZNn12Wh(g7(YiKz1(ScP z4L6`4lC5##Ydrgy;VB4cZG*&>KxevC%2BCOOJ5`}NN(_Vu&Gj?zF~|f22*Pr#_=A> zQHdZ8rE9(EV2T;_9QEHnMN1tQKV`P|iCQ1o5l8)Py!;0*p<-;yy@v-G;Oj#2+r63N zK+Dln#**68!r-wGdu*~lM(fm3Ep?MLsP!^L*3&ly4; zN^qyVqSJUWJ@0Fu4AN_av&C_C@|3nWgkQux$Drl)E=$9)t*N= zF~ok3+FzCo4Niqk_p>645*JKa6i(b~#!Dvp$Q}Z*MX7;JWq&!gq-8!Ec0=XAM@};( z|7jU+*I8Z|SvZ(dYxsu?N_}ORLW59lg10p|n>^U2sbbT=j z*?1YF#8G-BX05_aOTEWZGF7iy>J9n6TnJKZWFSR}^*4gBs!xP}dWP4vLC4U&v6ULt z9Lp}&Qe$8YT7`{ccr%X(u9AeH_n)-tLc$t1F;oX1v#A755~>}MzWn!*e2i^W{p=j- zaJ*p~L2N}3r#>6~n`0Cm-R4bS#)2wiLG}8E$%+N@?JuN> zSzVKFKS(~|WOv&V(3Dr@%GvH0jz?~!IyrFIQf@9P&7M8zFPJkWyUiTldN*9?n>anJ zA1cO<8P19SzpE5N5-ZLkQzy2&`N)J_zzKKt`)=Fvt6%=|mqy)9Hg<&E;g;^|o0u&- z;V--0oe%eXhlqVS;~@@1^-adUbhw(lo^(|Y(ZqghBQhe@X*{18Cut>|gnrBKJJZ0v zCnR7U;}vXgSc*?h@Xu`cLeZRumJh#7;2*M@6nwKKkT{dnAM@(oTsPiV&BY&)9CUS` zBngopbU4JWiM~xT93&sihA(16?EtXVQr|lHa;^PsY%#O;CJ}*~v0a?u_HziR z6r%fwl&F@oSximE488_wt2U6t5Ysktyt7yqD1xwkJH*4N5YHhzI6t~IyJ~`V|36u8 zurz^=r{E{iM{z-*&R)~)r>ci{Mfhl`3G(19@H6B)8WyVn#w%vyOb|>@mp!Et>##Ug z;ARHfj2$S4bi>~{`?hkp-glOkdXp~GwUTUD+?64lXs4k>f3@`;k<*<DuTeYFgkar&3Yh}bLGahtmMpnbW*GGI(5(@QpYalR1`6SnC6A#KBN1r!UB zcTV%!PIE&wPfSU%8P~dwqo3_Rr!I}16ry3x`pMdGnpKgPYJP7b8V3N@$L{=>l8 zs4aHT{tn_iQzI*s^_x1XJf6f!U_thgRU&~Asm=LFHOSkg_SoEd7KD=bm@~-Gj7VR# zA@k~xIk(EZvKq_$s)#YajU0rH7~Z zqwGaRUEvxkdW6b{MBmGPxYGCCwW03-x4X6klm<50-&Gz{cWv;$D9JwP^1^-^A_9=b z8+!O^`}cxIZQxM_LN=RRB-*8yi|9pY$b<;8${R3O_sT5?L^e;ON=H7)%dsPUW$biR3O|MivifJ?)72L zWrk@uWoh}^-E@b>NA}pKTR1-!$h-?)IeC8~GgWOcZXXy`w0S*{^as z&4x1TFp&~URPvm&UuVa+u)5870vx~Wi$_F?7~2yP1N0X%6oZi6C43RF> zL5|0mbJPi$u?DXwAgI>RXExdky5-W`br`_0QwV@3u&!kDfKLIBK=4@mU<}f|%1_|x)qdvrZb&F@89`B1FV9&MMe&d$)=HIz1URKc&`jX`#*^gD_L zqHkM{5Ri=v2OdXpyvhPQpkja*N@TRjFNaza!+sP2qUM}!O@1KbkSQm!kxrx%^0(fhv>OI#WB3CS`Qt zLC-AU;sm)Oph}&SH%}vRDzPBe2RcuJr{jBr0FS^Bq>L3<_yD;G6S^S~3*9EI_Y z>R$5jI*bpq2W&}YpC=Y88)t)7QI(e#FvAbaJp#^k0@}uz1(WLw5~Ys#kfcL3^o#@g zIaZOxP~2N#+D>`f%!qR z_6bRop0?bq{m8z?$F<*_fNy#RCsZQoJBy|=x7y0PWF}AL(g-q+-(iC?GT~J(3ENFe zz1_wgWkyR0mhH$1d%fJ+a*A0O;VjY-v#Hc<3CH?ZMU=efgvmbd%z*kBVLxy(pg7jQ z@@?AHky0nB)rMeDz&vb>sQd2N(o+x+6<4+p}1<>@-Fd3)(p ztk)4ME7MggS(?^$wCj4uXT(d5E$N!cmeE{3;gFZz9Z6ELdmoe+w2`{388cqavJr`v z_E&e|_X-Xd0&9r88kDc(dz$g(tj@8<@*2HU7~Yn2%tzhL9DD3tA7`64q_1A!Ni>;Y z!+wBdSI7(ro*$rpW$TwX0FSD>MR2P2bo|n`HRX{x9?$l8%)7*hSFSq;INkAtkfA%i zTs~+q(6E5SXA!Q}&*+cshKcdgsqb7f%(JdXkP!&d&rVh!XFP2Ety1~18_TCk@w!XA zop#@T>p!UG^xLAi^kTSF+FvJbbv(>55=Nj)YKTC0HA$9cdGb&68H+h!&MhN)Gs@c| z(MlOx=03(o4A6gydP?vl&Dj6?tHKF`D{Ph<;i%CZuqG{rey+C+3ge$R0P5%YW^uE(K z_gH<{d7C{u`j*J%JWQHq*IowatB~_VeDx3PLF3fb%UcZ5dgrY*hShGY4z;eU_uvJc zHOOzWz*b9P&G)fDXVhb_#rCetU`iNrV4{ewv443yaeTD;6;tO^j9H z#_z&7Hp-m4T$#JSM|@Gjs7LE26TSQ%b5L_KaSTS`nphPvxFWn$cT4Ok=Wh?R?6KCbaQK|AVYUxrp$Hi9Nt8JHr%?LlHjiiG?Y8;Yod`>XX(AGAd1akKWC_NJ zZ8x?wpNHsfu;-7nTGxLh$7pA=p16N0Y|JciJSMiYvMP4$Uz%Sf|Xc6dq{u(3QSF%2!n4F(?bE*0aN*vO)*o23p0 z#dc{M8t~6~F%xU6#CLl{ysO!C!mBIO_lD3b-o99z%&qgKXE^{DwY_~?wAmLstqE!y zn`X%kR(~~{g3xJ!u{yvxk?v~YK#xImjX`&>4BJ|XH7l=KldkRA7DfzcqR=?qd5g6VIm)x^=OhJZlV zQk!WF^6K;-(=@={bz79AMlNWe5+L=50;&$)8K;jRIH`dUe0FOA6=AWQmQd{ZWG}^XU^q%KVNI`h%LFoi{S*4VI|Kwh${arC*V+%u zJOOJW4ZtcQi+FW)Y&9}E0zjE43Cfa0wVR`1?DA~rlNQVD`x^P`sgMK(QR~)QqCyy{ zVSRj{>uo;{>NI$iPBOL)M*`Xy)iCYw3BGA1{f0Vs(i? z@&)5VIHL?=Do;p=TIXoXHOo{#3a0cev+&Lu;K+cX(|*PQ(=hWMW-7Il<8f;OiP=UU zaY8y`-V)HDU+)YE^|C%XP2UqTm-lg*oJjsP0dw`c#>K`xemr;M9)c#lLfY7$*1Zht zL_jMl?1rH>7G{vyux~dsB)lR@8?drCGP3cqq(e}5MQb&2UuRjU4WP_7s4fFw9M(A$ z4qaRAKLJ8U&fn-;{IWvw1e%~Et?rdHpWBOZaWjYA{&G^!t+aqjnF(SLu%94g68<1> zomr78LMB%7t8iha4j`m zUnFi9k$z;qobe{6Y>)E=|JRP1&gO(>V-Q;kp%&@t^WD~|)Lad_rWik&>%XoxJ{|uF zN#~B6?gRzvJ1i@V@pA#4ea1y<9%Ce8OK(4uleCS2?4wFv3dsEPCr*B$U??+5;v@E8 zC97n~)NYU1f-8edrta`0u3Iwopl8*sie(*ve3t4raUrW@iGF*f*Et1!GM11sf|M04 zW3pdl{;PyNUy#qqgVqj=-7a}k?=bTs0u0&j${W|*`-Iewe0v;vN(Q7-zS_okQI$7Q z(%#8Mu<_CugC$B=YV6&71Mn7RLgX;YXk;j>mM|t}R))m?m%^*kP3Tr`4REAaz#1S? z3rda@z-mZ9Tey`Kfo1LRB_DEtEMT2OU9k%|A}p_Fa+RaVFS~yk&%#Ux-n2XaVr4Ih zK~81rwmaj!L&60$(7iDLPjD`ZJ04a15Qb1Qm5U!sO2~{-b5%ln`p!yov4pik*mE&< z)yDy$!I+WYqu!_z2_Pud2*TEd_J~e0RwZ%<+&<_x+qXC}QF07a{SxH~v2?9JpYOXPe3pH;+{1QX^BMa`56 z)XDpB~n2+E;QS$kHmIs?Y|Tw zVoi`U!DsE@RD}3rW?dEJD@G8=e#UcRFw|A^ro?P2lY@-=tohPyBPph(5J?cK;UHxD zT~d=LT5Y%Da)e4#2n)=!2(~4oSvT% zU;$JncQMFHW8afrt4z?D!4;7lVWZ7~VPu?6CT@Ud9-aJTfE1bMz1A=)2`DNgpEU2N z1SfR3*8Uhb$B1EuBgS>x#2$Y^f%9v% z6SJ<^oE7p~a{aBJsV+~-^#$cNr|h#Xl`3oyVXw@)fP4UIlqG*fjWUvEh1mr6QB;yn zlHcVJoglSGOUao6^NuJjQ2tu`6Fe#cl(_t(?zeRY?*RaVe^=i&TR9@ieq&OHrS`}y zaLfT3$V@!xg&_ZdiiE(KT6vlC4>_p)s`WHQ8A;nG9^EMGqmq6(m!ABoyH*5>gSvH{ z)ZQXckQb>=s+3A~EtP<&D&C{2qz0=cHA$*Y;dO5QC}sAZ^jo8)ND^dt6Md3gDa*?n z;XY7c)*f8P=rV`-Lxp0Oum@!8AF4K0E25ULJ7(7?acewl*T6QcPj#**HA+hr*;OXn zS3vHw9?4a?(yj6qebY~_N-|evrdy@+geuqMs?2h$eBY_U@L?{GbrDrE>*ZyR-WWpH z@&YCo7SD_q)a>wmJ*D!>aN(4CZegZdsC-KK+(ee{JOfMcV z$_T)HUo1b><*z2#zNz%Y3qPrSq)$A|K?26YuI%=@B2Ib)jlT7D!xE!9x@#U)ej0we zTxrp(v(b!h!Sk`nY{&12{nB$V0?ZRJzyYxSjXwFb6aJ)v94E2PqEF6VbjOudszOZa z$eVj%hGYll;t_}h)Ow{keW`g*DE*bCB8dNka!LB!9(zH%|6v{o`Ja^icP^)1F(R=9 zJt^}410yWD^mB2u9%ZF%ulA47HeMU%I&1w+-};6^ZZr?2uU%~v$ptdsegL>eL)e%e zGVYh}5WpV3twuP%TBusTpdaz+Z~59^N*vHX@U5>ebSoO~XYOXjI`*=2UR`c%ZU~Uw zz!f$C$G5K!8FSTU9@C(RNneVX5k3uqYDdmjox6z)dHPFW5;HMdLdcssNW)zP4FOWi zDp!=50b|ZmZR1jqygIDE?E^O>+x|l0bT#+PjTkDbQSt>BW6t`KZe!dQlD}7l%@OAH zT%C-shSRLPp9NvOXBWWNI0}$m@5<95{4m=Y0v|FIdkN6z`3z+UKd=|=u|@%?J8rL+ zxDtWJ-tKrvHI6F@+8qztPi6LpZA`_Z^0Yl(PistY`FbV)&*cAEyi)Aj9ajdI!)x8~ zDyiq(#l-ao@?>wZ+4z${E<7Wzp)7uKS=Ye=2CR-2*?~&yi}*jeN^uenoeCit8H2T^ z4XIGdvbP~PJ5GKpGNeLz4no+4FmP^u7n4;S-RY&+t+Rhf9fXThLEZNyXl$l}vVYYk zi%mdAGMlkkk5Xoj+nqm$Kh+h|TveaEC>?%SC@3S!=S*ct!j(5D2!r=k;DWF{k?nEe zsr(wbJtc&B9X6LwP91GI*R1ALzklr++=4|gBN(gquNyU`K5%a#QYLXS7oNwCB;Qfl zH63zUEpB>FzH)X_9quNn=NfoA?$_V^WPM{{y8d|UvBFiSk%lo4O>e^eaMqj2i59N> zT7<9Z7n4{$FUxx-vdwKfEnJ!)H{K){ryE1Dp5*Sm=|AHimt)Cq|)0|VieMZbgFv(vc=2*?; zaB^8ZJ6qEN#%08~zT)qmUM%Ml+H2=+e^O?a12E~Hht?X!f+mEKzgtG~u+{###eVGTY6+_IkaiMoH5#?pN zap^M{O9R#~d65zSNcmgPT%C7x^*aQqEy)}ayHfQJ{ht>ZS!OQarkA*1)=5>7*8USX zMf>V_{#HTRpF`QI;aaMNXD+}qYT4S0utNN;Hx+(j&MK`qN+Ronk3(a#F)CMUx18aw z*Txbvd>@SIZ~bB+KX&0Iu)Fq<8Ly-XM(j_dN%Q22op>ilTh3s7@nX}DN01n%KsQfD zdgxt2?(}$@M!tBN*;t;g361t~p-N+^a8x?XrrF9x-X27y921By6ZC4?PF!Z(Slarf z!sGgy24Bm`W@Ei9J}vb)o*OvZnJ^e>?HtC zLVIYHmibTA9ry2V4^3$fG@rr7fUo61^eXQr+v3mdY zEu(h#i?u6Zv}?G>ggSs^_z(g~y)a#~Wwo;9a`v=gsd!t?zu?f#lxFT4n+FFNM`+{Y z9=dxN%Rkf)Gx!p(W&cQI#vRTEZT^$2@53RL_+6pcC+O`TiVxWQ6-Lj# z?DDfHlAOJY;Fam-mK8O(X=o*3%fyV zEI^_HMDCBWtW#x~epyyL`hkf``%|KU)gX{>jYaKy5|&KhLH|Oy?u7a4ks8^*x%z<_ z&ji)tw(V7xzDP~3ztlF)8YcOPa#29>OaFkd#s^(*6dHdry0RsM^S`dx*D|boMzI{3 z72>}af%yDp%bJk)Fo6hG-roc!mUdW|x+BeN9SX>PR0lz!o%%ZXWve+(QS4c2OHOBr zRUzSVzGNT6#tNs7avyXYX+8^IhfGAhvp_7SEt?{A{L(>hk4)i8kE~CKo#WTtp9+5y zv9&IKUE~-d6cWB7A?tea3rRJ~Eagj%9;qF`gTegFbWXK>^;S`BF57XK0m&#C)mrLq zzM0}y`ERE_Y=GUxeY27tA}?18kjf}2V@5YRLS%z=>}1p{_T4!*?rf{N_8ucNxb-8P6|k-$BgZxUo!26*Kp=ZT}Z|(@9t+N$ogg>SYyL z*2i*qUDUUh>ZVTSkNk1@&!z55QU~g0?xD>fy=eUmC5qcqw}6wd3r_T7d^P@=xgU|l z)1y2&>#g6{a-sZo!o)^xtwPgV1>)dtOve{sq1@cG$8e$DeR} zwQ&3YXjPr`C1E|8sRaAbA@pe=J=+ zKD#rA4-UQ+fCGW!$YHaVa9rYcA(qNm&-{YLnyYWt7E1cO^5H}-iWJ;Z9Anv z7`iqPt1VvZ-(EWglH@Q2)+PxlDB4rz>8=&`2Ik9DK^*gU5Acw_cQrpYHI*AJhb2!X z8B=MEkgdhEREDuCdu(Mm_G$7}8%g|W*2{44Q_m!4)s}VFDmF!l9F2>0FdCv!sgivh zyU|FVUQxI*PH9rwT`L4o;+aQDDJjh0MC~>JsbE1x`2Sn?hZ8irhc6vXBUfdyj80jFUmTROuFS?jOb11o2z%@E5%FmKa6~Erx;X@>IRVafSQ5^y3#mij>b@f2HtH?KJ_mM7cXyrA zIoUs$3n7P=x>jZqbknsZt;w*j+s-3qwhM%TYilM#HvSL8xy*ZwNHEsBLcC(9RjE)< zem}EJR*Pjl#fDEtgE3KLa&Ee(tMAM%YdltAUqNh!oT=}xURQ6&ZxobYpX!VpOO1EIY(_-S4$^y>Dr(b_B|Lg`xprRSY-A} z**~>YMKPEf$}yNmA)(HfT_j#e-gok_zKzqq?)tm7Nv#ICq%u^o-(1D*BTEs@QB?1PY8{Jk+grpmkWhAMwz zj7tyv>EYnQb=&^rhg`vBeHZIVUA}#a>YwrqwyC^He&}NQB^%Sm2BQ%tQ{n=-@ulM> zxgb$gmef$~WW*!roPxo47pujO@Rl>Da_4mG>M`B~OST$sdv2kAP!%gEVY|!} zwnT+7o$=95;woIu7(#0vH)oa__1s2U>eiQhV(}a$rxq6y z#4_*v6Xde@<7)_L&*G#-3286WsNO(8Vpwua>)jwoIN-`KaR8zLgaR4}Rmvuy^6w;= zK?sy<^M@GuD%`_R;e2a2D=7O%C*G~@vU-W%-1<@Zll@Ed$=<|OBF`csTf$N6z+|z7 z5IO-#@2^y%?yq(d^EU|l>h^_XcENC`;O<-j{Q0ALz?vTI>0pEYMnrqMEBl0FPT28% z`1e_{kJz$=k0Tvs<@cZ4O9xnKu}hub%7DBEd$ScBAz8nmh*i*9Ul`Gkk4^5;o$bjX z^C9H+xAl7fyRI;Ex`-YB!_RSs!C5c*yUU%#dWI8dpmVO*kC;!{DfjVe`jW&FfLO1Q z(rh}J_XtF}q==jtp+ZmwE7KaUG>8eLsEBx$y`a6`R2KgX0AzRD>tioF84{H-<5i|7`|>oD=KYhetq3nd#@)gep<@ok~8J#4cPMwEI^J zGk$MS-oX!Ym0`%7%(1zPWbWdV%}{zK=cSE6Vg6u=#j<^zm)9HOv4PWBy?Cinz z<}^RA6(1r(t%D%oQYb=mH~Kw9N2jEx_ZXw~zTwz&{gV=Z+*~Ddu-B@F zoEQ$N)i9lTiL7^Xv^iB4sD8OOIn9>$!?dUU4d)J{3c3p|x;S|QO@At;P5!|6J+j

8RKP^ce!Zu?icc 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 C2IqqS diff --git a/Utils/lua/5.1/bin/luac.exe b/Utils/lua/5.1/bin/luac.exe deleted file mode 100644 index 9c64f99269d405b31ffae493cebb115ba7081062..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197312 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 M;T$fIKezLL0E#>-BLDyZ diff --git a/Utils/lua/5.1/bin/luadocumentor.bat b/Utils/lua/5.1/bin/luadocumentor.bat deleted file mode 100644 index 3d449219a..000000000 --- a/Utils/lua/5.1/bin/luadocumentor.bat +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -"C:\Program Files\lua\5.1\bin\lua.exe" -e "package.path=\"C:\\Users\\svenv\\AppData\\Roaming/luarocks/share/lua/5.1/?.lua;C:\\Users\\svenv\\AppData\\Roaming/luarocks/share/lua/5.1/?/init.lua;c:\\program files\\lua\\5.1\\/share/lua/5.1/?.lua;c:\\program files\\lua\\5.1\\/share/lua/5.1/?/init.lua;C:\\Program Files (x86)\\LuaRocks\\lua\\?.lua;\"..package.path; package.cpath=\"C:\\Users\\svenv\\AppData\\Roaming/luarocks/lib/lua/5.1/?.dll;c:\\program files\\lua\\5.1\\/lib/lua/5.1/?.dll;\"..package.cpath" -e "local k,l,_=pcall(require,\"luarocks.loader\") _=k and l.add_context(\"luadocumentor\",\"0.1.5-1\")" "c:\program files\lua\5.1\\lib\luarocks\rocks\luadocumentor\0.1.5-1\bin\luadocumentor" %* -exit /b %ERRORLEVEL% diff --git a/Utils/lua/5.1/lib/liblua.a b/Utils/lua/5.1/lib/liblua.a deleted file mode 100644 index f4d65be6491b48253237e463434e0117bdaeda22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254464 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 + + + + n9On8FItNsK/DmT8UQxu6jYDtWQ= + 0KJ/VTwP4OUHx98HlIW2AdW1kuY= + YJuB+9Os2oxW4mY+2oC/r8lICZE= + \ No newline at end of file diff --git a/Utils/luarocks/bin2c5.1.exe b/Utils/luarocks/bin2c5.1.exe new file mode 100644 index 0000000000000000000000000000000000000000..ca81d4b61fd7618de45fd25f841958ea94f7d83e GIT binary patch literal 94208 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 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/config-5.1.lua b/Utils/luarocks/config-5.1.lua new file mode 100644 index 000000000..cf02193f5 --- /dev/null +++ b/Utils/luarocks/config-5.1.lua @@ -0,0 +1,14 @@ +rocks_trees = { + home..[[/luarocks]], + { name = [[user]], + root = home..[[/luarocks]], + }, + { name = [[system]], + root = [[C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\systree]], + }, +} +variables = { + MSVCRT = 'MSVCR80', + LUALIB = 'lua5.1.lib' +} +verbose = false -- set to 'true' to enable verbose output diff --git a/Utils/lua/5.1/include/lauxlib.h b/Utils/luarocks/include/lauxlib.h similarity index 100% rename from Utils/lua/5.1/include/lauxlib.h rename to Utils/luarocks/include/lauxlib.h diff --git a/Utils/lua/5.1/include/lua.h b/Utils/luarocks/include/lua.h similarity index 98% rename from Utils/lua/5.1/include/lua.h rename to Utils/luarocks/include/lua.h index a4b73e743..e4bdfd3b9 100644 --- a/Utils/lua/5.1/include/lua.h +++ b/Utils/luarocks/include/lua.h @@ -1,5 +1,5 @@ /* -** $Id: lua.h,v 1.218.1.7 2012/01/13 20:36:20 roberto Exp $ +** $Id: lua.h,v 1.218.1.5 2008/08/06 13:30:12 roberto Exp $ ** Lua - An Extensible Extension Language ** Lua.org, PUC-Rio, Brazil (http://www.lua.org) ** See Copyright Notice at the end of this file @@ -17,9 +17,9 @@ #define LUA_VERSION "Lua 5.1" -#define LUA_RELEASE "Lua 5.1.5" +#define LUA_RELEASE "Lua 5.1.4" #define LUA_VERSION_NUM 501 -#define LUA_COPYRIGHT "Copyright (C) 1994-2012 Lua.org, PUC-Rio" +#define LUA_COPYRIGHT "Copyright (C) 1994-2008 Lua.org, PUC-Rio" #define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes" @@ -362,7 +362,7 @@ struct lua_Debug { /****************************************************************************** -* Copyright (C) 1994-2012 Lua.org, PUC-Rio. All rights reserved. +* Copyright (C) 1994-2008 Lua.org, PUC-Rio. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/Utils/lua/5.1/include/lua.hpp b/Utils/luarocks/include/lua.hpp similarity index 100% rename from Utils/lua/5.1/include/lua.hpp rename to Utils/luarocks/include/lua.hpp diff --git a/Utils/lua/5.1/include/luaconf.h b/Utils/luarocks/include/luaconf.h similarity index 98% rename from Utils/lua/5.1/include/luaconf.h rename to Utils/luarocks/include/luaconf.h index e2cb26163..5e7b98be6 100644 --- a/Utils/lua/5.1/include/luaconf.h +++ b/Utils/luarocks/include/luaconf.h @@ -91,7 +91,7 @@ ".\\?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua" #define LUA_CPATH_DEFAULT \ - ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll" + ".\\?.dll;" ".\\?51.dll;" LUA_CDIR"?.dll;" LUA_CDIR"?51.dll;" LUA_CDIR"clibs\\?.dll;" LUA_CDIR"clibs\\?51.dll;" LUA_CDIR"loadall.dll;" LUA_CDIR"clibs\\loadall.dll" #else #define LUA_ROOT "/usr/local/" @@ -101,7 +101,7 @@ "./?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua" #define LUA_CPATH_DEFAULT \ - "./?.so;" LUA_CDIR"?.so;" LUA_CDIR"loadall.so" + "./?.so;" "./lib?51.so;" LUA_CDIR"?.so;" LUA_CDIR"lib?51.so;" LUA_CDIR"loadall.so" #endif diff --git a/Utils/lua/5.1/include/lualib.h b/Utils/luarocks/include/lualib.h similarity index 100% rename from Utils/lua/5.1/include/lualib.h rename to Utils/luarocks/include/lualib.h diff --git a/Utils/luarocks/lua.ico b/Utils/luarocks/lua.ico new file mode 100644 index 0000000000000000000000000000000000000000..56dc4fe15f21128a8ef9044fac100a3ce15284f7 GIT binary patch literal 22486 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 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/lua/luarocks/add.lua b/Utils/luarocks/lua/luarocks/add.lua new file mode 100644 index 000000000..f37d334d3 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/add.lua @@ -0,0 +1,122 @@ + +--- Module implementing the luarocks-admin "add" command. +-- Adds a rock or rockspec to a rocks server. +local add = {} +package.loaded["luarocks.add"] = add + +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") +local dir = require("luarocks.dir") +local manif = require("luarocks.manif") +local index = require("luarocks.index") +local fs = require("luarocks.fs") +local cache = require("luarocks.cache") + +util.add_run_function(add) +add.help_summary = "Add a rock or rockspec to a rocks server." +add.help_arguments = "[--server=] [--no-refresh] {|...}" +add.help = [[ +Arguments are local files, which may be rockspecs or rocks. +The flag --server indicates which server to use. +If not given, the default server set in the upload_server variable +from the configuration file is used instead. +The flag --no-refresh indicates the local cache should not be refreshed +prior to generation of the updated manifest. +]] + +local function add_files_to_server(refresh, rockfiles, server, upload_server) + assert(type(refresh) == "boolean" or not refresh) + assert(type(rockfiles) == "table") + assert(type(server) == "string") + assert(type(upload_server) == "table" or not upload_server) + + local download_url, login_url = cache.get_server_urls(server, upload_server) + local at = fs.current_dir() + local refresh_fn = refresh and cache.refresh_local_cache or cache.split_server_url + + local local_cache, protocol, server_path, user, password = refresh_fn(server, download_url, cfg.upload_user, cfg.upload_password) + if not local_cache then + return nil, protocol + end + if protocol == "file" then + return nil, "Server "..server.." is not recognized, check your configuration." + end + + if not login_url then + login_url = protocol.."://"..server_path + end + + local ok, err = fs.change_dir(at) + if not ok then return nil, err end + + local files = {} + for _, rockfile in ipairs(rockfiles) do + if fs.exists(rockfile) then + util.printout("Copying file "..rockfile.." to "..local_cache.."...") + local absolute = fs.absolute_name(rockfile) + fs.copy(absolute, local_cache, cfg.perm_read) + table.insert(files, dir.base_name(absolute)) + else + util.printerr("File "..rockfile.." not found") + end + end + if #files == 0 then + return nil, "No files found" + end + + local ok, err = fs.change_dir(local_cache) + if not ok then return nil, err end + + util.printout("Updating manifest...") + manif.make_manifest(local_cache, "one", true) + + manif.zip_manifests() + + util.printout("Updating index.html...") + index.make_index(local_cache) + + local login_info = "" + if user then login_info = " -u "..user end + if password then login_info = login_info..":"..password end + if not login_url:match("/$") then + login_url = login_url .. "/" + end + + table.insert(files, "index.html") + table.insert(files, "manifest") + for ver in util.lua_versions() do + table.insert(files, "manifest-"..ver) + table.insert(files, "manifest-"..ver..".zip") + end + + -- TODO abstract away explicit 'curl' call + + local cmd + if protocol == "rsync" then + local srv, path = server_path:match("([^/]+)(/.+)") + cmd = cfg.variables.RSYNC.." "..cfg.variables.RSYNCFLAGS.." -e ssh "..local_cache.."/ "..user.."@"..srv..":"..path.."/" + elseif upload_server and upload_server.sftp then + local part1, part2 = upload_server.sftp:match("^([^/]*)/(.*)$") + cmd = cfg.variables.SCP.." "..table.concat(files, " ").." "..user.."@"..part1..":/"..part2 + else + cmd = cfg.variables.CURL.." "..login_info.." -T '{"..table.concat(files, ",").."}' "..login_url + end + + util.printout(cmd) + fs.execute(cmd) + + return true +end + +function add.command(flags, ...) + local files = {...} + if #files < 1 then + return nil, "Argument missing. "..util.see_help("add", "luarocks-admin") + end + local server, server_table = cache.get_upload_server(flags["server"]) + if not server then return nil, server_table end + return add_files_to_server(not flags["no-refresh"], files, server, server_table) +end + + +return add diff --git a/Utils/luarocks/lua/luarocks/admin_remove.lua b/Utils/luarocks/lua/luarocks/admin_remove.lua new file mode 100644 index 000000000..621f13178 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/admin_remove.lua @@ -0,0 +1,92 @@ + +--- Module implementing the luarocks-admin "remove" command. +-- Removes a rock or rockspec from a rocks server. +local admin_remove = {} +package.loaded["luarocks.admin_remove"] = admin_remove + +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") +local dir = require("luarocks.dir") +local manif = require("luarocks.manif") +local index = require("luarocks.index") +local fs = require("luarocks.fs") +local cache = require("luarocks.cache") + +util.add_run_function(admin_remove) +admin_remove.help_summary = "Remove a rock or rockspec from a rocks server." +admin_remove.help_arguments = "[--server=] [--no-refresh] {|...}" +admin_remove.help = [[ +Arguments are local files, which may be rockspecs or rocks. +The flag --server indicates which server to use. +If not given, the default server set in the upload_server variable +from the configuration file is used instead. +The flag --no-refresh indicates the local cache should not be refreshed +prior to generation of the updated manifest. +]] + +local function remove_files_from_server(refresh, rockfiles, server, upload_server) + assert(type(refresh) == "boolean" or not refresh) + assert(type(rockfiles) == "table") + assert(type(server) == "string") + assert(type(upload_server) == "table" or not upload_server) + + local download_url, login_url = cache.get_server_urls(server, upload_server) + local at = fs.current_dir() + local refresh_fn = refresh and cache.refresh_local_cache or cache.split_server_url + + local local_cache, protocol, server_path, user, password = refresh_fn(server, download_url, cfg.upload_user, cfg.upload_password) + if not local_cache then + return nil, protocol + end + if protocol ~= "rsync" then + return nil, "This command requires 'rsync', check your configuration." + end + + local ok, err = fs.change_dir(at) + if not ok then return nil, err end + + local nr_files = 0 + for _, rockfile in ipairs(rockfiles) do + local basename = dir.base_name(rockfile) + local file = dir.path(local_cache, basename) + util.printout("Removing file "..file.."...") + fs.delete(file) + if not fs.exists(file) then + nr_files = nr_files + 1 + else + util.printerr("Failed removing "..file) + end + end + if nr_files == 0 then + return nil, "No files removed." + end + + local ok, err = fs.change_dir(local_cache) + if not ok then return nil, err end + + util.printout("Updating manifest...") + manif.make_manifest(local_cache, "one", true) + util.printout("Updating index.html...") + index.make_index(local_cache) + + local srv, path = server_path:match("([^/]+)(/.+)") + local cmd = cfg.variables.RSYNC.." "..cfg.variables.RSYNCFLAGS.." --delete -e ssh "..local_cache.."/ "..user.."@"..srv..":"..path.."/" + + util.printout(cmd) + fs.execute(cmd) + + return true +end + +function admin_remove.command(flags, ...) + local files = {...} + if #files < 1 then + return nil, "Argument missing. "..util.see_help("remove", "luarocks-admin") + end + local server, server_table = cache.get_upload_server(flags["server"]) + if not server then return nil, server_table end + return remove_files_from_server(not flags["no-refresh"], files, server, server_table) +end + + +return admin_remove diff --git a/Utils/luarocks/lua/luarocks/build.lua b/Utils/luarocks/lua/luarocks/build.lua new file mode 100644 index 000000000..96b232ffb --- /dev/null +++ b/Utils/luarocks/lua/luarocks/build.lua @@ -0,0 +1,415 @@ + +--- Module implementing the LuaRocks "build" command. +-- Builds a rock, compiling its C parts if any. +local build = {} +package.loaded["luarocks.build"] = build + +local pack = require("luarocks.pack") +local path = require("luarocks.path") +local util = require("luarocks.util") +local repos = require("luarocks.repos") +local fetch = require("luarocks.fetch") +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local deps = require("luarocks.deps") +local manif = require("luarocks.manif") +local remove = require("luarocks.remove") +local cfg = require("luarocks.cfg") + +util.add_run_function(build) +build.help_summary = "Build/compile a rock." +build.help_arguments = "[--pack-binary-rock] [--keep] {|| []}" +build.help = [[ +Build and install a rock, compiling its C parts if any. +Argument may be a rockspec file, a source rock file +or the name of a rock to be fetched from a repository. + +--pack-binary-rock Do not install rock. Instead, produce a .rock file + with the contents of compilation in the current + directory. + +--keep Do not remove previously installed versions of the + rock after building a new one. This behavior can + be made permanent by setting keep_other_versions=true + in the configuration file. + +--branch= Override the `source.branch` field in the loaded + rockspec. Allows to specify a different branch to + fetch. Particularly for SCM rocks. + +--only-deps Installs only the dependencies of the rock. + +]]..util.deps_mode_help() + +--- Install files to a given location. +-- Takes a table where the array part is a list of filenames to be copied. +-- In the hash part, other keys, if is_module_path is set, are identifiers +-- in Lua module format, to indicate which subdirectory the file should be +-- copied to. For example, install_files({["foo.bar"] = "src/bar.lua"}, "boo") +-- will copy src/bar.lua to boo/foo. +-- @param files table or nil: A table containing a list of files to copy in +-- the format described above. If nil is passed, this function is a no-op. +-- Directories should be delimited by forward slashes as in internet URLs. +-- @param location string: The base directory files should be copied to. +-- @param is_module_path boolean: True if string keys in files should be +-- interpreted as dotted module paths. +-- @param perms string: Permissions of the newly created files installed. +-- Directories are always created with the default permissions. +-- @return boolean or (nil, string): True if succeeded or +-- nil and an error message. +local function install_files(files, location, is_module_path, perms) + assert(type(files) == "table" or not files) + assert(type(location) == "string") + if files then + for k, file in pairs(files) do + local dest = location + local filename = dir.base_name(file) + if type(k) == "string" then + local modname = k + if is_module_path then + dest = dir.path(location, path.module_to_path(modname)) + local ok, err = fs.make_dir(dest) + if not ok then return nil, err end + if filename:match("%.lua$") then + local basename = modname:match("([^.]+)$") + filename = basename..".lua" + end + else + dest = dir.path(location, dir.dir_name(modname)) + local ok, err = fs.make_dir(dest) + if not ok then return nil, err end + filename = dir.base_name(modname) + end + else + local ok, err = fs.make_dir(dest) + if not ok then return nil, err end + end + local ok = fs.copy(dir.path(file), dir.path(dest, filename), perms) + if not ok then + return nil, "Failed copying "..file + end + end + end + return true +end + +--- Write to the current directory the contents of a table, +-- where each key is a file name and its value is the file content. +-- @param files table: The table of files to be written. +local function extract_from_rockspec(files) + for name, content in pairs(files) do + local fd = io.open(dir.path(fs.current_dir(), name), "w+") + fd:write(content) + fd:close() + end +end + +--- Applies patches inlined in the build.patches section +-- and extracts files inlined in the build.extra_files section +-- of a rockspec. +-- @param rockspec table: A rockspec table. +-- @return boolean or (nil, string): True if succeeded or +-- nil and an error message. +function build.apply_patches(rockspec) + assert(type(rockspec) == "table") + + local build_spec = rockspec.build + if build_spec.extra_files then + extract_from_rockspec(build_spec.extra_files) + end + if build_spec.patches then + extract_from_rockspec(build_spec.patches) + for patch, patchdata in util.sortedpairs(build_spec.patches) do + util.printout("Applying patch "..patch.."...") + local ok, err = fs.apply_patch(tostring(patch), patchdata) + if not ok then + return nil, "Failed applying patch "..patch + end + end + end + return true +end + +local function install_default_docs(name, version) + local patterns = { "readme", "license", "copying", ".*%.md" } + local dest = dir.path(path.install_dir(name, version), "doc") + local has_dir = false + for file in fs.dir() do + for _, pattern in ipairs(patterns) do + if file:lower():match("^"..pattern) then + if not has_dir then + fs.make_dir(dest) + has_dir = true + end + fs.copy(file, dest, cfg.perm_read) + break + end + end + end +end + +--- Build and install a rock given a rockspec. +-- @param rockspec_file string: local or remote filename of a rockspec. +-- @param need_to_fetch boolean: true if sources need to be fetched, +-- false if the rockspec was obtained from inside a source rock. +-- @param minimal_mode boolean: true if there's no need to fetch, +-- unpack or change dir (this is used by "luarocks make"). Implies +-- need_to_fetch = false. +-- @param deps_mode string: Dependency mode: "one" for the current default tree, +-- "all" for all trees, "order" for all trees with priority >= the current default, +-- "none" for no trees. +-- @param build_only_deps boolean: true to build the listed dependencies only. +-- @return (string, string) or (nil, string, [string]): Name and version of +-- installed rock if succeeded or nil and an error message followed by an error code. +function build.build_rockspec(rockspec_file, need_to_fetch, minimal_mode, deps_mode, build_only_deps) + assert(type(rockspec_file) == "string") + assert(type(need_to_fetch) == "boolean") + + local rockspec, err, errcode = fetch.load_rockspec(rockspec_file) + if err then + return nil, err, errcode + elseif not rockspec.build then + return nil, "Rockspec error: build table not specified" + elseif not rockspec.build.type then + return nil, "Rockspec error: build type not specified" + end + + local ok + if not build_only_deps then + ok, err, errcode = deps.check_external_deps(rockspec, "build") + if err then + return nil, err, errcode + end + end + + if deps_mode == "none" then + util.printerr("Warning: skipping dependency checks.") + else + local ok, err, errcode = deps.fulfill_dependencies(rockspec, deps_mode) + if err then + return nil, err, errcode + end + end + + local name, version = rockspec.name, rockspec.version + if build_only_deps then + util.printout("Stopping after installing dependencies for " ..name.." "..version) + util.printout() + return name, version + end + + if repos.is_installed(name, version) then + repos.delete_version(name, version, deps_mode) + end + + if not minimal_mode then + local source_dir + if need_to_fetch then + ok, source_dir, errcode = fetch.fetch_sources(rockspec, true) + if not ok then + return nil, source_dir, errcode + end + local ok, err = fs.change_dir(source_dir) + if not ok then return nil, err end + elseif rockspec.source.file then + local ok, err = fs.unpack_archive(rockspec.source.file) + if not ok then + return nil, err + end + end + fs.change_dir(rockspec.source.dir) + end + + local dirs = { + lua = { name = path.lua_dir(name, version), is_module_path = true, perms = cfg.perm_read }, + lib = { name = path.lib_dir(name, version), is_module_path = true, perms = cfg.perm_exec }, + conf = { name = path.conf_dir(name, version), is_module_path = false, perms = cfg.perm_read }, + bin = { name = path.bin_dir(name, version), is_module_path = false, perms = cfg.perm_exec }, + } + + for _, d in pairs(dirs) do + local ok, err = fs.make_dir(d.name) + if not ok then return nil, err end + end + local rollback = util.schedule_function(function() + fs.delete(path.install_dir(name, version)) + fs.remove_dir_if_empty(path.versions_dir(name)) + end) + + local build_spec = rockspec.build + + if not minimal_mode then + ok, err = build.apply_patches(rockspec) + if err then + return nil, err + end + end + + if build_spec.type ~= "none" then + + -- Temporary compatibility + if build_spec.type == "module" then + util.printout("Do not use 'module' as a build type. Use 'builtin' instead.") + build_spec.type = "builtin" + end + + if cfg.accepted_build_types and util.array_contains(cfg.accepted_build_types, build_spec.type) then + return nil, "This rockspec uses the '"..build_spec.type.."' build type, which is blocked by the 'accepted_build_types' setting in your LuaRocks configuration." + end + + local build_type + ok, build_type = pcall(require, "luarocks.build." .. build_spec.type) + if not ok or not type(build_type) == "table" then + return nil, "Failed initializing build back-end for build type '"..build_spec.type.."': "..build_type + end + + ok, err = build_type.run(rockspec) + if not ok then + return nil, "Build error: " .. err + end + end + + if build_spec.install then + for id, install_dir in pairs(dirs) do + ok, err = install_files(build_spec.install[id], install_dir.name, install_dir.is_module_path, install_dir.perms) + if not ok then + return nil, err + end + end + end + + local copy_directories = build_spec.copy_directories + local copying_default = false + if not copy_directories then + copy_directories = {"doc"} + copying_default = true + end + + local any_docs = false + for _, copy_dir in pairs(copy_directories) do + if fs.is_dir(copy_dir) then + local dest = dir.path(path.install_dir(name, version), copy_dir) + fs.make_dir(dest) + fs.copy_contents(copy_dir, dest) + any_docs = true + else + if not copying_default then + return nil, "Directory '"..copy_dir.."' not found" + end + end + end + + if not any_docs then + install_default_docs(name, version) + end + + for _, d in pairs(dirs) do + fs.remove_dir_if_empty(d.name) + end + + fs.pop_dir() + + fs.copy(rockspec.local_filename, path.rockspec_file(name, version), cfg.perm_read) + if need_to_fetch then + fs.pop_dir() + end + + ok, err = manif.make_rock_manifest(name, version) + if err then return nil, err end + + ok, err = repos.deploy_files(name, version, repos.should_wrap_bin_scripts(rockspec), deps_mode) + if err then return nil, err end + + util.remove_scheduled_function(rollback) + rollback = util.schedule_function(function() + repos.delete_version(name, version, deps_mode) + end) + + ok, err = repos.run_hook(rockspec, "post_install") + if err then return nil, err end + + util.announce_install(rockspec) + util.remove_scheduled_function(rollback) + return name, version +end + +--- Build and install a rock. +-- @param rock_file string: local or remote filename of a rock. +-- @param need_to_fetch boolean: true if sources need to be fetched, +-- false if the rockspec was obtained from inside a source rock. +-- @param deps_mode: string: Which trees to check dependencies for: +-- "one" for the current default tree, "all" for all trees, +-- "order" for all trees with priority >= the current default, "none" for no trees. +-- @param build_only_deps boolean: true to build the listed dependencies only. +-- @return boolean or (nil, string, [string]): True if build was successful, +-- or false and an error message and an optional error code. +function build.build_rock(rock_file, need_to_fetch, deps_mode, build_only_deps) + assert(type(rock_file) == "string") + assert(type(need_to_fetch) == "boolean") + + local ok, err, errcode + local unpack_dir + unpack_dir, err, errcode = fetch.fetch_and_unpack_rock(rock_file) + if not unpack_dir then + return nil, err, errcode + end + local rockspec_file = path.rockspec_name_from_rock(rock_file) + ok, err = fs.change_dir(unpack_dir) + if not ok then return nil, err end + ok, err, errcode = build.build_rockspec(rockspec_file, need_to_fetch, false, deps_mode, build_only_deps) + fs.pop_dir() + return ok, err, errcode +end + +local function do_build(name, version, deps_mode, build_only_deps) + if name:match("%.rockspec$") then + return build.build_rockspec(name, true, false, deps_mode, build_only_deps) + elseif name:match("%.src%.rock$") then + return build.build_rock(name, false, deps_mode, build_only_deps) + elseif name:match("%.all%.rock$") then + local install = require("luarocks.install") + local install_fun = build_only_deps and install.install_binary_rock_deps or install.install_binary_rock + return install_fun(name, deps_mode) + elseif name:match("%.rock$") then + return build.build_rock(name, true, deps_mode, build_only_deps) + elseif not name:match(dir.separator) then + local search = require("luarocks.search") + return search.act_on_src_or_rockspec(do_build, name:lower(), version, nil, deps_mode, build_only_deps) + end + return nil, "Don't know what to do with "..name +end + +--- Driver function for "build" command. +-- @param name string: A local or remote rockspec or rock file. +-- If a package name is given, forwards the request to "search" and, +-- if returned a result, installs the matching rock. +-- @param version string: When passing a package name, a version number may +-- also be given. +-- @return boolean or (nil, string, exitcode): True if build was successful; nil and an +-- error message otherwise. exitcode is optionally returned. +function build.command(flags, name, version) + if type(name) ~= "string" then + return nil, "Argument missing. "..util.see_help("build") + end + assert(type(version) == "string" or not version) + + if flags["pack-binary-rock"] then + return pack.pack_binary_rock(name, version, do_build, name, version, deps.get_deps_mode(flags)) + else + local ok, err = fs.check_command_permissions(flags) + if not ok then return nil, err, cfg.errorcodes.PERMISSIONDENIED end + ok, err = do_build(name, version, deps.get_deps_mode(flags), flags["only-deps"]) + if not ok then return nil, err end + name, version = ok, err + + if (not flags["only-deps"]) and (not flags["keep"]) and not cfg.keep_other_versions then + local ok, err = remove.remove_other_versions(name, version, flags["force"], flags["force-fast"]) + if not ok then util.printerr(err) end + end + + manif.check_dependencies(nil, deps.get_deps_mode(flags)) + return name, version + end +end + +return build diff --git a/Utils/luarocks/lua/luarocks/cache.lua b/Utils/luarocks/lua/luarocks/cache.lua new file mode 100644 index 000000000..4a95f70e3 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/cache.lua @@ -0,0 +1,78 @@ + +--- Module handling the LuaRocks local cache. +-- Adds a rock or rockspec to a rocks server. +local cache = {} +package.loaded["luarocks.cache"] = cache + +local fs = require("luarocks.fs") +local cfg = require("luarocks.cfg") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +function cache.get_upload_server(server) + if not server then server = cfg.upload_server end + if not server then + return nil, "No server specified and no default configured with upload_server." + end + return server, cfg.upload_servers and cfg.upload_servers[server] +end + +function cache.get_server_urls(server, upload_server) + local download_url = server + local login_url = nil + if upload_server then + if upload_server.rsync then download_url = "rsync://"..upload_server.rsync + elseif upload_server.http then download_url = "http://"..upload_server.http + elseif upload_server.ftp then download_url = "ftp://"..upload_server.ftp + end + + if upload_server.ftp then login_url = "ftp://"..upload_server.ftp + elseif upload_server.sftp then login_url = "sftp://"..upload_server.sftp + end + end + return download_url, login_url +end + +function cache.split_server_url(server, url, user, password) + local protocol, server_path = dir.split_url(url) + if server_path:match("@") then + local credentials + credentials, server_path = server_path:match("([^@]*)@(.*)") + if credentials:match(":") then + user, password = credentials:match("([^:]*):(.*)") + else + user = credentials + end + end + local local_cache = cfg.local_cache .. "/" .. server + return local_cache, protocol, server_path, user, password +end + +function cache.refresh_local_cache(server, url, user, password) + local local_cache, protocol, server_path, user, password = cache.split_server_url(server, url, user, password) + local ok, err = fs.make_dir(local_cache) + if not ok then + return nil, "Failed creating local cache dir: "..err + end + fs.change_dir(local_cache) + if not ok then return nil, err end + util.printout("Refreshing cache "..local_cache.."...") + + -- TODO abstract away explicit 'wget' call + local ok = false + if protocol == "rsync" then + local srv, path = server_path:match("([^/]+)(/.+)") + ok = fs.execute(cfg.variables.RSYNC.." "..cfg.variables.RSYNCFLAGS.." -e ssh "..user.."@"..srv..":"..path.."/ "..local_cache.."/") + else + local login_info = "" + if user then login_info = " --user="..user end + if password then login_info = login_info .. " --password="..password end + ok = fs.execute(cfg.variables.WGET.." --no-cache -q -m -np -nd "..protocol.."://"..server_path..login_info) + end + if not ok then + return nil, "Failed downloading cache." + end + return local_cache, protocol, server_path, user, password +end + +return cache diff --git a/Utils/luarocks/lua/luarocks/cfg.lua b/Utils/luarocks/lua/luarocks/cfg.lua new file mode 100644 index 000000000..c997c1240 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/cfg.lua @@ -0,0 +1,760 @@ +--- Configuration for LuaRocks. +-- Tries to load the user's configuration file and +-- defines defaults for unset values. See the +-- config +-- file format documentation for details. +-- +-- End-users shouldn't edit this file. They can override any defaults +-- set in this file using their system-wide or user-specific configuration +-- files. Run `luarocks` with no arguments to see the locations of +-- these files in your platform. + +local rawset, next, table, pairs, require, io, os, setmetatable, pcall, ipairs, package, tonumber, type, assert, _VERSION = + rawset, next, table, pairs, require, io, os, setmetatable, pcall, ipairs, package, tonumber, type, assert, _VERSION + +--module("luarocks.cfg") +local cfg = {} +package.loaded["luarocks.cfg"] = cfg + +local util = require("luarocks.util") + +cfg.lua_version = _VERSION:match(" (5%.[123])$") or "5.1" +local version_suffix = cfg.lua_version:gsub("%.", "_") + +-- Load site-local global configurations +local ok, site_config = pcall(require, "luarocks.site_config_"..version_suffix) +if not ok then + ok, site_config = pcall(require, "luarocks.site_config") +end +if not ok then + io.stderr:write("Site-local luarocks/site_config.lua file not found. Incomplete installation?\n") + site_config = {} +end + +cfg.program_version = "2.4.2" +cfg.program_series = "2.4" +cfg.major_version = (cfg.program_version:match("([^.]%.[^.])")) or cfg.program_series +cfg.variables = {} +cfg.rocks_trees = {} +cfg.platforms = {} + +local persist = require("luarocks.persist") + +cfg.errorcodes = setmetatable({ + OK = 0, + UNSPECIFIED = 1, + PERMISSIONDENIED = 2, + CONFIGFILE = 3, + CRASH = 99 +},{ + __index = function(t, key) + local val = rawget(t, key) + if not val then + error("'"..tostring(key).."' is not a valid errorcode", 2) + end + return val + end +}) + + +local popen_ok, popen_result = pcall(io.popen, "") +if popen_ok then + if popen_result then + popen_result:close() + end +else + io.stderr:write("Your version of Lua does not support io.popen,\n") + io.stderr:write("which is required by LuaRocks. Please check your Lua installation.\n") + os.exit(cfg.errorcodes.UNSPECIFIED) +end + +-- System detection: + +-- A proper installation of LuaRocks will hardcode the system +-- and proc values with site_config.LUAROCKS_UNAME_S and site_config.LUAROCKS_UNAME_M, +-- so that this detection does not run every time. When it is +-- performed, we use the Unix way to identify the system, +-- even on Windows (assuming UnxUtils or Cygwin). +local system = site_config.LUAROCKS_UNAME_S or io.popen("uname -s"):read("*l") +local proc = site_config.LUAROCKS_UNAME_M or io.popen("uname -m"):read("*l") +if proc:match("i[%d]86") then + cfg.target_cpu = "x86" +elseif proc:match("amd64") or proc:match("x86_64") then + cfg.target_cpu = "x86_64" +elseif proc:match("Power Macintosh") then + cfg.target_cpu = "powerpc" + else + cfg.target_cpu = proc +end + +if system == "FreeBSD" then + cfg.platforms.unix = true + cfg.platforms.freebsd = true + cfg.platforms.bsd = true +elseif system == "OpenBSD" then + cfg.platforms.unix = true + cfg.platforms.openbsd = true + cfg.platforms.bsd = true +elseif system == "NetBSD" then + cfg.platforms.unix = true + cfg.platforms.netbsd = true + cfg.platforms.bsd = true +elseif system == "Darwin" then + cfg.platforms.unix = true + cfg.platforms.macosx = true + cfg.platforms.bsd = true +elseif system == "Linux" then + cfg.platforms.unix = true + cfg.platforms.linux = true +elseif system == "SunOS" then + cfg.platforms.unix = true + cfg.platforms.solaris = true +elseif system and system:match("^CYGWIN") then + cfg.platforms.unix = true + cfg.platforms.cygwin = true +elseif system and system:match("^MSYS") then + cfg.platforms.unix = true + cfg.platforms.msys = true + cfg.platforms.cygwin = true +elseif system and system:match("^Windows") then + cfg.platforms.windows = true + cfg.platforms.win32 = true +elseif system and system:match("^MINGW") then + cfg.platforms.windows = true + cfg.platforms.mingw32 = true + cfg.platforms.win32 = true +elseif system == "Haiku" then + cfg.platforms.unix = true + cfg.platforms.haiku = true +else + cfg.platforms.unix = true + -- Fall back to Unix in unknown systems. +end + +-- Set order for platform overrides. +-- More general platform identifiers should be listed first, +-- more specific ones later. +local platform_order = { + -- Unixes + "unix", + "bsd", + "solaris", + "netbsd", + "openbsd", + "freebsd", + "linux", + "macosx", + "cygwin", + "msys", + "haiku", + -- Windows + "win32", + "mingw32", + "windows", +} + +-- Path configuration: +local sys_config_file, home_config_file +local sys_config_file_default, home_config_file_default +local sys_config_dir, home_config_dir +local sys_config_ok, home_config_ok = false, false +local extra_luarocks_module_dir +sys_config_dir = site_config.LUAROCKS_SYSCONFDIR or site_config.LUAROCKS_PREFIX +if cfg.platforms.windows then + cfg.home = os.getenv("APPDATA") or "c:" + sys_config_dir = sys_config_dir or "c:/luarocks" + home_config_dir = cfg.home.."/luarocks" + cfg.home_tree = cfg.home.."/luarocks/" +else + cfg.home = os.getenv("HOME") or "" + sys_config_dir = sys_config_dir or "/etc/luarocks" + home_config_dir = cfg.home.."/.luarocks" + cfg.home_tree = (os.getenv("USER") ~= "root") and cfg.home.."/.luarocks/" +end + +-- Create global environment for the config files; +local env_for_config_file = function() + local e + e = { + home = cfg.home, + lua_version = cfg.lua_version, + platforms = util.make_shallow_copy(cfg.platforms), + processor = cfg.target_cpu, -- remains for compat reasons + target_cpu = cfg.target_cpu, -- replaces `processor` + os_getenv = os.getenv, + dump_env = function() + -- debug function, calling it from a config file will show all + -- available globals to that config file + print(util.show_table(e, "global environment")) + end, + } + return e +end + +-- Merge values from config files read into the `cfg` table +local merge_overrides = function(overrides) + -- remove some stuff we do not want to integrate + overrides.os_getenv = nil + overrides.dump_env = nil + -- remove tables to be copied verbatim instead of deeply merged + if overrides.rocks_trees then cfg.rocks_trees = nil end + if overrides.rocks_servers then cfg.rocks_servers = nil end + -- perform actual merge + util.deep_merge(cfg, overrides) +end + +-- load config file from a list until first succesful one. Info is +-- added to `cfg` module table, returns filepath of succesfully loaded +-- file or nil if it failed +local load_config_file = function(list) + for _, filepath in ipairs(list) do + local result, err, errcode = persist.load_into_table(filepath, env_for_config_file()) + if (not result) and errcode ~= "open" then + -- errcode is either "load" or "run"; bad config file, so error out + io.stderr:write(err.."\n") + os.exit(cfg.errorcodes.CONFIGFILE) + end + if result then + -- succes in loading and running, merge contents and exit + merge_overrides(result) + return filepath + end + end + return nil -- nothing was loaded +end + + +-- Load system configuration file +do + sys_config_file_default = sys_config_dir.."/config-"..cfg.lua_version..".lua" + sys_config_file = load_config_file({ + site_config.LUAROCKS_SYSCONFIG or sys_config_file_default, + sys_config_dir.."/config.lua", + }) + sys_config_ok = (sys_config_file ~= nil) +end + +-- Load user configuration file (if allowed) +if not site_config.LUAROCKS_FORCE_CONFIG then + + home_config_file_default = home_config_dir.."/config-"..cfg.lua_version..".lua" + + local config_env_var = "LUAROCKS_CONFIG_" .. version_suffix + local config_env_value = os.getenv(config_env_var) + if not config_env_value then + config_env_var = "LUAROCKS_CONFIG" + config_env_value = os.getenv(config_env_var) + end + + -- first try environment provided file, so we can explicitly warn when it is missing + if config_env_value then + local list = { config_env_value } + home_config_file = load_config_file(list) + home_config_ok = (home_config_file ~= nil) + if not home_config_ok then + io.stderr:write("Warning: could not load configuration file `"..config_env_value.."` given in environment variable "..config_env_var.."\n") + end + end + + -- try the alternative defaults if there was no environment specified file or it didn't work + if not home_config_ok then + local list = { + home_config_file_default, + home_config_dir.."/config.lua", + } + home_config_file = load_config_file(list) + home_config_ok = (home_config_file ~= nil) + end +end + + +if not next(cfg.rocks_trees) then + if cfg.home_tree then + table.insert(cfg.rocks_trees, { name = "user", root = cfg.home_tree } ) + end + if site_config.LUAROCKS_ROCKS_TREE then + table.insert(cfg.rocks_trees, { name = "system", root = site_config.LUAROCKS_ROCKS_TREE } ) + end +end + +-- update platforms list; keyed -> array +do + -- if explicitly given by user, + if cfg.platforms[1] then + local is_windows = cfg.platforms.windows + -- Clear auto-detected values + for k, _ in pairs(cfg.platforms) do + if type(k) == "string" then + cfg.platforms[k] = nil + end + end + -- and set the ones given by the user. + for _, plat in ipairs(cfg.platforms) do + cfg.platforms[plat] = true + end + -- If no major platform family was set by the user, + if not (cfg.platforms.unix or cfg.platforms.windows) then + -- set some fallback defaults in case the user provides an incomplete configuration. + -- LuaRocks expects a set of defaults to be available. + -- This is used for setting defaults here only; the platform overrides + -- will use only the user's list. + if is_windows then + cfg.platforms.windows = true + table.insert(cfg.platforms, "windows") + else + cfg.platforms.unix = true + table.insert(cfg.platforms, "unix") + end + end + else + -- Sort detected platform defaults + local order = {} + for i, v in ipairs(platform_order) do + order[v] = i + end + local entries = {} + for k, v in pairs(cfg.platforms) do + if type(k) == "string" and v == true then + table.insert(entries, k) + end + end + table.sort(entries, function(a, b) return order[a] < order[b] end) + util.deep_merge(cfg.platforms, entries) + end +end + +-- Configure defaults: +local defaults = { + + local_by_default = false, + accept_unknown_fields = false, + fs_use_modules = true, + hooks_enabled = true, + deps_mode = "one", + check_certificates = false, + perm_read = "0644", + perm_exec = "0755", + + lua_modules_path = "/share/lua/"..cfg.lua_version, + lib_modules_path = "/lib/lua/"..cfg.lua_version, + rocks_subdir = site_config.LUAROCKS_ROCKS_SUBDIR or "/lib/luarocks/rocks", + + arch = "unknown", + lib_extension = "unknown", + obj_extension = "unknown", + link_lua_explicitly = false, + + rocks_servers = { + { + "https://luarocks.org", + "https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/", + "http://luafr.org/moonrocks/", + "http://luarocks.logiceditor.com/rocks", + } + }, + disabled_servers = {}, + + upload = { + server = "https://luarocks.org", + tool_version = "1.0.0", + api_version = "1", + }, + + lua_extension = "lua", + lua_interpreter = site_config.LUA_INTERPRETER or "lua", + downloader = site_config.LUAROCKS_DOWNLOADER or "wget", + md5checker = site_config.LUAROCKS_MD5CHECKER or "md5sum", + connection_timeout = 30, -- 0 = no timeout + + variables = { + MAKE = "make", + CC = "cc", + LD = "ld", + + CVS = "cvs", + GIT = "git", + SSCM = "sscm", + SVN = "svn", + HG = "hg", + + RSYNC = "rsync", + WGET = "wget", + SCP = "scp", + CURL = "curl", + + PWD = "pwd", + MKDIR = "mkdir", + RMDIR = "rmdir", + CP = "cp", + LS = "ls", + RM = "rm", + FIND = "find", + TEST = "test", + CHMOD = "chmod", + MKTEMP = "mktemp", + + ZIP = "zip", + UNZIP = "unzip -n", + GUNZIP = "gunzip", + BUNZIP2 = "bunzip2", + TAR = "tar", + + MD5SUM = "md5sum", + OPENSSL = "openssl", + MD5 = "md5", + STAT = "stat", + TOUCH = "touch", + + CMAKE = "cmake", + SEVENZ = "7z", + + RSYNCFLAGS = "--exclude=.git -Oavz", + STATFLAG = "-c '%a'", + CURLNOCERTFLAG = "", + WGETNOCERTFLAG = "", + }, + + external_deps_subdirs = site_config.LUAROCKS_EXTERNAL_DEPS_SUBDIRS or { + bin = "bin", + lib = "lib", + include = "include" + }, + runtime_external_deps_subdirs = site_config.LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS or { + bin = "bin", + lib = "lib", + include = "include" + }, + + rocks_provided = {} +} + +if cfg.platforms.windows then + local full_prefix = (site_config.LUAROCKS_PREFIX or (os.getenv("PROGRAMFILES")..[[\LuaRocks]])) + extra_luarocks_module_dir = full_prefix.."/lua/?.lua" + + home_config_file = home_config_file and home_config_file:gsub("\\","/") + defaults.fs_use_modules = false + defaults.arch = "win32-"..cfg.target_cpu + defaults.lib_extension = "dll" + defaults.external_lib_extension = "dll" + defaults.obj_extension = "obj" + defaults.external_deps_dirs = { "c:/external/" } + defaults.variables.LUA_BINDIR = site_config.LUA_BINDIR and site_config.LUA_BINDIR:gsub("\\", "/") or "c:/lua"..cfg.lua_version.."/bin" + defaults.variables.LUA_INCDIR = site_config.LUA_INCDIR and site_config.LUA_INCDIR:gsub("\\", "/") or "c:/lua"..cfg.lua_version.."/include" + defaults.variables.LUA_LIBDIR = site_config.LUA_LIBDIR and site_config.LUA_LIBDIR:gsub("\\", "/") or "c:/lua"..cfg.lua_version.."/lib" + + defaults.makefile = "Makefile.win" + defaults.variables.MAKE = "nmake" + defaults.variables.CC = "cl" + defaults.variables.RC = "rc" + defaults.variables.WRAPPER = full_prefix.."\\rclauncher.c" + defaults.variables.LD = "link" + defaults.variables.MT = "mt" + defaults.variables.LUALIB = "lua"..cfg.lua_version..".lib" + defaults.variables.CFLAGS = "/nologo /MD /O2" + defaults.variables.LIBFLAG = "/nologo /dll" + + local bins = { "SEVENZ", "CP", "FIND", "LS", "MD5SUM", + "MKDIR", "MV", "PWD", "RMDIR", "TEST", "UNAME", "WGET" } + for _, var in ipairs(bins) do + if defaults.variables[var] then + defaults.variables[var] = full_prefix.."\\tools\\"..defaults.variables[var] + end + end + + defaults.external_deps_patterns = { + bin = { "?.exe", "?.bat" }, + lib = { "?.lib", "?.dll", "lib?.dll" }, + include = { "?.h" } + } + defaults.runtime_external_deps_patterns = { + bin = { "?.exe", "?.bat" }, + lib = { "?.dll", "lib?.dll" }, + include = { "?.h" } + } + defaults.export_path = "SET PATH=%s" + defaults.export_path_separator = ";" + defaults.export_lua_path = "SET LUA_PATH=%s" + defaults.export_lua_cpath = "SET LUA_CPATH=%s" + defaults.wrapper_suffix = ".bat" + + local localappdata = os.getenv("LOCALAPPDATA") + if not localappdata then + -- for Windows versions below Vista + localappdata = os.getenv("USERPROFILE").."/Local Settings/Application Data" + end + defaults.local_cache = localappdata.."/LuaRocks/Cache" + defaults.web_browser = "start" +end + +if cfg.platforms.mingw32 then + defaults.obj_extension = "o" + defaults.cmake_generator = "MinGW Makefiles" + defaults.variables.MAKE = "mingw32-make" + defaults.variables.CC = "mingw32-gcc" + defaults.variables.RC = "windres" + defaults.variables.LD = "mingw32-gcc" + defaults.variables.CFLAGS = "-O2" + defaults.variables.LIBFLAG = "-shared" + defaults.makefile = "Makefile" + defaults.external_deps_patterns = { + bin = { "?.exe", "?.bat" }, + -- mingw lookup list from http://stackoverflow.com/a/15853231/1793220 + -- ...should we keep ?.lib at the end? It's not in the above list. + lib = { "lib?.dll.a", "?.dll.a", "lib?.a", "cyg?.dll", "lib?.dll", "?.dll", "?.lib" }, + include = { "?.h" } + } + defaults.runtime_external_deps_patterns = { + bin = { "?.exe", "?.bat" }, + lib = { "cyg?.dll", "?.dll", "lib?.dll" }, + include = { "?.h" } + } + +end + +if cfg.platforms.unix then + defaults.lib_extension = "so" + defaults.external_lib_extension = "so" + defaults.obj_extension = "o" + defaults.external_deps_dirs = { "/usr/local", "/usr" } + defaults.variables.LUA_BINDIR = site_config.LUA_BINDIR or "/usr/local/bin" + defaults.variables.LUA_INCDIR = site_config.LUA_INCDIR or "/usr/local/include" + defaults.variables.LUA_LIBDIR = site_config.LUA_LIBDIR or "/usr/local/lib" + defaults.variables.CFLAGS = "-O2" + defaults.cmake_generator = "Unix Makefiles" + defaults.variables.CC = "gcc" + defaults.variables.LD = "gcc" + defaults.gcc_rpath = true + defaults.variables.LIBFLAG = "-shared" + defaults.external_deps_patterns = { + bin = { "?" }, + lib = { "lib?.a", "lib?.so", "lib?.so.*" }, + include = { "?.h" } + } + defaults.runtime_external_deps_patterns = { + bin = { "?" }, + lib = { "lib?.so", "lib?.so.*" }, + include = { "?.h" } + } + defaults.export_path = "export PATH='%s'" + defaults.export_path_separator = ":" + defaults.export_lua_path = "export LUA_PATH='%s'" + defaults.export_lua_cpath = "export LUA_CPATH='%s'" + defaults.wrapper_suffix = "" + defaults.local_cache = cfg.home.."/.cache/luarocks" + if not defaults.variables.CFLAGS:match("-fPIC") then + defaults.variables.CFLAGS = defaults.variables.CFLAGS.." -fPIC" + end + defaults.web_browser = "xdg-open" +end + +if cfg.platforms.cygwin then + defaults.lib_extension = "so" -- can be overridden in the config file for mingw builds + defaults.arch = "cygwin-"..cfg.target_cpu + defaults.cmake_generator = "Unix Makefiles" + defaults.variables.CC = "echo -llua | xargs gcc" + defaults.variables.LD = "echo -llua | xargs gcc" + defaults.variables.LIBFLAG = "-shared" + defaults.link_lua_explicitly = true +end + +if cfg.platforms.msys then + -- msys is basically cygwin made out of mingw, meaning the subsytem is unixish + -- enough, yet we can freely mix with native win32 + defaults.external_deps_patterns = { + bin = { "?.exe", "?.bat", "?" }, + lib = { "lib?.so", "lib?.so.*", "lib?.dll.a", "?.dll.a", + "lib?.a", "lib?.dll", "?.dll", "?.lib" }, + include = { "?.h" } + } + defaults.runtime_external_deps_patterns = { + bin = { "?.exe", "?.bat" }, + lib = { "lib?.so", "?.dll", "lib?.dll" }, + include = { "?.h" } + } +end + + +if cfg.platforms.bsd then + defaults.variables.MAKE = "gmake" + defaults.variables.STATFLAG = "-f '%OLp'" +end + +if cfg.platforms.macosx then + defaults.variables.MAKE = "make" + defaults.external_lib_extension = "dylib" + defaults.arch = "macosx-"..cfg.target_cpu + defaults.variables.LIBFLAG = "-bundle -undefined dynamic_lookup -all_load" + defaults.variables.STAT = "/usr/bin/stat" + defaults.variables.STATFLAG = "-f '%A'" + local version = io.popen("sw_vers -productVersion"):read("*l") + version = tonumber(version and version:match("^[^.]+%.([^.]+)")) or 3 + if version >= 10 then + version = 8 + elseif version >= 5 then + version = 5 + else + defaults.gcc_rpath = false + end + defaults.variables.CC = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." gcc" + defaults.variables.LD = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." gcc" + defaults.web_browser = "open" +end + +if cfg.platforms.linux then + defaults.arch = "linux-"..cfg.target_cpu +end + +if cfg.platforms.freebsd then + defaults.arch = "freebsd-"..cfg.target_cpu + defaults.gcc_rpath = false + defaults.variables.CC = "cc" + defaults.variables.LD = "cc" +end + +if cfg.platforms.openbsd then + defaults.arch = "openbsd-"..cfg.target_cpu +end + +if cfg.platforms.netbsd then + defaults.arch = "netbsd-"..cfg.target_cpu +end + +if cfg.platforms.solaris then + defaults.arch = "solaris-"..cfg.target_cpu + --defaults.platforms = {"unix", "solaris"} + defaults.variables.MAKE = "gmake" +end + +-- Expose some more values detected by LuaRocks for use by rockspec authors. +defaults.variables.LIB_EXTENSION = defaults.lib_extension +defaults.variables.OBJ_EXTENSION = defaults.obj_extension +defaults.variables.LUAROCKS_PREFIX = site_config.LUAROCKS_PREFIX +defaults.variables.LUA = site_config.LUA_DIR_SET and (defaults.variables.LUA_BINDIR.."/"..defaults.lua_interpreter) or defaults.lua_interpreter + +-- Add built-in modules to rocks_provided +defaults.rocks_provided["lua"] = cfg.lua_version.."-1" + +if bit32 then -- Lua 5.2+ + defaults.rocks_provided["bit32"] = cfg.lua_version.."-1" +end + +if utf8 then -- Lua 5.3+ + defaults.rocks_provided["utf8"] = cfg.lua_version.."-1" +end + +if package.loaded.jit then + -- LuaJIT + local lj_version = package.loaded.jit.version:match("LuaJIT (.*)"):gsub("%-","") + --defaults.rocks_provided["luajit"] = lj_version.."-1" + defaults.rocks_provided["luabitop"] = lj_version.."-1" +end + +-- Use defaults: + +-- Populate some arrays with values from their 'defaults' counterparts +-- if they were not already set by user. +for _, entry in ipairs({"variables", "rocks_provided"}) do + if not cfg[entry] then + cfg[entry] = {} + end + for k,v in pairs(defaults[entry]) do + if not cfg[entry][k] then + cfg[entry][k] = v + end + end +end + +-- For values not set in the config file, use values from the 'defaults' table. +local cfg_mt = { + __index = function(t, k) + local default = defaults[k] + if default then + rawset(t, k, default) + end + return default + end +} +setmetatable(cfg, cfg_mt) + +if not cfg.check_certificates then + cfg.variables.CURLNOCERTFLAG = "-k" + cfg.variables.WGETNOCERTFLAG = "--no-check-certificate" +end + +function cfg.make_paths_from_tree(tree) + local lua_path, lib_path, bin_path + if type(tree) == "string" then + lua_path = tree..cfg.lua_modules_path + lib_path = tree..cfg.lib_modules_path + bin_path = tree.."/bin" + else + lua_path = tree.lua_dir or tree.root..cfg.lua_modules_path + lib_path = tree.lib_dir or tree.root..cfg.lib_modules_path + bin_path = tree.bin_dir or tree.root.."/bin" + end + return lua_path, lib_path, bin_path +end + +function cfg.package_paths(current) + local new_path, new_cpath, new_bin = {}, {}, {} + local function add_tree_to_paths(tree) + local lua_path, lib_path, bin_path = cfg.make_paths_from_tree(tree) + table.insert(new_path, lua_path.."/?.lua") + table.insert(new_path, lua_path.."/?/init.lua") + table.insert(new_cpath, lib_path.."/?."..cfg.lib_extension) + table.insert(new_bin, bin_path) + end + if current then + add_tree_to_paths(current) + end + for _,tree in ipairs(cfg.rocks_trees) do + add_tree_to_paths(tree) + end + if extra_luarocks_module_dir then + table.insert(new_path, extra_luarocks_module_dir) + end + return table.concat(new_path, ";"), table.concat(new_cpath, ";"), table.concat(new_bin, cfg.export_path_separator) +end + +function cfg.init_package_paths() + local lr_path, lr_cpath, lr_bin = cfg.package_paths() + package.path = util.remove_path_dupes(package.path .. ";" .. lr_path, ";") + package.cpath = util.remove_path_dupes(package.cpath .. ";" .. lr_cpath, ";") +end + +function cfg.which_config() + local ret = { + system = { + file = sys_config_file or sys_config_file_default, + ok = sys_config_ok, + }, + user = { + file = home_config_file or home_config_file_default, + ok = home_config_ok, + } + } + ret.nearest = (ret.user.ok and ret.user.file) or ret.system.file + return ret +end + +cfg.user_agent = "LuaRocks/"..cfg.program_version.." "..cfg.arch + +cfg.http_proxy = os.getenv("http_proxy") +cfg.https_proxy = os.getenv("https_proxy") +cfg.no_proxy = os.getenv("no_proxy") + +--- Check if platform was detected +-- @param query string: The platform name to check. +-- @return boolean: true if LuaRocks is currently running on queried platform. +function cfg.is_platform(query) + assert(type(query) == "string") + + for _, platform in ipairs(cfg.platforms) do + if platform == query then + return true + end + end +end + +return cfg diff --git a/Utils/luarocks/lua/luarocks/command_line.lua b/Utils/luarocks/lua/luarocks/command_line.lua new file mode 100644 index 000000000..ecf3a61b1 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/command_line.lua @@ -0,0 +1,199 @@ + +--- Functions for command-line scripts. +local command_line = {} + +local unpack = unpack or table.unpack + +local util = require("luarocks.util") +local cfg = require("luarocks.cfg") +local path = require("luarocks.path") +local dir = require("luarocks.dir") +local deps = require("luarocks.deps") +local fs = require("luarocks.fs") + +local program = util.this_program("luarocks") + +local function error_handler(err) + return debug.traceback("LuaRocks "..cfg.program_version.. + " bug (please report at https://github.com/keplerproject/luarocks/issues).\n"..err, 2) +end + +--- Display an error message and exit. +-- @param message string: The error message. +-- @param exitcode number: the exitcode to use +local function die(message, exitcode) + assert(type(message) == "string") + util.printerr("\nError: "..message) + + local ok, err = xpcall(util.run_scheduled_functions, error_handler) + if not ok then + util.printerr("\nError: "..err) + exitcode = cfg.errorcodes.CRASH + end + + os.exit(exitcode or cfg.errorcodes.UNSPECIFIED) +end + +local function replace_tree(flags, tree) + tree = dir.normalize(tree) + flags["tree"] = tree + path.use_tree(tree) +end + +--- Main command-line processor. +-- Parses input arguments and calls the appropriate driver function +-- to execute the action requested on the command-line, forwarding +-- to it any additional arguments passed by the user. +-- Uses the global table "commands", which contains +-- the loaded modules representing commands. +-- @param ... string: Arguments given on the command-line. +function command_line.run_command(...) + local args = {...} + local cmdline_vars = {} + for i = #args, 1, -1 do + local arg = args[i] + if arg:match("^[^-][^=]*=") then + local var, val = arg:match("^([A-Z_][A-Z0-9_]*)=(.*)") + if val then + cmdline_vars[var] = val + table.remove(args, i) + else + die("Invalid assignment: "..arg) + end + end + end + local nonflags = { util.parse_flags(unpack(args)) } + local flags = table.remove(nonflags, 1) + if flags.ERROR then + die(flags.ERROR.." See --help.") + end + + if flags["from"] then flags["server"] = flags["from"] end + if flags["only-from"] then flags["only-server"] = flags["only-from"] end + if flags["only-sources-from"] then flags["only-sources"] = flags["only-sources-from"] end + if flags["to"] then flags["tree"] = flags["to"] end + if flags["nodeps"] then + flags["deps-mode"] = "none" + end + + cfg.flags = flags + + local command + + if flags["verbose"] then -- setting it in the config file will kick-in earlier in the process + cfg.verbose = true + fs.verbose() + end + + if flags["timeout"] then -- setting it in the config file will kick-in earlier in the process + local timeout = tonumber(flags["timeout"]) + if timeout then + cfg.connection_timeout = timeout + else + die "Argument error: --timeout expects a numeric argument." + end + end + + if flags["version"] then + util.printout(program.." "..cfg.program_version) + util.printout(program_description) + util.printout() + os.exit(cfg.errorcodes.OK) + elseif flags["help"] or #nonflags == 0 then + command = "help" + else + command = table.remove(nonflags, 1) + end + command = command:gsub("-", "_") + + if cfg.local_by_default then + flags["local"] = true + end + + if flags["deps-mode"] and not deps.check_deps_mode_flag(flags["deps-mode"]) then + die("Invalid entry for --deps-mode.") + end + + if flags["branch"] then + cfg.branch = flags["branch"] + end + + if flags["tree"] then + local named = false + for _, tree in ipairs(cfg.rocks_trees) do + if type(tree) == "table" and flags["tree"] == tree.name then + if not tree.root then + die("Configuration error: tree '"..tree.name.."' has no 'root' field.") + end + replace_tree(flags, tree.root) + named = true + break + end + end + if not named then + local root_dir = fs.absolute_name(flags["tree"]) + replace_tree(flags, root_dir) + end + elseif flags["local"] then + if not cfg.home_tree then + die("The --local flag is meant for operating in a user's home directory.\n".. + "You are running as a superuser, which is intended for system-wide operation.\n".. + "To force using the superuser's home, use --tree explicitly.") + end + replace_tree(flags, cfg.home_tree) + else + local trees = cfg.rocks_trees + path.use_tree(trees[#trees]) + end + + if type(cfg.root_dir) == "string" then + cfg.root_dir = cfg.root_dir:gsub("/+$", "") + else + cfg.root_dir.root = cfg.root_dir.root:gsub("/+$", "") + end + cfg.rocks_dir = cfg.rocks_dir:gsub("/+$", "") + cfg.deploy_bin_dir = cfg.deploy_bin_dir:gsub("/+$", "") + cfg.deploy_lua_dir = cfg.deploy_lua_dir:gsub("/+$", "") + cfg.deploy_lib_dir = cfg.deploy_lib_dir:gsub("/+$", "") + + cfg.variables.ROCKS_TREE = cfg.rocks_dir + cfg.variables.SCRIPTS_DIR = cfg.deploy_bin_dir + + if flags["server"] then + local protocol, path = dir.split_url(flags["server"]) + table.insert(cfg.rocks_servers, 1, protocol.."://"..path) + end + + if flags["only-server"] then + cfg.rocks_servers = { flags["only-server"] } + end + + if flags["only-sources"] then + cfg.only_sources_from = flags["only-sources"] + end + + if command ~= "help" then + for k, v in pairs(cmdline_vars) do + cfg.variables[k] = v + end + end + + if not fs.current_dir() or fs.current_dir() == "" then + die("Current directory does not exist. Please run LuaRocks from an existing directory.") + end + + if commands[command] then + local cmd = require(commands[command]) + local call_ok, ok, err, exitcode = xpcall(function() return cmd.command(flags, unpack(nonflags)) end, error_handler) + if not call_ok then + die(ok, cfg.errorcodes.CRASH) + elseif not ok then + die(err, exitcode) + end + else + die("Unknown command: "..command) + end + util.run_scheduled_functions() +end + +return command_line diff --git a/Utils/luarocks/lua/luarocks/config_cmd.lua b/Utils/luarocks/lua/luarocks/config_cmd.lua new file mode 100644 index 000000000..fe3cc637d --- /dev/null +++ b/Utils/luarocks/lua/luarocks/config_cmd.lua @@ -0,0 +1,72 @@ +--- Module implementing the LuaRocks "config" command. +-- Queries information about the LuaRocks configuration. +local config_cmd = {} + +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") +local dir = require("luarocks.dir") + +util.add_run_function(config_cmd) +config_cmd.help_summary = "Query information about the LuaRocks configuration." +config_cmd.help_arguments = "" +config_cmd.help = [[ +--lua-incdir Path to Lua header files. + +--lua-libdir Path to Lua library files. + +--lua-ver Lua version (in major.minor format). e.g. 5.1 + +--system-config Location of the system config file. + +--user-config Location of the user config file. + +--rock-trees Rocks trees in use. First the user tree, then the system tree. +]] + +local function config_file(conf) + print(dir.normalize(conf.file)) + if conf.ok then + return true + else + return nil, "file not found" + end +end + +--- Driver function for "config" command. +-- @return boolean: True if succeeded, nil on errors. +function config_cmd.command(flags) + if flags["lua-incdir"] then + print(cfg.variables.LUA_INCDIR) + return true + end + if flags["lua-libdir"] then + print(cfg.variables.LUA_LIBDIR) + return true + end + if flags["lua-ver"] then + print(cfg.lua_version) + return true + end + local conf = cfg.which_config() + if flags["system-config"] then + return config_file(conf.system) + end + if flags["user-config"] then + return config_file(conf.user) + end + if flags["rock-trees"] then + for _, tree in ipairs(cfg.rocks_trees) do + if type(tree) == "string" then + util.printout(dir.normalize(tree)) + else + local name = tree.name and "\t"..tree.name or "" + util.printout(dir.normalize(tree.root)..name) + end + end + return true + end + + return nil, "Please provide a flag for querying configuration values. "..util.see_help("config") +end + +return config_cmd diff --git a/Utils/luarocks/lua/luarocks/deps.lua b/Utils/luarocks/lua/luarocks/deps.lua new file mode 100644 index 000000000..dcebec9b2 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/deps.lua @@ -0,0 +1,752 @@ + +--- Dependency handling functions. +-- Dependencies are represented in LuaRocks through strings with +-- a package name followed by a comma-separated list of constraints. +-- Each constraint consists of an operator and a version number. +-- In this string format, version numbers are represented as +-- naturally as possible, like they are used by upstream projects +-- (e.g. "2.0beta3"). Internally, LuaRocks converts them to a purely +-- numeric representation, allowing comparison following some +-- "common sense" heuristics. The precise specification of the +-- comparison criteria is the source code of this module, but the +-- test/test_deps.lua file included with LuaRocks provides some +-- insights on what these criteria are. +local deps = {} +package.loaded["luarocks.deps"] = deps + +local cfg = require("luarocks.cfg") +local manif_core = require("luarocks.manif_core") +local path = require("luarocks.path") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +local operators = { + ["=="] = "==", + ["~="] = "~=", + [">"] = ">", + ["<"] = "<", + [">="] = ">=", + ["<="] = "<=", + ["~>"] = "~>", + -- plus some convenience translations + [""] = "==", + ["="] = "==", + ["!="] = "~=" +} + +local deltas = { + scm = 1100, + cvs = 1000, + rc = -1000, + pre = -10000, + beta = -100000, + alpha = -1000000 +} + +local version_mt = { + --- Equality comparison for versions. + -- All version numbers must be equal. + -- If both versions have revision numbers, they must be equal; + -- otherwise the revision number is ignored. + -- @param v1 table: version table to compare. + -- @param v2 table: version table to compare. + -- @return boolean: true if they are considered equivalent. + __eq = function(v1, v2) + if #v1 ~= #v2 then + return false + end + for i = 1, #v1 do + if v1[i] ~= v2[i] then + return false + end + end + if v1.revision and v2.revision then + return (v1.revision == v2.revision) + end + return true + end, + --- Size comparison for versions. + -- All version numbers are compared. + -- If both versions have revision numbers, they are compared; + -- otherwise the revision number is ignored. + -- @param v1 table: version table to compare. + -- @param v2 table: version table to compare. + -- @return boolean: true if v1 is considered lower than v2. + __lt = function(v1, v2) + for i = 1, math.max(#v1, #v2) do + local v1i, v2i = v1[i] or 0, v2[i] or 0 + if v1i ~= v2i then + return (v1i < v2i) + end + end + if v1.revision and v2.revision then + return (v1.revision < v2.revision) + end + return false + end +} + +local version_cache = {} +setmetatable(version_cache, { + __mode = "kv" +}) + +--- Parse a version string, converting to table format. +-- A version table contains all components of the version string +-- converted to numeric format, stored in the array part of the table. +-- If the version contains a revision, it is stored numerically +-- in the 'revision' field. The original string representation of +-- the string is preserved in the 'string' field. +-- Returned version tables use a metatable +-- allowing later comparison through relational operators. +-- @param vstring string: A version number in string format. +-- @return table or nil: A version table or nil +-- if the input string contains invalid characters. +function deps.parse_version(vstring) + if not vstring then return nil end + assert(type(vstring) == "string") + + local cached = version_cache[vstring] + if cached then + return cached + end + + local version = {} + local i = 1 + + local function add_token(number) + version[i] = version[i] and version[i] + number/100000 or number + i = i + 1 + end + + -- trim leading and trailing spaces + vstring = vstring:match("^%s*(.*)%s*$") + version.string = vstring + -- store revision separately if any + local main, revision = vstring:match("(.*)%-(%d+)$") + if revision then + vstring = main + version.revision = tonumber(revision) + end + while #vstring > 0 do + -- extract a number + local token, rest = vstring:match("^(%d+)[%.%-%_]*(.*)") + if token then + add_token(tonumber(token)) + else + -- extract a word + token, rest = vstring:match("^(%a+)[%.%-%_]*(.*)") + if not token then + util.printerr("Warning: version number '"..vstring.."' could not be parsed.") + version[i] = 0 + break + end + version[i] = deltas[token] or (token:byte() / 1000) + end + vstring = rest + end + setmetatable(version, version_mt) + version_cache[vstring] = version + return version +end + +--- Utility function to compare version numbers given as strings. +-- @param a string: one version. +-- @param b string: another version. +-- @return boolean: True if a > b. +function deps.compare_versions(a, b) + return deps.parse_version(a) > deps.parse_version(b) +end + +--- Consumes a constraint from a string, converting it to table format. +-- For example, a string ">= 1.0, > 2.0" is converted to a table in the +-- format {op = ">=", version={1,0}} and the rest, "> 2.0", is returned +-- back to the caller. +-- @param input string: A list of constraints in string format. +-- @return (table, string) or nil: A table representing the same +-- constraints and the string with the unused input, or nil if the +-- input string is invalid. +local function parse_constraint(input) + assert(type(input) == "string") + + local no_upgrade, op, version, rest = input:match("^(@?)([<>=~!]*)%s*([%w%.%_%-]+)[%s,]*(.*)") + local _op = operators[op] + version = deps.parse_version(version) + if not _op then + return nil, "Encountered bad constraint operator: '"..tostring(op).."' in '"..input.."'" + end + if not version then + return nil, "Could not parse version from constraint: '"..input.."'" + end + return { op = _op, version = version, no_upgrade = no_upgrade=="@" and true or nil }, rest +end + +--- Convert a list of constraints from string to table format. +-- For example, a string ">= 1.0, < 2.0" is converted to a table in the format +-- {{op = ">=", version={1,0}}, {op = "<", version={2,0}}}. +-- Version tables use a metatable allowing later comparison through +-- relational operators. +-- @param input string: A list of constraints in string format. +-- @return table or nil: A table representing the same constraints, +-- or nil if the input string is invalid. +function deps.parse_constraints(input) + assert(type(input) == "string") + + local constraints, constraint, oinput = {}, nil, input + while #input > 0 do + constraint, input = parse_constraint(input) + if constraint then + table.insert(constraints, constraint) + else + return nil, "Failed to parse constraint '"..tostring(oinput).."' with error: ".. input + end + end + return constraints +end + +--- Convert a dependency from string to table format. +-- For example, a string "foo >= 1.0, < 2.0" +-- is converted to a table in the format +-- {name = "foo", constraints = {{op = ">=", version={1,0}}, +-- {op = "<", version={2,0}}}}. Version tables use a metatable +-- allowing later comparison through relational operators. +-- @param dep string: A dependency in string format +-- as entered in rockspec files. +-- @return table or nil: A table representing the same dependency relation, +-- or nil if the input string is invalid. +function deps.parse_dep(dep) + assert(type(dep) == "string") + + local name, rest = dep:match("^%s*([a-zA-Z0-9][a-zA-Z0-9%.%-%_]*)%s*(.*)") + if not name then return nil, "failed to extract dependency name from '"..tostring(dep).."'" end + local constraints, err = deps.parse_constraints(rest) + if not constraints then return nil, err end + return { name = name, constraints = constraints } +end + +--- Convert a version table to a string. +-- @param v table: The version table +-- @param internal boolean or nil: Whether to display versions in their +-- internal representation format or how they were specified. +-- @return string: The dependency information pretty-printed as a string. +function deps.show_version(v, internal) + assert(type(v) == "table") + assert(type(internal) == "boolean" or not internal) + + return (internal + and table.concat(v, ":")..(v.revision and tostring(v.revision) or "") + or v.string) +end + +--- Convert a dependency in table format to a string. +-- @param dep table: The dependency in table format +-- @param internal boolean or nil: Whether to display versions in their +-- internal representation format or how they were specified. +-- @return string: The dependency information pretty-printed as a string. +function deps.show_dep(dep, internal) + assert(type(dep) == "table") + assert(type(internal) == "boolean" or not internal) + + if #dep.constraints > 0 then + local pretty = {} + for _, c in ipairs(dep.constraints) do + table.insert(pretty, c.op .. " " .. deps.show_version(c.version, internal)) + end + return dep.name.." "..table.concat(pretty, ", ") + else + return dep.name + end +end + +--- A more lenient check for equivalence between versions. +-- This returns true if the requested components of a version +-- match and ignore the ones that were not given. For example, +-- when requesting "2", then "2", "2.1", "2.3.5-9"... all match. +-- When requesting "2.1", then "2.1", "2.1.3" match, but "2.2" +-- doesn't. +-- @param version string or table: Version to be tested; may be +-- in string format or already parsed into a table. +-- @param requested string or table: Version requested; may be +-- in string format or already parsed into a table. +-- @return boolean: True if the tested version matches the requested +-- version, false otherwise. +local function partial_match(version, requested) + assert(type(version) == "string" or type(version) == "table") + assert(type(requested) == "string" or type(version) == "table") + + if type(version) ~= "table" then version = deps.parse_version(version) end + if type(requested) ~= "table" then requested = deps.parse_version(requested) end + if not version or not requested then return false end + + for i, ri in ipairs(requested) do + local vi = version[i] or 0 + if ri ~= vi then return false end + end + if requested.revision then + return requested.revision == version.revision + end + return true +end + +--- Check if a version satisfies a set of constraints. +-- @param version table: A version in table format +-- @param constraints table: An array of constraints in table format. +-- @return boolean: True if version satisfies all constraints, +-- false otherwise. +function deps.match_constraints(version, constraints) + assert(type(version) == "table") + assert(type(constraints) == "table") + local ok = true + setmetatable(version, version_mt) + for _, constr in pairs(constraints) do + if type(constr.version) == "string" then + constr.version = deps.parse_version(constr.version) + end + local constr_version, constr_op = constr.version, constr.op + setmetatable(constr_version, version_mt) + if constr_op == "==" then ok = version == constr_version + elseif constr_op == "~=" then ok = version ~= constr_version + elseif constr_op == ">" then ok = version > constr_version + elseif constr_op == "<" then ok = version < constr_version + elseif constr_op == ">=" then ok = version >= constr_version + elseif constr_op == "<=" then ok = version <= constr_version + elseif constr_op == "~>" then ok = partial_match(version, constr_version) + end + if not ok then break end + end + return ok +end + +--- Attempt to match a dependency to an installed rock. +-- @param dep table: A dependency parsed in table format. +-- @param blacklist table: Versions that can't be accepted. Table where keys +-- are program versions and values are 'true'. +-- @return string or nil: latest installed version of the rock matching the dependency +-- or nil if it could not be matched. +local function match_dep(dep, blacklist, deps_mode) + assert(type(dep) == "table") + + local versions + if cfg.rocks_provided[dep.name] then + -- provided rocks have higher priority than manifest's rocks + versions = { cfg.rocks_provided[dep.name] } + else + versions = manif_core.get_versions(dep.name, deps_mode) + end + + local latest_version + for _, vstring in ipairs(versions) do + if not blacklist or not blacklist[vstring] then + local version = deps.parse_version(vstring) + if deps.match_constraints(version, dep.constraints) then + if not latest_version or version > latest_version then + latest_version = version + end + end + end + end + + return latest_version and latest_version.string +end + +--- Attempt to match dependencies of a rockspec to installed rocks. +-- @param rockspec table: The rockspec loaded as a table. +-- @param blacklist table or nil: Program versions to not use as valid matches. +-- Table where keys are program names and values are tables where keys +-- are program versions and values are 'true'. +-- @return table, table, table: A table where keys are dependencies parsed +-- in table format and values are tables containing fields 'name' and +-- version' representing matches; a table of missing dependencies +-- parsed as tables; and a table of "no-upgrade" missing dependencies +-- (to be used in plugin modules so that a plugin does not force upgrade of +-- its parent application). +function deps.match_deps(rockspec, blacklist, deps_mode) + assert(type(rockspec) == "table") + assert(type(blacklist) == "table" or not blacklist) + local matched, missing, no_upgrade = {}, {}, {} + + for _, dep in ipairs(rockspec.dependencies) do + local found = match_dep(dep, blacklist and blacklist[dep.name] or nil, deps_mode) + if found then + if not cfg.rocks_provided[dep.name] then + matched[dep] = {name = dep.name, version = found} + end + else + if dep.constraints[1] and dep.constraints[1].no_upgrade then + no_upgrade[dep.name] = dep + else + missing[dep.name] = dep + end + end + end + return matched, missing, no_upgrade +end + +--- Return a set of values of a table. +-- @param tbl table: The input table. +-- @return table: The array of keys. +local function values_set(tbl) + local set = {} + for _, v in pairs(tbl) do + set[v] = true + end + return set +end + +local function rock_status(name, deps_mode) + local search = require("luarocks.search") + local installed = match_dep(search.make_query(name), nil, deps_mode) + local installation_type = cfg.rocks_provided[name] and "provided by VM" or "installed" + return installed and installed.." "..installation_type or "not installed" +end + +--- Check depenendencies of a package and report any missing ones. +-- @param name string: package name. +-- @param version string: package version. +-- @param dependencies table: array of dependencies. +-- @param deps_mode string: Which trees to check dependencies for: +-- "one" for the current default tree, "all" for all trees, +-- "order" for all trees with priority >= the current default, "none" for no trees. +function deps.report_missing_dependencies(name, version, dependencies, deps_mode) + local first_missing_dep = true + + for _, dep in ipairs(dependencies) do + if not match_dep(dep, nil, deps_mode) then + if first_missing_dep then + util.printout(("Missing dependencies for %s %s:"):format(name, version)) + first_missing_dep = false + end + + util.printout((" %s (%s)"):format(deps.show_dep(dep), rock_status(dep.name, deps_mode))) + end + end +end + +--- Check dependencies of a rock and attempt to install any missing ones. +-- Packages are installed using the LuaRocks "install" command. +-- Aborts the program if a dependency could not be fulfilled. +-- @param rockspec table: A rockspec in table format. +-- @return boolean or (nil, string, [string]): True if no errors occurred, or +-- nil and an error message if any test failed, followed by an optional +-- error code. +function deps.fulfill_dependencies(rockspec, deps_mode) + + local search = require("luarocks.search") + local install = require("luarocks.install") + + if rockspec.supported_platforms then + if not deps.platforms_set then + deps.platforms_set = values_set(cfg.platforms) + end + local supported = nil + for _, plat in pairs(rockspec.supported_platforms) do + local neg, plat = plat:match("^(!?)(.*)") + if neg == "!" then + if deps.platforms_set[plat] then + return nil, "This rockspec for "..rockspec.package.." does not support "..plat.." platforms." + end + else + if deps.platforms_set[plat] then + supported = true + else + if supported == nil then + supported = false + end + end + end + end + if supported == false then + local plats = table.concat(cfg.platforms, ", ") + return nil, "This rockspec for "..rockspec.package.." does not support "..plats.." platforms." + end + end + + deps.report_missing_dependencies(rockspec.name, rockspec.version, rockspec.dependencies, deps_mode) + + local first_missing_dep = true + + for _, dep in ipairs(rockspec.dependencies) do + if not match_dep(dep, nil, deps_mode) then + if first_missing_dep then + util.printout() + first_missing_dep = false + end + + util.printout(("%s %s depends on %s (%s)"):format( + rockspec.name, rockspec.version, deps.show_dep(dep), rock_status(dep.name, deps_mode))) + + if dep.constraints[1] and dep.constraints[1].no_upgrade then + util.printerr("This version of "..rockspec.name.." is designed for use with") + util.printerr(deps.show_dep(dep)..", but is configured to avoid upgrading it") + util.printerr("automatically. Please upgrade "..dep.name.." with") + util.printerr(" luarocks install "..dep.name) + util.printerr("or choose an older version of "..rockspec.name.." with") + util.printerr(" luarocks search "..rockspec.name) + return nil, "Failed matching dependencies" + end + + local url, search_err = search.find_suitable_rock(dep) + if not url then + return nil, "Could not satisfy dependency "..deps.show_dep(dep)..": "..search_err + end + util.printout("Installing "..url) + local ok, install_err, errcode = install.command({deps_mode = deps_mode}, url) + if not ok then + return nil, "Failed installing dependency: "..url.." - "..install_err, errcode + end + end + end + + return true +end + +--- If filename matches a pattern, return the capture. +-- For example, given "libfoo.so" and "lib?.so" is a pattern, +-- returns "foo" (which can then be used to build names +-- based on other patterns. +-- @param file string: a filename +-- @param pattern string: a pattern, where ? is to be matched by the filename. +-- @return string The pattern, if found, or nil. +local function deconstruct_pattern(file, pattern) + local depattern = "^"..(pattern:gsub("%.", "%%."):gsub("%*", ".*"):gsub("?", "(.*)")).."$" + return (file:match(depattern)) +end + +--- Construct all possible patterns for a name and add to the files array. +-- Run through the patterns array replacing all occurrences of "?" +-- with the given file name and store them in the files array. +-- @param file string A raw name (e.g. "foo") +-- @param array of string An array of patterns with "?" as the wildcard +-- (e.g. {"?.so", "lib?.so"}) +-- @param files The array of constructed names +local function add_all_patterns(file, patterns, files) + for _, pattern in ipairs(patterns) do + table.insert(files, (pattern:gsub("?", file))) + end +end + +--- Set up path-related variables for external dependencies. +-- For each key in the external_dependencies table in the +-- rockspec file, four variables are created: _DIR, _BINDIR, +-- _INCDIR and _LIBDIR. These are not overwritten +-- if already set (e.g. by the LuaRocks config file or through the +-- command-line). Values in the external_dependencies table +-- are tables that may contain a "header" or a "library" field, +-- with filenames to be tested for existence. +-- @param rockspec table: The rockspec table. +-- @param mode string: if "build" is given, checks all files; +-- if "install" is given, do not scan for headers. +-- @return boolean or (nil, string): True if no errors occurred, or +-- nil and an error message if any test failed. +function deps.check_external_deps(rockspec, mode) + assert(type(rockspec) == "table") + + local fs = require("luarocks.fs") + + local vars = rockspec.variables + local patterns = cfg.external_deps_patterns + local subdirs = cfg.external_deps_subdirs + if mode == "install" then + patterns = cfg.runtime_external_deps_patterns + subdirs = cfg.runtime_external_deps_subdirs + end + if rockspec.external_dependencies then + for name, ext_files in util.sortedpairs(rockspec.external_dependencies) do + local ok = true + local failed_files = {program = {}, header = {}, library = {}} + local failed_dirname + local failed_testfile + for _, extdir in ipairs(cfg.external_deps_dirs) do + ok = true + local prefix = vars[name.."_DIR"] + local dirs = { + BINDIR = { subdir = subdirs.bin, testfile = "program", pattern = patterns.bin }, + INCDIR = { subdir = subdirs.include, testfile = "header", pattern = patterns.include }, + LIBDIR = { subdir = subdirs.lib, testfile = "library", pattern = patterns.lib } + } + if mode == "install" then + dirs.INCDIR = nil + end + if not prefix then + prefix = extdir + end + if type(prefix) == "table" then + if prefix.bin then + dirs.BINDIR.subdir = prefix.bin + end + if prefix.include then + if dirs.INCDIR then + dirs.INCDIR.subdir = prefix.include + end + end + if prefix.lib then + dirs.LIBDIR.subdir = prefix.lib + end + prefix = prefix.prefix + end + for dirname, dirdata in util.sortedpairs(dirs) do + local paths + local path_var_value = vars[name.."_"..dirname] + if path_var_value then + paths = { path_var_value } + elseif type(dirdata.subdir) == "table" then + paths = {} + for i,v in ipairs(dirdata.subdir) do + paths[i] = dir.path(prefix, v) + end + else + paths = { dir.path(prefix, dirdata.subdir) } + end + dirdata.dir = paths[1] + local file = ext_files[dirdata.testfile] + if file then + local files = {} + if not file:match("%.") then + add_all_patterns(file, dirdata.pattern, files) + else + for _, pattern in ipairs(dirdata.pattern) do + local matched = deconstruct_pattern(file, pattern) + if matched then + add_all_patterns(matched, dirdata.pattern, files) + end + end + table.insert(files, file) + end + local found = false + for _, f in ipairs(files) do + + -- small convenience hack + if f:match("%.so$") or f:match("%.dylib$") or f:match("%.dll$") then + f = f:gsub("%.[^.]+$", "."..cfg.external_lib_extension) + end + + local pattern + if f:match("%*") then + pattern = f:gsub("%.", "%%."):gsub("%*", ".*") + f = "matching "..f + end + + for _, d in ipairs(paths) do + if pattern then + for entry in fs.dir(d) do + if entry:match(pattern) then + found = true + break + end + end + else + found = fs.is_file(dir.path(d, f)) + end + if found then + dirdata.dir = d + break + else + table.insert(failed_files[dirdata.testfile], f.." in "..d) + end + end + if found then + break + end + end + if not found then + ok = false + failed_dirname = dirname + failed_testfile = dirdata.testfile + break + end + end + end + if ok then + for dirname, dirdata in pairs(dirs) do + vars[name.."_"..dirname] = dirdata.dir + end + vars[name.."_DIR"] = prefix + break + end + end + if not ok then + local lines = {"Could not find "..failed_testfile.." file for "..name} + + local failed_paths = {} + for _, failed_file in ipairs(failed_files[failed_testfile]) do + if not failed_paths[failed_file] then + failed_paths[failed_file] = true + table.insert(lines, " No file "..failed_file) + end + end + + table.insert(lines, "You may have to install "..name.." in your system and/or pass "..name.."_DIR or "..name.."_"..failed_dirname.." to the luarocks command.") + table.insert(lines, "Example: luarocks install "..rockspec.name.." "..name.."_DIR=/usr/local") + + return nil, table.concat(lines, "\n"), "dependency" + end + end + end + return true +end + +--- Recursively add satisfied dependencies of a package to a table, +-- to build a transitive closure of all dependent packages. +-- Additionally ensures that `dependencies` table of the manifest is up-to-date. +-- @param results table: The results table being built, maps package names to versions. +-- @param manifest table: The manifest table containing dependencies. +-- @param name string: Package name. +-- @param version string: Package version. +function deps.scan_deps(results, manifest, name, version, deps_mode) + assert(type(results) == "table") + assert(type(manifest) == "table") + assert(type(name) == "string") + assert(type(version) == "string") + + local fetch = require("luarocks.fetch") + + if results[name] then + return + end + if not manifest.dependencies then manifest.dependencies = {} end + local dependencies = manifest.dependencies + if not dependencies[name] then dependencies[name] = {} end + local dependencies_name = dependencies[name] + local deplist = dependencies_name[version] + local rockspec, err + if not deplist then + rockspec, err = fetch.load_local_rockspec(path.rockspec_file(name, version), false) + if not rockspec then + util.printerr("Couldn't load rockspec for "..name.." "..version..": "..err) + return + end + dependencies_name[version] = rockspec.dependencies + else + rockspec = { dependencies = deplist } + end + local matched = deps.match_deps(rockspec, nil, deps_mode) + results[name] = version + for _, match in pairs(matched) do + deps.scan_deps(results, manifest, match.name, match.version, deps_mode) + end +end + +local valid_deps_modes = { + one = true, + order = true, + all = true, + none = true, +} + +function deps.check_deps_mode_flag(flag) + return valid_deps_modes[flag] +end + +function deps.get_deps_mode(flags) + if flags["deps-mode"] then + return flags["deps-mode"] + else + return cfg.deps_mode + end +end + +function deps.deps_mode_to_flag(deps_mode) + return "--deps-mode="..deps_mode +end + +return deps diff --git a/Utils/luarocks/lua/luarocks/dir.lua b/Utils/luarocks/lua/luarocks/dir.lua new file mode 100644 index 000000000..f72ebd6c1 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/dir.lua @@ -0,0 +1,74 @@ + +--- Generic utilities for handling pathnames. +local dir = {} +package.loaded["luarocks.dir"] = dir + +dir.separator = "/" + +--- Strip the path off a path+filename. +-- @param pathname string: A path+name, such as "/a/b/c" +-- or "\a\b\c". +-- @return string: The filename without its path, such as "c". +function dir.base_name(pathname) + assert(type(pathname) == "string") + + local base = pathname:gsub("[/\\]*$", ""):match(".*[/\\]([^/\\]*)") + return base or pathname +end + +--- Strip the name off a path+filename. +-- @param pathname string: A path+name, such as "/a/b/c". +-- @return string: The filename without its path, such as "/a/b". +-- For entries such as "/a/b/", "/a" is returned. If there are +-- no directory separators in input, "" is returned. +function dir.dir_name(pathname) + assert(type(pathname) == "string") + return (pathname:gsub("/*$", ""):match("(.*)[/]+[^/]*")) or "" +end + +--- Describe a path in a cross-platform way. +-- Use this function to avoid platform-specific directory +-- separators in other modules. Removes trailing slashes from +-- each component given, to avoid repeated separators. +-- Separators inside strings are kept, to handle URLs containing +-- protocols. +-- @param ... strings representing directories +-- @return string: a string with a platform-specific representation +-- of the path. +function dir.path(...) + local t = {...} + while t[1] == "" do + table.remove(t, 1) + end + return (table.concat(t, "/"):gsub("([^:])/+", "%1/"):gsub("^/+", "/"):gsub("/*$", "")) +end + +--- Split protocol and path from an URL or local pathname. +-- URLs should be in the "protocol://path" format. +-- For local pathnames, "file" is returned as the protocol. +-- @param url string: an URL or a local pathname. +-- @return string, string: the protocol, and the pathname without the protocol. +function dir.split_url(url) + assert(type(url) == "string") + + local protocol, pathname = url:match("^([^:]*)://(.*)") + if not protocol then + protocol = "file" + pathname = url + end + return protocol, pathname +end + +--- Normalize a url or local path. +-- URLs should be in the "protocol://path" format. System independent +-- forward slashes are used, removing trailing and double slashes +-- @param url string: an URL or a local pathname. +-- @return string: Normalized result. +function dir.normalize(name) + local protocol, pathname = dir.split_url(name) + pathname = pathname:gsub("\\", "/"):gsub("(.)/*$", "%1"):gsub("//", "/") + if protocol ~= "file" then pathname = protocol .."://"..pathname end + return pathname +end + +return dir diff --git a/Utils/luarocks/lua/luarocks/doc.lua b/Utils/luarocks/lua/luarocks/doc.lua new file mode 100644 index 000000000..423ebe027 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/doc.lua @@ -0,0 +1,157 @@ + +--- Module implementing the LuaRocks "doc" command. +-- Shows documentation for an installed rock. +local doc = {} +package.loaded["luarocks.doc"] = doc + +local util = require("luarocks.util") +local search = require("luarocks.search") +local path = require("luarocks.path") +local dir = require("luarocks.dir") +local fetch = require("luarocks.fetch") +local fs = require("luarocks.fs") +local download = require("luarocks.download") + +util.add_run_function(doc) +doc.help_summary = "Show documentation for an installed rock." + +doc.help = [[ + is an existing package name. +Without any flags, tries to load the documentation +using a series of heuristics. +With these flags, return only the desired information: + +--home Open the home page of project. +--list List documentation files only. + +For more information about a rock, see the 'show' command. +]] + +local function show_homepage(homepage, name, version) + if not homepage then + return nil, "No 'homepage' field in rockspec for "..name.." "..version + end + util.printout("Opening "..homepage.." ...") + fs.browser(homepage) + return true +end + +local function try_to_open_homepage(name, version) + local temp_dir, err = fs.make_temp_dir("doc-"..name.."-"..(version or "")) + if not temp_dir then + return nil, "Failed creating temporary directory: "..err + end + util.schedule_function(fs.delete, temp_dir) + local ok, err = fs.change_dir(temp_dir) + if not ok then return nil, err end + local filename, err = download.download("rockspec", name, version) + if not filename then return nil, err end + local rockspec, err = fetch.load_local_rockspec(filename) + if not rockspec then return nil, err end + fs.pop_dir() + local descript = rockspec.description or {} + if not descript.homepage then return nil, "No homepage defined for "..name end + return show_homepage(descript.homepage, name, version) +end + +--- Driver function for "doc" command. +-- @param name or nil: an existing package name. +-- @param version string or nil: a version may also be passed. +-- @return boolean: True if succeeded, nil on errors. +function doc.command(flags, name, version) + if not name then + return nil, "Argument missing. "..util.see_help("doc") + end + + name = name:lower() + + local iname, iversion, repo = search.pick_installed_rock(name, version, flags["tree"]) + if not iname then + util.printout(name..(version and " "..version or "").." is not installed. Looking for it in the rocks servers...") + return try_to_open_homepage(name, version) + end + name, version = iname, iversion + + local rockspec, err = fetch.load_local_rockspec(path.rockspec_file(name, version, repo)) + if not rockspec then return nil,err end + local descript = rockspec.description or {} + + if flags["home"] then + return show_homepage(descript.homepage, name, version) + end + + local directory = path.install_dir(name,version,repo) + + local docdir + local directories = { "doc", "docs" } + for _, d in ipairs(directories) do + local dirname = dir.path(directory, d) + if fs.is_dir(dirname) then + docdir = dirname + break + end + end + if not docdir then + if descript.homepage and not flags["list"] then + util.printout("Local documentation directory not found -- opening "..descript.homepage.." ...") + fs.browser(descript.homepage) + return true + end + return nil, "Documentation directory not found for "..name.." "..version + end + + docdir = dir.normalize(docdir):gsub("/+", "/") + local files = fs.find(docdir) + local htmlpatt = "%.html?$" + local extensions = { htmlpatt, "%.md$", "%.txt$", "%.textile$", "" } + local basenames = { "index", "readme", "manual" } + + local porcelain = flags["porcelain"] + if #files > 0 then + util.title("Documentation files for "..name.." "..version, porcelain) + if porcelain then + for _, file in ipairs(files) do + util.printout(docdir.."/"..file) + end + else + util.printout(docdir.."/") + for _, file in ipairs(files) do + util.printout("\t"..file) + end + end + end + + if flags["list"] then + return true + end + + for _, extension in ipairs(extensions) do + for _, basename in ipairs(basenames) do + local filename = basename..extension + local found + for _, file in ipairs(files) do + if file:lower():match(filename) and ((not found) or #file < #found) then + found = file + end + end + if found then + local pathname = dir.path(docdir, found) + util.printout() + util.printout("Opening "..pathname.." ...") + util.printout() + local ok = fs.browser(pathname) + if not ok and not pathname:match(htmlpatt) then + local fd = io.open(pathname, "r") + util.printout(fd:read("*a")) + fd:close() + end + return true + end + end + end + + return true +end + + +return doc diff --git a/Utils/luarocks/lua/luarocks/download.lua b/Utils/luarocks/lua/luarocks/download.lua new file mode 100644 index 000000000..e434cdbb2 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/download.lua @@ -0,0 +1,109 @@ + +--- Module implementing the luarocks "download" command. +-- Download a rock from the repository. +local download = {} +package.loaded["luarocks.download"] = download + +local util = require("luarocks.util") +local path = require("luarocks.path") +local fetch = require("luarocks.fetch") +local search = require("luarocks.search") +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local cfg = require("luarocks.cfg") + +util.add_run_function(download) +download.help_summary = "Download a specific rock file from a rocks server." +download.help_arguments = "[--all] [--arch= | --source | --rockspec] [ []]" + +download.help = [[ +--all Download all files if there are multiple matches. +--source Download .src.rock if available. +--rockspec Download .rockspec if available. +--arch= Download rock for a specific architecture. +]] + +local function get_file(filename) + local protocol, pathname = dir.split_url(filename) + if protocol == "file" then + local ok, err = fs.copy(pathname, fs.current_dir(), cfg.perm_read) + if ok then + return pathname + else + return nil, err + end + else + return fetch.fetch_url(filename) + end +end + +function download.download(arch, name, version, all) + local query = search.make_query(name, version) + if arch then query.arch = arch end + local search_err + + if all then + if name == "" then query.exact_name = false end + local results = search.search_repos(query) + local has_result = false + local all_ok = true + local any_err = "" + for name, result in pairs(results) do + for version, items in pairs(result) do + for _, item in ipairs(items) do + -- Ignore provided rocks. + if item.arch ~= "installed" then + has_result = true + local filename = path.make_url(item.repo, name, version, item.arch) + local ok, err = get_file(filename) + if not ok then + all_ok = false + any_err = any_err .. "\n" .. err + end + end + end + end + end + + if has_result then + return all_ok, any_err + end + else + local url + url, search_err = search.find_suitable_rock(query) + if url then + return get_file(url) + end + end + return nil, "Could not find a result named "..name..(version and " "..version or "").. + (search_err and ": "..search_err or ".") +end + +--- Driver function for the "download" command. +-- @param name string: a rock name. +-- @param version string or nil: if the name of a package is given, a +-- version may also be passed. +-- @return boolean or (nil, string): true if successful or nil followed +-- by an error message. +function download.command(flags, name, version) + assert(type(version) == "string" or not version) + if type(name) ~= "string" and not flags["all"] then + return nil, "Argument missing. "..util.see_help("download") + end + if not name then name, version = "", "" end + + local arch + + if flags["source"] then + arch = "src" + elseif flags["rockspec"] then + arch = "rockspec" + elseif flags["arch"] then + arch = flags["arch"] + end + + local dl, err = download.download(arch, name:lower(), version, flags["all"]) + return dl and true, err +end + +return download diff --git a/Utils/luarocks/lua/luarocks/fetch.lua b/Utils/luarocks/lua/luarocks/fetch.lua new file mode 100644 index 000000000..76f366cd2 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch.lua @@ -0,0 +1,394 @@ + +--- Functions related to fetching and loading local and remote files. +local fetch = {} +package.loaded["luarocks.fetch"] = fetch + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local type_check = require("luarocks.type_check") +local path = require("luarocks.path") +local deps = require("luarocks.deps") +local persist = require("luarocks.persist") +local util = require("luarocks.util") +local cfg = require("luarocks.cfg") + +function fetch.is_basic_protocol(protocol, remote) + return protocol == "http" or protocol == "https" or protocol == "ftp" or (not remote and protocol == "file") +end + +--- Fetch a local or remote file. +-- Make a remote or local URL/pathname local, fetching the file if necessary. +-- Other "fetch" and "load" functions use this function to obtain files. +-- If a local pathname is given, it is returned as a result. +-- @param url string: a local pathname or a remote URL. +-- @param filename string or nil: this function attempts to detect the +-- resulting local filename of the remote file as the basename of the URL; +-- if that is not correct (due to a redirection, for example), the local +-- filename can be given explicitly as this second argument. +-- @return string or (nil, string, [string]): the absolute local pathname for the +-- fetched file, or nil and a message in case of errors, followed by +-- an optional error code. +function fetch.fetch_url(url, filename, cache) + assert(type(url) == "string") + assert(type(filename) == "string" or not filename) + + local protocol, pathname = dir.split_url(url) + if protocol == "file" then + return fs.absolute_name(pathname) + elseif fetch.is_basic_protocol(protocol, true) then + local ok, name = fs.download(url, filename, cache) + if not ok then + return nil, "Failed downloading "..url..(filename and " - "..filename or ""), "network" + end + return name + else + return nil, "Unsupported protocol "..protocol + end +end + +--- For remote URLs, create a temporary directory and download URL inside it. +-- This temporary directory will be deleted on program termination. +-- For local URLs, just return the local pathname and its directory. +-- @param url string: URL to be downloaded +-- @param tmpname string: name pattern to use for avoiding conflicts +-- when creating temporary directory. +-- @param filename string or nil: local filename of URL to be downloaded, +-- in case it can't be inferred from the URL. +-- @return (string, string) or (nil, string, [string]): absolute local pathname of +-- the fetched file and temporary directory name; or nil and an error message +-- followed by an optional error code +function fetch.fetch_url_at_temp_dir(url, tmpname, filename) + assert(type(url) == "string") + assert(type(tmpname) == "string") + assert(type(filename) == "string" or not filename) + filename = filename or dir.base_name(url) + + local protocol, pathname = dir.split_url(url) + if protocol == "file" then + if fs.exists(pathname) then + return pathname, dir.dir_name(fs.absolute_name(pathname)) + else + return nil, "File not found: "..pathname + end + else + local temp_dir, err = fs.make_temp_dir(tmpname) + if not temp_dir then + return nil, "Failed creating temporary directory "..tmpname..": "..err + end + util.schedule_function(fs.delete, temp_dir) + local ok, err = fs.change_dir(temp_dir) + if not ok then return nil, err end + local file, err, errcode = fetch.fetch_url(url, filename) + fs.pop_dir() + if not file then + return nil, "Error fetching file: "..err, errcode + end + return file, temp_dir + end +end + +-- Determine base directory of a fetched URL by extracting its +-- archive and looking for a directory in the root. +-- @param file string: absolute local pathname of the fetched file +-- @param temp_dir string: temporary directory in which URL was fetched. +-- @param src_url string: URL to use when inferring base directory. +-- @param src_dir string or nil: expected base directory (inferred +-- from src_url if not given). +-- @return (string, string) or (string, nil) or (nil, string): +-- The inferred base directory and the one actually found (which may +-- be nil if not found), or nil followed by an error message. +-- The inferred dir is returned first to avoid confusion with errors, +-- because it is never nil. +function fetch.find_base_dir(file, temp_dir, src_url, src_dir) + local ok, err = fs.change_dir(temp_dir) + if not ok then return nil, err end + fs.unpack_archive(file) + local inferred_dir = src_dir or fetch.url_to_base_dir(src_url) + local found_dir = nil + if fs.exists(inferred_dir) then + found_dir = inferred_dir + else + util.printerr("Directory "..inferred_dir.." not found") + local files = fs.list_dir() + if files then + table.sort(files) + for i,filename in ipairs(files) do + if fs.is_dir(filename) then + util.printerr("Found "..filename) + found_dir = filename + break + end + end + end + end + fs.pop_dir() + return inferred_dir, found_dir +end + +--- Obtain a rock and unpack it. +-- If a directory is not given, a temporary directory will be created, +-- which will be deleted on program termination. +-- @param rock_file string: URL or filename of the rock. +-- @param dest string or nil: if given, directory will be used as +-- a permanent destination. +-- @return string or (nil, string, [string]): the directory containing the contents +-- of the unpacked rock. +function fetch.fetch_and_unpack_rock(rock_file, dest) + assert(type(rock_file) == "string") + assert(type(dest) == "string" or not dest) + + local name = dir.base_name(rock_file):match("(.*)%.[^.]*%.rock") + + local rock_file, err, errcode = fetch.fetch_url_at_temp_dir(rock_file,"luarocks-rock-"..name) + if not rock_file then + return nil, "Could not fetch rock file: " .. err, errcode + end + + rock_file = fs.absolute_name(rock_file) + local unpack_dir + if dest then + unpack_dir = dest + local ok, err = fs.make_dir(unpack_dir) + if not ok then + return nil, "Failed unpacking rock file: " .. err + end + else + unpack_dir = fs.make_temp_dir(name) + end + if not dest then + util.schedule_function(fs.delete, unpack_dir) + end + local ok, err = fs.change_dir(unpack_dir) + if not ok then return nil, err end + ok = fs.unzip(rock_file) + if not ok then + return nil, "Failed unpacking rock file: " .. rock_file + end + fs.pop_dir() + return unpack_dir +end + +function fetch.url_to_base_dir(url) + -- for extensions like foo.tar.gz, "gz" is stripped first + local known_exts = {} + for _, ext in ipairs{"zip", "git", "tgz", "tar", "gz", "bz2"} do + known_exts[ext] = "" + end + local base = dir.base_name(url) + return (base:gsub("%.([^.]*)$", known_exts):gsub("%.tar", "")) +end + +--- Back-end function that actually loads the local rockspec. +-- Performs some validation and postprocessing of the rockspec contents. +-- @param filename string: The local filename of the rockspec file. +-- @param quick boolean: if true, skips some steps when loading +-- rockspec. +-- @return table or (nil, string): A table representing the rockspec +-- or nil followed by an error message. +function fetch.load_local_rockspec(filename, quick) + assert(type(filename) == "string") + filename = fs.absolute_name(filename) + local rockspec, err = persist.load_into_table(filename) + if not rockspec then + return nil, "Could not load rockspec file "..filename.." ("..err..")" + end + if cfg.branch and (type(rockspec.source) == "table") then + rockspec.source.branch = cfg.branch + end + local globals = err + + if rockspec.rockspec_format then + if deps.compare_versions(rockspec.rockspec_format, type_check.rockspec_format) then + return nil, "Rockspec format "..rockspec.rockspec_format.." is not supported, please upgrade LuaRocks." + end + end + + if not quick then + local ok, err = type_check.type_check_rockspec(rockspec, globals) + if not ok then + return nil, filename..": "..err + end + end + + util.platform_overrides(rockspec.build) + util.platform_overrides(rockspec.dependencies) + util.platform_overrides(rockspec.external_dependencies) + util.platform_overrides(rockspec.source) + util.platform_overrides(rockspec.hooks) + + local basename = dir.base_name(filename) + if basename == "rockspec" then + rockspec.name = rockspec.package:lower() + else + rockspec.name = basename:match("(.*)-[^-]*-[0-9]*") + if not rockspec.name then + return nil, "Expected filename in format 'name-version-revision.rockspec'." + end + end + + local protocol, pathname = dir.split_url(rockspec.source.url) + if fetch.is_basic_protocol(protocol) then + rockspec.source.file = rockspec.source.file or dir.base_name(rockspec.source.url) + end + rockspec.source.protocol, rockspec.source.pathname = protocol, pathname + + -- Temporary compatibility + if rockspec.source.cvs_module then rockspec.source.module = rockspec.source.cvs_module end + if rockspec.source.cvs_tag then rockspec.source.tag = rockspec.source.cvs_tag end + + local name_version = rockspec.package:lower() .. "-" .. rockspec.version + if basename ~= "rockspec" and basename ~= name_version .. ".rockspec" then + return nil, "Inconsistency between rockspec filename ("..basename..") and its contents ("..name_version..".rockspec)." + end + + rockspec.local_filename = filename + local filebase = rockspec.source.file or rockspec.source.url + local base = fetch.url_to_base_dir(filebase) + rockspec.source.dir = rockspec.source.dir + or rockspec.source.module + or ((filebase:match("%.lua$") or filebase:match("%.c$")) and ".") + or base + if rockspec.dependencies then + for i = 1, #rockspec.dependencies do + local parsed, err = deps.parse_dep(rockspec.dependencies[i]) + if not parsed then + return nil, "Parse error processing dependency '"..rockspec.dependencies[i].."': "..tostring(err) + end + rockspec.dependencies[i] = parsed + end + else + rockspec.dependencies = {} + end + if not quick then + path.configure_paths(rockspec) + end + + return rockspec +end + +--- Load a local or remote rockspec into a table. +-- This is the entry point for the LuaRocks tools. +-- Only the LuaRocks runtime loader should use +-- load_local_rockspec directly. +-- @param filename string: Local or remote filename of a rockspec. +-- @param location string or nil: Where to download. If not given, +-- a temporary dir is created. +-- @return table or (nil, string, [string]): A table representing the rockspec +-- or nil followed by an error message and optional error code. +function fetch.load_rockspec(filename, location) + assert(type(filename) == "string") + + local name + local basename = dir.base_name(filename) + if basename == "rockspec" then + name = "rockspec" + else + name = basename:match("(.*)%.rockspec") + if not name then + return nil, "Filename '"..filename.."' does not look like a rockspec." + end + end + + local err, errcode + if location then + local ok, err = fs.change_dir(location) + if not ok then return nil, err end + filename, err = fetch.fetch_url(filename) + fs.pop_dir() + else + filename, err, errcode = fetch.fetch_url_at_temp_dir(filename,"luarocks-rockspec-"..name) + end + if not filename then + return nil, err, errcode + end + + return fetch.load_local_rockspec(filename) +end + +--- Download sources for building a rock using the basic URL downloader. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Whether to extract the sources from +-- the fetched source tarball or not. +-- @param dest_dir string or nil: If set, will extract to the given directory; +-- if not given, will extract to a temporary directory. +-- @return (string, string) or (nil, string, [string]): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message and optional error code. +function fetch.get_sources(rockspec, extract, dest_dir) + assert(type(rockspec) == "table") + assert(type(extract) == "boolean") + assert(type(dest_dir) == "string" or not dest_dir) + + local url = rockspec.source.url + local name = rockspec.name.."-"..rockspec.version + local filename = rockspec.source.file + local source_file, store_dir + local ok, err, errcode + if dest_dir then + ok, err = fs.change_dir(dest_dir) + if not ok then return nil, err, "dest_dir" end + source_file, err, errcode = fetch.fetch_url(url, filename) + fs.pop_dir() + store_dir = dest_dir + else + source_file, store_dir, errcode = fetch.fetch_url_at_temp_dir(url, "luarocks-source-"..name, filename) + end + if not source_file then + return nil, err or store_dir, errcode + end + if rockspec.source.md5 then + if not fs.check_md5(source_file, rockspec.source.md5) then + return nil, "MD5 check for "..filename.." has failed.", "md5" + end + end + if extract then + local ok, err = fs.change_dir(store_dir) + if not ok then return nil, err end + ok, err = fs.unpack_archive(rockspec.source.file) + if not ok then return nil, err end + if not fs.exists(rockspec.source.dir) then + return nil, "Directory "..rockspec.source.dir.." not found inside archive "..rockspec.source.file, "source.dir", source_file, store_dir + end + fs.pop_dir() + end + return source_file, store_dir +end + +--- Download sources for building a rock, calling the appropriate protocol method. +-- @param rockspec table: The rockspec table +-- @param extract boolean: When downloading compressed formats, whether to extract +-- the sources from the fetched archive or not. +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- if not given, will extract to a temporary directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function fetch.fetch_sources(rockspec, extract, dest_dir) + assert(type(rockspec) == "table") + assert(type(extract) == "boolean") + assert(type(dest_dir) == "string" or not dest_dir) + + local protocol = rockspec.source.protocol + local ok, proto + if fetch.is_basic_protocol(protocol) then + proto = fetch + else + ok, proto = pcall(require, "luarocks.fetch."..protocol:gsub("[+-]", "_")) + if not ok then + return nil, "Unknown protocol "..protocol + end + end + + if cfg.only_sources_from + and rockspec.source.pathname + and #rockspec.source.pathname > 0 then + if #cfg.only_sources_from == 0 then + return nil, "Can't download "..rockspec.source.url.." -- download from remote servers disabled" + elseif rockspec.source.pathname:find(cfg.only_sources_from, 1, true) ~= 1 then + return nil, "Can't download "..rockspec.source.url.." -- only downloading from "..cfg.only_sources_from + end + end + return proto.get_sources(rockspec, extract, dest_dir) +end + +return fetch diff --git a/Utils/luarocks/lua/luarocks/fetch/cvs.lua b/Utils/luarocks/lua/luarocks/fetch/cvs.lua new file mode 100644 index 000000000..ece711b6f --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/cvs.lua @@ -0,0 +1,55 @@ + +--- Fetch back-end for retrieving sources from CVS. +local cvs = {} + +local unpack = unpack or table.unpack + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +--- Download sources for building a rock, using CVS. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function cvs.get_sources(rockspec, extract, dest_dir) + assert(type(rockspec) == "table") + assert(type(dest_dir) == "string" or not dest_dir) + + local cvs_cmd = rockspec.variables.CVS + local ok, err_msg = fs.is_tool_available(cvs_cmd, "CVS") + if not ok then + return nil, err_msg + end + + local name_version = rockspec.name .. "-" .. rockspec.version + local module = rockspec.source.module or dir.base_name(rockspec.source.url) + local command = {cvs_cmd, "-d"..rockspec.source.pathname, "export", module} + if rockspec.source.tag then + table.insert(command, 4, "-r") + table.insert(command, 5, rockspec.source.tag) + end + local store_dir + if not dest_dir then + store_dir = fs.make_temp_dir(name_version) + if not store_dir then + return nil, "Failed creating temporary directory." + end + util.schedule_function(fs.delete, store_dir) + else + store_dir = dest_dir + end + local ok, err = fs.change_dir(store_dir) + if not ok then return nil, err end + if not fs.execute(unpack(command)) then + return nil, "Failed fetching files from CVS." + end + fs.pop_dir() + return module, store_dir +end + + +return cvs diff --git a/Utils/luarocks/lua/luarocks/fetch/git.lua b/Utils/luarocks/lua/luarocks/fetch/git.lua new file mode 100644 index 000000000..f61d89e9c --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/git.lua @@ -0,0 +1,92 @@ + +--- Fetch back-end for retrieving sources from GIT. +local git = {} + +local unpack = unpack or table.unpack + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +--- Git >= 1.7.10 can clone a branch **or tag**, < 1.7.10 by branch only. We +-- need to know this in order to build the appropriate command; if we can't +-- clone by tag then we'll have to issue a subsequent command to check out the +-- given tag. +-- @return boolean: Whether Git can clone by tag. +local function git_can_clone_by_tag(git_cmd) + local version_string = io.popen(fs.Q(git_cmd)..' --version'):read() + local major, minor, tiny = version_string:match('(%d-)%.(%d+)%.?(%d*)') + major, minor, tiny = tonumber(major), tonumber(minor), tonumber(tiny) or 0 + local value = major > 1 or (major == 1 and (minor > 7 or (minor == 7 and tiny >= 10))) + git_can_clone_by_tag = function() return value end + return value +end + +--- Download sources for building a rock, using git. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function git.get_sources(rockspec, extract, dest_dir, depth) + assert(type(rockspec) == "table") + assert(type(dest_dir) == "string" or not dest_dir) + + local git_cmd = rockspec.variables.GIT + local name_version = rockspec.name .. "-" .. rockspec.version + local module = dir.base_name(rockspec.source.url) + -- Strip off .git from base name if present + module = module:gsub("%.git$", "") + + local ok, err_msg = fs.is_tool_available(git_cmd, "Git") + if not ok then + return nil, err_msg + end + + local store_dir + if not dest_dir then + store_dir = fs.make_temp_dir(name_version) + if not store_dir then + return nil, "Failed creating temporary directory." + end + util.schedule_function(fs.delete, store_dir) + else + store_dir = dest_dir + end + store_dir = fs.absolute_name(store_dir) + local ok, err = fs.change_dir(store_dir) + if not ok then return nil, err end + + local command = {fs.Q(git_cmd), "clone", depth or "--depth=1", rockspec.source.url, module} + local tag_or_branch = rockspec.source.tag or rockspec.source.branch + -- If the tag or branch is explicitly set to "master" in the rockspec, then + -- we can avoid passing it to Git since it's the default. + if tag_or_branch == "master" then tag_or_branch = nil end + if tag_or_branch then + if git_can_clone_by_tag(git_cmd) then + -- The argument to `--branch` can actually be a branch or a tag as of + -- Git 1.7.10. + table.insert(command, 3, "--branch=" .. tag_or_branch) + end + end + if not fs.execute(unpack(command)) then + return nil, "Failed cloning git repository." + end + ok, err = fs.change_dir(module) + if not ok then return nil, err end + if tag_or_branch and not git_can_clone_by_tag() then + local checkout_command = {fs.Q(git_cmd), "checkout", tag_or_branch} + if not fs.execute(unpack(checkout_command)) then + return nil, 'Failed to check out the "' .. tag_or_branch ..'" tag or branch.' + end + end + + fs.delete(dir.path(store_dir, module, ".git")) + fs.delete(dir.path(store_dir, module, ".gitignore")) + fs.pop_dir() + fs.pop_dir() + return module, store_dir +end + +return git diff --git a/Utils/luarocks/lua/luarocks/fetch/git_file.lua b/Utils/luarocks/lua/luarocks/fetch/git_file.lua new file mode 100644 index 000000000..8d46bbca3 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/git_file.lua @@ -0,0 +1,19 @@ + +--- Fetch back-end for retrieving sources from local Git repositories. +local git_file = {} + +local git = require("luarocks.fetch.git") + +--- Fetch sources for building a rock from a local Git repository. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function git_file.get_sources(rockspec, extract, dest_dir) + rockspec.source.url = rockspec.source.url:gsub("^git.file://", "") + return git.get_sources(rockspec, extract, dest_dir) +end + +return git_file diff --git a/Utils/luarocks/lua/luarocks/fetch/git_http.lua b/Utils/luarocks/lua/luarocks/fetch/git_http.lua new file mode 100644 index 000000000..d85e2572d --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/git_http.lua @@ -0,0 +1,26 @@ + +--- Fetch back-end for retrieving sources from Git repositories +-- that use http:// transport. For example, for fetching a repository +-- that requires the following command line: +-- `git clone http://example.com/foo.git` +-- you can use this in the rockspec: +-- source = { url = "git+http://example.com/foo.git" } +-- Prefer using the normal git:// fetch mode as it is more widely +-- available in older versions of LuaRocks. +local git_http = {} + +local git = require("luarocks.fetch.git") + +--- Fetch sources for building a rock from a local Git repository. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function git_http.get_sources(rockspec, extract, dest_dir) + rockspec.source.url = rockspec.source.url:gsub("^git.", "") + return git.get_sources(rockspec, extract, dest_dir, "--") +end + +return git_http diff --git a/Utils/luarocks/lua/luarocks/fetch/git_https.lua b/Utils/luarocks/lua/luarocks/fetch/git_https.lua new file mode 100644 index 000000000..67f8ad6cc --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/git_https.lua @@ -0,0 +1,7 @@ +--- Fetch back-end for retrieving sources from Git repositories +-- that use https:// transport. For example, for fetching a repository +-- that requires the following command line: +-- `git clone https://example.com/foo.git` +-- you can use this in the rockspec: +-- source = { url = "git+https://example.com/foo.git" } +return require "luarocks.fetch.git_http" diff --git a/Utils/luarocks/lua/luarocks/fetch/git_ssh.lua b/Utils/luarocks/lua/luarocks/fetch/git_ssh.lua new file mode 100644 index 000000000..0c2c0750f --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/git_ssh.lua @@ -0,0 +1,32 @@ +--- Fetch back-end for retrieving sources from Git repositories +-- that use ssh:// transport. For example, for fetching a repository +-- that requires the following command line: +-- `git clone ssh://git@example.com/path/foo.git +-- you can use this in the rockspec: +-- source = { url = "git+ssh://git@example.com/path/foo.git" } +-- It also handles scp-style ssh urls: git@example.com:path/foo.git, +-- but you have to prepend the "git+ssh://" and why not use the "newer" +-- style anyway? +local git_ssh = {} + +local git = require("luarocks.fetch.git") + +--- Fetch sources for building a rock from a local Git repository. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function git_ssh.get_sources(rockspec, extract, dest_dir) + rockspec.source.url = rockspec.source.url:gsub("^git.", "") + + -- Handle old-style scp-like git ssh urls + if rockspec.source.url:match("^ssh://[^/]+:[^%d]") then + rockspec.source.url = rockspec.source.url:gsub("^ssh://", "") + end + + return git.get_sources(rockspec, extract, dest_dir, "--") +end + +return git_ssh diff --git a/Utils/luarocks/lua/luarocks/fetch/hg.lua b/Utils/luarocks/lua/luarocks/fetch/hg.lua new file mode 100644 index 000000000..4cf8d0280 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/hg.lua @@ -0,0 +1,65 @@ + +--- Fetch back-end for retrieving sources from HG. +local hg = {} + +local unpack = unpack or table.unpack + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +--- Download sources for building a rock, using hg. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function hg.get_sources(rockspec, extract, dest_dir) + assert(type(rockspec) == "table") + assert(type(dest_dir) == "string" or not dest_dir) + + local hg_cmd = rockspec.variables.HG + local ok, err_msg = fs.is_tool_available(hg_cmd, "Mercurial") + if not ok then + return nil, err_msg + end + + local name_version = rockspec.name .. "-" .. rockspec.version + -- Strip off special hg:// protocol type + local url = rockspec.source.url:gsub("^hg://", "") + + local module = dir.base_name(url) + + local command = {hg_cmd, "clone", url, module} + local tag_or_branch = rockspec.source.tag or rockspec.source.branch + if tag_or_branch then + command = {hg_cmd, "clone", "--rev", tag_or_branch, url, module} + end + local store_dir + if not dest_dir then + store_dir = fs.make_temp_dir(name_version) + if not store_dir then + return nil, "Failed creating temporary directory." + end + util.schedule_function(fs.delete, store_dir) + else + store_dir = dest_dir + end + local ok, err = fs.change_dir(store_dir) + if not ok then return nil, err end + if not fs.execute(unpack(command)) then + return nil, "Failed cloning hg repository." + end + ok, err = fs.change_dir(module) + if not ok then return nil, err end + + fs.delete(dir.path(store_dir, module, ".hg")) + fs.delete(dir.path(store_dir, module, ".hgignore")) + fs.pop_dir() + fs.pop_dir() + return module, store_dir +end + + +return hg diff --git a/Utils/luarocks/lua/luarocks/fetch/hg_http.lua b/Utils/luarocks/lua/luarocks/fetch/hg_http.lua new file mode 100644 index 000000000..8f506daff --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/hg_http.lua @@ -0,0 +1,24 @@ + +--- Fetch back-end for retrieving sources from hg repositories +-- that use http:// transport. For example, for fetching a repository +-- that requires the following command line: +-- `hg clone http://example.com/foo` +-- you can use this in the rockspec: +-- source = { url = "hg+http://example.com/foo" } +local hg_http = {} + +local hg = require("luarocks.fetch.hg") + +--- Download sources for building a rock, using hg over http. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function hg_http.get_sources(rockspec, extract, dest_dir) + rockspec.source.url = rockspec.source.url:gsub("^hg.", "") + return hg.get_sources(rockspec, extract, dest_dir) +end + +return hg_http diff --git a/Utils/luarocks/lua/luarocks/fetch/hg_https.lua b/Utils/luarocks/lua/luarocks/fetch/hg_https.lua new file mode 100644 index 000000000..e67417fe8 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/hg_https.lua @@ -0,0 +1,8 @@ + +--- Fetch back-end for retrieving sources from hg repositories +-- that use https:// transport. For example, for fetching a repository +-- that requires the following command line: +-- `hg clone https://example.com/foo` +-- you can use this in the rockspec: +-- source = { url = "hg+https://example.com/foo" } +return require "luarocks.fetch.hg_http" diff --git a/Utils/luarocks/lua/luarocks/fetch/hg_ssh.lua b/Utils/luarocks/lua/luarocks/fetch/hg_ssh.lua new file mode 100644 index 000000000..0c365fabe --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/hg_ssh.lua @@ -0,0 +1,8 @@ + +--- Fetch back-end for retrieving sources from hg repositories +-- that use ssh:// transport. For example, for fetching a repository +-- that requires the following command line: +-- `hg clone ssh://example.com/foo` +-- you can use this in the rockspec: +-- source = { url = "hg+ssh://example.com/foo" } +return require "luarocks.fetch.hg_http" diff --git a/Utils/luarocks/lua/luarocks/fetch/sscm.lua b/Utils/luarocks/lua/luarocks/fetch/sscm.lua new file mode 100644 index 000000000..5add10dba --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/sscm.lua @@ -0,0 +1,44 @@ + +--- Fetch back-end for retrieving sources from Surround SCM Server +local sscm = {} + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") + +--- Download sources via Surround SCM Server for building a rock. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function sscm.get_sources(rockspec, extract, dest_dir) + assert(type(rockspec) == "table") + assert(type(dest_dir) == "string" or not dest_dir) + + local sscm_cmd = rockspec.variables.SSCM + local module = rockspec.source.module or dir.base_name(rockspec.source.url) + local branch, repository = string.match(rockspec.source.pathname, "^([^/]*)/(.*)") + if not branch or not repository then + return nil, "Error retrieving branch and repository from rockspec." + end + -- Search for working directory. + local working_dir + local tmp = io.popen(string.format(sscm_cmd..[[ property "/" -d -b%s -p%s]], branch, repository)) + for line in tmp:lines() do + --%c because a chr(13) comes in the end. + working_dir = string.match(line, "Working directory:[%s]*(.*)%c$") + if working_dir then break end + end + tmp:close() + if not working_dir then + return nil, "Error retrieving working directory from SSCM." + end + if not fs.execute(sscm_cmd, "get", "*", "-e" , "-r", "-b"..branch, "-p"..repository, "-tmodify", "-wreplace") then + return nil, "Failed fetching files from SSCM." + end + -- FIXME: This function does not honor the dest_dir parameter. + return module, working_dir +end + +return sscm diff --git a/Utils/luarocks/lua/luarocks/fetch/svn.lua b/Utils/luarocks/lua/luarocks/fetch/svn.lua new file mode 100644 index 000000000..29bce1b5f --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fetch/svn.lua @@ -0,0 +1,64 @@ + +--- Fetch back-end for retrieving sources from Subversion. +local svn = {} + +local unpack = unpack or table.unpack + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +--- Download sources for building a rock, using Subversion. +-- @param rockspec table: The rockspec table +-- @param extract boolean: Unused in this module (required for API purposes.) +-- @param dest_dir string or nil: If set, will extract to the given directory. +-- @return (string, string) or (nil, string): The absolute pathname of +-- the fetched source tarball and the temporary directory created to +-- store it; or nil and an error message. +function svn.get_sources(rockspec, extract, dest_dir) + assert(type(rockspec) == "table") + assert(type(dest_dir) == "string" or not dest_dir) + + local svn_cmd = rockspec.variables.SVN + local ok, err_msg = fs.is_tool_available(svn_cmd, "--version", "Subversion") + if not ok then + return nil, err_msg + end + + local name_version = rockspec.name .. "-" .. rockspec.version + local module = rockspec.source.module or dir.base_name(rockspec.source.url) + local url = rockspec.source.url:gsub("^svn://", "") + local command = {svn_cmd, "checkout", url, module} + if rockspec.source.tag then + table.insert(command, 5, "-r") + table.insert(command, 6, rockspec.source.tag) + end + local store_dir + if not dest_dir then + store_dir = fs.make_temp_dir(name_version) + if not store_dir then + return nil, "Failed creating temporary directory." + end + util.schedule_function(fs.delete, store_dir) + else + store_dir = dest_dir + end + local ok, err = fs.change_dir(store_dir) + if not ok then return nil, err end + if not fs.execute(unpack(command)) then + return nil, "Failed fetching files from Subversion." + end + ok, err = fs.change_dir(module) + if not ok then return nil, err end + for _, d in ipairs(fs.find(".")) do + if dir.base_name(d) == ".svn" then + fs.delete(dir.path(store_dir, module, d)) + end + end + fs.pop_dir() + fs.pop_dir() + return module, store_dir +end + + +return svn diff --git a/Utils/luarocks/lua/luarocks/fs.lua b/Utils/luarocks/lua/luarocks/fs.lua new file mode 100644 index 000000000..54cc7d73d --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fs.lua @@ -0,0 +1,76 @@ + +--- Proxy module for filesystem and platform abstractions. +-- All code using "fs" code should require "luarocks.fs", +-- and not the various platform-specific implementations. +-- However, see the documentation of the implementation +-- for the API reference. + +local pairs = pairs + +local fs = {} +package.loaded["luarocks.fs"] = fs + +local cfg = require("luarocks.cfg") + +local pack = table.pack or function(...) return { n = select("#", ...), ... } end +local unpack = table.unpack or unpack + +local old_popen, old_exec +fs.verbose = function() -- patch io.popen and os.execute to display commands in verbose mode + if old_popen or old_exec then return end + old_popen = io.popen + io.popen = function(one, two) + if two == nil then + print("\nio.popen: ", one) + else + print("\nio.popen: ", one, "Mode:", two) + end + return old_popen(one, two) + end + + old_exec = os.execute + os.execute = function(cmd) + -- redact api keys if present + print("\nos.execute: ", (cmd:gsub("(/api/[^/]+/)([^/]+)/", function(cap, key) return cap.."/" end)) ) + local code = pack(old_exec(cmd)) + print("Results: "..tostring(code.n)) + for i = 1,code.n do + print(" "..tostring(i).." ("..type(code[i]).."): "..tostring(code[i])) + end + return unpack(code, 1, code.n) + end +end +if cfg.verbose then fs.verbose() end + +local function load_fns(fs_table) + for name, fn in pairs(fs_table) do + if not fs[name] then + fs[name] = fn + end + end +end + +-- Load platform-specific functions +local loaded_platform = nil +for _, platform in ipairs(cfg.platforms) do + local ok, fs_plat = pcall(require, "luarocks.fs."..platform) + if ok and fs_plat then + loaded_platform = platform + load_fns(fs_plat) + break + end +end + +-- Load platform-independent pure-Lua functionality +local fs_lua = require("luarocks.fs.lua") +load_fns(fs_lua) + +-- Load platform-specific fallbacks for missing Lua modules +local ok, fs_plat_tools = pcall(require, "luarocks.fs."..loaded_platform..".tools") +if ok and fs_plat_tools then + load_fns(fs_plat_tools) + load_fns(require("luarocks.fs.tools")) +end + + +return fs diff --git a/Utils/luarocks/lua/luarocks/fs/lua.lua b/Utils/luarocks/lua/luarocks/fs/lua.lua new file mode 100644 index 000000000..41711eab6 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fs/lua.lua @@ -0,0 +1,873 @@ + +--- Native Lua implementation of filesystem and platform abstractions, +-- using LuaFileSystem, LZLib, MD5 and LuaCurl. +-- module("luarocks.fs.lua") +local fs_lua = {} + +local fs = require("luarocks.fs") + +local cfg = require("luarocks.cfg") +local dir = require("luarocks.dir") +local util = require("luarocks.util") +local path = require("luarocks.path") + +local socket_ok, zip_ok, unzip_ok, lfs_ok, md5_ok, posix_ok, _ +local http, ftp, lrzip, luazip, lfs, md5, posix + +if cfg.fs_use_modules then + socket_ok, http = pcall(require, "socket.http") + _, ftp = pcall(require, "socket.ftp") + zip_ok, lrzip = pcall(require, "luarocks.tools.zip") + unzip_ok, luazip = pcall(require, "zip"); _G.zip = nil + lfs_ok, lfs = pcall(require, "lfs") + md5_ok, md5 = pcall(require, "md5") + posix_ok, posix = pcall(require, "posix") +end + +local patch = require("luarocks.tools.patch") + +local dir_stack = {} + +local dir_separator = "/" + +--- Test is file/dir is writable. +-- Warning: testing if a file/dir is writable does not guarantee +-- that it will remain writable and therefore it is no replacement +-- for checking the result of subsequent operations. +-- @param file string: filename to test +-- @return boolean: true if file exists, false otherwise. +function fs_lua.is_writable(file) + assert(file) + file = dir.normalize(file) + local result + if fs.is_dir(file) then + local file2 = dir.path(file, '.tmpluarockstestwritable') + local fh = io.open(file2, 'wb') + result = fh ~= nil + if fh then fh:close() end + os.remove(file2) + else + local fh = io.open(file, 'r+b') + result = fh ~= nil + if fh then fh:close() end + end + return result +end + +local function quote_args(command, ...) + local out = { command } + for _, arg in ipairs({...}) do + assert(type(arg) == "string") + out[#out+1] = fs.Q(arg) + end + return table.concat(out, " ") +end + +--- Run the given command, quoting its arguments. +-- The command is executed in the current directory in the dir stack. +-- @param command string: The command to be executed. No quoting/escaping +-- is applied. +-- @param ... Strings containing additional arguments, which are quoted. +-- @return boolean: true if command succeeds (status code 0), false +-- otherwise. +function fs_lua.execute(command, ...) + assert(type(command) == "string") + return fs.execute_string(quote_args(command, ...)) +end + +--- Run the given command, quoting its arguments, silencing its output. +-- The command is executed in the current directory in the dir stack. +-- Silencing is omitted if 'verbose' mode is enabled. +-- @param command string: The command to be executed. No quoting/escaping +-- is applied. +-- @param ... Strings containing additional arguments, which will be quoted. +-- @return boolean: true if command succeeds (status code 0), false +-- otherwise. +function fs_lua.execute_quiet(command, ...) + assert(type(command) == "string") + if cfg.verbose then -- omit silencing output + return fs.execute_string(quote_args(command, ...)) + else + return fs.execute_string(fs.quiet(quote_args(command, ...))) + end +end + +--- Checks if the given tool is available. +-- The tool is executed using a flag, usually just to ask its version. +-- @param tool_cmd string: The command to be used to check the tool's presence (e.g. hg in case of Mercurial) +-- @param tool_name string: The actual name of the tool (e.g. Mercurial) +-- @param arg string: The flag to pass to the tool. '--version' by default. +function fs_lua.is_tool_available(tool_cmd, tool_name, arg) + assert(type(tool_cmd) == "string") + assert(type(tool_name) == "string") + + arg = arg or "--version" + assert(type(arg) == "string") + + if not fs.execute_quiet(fs.Q(tool_cmd), arg) then + local msg = "'%s' program not found. Make sure %s is installed and is available in your PATH " .. + "(or you may want to edit the 'variables.%s' value in file '%s')" + return nil, msg:format(tool_cmd, tool_name, tool_name:upper(), cfg.which_config().nearest) + else + return true + end +end + +--- Check the MD5 checksum for a file. +-- @param file string: The file to be checked. +-- @param md5sum string: The string with the expected MD5 checksum. +-- @return boolean: true if the MD5 checksum for 'file' equals 'md5sum', false + msg if not +-- or if it could not perform the check for any reason. +function fs_lua.check_md5(file, md5sum) + file = dir.normalize(file) + local computed, msg = fs.get_md5(file) + if not computed then + return false, msg + end + if computed:match("^"..md5sum) then + return true + else + return false, "Mismatch MD5 hash for file "..file + end +end + +--- List the contents of a directory. +-- @param at string or nil: directory to list (will be the current +-- directory if none is given). +-- @return table: an array of strings with the filenames representing +-- the contents of a directory. +function fs_lua.list_dir(at) + local result = {} + for file in fs.dir(at) do + result[#result+1] = file + end + return result +end + +--- Iterate over the contents of a directory. +-- @param at string or nil: directory to list (will be the current +-- directory if none is given). +-- @return function: an iterator function suitable for use with +-- the for statement. +function fs_lua.dir(at) + if not at then + at = fs.current_dir() + end + at = dir.normalize(at) + if not fs.is_dir(at) then + return function() end + end + return coroutine.wrap(function() fs.dir_iterator(at) end) +end + +--------------------------------------------------------------------- +-- LuaFileSystem functions +--------------------------------------------------------------------- + +if lfs_ok then + +--- Run the given command. +-- The command is executed in the current directory in the dir stack. +-- @param cmd string: No quoting/escaping is applied to the command. +-- @return boolean: true if command succeeds (status code 0), false +-- otherwise. +function fs_lua.execute_string(cmd) + local code = os.execute(cmd) + return (code == 0 or code == true) +end + +--- Obtain current directory. +-- Uses the module's internal dir stack. +-- @return string: the absolute pathname of the current directory. +function fs_lua.current_dir() + return lfs.currentdir() +end + +--- Change the current directory. +-- Uses the module's internal dir stack. This does not have exact +-- semantics of chdir, as it does not handle errors the same way, +-- but works well for our purposes for now. +-- @param d string: The directory to switch to. +function fs_lua.change_dir(d) + table.insert(dir_stack, lfs.currentdir()) + d = dir.normalize(d) + return lfs.chdir(d) +end + +--- Change directory to root. +-- Allows leaving a directory (e.g. for deleting it) in +-- a crossplatform way. +function fs_lua.change_dir_to_root() + local current = lfs.currentdir() + if not current or current == "" then + return false + end + table.insert(dir_stack, current) + lfs.chdir("/") -- works on Windows too + return true +end + +--- Change working directory to the previous in the dir stack. +-- @return true if a pop ocurred, false if the stack was empty. +function fs_lua.pop_dir() + local d = table.remove(dir_stack) + if d then + lfs.chdir(d) + return true + else + return false + end +end + +--- Create a directory if it does not already exist. +-- If any of the higher levels in the path name do not exist +-- too, they are created as well. +-- @param directory string: pathname of directory to create. +-- @return boolean or (boolean, string): true on success or (false, error message) on failure. +function fs_lua.make_dir(directory) + assert(type(directory) == "string") + directory = dir.normalize(directory) + local path = nil + if directory:sub(2, 2) == ":" then + path = directory:sub(1, 2) + directory = directory:sub(4) + else + if directory:match("^/") then + path = "" + end + end + for d in directory:gmatch("([^"..dir.separator.."]+)"..dir.separator.."*") do + path = path and path .. dir.separator .. d or d + local mode = lfs.attributes(path, "mode") + if not mode then + local ok, err = lfs.mkdir(path) + if not ok then + return false, err + end + ok, err = fs.chmod(path, cfg.perm_exec) + if not ok then + return false, err + end + elseif mode ~= "directory" then + return false, path.." is not a directory" + end + end + return true +end + +--- Remove a directory if it is empty. +-- Does not return errors (for example, if directory is not empty or +-- if already does not exist) +-- @param d string: pathname of directory to remove. +function fs_lua.remove_dir_if_empty(d) + assert(d) + d = dir.normalize(d) + lfs.rmdir(d) +end + +--- Remove a directory if it is empty. +-- Does not return errors (for example, if directory is not empty or +-- if already does not exist) +-- @param d string: pathname of directory to remove. +function fs_lua.remove_dir_tree_if_empty(d) + assert(d) + d = dir.normalize(d) + for i=1,10 do + lfs.rmdir(d) + d = dir.dir_name(d) + end +end + +--- Copy a file. +-- @param src string: Pathname of source +-- @param dest string: Pathname of destination +-- @param perms string or nil: Permissions for destination file, +-- or nil to use the source filename permissions +-- @return boolean or (boolean, string): true on success, false on failure, +-- plus an error message. +function fs_lua.copy(src, dest, perms) + assert(src and dest) + src = dir.normalize(src) + dest = dir.normalize(dest) + local destmode = lfs.attributes(dest, "mode") + if destmode == "directory" then + dest = dir.path(dest, dir.base_name(src)) + end + if not perms then perms = fs.get_permissions(src) end + local src_h, err = io.open(src, "rb") + if not src_h then return nil, err end + local dest_h, err = io.open(dest, "w+b") + if not dest_h then src_h:close() return nil, err end + while true do + local block = src_h:read(8192) + if not block then break end + dest_h:write(block) + end + src_h:close() + dest_h:close() + fs.chmod(dest, perms) + return true +end + +--- Implementation function for recursive copy of directory contents. +-- Assumes paths are normalized. +-- @param src string: Pathname of source +-- @param dest string: Pathname of destination +-- @param perms string or nil: Optional permissions. +-- If not given, permissions of the source are copied over to the destination. +-- @return boolean or (boolean, string): true on success, false on failure +local function recursive_copy(src, dest, perms) + local srcmode = lfs.attributes(src, "mode") + + if srcmode == "file" then + local ok = fs.copy(src, dest, perms) + if not ok then return false end + elseif srcmode == "directory" then + local subdir = dir.path(dest, dir.base_name(src)) + local ok, err = fs.make_dir(subdir) + if not ok then return nil, err end + for file in lfs.dir(src) do + if file ~= "." and file ~= ".." then + local ok = recursive_copy(dir.path(src, file), subdir, perms) + if not ok then return false end + end + end + end + return true +end + +--- Recursively copy the contents of a directory. +-- @param src string: Pathname of source +-- @param dest string: Pathname of destination +-- @param perms string or nil: Optional permissions. +-- @return boolean or (boolean, string): true on success, false on failure, +-- plus an error message. +function fs_lua.copy_contents(src, dest, perms) + assert(src and dest) + src = dir.normalize(src) + dest = dir.normalize(dest) + assert(lfs.attributes(src, "mode") == "directory") + + for file in lfs.dir(src) do + if file ~= "." and file ~= ".." then + local ok = recursive_copy(dir.path(src, file), dest, perms) + if not ok then + return false, "Failed copying "..src.." to "..dest + end + end + end + return true +end + +--- Implementation function for recursive removal of directories. +-- Assumes paths are normalized. +-- @param name string: Pathname of file +-- @return boolean or (boolean, string): true on success, +-- or nil and an error message on failure. +local function recursive_delete(name) + local ok = os.remove(name) + if ok then return true end + local pok, ok, err = pcall(function() + for file in lfs.dir(name) do + if file ~= "." and file ~= ".." then + local ok, err = recursive_delete(dir.path(name, file)) + if not ok then return nil, err end + end + end + local ok, err = lfs.rmdir(name) + return ok, (not ok) and err + end) + if pok then + return ok, err + else + return pok, ok + end +end + +--- Delete a file or a directory and all its contents. +-- @param name string: Pathname of source +-- @return nil +function fs_lua.delete(name) + name = dir.normalize(name) + recursive_delete(name) +end + +--- Internal implementation function for fs.dir. +-- Yields a filename on each iteration. +-- @param at string: directory to list +-- @return nil +function fs_lua.dir_iterator(at) + for file in lfs.dir(at) do + if file ~= "." and file ~= ".." then + coroutine.yield(file) + end + end +end + +--- Implementation function for recursive find. +-- Assumes paths are normalized. +-- @param cwd string: Current working directory in recursion. +-- @param prefix string: Auxiliary prefix string to form pathname. +-- @param result table: Array of strings where results are collected. +local function recursive_find(cwd, prefix, result) + for file in lfs.dir(cwd) do + if file ~= "." and file ~= ".." then + local item = prefix .. file + table.insert(result, item) + local pathname = dir.path(cwd, file) + if lfs.attributes(pathname, "mode") == "directory" then + recursive_find(pathname, item..dir_separator, result) + end + end + end +end + +--- Recursively scan the contents of a directory. +-- @param at string or nil: directory to scan (will be the current +-- directory if none is given). +-- @return table: an array of strings with the filenames representing +-- the contents of a directory. +function fs_lua.find(at) + assert(type(at) == "string" or not at) + if not at then + at = fs.current_dir() + end + at = dir.normalize(at) + if not fs.is_dir(at) then + return {} + end + local result = {} + recursive_find(at, "", result) + return result +end + +--- Test for existance of a file. +-- @param file string: filename to test +-- @return boolean: true if file exists, false otherwise. +function fs_lua.exists(file) + assert(file) + file = dir.normalize(file) + return type(lfs.attributes(file)) == "table" +end + +--- Test is pathname is a directory. +-- @param file string: pathname to test +-- @return boolean: true if it is a directory, false otherwise. +function fs_lua.is_dir(file) + assert(file) + file = dir.normalize(file) + return lfs.attributes(file, "mode") == "directory" +end + +--- Test is pathname is a regular file. +-- @param file string: pathname to test +-- @return boolean: true if it is a file, false otherwise. +function fs_lua.is_file(file) + assert(file) + file = dir.normalize(file) + return lfs.attributes(file, "mode") == "file" +end + +function fs_lua.set_time(file, time) + file = dir.normalize(file) + return lfs.touch(file, time) +end + +end + +--------------------------------------------------------------------- +-- LuaZip functions +--------------------------------------------------------------------- + +if zip_ok then + +function fs_lua.zip(zipfile, ...) + return lrzip.zip(zipfile, ...) +end + +end + +if unzip_ok then +--- Uncompress files from a .zip archive. +-- @param zipfile string: pathname of .zip archive to be extracted. +-- @return boolean: true on success, false on failure. +function fs_lua.unzip(zipfile) + local zipfile, err = luazip.open(zipfile) + if not zipfile then return nil, err end + local files = zipfile:files() + local file = files() + repeat + if file.filename:sub(#file.filename) == "/" then + local ok, err = fs.make_dir(dir.path(fs.current_dir(), file.filename)) + if not ok then return nil, err end + else + local base = dir.dir_name(file.filename) + if base ~= "" then + base = dir.path(fs.current_dir(), base) + if not fs.is_dir(base) then + local ok, err = fs.make_dir(base) + if not ok then return nil, err end + end + end + local rf, err = zipfile:open(file.filename) + if not rf then zipfile:close(); return nil, err end + local contents = rf:read("*a") + rf:close() + local wf, err = io.open(dir.path(fs.current_dir(), file.filename), "wb") + if not wf then zipfile:close(); return nil, err end + wf:write(contents) + wf:close() + end + file = files() + until not file + zipfile:close() + return true +end + +end + +--------------------------------------------------------------------- +-- LuaSocket functions +--------------------------------------------------------------------- + +if socket_ok then + +local ltn12 = require("ltn12") +local luasec_ok, https = pcall(require, "ssl.https") + +local redirect_protocols = { + http = http, + https = luasec_ok and https, +} + +local function request(url, method, http, loop_control) + local result = {} + + local proxy = cfg.http_proxy + if type(proxy) ~= "string" then proxy = nil end + -- LuaSocket's http.request crashes when given URLs missing the scheme part. + if proxy and not proxy:find("://") then + proxy = "http://" .. proxy + end + + if cfg.show_downloads then + io.write(method.." "..url.." ...\n") + end + local dots = 0 + if cfg.connection_timeout and cfg.connection_timeout > 0 then + http.TIMEOUT = cfg.connection_timeout + end + local res, status, headers, err = http.request { + url = url, + proxy = proxy, + method = method, + redirect = false, + sink = ltn12.sink.table(result), + step = cfg.show_downloads and function(...) + io.write(".") + io.flush() + dots = dots + 1 + if dots == 70 then + io.write("\n") + dots = 0 + end + return ltn12.pump.step(...) + end, + headers = { + ["user-agent"] = cfg.user_agent.." via LuaSocket" + }, + } + if cfg.show_downloads then + io.write("\n") + end + if not res then + return nil, status + elseif status == 301 or status == 302 then + local location = headers.location + if location then + local protocol, rest = dir.split_url(location) + if redirect_protocols[protocol] then + if not loop_control then + loop_control = {} + elseif loop_control[location] then + return nil, "Redirection loop -- broken URL?" + end + loop_control[url] = true + return request(location, method, redirect_protocols[protocol], loop_control) + else + return nil, "URL redirected to unsupported protocol - install luasec to get HTTPS support.", "https" + end + end + return nil, err + elseif status ~= 200 then + return nil, err + else + return result, status, headers, err + end +end + +local function http_request(url, http, cached) + if cached then + local tsfd = io.open(cached..".timestamp", "r") + if tsfd then + local timestamp = tsfd:read("*a") + tsfd:close() + local result, status, headers, err = request(url, "HEAD", http) + if status == 200 and headers["last-modified"] == timestamp then + return true + end + if not result then + return nil, status, headers + end + end + end + local result, status, headers, err = request(url, "GET", http) + if result then + if cached and headers["last-modified"] then + local tsfd = io.open(cached..".timestamp", "w") + if tsfd then + tsfd:write(headers["last-modified"]) + tsfd:close() + end + end + return table.concat(result) + else + return nil, status, headers + end +end + +local downloader_warning = false + +--- Download a remote file. +-- @param url string: URL to be fetched. +-- @param filename string or nil: this function attempts to detect the +-- resulting local filename of the remote file as the basename of the URL; +-- if that is not correct (due to a redirection, for example), the local +-- filename can be given explicitly as this second argument. +-- @return (boolean, string): true and the filename on success, +-- false and the error message on failure. +function fs_lua.download(url, filename, cache) + assert(type(url) == "string") + assert(type(filename) == "string" or not filename) + + filename = fs.absolute_name(filename or dir.base_name(url)) + + -- delegate to the configured downloader so we don't have to deal with whitelists + if cfg.no_proxy then + return fs.use_downloader(url, filename, cache) + end + + local content, err, https_err + if util.starts_with(url, "http:") then + content, err, https_err = http_request(url, http, cache and filename) + elseif util.starts_with(url, "ftp:") then + content, err = ftp.get(url) + elseif util.starts_with(url, "https:") then + -- skip LuaSec when proxy is enabled since it is not supported + if luasec_ok and not cfg.https_proxy then + content, err = http_request(url, https, cache and filename) + else + https_err = true + end + else + err = "Unsupported protocol" + end + if https_err then + if not downloader_warning then + util.printerr("Warning: falling back to "..cfg.downloader.." - install luasec to get native HTTPS support") + downloader_warning = true + end + return fs.use_downloader(url, filename, cache) + end + if cache and content == true then + return true, filename + end + if not content then + return false, tostring(err) + end + local file = io.open(filename, "wb") + if not file then return false end + file:write(content) + file:close() + return true, filename +end + +else --...if socket_ok == false then + +function fs_lua.download(url, filename, cache) + return fs.use_downloader(url, filename, cache) +end + +end +--------------------------------------------------------------------- +-- MD5 functions +--------------------------------------------------------------------- + +if md5_ok then + +-- Support the interface of lmd5 by lhf in addition to md5 by Roberto +-- and the keplerproject. +if not md5.sumhexa and md5.digest then + md5.sumhexa = function(msg) + return md5.digest(msg) + end +end + +--- Get the MD5 checksum for a file. +-- @param file string: The file to be computed. +-- @return string: The MD5 checksum or nil + error +function fs_lua.get_md5(file) + file = fs.absolute_name(file) + local file_handler = io.open(file, "rb") + if not file_handler then return nil, "Failed to open file for reading: "..file end + local computed = md5.sumhexa(file_handler:read("*a")) + file_handler:close() + if computed then return computed end + return nil, "Failed to compute MD5 hash for file "..file +end + +end + +--------------------------------------------------------------------- +-- POSIX functions +--------------------------------------------------------------------- + +if posix_ok then + +local octal_to_rwx = { + ["0"] = "---", + ["1"] = "--x", + ["2"] = "-w-", + ["3"] = "-wx", + ["4"] = "r--", + ["5"] = "r-x", + ["6"] = "rw-", + ["7"] = "rwx", +} + +function fs_lua.chmod(file, mode) + -- LuaPosix (as of 5.1.15) does not support octal notation... + if mode:sub(1,1) == "0" then + local new_mode = {} + for c in mode:sub(-3):gmatch(".") do + table.insert(new_mode, octal_to_rwx[c]) + end + mode = table.concat(new_mode) + end + local err = posix.chmod(file, mode) + return err == 0 +end + +function fs_lua.get_permissions(file) + return posix.stat(file, "mode") +end + +--- Create a temporary directory. +-- @param name string: name pattern to use for avoiding conflicts +-- when creating temporary directory. +-- @return string or (nil, string): name of temporary directory or (nil, error message) on failure. +function fs_lua.make_temp_dir(name) + assert(type(name) == "string") + name = dir.normalize(name) + + return posix.mkdtemp((os.getenv("TMPDIR") or "/tmp") .. "/luarocks_" .. name:gsub(dir.separator, "_") .. "-XXXXXX") +end + +end + +--------------------------------------------------------------------- +-- Other functions +--------------------------------------------------------------------- + +--- Apply a patch. +-- @param patchname string: The filename of the patch. +-- @param patchdata string or nil: The actual patch as a string. +function fs_lua.apply_patch(patchname, patchdata) + local p, all_ok = patch.read_patch(patchname, patchdata) + if not all_ok then + return nil, "Failed reading patch "..patchname + end + if p then + return patch.apply_patch(p, 1) + end +end + +--- Move a file. +-- @param src string: Pathname of source +-- @param dest string: Pathname of destination +-- @param perms string or nil: Permissions for destination file, +-- or nil to use the source filename permissions. +-- @return boolean or (boolean, string): true on success, false on failure, +-- plus an error message. +function fs_lua.move(src, dest, perms) + assert(src and dest) + if fs.exists(dest) and not fs.is_dir(dest) then + return false, "File already exists: "..dest + end + local ok, err = fs.copy(src, dest, perms) + if not ok then + return false, err + end + fs.delete(src) + if fs.exists(src) then + return false, "Failed move: could not delete "..src.." after copy." + end + return true +end + +--- Check if user has write permissions for the command. +-- Assumes the configuration variables under cfg have been previously set up. +-- @param flags table: the flags table passed to run() drivers. +-- @return boolean or (boolean, string): true on success, false on failure, +-- plus an error message. +function fs_lua.check_command_permissions(flags) + local root_dir = path.root_dir(cfg.rocks_dir) + local ok = true + local err = "" + for _, dir in ipairs { cfg.rocks_dir, root_dir } do + if fs.exists(dir) and not fs.is_writable(dir) then + ok = false + err = "Your user does not have write permissions in " .. dir + break + end + end + if ok and not fs.exists(root_dir) then + local root = fs.root_of(root_dir) + local parent = root_dir + repeat + parent = dir.dir_name(parent) + if parent == "" then + parent = root + end + until parent == root or fs.exists(parent) + if not fs.is_writable(parent) then + ok = false + err = root_dir.." does not exist and your user does not have write permissions in " .. parent + end + end + if ok then + return true + else + if flags["local"] then + err = err .. " \n-- please check your permissions." + else + err = err .. " \n-- you may want to run as a privileged user or use your local tree with --local." + end + return nil, err + end +end + +--- Check whether a file is a Lua script +-- When the file can be succesfully compiled by the configured +-- Lua interpreter, it's considered to be a valid Lua file. +-- @param name filename of file to check +-- @return boolean true, if it is a Lua script, false otherwise +function fs_lua.is_lua(name) + name = name:gsub([[%\]],"/") -- normalize on fw slash to prevent escaping issues + local lua = fs.Q(dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)) -- get lua interpreter configured + -- execute on configured interpreter, might not be the same as the interpreter LR is run on + local result = fs.execute_string(lua..[[ -e "if loadfile(']]..name..[[') then os.exit() else os.exit(1) end"]]) + return (result == true) +end + +return fs_lua diff --git a/Utils/luarocks/lua/luarocks/fs/tools.lua b/Utils/luarocks/lua/luarocks/fs/tools.lua new file mode 100644 index 000000000..ed51b5458 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fs/tools.lua @@ -0,0 +1,156 @@ + +--- Common fs operations implemented with third-party tools. +local tools = {} + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local cfg = require("luarocks.cfg") + +local vars = cfg.variables + +local dir_stack = {} + +--- Obtain current directory. +-- Uses the module's internal directory stack. +-- @return string: the absolute pathname of the current directory. +function tools.current_dir() + local current = cfg.cache_pwd + if not current then + local pipe = io.popen(fs.quiet_stderr(fs.Q(vars.PWD))) + current = pipe:read("*l") + pipe:close() + cfg.cache_pwd = current + end + for _, directory in ipairs(dir_stack) do + current = fs.absolute_name(directory, current) + end + return current +end + +--- Change the current directory. +-- Uses the module's internal directory stack. This does not have exact +-- semantics of chdir, as it does not handle errors the same way, +-- but works well for our purposes for now. +-- @param directory string: The directory to switch to. +-- @return boolean or (nil, string): true if successful, (nil, error message) if failed. +function tools.change_dir(directory) + assert(type(directory) == "string") + if fs.is_dir(directory) then + table.insert(dir_stack, directory) + return true + end + return nil, "directory not found: "..directory +end + +--- Change directory to root. +-- Allows leaving a directory (e.g. for deleting it) in +-- a crossplatform way. +function tools.change_dir_to_root() + table.insert(dir_stack, "/") +end + +--- Change working directory to the previous in the directory stack. +function tools.pop_dir() + local directory = table.remove(dir_stack) + return directory ~= nil +end + +--- Run the given command. +-- The command is executed in the current directory in the directory stack. +-- @param cmd string: No quoting/escaping is applied to the command. +-- @return boolean: true if command succeeds (status code 0), false +-- otherwise. +function tools.execute_string(cmd) + local current = fs.current_dir() + if not current then return false end + cmd = fs.command_at(current, cmd) + local code = os.execute(cmd) + if code == 0 or code == true then + return true + else + return false + end +end + +--- Internal implementation function for fs.dir. +-- Yields a filename on each iteration. +-- @param at string: directory to list +-- @return nil +function tools.dir_iterator(at) + local pipe = io.popen(fs.command_at(at, fs.Q(vars.LS))) + for file in pipe:lines() do + if file ~= "." and file ~= ".." then + coroutine.yield(file) + end + end + pipe:close() +end + +--- Download a remote file. +-- @param url string: URL to be fetched. +-- @param filename string or nil: this function attempts to detect the +-- resulting local filename of the remote file as the basename of the URL; +-- if that is not correct (due to a redirection, for example), the local +-- filename can be given explicitly as this second argument. +-- @return (boolean, string): true and the filename on success, +-- false and the error message on failure. +function tools.use_downloader(url, filename, cache) + assert(type(url) == "string") + assert(type(filename) == "string" or not filename) + + filename = fs.absolute_name(filename or dir.base_name(url)) + + local ok + if cfg.downloader == "wget" then + local wget_cmd = fs.Q(vars.WGET).." "..vars.WGETNOCERTFLAG.." --no-cache --user-agent=\""..cfg.user_agent.." via wget\" --quiet " + if cfg.connection_timeout and cfg.connection_timeout > 0 then + wget_cmd = wget_cmd .. "--timeout="..tonumber(cfg.connection_timeout).." --tries=1 " + end + if cache then + -- --timestamping is incompatible with --output-document, + -- but that's not a problem for our use cases. + fs.change_dir(dir.dir_name(filename)) + ok = fs.execute_quiet(wget_cmd.." --timestamping ", url) + fs.pop_dir() + elseif filename then + ok = fs.execute_quiet(wget_cmd.." --output-document ", filename, url) + else + ok = fs.execute_quiet(wget_cmd, url) + end + elseif cfg.downloader == "curl" then + local curl_cmd = fs.Q(vars.CURL).." "..vars.CURLNOCERTFLAG.." -f -L --user-agent \""..cfg.user_agent.." via curl\" " + if cfg.connection_timeout and cfg.connection_timeout > 0 then + curl_cmd = curl_cmd .. "--connect-timeout "..tonumber(cfg.connection_timeout).." " + end + ok = fs.execute_string(fs.quiet_stderr(curl_cmd..fs.Q(url).." > "..fs.Q(filename))) + end + if ok then + return true, filename + else + return false + end +end + +local md5_cmd = { + md5sum = fs.Q(vars.MD5SUM), + openssl = fs.Q(vars.OPENSSL).." md5", + md5 = fs.Q(vars.MD5), +} + +--- Get the MD5 checksum for a file. +-- @param file string: The file to be computed. +-- @return string: The MD5 checksum or nil + message +function tools.get_md5(file) + local cmd = md5_cmd[cfg.md5checker] + if not cmd then return nil, "no MD5 checker command configured" end + local pipe = io.popen(cmd.." "..fs.Q(fs.absolute_name(file))) + local computed = pipe:read("*a") + pipe:close() + if computed then + computed = computed:match("("..("%x"):rep(32)..")") + end + if computed then return computed end + return nil, "Failed to compute MD5 hash for file "..tostring(fs.absolute_name(file)) +end + +return tools diff --git a/Utils/luarocks/lua/luarocks/fs/unix.lua b/Utils/luarocks/lua/luarocks/fs/unix.lua new file mode 100644 index 000000000..e2bdc7b8f --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fs/unix.lua @@ -0,0 +1,135 @@ + +--- Unix implementation of filesystem and platform abstractions. +local unix = {} + +local fs = require("luarocks.fs") + +local cfg = require("luarocks.cfg") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +--- Annotate command string for quiet execution. +-- @param cmd string: A command-line string. +-- @return string: The command-line, with silencing annotation. +function unix.quiet(cmd) + return cmd.." 1> /dev/null 2> /dev/null" +end + +--- Annotate command string for execution with quiet stderr. +-- @param cmd string: A command-line string. +-- @return string: The command-line, with stderr silencing annotation. +function unix.quiet_stderr(cmd) + return cmd.." 2> /dev/null" +end + +--- Quote argument for shell processing. +-- Adds single quotes and escapes. +-- @param arg string: Unquoted argument. +-- @return string: Quoted argument. +function unix.Q(arg) + assert(type(arg) == "string") + return "'" .. arg:gsub("'", "'\\''") .. "'" +end + +--- Return an absolute pathname from a potentially relative one. +-- @param pathname string: pathname to convert. +-- @param relative_to string or nil: path to prepend when making +-- pathname absolute, or the current dir in the dir stack if +-- not given. +-- @return string: The pathname converted to absolute. +function unix.absolute_name(pathname, relative_to) + assert(type(pathname) == "string") + assert(type(relative_to) == "string" or not relative_to) + + relative_to = relative_to or fs.current_dir() + if pathname:sub(1,1) == "/" then + return pathname + else + return relative_to .. "/" .. pathname + end +end + +--- Return the root directory for the given path. +-- In Unix, root is always "/". +-- @param pathname string: pathname to use. +-- @return string: The root of the given pathname. +function unix.root_of(_) + return "/" +end + +--- Create a wrapper to make a script executable from the command-line. +-- @param file string: Pathname of script to be made executable. +-- @param dest string: Directory where to put the wrapper. +-- @param name string: rock name to be used in loader context. +-- @param version string: rock version to be used in loader context. +-- @return boolean or (nil, string): True if succeeded, or nil and +-- an error message. +function unix.wrap_script(file, dest, name, version) + assert(type(file) == "string") + assert(type(dest) == "string") + + local base = dir.base_name(file) + local wrapname = fs.is_dir(dest) and dest.."/"..base or dest + local lpath, lcpath = cfg.package_paths() + local wrapper = io.open(wrapname, "w") + if not wrapper then + return nil, "Could not open "..wrapname.." for writing." + end + wrapper:write("#!/bin/sh\n\n") + local lua = dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter) + local ppaths = "package.path="..util.LQ(lpath..";").."..package.path; package.cpath="..util.LQ(lcpath..";").."..package.cpath" + local addctx = "local k,l,_=pcall(require,"..util.LQ("luarocks.loader")..") _=k and l.add_context("..util.LQ(name)..","..util.LQ(version)..")" + wrapper:write('exec '..fs.Q(lua)..' -e '..fs.Q(ppaths)..' -e '..fs.Q(addctx)..' '..fs.Q(file)..' "$@"\n') + wrapper:close() + if fs.chmod(wrapname, cfg.perm_exec) then + return true + else + return nil, "Could not make "..wrapname.." executable." + end +end + +--- Check if a file (typically inside path.bin_dir) is an actual binary +-- or a Lua wrapper. +-- @param filename string: the file name with full path. +-- @return boolean: returns true if file is an actual binary +-- (or if it couldn't check) or false if it is a Lua wrapper. +function unix.is_actual_binary(filename) + if filename:match("%.lua$") then + return false + end + local file = io.open(filename) + if not file then + return true + end + local first = file:read(2) + file:close() + if not first then + util.printerr("Warning: could not read "..filename) + return true + end + return first ~= "#!" +end + +function unix.copy_binary(filename, dest) + return fs.copy(filename, dest, cfg.perm_exec) +end + +--- Move a file on top of the other. +-- The new file ceases to exist under its original name, +-- and takes over the name of the old file. +-- On Unix this is done through a single rename operation. +-- @param old_file The name of the original file, +-- which will be the new name of new_file. +-- @param new_file The name of the new file, +-- which will replace old_file. +-- @return boolean or (nil, string): True if succeeded, or nil and +-- an error message. +function unix.replace_file(old_file, new_file) + return os.rename(new_file, old_file) +end + +function unix.tmpname() + return os.tmpname() +end + +return unix diff --git a/Utils/luarocks/lua/luarocks/fs/unix/tools.lua b/Utils/luarocks/lua/luarocks/fs/unix/tools.lua new file mode 100644 index 000000000..d0802725a --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fs/unix/tools.lua @@ -0,0 +1,237 @@ + +--- fs operations implemented with third-party tools for Unix platform abstractions. +local tools = {} + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local cfg = require("luarocks.cfg") + +local vars = cfg.variables + +--- Adds prefix to command to make it run from a directory. +-- @param directory string: Path to a directory. +-- @param cmd string: A command-line string. +-- @return string: The command-line with prefix. +function tools.command_at(directory, cmd) + return "cd " .. fs.Q(fs.absolute_name(directory)) .. " && " .. cmd +end + +--- Create a directory if it does not already exist. +-- If any of the higher levels in the path name does not exist +-- too, they are created as well. +-- @param directory string: pathname of directory to create. +-- @return boolean: true on success, false on failure. +function tools.make_dir(directory) + assert(directory) + local ok, err = fs.execute(vars.MKDIR.." -p", directory) + if not ok then + err = "failed making directory "..directory + end + return ok, err +end + +--- Remove a directory if it is empty. +-- Does not return errors (for example, if directory is not empty or +-- if already does not exist) +-- @param directory string: pathname of directory to remove. +function tools.remove_dir_if_empty(directory) + assert(directory) + fs.execute_quiet(vars.RMDIR, directory) +end + +--- Remove a directory if it is empty. +-- Does not return errors (for example, if directory is not empty or +-- if already does not exist) +-- @param directory string: pathname of directory to remove. +function tools.remove_dir_tree_if_empty(directory) + assert(directory) + fs.execute_quiet(vars.RMDIR, "-p", directory) +end + +--- Copy a file. +-- @param src string: Pathname of source +-- @param dest string: Pathname of destination +-- @param perm string or nil: Permissions for destination file, +-- @return boolean or (boolean, string): true on success, false on failure, +-- plus an error message. +function tools.copy(src, dest, perm) + assert(src and dest) + if fs.execute(vars.CP, src, dest) then + if perm then + if fs.is_dir(dest) then + dest = dir.path(dest, dir.base_name(src)) + end + if fs.chmod(dest, perm) then + return true + else + return false, "Failed setting permissions of "..dest + end + end + return true + else + return false, "Failed copying "..src.." to "..dest + end +end + +--- Recursively copy the contents of a directory. +-- @param src string: Pathname of source +-- @param dest string: Pathname of destination +-- @return boolean or (boolean, string): true on success, false on failure, +-- plus an error message. +function tools.copy_contents(src, dest) + assert(src and dest) + if fs.execute_quiet(vars.CP.." -pPR "..fs.Q(src).."/* "..fs.Q(dest)) then + return true + else + return false, "Failed copying "..src.." to "..dest + end +end +--- Delete a file or a directory and all its contents. +-- For safety, this only accepts absolute paths. +-- @param arg string: Pathname of source +-- @return nil +function tools.delete(arg) + assert(arg) + assert(arg:sub(1,1) == "/") + fs.execute_quiet(vars.RM, "-rf", arg) +end + +--- Recursively scan the contents of a directory. +-- @param at string or nil: directory to scan (will be the current +-- directory if none is given). +-- @return table: an array of strings with the filenames representing +-- the contents of a directory. +function tools.find(at) + assert(type(at) == "string" or not at) + if not at then + at = fs.current_dir() + end + if not fs.is_dir(at) then + return {} + end + local result = {} + local pipe = io.popen(fs.command_at(at, fs.quiet_stderr(vars.FIND.." *"))) + for file in pipe:lines() do + table.insert(result, file) + end + pipe:close() + return result +end + +--- Compress files in a .zip archive. +-- @param zipfile string: pathname of .zip archive to be created. +-- @param ... Filenames to be stored in the archive are given as +-- additional arguments. +-- @return boolean: true on success, false on failure. +function tools.zip(zipfile, ...) + return fs.execute(vars.ZIP.." -r", zipfile, ...) +end + +--- Uncompress files from a .zip archive. +-- @param zipfile string: pathname of .zip archive to be extracted. +-- @return boolean: true on success, false on failure. +function tools.unzip(zipfile) + assert(zipfile) + return fs.execute_quiet(vars.UNZIP, zipfile) +end + +--- Test is file/directory exists +-- @param file string: filename to test +-- @return boolean: true if file exists, false otherwise. +function tools.exists(file) + assert(file) + return fs.execute(vars.TEST, "-e", file) +end + +--- Test is pathname is a directory. +-- @param file string: pathname to test +-- @return boolean: true if it is a directory, false otherwise. +function tools.is_dir(file) + assert(file) + return fs.execute(vars.TEST, "-d", file) +end + +--- Test is pathname is a regular file. +-- @param file string: pathname to test +-- @return boolean: true if it is a regular file, false otherwise. +function tools.is_file(file) + assert(file) + return fs.execute(vars.TEST, "-f", file) +end + +function tools.chmod(pathname, mode) + if mode then + return fs.execute(vars.CHMOD, mode, pathname) + else + return false + end +end + +--- Unpack an archive. +-- Extract the contents of an archive, detecting its format by +-- filename extension. +-- @param archive string: Filename of archive. +-- @return boolean or (boolean, string): true on success, false and an error message on failure. +function tools.unpack_archive(archive) + assert(type(archive) == "string") + + local pipe_to_tar = " | "..vars.TAR.." -xf -" + + if not cfg.verbose then + pipe_to_tar = " 2> /dev/null"..fs.quiet(pipe_to_tar) + end + + local ok + if archive:match("%.tar%.gz$") or archive:match("%.tgz$") then + ok = fs.execute_string(vars.GUNZIP.." -c "..fs.Q(archive)..pipe_to_tar) + elseif archive:match("%.tar%.bz2$") then + ok = fs.execute_string(vars.BUNZIP2.." -c "..fs.Q(archive)..pipe_to_tar) + elseif archive:match("%.zip$") then + ok = fs.execute_quiet(vars.UNZIP, archive) + elseif archive:match("%.lua$") or archive:match("%.c$") then + -- Ignore .lua and .c files; they don't need to be extracted. + return true + else + return false, "Couldn't extract archive "..archive..": unrecognized filename extension" + end + if not ok then + return false, "Failed extracting "..archive + end + return true +end + +function tools.get_permissions(filename) + local pipe = io.popen(vars.STAT.." "..vars.STATFLAG.." "..fs.Q(filename)) + local ret = pipe:read("*l") + pipe:close() + return ret +end + +function tools.browser(url) + return fs.execute(cfg.web_browser, url) +end + +function tools.set_time(file, time) + file = dir.normalize(file) + return fs.execute(vars.TOUCH, "-d", "@"..tostring(time), file) +end + +--- Create a temporary directory. +-- @param name string: name pattern to use for avoiding conflicts +-- when creating temporary directory. +-- @return string or (nil, string): name of temporary directory or (nil, error message) on failure. +function tools.make_temp_dir(name) + assert(type(name) == "string") + name = dir.normalize(name) + + local template = (os.getenv("TMPDIR") or "/tmp") .. "/luarocks_" .. name:gsub(dir.separator, "_") .. "-XXXXXX" + local pipe = io.popen(vars.MKTEMP.." -d "..fs.Q(template)) + local dirname = pipe:read("*l") + pipe:close() + if dirname and dirname:match("^/") then + return dirname + end + return nil, "Failed to create temporary directory "..tostring(dirname) +end + +return tools diff --git a/Utils/luarocks/lua/luarocks/fs/win32.lua b/Utils/luarocks/lua/luarocks/fs/win32.lua new file mode 100644 index 000000000..cfc28d35f --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fs/win32.lua @@ -0,0 +1,266 @@ +--- Windows implementation of filesystem and platform abstractions. +-- Download http://unxutils.sourceforge.net/ for Windows GNU utilities +-- used by this module. +local win32 = {} + +local fs = require("luarocks.fs") + +local cfg = require("luarocks.cfg") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +math.randomseed(os.time()) + +-- Monkey patch io.popen and os.execute to make sure quoting +-- works as expected. +-- See http://lua-users.org/lists/lua-l/2013-11/msg00367.html +local _prefix = "type NUL && " +local _popen, _execute = io.popen, os.execute +io.popen = function(cmd, ...) return _popen(_prefix..cmd, ...) end +os.execute = function(cmd, ...) return _execute(_prefix..cmd, ...) end + +--- Annotate command string for quiet execution. +-- @param cmd string: A command-line string. +-- @return string: The command-line, with silencing annotation. +function win32.quiet(cmd) + return cmd.." 2> NUL 1> NUL" +end + +--- Annotate command string for execution with quiet stderr. +-- @param cmd string: A command-line string. +-- @return string: The command-line, with stderr silencing annotation. +function win32.quiet_stderr(cmd) + return cmd.." 2> NUL" +end + +-- Split path into root and the rest. +-- Root part consists of an optional drive letter (e.g. "C:") +-- and an optional directory separator. +local function split_root(path) + local root = "" + + if path:match("^.:") then + root = path:sub(1, 2) + path = path:sub(3) + end + + if path:match("^[\\/]") then + root = path:sub(1, 1) + path = path:sub(2) + end + + return root, path +end + +--- Quote argument for shell processing. Fixes paths on Windows. +-- Adds double quotes and escapes. +-- @param arg string: Unquoted argument. +-- @return string: Quoted argument. +function win32.Q(arg) + assert(type(arg) == "string") + -- Use Windows-specific directory separator for paths. + -- Paths should be converted to absolute by now. + if split_root(arg) ~= "" then + arg = arg:gsub("/", "\\") + end + if arg == "\\" then + return '\\' -- CHDIR needs special handling for root dir + end + -- URLs and anything else + arg = arg:gsub('\\(\\*)"', '\\%1%1"') + arg = arg:gsub('\\+$', '%0%0') + arg = arg:gsub('"', '\\"') + arg = arg:gsub('(\\*)%%', '%1%1"%%"') + return '"' .. arg .. '"' +end + +--- Quote argument for shell processing in batch files. +-- Adds double quotes and escapes. +-- @param arg string: Unquoted argument. +-- @return string: Quoted argument. +function win32.Qb(arg) + assert(type(arg) == "string") + -- Use Windows-specific directory separator for paths. + -- Paths should be converted to absolute by now. + if split_root(arg) ~= "" then + arg = arg:gsub("/", "\\") + end + if arg == "\\" then + return '\\' -- CHDIR needs special handling for root dir + end + -- URLs and anything else + arg = arg:gsub('\\(\\*)"', '\\%1%1"') + arg = arg:gsub('\\+$', '%0%0') + arg = arg:gsub('"', '\\"') + arg = arg:gsub('%%', '%%%%') + return '"' .. arg .. '"' +end + +--- Return an absolute pathname from a potentially relative one. +-- @param pathname string: pathname to convert. +-- @param relative_to string or nil: path to prepend when making +-- pathname absolute, or the current dir in the dir stack if +-- not given. +-- @return string: The pathname converted to absolute. +function win32.absolute_name(pathname, relative_to) + assert(type(pathname) == "string") + assert(type(relative_to) == "string" or not relative_to) + + relative_to = relative_to or fs.current_dir() + local root, rest = split_root(pathname) + if root:match("[\\/]$") then + -- It's an absolute path already. + return pathname + else + -- It's a relative path, join it with base path. + -- This drops drive letter from paths like "C:foo". + return relative_to .. "/" .. rest + end +end + +--- Return the root directory for the given path. +-- For example, for "c:\hello", returns "c:\" +-- @param pathname string: pathname to use. +-- @return string: The root of the given pathname. +function win32.root_of(pathname) + return (split_root(fs.absolute_name(pathname))) +end + +--- Create a wrapper to make a script executable from the command-line. +-- @param file string: Pathname of script to be made executable. +-- @param dest string: Directory where to put the wrapper. +-- @param name string: rock name to be used in loader context. +-- @param version string: rock version to be used in loader context. +-- @return boolean or (nil, string): True if succeeded, or nil and +-- an error message. +function win32.wrap_script(file, dest, name, version) + assert(type(file) == "string") + assert(type(dest) == "string") + + local base = dir.base_name(file) + local wrapname = fs.is_dir(dest) and dest.."/"..base or dest + wrapname = wrapname..".bat" + local lpath, lcpath = cfg.package_paths() + lpath = util.remove_path_dupes(lpath, ";") + lcpath = util.remove_path_dupes(lcpath, ";") + local wrapper = io.open(wrapname, "w") + if not wrapper then + return nil, "Could not open "..wrapname.." for writing." + end + wrapper:write("@echo off\n") + local lua = dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter) + local ppaths = "package.path="..util.LQ(lpath..";").."..package.path; package.cpath="..util.LQ(lcpath..";").."..package.cpath" + local addctx = "local k,l,_=pcall(require,"..util.LQ("luarocks.loader")..") _=k and l.add_context("..util.LQ(name)..","..util.LQ(version)..")" + wrapper:write(fs.Qb(lua)..' -e '..fs.Qb(ppaths)..' -e '..fs.Qb(addctx)..' '..fs.Qb(file)..' %*\n') + wrapper:write("exit /b %ERRORLEVEL%\n") + wrapper:close() + return true +end + +function win32.is_actual_binary(name) + name = name:lower() + if name:match("%.bat$") or name:match("%.exe$") then + return true + end + return false +end + +function win32.copy_binary(filename, dest) + local ok, err = fs.copy(filename, dest) + if not ok then + return nil, err + end + local exe_pattern = "%.[Ee][Xx][Ee]$" + local base = dir.base_name(filename) + dest = dir.dir_name(dest) + if base:match(exe_pattern) then + base = base:gsub(exe_pattern, ".lua") + local helpname = dest.."/"..base + local helper = io.open(helpname, "w") + if not helper then + return nil, "Could not open "..helpname.." for writing." + end + helper:write('package.path=\"'..package.path:gsub("\\","\\\\")..';\"..package.path\n') + helper:write('package.cpath=\"'..package.path:gsub("\\","\\\\")..';\"..package.cpath\n') + helper:close() + end + return true +end + +function win32.chmod(filename, mode) + return true +end + +function win32.get_permissions(filename) + return "" +end + +--- Move a file on top of the other. +-- The new file ceases to exist under its original name, +-- and takes over the name of the old file. +-- On Windows this is done by removing the original file and +-- renaming the new file to its original name. +-- @param old_file The name of the original file, +-- which will be the new name of new_file. +-- @param new_file The name of the new file, +-- which will replace old_file. +-- @return boolean or (nil, string): True if succeeded, or nil and +-- an error message. +function win32.replace_file(old_file, new_file) + os.remove(old_file) + return os.rename(new_file, old_file) +end + +--- Test is file/dir is writable. +-- Warning: testing if a file/dir is writable does not guarantee +-- that it will remain writable and therefore it is no replacement +-- for checking the result of subsequent operations. +-- @param file string: filename to test +-- @return boolean: true if file exists, false otherwise. +function win32.is_writable(file) + assert(file) + file = dir.normalize(file) + local result + local tmpname = 'tmpluarockstestwritable.deleteme' + if fs.is_dir(file) then + local file2 = dir.path(file, tmpname) + local fh = io.open(file2, 'wb') + result = fh ~= nil + if fh then fh:close() end + if result then + -- the above test might give a false positive when writing to + -- c:\program files\ because of VirtualStore redirection on Vista and up + -- So check whether it's really there + result = fs.exists(file2) + end + os.remove(file2) + else + local fh = io.open(file, 'r+b') + result = fh ~= nil + if fh then fh:close() end + end + return result +end + +--- Create a temporary directory. +-- @param name string: name pattern to use for avoiding conflicts +-- when creating temporary directory. +-- @return string or (nil, string): name of temporary directory or (nil, error message) on failure. +function win32.make_temp_dir(name) + assert(type(name) == "string") + name = dir.normalize(name) + + local temp_dir = os.getenv("TMP") .. "/luarocks_" .. name:gsub(dir.separator, "_") .. "-" .. tostring(math.floor(math.random() * 10000)) + local ok, err = fs.make_dir(temp_dir) + if ok then + return temp_dir + else + return nil, err + end +end + +function win32.tmpname() + return os.getenv("TMP")..os.tmpname() +end + +return win32 diff --git a/Utils/luarocks/lua/luarocks/fs/win32/tools.lua b/Utils/luarocks/lua/luarocks/fs/win32/tools.lua new file mode 100644 index 000000000..4adc78d1e --- /dev/null +++ b/Utils/luarocks/lua/luarocks/fs/win32/tools.lua @@ -0,0 +1,227 @@ + +--- fs operations implemented with third-party tools for Windows platform abstractions. +-- Download http://unxutils.sourceforge.net/ for Windows GNU utilities +-- used by this module. +local tools = {} + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local cfg = require("luarocks.cfg") + +local vars = cfg.variables + +--- Adds prefix to command to make it run from a directory. +-- @param directory string: Path to a directory. +-- @param cmd string: A command-line string. +-- @return string: The command-line with prefix. +function tools.command_at(directory, cmd) + local drive = directory:match("^([A-Za-z]:)") + cmd = "cd " .. fs.Q(directory) .. " & " .. cmd + if drive then + cmd = drive .. " & " .. cmd + end + return cmd +end + +--- Create a directory if it does not already exist. +-- If any of the higher levels in the path name does not exist +-- too, they are created as well. +-- @param directory string: pathname of directory to create. +-- @return boolean: true on success, false on failure. +function tools.make_dir(directory) + assert(directory) + directory = dir.normalize(directory) + fs.execute_quiet(fs.Q(vars.MKDIR).." -p ", directory) + if not fs.is_dir(directory) then + return false, "failed making directory "..directory + end + return true +end + +--- Remove a directory if it is empty. +-- Does not return errors (for example, if directory is not empty or +-- if already does not exist) +-- @param directory string: pathname of directory to remove. +function tools.remove_dir_if_empty(directory) + assert(directory) + fs.execute_quiet(fs.Q(vars.RMDIR), directory) +end + +--- Remove a directory if it is empty. +-- Does not return errors (for example, if directory is not empty or +-- if already does not exist) +-- @param directory string: pathname of directory to remove. +function tools.remove_dir_tree_if_empty(directory) + assert(directory) + fs.execute_quiet(fs.Q(vars.RMDIR), directory) +end + +--- Copy a file. +-- @param src string: Pathname of source +-- @param dest string: Pathname of destination +-- @return boolean or (boolean, string): true on success, false on failure, +-- plus an error message. +function tools.copy(src, dest) + assert(src and dest) + if dest:match("[/\\]$") then dest = dest:sub(1, -2) end + local ok = fs.execute(fs.Q(vars.CP), src, dest) + if ok then + return true + else + return false, "Failed copying "..src.." to "..dest + end +end + +--- Recursively copy the contents of a directory. +-- @param src string: Pathname of source +-- @param dest string: Pathname of destination +-- @return boolean or (boolean, string): true on success, false on failure, +-- plus an error message. +function tools.copy_contents(src, dest) + assert(src and dest) + if fs.execute_quiet(fs.Q(vars.CP), "-dR", src.."\\*.*", dest) then + return true + else + return false, "Failed copying "..src.." to "..dest + end +end + +--- Delete a file or a directory and all its contents. +-- For safety, this only accepts absolute paths. +-- @param arg string: Pathname of source +-- @return nil +function tools.delete(arg) + assert(arg) + assert(arg:match("^[a-zA-Z]?:?[\\/]")) + fs.execute_quiet("if exist "..fs.Q(arg.."\\").." ( RMDIR /S /Q "..fs.Q(arg).." ) else ( DEL /Q /F "..fs.Q(arg).." )") +end + +--- Recursively scan the contents of a directory. +-- @param at string or nil: directory to scan (will be the current +-- directory if none is given). +-- @return table: an array of strings with the filenames representing +-- the contents of a directory. Paths are returned with forward slashes. +function tools.find(at) + assert(type(at) == "string" or not at) + if not at then + at = fs.current_dir() + end + if not fs.is_dir(at) then + return {} + end + local result = {} + local pipe = io.popen(fs.command_at(at, fs.quiet_stderr(fs.Q(vars.FIND)))) + for file in pipe:lines() do + -- Windows find is a bit different + local first_two = file:sub(1,2) + if first_two == ".\\" or first_two == "./" then file=file:sub(3) end + if file ~= "." then + table.insert(result, (file:gsub("\\", "/"))) + end + end + pipe:close() + return result +end + +--- Compress files in a .zip archive. +-- @param zipfile string: pathname of .zip archive to be created. +-- @param ... Filenames to be stored in the archive are given as +-- additional arguments. +-- @return boolean: true on success, false on failure. +function tools.zip(zipfile, ...) + return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa a -tzip", zipfile, ...) +end + +--- Uncompress files from a .zip archive. +-- @param zipfile string: pathname of .zip archive to be extracted. +-- @return boolean: true on success, false on failure. +function tools.unzip(zipfile) + assert(zipfile) + return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa x", zipfile) +end + +--- Test is pathname is a directory. +-- @param file string: pathname to test +-- @return boolean: true if it is a directory, false otherwise. +function tools.is_dir(file) + assert(file) + return fs.execute_quiet("if not exist " .. fs.Q(file.."\\").." invalidcommandname") +end + +--- Test is pathname is a regular file. +-- @param file string: pathname to test +-- @return boolean: true if it is a regular file, false otherwise. +function tools.is_file(file) + assert(file) + return fs.execute(fs.Q(vars.TEST).." -f", file) +end + +--- Strip the last extension of a filename. +-- Example: "foo.tar.gz" becomes "foo.tar". +-- If filename has no dots, returns it unchanged. +-- @param filename string: The file name to strip. +-- @return string: The stripped name. +local function strip_extension(filename) + assert(type(filename) == "string") + return (filename:gsub("%.[^.]+$", "")) or filename +end + +--- Uncompress gzip file. +-- @param archive string: Filename of archive. +-- @return boolean : success status +local function gunzip(archive) + return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa x", archive) +end + +--- Unpack an archive. +-- Extract the contents of an archive, detecting its format by +-- filename extension. +-- @param archive string: Filename of archive. +-- @return boolean or (boolean, string): true on success, false and an error message on failure. +function tools.unpack_archive(archive) + assert(type(archive) == "string") + + local ok + local sevenzx = fs.Q(vars.SEVENZ).." -aoa x" + if archive:match("%.tar%.gz$") then + ok = gunzip(archive) + if ok then + ok = fs.execute_quiet(sevenzx, strip_extension(archive)) + end + elseif archive:match("%.tgz$") then + ok = gunzip(archive) + if ok then + ok = fs.execute_quiet(sevenzx, strip_extension(archive)..".tar") + end + elseif archive:match("%.tar%.bz2$") then + ok = fs.execute_quiet(sevenzx, archive) + if ok then + ok = fs.execute_quiet(sevenzx, strip_extension(archive)) + end + elseif archive:match("%.zip$") then + ok = fs.execute_quiet(sevenzx, archive) + elseif archive:match("%.lua$") or archive:match("%.c$") then + -- Ignore .lua and .c files; they don't need to be extracted. + return true + else + return false, "Couldn't extract archive "..archive..": unrecognized filename extension" + end + if not ok then + return false, "Failed extracting "..archive + end + return true +end + +--- Test for existance of a file. +-- @param file string: filename to test +-- @return boolean: true if file exists, false otherwise. +function tools.exists(file) + assert(file) + return fs.execute_quiet("if not exist " .. fs.Q(file) .. " invalidcommandname") +end + +function tools.browser(url) + return fs.execute(cfg.web_browser..' "Starting docs..." '..fs.Q(url)) +end + +return tools diff --git a/Utils/luarocks/lua/luarocks/help.lua b/Utils/luarocks/lua/luarocks/help.lua new file mode 100644 index 000000000..871e97e99 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/help.lua @@ -0,0 +1,118 @@ + +--- Module implementing the LuaRocks "help" command. +-- This is a generic help display module, which +-- uses a global table called "commands" to find commands +-- to show help for; each command should be represented by a +-- table containing "help" and "help_summary" fields. +local help = {} + +local util = require("luarocks.util") +local cfg = require("luarocks.cfg") +local dir = require("luarocks.dir") + +local program = util.this_program("luarocks") + +util.add_run_function(help) +help.help_summary = "Help on commands. Type '"..program.." help ' for more." + +help.help_arguments = "[]" +help.help = [[ + is the command to show help for. +]] + +local function print_banner() + util.printout("\nLuaRocks "..cfg.program_version..", a module deployment system for Lua") +end + +local function print_section(section) + util.printout("\n"..section) +end + +local function get_status(status) + if status then + return "ok" + else + return "not found" + end +end + +--- Driver function for the "help" command. +-- @param command string or nil: command to show help for; if not +-- given, help summaries for all commands are shown. +-- @return boolean or (nil, string): true if there were no errors +-- or nil and an error message if an invalid command was requested. +function help.command(flags, command) + if not command then + local conf = cfg.which_config() + print_banner() + print_section("NAME") + util.printout("\t"..program..[[ - ]]..program_description) + print_section("SYNOPSIS") + util.printout("\t"..program..[[ [--from= | --only-from=] [--to=] [VAR=VALUE]... [] ]]) + print_section("GENERAL OPTIONS") + util.printout([[ + These apply to all commands, as appropriate: + + --server= Fetch rocks/rockspecs from this server + (takes priority over config file) + --only-server= Fetch rocks/rockspecs from this server only + (overrides any entries in the config file) + --only-sources= Restrict downloads to paths matching the + given URL. + --tree= Which tree to operate on. + --local Use the tree in the user's home directory. + To enable it, see ']]..program..[[ help path'. + --verbose Display verbose output of commands executed. + --timeout= Timeout on network operations, in seconds. + 0 means no timeout (wait forever). + Default is ]]..tostring(cfg.connection_timeout)..[[.]]) + print_section("VARIABLES") + util.printout([[ + Variables from the "variables" table of the configuration file + can be overriden with VAR=VALUE assignments.]]) + print_section("COMMANDS") + for name, command in util.sortedpairs(commands) do + local cmd = require(command) + util.printout("", name) + util.printout("\t", cmd.help_summary) + end + print_section("CONFIGURATION") + util.printout("\tLua version: " .. cfg.lua_version) + util.printout("\tConfiguration files:") + util.printout("\t\tSystem: ".. dir.normalize(conf.system.file) .. " (" .. get_status(conf.system.ok) ..")") + if conf.user.file then + util.printout("\t\tUser : ".. dir.normalize(conf.user.file) .. " (" .. get_status(conf.user.ok) ..")\n") + else + util.printout("\t\tUser : disabled in this LuaRocks installation.\n") + end + util.printout("\tRocks trees in use: ") + for _, tree in ipairs(cfg.rocks_trees) do + if type(tree) == "string" then + util.printout("\t\t"..dir.normalize(tree)) + else + local name = tree.name and " (\""..tree.name.."\")" or "" + util.printout("\t\t"..dir.normalize(tree.root)..name) + end + end + else + command = command:gsub("-", "_") + local cmd = commands[command] and require(commands[command]) + if cmd then + local arguments = cmd.help_arguments or "" + print_banner() + print_section("NAME") + util.printout("\t"..program.." "..command.." - "..cmd.help_summary) + print_section("SYNOPSIS") + util.printout("\t"..program.." "..command.." "..arguments) + print_section("DESCRIPTION") + util.printout("",(cmd.help:gsub("\n","\n\t"):gsub("\n\t$",""))) + print_section("SEE ALSO") + util.printout("","'"..program.." help' for general options and configuration.\n") + else + return nil, "Unknown command: "..command + end + end + return true +end + +return help diff --git a/Utils/luarocks/lua/luarocks/index.lua b/Utils/luarocks/lua/luarocks/index.lua new file mode 100644 index 000000000..e1f563ef2 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/index.lua @@ -0,0 +1,186 @@ + +--- Module which builds the index.html page to be used in rocks servers. +local index = {} +package.loaded["luarocks.index"] = index + +local util = require("luarocks.util") +local fs = require("luarocks.fs") +local deps = require("luarocks.deps") +local persist = require("luarocks.persist") +local dir = require("luarocks.dir") +local manif = require("luarocks.manif") + +local ext_url_target = ' target="_blank"' + +local index_header = [[ + + + +Available rocks + + + + +

Available rocks

+

+Lua modules available from this location for use with LuaRocks: +

+ +]] + +local index_package_begin = [[ + + + +]] + +local index_footer_begin = [[ +
+

$package - $summary
+

$detailed
+$externaldependencies +latest sources $homepage | License: $license

+
+]] + +local index_package_end = [[ +
+

+manifest file +]] +local index_manifest_ver = [[ +• Lua $VER manifest file (zip) +]] +local index_footer_end = [[ +

+ + +]] + +function index.format_external_dependencies(rockspec) + if rockspec.external_dependencies then + local deplist = {} + local listed_set = {} + local plats = nil + for name, desc in util.sortedpairs(rockspec.external_dependencies) do + if name ~= "platforms" then + table.insert(deplist, name:lower()) + listed_set[name] = true + else + plats = desc + end + end + if plats then + for plat, entries in util.sortedpairs(plats) do + for name, desc in util.sortedpairs(entries) do + if not listed_set[name] then + table.insert(deplist, name:lower() .. " (on "..plat..")") + end + end + end + end + return '

External dependencies: ' .. table.concat(deplist, ', ').. '

' + else + return "" + end +end + +function index.make_index(repo) + if not fs.is_dir(repo) then + return nil, "Cannot access repository at "..repo + end + local manifest = manif.load_manifest(repo) + local out = io.open(dir.path(repo, "index.html"), "w") + + out:write(index_header) + for package, version_list in util.sortedpairs(manifest.repository) do + local latest_rockspec = nil + local output = index_package_begin + for version, data in util.sortedpairs(version_list, deps.compare_versions) do + local versions = {} + output = output..version..': ' + table.sort(data, function(a,b) return a.arch < b.arch end) + for _, item in ipairs(data) do + local file + if item.arch == 'rockspec' then + file = ("%s-%s.rockspec"):format(package, version) + if not latest_rockspec then latest_rockspec = file end + else + file = ("%s-%s.%s.rock"):format(package, version, item.arch) + end + table.insert(versions, ''..item.arch..'') + end + output = output .. table.concat(versions, ', ') .. '
' + end + output = output .. index_package_end + if latest_rockspec then + local rockspec = persist.load_into_table(dir.path(repo, latest_rockspec)) + local descript = rockspec.description or {} + local vars = { + anchor = package, + package = rockspec.package, + original = rockspec.source.url, + summary = descript.summary or "", + detailed = descript.detailed or "", + license = descript.license or "N/A", + homepage = descript.homepage and ('| project homepage') or "", + externaldependencies = index.format_external_dependencies(rockspec) + } + vars.detailed = vars.detailed:gsub("\n\n", "

"):gsub("%s+", " ") + vars.detailed = vars.detailed:gsub("(https?://[a-zA-Z0-9%.%%-_%+%[%]=%?&/$@;:]+)", '%1') + output = output:gsub("$(%w+)", vars) + else + output = output:gsub("$anchor", package) + output = output:gsub("$package", package) + output = output:gsub("$(%w+)", "") + end + out:write(output) + end + out:write(index_footer_begin) + for ver in util.lua_versions() do + out:write((index_manifest_ver:gsub("$VER", ver))) + end + out:write(index_footer_end) + out:close() +end + +return index diff --git a/Utils/luarocks/lua/luarocks/install.lua b/Utils/luarocks/lua/luarocks/install.lua new file mode 100644 index 000000000..e28c24f08 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/install.lua @@ -0,0 +1,188 @@ +--- Module implementing the LuaRocks "install" command. +-- Installs binary rocks. +local install = {} +package.loaded["luarocks.install"] = install + +local path = require("luarocks.path") +local repos = require("luarocks.repos") +local fetch = require("luarocks.fetch") +local util = require("luarocks.util") +local fs = require("luarocks.fs") +local deps = require("luarocks.deps") +local manif = require("luarocks.manif") +local remove = require("luarocks.remove") +local cfg = require("luarocks.cfg") + +util.add_run_function(install) +install.help_summary = "Install a rock." + +install.help_arguments = "{| []}" + +install.help = [[ +Argument may be the name of a rock to be fetched from a repository +or a filename of a locally available rock. + +--keep Do not remove previously installed versions of the + rock after installing a new one. This behavior can + be made permanent by setting keep_other_versions=true + in the configuration file. + +--only-deps Installs only the dependencies of the rock. +]]..util.deps_mode_help() + + +--- Install a binary rock. +-- @param rock_file string: local or remote filename of a rock. +-- @param deps_mode: string: Which trees to check dependencies for: +-- "one" for the current default tree, "all" for all trees, +-- "order" for all trees with priority >= the current default, "none" for no trees. +-- @return (string, string) or (nil, string, [string]): Name and version of +-- installed rock if succeeded or nil and an error message followed by an error code. +function install.install_binary_rock(rock_file, deps_mode) + assert(type(rock_file) == "string") + + local name, version, arch = path.parse_name(rock_file) + if not name then + return nil, "Filename "..rock_file.." does not match format 'name-version-revision.arch.rock'." + end + + if arch ~= "all" and arch ~= cfg.arch then + return nil, "Incompatible architecture "..arch, "arch" + end + if repos.is_installed(name, version) then + repos.delete_version(name, version, deps_mode) + end + + local rollback = util.schedule_function(function() + fs.delete(path.install_dir(name, version)) + fs.remove_dir_if_empty(path.versions_dir(name)) + end) + + local ok, err, errcode = fetch.fetch_and_unpack_rock(rock_file, path.install_dir(name, version)) + if not ok then return nil, err, errcode end + + local rockspec, err, errcode = fetch.load_rockspec(path.rockspec_file(name, version)) + if err then + return nil, "Failed loading rockspec for installed package: "..err, errcode + end + + if deps_mode == "none" then + util.printerr("Warning: skipping dependency checks.") + else + ok, err, errcode = deps.check_external_deps(rockspec, "install") + if err then return nil, err, errcode end + end + + -- For compatibility with .rock files built with LuaRocks 1 + if not fs.exists(path.rock_manifest_file(name, version)) then + ok, err = manif.make_rock_manifest(name, version) + if err then return nil, err end + end + + if deps_mode ~= "none" then + ok, err, errcode = deps.fulfill_dependencies(rockspec, deps_mode) + if err then return nil, err, errcode end + end + + ok, err = repos.deploy_files(name, version, repos.should_wrap_bin_scripts(rockspec), deps_mode) + if err then return nil, err end + + util.remove_scheduled_function(rollback) + rollback = util.schedule_function(function() + repos.delete_version(name, version, deps_mode) + end) + + ok, err = repos.run_hook(rockspec, "post_install") + if err then return nil, err end + + util.announce_install(rockspec) + util.remove_scheduled_function(rollback) + return name, version +end + +--- Installs the dependencies of a binary rock. +-- @param rock_file string: local or remote filename of a rock. +-- @param deps_mode: string: Which trees to check dependencies for: +-- "one" for the current default tree, "all" for all trees, +-- "order" for all trees with priority >= the current default, "none" for no trees. +-- @return (string, string) or (nil, string, [string]): Name and version of +-- the rock whose dependencies were installed if succeeded or nil and an error message +-- followed by an error code. +function install.install_binary_rock_deps(rock_file, deps_mode) + assert(type(rock_file) == "string") + + local name, version, arch = path.parse_name(rock_file) + if not name then + return nil, "Filename "..rock_file.." does not match format 'name-version-revision.arch.rock'." + end + + if arch ~= "all" and arch ~= cfg.arch then + return nil, "Incompatible architecture "..arch, "arch" + end + + local ok, err, errcode = fetch.fetch_and_unpack_rock(rock_file, path.install_dir(name, version)) + if not ok then return nil, err, errcode end + + local rockspec, err, errcode = fetch.load_rockspec(path.rockspec_file(name, version)) + if err then + return nil, "Failed loading rockspec for installed package: "..err, errcode + end + + ok, err, errcode = deps.fulfill_dependencies(rockspec, deps_mode) + if err then return nil, err, errcode end + + util.printout() + util.printout("Successfully installed dependencies for " ..name.." "..version) + + return name, version +end + +--- Driver function for the "install" command. +-- @param name string: name of a binary rock. If an URL or pathname +-- to a binary rock is given, fetches and installs it. If a rockspec or a +-- source rock is given, forwards the request to the "build" command. +-- If a package name is given, forwards the request to "search" and, +-- if returned a result, installs the matching rock. +-- @param version string: When passing a package name, a version number +-- may also be given. +-- @return boolean or (nil, string, exitcode): True if installation was +-- successful, nil and an error message otherwise. exitcode is optionally returned. +function install.command(flags, name, version) + if type(name) ~= "string" then + return nil, "Argument missing. "..util.see_help("install") + end + + local ok, err = fs.check_command_permissions(flags) + if not ok then return nil, err, cfg.errorcodes.PERMISSIONDENIED end + + if name:match("%.rockspec$") or name:match("%.src%.rock$") then + local build = require("luarocks.build") + return build.command(flags, name) + elseif name:match("%.rock$") then + if flags["only-deps"] then + ok, err = install.install_binary_rock_deps(name, deps.get_deps_mode(flags)) + else + ok, err = install.install_binary_rock(name, deps.get_deps_mode(flags)) + end + if not ok then return nil, err end + name, version = ok, err + + if (not flags["only-deps"]) and (not flags["keep"]) and not cfg.keep_other_versions then + local ok, err = remove.remove_other_versions(name, version, flags["force"], flags["force-fast"]) + if not ok then util.printerr(err) end + end + + manif.check_dependencies(nil, deps.get_deps_mode(flags)) + return name, version + else + local search = require("luarocks.search") + local url, err = search.find_suitable_rock(search.make_query(name:lower(), version)) + if not url then + return nil, err + end + util.printout("Installing "..url) + return install.command(flags, url) + end +end + +return install diff --git a/Utils/luarocks/lua/luarocks/lint.lua b/Utils/luarocks/lua/luarocks/lint.lua new file mode 100644 index 000000000..0fd81a203 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/lint.lua @@ -0,0 +1,55 @@ + +--- Module implementing the LuaRocks "lint" command. +-- Utility function that checks syntax of the rockspec. +local lint = {} +package.loaded["luarocks.lint"] = lint + +local util = require("luarocks.util") +local download = require("luarocks.download") +local fetch = require("luarocks.fetch") + +util.add_run_function(lint) +lint.help_summary = "Check syntax of a rockspec." +lint.help_arguments = "" +lint.help = [[ +This is a utility function that checks the syntax of a rockspec. + +It returns success or failure if the text of a rockspec is +syntactically correct. +]] + +function lint.command(flags, input) + if not input then + return nil, "Argument missing. "..util.see_help("lint") + end + + local filename = input + if not input:match(".rockspec$") then + local err + filename, err = download.download("rockspec", input:lower()) + if not filename then + return nil, err + end + end + + local rs, err = fetch.load_local_rockspec(filename) + if not rs then + return nil, "Failed loading rockspec: "..err + end + + local ok = true + + -- This should have been done in the type checker, + -- but it would break compatibility of other commands. + -- Making 'lint' alone be stricter shouldn't be a problem, + -- because extra-strict checks is what lint-type commands + -- are all about. + if not rs.description.license then + util.printerr("Rockspec has no license field.") + ok = false + end + + return ok, ok or filename.." failed consistency checks." +end + +return lint diff --git a/Utils/luarocks/lua/luarocks/list.lua b/Utils/luarocks/lua/luarocks/list.lua new file mode 100644 index 000000000..c65e058f9 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/list.lua @@ -0,0 +1,97 @@ + +--- Module implementing the LuaRocks "list" command. +-- Lists currently installed rocks. +local list = {} +package.loaded["luarocks.list"] = list + +local search = require("luarocks.search") +local deps = require("luarocks.deps") +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") +local path = require("luarocks.path") + +util.add_run_function(list) +list.help_summary = "List currently installed rocks." +list.help_arguments = "[--porcelain] " +list.help = [[ + is a substring of a rock name to filter by. + +--outdated List only rocks for which there is a + higher version available in the rocks server. + +--porcelain Produce machine-friendly output. +]] + +local function check_outdated(trees, query) + local results_installed = {} + for _, tree in ipairs(trees) do + search.manifest_search(results_installed, path.rocks_dir(tree), query) + end + local outdated = {} + for name, versions in util.sortedpairs(results_installed) do + versions = util.keys(versions) + table.sort(versions, deps.compare_versions) + local latest_installed = versions[1] + + local query_available = search.make_query(name:lower()) + query.exact_name = true + local results_available, err = search.search_repos(query_available) + + if results_available[name] then + local available_versions = util.keys(results_available[name]) + table.sort(available_versions, deps.compare_versions) + local latest_available = available_versions[1] + local latest_available_repo = results_available[name][latest_available][1].repo + + if deps.compare_versions(latest_available, latest_installed) then + table.insert(outdated, { name = name, installed = latest_installed, available = latest_available, repo = latest_available_repo }) + end + end + end + return outdated +end + +local function list_outdated(trees, query, porcelain) + util.title("Outdated rocks:", porcelain) + local outdated = check_outdated(trees, query) + for _, item in ipairs(outdated) do + if porcelain then + util.printout(item.name, item.installed, item.available, item.repo) + else + util.printout(item.name) + util.printout(" "..item.installed.." < "..item.available.." at "..item.repo) + util.printout() + end + end + return true +end + +--- Driver function for "list" command. +-- @param filter string or nil: A substring of a rock name to filter by. +-- @param version string or nil: a version may also be passed. +-- @return boolean: True if succeeded, nil on errors. +function list.command(flags, filter, version) + local query = search.make_query(filter and filter:lower() or "", version) + query.exact_name = false + local trees = cfg.rocks_trees + if flags["tree"] then + trees = { flags["tree"] } + end + + if flags["outdated"] then + return list_outdated(trees, query, flags["porcelain"]) + end + + local results = {} + for _, tree in ipairs(trees) do + local ok, err, errcode = search.manifest_search(results, path.rocks_dir(tree), query) + if not ok and errcode ~= "open" then + util.warning(err) + end + end + util.title("Installed rocks:", flags["porcelain"]) + search.print_results(results, flags["porcelain"]) + return true +end + +return list diff --git a/Utils/luarocks/lua/luarocks/loader.lua b/Utils/luarocks/lua/luarocks/loader.lua new file mode 100644 index 000000000..874bc10c3 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/loader.lua @@ -0,0 +1,249 @@ + +--- A module which installs a Lua package loader that is LuaRocks-aware. +-- This loader uses dependency information from the LuaRocks tree to load +-- correct versions of modules. It does this by constructing a "context" +-- table in the environment, which records which versions of packages were +-- used to load previous modules, so that the loader chooses versions +-- that are declared to be compatible with the ones loaded earlier. +local loaders = package.loaders or package.searchers +local package, require, ipairs, table, type, next, tostring, error = + package, require, ipairs, table, type, next, tostring, error +local unpack = unpack or table.unpack + +--module("luarocks.loader") +local loader = {} +package.loaded["luarocks.loader"] = loader + +local cfg = require("luarocks.cfg") +cfg.init_package_paths() + +local path = require("luarocks.path") +local manif_core = require("luarocks.manif_core") +local deps = require("luarocks.deps") +local util = require("luarocks.util") + +-- Workaround for wrappers produced by older versions of LuaRocks +local temporary_global = false +if luarocks then + -- The site_config.lua file generated by old versions uses module(), + -- so it produces a global `luarocks` table. Since we have the table, + -- add the `loader` field to make the old wrappers happy. + luarocks.loader = loader +else + -- When a new version is installed on top of an old version, + -- site_config.lua may be replaced, and then it no longer creates + -- a global. + -- Detect when being called via -lluarocks.loader; this is + -- most likely a wrapper. + local info = debug.getinfo(2, "nS") + if info.what == "C" and not info.name then + luarocks = { loader = loader } + temporary_global = true + -- For the other half of this hack, + -- see the next use of `temporary_global` below. + end +end + +loader.context = {} + +-- Contains a table when rocks trees are loaded, +-- or 'false' to indicate rocks trees failed to load. +-- 'nil' indicates rocks trees were not attempted to be loaded yet. +loader.rocks_trees = nil + +local function load_rocks_trees() + local any_ok = false + local trees = {} + for _, tree in ipairs(cfg.rocks_trees) do + local manifest, err = manif_core.load_local_manifest(path.rocks_dir(tree)) + if manifest then + any_ok = true + table.insert(trees, {tree=tree, manifest=manifest}) + end + end + if not any_ok then + loader.rocks_trees = false + return false + end + loader.rocks_trees = trees + return true +end + +--- Process the dependencies of a package to determine its dependency +-- chain for loading modules. +-- @param name string: The name of an installed rock. +-- @param version string: The version of the rock, in string format +function loader.add_context(name, version) + -- assert(type(name) == "string") + -- assert(type(version) == "string") + + if temporary_global then + -- The first thing a wrapper does is to call add_context. + -- From here on, it's safe to clean the global environment. + luarocks = nil + temporary_global = false + end + + if loader.context[name] then + return + end + loader.context[name] = version + + if not loader.rocks_trees and not load_rocks_trees() then + return nil + end + + for _, tree in ipairs(loader.rocks_trees) do + local manifest = tree.manifest + + local pkgdeps + if manifest.dependencies and manifest.dependencies[name] then + pkgdeps = manifest.dependencies[name][version] + end + if not pkgdeps then + return nil + end + for _, dep in ipairs(pkgdeps) do + local pkg, constraints = dep.name, dep.constraints + + for _, tree in ipairs(loader.rocks_trees) do + local entries = tree.manifest.repository[pkg] + if entries then + for version, pkgs in util.sortedpairs(entries, deps.compare_versions) do + if (not constraints) or deps.match_constraints(deps.parse_version(version), constraints) then + loader.add_context(pkg, version) + end + end + end + end + end + end +end + +--- Internal sorting function. +-- @param a table: A provider table. +-- @param b table: Another provider table. +-- @return boolean: True if the version of a is greater than that of b. +local function sort_versions(a,b) + return a.version > b.version +end + +--- Request module to be loaded through other loaders, +-- once the proper name of the module has been determined. +-- For example, in case the module "socket.core" has been requested +-- to the LuaRocks loader and it determined based on context that +-- the version 2.0.2 needs to be loaded and it is not the current +-- version, the module requested for the other loaders will be +-- "socket.core_2_0_2". +-- @param module The module name requested by the user, such as "socket.core" +-- @param name The rock name, such as "luasocket" +-- @param version The rock version, such as "2.0.2-1" +-- @param module_name The actual module name, such as "socket.core" or "socket.core_2_0_2". +-- @return table or (nil, string): The module table as returned by some other loader, +-- or nil followed by an error message if no other loader managed to load the module. +local function call_other_loaders(module, name, version, module_name) + for i, a_loader in ipairs(loaders) do + if a_loader ~= loader.luarocks_loader then + local results = { a_loader(module_name) } + if type(results[1]) == "function" then + return unpack(results) + end + end + end + return "Failed loading module "..module.." in LuaRocks rock "..name.." "..version +end + +--- Search for a module in the rocks trees +-- @param module string: module name (eg. "socket.core") +-- @param filter_file_name function(string, string, string, string, number): +-- a function that takes the module file name (eg "socket/core.so"), the rock name +-- (eg "luasocket"), the version (eg "2.0.2-1"), the path of the rocks tree +-- (eg "/usr/local"), and the numeric index of the matching entry, so the +-- filter function can know if the matching module was the first entry or not. +-- @return string, string, string, (string or table): +-- * name of the rock containing the module (eg. "luasocket") +-- * version of the rock (eg. "2.0.2-1") +-- * return value of filter_file_name +-- * tree of the module (string or table in `rocks_trees` format) +local function select_module(module, filter_file_name) + --assert(type(module) == "string") + --assert(type(filter_module_name) == "function") + + if not loader.rocks_trees and not load_rocks_trees() then + return nil + end + + local providers = {} + for _, tree in ipairs(loader.rocks_trees) do + local entries = tree.manifest.modules[module] + if entries then + for i, entry in ipairs(entries) do + local name, version = entry:match("^([^/]*)/(.*)$") + local file_name = tree.manifest.repository[name][version][1].modules[module] + if type(file_name) ~= "string" then + error("Invalid data in manifest file for module "..tostring(module).." (invalid data for "..tostring(name).." "..tostring(version)..")") + end + file_name = filter_file_name(file_name, name, version, tree.tree, i) + if loader.context[name] == version then + return name, version, file_name + end + version = deps.parse_version(version) + table.insert(providers, {name = name, version = version, module_name = file_name, tree = tree}) + end + end + end + + if next(providers) then + table.sort(providers, sort_versions) + local first = providers[1] + return first.name, first.version.string, first.module_name, first.tree + end +end + +--- Search for a module +-- @param module string: module name (eg. "socket.core") +-- @return string, string, string, (string or table): +-- * name of the rock containing the module (eg. "luasocket") +-- * version of the rock (eg. "2.0.2-1") +-- * name of the module (eg. "socket.core", or "socket.core_2_0_2" if file is stored versioned). +-- * tree of the module (string or table in `rocks_trees` format) +local function pick_module(module) + return + select_module(module, function(file_name, name, version, tree, i) + if i > 1 then + file_name = path.versioned_name(file_name, "", name, version) + end + return path.path_to_module(file_name) + end) +end + +--- Return the pathname of the file that would be loaded for a module. +-- @param module string: module name (eg. "socket.core") +-- @return string: filename of the module (eg. "/usr/local/lib/lua/5.1/socket/core.so") +function loader.which(module) + local _, _, file_name = select_module(module, path.which_i) + return file_name +end + +--- Package loader for LuaRocks support. +-- A module is searched in installed rocks that match the +-- current LuaRocks context. If module is not part of the +-- context, or if a context has not yet been set, the module +-- in the package with the highest version is used. +-- @param module string: The module name, like in plain require(). +-- @return table: The module table (typically), like in plain +-- require(). See require() +-- in the Lua reference manual for details. +function loader.luarocks_loader(module) + local name, version, module_name = pick_module(module) + if not name then + return "No LuaRocks module found for "..module + else + loader.add_context(name, version) + return call_other_loaders(module, name, version, module_name) + end +end + +table.insert(loaders, 1, loader.luarocks_loader) + +return loader diff --git a/Utils/luarocks/lua/luarocks/make.lua b/Utils/luarocks/lua/luarocks/make.lua new file mode 100644 index 000000000..15167c1eb --- /dev/null +++ b/Utils/luarocks/lua/luarocks/make.lua @@ -0,0 +1,92 @@ + +--- Module implementing the LuaRocks "make" command. +-- Builds sources in the current directory, but unlike "build", +-- it does not fetch sources, etc., assuming everything is +-- available in the current directory. +local make = {} +package.loaded["luarocks.make"] = make + +local build = require("luarocks.build") +local fs = require("luarocks.fs") +local util = require("luarocks.util") +local cfg = require("luarocks.cfg") +local fetch = require("luarocks.fetch") +local pack = require("luarocks.pack") +local remove = require("luarocks.remove") +local deps = require("luarocks.deps") +local manif = require("luarocks.manif") + +util.add_run_function(make) +make.help_summary = "Compile package in current directory using a rockspec." +make.help_arguments = "[--pack-binary-rock] []" +make.help = [[ +Builds sources in the current directory, but unlike "build", +it does not fetch sources, etc., assuming everything is +available in the current directory. If no argument is given, +it looks for a rockspec in the current directory and in "rockspec/" +and "rockspecs/" subdirectories, picking the rockspec with newest version +or without version name. If rockspecs for different rocks are found +or there are several rockspecs without version, you must specify which to use, +through the command-line. + +This command is useful as a tool for debugging rockspecs. +To install rocks, you'll normally want to use the "install" and +"build" commands. See the help on those for details. + +--pack-binary-rock Do not install rock. Instead, produce a .rock file + with the contents of compilation in the current + directory. + +--keep Do not remove previously installed versions of the + rock after installing a new one. This behavior can + be made permanent by setting keep_other_versions=true + in the configuration file. + +--branch= Override the `source.branch` field in the loaded + rockspec. Allows to specify a different branch to + fetch. Particularly for SCM rocks. + +]] + +--- Driver function for "make" command. +-- @param name string: A local rockspec. +-- @return boolean or (nil, string, exitcode): True if build was successful; nil and an +-- error message otherwise. exitcode is optionally returned. +function make.command(flags, rockspec) + assert(type(rockspec) == "string" or not rockspec) + + if not rockspec then + local err + rockspec, err = util.get_default_rockspec() + if not rockspec then + return nil, err + end + end + if not rockspec:match("rockspec$") then + return nil, "Invalid argument: 'make' takes a rockspec as a parameter. "..util.see_help("make") + end + + if flags["pack-binary-rock"] then + local rspec, err, errcode = fetch.load_rockspec(rockspec) + if not rspec then + return nil, err + end + return pack.pack_binary_rock(rspec.name, rspec.version, build.build_rockspec, rockspec, false, true, deps.get_deps_mode(flags)) + else + local ok, err = fs.check_command_permissions(flags) + if not ok then return nil, err, cfg.errorcodes.PERMISSIONDENIED end + ok, err = build.build_rockspec(rockspec, false, true, deps.get_deps_mode(flags)) + if not ok then return nil, err end + local name, version = ok, err + + if (not flags["keep"]) and not cfg.keep_other_versions then + local ok, err = remove.remove_other_versions(name, version, flags["force"], flags["force-fast"]) + if not ok then util.printerr(err) end + end + + manif.check_dependencies(nil, deps.get_deps_mode(flags)) + return name, version + end +end + +return make diff --git a/Utils/luarocks/lua/luarocks/make_manifest.lua b/Utils/luarocks/lua/luarocks/make_manifest.lua new file mode 100644 index 000000000..c39c2939f --- /dev/null +++ b/Utils/luarocks/lua/luarocks/make_manifest.lua @@ -0,0 +1,53 @@ + +--- Module implementing the luarocks-admin "make_manifest" command. +-- Compile a manifest file for a repository. +local make_manifest = {} +package.loaded["luarocks.make_manifest"] = make_manifest + +local manif = require("luarocks.manif") +local index = require("luarocks.index") +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") +local deps = require("luarocks.deps") +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") + +util.add_run_function(make_manifest) +make_manifest.help_summary = "Compile a manifest file for a repository." + +make_manifest.help = [[ +, if given, is a local repository pathname. + +--local-tree If given, do not write versioned versions of the manifest file. + Use this when rebuilding the manifest of a local rocks tree. +]] + +--- Driver function for "make_manifest" command. +-- @param repo string or nil: Pathname of a local repository. If not given, +-- the default local repository configured as cfg.rocks_dir is used. +-- @return boolean or (nil, string): True if manifest was generated, +-- or nil and an error message. +function make_manifest.command(flags, repo) + assert(type(repo) == "string" or not repo) + repo = repo or cfg.rocks_dir + + util.printout("Making manifest for "..repo) + + if repo:match("/lib/luarocks") and not flags["local-tree"] then + util.warning("This looks like a local rocks tree, but you did not pass --local-tree.") + end + + local ok, err = manif.make_manifest(repo, deps.get_deps_mode(flags), not flags["local-tree"]) + if ok and not flags["local-tree"] then + util.printout("Generating index.html for "..repo) + index.make_index(repo) + end + if flags["local-tree"] then + for luaver in util.lua_versions() do + fs.delete(dir.path(repo, "manifest-"..luaver)) + end + end + return ok, err +end + +return make_manifest diff --git a/Utils/luarocks/lua/luarocks/manif.lua b/Utils/luarocks/lua/luarocks/manif.lua new file mode 100644 index 000000000..88a13f107 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/manif.lua @@ -0,0 +1,628 @@ +--- Module for handling manifest files and tables. +-- Manifest files describe the contents of a LuaRocks tree or server. +-- They are loaded into manifest tables, which are then used for +-- performing searches, matching dependencies, etc. +local manif = {} +package.loaded["luarocks.manif"] = manif + +local manif_core = require("luarocks.manif_core") +local persist = require("luarocks.persist") +local fetch = require("luarocks.fetch") +local dir = require("luarocks.dir") +local fs = require("luarocks.fs") +local search = require("luarocks.search") +local util = require("luarocks.util") +local cfg = require("luarocks.cfg") +local path = require("luarocks.path") +local repos = require("luarocks.repos") +local deps = require("luarocks.deps") + +manif.rock_manifest_cache = {} + +--- Commit a table to disk in given local path. +-- @param where string: The directory where the table should be saved. +-- @param name string: The filename. +-- @param tbl table: The table to be saved. +-- @return boolean or (nil, string): true if successful, or nil and a +-- message in case of errors. +local function save_table(where, name, tbl) + assert(type(where) == "string") + assert(type(name) == "string") + assert(type(tbl) == "table") + + local filename = dir.path(where, name) + local ok, err = persist.save_from_table(filename..".tmp", tbl) + if ok then + ok, err = fs.replace_file(filename, filename..".tmp") + end + return ok, err +end + +function manif.load_rock_manifest(name, version, root) + assert(type(name) == "string") + assert(type(version) == "string") + + local name_version = name.."/"..version + if manif.rock_manifest_cache[name_version] then + return manif.rock_manifest_cache[name_version].rock_manifest + end + local pathname = path.rock_manifest_file(name, version, root) + local rock_manifest = persist.load_into_table(pathname) + if not rock_manifest then return nil end + manif.rock_manifest_cache[name_version] = rock_manifest + return rock_manifest.rock_manifest +end + +function manif.make_rock_manifest(name, version) + local install_dir = path.install_dir(name, version) + local tree = {} + for _, file in ipairs(fs.find(install_dir)) do + local full_path = dir.path(install_dir, file) + local walk = tree + local last + local last_name + for name in file:gmatch("[^/]+") do + local next = walk[name] + if not next then + next = {} + walk[name] = next + end + last = walk + last_name = name + walk = next + end + if fs.is_file(full_path) then + local sum, err = fs.get_md5(full_path) + if not sum then + return nil, "Failed producing checksum: "..tostring(err) + end + last[last_name] = sum + end + end + local rock_manifest = { rock_manifest=tree } + manif.rock_manifest_cache[name.."/"..version] = rock_manifest + save_table(install_dir, "rock_manifest", rock_manifest ) +end + +local function fetch_manifest_from(repo_url, filename) + local url = dir.path(repo_url, filename) + local name = repo_url:gsub("[/:]","_") + local cache_dir = dir.path(cfg.local_cache, name) + local ok = fs.make_dir(cache_dir) + if not ok then + return nil, "Failed creating temporary cache directory "..cache_dir + end + local file, err, errcode = fetch.fetch_url(url, dir.path(cache_dir, filename), true) + if not file then + return nil, "Failed fetching manifest for "..repo_url..(err and " - "..err or ""), errcode + end + return file +end + +--- Load a local or remote manifest describing a repository. +-- All functions that use manifest tables assume they were obtained +-- through either this function or load_local_manifest. +-- @param repo_url string: URL or pathname for the repository. +-- @param lua_version string: Lua version in "5.x" format, defaults to installed version. +-- @return table or (nil, string, [string]): A table representing the manifest, +-- or nil followed by an error message and an optional error code. +function manif.load_manifest(repo_url, lua_version) + assert(type(repo_url) == "string") + assert(type(lua_version) == "string" or not lua_version) + lua_version = lua_version or cfg.lua_version + + local cached_manifest = manif_core.get_cached_manifest(repo_url, lua_version) + if cached_manifest then + return cached_manifest + end + + local filenames = { + "manifest-"..lua_version..".zip", + "manifest-"..lua_version, + "manifest", + } + + local protocol, repodir = dir.split_url(repo_url) + local pathname + if protocol == "file" then + for _, filename in ipairs(filenames) do + pathname = dir.path(repodir, filename) + if fs.exists(pathname) then + break + end + end + else + local err, errcode + for _, filename in ipairs(filenames) do + pathname, err, errcode = fetch_manifest_from(repo_url, filename) + if pathname then + break + end + end + if not pathname then + return nil, err, errcode + end + end + if pathname:match(".*%.zip$") then + pathname = fs.absolute_name(pathname) + local dir = dir.dir_name(pathname) + fs.change_dir(dir) + local nozip = pathname:match("(.*)%.zip$") + fs.delete(nozip) + local ok = fs.unzip(pathname) + fs.pop_dir() + if not ok then + fs.delete(pathname) + fs.delete(pathname..".timestamp") + return nil, "Failed extracting manifest file" + end + pathname = nozip + end + return manif_core.manifest_loader(pathname, repo_url, lua_version) +end + +--- Update storage table to account for items provided by a package. +-- @param storage table: a table storing items in the following format: +-- keys are item names and values are arrays of packages providing each item, +-- where a package is specified as string `name/version`. +-- @param items table: a table mapping item names to paths. +-- @param name string: package name. +-- @param version string: package version. +local function store_package_items(storage, name, version, items) + assert(type(storage) == "table") + assert(type(items) == "table") + assert(type(name) == "string") + assert(type(version) == "string") + + local package_identifier = name.."/"..version + + for item_name, path in pairs(items) do + if not storage[item_name] then + storage[item_name] = {} + end + + table.insert(storage[item_name], package_identifier) + end +end + +--- Update storage table removing items provided by a package. +-- @param storage table: a table storing items in the following format: +-- keys are item names and values are arrays of packages providing each item, +-- where a package is specified as string `name/version`. +-- @param items table: a table mapping item names to paths. +-- @param name string: package name. +-- @param version string: package version. +local function remove_package_items(storage, name, version, items) + assert(type(storage) == "table") + assert(type(items) == "table") + assert(type(name) == "string") + assert(type(version) == "string") + + local package_identifier = name.."/"..version + + for item_name, path in pairs(items) do + local all_identifiers = storage[item_name] + + for i, identifier in ipairs(all_identifiers) do + if identifier == package_identifier then + table.remove(all_identifiers, i) + break + end + end + + if #all_identifiers == 0 then + storage[item_name] = nil + end + end +end + +--- Sort function for ordering rock identifiers in a manifest's +-- modules table. Rocks are ordered alphabetically by name, and then +-- by version which greater first. +-- @param a string: Version to compare. +-- @param b string: Version to compare. +-- @return boolean: The comparison result, according to the +-- rule outlined above. +local function sort_pkgs(a, b) + assert(type(a) == "string") + assert(type(b) == "string") + + local na, va = a:match("(.*)/(.*)$") + local nb, vb = b:match("(.*)/(.*)$") + + return (na == nb) and deps.compare_versions(va, vb) or na < nb +end + +--- Sort items of a package matching table by version number (higher versions first). +-- @param tbl table: the package matching table: keys should be strings +-- and values arrays of strings with packages names in "name/version" format. +local function sort_package_matching_table(tbl) + assert(type(tbl) == "table") + + if next(tbl) then + for item, pkgs in pairs(tbl) do + if #pkgs > 1 then + table.sort(pkgs, sort_pkgs) + -- Remove duplicates from the sorted array. + local prev = nil + local i = 1 + while pkgs[i] do + local curr = pkgs[i] + if curr == prev then + table.remove(pkgs, i) + else + prev = curr + i = i + 1 + end + end + end + end + end +end + +--- Process the dependencies of a manifest table to determine its dependency +-- chains for loading modules. The manifest dependencies information is filled +-- and any dependency inconsistencies or missing dependencies are reported to +-- standard error. +-- @param manifest table: a manifest table. +-- @param deps_mode string: Dependency mode: "one" for the current default tree, +-- "all" for all trees, "order" for all trees with priority >= the current default, +-- "none" for no trees. +local function update_dependencies(manifest, deps_mode) + assert(type(manifest) == "table") + assert(type(deps_mode) == "string") + + for pkg, versions in pairs(manifest.repository) do + for version, repositories in pairs(versions) do + for _, repo in ipairs(repositories) do + if repo.arch == "installed" then + repo.dependencies = {} + deps.scan_deps(repo.dependencies, manifest, pkg, version, deps_mode) + repo.dependencies[pkg] = nil + end + end + end + end +end + +--- Filter manifest table by Lua version, removing rockspecs whose Lua version +-- does not match. +-- @param manifest table: a manifest table. +-- @param lua_version string or nil: filter by Lua version +-- @param repodir string: directory of repository being scanned +-- @param cache table: temporary rockspec cache table +local function filter_by_lua_version(manifest, lua_version, repodir, cache) + assert(type(manifest) == "table") + assert(type(repodir) == "string") + assert((not cache) or type(cache) == "table") + + cache = cache or {} + lua_version = deps.parse_version(lua_version) + for pkg, versions in pairs(manifest.repository) do + local to_remove = {} + for version, repositories in pairs(versions) do + for _, repo in ipairs(repositories) do + if repo.arch == "rockspec" then + local pathname = dir.path(repodir, pkg.."-"..version..".rockspec") + local rockspec, err = cache[pathname] + if not rockspec then + rockspec, err = fetch.load_local_rockspec(pathname, true) + end + if rockspec then + cache[pathname] = rockspec + for _, dep in ipairs(rockspec.dependencies) do + if dep.name == "lua" then + if not deps.match_constraints(lua_version, dep.constraints) then + table.insert(to_remove, version) + end + break + end + end + else + util.printerr("Error loading rockspec for "..pkg.." "..version..": "..err) + end + end + end + end + if next(to_remove) then + for _, incompat in ipairs(to_remove) do + versions[incompat] = nil + end + if not next(versions) then + manifest.repository[pkg] = nil + end + end + end +end + +--- Store search results in a manifest table. +-- @param results table: The search results as returned by search.disk_search. +-- @param manifest table: A manifest table (must contain repository, modules, commands tables). +-- It will be altered to include the search results. +-- @return boolean or (nil, string): true in case of success, or nil followed by an error message. +local function store_results(results, manifest) + assert(type(results) == "table") + assert(type(manifest) == "table") + + for name, versions in pairs(results) do + local pkgtable = manifest.repository[name] or {} + for version, entries in pairs(versions) do + local versiontable = {} + for _, entry in ipairs(entries) do + local entrytable = {} + entrytable.arch = entry.arch + if entry.arch == "installed" then + local rock_manifest = manif.load_rock_manifest(name, version) + if not rock_manifest then + return nil, "rock_manifest file not found for "..name.." "..version.." - not a LuaRocks 2 tree?" + end + + entrytable.modules = repos.package_modules(name, version) + store_package_items(manifest.modules, name, version, entrytable.modules) + entrytable.commands = repos.package_commands(name, version) + store_package_items(manifest.commands, name, version, entrytable.commands) + end + table.insert(versiontable, entrytable) + end + pkgtable[version] = versiontable + end + manifest.repository[name] = pkgtable + end + sort_package_matching_table(manifest.modules) + sort_package_matching_table(manifest.commands) + return true +end + +--- Scan a LuaRocks repository and output a manifest file. +-- A file called 'manifest' will be written in the root of the given +-- repository directory. +-- @param repo A local repository directory. +-- @param deps_mode string: Dependency mode: "one" for the current default tree, +-- "all" for all trees, "order" for all trees with priority >= the current default, +-- "none" for the default dependency mode from the configuration. +-- @param remote boolean: 'true' if making a manifest for a rocks server. +-- @return boolean or (nil, string): True if manifest was generated, +-- or nil and an error message. +function manif.make_manifest(repo, deps_mode, remote) + assert(type(repo) == "string") + assert(type(deps_mode) == "string") + + if deps_mode == "none" then deps_mode = cfg.deps_mode end + + if not fs.is_dir(repo) then + return nil, "Cannot access repository at "..repo + end + + local query = search.make_query("") + query.exact_name = false + query.arch = "any" + local results = search.disk_search(repo, query) + local manifest = { repository = {}, modules = {}, commands = {} } + + manif_core.cache_manifest(repo, nil, manifest) + + local ok, err = store_results(results, manifest) + if not ok then return nil, err end + + if remote then + local cache = {} + for luaver in util.lua_versions() do + local vmanifest = { repository = {}, modules = {}, commands = {} } + local ok, err = store_results(results, vmanifest) + filter_by_lua_version(vmanifest, luaver, repo, cache) + save_table(repo, "manifest-"..luaver, vmanifest) + end + else + update_dependencies(manifest, deps_mode) + end + + return save_table(repo, "manifest", manifest) +end + +--- Update manifest file for a local repository +-- adding information about a version of a package installed in that repository. +-- @param name string: Name of a package from the repository. +-- @param version string: Version of a package from the repository. +-- @param repo string or nil: Pathname of a local repository. If not given, +-- the default local repository is used. +-- @param deps_mode string: Dependency mode: "one" for the current default tree, +-- "all" for all trees, "order" for all trees with priority >= the current default, +-- "none" for using the default dependency mode from the configuration. +-- @return boolean or (nil, string): True if manifest was updated successfully, +-- or nil and an error message. +function manif.add_to_manifest(name, version, repo, deps_mode) + assert(type(name) == "string") + assert(type(version) == "string") + local rocks_dir = path.rocks_dir(repo or cfg.root_dir) + assert(type(deps_mode) == "string") + + if deps_mode == "none" then deps_mode = cfg.deps_mode end + + local manifest, err = manif_core.load_local_manifest(rocks_dir) + if not manifest then + util.printerr("No existing manifest. Attempting to rebuild...") + -- Manifest built by `manif.make_manifest` should already + -- include information about given name and version, + -- no need to update it. + return manif.make_manifest(rocks_dir, deps_mode) + end + + local results = {[name] = {[version] = {{arch = "installed", repo = rocks_dir}}}} + + local ok, err = store_results(results, manifest) + if not ok then return nil, err end + + update_dependencies(manifest, deps_mode) + return save_table(rocks_dir, "manifest", manifest) +end + +--- Update manifest file for a local repository +-- removing information about a version of a package. +-- @param name string: Name of a package removed from the repository. +-- @param version string: Version of a package removed from the repository. +-- @param repo string or nil: Pathname of a local repository. If not given, +-- the default local repository is used. +-- @param deps_mode string: Dependency mode: "one" for the current default tree, +-- "all" for all trees, "order" for all trees with priority >= the current default, +-- "none" for using the default dependency mode from the configuration. +-- @return boolean or (nil, string): True if manifest was updated successfully, +-- or nil and an error message. +function manif.remove_from_manifest(name, version, repo, deps_mode) + assert(type(name) == "string") + assert(type(version) == "string") + local rocks_dir = path.rocks_dir(repo or cfg.root_dir) + assert(type(deps_mode) == "string") + + if deps_mode == "none" then deps_mode = cfg.deps_mode end + + local manifest, err = manif_core.load_local_manifest(rocks_dir) + if not manifest then + util.printerr("No existing manifest. Attempting to rebuild...") + -- Manifest built by `manif.make_manifest` should already + -- include up-to-date information, no need to update it. + return manif.make_manifest(rocks_dir, deps_mode) + end + + local package_entry = manifest.repository[name] + + local version_entry = package_entry[version][1] + remove_package_items(manifest.modules, name, version, version_entry.modules) + remove_package_items(manifest.commands, name, version, version_entry.commands) + + package_entry[version] = nil + manifest.dependencies[name][version] = nil + + if not next(package_entry) then + -- No more versions of this package. + manifest.repository[name] = nil + manifest.dependencies[name] = nil + end + + update_dependencies(manifest, deps_mode) + return save_table(rocks_dir, "manifest", manifest) +end + +--- Report missing dependencies for all rocks installed in a repository. +-- @param repo string or nil: Pathname of a local repository. If not given, +-- the default local repository is used. +-- @param deps_mode string: Dependency mode: "one" for the current default tree, +-- "all" for all trees, "order" for all trees with priority >= the current default, +-- "none" for using the default dependency mode from the configuration. +function manif.check_dependencies(repo, deps_mode) + local rocks_dir = path.rocks_dir(repo or cfg.root_dir) + assert(type(deps_mode) == "string") + if deps_mode == "none" then deps_mode = cfg.deps_mode end + + local manifest = manif_core.load_local_manifest(rocks_dir) + if not manifest then + return + end + + for name, versions in util.sortedpairs(manifest.repository) do + for version, version_entries in util.sortedpairs(versions, deps.compare_versions) do + for _, entry in ipairs(version_entries) do + if entry.arch == "installed" then + if manifest.dependencies[name] and manifest.dependencies[name][version] then + deps.report_missing_dependencies(name, version, manifest.dependencies[name][version], deps_mode) + end + end + end + end + end +end + +function manif.zip_manifests() + for ver in util.lua_versions() do + local file = "manifest-"..ver + local zip = file..".zip" + fs.delete(dir.path(fs.current_dir(), zip)) + fs.zip(zip, file) + end +end + +--- Get type and name of an item (a module or a command) provided by a file. +-- @param deploy_type string: rock manifest subtree the file comes from ("bin", "lua", or "lib"). +-- @param file_path string: path to the file relatively to deploy_type subdirectory. +-- @return (string, string): item type ("module" or "command") and name. +function manif.get_provided_item(deploy_type, file_path) + assert(type(deploy_type) == "string") + assert(type(file_path) == "string") + local item_type = deploy_type == "bin" and "command" or "module" + local item_name = item_type == "command" and file_path or path.path_to_module(file_path) + return item_type, item_name +end + +local function get_providers(item_type, item_name, repo) + assert(type(item_type) == "string") + assert(type(item_name) == "string") + local rocks_dir = path.rocks_dir(repo or cfg.root_dir) + local manifest = manif_core.load_local_manifest(rocks_dir) + return manifest and manifest[item_type .. "s"][item_name] +end + +--- Given a name of a module or a command, figure out which rock name and version +-- correspond to it in the rock tree manifest. +-- @param item_type string: "module" or "command". +-- @param item_name string: module or command name. +-- @param root string or nil: A local root dir for a rocks tree. If not given, the default is used. +-- @return (string, string) or nil: name and version of the provider rock or nil if there +-- is no provider. +function manif.get_current_provider(item_type, item_name, repo) + local providers = get_providers(item_type, item_name, repo) + if providers then + return providers[1]:match("([^/]*)/([^/]*)") + end +end + +function manif.get_next_provider(item_type, item_name, repo) + local providers = get_providers(item_type, item_name, repo) + if providers and providers[2] then + return providers[2]:match("([^/]*)/([^/]*)") + end +end + +--- Given a name of a module or a command provided by a package, figure out +-- which file provides it. +-- @param name string: package name. +-- @param version string: package version. +-- @param item_type string: "module" or "command". +-- @param item_name string: module or command name. +-- @param root string or nil: A local root dir for a rocks tree. If not given, the default is used. +-- @return (string, string): rock manifest subtree the file comes from ("bin", "lua", or "lib") +-- and path to the providing file relatively to that subtree. +function manif.get_providing_file(name, version, item_type, item_name, repo) + local rocks_dir = path.rocks_dir(repo or cfg.root_dir) + local manifest = manif_core.load_local_manifest(rocks_dir) + + local entry_table = manifest.repository[name][version][1] + local file_path = entry_table[item_type .. "s"][item_name] + + if item_type == "command" then + return "bin", file_path + end + + -- A module can be in "lua" or "lib". Decide based on extension first: + -- most likely Lua modules are in "lua/" and C modules are in "lib/". + if file_path:match("%." .. cfg.lua_extension .. "$") then + return "lua", file_path + elseif file_path:match("%." .. cfg.lib_extension .. "$") then + return "lib", file_path + end + + -- Fallback to rock manifest scanning. + local rock_manifest = manif.load_rock_manifest(name, version) + local subtree = rock_manifest.lib + + for path_part in file_path:gmatch("[^/]+") do + if type(subtree) == "table" then + subtree = subtree[path_part] + else + -- Assume it's in "lua/" if it's not in "lib/". + return "lua", file_path + end + end + + return type(subtree) == "string" and "lib" or "lua", file_path +end + +return manif diff --git a/Utils/luarocks/lua/luarocks/manif_core.lua b/Utils/luarocks/lua/luarocks/manif_core.lua new file mode 100644 index 000000000..82e7ea4de --- /dev/null +++ b/Utils/luarocks/lua/luarocks/manif_core.lua @@ -0,0 +1,106 @@ + +--- Core functions for querying manifest files. +-- This module requires no specific 'fs' functionality. +local manif_core = {} +package.loaded["luarocks.manif_core"] = manif_core + +local persist = require("luarocks.persist") +local type_check = require("luarocks.type_check") +local cfg = require("luarocks.cfg") +local dir = require("luarocks.dir") +local util = require("luarocks.util") +local path = require("luarocks.path") + +-- Table with repository identifiers as keys and tables mapping +-- Lua versions to cached loaded manifests as values. +local manifest_cache = {} + +--- Cache a loaded manifest. +-- @param repo_url string: The repository identifier. +-- @param lua_version string: Lua version in "5.x" format, defaults to installed version. +-- @param manifest table: the manifest to be cached. +function manif_core.cache_manifest(repo_url, lua_version, manifest) + lua_version = lua_version or cfg.lua_version + manifest_cache[repo_url] = manifest_cache[repo_url] or {} + manifest_cache[repo_url][lua_version] = manifest +end + +--- Attempt to get cached loaded manifest. +-- @param repo_url string: The repository identifier. +-- @param lua_version string: Lua version in "5.x" format, defaults to installed version. +-- @return table or nil: loaded manifest or nil if cache is empty. +function manif_core.get_cached_manifest(repo_url, lua_version) + lua_version = lua_version or cfg.lua_version + return manifest_cache[repo_url] and manifest_cache[repo_url][lua_version] +end + +--- Back-end function that actually loads the manifest +-- and stores it in the manifest cache. +-- @param file string: The local filename of the manifest file. +-- @param repo_url string: The repository identifier. +-- @param lua_version string: Lua version in "5.x" format, defaults to installed version. +-- @param quick boolean: If given, skips type checking. +-- @return table or (nil, string, string): the manifest or nil, +-- error message and error code ("open", "load", "run" or "type"). +function manif_core.manifest_loader(file, repo_url, lua_version, quick) + local manifest, err, errcode = persist.load_into_table(file) + if not manifest then + return nil, "Failed loading manifest for "..repo_url..": "..err, errcode + end + local globals = err + if not quick then + local ok, err = type_check.type_check_manifest(manifest, globals) + if not ok then + return nil, "Error checking manifest: "..err, "type" + end + end + + manif_core.cache_manifest(repo_url, lua_version, manifest) + return manifest +end + +--- Load a local manifest describing a repository. +-- All functions that use manifest tables assume they were obtained +-- through either this function or load_manifest. +-- @param repo_url string: URL or pathname for the repository. +-- @return table or (nil, string, string): A table representing the manifest, +-- or nil followed by an error message and an error code, see manifest_loader. +function manif_core.load_local_manifest(repo_url) + assert(type(repo_url) == "string") + + local cached_manifest = manif_core.get_cached_manifest(repo_url) + if cached_manifest then + return cached_manifest + end + + local pathname = dir.path(repo_url, "manifest") + return manif_core.manifest_loader(pathname, repo_url, nil, true) +end + +--- Get all versions of a package listed in a manifest file. +-- @param name string: a package name. +-- @param deps_mode string: "one", to use only the currently +-- configured tree; "order" to select trees based on order +-- (use the current tree and all trees below it on the list) +-- or "all", to use all trees. +-- @return table: An array of strings listing installed +-- versions of a package. +function manif_core.get_versions(name, deps_mode) + assert(type(name) == "string") + assert(type(deps_mode) == "string") + + local version_set = {} + path.map_trees(deps_mode, function(tree) + local manifest = manif_core.load_local_manifest(path.rocks_dir(tree)) + + if manifest and manifest.repository[name] then + for version in pairs(manifest.repository[name]) do + version_set[version] = true + end + end + end) + + return util.keys(version_set) +end + +return manif_core diff --git a/Utils/luarocks/lua/luarocks/new_version.lua b/Utils/luarocks/lua/luarocks/new_version.lua new file mode 100644 index 000000000..91f7607c3 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/new_version.lua @@ -0,0 +1,200 @@ + +--- Module implementing the LuaRocks "new_version" command. +-- Utility function that writes a new rockspec, updating data from a previous one. +local new_version = {} + +local util = require("luarocks.util") +local download = require("luarocks.download") +local fetch = require("luarocks.fetch") +local persist = require("luarocks.persist") +local fs = require("luarocks.fs") +local type_check = require("luarocks.type_check") + +util.add_run_function(new_version) +new_version.help_summary = "Auto-write a rockspec for a new version of a rock." +new_version.help_arguments = "[--tag=] [|] [] []" +new_version.help = [[ +This is a utility function that writes a new rockspec, updating data +from a previous one. + +If a package name is given, it downloads the latest rockspec from the +default server. If a rockspec is given, it uses it instead. If no argument +is given, it looks for a rockspec same way 'luarocks make' does. + +If the version number is not given and tag is passed using --tag, +it is used as the version, with 'v' removed from beginning. +Otherwise, it only increments the revision number of the given +(or downloaded) rockspec. + +If a URL is given, it replaces the one from the old rockspec with the +given URL. If a URL is not given and a new version is given, it tries +to guess the new URL by replacing occurrences of the version number +in the URL or tag. It also tries to download the new URL to determine +the new MD5 checksum. + +If a tag is given, it replaces the one from the old rockspec. If there is +an old tag but no new one passed, it is guessed in the same way URL is. + +WARNING: it writes the new rockspec to the current directory, +overwriting the file if it already exists. +]] + +local function try_replace(tbl, field, old, new) + if not tbl[field] then + return false + end + local old_field = tbl[field] + local new_field = tbl[field]:gsub(old, new) + if new_field ~= old_field then + util.printout("Guessing new '"..field.."' field as "..new_field) + tbl[field] = new_field + return true + end + return false +end + +-- Try to download source file using URL from a rockspec. +-- If it specified MD5, update it. +-- @return (true, false) if MD5 was not specified or it stayed same, +-- (true, true) if MD5 changed, (nil, string) on error. +local function check_url_and_update_md5(out_rs) + local file, temp_dir = fetch.fetch_url_at_temp_dir(out_rs.source.url, "luarocks-new-version-"..out_rs.package) + if not file then + util.printerr("Warning: invalid URL - "..temp_dir) + return true, false + end + + local inferred_dir, found_dir = fetch.find_base_dir(file, temp_dir, out_rs.source.url, out_rs.source.dir) + if not inferred_dir then + return nil, found_dir + end + + if found_dir and found_dir ~= inferred_dir then + out_rs.source.dir = found_dir + end + + if file then + if out_rs.source.md5 then + util.printout("File successfully downloaded. Updating MD5 checksum...") + local new_md5, err = fs.get_md5(file) + if not new_md5 then + return nil, err + end + local old_md5 = out_rs.source.md5 + out_rs.source.md5 = new_md5 + return true, new_md5 ~= old_md5 + else + util.printout("File successfully downloaded.") + return true, false + end + end +end + +local function update_source_section(out_rs, url, tag, old_ver, new_ver) + if tag then + out_rs.source.tag = tag + end + if url then + out_rs.source.url = url + return check_url_and_update_md5(out_rs) + end + if new_ver == old_ver then + return true + end + if out_rs.source.dir then + try_replace(out_rs.source, "dir", old_ver, new_ver) + end + if out_rs.source.file then + try_replace(out_rs.source, "file", old_ver, new_ver) + end + if try_replace(out_rs.source, "url", old_ver, new_ver) then + return check_url_and_update_md5(out_rs) + end + if tag or try_replace(out_rs.source, "tag", old_ver, new_ver) then + return true + end + -- Couldn't replace anything significant, use the old URL. + local ok, md5_changed = check_url_and_update_md5(out_rs) + if not ok then + return nil, md5_changed + end + if md5_changed then + util.printerr("Warning: URL is the same, but MD5 has changed. Old rockspec is broken.") + end + return true +end + +function new_version.command(flags, input, version, url) + if not input then + local err + input, err = util.get_default_rockspec() + if not input then + return nil, err + end + end + assert(type(input) == "string") + + local filename, err + if input:match("rockspec$") then + filename, err = fetch.fetch_url(input) + if not filename then + return nil, err + end + else + filename, err = download.download("rockspec", input:lower()) + if not filename then + return nil, err + end + end + + local valid_rs, err = fetch.load_rockspec(filename) + if not valid_rs then + return nil, err + end + + local old_ver, old_rev = valid_rs.version:match("(.*)%-(%d+)$") + local new_ver, new_rev + + if flags.tag and not version then + version = flags.tag:gsub("^v", "") + end + + if version then + new_ver, new_rev = version:match("(.*)%-(%d+)$") + new_rev = tonumber(new_rev) + if not new_rev then + new_ver = version + new_rev = 1 + end + else + new_ver = old_ver + new_rev = tonumber(old_rev) + 1 + end + local new_rockver = new_ver:gsub("-", "") + + local out_rs, err = persist.load_into_table(filename) + local out_name = out_rs.package:lower() + out_rs.version = new_rockver.."-"..new_rev + + local ok, err = update_source_section(out_rs, url, flags.tag, old_ver, new_ver) + if not ok then return nil, err end + + if out_rs.build and out_rs.build.type == "module" then + out_rs.build.type = "builtin" + end + + local out_filename = out_name.."-"..new_rockver.."-"..new_rev..".rockspec" + + persist.save_from_table(out_filename, out_rs, type_check.rockspec_order) + + util.printout("Wrote "..out_filename) + + local valid_out_rs, err = fetch.load_local_rockspec(out_filename) + if not valid_out_rs then + return nil, "Failed loading generated rockspec: "..err + end + + return true +end + +return new_version diff --git a/Utils/luarocks/lua/luarocks/pack.lua b/Utils/luarocks/lua/luarocks/pack.lua new file mode 100644 index 000000000..35bbe8380 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/pack.lua @@ -0,0 +1,197 @@ + +--- Module implementing the LuaRocks "pack" command. +-- Creates a rock, packing sources or binaries. +local pack = {} +package.loaded["luarocks.pack"] = pack + +local unpack = unpack or table.unpack + +local path = require("luarocks.path") +local repos = require("luarocks.repos") +local fetch = require("luarocks.fetch") +local fs = require("luarocks.fs") +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") +local dir = require("luarocks.dir") +local manif = require("luarocks.manif") +local search = require("luarocks.search") + +util.add_run_function(pack) +pack.help_summary = "Create a rock, packing sources or binaries." +pack.help_arguments = "{| []}" +pack.help = [[ +Argument may be a rockspec file, for creating a source rock, +or the name of an installed package, for creating a binary rock. +In the latter case, the app version may be given as a second +argument. +]] + +--- Create a source rock. +-- Packages a rockspec and its required source files in a rock +-- file with the .src.rock extension, which can later be built and +-- installed with the "build" command. +-- @param rockspec_file string: An URL or pathname for a rockspec file. +-- @return string or (nil, string): The filename of the resulting +-- .src.rock file; or nil and an error message. +function pack.pack_source_rock(rockspec_file) + assert(type(rockspec_file) == "string") + + local rockspec, err = fetch.load_rockspec(rockspec_file) + if err then + return nil, "Error loading rockspec: "..err + end + rockspec_file = rockspec.local_filename + + local name_version = rockspec.name .. "-" .. rockspec.version + local rock_file = fs.absolute_name(name_version .. ".src.rock") + + local source_file, source_dir = fetch.fetch_sources(rockspec, false) + if not source_file then + return nil, source_dir + end + local ok, err = fs.change_dir(source_dir) + if not ok then return nil, err end + + fs.delete(rock_file) + fs.copy(rockspec_file, source_dir, cfg.perm_read) + if not fs.zip(rock_file, dir.base_name(rockspec_file), dir.base_name(source_file)) then + return nil, "Failed packing "..rock_file + end + fs.pop_dir() + + return rock_file +end + +local function copy_back_files(name, version, file_tree, deploy_dir, pack_dir, perms) + local ok, err = fs.make_dir(pack_dir) + if not ok then return nil, err end + for file, sub in pairs(file_tree) do + local source = dir.path(deploy_dir, file) + local target = dir.path(pack_dir, file) + if type(sub) == "table" then + local ok, err = copy_back_files(name, version, sub, source, target) + if not ok then return nil, err end + else + local versioned = path.versioned_name(source, deploy_dir, name, version) + if fs.exists(versioned) then + fs.copy(versioned, target, perms) + else + fs.copy(source, target, perms) + end + end + end + return true +end + +-- @param name string: Name of package to pack. +-- @param version string or nil: A version number may also be passed. +-- @param tree string or nil: An optional tree to pick the package from. +-- @return string or (nil, string): The filename of the resulting +-- .src.rock file; or nil and an error message. +local function do_pack_binary_rock(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string" or not version) + + local repo, repo_url + name, version, repo, repo_url = search.pick_installed_rock(name, version, tree) + if not name then + return nil, version + end + + local root = path.root_dir(repo_url) + local prefix = path.install_dir(name, version, root) + if not fs.exists(prefix) then + return nil, "'"..name.." "..version.."' does not seem to be an installed rock." + end + + local rock_manifest = manif.load_rock_manifest(name, version, root) + if not rock_manifest then + return nil, "rock_manifest file not found for "..name.." "..version.." - not a LuaRocks 2 tree?" + end + + local name_version = name .. "-" .. version + local rock_file = fs.absolute_name(name_version .. "."..cfg.arch..".rock") + + local temp_dir = fs.make_temp_dir("pack") + fs.copy_contents(prefix, temp_dir) + + local is_binary = false + if rock_manifest.lib then + local ok, err = copy_back_files(name, version, rock_manifest.lib, path.deploy_lib_dir(root), dir.path(temp_dir, "lib"), cfg.perm_exec) + if not ok then return nil, "Failed copying back files: " .. err end + is_binary = true + end + if rock_manifest.lua then + local ok, err = copy_back_files(name, version, rock_manifest.lua, path.deploy_lua_dir(root), dir.path(temp_dir, "lua"), cfg.perm_read) + if not ok then return nil, "Failed copying back files: " .. err end + end + + local ok, err = fs.change_dir(temp_dir) + if not ok then return nil, err end + if not is_binary and not repos.has_binaries(name, version) then + rock_file = rock_file:gsub("%."..cfg.arch:gsub("%-","%%-").."%.", ".all.") + end + fs.delete(rock_file) + if not fs.zip(rock_file, unpack(fs.list_dir())) then + return nil, "Failed packing "..rock_file + end + fs.pop_dir() + fs.delete(temp_dir) + return rock_file +end + +function pack.pack_binary_rock(name, version, cmd, ...) + + -- The --pack-binary-rock option for "luarocks build" basically performs + -- "luarocks build" on a temporary tree and then "luarocks pack". The + -- alternative would require refactoring parts of luarocks.build and + -- luarocks.pack, which would save a few file operations: the idea would be + -- to shave off the final deploy steps from the build phase and the initial + -- collect steps from the pack phase. + + local temp_dir, err = fs.make_temp_dir("luarocks-build-pack-"..dir.base_name(name)) + if not temp_dir then + return nil, "Failed creating temporary directory: "..err + end + util.schedule_function(fs.delete, temp_dir) + + path.use_tree(temp_dir) + local ok, err = cmd(...) + if not ok then + return nil, err + end + local rname, rversion = path.parse_name(name) + if not rname then + rname, rversion = name, version + end + return do_pack_binary_rock(rname, rversion, temp_dir) +end + +--- Driver function for the "pack" command. +-- @param arg string: may be a rockspec file, for creating a source rock, +-- or the name of an installed package, for creating a binary rock. +-- @param version string or nil: if the name of a package is given, a +-- version may also be passed. +-- @return boolean or (nil, string): true if successful or nil followed +-- by an error message. +function pack.command(flags, arg, version) + assert(type(version) == "string" or not version) + if type(arg) ~= "string" then + return nil, "Argument missing. "..util.see_help("pack") + end + + local file, err + if arg:match(".*%.rockspec") then + file, err = pack.pack_source_rock(arg) + else + file, err = do_pack_binary_rock(arg:lower(), version, flags["tree"]) + end + if err then + return nil, err + else + util.printout("Packed: "..file) + return true + end +end + +return pack diff --git a/Utils/luarocks/lua/luarocks/path.lua b/Utils/luarocks/lua/luarocks/path.lua new file mode 100644 index 000000000..dafc64e7c --- /dev/null +++ b/Utils/luarocks/lua/luarocks/path.lua @@ -0,0 +1,388 @@ + +--- LuaRocks-specific path handling functions. +-- All paths are configured in this module, making it a single +-- point where the layout of the local installation is defined in LuaRocks. +local path = {} + +local dir = require("luarocks.dir") +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") + +--- Infer rockspec filename from a rock filename. +-- @param rock_name string: Pathname of a rock file. +-- @return string: Filename of the rockspec, without path. +function path.rockspec_name_from_rock(rock_name) + assert(type(rock_name) == "string") + local base_name = dir.base_name(rock_name) + return base_name:match("(.*)%.[^.]*.rock") .. ".rockspec" +end + +function path.rocks_dir(tree) + if type(tree) == "string" then + return dir.path(tree, cfg.rocks_subdir) + else + assert(type(tree) == "table") + return tree.rocks_dir or dir.path(tree.root, cfg.rocks_subdir) + end +end + +function path.root_dir(rocks_dir) + assert(type(rocks_dir) == "string") + return rocks_dir:match("(.*)" .. util.matchquote(cfg.rocks_subdir) .. ".*$") +end + +function path.rocks_tree_to_string(tree) + if type(tree) == "string" then + return tree + else + assert(type(tree) == "table") + return tree.root + end +end + +function path.deploy_bin_dir(tree) + if type(tree) == "string" then + return dir.path(tree, "bin") + else + assert(type(tree) == "table") + return tree.bin_dir or dir.path(tree.root, "bin") + end +end + +function path.deploy_lua_dir(tree) + if type(tree) == "string" then + return dir.path(tree, cfg.lua_modules_path) + else + assert(type(tree) == "table") + return tree.lua_dir or dir.path(tree.root, cfg.lua_modules_path) + end +end + +function path.deploy_lib_dir(tree) + if type(tree) == "string" then + return dir.path(tree, cfg.lib_modules_path) + else + assert(type(tree) == "table") + return tree.lib_dir or dir.path(tree.root, cfg.lib_modules_path) + end +end + +function path.manifest_file(tree) + if type(tree) == "string" then + return dir.path(tree, cfg.rocks_subdir, "manifest") + else + assert(type(tree) == "table") + return (tree.rocks_dir and dir.path(tree.rocks_dir, "manifest")) or dir.path(tree.root, cfg.rocks_subdir, "manifest") + end +end + +--- Get the directory for all versions of a package in a tree. +-- @param name string: The package name. +-- @return string: The resulting path -- does not guarantee that +-- @param tree string or nil: If given, specifies the local tree to use. +-- the package (and by extension, the path) exists. +function path.versions_dir(name, tree) + assert(type(name) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name) +end + +--- Get the local installation directory (prefix) for a package. +-- @param name string: The package name. +-- @param version string: The package version. +-- @param tree string or nil: If given, specifies the local tree to use. +-- @return string: The resulting path -- does not guarantee that +-- the package (and by extension, the path) exists. +function path.install_dir(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name, version) +end + +--- Get the local filename of the rockspec of an installed rock. +-- @param name string: The package name. +-- @param version string: The package version. +-- @param tree string or nil: If given, specifies the local tree to use. +-- @return string: The resulting path -- does not guarantee that +-- the package (and by extension, the file) exists. +function path.rockspec_file(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name, version, name.."-"..version..".rockspec") +end + +--- Get the local filename of the rock_manifest file of an installed rock. +-- @param name string: The package name. +-- @param version string: The package version. +-- @param tree string or nil: If given, specifies the local tree to use. +-- @return string: The resulting path -- does not guarantee that +-- the package (and by extension, the file) exists. +function path.rock_manifest_file(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name, version, "rock_manifest") +end + +--- Get the local installation directory for C libraries of a package. +-- @param name string: The package name. +-- @param version string: The package version. +-- @param tree string or nil: If given, specifies the local tree to use. +-- @return string: The resulting path -- does not guarantee that +-- the package (and by extension, the path) exists. +function path.lib_dir(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name, version, "lib") +end + +--- Get the local installation directory for Lua modules of a package. +-- @param name string: The package name. +-- @param version string: The package version. +-- @param tree string or nil: If given, specifies the local tree to use. +-- @return string: The resulting path -- does not guarantee that +-- the package (and by extension, the path) exists. +function path.lua_dir(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name, version, "lua") +end + +--- Get the local installation directory for documentation of a package. +-- @param name string: The package name. +-- @param version string: The package version. +-- @param tree string or nil: If given, specifies the local tree to use. +-- @return string: The resulting path -- does not guarantee that +-- the package (and by extension, the path) exists. +function path.doc_dir(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name, version, "doc") +end + +--- Get the local installation directory for configuration files of a package. +-- @param name string: The package name. +-- @param version string: The package version. +-- @param tree string or nil: If given, specifies the local tree to use. +-- @return string: The resulting path -- does not guarantee that +-- the package (and by extension, the path) exists. +function path.conf_dir(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name, version, "conf") +end + +--- Get the local installation directory for command-line scripts +-- of a package. +-- @param name string: The package name. +-- @param version string: The package version. +-- @param tree string or nil: If given, specifies the local tree to use. +-- @return string: The resulting path -- does not guarantee that +-- the package (and by extension, the path) exists. +function path.bin_dir(name, version, tree) + assert(type(name) == "string") + assert(type(version) == "string") + tree = tree or cfg.root_dir + return dir.path(path.rocks_dir(tree), name, version, "bin") +end + +--- Extract name, version and arch of a rock filename, +-- or name, version and "rockspec" from a rockspec name. +-- @param file_name string: pathname of a rock or rockspec +-- @return (string, string, string) or nil: name, version and arch +-- or nil if name could not be parsed +function path.parse_name(file_name) + assert(type(file_name) == "string") + if file_name:match("%.rock$") then + return dir.base_name(file_name):match("(.*)-([^-]+-%d+)%.([^.]+)%.rock$") + else + return dir.base_name(file_name):match("(.*)-([^-]+-%d+)%.(rockspec)") + end +end + +--- Make a rockspec or rock URL. +-- @param pathname string: Base URL or pathname. +-- @param name string: Package name. +-- @param version string: Package version. +-- @param arch string: Architecture identifier, or "rockspec" or "installed". +-- @return string: A URL or pathname following LuaRocks naming conventions. +function path.make_url(pathname, name, version, arch) + assert(type(pathname) == "string") + assert(type(name) == "string") + assert(type(version) == "string") + assert(type(arch) == "string") + + local filename = name.."-"..version + if arch == "installed" then + filename = dir.path(name, version, filename..".rockspec") + elseif arch == "rockspec" then + filename = filename..".rockspec" + else + filename = filename.."."..arch..".rock" + end + return dir.path(pathname, filename) +end + +--- Convert a pathname to a module identifier. +-- In Unix, for example, a path "foo/bar/baz.lua" is converted to +-- "foo.bar.baz"; "bla/init.lua" returns "bla"; "foo.so" returns "foo". +-- @param file string: Pathname of module +-- @return string: The module identifier, or nil if given path is +-- not a conformant module path (the function does not check if the +-- path actually exists). +function path.path_to_module(file) + assert(type(file) == "string") + + local name = file:match("(.*)%."..cfg.lua_extension.."$") + if name then + name = name:gsub(dir.separator, ".") + local init = name:match("(.*)%.init$") + if init then + name = init + end + else + name = file:match("(.*)%."..cfg.lib_extension.."$") + if name then + name = name:gsub(dir.separator, ".") + end + end + if not name then name = file end + name = name:gsub("^%.+", ""):gsub("%.+$", "") + return name +end + +--- Obtain the directory name where a module should be stored. +-- For example, on Unix, "foo.bar.baz" will return "foo/bar". +-- @param mod string: A module name in Lua dot-separated format. +-- @return string: A directory name using the platform's separator. +function path.module_to_path(mod) + assert(type(mod) == "string") + return (mod:gsub("[^.]*$", ""):gsub("%.", dir.separator)) +end + +--- Set up path-related variables for a given rock. +-- Create a "variables" table in the rockspec table, containing +-- adjusted variables according to the configuration file. +-- @param rockspec table: The rockspec table. +function path.configure_paths(rockspec) + assert(type(rockspec) == "table") + local vars = {} + for k,v in pairs(cfg.variables) do + vars[k] = v + end + local name, version = rockspec.name, rockspec.version + vars.PREFIX = path.install_dir(name, version) + vars.LUADIR = path.lua_dir(name, version) + vars.LIBDIR = path.lib_dir(name, version) + vars.CONFDIR = path.conf_dir(name, version) + vars.BINDIR = path.bin_dir(name, version) + vars.DOCDIR = path.doc_dir(name, version) + rockspec.variables = vars +end + +--- Produce a versioned version of a filename. +-- @param file string: filename (must start with prefix) +-- @param prefix string: Path prefix for file +-- @param name string: Rock name +-- @param version string: Rock version +-- @return string: a pathname with the same directory parts and a versioned basename. +function path.versioned_name(file, prefix, name, version) + assert(type(file) == "string") + assert(type(name) == "string") + assert(type(version) == "string") + + local rest = file:sub(#prefix+1):gsub("^/*", "") + local name_version = (name.."_"..version):gsub("%-", "_"):gsub("%.", "_") + return dir.path(prefix, name_version.."-"..rest) +end + +function path.use_tree(tree) + cfg.root_dir = tree + cfg.rocks_dir = path.rocks_dir(tree) + cfg.deploy_bin_dir = path.deploy_bin_dir(tree) + cfg.deploy_lua_dir = path.deploy_lua_dir(tree) + cfg.deploy_lib_dir = path.deploy_lib_dir(tree) +end + +--- Apply a given function to the active rocks trees based on chosen dependency mode. +-- @param deps_mode string: Dependency mode: "one" for the current default tree, +-- "all" for all trees, "order" for all trees with priority >= the current default, +-- "none" for no trees (this function becomes a nop). +-- @param fn function: function to be applied, with the tree dir (string) as the first +-- argument and the remaining varargs of map_trees as the following arguments. +-- @return a table with all results of invocations of fn collected. +function path.map_trees(deps_mode, fn, ...) + local result = {} + if deps_mode == "one" then + table.insert(result, (fn(cfg.root_dir, ...)) or 0) + elseif deps_mode == "all" or deps_mode == "order" then + local use = false + if deps_mode == "all" then + use = true + end + for _, tree in ipairs(cfg.rocks_trees) do + if dir.normalize(path.rocks_tree_to_string(tree)) == dir.normalize(path.rocks_tree_to_string(cfg.root_dir)) then + use = true + end + if use then + table.insert(result, (fn(tree, ...)) or 0) + end + end + end + return result +end + +local is_src_extension = { [".lua"] = true, [".tl"] = true, [".tld"] = true, [".moon"] = true } + +--- Return the pathname of the file that would be loaded for a module, indexed. +-- @param file_name string: module file name as in manifest (eg. "socket/core.so") +-- @param name string: name of the package (eg. "luasocket") +-- @param version string: version number (eg. "2.0.2-1") +-- @param tree string: repository path (eg. "/usr/local") +-- @param i number: the index, 1 if version is the current default, > 1 otherwise. +-- This is done this way for use by select_module in luarocks.loader. +-- @return string: filename of the module (eg. "/usr/local/lib/lua/5.1/socket/core.so") +function path.which_i(file_name, name, version, tree, i) + local deploy_dir + local extension = file_name:match("%.[a-z]+$") + if is_src_extension[extension] then + deploy_dir = path.deploy_lua_dir(tree) + file_name = dir.path(deploy_dir, file_name) + else + deploy_dir = path.deploy_lib_dir(tree) + file_name = dir.path(deploy_dir, file_name) + end + if i > 1 then + file_name = path.versioned_name(file_name, deploy_dir, name, version) + end + return file_name +end + +--- Return the pathname of the file that would be loaded for a module, +-- returning the versioned pathname if given version is not the default version +-- in the given manifest. +-- @param module_name string: module name (eg. "socket.core") +-- @param file_name string: module file name as in manifest (eg. "socket/core.so") +-- @param name string: name of the package (eg. "luasocket") +-- @param version string: version number (eg. "2.0.2-1") +-- @param tree string: repository path (eg. "/usr/local") +-- @param manifest table: the manifest table for the tree. +-- @return string: filename of the module (eg. "/usr/local/lib/lua/5.1/socket/core.so") +function path.which(module_name, file_name, name, version, tree, manifest) + local versions = manifest.modules[module_name] + assert(versions) + for i, name_version in ipairs(versions) do + if name_version == name.."/"..version then + return path.which_i(file_name, name, version, tree, i):gsub("//", "/") + end + end + assert(false) +end + +return path diff --git a/Utils/luarocks/lua/luarocks/path_cmd.lua b/Utils/luarocks/lua/luarocks/path_cmd.lua new file mode 100644 index 000000000..eba85d46d --- /dev/null +++ b/Utils/luarocks/lua/luarocks/path_cmd.lua @@ -0,0 +1,69 @@ + +--- @module luarocks.path_cmd +-- Driver for the `luarocks path` command. +local path_cmd = {} + +local util = require("luarocks.util") +local cfg = require("luarocks.cfg") + +util.add_run_function(path_cmd) +path_cmd.help_summary = "Return the currently configured package path." +path_cmd.help_arguments = "" +path_cmd.help = [[ +Returns the package path currently configured for this installation +of LuaRocks, formatted as shell commands to update LUA_PATH and LUA_CPATH. + +--bin Adds the system path to the output + +--append Appends the paths to the existing paths. Default is to prefix + the LR paths to the existing paths. + +--lr-path Exports the Lua path (not formatted as shell command) + +--lr-cpath Exports the Lua cpath (not formatted as shell command) + +--lr-bin Exports the system path (not formatted as shell command) + + +On Unix systems, you may run: + eval `luarocks path` +And on Windows: + luarocks path > "%temp%\_lrp.bat" && call "%temp%\_lrp.bat" && del "%temp%\_lrp.bat" +]] + +--- Driver function for "path" command. +-- @return boolean This function always succeeds. +function path_cmd.command(flags) + local lr_path, lr_cpath, lr_bin = cfg.package_paths(flags["tree"]) + local path_sep = cfg.export_path_separator + + if flags["lr-path"] then + util.printout(util.remove_path_dupes(lr_path, ';')) + return true + elseif flags["lr-cpath"] then + util.printout(util.remove_path_dupes(lr_cpath, ';')) + return true + elseif flags["lr-bin"] then + util.printout(util.remove_path_dupes(lr_bin, path_sep)) + return true + end + + if flags["append"] then + lr_path = package.path .. ";" .. lr_path + lr_cpath = package.cpath .. ";" .. lr_cpath + lr_bin = os.getenv("PATH") .. path_sep .. lr_bin + else + lr_path = lr_path.. ";" .. package.path + lr_cpath = lr_cpath .. ";" .. package.cpath + lr_bin = lr_bin .. path_sep .. os.getenv("PATH") + end + + util.printout(cfg.export_lua_path:format(util.remove_path_dupes(lr_path, ';'))) + util.printout(cfg.export_lua_cpath:format(util.remove_path_dupes(lr_cpath, ';'))) + if flags["bin"] then + util.printout(cfg.export_path:format(util.remove_path_dupes(lr_bin, path_sep))) + end + return true +end + +return path_cmd diff --git a/Utils/luarocks/lua/luarocks/persist.lua b/Utils/luarocks/lua/luarocks/persist.lua new file mode 100644 index 000000000..708f07bed --- /dev/null +++ b/Utils/luarocks/lua/luarocks/persist.lua @@ -0,0 +1,210 @@ + +--- Utility module for loading files into tables and +-- saving tables into files. +-- Implemented separately to avoid interdependencies, +-- as it is used in the bootstrapping stage of the cfg module. +local persist = {} +package.loaded["luarocks.persist"] = persist + +local util = require("luarocks.util") + +--- Load and run a Lua file in an environment. +-- @param filename string: the name of the file. +-- @param env table: the environment table. +-- @return (true, any) or (nil, string, string): true and the return value +-- of the file, or nil, an error message and an error code ("open", "load" +-- or "run") in case of errors. +local function run_file(filename, env) + local fd, err = io.open(filename) + if not fd then + return nil, err, "open" + end + local str, err = fd:read("*a") + fd:close() + if not str then + return nil, err, "open" + end + str = str:gsub("^#![^\n]*\n", "") + local chunk, ran + if _VERSION == "Lua 5.1" then -- Lua 5.1 + chunk, err = loadstring(str, filename) + if chunk then + setfenv(chunk, env) + ran, err = pcall(chunk) + end + else -- Lua 5.2 + chunk, err = load(str, filename, "t", env) + if chunk then + ran, err = pcall(chunk) + end + end + if not chunk then + return nil, "Error loading file: "..err, "load" + end + if not ran then + return nil, "Error running file: "..err, "run" + end + return true, err +end + +--- Load a Lua file containing assignments, storing them in a table. +-- The global environment is not propagated to the loaded file. +-- @param filename string: the name of the file. +-- @param tbl table or nil: if given, this table is used to store +-- loaded values. +-- @return (table, table) or (nil, string, string): a table with the file's assignments +-- as fields and set of undefined globals accessed in file, +-- or nil, an error message and an error code ("open"; couldn't open the file, +-- "load"; compile-time error, or "run"; run-time error) +-- in case of errors. +function persist.load_into_table(filename, tbl) + assert(type(filename) == "string") + assert(type(tbl) == "table" or not tbl) + + local result = tbl or {} + local globals = {} + local globals_mt = { + __index = function(t, k) + globals[k] = true + end + } + local save_mt = getmetatable(result) + setmetatable(result, globals_mt) + + local ok, err, errcode = run_file(filename, result) + + setmetatable(result, save_mt) + + if not ok then + return nil, err, errcode + end + return result, globals +end + +local write_table + +--- Write a value as Lua code. +-- This function handles only numbers and strings, invoking write_table +-- to write tables. +-- @param out table or userdata: a writer object supporting :write() method. +-- @param v: the value to be written. +-- @param level number: the indentation level +-- @param sub_order table: optional prioritization table +-- @see write_table +local function write_value(out, v, level, sub_order) + if type(v) == "table" then + write_table(out, v, level + 1, sub_order) + elseif type(v) == "string" then + if v:match("[\r\n]") then + local open, close = "[[", "]]" + local equals = 0 + local v_with_bracket = v.."]" + while v_with_bracket:find(close, 1, true) do + equals = equals + 1 + local eqs = ("="):rep(equals) + open, close = "["..eqs.."[", "]"..eqs.."]" + end + out:write(open.."\n"..v..close) + else + out:write(("%q"):format(v)) + end + else + out:write(tostring(v)) + end +end + +--- Write a table as Lua code in curly brackets notation to a writer object. +-- Only numbers, strings and tables (containing numbers, strings +-- or other recursively processed tables) are supported. +-- @param out table or userdata: a writer object supporting :write() method. +-- @param tbl table: the table to be written. +-- @param level number: the indentation level +-- @param field_order table: optional prioritization table +write_table = function(out, tbl, level, field_order) + out:write("{") + local sep = "\n" + local indentation = " " + local indent = true + local i = 1 + for k, v, sub_order in util.sortedpairs(tbl, field_order) do + out:write(sep) + if indent then + for n = 1,level do out:write(indentation) end + end + + if k == i then + i = i + 1 + else + if type(k) == "string" and k:match("^[a-zA-Z_][a-zA-Z0-9_]*$") then + out:write(k) + else + out:write("[") + write_value(out, k, level) + out:write("]") + end + + out:write(" = ") + end + + write_value(out, v, level, sub_order) + if type(v) == "number" then + sep = ", " + indent = false + else + sep = ",\n" + indent = true + end + end + if sep ~= "\n" then + out:write("\n") + for n = 1,level-1 do out:write(indentation) end + end + out:write("}") +end + +--- Write a table as series of assignments to a writer object. +-- @param out table or userdata: a writer object supporting :write() method. +-- @param tbl table: the table to be written. +-- @param field_order table: optional prioritization table +local function write_table_as_assignments(out, tbl, field_order) + for k, v, sub_order in util.sortedpairs(tbl, field_order) do + out:write(k.." = ") + write_value(out, v, 0, sub_order) + out:write("\n") + end +end + +--- Save the contents of a table to a string. +-- Each element of the table is saved as a global assignment. +-- Only numbers, strings and tables (containing numbers, strings +-- or other recursively processed tables) are supported. +-- @param tbl table: the table containing the data to be written +-- @param field_order table: an optional array indicating the order of top-level fields. +-- @return string +function persist.save_from_table_to_string(tbl, field_order) + local out = {buffer = {}} + function out:write(data) table.insert(self.buffer, data) end + write_table_as_assignments(out, tbl, field_order) + return table.concat(out.buffer) +end + +--- Save the contents of a table in a file. +-- Each element of the table is saved as a global assignment. +-- Only numbers, strings and tables (containing numbers, strings +-- or other recursively processed tables) are supported. +-- @param filename string: the output filename +-- @param tbl table: the table containing the data to be written +-- @param field_order table: an optional array indicating the order of top-level fields. +-- @return boolean or (nil, string): true if successful, or nil and a +-- message in case of errors. +function persist.save_from_table(filename, tbl, field_order) + local out = io.open(filename, "w") + if not out then + return nil, "Cannot create file at "..filename + end + write_table_as_assignments(out, tbl, field_order) + out:close() + return true +end + +return persist diff --git a/Utils/luarocks/lua/luarocks/purge.lua b/Utils/luarocks/lua/luarocks/purge.lua new file mode 100644 index 000000000..17724e847 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/purge.lua @@ -0,0 +1,79 @@ + +--- Module implementing the LuaRocks "purge" command. +-- Remove all rocks from a given tree. +local purge = {} +package.loaded["luarocks.purge"] = purge + +local util = require("luarocks.util") +local fs = require("luarocks.fs") +local path = require("luarocks.path") +local search = require("luarocks.search") +local deps = require("luarocks.deps") +local repos = require("luarocks.repos") +local manif = require("luarocks.manif") +local cfg = require("luarocks.cfg") +local remove = require("luarocks.remove") + +util.add_run_function(purge) +purge.help_summary = "Remove all installed rocks from a tree." +purge.help_arguments = "--tree= [--old-versions]" +purge.help = [[ +This command removes rocks en masse from a given tree. +By default, it removes all rocks from a tree. + +The --tree argument is mandatory: luarocks purge does not +assume a default tree. + +--old-versions Keep the highest-numbered version of each + rock and remove the other ones. By default + it only removes old versions if they are + not needed as dependencies. This can be + overridden with the flag --force. +]] + +function purge.command(flags) + local tree = flags["tree"] + + if type(tree) ~= "string" then + return nil, "The --tree argument is mandatory. "..util.see_help("purge") + end + + local results = {} + local query = search.make_query("") + query.exact_name = false + if not fs.is_dir(tree) then + return nil, "Directory not found: "..tree + end + + local ok, err = fs.check_command_permissions(flags) + if not ok then return nil, err, cfg.errorcodes.PERMISSIONDENIED end + + search.manifest_search(results, path.rocks_dir(tree), query) + + local sort = function(a,b) return deps.compare_versions(b,a) end + if flags["old-versions"] then + sort = deps.compare_versions + end + + for package, versions in util.sortedpairs(results) do + for version, repositories in util.sortedpairs(versions, sort) do + if flags["old-versions"] then + util.printout("Keeping "..package.." "..version.."...") + local ok, err = remove.remove_other_versions(package, version, flags["force"], flags["force-fast"]) + if not ok then + util.printerr(err) + end + break + else + util.printout("Removing "..package.." "..version.."...") + local ok, err = repos.delete_version(package, version, "none", true) + if not ok then + util.printerr(err) + end + end + end + end + return manif.make_manifest(cfg.rocks_dir, "one") +end + +return purge diff --git a/Utils/luarocks/lua/luarocks/refresh_cache.lua b/Utils/luarocks/lua/luarocks/refresh_cache.lua new file mode 100644 index 000000000..bbfd1f4d8 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/refresh_cache.lua @@ -0,0 +1,33 @@ + +--- Module implementing the luarocks-admin "refresh_cache" command. +local refresh_cache = {} +package.loaded["luarocks.refresh_cache"] = refresh_cache + +local util = require("luarocks.util") +local cfg = require("luarocks.cfg") +local cache = require("luarocks.cache") + +util.add_run_function(refresh_cache) +refresh_cache.help_summary = "Refresh local cache of a remote rocks server." +refresh_cache.help_arguments = "[--from=]" +refresh_cache.help = [[ +The flag --from indicates which server to use. +If not given, the default server set in the upload_server variable +from the configuration file is used instead. +]] + +function refresh_cache.command(flags) + local server, upload_server = cache.get_upload_server(flags["server"]) + if not server then return nil, upload_server end + local download_url = cache.get_server_urls(server, upload_server) + + local ok, err = cache.refresh_local_cache(server, download_url, cfg.upload_user, cfg.upload_password) + if not ok then + return nil, err + else + return true + end +end + + +return refresh_cache diff --git a/Utils/luarocks/lua/luarocks/remove.lua b/Utils/luarocks/lua/luarocks/remove.lua new file mode 100644 index 000000000..514c6dfa1 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/remove.lua @@ -0,0 +1,174 @@ + +--- Module implementing the LuaRocks "remove" command. +-- Uninstalls rocks. +local remove = {} +package.loaded["luarocks.remove"] = remove + +local search = require("luarocks.search") +local deps = require("luarocks.deps") +local fetch = require("luarocks.fetch") +local repos = require("luarocks.repos") +local path = require("luarocks.path") +local util = require("luarocks.util") +local cfg = require("luarocks.cfg") +local fs = require("luarocks.fs") +local manif = require("luarocks.manif") + +util.add_run_function(remove) +remove.help_summary = "Uninstall a rock." +remove.help_arguments = "[--force|--force-fast] []" +remove.help = [[ +Argument is the name of a rock to be uninstalled. +If a version is not given, try to remove all versions at once. +Will only perform the removal if it does not break dependencies. +To override this check and force the removal, use --force. +To perform a forced removal without reporting dependency issues, +use --force-fast. + +]]..util.deps_mode_help() + +--- Obtain a list of packages that depend on the given set of packages +-- (where all packages of the set are versions of one program). +-- @param name string: the name of a program +-- @param versions array of string: the versions to be deleted. +-- @return array of string: an empty table if no packages depend on any +-- of the given list, or an array of strings in "name/version" format. +local function check_dependents(name, versions, deps_mode) + local dependents = {} + local blacklist = {} + blacklist[name] = {} + for version, _ in pairs(versions) do + blacklist[name][version] = true + end + local local_rocks = {} + local query_all = search.make_query("") + query_all.exact_name = false + search.manifest_search(local_rocks, cfg.rocks_dir, query_all) + local_rocks[name] = nil + for rock_name, rock_versions in pairs(local_rocks) do + for rock_version, _ in pairs(rock_versions) do + local rockspec, err = fetch.load_rockspec(path.rockspec_file(rock_name, rock_version)) + if rockspec then + local _, missing = deps.match_deps(rockspec, blacklist, deps_mode) + if missing[name] then + table.insert(dependents, { name = rock_name, version = rock_version }) + end + end + end + end + return dependents +end + +--- Delete given versions of a program. +-- @param name string: the name of a program +-- @param versions array of string: the versions to be deleted. +-- @param deps_mode: string: Which trees to check dependencies for: +-- "one" for the current default tree, "all" for all trees, +-- "order" for all trees with priority >= the current default, "none" for no trees. +-- @return boolean or (nil, string): true on success or nil and an error message. +local function delete_versions(name, versions, deps_mode) + + for version, _ in pairs(versions) do + util.printout("Removing "..name.." "..version.."...") + local ok, err = repos.delete_version(name, version, deps_mode) + if not ok then return nil, err end + end + + return true +end + +function remove.remove_search_results(results, name, deps_mode, force, fast) + local versions = results[name] + + local version = next(versions) + local second = next(versions, version) + + local dependents = {} + if not fast then + util.printout("Checking stability of dependencies in the absence of") + util.printout(name.." "..table.concat(util.keys(versions), ", ").."...") + util.printout() + dependents = check_dependents(name, versions, deps_mode) + end + + if #dependents > 0 then + if force or fast then + util.printerr("The following packages may be broken by this forced removal:") + for _, dependent in ipairs(dependents) do + util.printerr(dependent.name.." "..dependent.version) + end + util.printerr() + else + if not second then + util.printerr("Will not remove "..name.." "..version..".") + util.printerr("Removing it would break dependencies for: ") + else + util.printerr("Will not remove installed versions of "..name..".") + util.printerr("Removing them would break dependencies for: ") + end + for _, dependent in ipairs(dependents) do + util.printerr(dependent.name.." "..dependent.version) + end + util.printerr() + util.printerr("Use --force to force removal (warning: this may break modules).") + return nil, "Failed removing." + end + end + + local ok, err = delete_versions(name, versions, deps_mode) + if not ok then return nil, err end + + util.printout("Removal successful.") + return true +end + +function remove.remove_other_versions(name, version, force, fast) + local results = {} + search.manifest_search(results, cfg.rocks_dir, { name = name, exact_name = true, constraints = {{ op = "~=", version = version}} }) + if results[name] then + return remove.remove_search_results(results, name, cfg.deps_mode, force, fast) + end + return true +end + +--- Driver function for the "remove" command. +-- @param name string: name of a rock. If a version is given, refer to +-- a specific version; otherwise, try to remove all versions. +-- @param version string: When passing a package name, a version number +-- may also be given. +-- @return boolean or (nil, string, exitcode): True if removal was +-- successful, nil and an error message otherwise. exitcode is optionally returned. +function remove.command(flags, name, version) + if type(name) ~= "string" then + return nil, "Argument missing. "..util.see_help("remove") + end + + local deps_mode = flags["deps-mode"] or cfg.deps_mode + + local ok, err = fs.check_command_permissions(flags) + if not ok then return nil, err, cfg.errorcodes.PERMISSIONDENIED end + + local rock_type = name:match("%.(rock)$") or name:match("%.(rockspec)$") + local filename = name + if rock_type then + name, version = path.parse_name(filename) + if not name then return nil, "Invalid "..rock_type.." filename: "..filename end + end + + local results = {} + name = name:lower() + search.manifest_search(results, cfg.rocks_dir, search.make_query(name, version)) + if not results[name] then + return nil, "Could not find rock '"..name..(version and " "..version or "").."' in "..path.rocks_tree_to_string(cfg.root_dir) + end + + local ok, err = remove.remove_search_results(results, name, deps_mode, flags["force"], flags["force-fast"]) + if not ok then + return nil, err + end + + manif.check_dependencies(nil, deps.get_deps_mode(flags)) + return true +end + +return remove diff --git a/Utils/luarocks/lua/luarocks/repos.lua b/Utils/luarocks/lua/luarocks/repos.lua new file mode 100644 index 000000000..5d5eac708 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/repos.lua @@ -0,0 +1,422 @@ + +--- Functions for managing the repository on disk. +local repos = {} +package.loaded["luarocks.repos"] = repos + +local fs = require("luarocks.fs") +local path = require("luarocks.path") +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") +local dir = require("luarocks.dir") +local manif = require("luarocks.manif") +local deps = require("luarocks.deps") + +-- Tree of files installed by a package are stored +-- in its rock manifest. Some of these files have to +-- be deployed to locations where Lua can load them as +-- modules or where they can be used as commands. +-- These files are characterised by pair +-- (deploy_type, file_path), where deploy_type is the first +-- component of the file path and file_path is the rest of the +-- path. Only files with deploy_type in {"lua", "lib", "bin"} +-- are deployed somewhere. +-- Each deployed file provides an "item". An item is +-- characterised by pair (item_type, item_name). +-- item_type is "command" for files with deploy_type +-- "bin" and "module" for deploy_type in {"lua", "lib"}. +-- item_name is same as file_path for commands +-- and is produced using path.path_to_module(file_path) +-- for modules. + +--- Get all installed versions of a package. +-- @param name string: a package name. +-- @return table or nil: An array of strings listing installed +-- versions of a package, or nil if none is available. +local function get_installed_versions(name) + assert(type(name) == "string") + + local dirs = fs.list_dir(path.versions_dir(name)) + return (dirs and #dirs > 0) and dirs or nil +end + +--- Check if a package exists in a local repository. +-- Version numbers are compared as exact string comparison. +-- @param name string: name of package +-- @param version string: package version in string format +-- @return boolean: true if a package is installed, +-- false otherwise. +function repos.is_installed(name, version) + assert(type(name) == "string") + assert(type(version) == "string") + + return fs.is_dir(path.install_dir(name, version)) +end + +local function recurse_rock_manifest_tree(file_tree, action) + assert(type(file_tree) == "table") + assert(type(action) == "function") + local function do_recurse_rock_manifest_tree(tree, parent_path, parent_module) + + for file, sub in pairs(tree) do + if type(sub) == "table" then + local ok, err = do_recurse_rock_manifest_tree(sub, parent_path..file.."/", parent_module..file..".") + if not ok then return nil, err end + else + local ok, err = action(parent_path, parent_module, file) + if not ok then return nil, err end + end + end + return true + end + return do_recurse_rock_manifest_tree(file_tree, "", "") +end + +local function store_package_data(result, name, file_tree) + if not file_tree then return end + return recurse_rock_manifest_tree(file_tree, + function(parent_path, parent_module, file) + local pathname = parent_path..file + result[path.path_to_module(pathname)] = pathname + return true + end + ) +end + +--- Obtain a list of modules within an installed package. +-- @param package string: The package name; for example "luasocket" +-- @param version string: The exact version number including revision; +-- for example "2.0.1-1". +-- @return table: A table of modules where keys are module identifiers +-- in "foo.bar" format and values are pathnames in architecture-dependent +-- "foo/bar.so" format. If no modules are found or if package or version +-- are invalid, an empty table is returned. +function repos.package_modules(package, version) + assert(type(package) == "string") + assert(type(version) == "string") + + local result = {} + local rock_manifest = manif.load_rock_manifest(package, version) + store_package_data(result, package, rock_manifest.lib) + store_package_data(result, package, rock_manifest.lua) + return result +end + +--- Obtain a list of command-line scripts within an installed package. +-- @param package string: The package name; for example "luasocket" +-- @param version string: The exact version number including revision; +-- for example "2.0.1-1". +-- @return table: A table of items where keys are command names +-- as strings and values are pathnames in architecture-dependent +-- ".../bin/foo" format. If no modules are found or if package or version +-- are invalid, an empty table is returned. +function repos.package_commands(package, version) + assert(type(package) == "string") + assert(type(version) == "string") + + local result = {} + local rock_manifest = manif.load_rock_manifest(package, version) + store_package_data(result, package, rock_manifest.bin) + return result +end + + +--- Check if a rock contains binary executables. +-- @param name string: name of an installed rock +-- @param version string: version of an installed rock +-- @return boolean: returns true if rock contains platform-specific +-- binary executables, or false if it is a pure-Lua rock. +function repos.has_binaries(name, version) + assert(type(name) == "string") + assert(type(version) == "string") + + local rock_manifest = manif.load_rock_manifest(name, version) + if rock_manifest.bin then + for name, md5 in pairs(rock_manifest.bin) do + -- TODO verify that it is the same file. If it isn't, find the actual command. + if fs.is_actual_binary(dir.path(cfg.deploy_bin_dir, name)) then + return true + end + end + end + return false +end + +function repos.run_hook(rockspec, hook_name) + assert(type(rockspec) == "table") + assert(type(hook_name) == "string") + + local hooks = rockspec.hooks + if not hooks then + return true + end + + if cfg.hooks_enabled == false then + return nil, "This rockspec contains hooks, which are blocked by the 'hooks_enabled' setting in your LuaRocks configuration." + end + + if not hooks.substituted_variables then + util.variable_substitutions(hooks, rockspec.variables) + hooks.substituted_variables = true + end + local hook = hooks[hook_name] + if hook then + util.printout(hook) + if not fs.execute(hook) then + return nil, "Failed running "..hook_name.." hook." + end + end + return true +end + +function repos.should_wrap_bin_scripts(rockspec) + assert(type(rockspec) == "table") + + if cfg.wrap_bin_scripts ~= nil then + return cfg.wrap_bin_scripts + end + if rockspec.deploy and rockspec.deploy.wrap_bin_scripts == false then + return false + end + return true +end + +local function find_suffixed(file, suffix) + local filenames = {file} + if suffix and suffix ~= "" then + table.insert(filenames, 1, file .. suffix) + end + + for _, filename in ipairs(filenames) do + if fs.exists(filename) then + return filename + end + end + + return nil, table.concat(filenames, ", ") .. " not found" +end + +local function move_suffixed(from_file, to_file, suffix) + local suffixed_from_file, err = find_suffixed(from_file, suffix) + if not suffixed_from_file then + return nil, "Could not move " .. from_file .. " to " .. to_file .. ": " .. err + end + + suffix = suffixed_from_file:sub(#from_file + 1) + local suffixed_to_file = to_file .. suffix + return fs.move(suffixed_from_file, suffixed_to_file) +end + +local function delete_suffixed(file, suffix) + local suffixed_file, err = find_suffixed(file, suffix) + if not suffixed_file then + return nil, "Could not remove " .. file .. ": " .. err + end + + fs.delete(suffixed_file) + if fs.exists(suffixed_file) then + return nil, "Failed deleting " .. suffixed_file .. ": file still exists" + end + + return true +end + +-- Files can be deployed using versioned and non-versioned names. +-- Several items with same type and name can exist if they are +-- provided by different packages or versions. In any case +-- item from the newest version of lexicographically smallest package +-- is deployed using non-versioned name and others use versioned names. + +local function get_deploy_paths(name, version, deploy_type, file_path) + local deploy_dir = cfg["deploy_" .. deploy_type .. "_dir"] + local non_versioned = dir.path(deploy_dir, file_path) + local versioned = path.versioned_name(non_versioned, deploy_dir, name, version) + return non_versioned, versioned +end + +local function prepare_target(name, version, deploy_type, file_path, suffix) + local non_versioned, versioned = get_deploy_paths(name, version, deploy_type, file_path) + local item_type, item_name = manif.get_provided_item(deploy_type, file_path) + local cur_name, cur_version = manif.get_current_provider(item_type, item_name) + + if not cur_name then + return non_versioned + elseif name < cur_name or (name == cur_name and deps.compare_versions(version, cur_version)) then + -- New version has priority. Move currently provided version back using versioned name. + local cur_deploy_type, cur_file_path = manif.get_providing_file(cur_name, cur_version, item_type, item_name) + local cur_non_versioned, cur_versioned = get_deploy_paths(cur_name, cur_version, cur_deploy_type, cur_file_path) + + local dir_ok, dir_err = fs.make_dir(dir.dir_name(cur_versioned)) + if not dir_ok then return nil, dir_err end + + local move_ok, move_err = move_suffixed(cur_non_versioned, cur_versioned, suffix) + if not move_ok then return nil, move_err end + + return non_versioned + else + -- Current version has priority, deploy new version using versioned name. + return versioned + end +end + +--- Deploy a package from the rocks subdirectory. +-- @param name string: name of package +-- @param version string: exact package version in string format +-- @param wrap_bin_scripts bool: whether commands written in Lua should be wrapped. +-- @param deps_mode: string: Which trees to check dependencies for: +-- "one" for the current default tree, "all" for all trees, +-- "order" for all trees with priority >= the current default, "none" for no trees. +function repos.deploy_files(name, version, wrap_bin_scripts, deps_mode) + assert(type(name) == "string") + assert(type(version) == "string") + assert(type(wrap_bin_scripts) == "boolean") + + local rock_manifest = manif.load_rock_manifest(name, version) + + local function deploy_file_tree(deploy_type, source_dir, move_fn, suffix) + if not rock_manifest[deploy_type] then + return true + end + + return recurse_rock_manifest_tree(rock_manifest[deploy_type], function(parent_path, parent_module, file) + local file_path = parent_path .. file + local source = dir.path(source_dir, file_path) + + local target, prepare_err = prepare_target(name, version, deploy_type, file_path, suffix) + if not target then return nil, prepare_err end + + local dir_ok, dir_err = fs.make_dir(dir.dir_name(target)) + if not dir_ok then return nil, dir_err end + + local suffixed_target, mover = move_fn(source, target) + if fs.exists(suffixed_target) then + local backup = suffixed_target + repeat + backup = backup.."~" + until not fs.exists(backup) -- Slight race condition here, but shouldn't be a problem. + + util.printerr("Warning: "..suffixed_target.." is not tracked by this installation of LuaRocks. Moving it to "..backup) + local move_ok, move_err = fs.move(suffixed_target, backup) + if not move_ok then return nil, move_err end + end + + local move_ok, move_err = mover() + if not move_ok then return nil, move_err end + + fs.remove_dir_tree_if_empty(dir.dir_name(source)) + return true + end) + end + + local function install_binary(source, target) + if wrap_bin_scripts and fs.is_lua(source) then + return target .. (cfg.wrapper_suffix or ""), function() return fs.wrap_script(source, target, name, version) end + else + return target, function() return fs.copy_binary(source, target) end + end + end + + local function make_mover(perms) + return function(source, target) + return target, function() return fs.move(source, target, perms) end + end + end + + local ok, err = deploy_file_tree("bin", path.bin_dir(name, version), install_binary, cfg.wrapper_suffix) + if not ok then return nil, err end + + ok, err = deploy_file_tree("lua", path.lua_dir(name, version), make_mover(cfg.perm_read)) + if not ok then return nil, err end + + ok, err = deploy_file_tree("lib", path.lib_dir(name, version), make_mover(cfg.perm_exec)) + if not ok then return nil, err end + + return manif.add_to_manifest(name, version, nil, deps_mode) +end + +--- Delete a package from the local repository. +-- @param name string: name of package +-- @param version string: exact package version in string format +-- @param deps_mode: string: Which trees to check dependencies for: +-- "one" for the current default tree, "all" for all trees, +-- "order" for all trees with priority >= the current default, "none" for no trees. +-- @param quick boolean: do not try to fix the versioned name +-- of another version that provides the same module that +-- was deleted. This is used during 'purge', as every module +-- will be eventually deleted. +function repos.delete_version(name, version, deps_mode, quick) + assert(type(name) == "string") + assert(type(version) == "string") + assert(type(deps_mode) == "string") + + local rock_manifest = manif.load_rock_manifest(name, version) + if not rock_manifest then + return nil, "rock_manifest file not found for "..name.." "..version.." - not a LuaRocks 2 tree?" + end + + local function delete_deployed_file_tree(deploy_type, suffix) + if not rock_manifest[deploy_type] then + return true + end + + return recurse_rock_manifest_tree(rock_manifest[deploy_type], function(parent_path, parent_module, file) + local file_path = parent_path .. file + local non_versioned, versioned = get_deploy_paths(name, version, deploy_type, file_path) + + -- Figure out if the file is deployed using versioned or non-versioned name. + local target + local item_type, item_name = manif.get_provided_item(deploy_type, file_path) + local cur_name, cur_version = manif.get_current_provider(item_type, item_name) + + if cur_name == name and cur_version == version then + -- This package has highest priority, should be in non-versioned location. + target = non_versioned + else + target = versioned + end + + local ok, err = delete_suffixed(target, suffix) + if not ok then return nil, err end + + if not quick and target == non_versioned then + -- If another package provides this file, move its version + -- into non-versioned location instead. + local next_name, next_version = manif.get_next_provider(item_type, item_name) + + if next_name then + local next_deploy_type, next_file_path = manif.get_providing_file(next_name, next_version, item_type, item_name) + local next_non_versioned, next_versioned = get_deploy_paths(next_name, next_version, next_deploy_type, next_file_path) + + local move_ok, move_err = move_suffixed(next_versioned, next_non_versioned, suffix) + if not move_ok then return nil, move_err end + + fs.remove_dir_tree_if_empty(dir.dir_name(next_versioned)) + end + end + + fs.remove_dir_tree_if_empty(dir.dir_name(target)) + return true + end) + end + + local ok, err = delete_deployed_file_tree("bin", cfg.wrapper_suffix) + if not ok then return nil, err end + + ok, err = delete_deployed_file_tree("lua") + if not ok then return nil, err end + + ok, err = delete_deployed_file_tree("lib") + if not ok then return nil, err end + + fs.delete(path.install_dir(name, version)) + if not get_installed_versions(name) then + fs.delete(dir.path(cfg.rocks_dir, name)) + end + + if quick then + return true + end + + return manif.remove_from_manifest(name, version, nil, deps_mode) +end + +return repos diff --git a/Utils/luarocks/lua/luarocks/require.lua b/Utils/luarocks/lua/luarocks/require.lua new file mode 100644 index 000000000..902bd1a3c --- /dev/null +++ b/Utils/luarocks/lua/luarocks/require.lua @@ -0,0 +1,2 @@ +--- Retained for compatibility reasons only. Use luarocks.loader instead. +return require("luarocks.loader") diff --git a/Utils/luarocks/lua/luarocks/search.lua b/Utils/luarocks/lua/luarocks/search.lua new file mode 100644 index 000000000..d22c2a185 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/search.lua @@ -0,0 +1,483 @@ + +--- Module implementing the LuaRocks "search" command. +-- Queries LuaRocks servers. +local search = {} +package.loaded["luarocks.search"] = search + +local dir = require("luarocks.dir") +local path = require("luarocks.path") +local manif = require("luarocks.manif") +local deps = require("luarocks.deps") +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") + +util.add_run_function(search) +search.help_summary = "Query the LuaRocks servers." +search.help_arguments = "[--source] [--binary] { [] | --all }" +search.help = [[ +--source Return only rockspecs and source rocks, + to be used with the "build" command. +--binary Return only pure Lua and binary rocks (rocks that can be used + with the "install" command without requiring a C toolchain). +--all List all contents of the server that are suitable to + this platform, do not filter by name. +]] + +--- Convert the arch field of a query table to table format. +-- @param query table: A query table. +local function query_arch_as_table(query) + local format = type(query.arch) + if format == "table" then + return + elseif format == "nil" then + local accept = {} + accept["src"] = true + accept["all"] = true + accept["rockspec"] = true + accept["installed"] = true + accept[cfg.arch] = true + query.arch = accept + elseif format == "string" then + local accept = {} + for a in query.arch:gmatch("[%w_-]+") do + accept[a] = true + end + query.arch = accept + end +end + +--- Store a search result (a rock or rockspec) in the results table. +-- @param results table: The results table, where keys are package names and +-- values are tables matching version strings to arrays of +-- tables with fields "arch" and "repo". +-- @param name string: Package name. +-- @param version string: Package version. +-- @param arch string: Architecture of rock ("all", "src" or platform +-- identifier), "rockspec" or "installed" +-- @param repo string: Pathname of a local repository of URL of +-- rocks server. +local function store_result(results, name, version, arch, repo) + assert(type(results) == "table") + assert(type(name) == "string") + assert(type(version) == "string") + assert(type(arch) == "string") + assert(type(repo) == "string") + + if not results[name] then results[name] = {} end + if not results[name][version] then results[name][version] = {} end + table.insert(results[name][version], { + arch = arch, + repo = repo + }) +end + +--- Test the name field of a query. +-- If query has a boolean field exact_name set to false, +-- then substring match is performed; otherwise, exact string +-- comparison is done. +-- @param query table: A query in dependency table format. +-- @param name string: A package name. +-- @return boolean: True if names match, false otherwise. +local function match_name(query, name) + assert(type(query) == "table") + assert(type(name) == "string") + if query.exact_name == false then + return name:find(query.name, 0, true) and true or false + else + return name == query.name + end +end + +--- Store a match in a results table if version matches query. +-- Name, version, arch and repository path are stored in a given +-- table, optionally checking if version and arch (if given) match +-- a query. +-- @param results table: The results table, where keys are package names and +-- values are tables matching version strings to arrays of +-- tables with fields "arch" and "repo". +-- @param repo string: URL or pathname of the repository. +-- @param name string: The name of the package being tested. +-- @param version string: The version of the package being tested. +-- @param arch string: The arch of the package being tested. +-- @param query table: A table describing the query in dependency +-- format (for example, {name = "filesystem", exact_name = false, +-- constraints = {op = "~>", version = {1,0}}}, arch = "rockspec"). +-- If the arch field is omitted, the local architecture (cfg.arch) +-- is used. The special value "any" is also recognized, returning all +-- matches regardless of architecture. +local function store_if_match(results, repo, name, version, arch, query) + if match_name(query, name) then + if query.arch[arch] or query.arch["any"] then + if deps.match_constraints(deps.parse_version(version), query.constraints) then + store_result(results, name, version, arch, repo) + end + end + end +end + +--- Perform search on a local repository. +-- @param repo string: The pathname of the local repository. +-- @param query table: A table describing the query in dependency +-- format (for example, {name = "filesystem", exact_name = false, +-- constraints = {op = "~>", version = {1,0}}}, arch = "rockspec"). +-- If the arch field is omitted, the local architecture (cfg.arch) +-- is used. The special value "any" is also recognized, returning all +-- matches regardless of architecture. +-- @param results table or nil: If given, this table will store the +-- results; if not given, a new table will be created. +-- @return table: The results table, where keys are package names and +-- values are tables matching version strings to arrays of +-- tables with fields "arch" and "repo". +-- If a table was given in the "results" parameter, that is the result value. +function search.disk_search(repo, query, results) + assert(type(repo) == "string") + assert(type(query) == "table") + assert(type(results) == "table" or not results) + + local fs = require("luarocks.fs") + + if not results then + results = {} + end + query_arch_as_table(query) + + for name in fs.dir(repo) do + local pathname = dir.path(repo, name) + local rname, rversion, rarch = path.parse_name(name) + + if rname and (pathname:match(".rockspec$") or pathname:match(".rock$")) then + store_if_match(results, repo, rname, rversion, rarch, query) + elseif fs.is_dir(pathname) then + for version in fs.dir(pathname) do + if version:match("-%d+$") then + store_if_match(results, repo, name, version, "installed", query) + end + end + end + end + return results +end + +--- Perform search on a rocks server or tree. +-- @param results table: The results table, where keys are package names and +-- values are tables matching version strings to arrays of +-- tables with fields "arch" and "repo". +-- @param repo string: The URL of a rocks server or +-- the pathname of a rocks tree (as returned by path.rocks_dir()). +-- @param query table: A table describing the query in dependency +-- format (for example, {name = "filesystem", exact_name = false, +-- constraints = {op = "~>", version = {1,0}}}, arch = "rockspec"). +-- If the arch field is omitted, the local architecture (cfg.arch) +-- is used. The special value "any" is also recognized, returning all +-- matches regardless of architecture. +-- @param lua_version string: Lua version in "5.x" format, defaults to installed version. +-- @return true or, in case of errors, nil, an error message and an optional error code. +function search.manifest_search(results, repo, query, lua_version) + assert(type(results) == "table") + assert(type(repo) == "string") + assert(type(query) == "table") + + query_arch_as_table(query) + local manifest, err, errcode = manif.load_manifest(repo, lua_version) + if not manifest then + return nil, err, errcode + end + for name, versions in pairs(manifest.repository) do + for version, items in pairs(versions) do + for _, item in ipairs(items) do + store_if_match(results, repo, name, version, item.arch, query) + end + end + end + return true +end + +--- Search on all configured rocks servers. +-- @param query table: A dependency query. +-- @param lua_version string: Lua version in "5.x" format, defaults to installed version. +-- @return table: A table where keys are package names +-- and values are tables matching version strings to arrays of +-- tables with fields "arch" and "repo". +function search.search_repos(query, lua_version) + assert(type(query) == "table") + + local results = {} + for _, repo in ipairs(cfg.rocks_servers) do + if not cfg.disabled_servers[repo] then + if type(repo) == "string" then + repo = { repo } + end + for _, mirror in ipairs(repo) do + local protocol, pathname = dir.split_url(mirror) + if protocol == "file" then + mirror = pathname + end + local ok, err, errcode = search.manifest_search(results, mirror, query, lua_version) + if errcode == "network" then + cfg.disabled_servers[repo] = true + end + if ok then + break + else + util.warning("Failed searching manifest: "..err) + end + end + end + end + -- search through rocks in cfg.rocks_provided + local provided_repo = "provided by VM or rocks_provided" + for name, versions in pairs(cfg.rocks_provided) do + store_if_match(results, provided_repo, name, versions, "installed", query) + end + return results +end + +--- Prepare a query in dependency table format. +-- @param name string: The query name. +-- @param version string or nil: +-- @return table: A query in table format +function search.make_query(name, version) + assert(type(name) == "string") + assert(type(version) == "string" or not version) + + local query = { + name = name, + constraints = {} + } + if version then + table.insert(query.constraints, { op = "==", version = deps.parse_version(version)}) + end + return query +end + +--- Get the URL for the latest in a set of versions. +-- @param name string: The package name to be used in the URL. +-- @param versions table: An array of version informations, as stored +-- in search results tables. +-- @return string or nil: the URL for the latest version if one could +-- be picked, or nil. +local function pick_latest_version(name, versions) + assert(type(name) == "string") + assert(type(versions) == "table") + + local vtables = {} + for v, _ in pairs(versions) do + table.insert(vtables, deps.parse_version(v)) + end + table.sort(vtables) + local version = vtables[#vtables].string + local items = versions[version] + if items then + local pick = 1 + for i, item in ipairs(items) do + if (item.arch == 'src' and items[pick].arch == 'rockspec') + or (item.arch ~= 'src' and item.arch ~= 'rockspec') then + pick = i + end + end + return path.make_url(items[pick].repo, name, version, items[pick].arch) + end + return nil +end + +-- Find out which other Lua versions provide rock versions matching a query, +-- @param query table: A dependency query matching a single rock. +-- @return table: array of Lua versions supported, in "5.x" format. +local function supported_lua_versions(query) + local results = {} + + for lua_version in util.lua_versions() do + if lua_version ~= cfg.lua_version then + if search.search_repos(query, lua_version)[query.name] then + table.insert(results, lua_version) + end + end + end + + return results +end + +--- Attempt to get a single URL for a given search for a rock. +-- @param query table: A dependency query matching a single rock. +-- @return string or (nil, string): URL for latest matching version +-- of the rock if it was found, or nil followed by an error message. +function search.find_suitable_rock(query) + assert(type(query) == "table") + + local results = search.search_repos(query) + local first_rock = next(results) + if not first_rock then + if cfg.rocks_provided[query.name] == nil then + -- Check if constraints are satisfiable with other Lua versions. + local lua_versions = supported_lua_versions(query) + + if #lua_versions ~= 0 then + -- Build a nice message in "only Lua 5.x and 5.y but not 5.z." format + for i, lua_version in ipairs(lua_versions) do + lua_versions[i] = "Lua "..lua_version + end + + local versions_message = "only "..table.concat(lua_versions, " and ").. + " but not Lua "..cfg.lua_version.."." + + if #query.constraints == 0 then + return nil, query.name.." supports "..versions_message + elseif #query.constraints == 1 and query.constraints[1].op == "==" then + return nil, query.name.." "..query.constraints[1].version.string.." supports "..versions_message + else + return nil, "Matching "..query.name.." versions support "..versions_message + end + end + end + + return nil, "No results matching query were found." + elseif next(results, first_rock) then + -- Shouldn't happen as query must match only one package. + return nil, "Several rocks matched query." + elseif cfg.rocks_provided[query.name] ~= nil then + -- Do not install versions listed in cfg.rocks_provided. + return nil, "Rock "..query.name.." "..cfg.rocks_provided[query.name].. + " was found but it is provided by VM or 'rocks_provided' in the config file." + else + return pick_latest_version(query.name, results[first_rock]) + end +end + +--- Print a list of rocks/rockspecs on standard output. +-- @param results table: A table where keys are package names and versions +-- are tables matching version strings to an array of rocks servers. +-- @param porcelain boolean or nil: A flag to force machine-friendly output. +function search.print_results(results, porcelain) + assert(type(results) == "table") + assert(type(porcelain) == "boolean" or not porcelain) + + for package, versions in util.sortedpairs(results) do + if not porcelain then + util.printout(package) + end + for version, repos in util.sortedpairs(versions, deps.compare_versions) do + for _, repo in ipairs(repos) do + repo.repo = dir.normalize(repo.repo) + if porcelain then + util.printout(package, version, repo.arch, repo.repo) + else + util.printout(" "..version.." ("..repo.arch..") - "..repo.repo) + end + end + end + if not porcelain then + util.printout() + end + end +end + +--- Splits a list of search results into two lists, one for "source" results +-- to be used with the "build" command, and one for "binary" results to be +-- used with the "install" command. +-- @param results table: A search results table. +-- @return (table, table): Two tables, one for source and one for binary +-- results. +local function split_source_and_binary_results(results) + local sources, binaries = {}, {} + for name, versions in pairs(results) do + for version, repositories in pairs(versions) do + for _, repo in ipairs(repositories) do + local where = sources + if repo.arch == "all" or repo.arch == cfg.arch then + where = binaries + end + store_result(where, name, version, repo.arch, repo.repo) + end + end + end + return sources, binaries +end + +--- Given a name and optionally a version, try to find in the rocks +-- servers a single .src.rock or .rockspec file that satisfies +-- the request, and run the given function on it; or display to the +-- user possibilities if it couldn't narrow down a single match. +-- @param action function: A function that takes a .src.rock or +-- .rockspec URL as a parameter. +-- @param name string: A rock name +-- @param version string or nil: A version number may also be given. +-- @return The result of the action function, or nil and an error message. +function search.act_on_src_or_rockspec(action, name, version, ...) + assert(type(action) == "function") + assert(type(name) == "string") + assert(type(version) == "string" or not version) + + local query = search.make_query(name, version) + query.arch = "src|rockspec" + local url, err = search.find_suitable_rock(query) + if not url then + return nil, "Could not find a result named "..name..(version and " "..version or "")..": "..err + end + return action(url, ...) +end + +function search.pick_installed_rock(name, version, given_tree) + local results = {} + local query = search.make_query(name, version) + query.exact_name = true + local tree_map = {} + local trees = cfg.rocks_trees + if given_tree then + trees = { given_tree } + end + for _, tree in ipairs(trees) do + local rocks_dir = path.rocks_dir(tree) + tree_map[rocks_dir] = tree + search.manifest_search(results, rocks_dir, query) + end + + if not next(results) then -- + return nil,"cannot find package "..name.." "..(version or "").."\nUse 'list' to find installed rocks." + end + + version = nil + local repo_url + local package, versions = util.sortedpairs(results)() + --question: what do we do about multiple versions? This should + --give us the latest version on the last repo (which is usually the global one) + for vs, repositories in util.sortedpairs(versions, deps.compare_versions) do + if not version then version = vs end + for _, rp in ipairs(repositories) do repo_url = rp.repo end + end + + local repo = tree_map[repo_url] + return name, version, repo, repo_url +end + +--- Driver function for "search" command. +-- @param name string: A substring of a rock name to search. +-- @param version string or nil: a version may also be passed. +-- @return boolean or (nil, string): True if build was successful; nil and an +-- error message otherwise. +function search.command(flags, name, version) + if flags["all"] then + name, version = "", nil + end + + if type(name) ~= "string" and not flags["all"] then + return nil, "Enter name and version or use --all. "..util.see_help("search") + end + + local query = search.make_query(name:lower(), version) + query.exact_name = false + local results, err = search.search_repos(query) + local porcelain = flags["porcelain"] + util.title("Search results:", porcelain, "=") + local sources, binaries = split_source_and_binary_results(results) + if next(sources) and not flags["binary"] then + util.title("Rockspecs and source rocks:", porcelain) + search.print_results(sources, porcelain) + end + if next(binaries) and not flags["source"] then + util.title("Binary and pure-Lua rocks:", porcelain) + search.print_results(binaries, porcelain) + end + return true +end + +return search diff --git a/Utils/luarocks/lua/luarocks/show.lua b/Utils/luarocks/lua/luarocks/show.lua new file mode 100644 index 000000000..85c7edcbd --- /dev/null +++ b/Utils/luarocks/lua/luarocks/show.lua @@ -0,0 +1,152 @@ +--- Module implementing the LuaRocks "show" command. +-- Shows information about an installed rock. +local show = {} +package.loaded["luarocks.show"] = show + +local search = require("luarocks.search") +local cfg = require("luarocks.cfg") +local util = require("luarocks.util") +local path = require("luarocks.path") +local deps = require("luarocks.deps") +local fetch = require("luarocks.fetch") +local manif = require("luarocks.manif") + +util.add_run_function(show) +show.help_summary = "Show information about an installed rock." + +show.help = [[ + is an existing package name. +Without any flags, show all module information. +With these flags, return only the desired information: + +--home home page of project +--modules all modules provided by this package as used by require() +--deps packages this package depends on +--rockspec the full path of the rockspec file +--mversion the package version +--rock-tree local tree where rock is installed +--rock-dir data directory of the installed rock +]] + +local function keys_as_string(t, sep) + local keys = util.keys(t) + table.sort(keys) + return table.concat(keys, sep or " ") +end + +local function word_wrap(line) + local width = tonumber(os.getenv("COLUMNS")) or 80 + if width > 80 then width = 80 end + if #line > width then + local brk = width + while brk > 0 and line:sub(brk, brk) ~= " " do + brk = brk - 1 + end + if brk > 0 then + return line:sub(1, brk-1) .. "\n" .. word_wrap(line:sub(brk+1)) + end + end + return line +end + +local function format_text(text) + text = text:gsub("^%s*",""):gsub("%s$", ""):gsub("\n[ \t]+","\n"):gsub("([^\n])\n([^\n])","%1 %2") + local paragraphs = util.split_string(text, "\n\n") + for n, line in ipairs(paragraphs) do + paragraphs[n] = word_wrap(line) + end + return (table.concat(paragraphs, "\n\n"):gsub("%s$", "")) +end + +local function installed_rock_label(name, tree) + local installed, version + if cfg.rocks_provided[name] then + installed, version = true, cfg.rocks_provided[name] + else + installed, version = search.pick_installed_rock(name, nil, tree) + end + return installed and "(using "..version..")" or "(missing)" +end + +--- Driver function for "show" command. +-- @param name or nil: an existing package name. +-- @param version string or nil: a version may also be passed. +-- @return boolean: True if succeeded, nil on errors. +function show.command(flags, name, version) + if not name then + return nil, "Argument missing. "..util.see_help("show") + end + + local repo, repo_url + name, version, repo, repo_url = search.pick_installed_rock(name:lower(), version, flags["tree"]) + if not name then + return nil, version + end + + local directory = path.install_dir(name,version,repo) + local rockspec_file = path.rockspec_file(name, version, repo) + local rockspec, err = fetch.load_local_rockspec(rockspec_file) + if not rockspec then return nil,err end + + local descript = rockspec.description or {} + local manifest, err = manif.load_manifest(repo_url) + if not manifest then return nil,err end + local minfo = manifest.repository[name][version][1] + + if flags["rock-tree"] then util.printout(path.rocks_tree_to_string(repo)) + elseif flags["rock-dir"] then util.printout(directory) + elseif flags["home"] then util.printout(descript.homepage) + elseif flags["modules"] then util.printout(keys_as_string(minfo.modules, "\n")) + elseif flags["deps"] then util.printout(keys_as_string(minfo.dependencies)) + elseif flags["rockspec"] then util.printout(rockspec_file) + elseif flags["mversion"] then util.printout(version) + else + util.printout() + util.printout(rockspec.package.." "..rockspec.version.." - "..(descript.summary or "")) + util.printout() + if descript.detailed then + util.printout(format_text(descript.detailed)) + util.printout() + end + if descript.license then + util.printout("License: ", descript.license) + end + if descript.homepage then + util.printout("Homepage: ", descript.homepage) + end + util.printout("Installed in: ", path.rocks_tree_to_string(repo)) + if next(minfo.modules) then + util.printout() + util.printout("Modules:") + for mod, filename in util.sortedpairs(minfo.modules) do + util.printout("\t"..mod.." ("..path.which(mod, filename, name, version, repo, manifest)..")") + end + end + local direct_deps = {} + if #rockspec.dependencies > 0 then + util.printout() + util.printout("Depends on:") + for _, dep in ipairs(rockspec.dependencies) do + direct_deps[dep.name] = true + util.printout("\t"..deps.show_dep(dep).." "..installed_rock_label(dep.name, flags["tree"])) + end + end + local has_indirect_deps + for dep_name in util.sortedpairs(minfo.dependencies) do + if not direct_deps[dep_name] then + if not has_indirect_deps then + util.printout() + util.printout("Indirectly pulling:") + has_indirect_deps = true + end + + util.printout("\t"..dep_name.." "..installed_rock_label(dep_name, flags["tree"])) + end + end + util.printout() + end + return true +end + + +return show diff --git a/Utils/luarocks/lua/luarocks/site_config_5_1.lua b/Utils/luarocks/lua/luarocks/site_config_5_1.lua new file mode 100644 index 000000000..85ab3ddf4 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/site_config_5_1.lua @@ -0,0 +1,14 @@ +local site_config = {} +site_config.LUA_INCDIR=[[C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\include]] +site_config.LUA_LIBDIR=[[C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks]] +site_config.LUA_BINDIR=[[C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks]] +site_config.LUA_INTERPRETER=[[lua5.1]] +site_config.LUAROCKS_UNAME_S=[[MINGW]] +site_config.LUAROCKS_UNAME_M=[[x86]] +site_config.LUAROCKS_ROCKS_TREE=[[C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\systree]] +site_config.LUAROCKS_PREFIX=[[C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks]] +site_config.LUAROCKS_DOWNLOADER=[[wget]] +site_config.LUAROCKS_MD5CHECKER=[[md5sum]] +site_config.LUAROCKS_FORCE_CONFIG=true +site_config.LUAROCKS_SYSCONFDIR=[[C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks]] +return site_config diff --git a/Utils/luarocks/lua/luarocks/tools/patch.lua b/Utils/luarocks/lua/luarocks/tools/patch.lua new file mode 100644 index 000000000..44d00ef89 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/tools/patch.lua @@ -0,0 +1,700 @@ +--- Patch utility to apply unified diffs. +-- +-- http://lua-users.org/wiki/LuaPatch +-- +-- (c) 2008 David Manura, Licensed under the same terms as Lua (MIT license). +-- Code is heavilly based on the Python-based patch.py version 8.06-1 +-- Copyright (c) 2008 rainforce.org, MIT License +-- Project home: http://code.google.com/p/python-patch/ . +-- Version 0.1 + +local patch = {} + +local fs = require("luarocks.fs") +local util = require("luarocks.util") + +local io = io +local os = os +local string = string +local table = table +local format = string.format + +-- logging +local debugmode = false +local function debug(_) end +local function info(_) end +local function warning(s) io.stderr:write(s .. '\n') end + +-- Returns boolean whether string s2 starts with string s. +local function startswith(s, s2) + return s:sub(1, #s2) == s2 +end + +-- Returns boolean whether string s2 ends with string s. +local function endswith(s, s2) + return #s >= #s2 and s:sub(#s-#s2+1) == s2 +end + +-- Returns string s after filtering out any new-line characters from end. +local function endlstrip(s) + return s:gsub('[\r\n]+$', '') +end + +-- Returns shallow copy of table t. +local function table_copy(t) + local t2 = {} + for k,v in pairs(t) do t2[k] = v end + return t2 +end + +local function exists(filename) + local fh = io.open(filename) + local result = fh ~= nil + if fh then fh:close() end + return result +end +local function isfile() return true end --FIX? + +local function read_file(filename) + local fh, data, err, oserr + fh, err, oserr = io.open(filename, 'rb') + if not fh then return fh, err, oserr end + data, err, oserr = fh:read'*a' + fh:close() + if not data then return nil, err, oserr end + return data +end + +local function write_file(filename, data) + local fh, status, err, oserr + fh, err, oserr = io.open(filename 'wb') + if not fh then return fh, err, oserr end + status, err, oserr = fh:write(data) + fh:close() + if not status then return nil, err, oserr end + return true +end + +local function file_copy(src, dest) + local data, status, err, oserr + data, err, oserr = read_file(src) + if not data then return data, err, oserr end + status, err, oserr = write_file(dest) + if not status then return status, err, oserr end + return true +end + +local function string_as_file(s) + return { + at = 0, + str = s, + len = #s, + eof = false, + read = function(self, n) + if self.eof then return nil end + local chunk = self.str:sub(self.at, self.at + n - 1) + self.at = self.at + n + if self.at > self.len then + self.eof = true + end + return chunk + end, + close = function(self) + self.eof = true + end, + } +end + +-- +-- file_lines(f) is similar to f:lines() for file f. +-- The main difference is that read_lines includes +-- new-line character sequences ("\n", "\r\n", "\r"), +-- if any, at the end of each line. Embedded "\0" are also handled. +-- Caution: The newline behavior can depend on whether f is opened +-- in binary or ASCII mode. +-- (file_lines - version 20080913) +-- +local function file_lines(f) + local CHUNK_SIZE = 1024 + local buffer = "" + local pos_beg = 1 + return function() + local pos, chars + while 1 do + pos, chars = buffer:match('()([\r\n].)', pos_beg) + if pos or not f then + break + elseif f then + local chunk = f:read(CHUNK_SIZE) + if chunk then + buffer = buffer:sub(pos_beg) .. chunk + pos_beg = 1 + else + f = nil + end + end + end + if not pos then + pos = #buffer + elseif chars == '\r\n' then + pos = pos + 1 + end + local line = buffer:sub(pos_beg, pos) + pos_beg = pos + 1 + if #line > 0 then + return line + end + end +end + +local function match_linerange(line) + local m1, m2, m3, m4 = line:match("^@@ %-(%d+),(%d+) %+(%d+),(%d+)") + if not m1 then m1, m3, m4 = line:match("^@@ %-(%d+) %+(%d+),(%d+)") end + if not m1 then m1, m2, m3 = line:match("^@@ %-(%d+),(%d+) %+(%d+)") end + if not m1 then m1, m3 = line:match("^@@ %-(%d+) %+(%d+)") end + return m1, m2, m3, m4 +end + +function patch.read_patch(filename, data) + -- define possible file regions that will direct the parser flow + local state = 'header' + -- 'header' - comments before the patch body + -- 'filenames' - lines starting with --- and +++ + -- 'hunkhead' - @@ -R +R @@ sequence + -- 'hunkbody' + -- 'hunkskip' - skipping invalid hunk mode + + local all_ok = true + local lineends = {lf=0, crlf=0, cr=0} + local files = {source={}, target={}, hunks={}, fileends={}, hunkends={}} + local nextfileno = 0 + local nexthunkno = 0 --: even if index starts with 0 user messages + -- number hunks from 1 + + -- hunkinfo holds parsed values, hunkactual - calculated + local hunkinfo = { + startsrc=nil, linessrc=nil, starttgt=nil, linestgt=nil, + invalid=false, text={} + } + local hunkactual = {linessrc=nil, linestgt=nil} + + info(format("reading patch %s", filename)) + + local fp + if data then + fp = string_as_file(data) + else + fp = filename == '-' and io.stdin or assert(io.open(filename, "rb")) + end + local lineno = 0 + + for line in file_lines(fp) do + lineno = lineno + 1 + if state == 'header' then + if startswith(line, "--- ") then + state = 'filenames' + end + -- state is 'header' or 'filenames' + end + if state == 'hunkbody' then + -- skip hunkskip and hunkbody code until definition of hunkhead read + + if line:match"^[\r\n]*$" then + -- prepend space to empty lines to interpret them as context properly + line = " " .. line + end + + -- process line first + if line:match"^[- +\\]" then + -- gather stats about line endings + local he = files.hunkends[nextfileno] + if endswith(line, "\r\n") then + he.crlf = he.crlf + 1 + elseif endswith(line, "\n") then + he.lf = he.lf + 1 + elseif endswith(line, "\r") then + he.cr = he.cr + 1 + end + if startswith(line, "-") then + hunkactual.linessrc = hunkactual.linessrc + 1 + elseif startswith(line, "+") then + hunkactual.linestgt = hunkactual.linestgt + 1 + elseif startswith(line, "\\") then + -- nothing + else + hunkactual.linessrc = hunkactual.linessrc + 1 + hunkactual.linestgt = hunkactual.linestgt + 1 + end + table.insert(hunkinfo.text, line) + -- todo: handle \ No newline cases + else + warning(format("invalid hunk no.%d at %d for target file %s", + nexthunkno, lineno, files.target[nextfileno])) + -- add hunk status node + table.insert(files.hunks[nextfileno], table_copy(hunkinfo)) + files.hunks[nextfileno][nexthunkno].invalid = true + all_ok = false + state = 'hunkskip' + end + + -- check exit conditions + if hunkactual.linessrc > hunkinfo.linessrc or + hunkactual.linestgt > hunkinfo.linestgt + then + warning(format("extra hunk no.%d lines at %d for target %s", + nexthunkno, lineno, files.target[nextfileno])) + -- add hunk status node + table.insert(files.hunks[nextfileno], table_copy(hunkinfo)) + files.hunks[nextfileno][nexthunkno].invalid = true + state = 'hunkskip' + elseif hunkinfo.linessrc == hunkactual.linessrc and + hunkinfo.linestgt == hunkactual.linestgt + then + table.insert(files.hunks[nextfileno], table_copy(hunkinfo)) + state = 'hunkskip' + + -- detect mixed window/unix line ends + local ends = files.hunkends[nextfileno] + if (ends.cr~=0 and 1 or 0) + (ends.crlf~=0 and 1 or 0) + + (ends.lf~=0 and 1 or 0) > 1 + then + warning(format("inconsistent line ends in patch hunks for %s", + files.source[nextfileno])) + end + if debugmode then + local debuglines = {crlf=ends.crlf, lf=ends.lf, cr=ends.cr, + file=files.target[nextfileno], hunk=nexthunkno} + debug(format("crlf: %(crlf)d lf: %(lf)d cr: %(cr)d\t " .. + "- file: %(file)s hunk: %(hunk)d", debuglines)) + end + end + -- state is 'hunkbody' or 'hunkskip' + end + + if state == 'hunkskip' then + if match_linerange(line) then + state = 'hunkhead' + elseif startswith(line, "--- ") then + state = 'filenames' + if debugmode and #files.source > 0 then + debug(format("- %2d hunks for %s", #files.hunks[nextfileno], + files.source[nextfileno])) + end + end + -- state is 'hunkskip', 'hunkhead', or 'filenames' + end + local advance + if state == 'filenames' then + if startswith(line, "--- ") then + if util.array_contains(files.source, nextfileno) then + all_ok = false + warning(format("skipping invalid patch for %s", + files.source[nextfileno+1])) + table.remove(files.source, nextfileno+1) + -- double source filename line is encountered + -- attempt to restart from this second line + end + -- Accept a space as a terminator, like GNU patch does. + -- Breaks patches containing filenames with spaces... + -- FIXME Figure out what does GNU patch do in those cases. + local match = line:match("^%-%-%- ([^ \t\r\n]+)") + if not match then + all_ok = false + warning(format("skipping invalid filename at line %d", lineno+1)) + state = 'header' + else + table.insert(files.source, match) + end + elseif not startswith(line, "+++ ") then + if util.array_contains(files.source, nextfileno) then + all_ok = false + warning(format("skipping invalid patch with no target for %s", + files.source[nextfileno+1])) + table.remove(files.source, nextfileno+1) + else + -- this should be unreachable + warning("skipping invalid target patch") + end + state = 'header' + else + if util.array_contains(files.target, nextfileno) then + all_ok = false + warning(format("skipping invalid patch - double target at line %d", + lineno+1)) + table.remove(files.source, nextfileno+1) + table.remove(files.target, nextfileno+1) + nextfileno = nextfileno - 1 + -- double target filename line is encountered + -- switch back to header state + state = 'header' + else + -- Accept a space as a terminator, like GNU patch does. + -- Breaks patches containing filenames with spaces... + -- FIXME Figure out what does GNU patch do in those cases. + local re_filename = "^%+%+%+ ([^ \t\r\n]+)" + local match = line:match(re_filename) + if not match then + all_ok = false + warning(format( + "skipping invalid patch - no target filename at line %d", + lineno+1)) + state = 'header' + else + table.insert(files.target, match) + nextfileno = nextfileno + 1 + nexthunkno = 0 + table.insert(files.hunks, {}) + table.insert(files.hunkends, table_copy(lineends)) + table.insert(files.fileends, table_copy(lineends)) + state = 'hunkhead' + advance = true + end + end + end + -- state is 'filenames', 'header', or ('hunkhead' with advance) + end + if not advance and state == 'hunkhead' then + local m1, m2, m3, m4 = match_linerange(line) + if not m1 then + if not util.array_contains(files.hunks, nextfileno-1) then + all_ok = false + warning(format("skipping invalid patch with no hunks for file %s", + files.target[nextfileno])) + end + state = 'header' + else + hunkinfo.startsrc = tonumber(m1) + hunkinfo.linessrc = tonumber(m2 or 1) + hunkinfo.starttgt = tonumber(m3) + hunkinfo.linestgt = tonumber(m4 or 1) + hunkinfo.invalid = false + hunkinfo.text = {} + + hunkactual.linessrc = 0 + hunkactual.linestgt = 0 + + state = 'hunkbody' + nexthunkno = nexthunkno + 1 + end + -- state is 'header' or 'hunkbody' + end + end + if state ~= 'hunkskip' then + warning(format("patch file incomplete - %s", filename)) + all_ok = false + -- os.exit(?) + else + -- duplicated message when an eof is reached + if debugmode and #files.source > 0 then + debug(format("- %2d hunks for %s", #files.hunks[nextfileno], + files.source[nextfileno])) + end + end + + local sum = 0; for _,hset in ipairs(files.hunks) do sum = sum + #hset end + info(format("total files: %d total hunks: %d", #files.source, sum)) + fp:close() + return files, all_ok +end + +local function find_hunk(file, h, hno) + for fuzz=0,2 do + local lineno = h.startsrc + for i=0,#file do + local found = true + local location = lineno + for l, hline in ipairs(h.text) do + if l > fuzz then + -- todo: \ No newline at the end of file + if startswith(hline, " ") or startswith(hline, "-") then + local line = file[lineno] + lineno = lineno + 1 + if not line or #line == 0 then + found = false + break + end + if endlstrip(line) ~= endlstrip(hline:sub(2)) then + found = false + break + end + end + end + end + if found then + local offset = location - h.startsrc - fuzz + if offset ~= 0 then + warning(format("Hunk %d found at offset %d%s...", hno, offset, fuzz == 0 and "" or format(" (fuzz %d)", fuzz))) + end + h.startsrc = location + h.starttgt = h.starttgt + offset + for _=1,fuzz do + table.remove(h.text, 1) + table.remove(h.text, #h.text) + end + return true + end + lineno = i + end + end + return false +end + +local function load_file(filename) + local fp = assert(io.open(filename)) + local file = {} + local readline = file_lines(fp) + while true do + local line = readline() + if not line then break end + table.insert(file, line) + end + fp:close() + return file +end + +local function find_hunks(file, hunks) + for hno, h in ipairs(hunks) do + find_hunk(file, h, hno) + end +end + +local function check_patched(file, hunks) + local lineno = 1 + local ok, err = pcall(function() + if #file == 0 then + error('nomatch', 0) + end + for hno, h in ipairs(hunks) do + -- skip to line just before hunk starts + if #file < h.starttgt then + error('nomatch', 0) + end + lineno = h.starttgt + for _, hline in ipairs(h.text) do + -- todo: \ No newline at the end of file + if not startswith(hline, "-") and not startswith(hline, "\\") then + local line = file[lineno] + lineno = lineno + 1 + if #line == 0 then + error('nomatch', 0) + end + if endlstrip(line) ~= endlstrip(hline:sub(2)) then + warning(format("file is not patched - failed hunk: %d", hno)) + error('nomatch', 0) + end + end + end + end + end) + -- todo: display failed hunk, i.e. expected/found + return err ~= 'nomatch' +end + +local function patch_hunks(srcname, tgtname, hunks) + local src = assert(io.open(srcname, "rb")) + local tgt = assert(io.open(tgtname, "wb")) + + local src_readline = file_lines(src) + + -- todo: detect linefeeds early - in apply_files routine + -- to handle cases when patch starts right from the first + -- line and no lines are processed. At the moment substituted + -- lineends may not be the same at the start and at the end + -- of patching. Also issue a warning about mixed lineends + + local srclineno = 1 + local lineends = {['\n']=0, ['\r\n']=0, ['\r']=0} + for hno, h in ipairs(hunks) do + debug(format("processing hunk %d for file %s", hno, tgtname)) + -- skip to line just before hunk starts + while srclineno < h.startsrc do + local line = src_readline() + -- Python 'U' mode works only with text files + if endswith(line, "\r\n") then + lineends["\r\n"] = lineends["\r\n"] + 1 + elseif endswith(line, "\n") then + lineends["\n"] = lineends["\n"] + 1 + elseif endswith(line, "\r") then + lineends["\r"] = lineends["\r"] + 1 + end + tgt:write(line) + srclineno = srclineno + 1 + end + + for _,hline in ipairs(h.text) do + -- todo: check \ No newline at the end of file + if startswith(hline, "-") or startswith(hline, "\\") then + src_readline() + srclineno = srclineno + 1 + else + if not startswith(hline, "+") then + src_readline() + srclineno = srclineno + 1 + end + local line2write = hline:sub(2) + -- detect if line ends are consistent in source file + local sum = 0 + for _,v in pairs(lineends) do if v > 0 then sum=sum+1 end end + if sum == 1 then + local newline + for k,v in pairs(lineends) do if v ~= 0 then newline = k end end + tgt:write(endlstrip(line2write) .. newline) + else -- newlines are mixed or unknown + tgt:write(line2write) + end + end + end + end + for line in src_readline do + tgt:write(line) + end + tgt:close() + src:close() + return true +end + +local function strip_dirs(filename, strip) + if strip == nil then return filename end + for _=1,strip do + filename=filename:gsub("^[^/]*/", "") + end + return filename +end + +function patch.apply_patch(the_patch, strip) + local all_ok = true + local total = #the_patch.source + for fileno, filename in ipairs(the_patch.source) do + filename = strip_dirs(filename, strip) + local continue + local f2patch = filename + if not exists(f2patch) then + f2patch = strip_dirs(the_patch.target[fileno], strip) + f2patch = fs.absolute_name(f2patch) + if not exists(f2patch) then --FIX:if f2patch nil + warning(format("source/target file does not exist\n--- %s\n+++ %s", + filename, f2patch)) + all_ok = false + continue = true + end + end + if not continue and not isfile(f2patch) then + warning(format("not a file - %s", f2patch)) + all_ok = false + continue = true + end + if not continue then + + filename = f2patch + + info(format("processing %d/%d:\t %s", fileno, total, filename)) + + -- validate before patching + local hunks = the_patch.hunks[fileno] + local file = load_file(filename) + local hunkno = 1 + local hunk = hunks[hunkno] + local hunkfind = {} + local validhunks = 0 + local canpatch = false + local hunklineno + local isbreak + local lineno = 0 + + find_hunks(file, hunks) + + for _, line in ipairs(file) do + lineno = lineno + 1 + local continue + if not hunk or lineno < hunk.startsrc then + continue = true + elseif lineno == hunk.startsrc then + hunkfind = {} + for _,x in ipairs(hunk.text) do + if x:sub(1,1) == ' ' or x:sub(1,1) == '-' then + hunkfind[#hunkfind+1] = endlstrip(x:sub(2)) + end + end + hunklineno = 1 + + -- todo \ No newline at end of file + end + -- check hunks in source file + if not continue and lineno < hunk.startsrc + #hunkfind - 1 then + if endlstrip(line) == hunkfind[hunklineno] then + hunklineno = hunklineno + 1 + else + debug(format("hunk no.%d doesn't match source file %s", + hunkno, filename)) + -- file may be already patched, but check other hunks anyway + hunkno = hunkno + 1 + if hunkno <= #hunks then + hunk = hunks[hunkno] + continue = true + else + isbreak = true; break + end + end + end + -- check if processed line is the last line + if not continue and lineno == hunk.startsrc + #hunkfind - 1 then + debug(format("file %s hunk no.%d -- is ready to be patched", + filename, hunkno)) + hunkno = hunkno + 1 + validhunks = validhunks + 1 + if hunkno <= #hunks then + hunk = hunks[hunkno] + else + if validhunks == #hunks then + -- patch file + canpatch = true + isbreak = true; break + end + end + end + end + if not isbreak then + if hunkno <= #hunks then + warning(format("premature end of source file %s at hunk %d", + filename, hunkno)) + all_ok = false + end + end + if validhunks < #hunks then + if check_patched(file, hunks) then + warning(format("already patched %s", filename)) + else + warning(format("source file is different - %s", filename)) + all_ok = false + end + end + if canpatch then + local backupname = filename .. ".orig" + if exists(backupname) then + warning(format("can't backup original file to %s - aborting", + backupname)) + all_ok = false + else + assert(os.rename(filename, backupname)) + if patch_hunks(backupname, filename, hunks) then + warning(format("successfully patched %s", filename)) + assert(os.remove(backupname)) + else + warning(format("error patching file %s", filename)) + assert(file_copy(filename, filename .. ".invalid")) + warning(format("invalid version is saved to %s", + filename .. ".invalid")) + -- todo: proper rejects + assert(os.rename(backupname, filename)) + all_ok = false + end + end + end + + end -- if not continue + end -- for + -- todo: check for premature eof + return all_ok +end + +return patch diff --git a/Utils/luarocks/lua/luarocks/tools/tar.lua b/Utils/luarocks/lua/luarocks/tools/tar.lua new file mode 100644 index 000000000..637a6c953 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/tools/tar.lua @@ -0,0 +1,150 @@ + +--- A pure-Lua implementation of untar (unpacking .tar archives) +local tar = {} + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local util = require("luarocks.util") + +local blocksize = 512 + +local function get_typeflag(flag) + if flag == "0" or flag == "\0" then return "file" + elseif flag == "1" then return "link" + elseif flag == "2" then return "symlink" -- "reserved" in POSIX, "symlink" in GNU + elseif flag == "3" then return "character" + elseif flag == "4" then return "block" + elseif flag == "5" then return "directory" + elseif flag == "6" then return "fifo" + elseif flag == "7" then return "contiguous" -- "reserved" in POSIX, "contiguous" in GNU + elseif flag == "x" then return "next file" + elseif flag == "g" then return "global extended header" + elseif flag == "L" then return "long name" + elseif flag == "K" then return "long link name" + end + return "unknown" +end + +local function octal_to_number(octal) + local exp = 0 + local number = 0 + for i = #octal,1,-1 do + local digit = tonumber(octal:sub(i,i)) + if digit then + number = number + (digit * 8^exp) + exp = exp + 1 + end + end + return number +end + +local function checksum_header(block) + local sum = 256 + for i = 1,148 do + sum = sum + block:byte(i) + end + for i = 157,500 do + sum = sum + block:byte(i) + end + return sum +end + +local function nullterm(s) + return s:match("^[^%z]*") +end + +local function read_header_block(block) + local header = {} + header.name = nullterm(block:sub(1,100)) + header.mode = nullterm(block:sub(101,108)) + header.uid = octal_to_number(nullterm(block:sub(109,116))) + header.gid = octal_to_number(nullterm(block:sub(117,124))) + header.size = octal_to_number(nullterm(block:sub(125,136))) + header.mtime = octal_to_number(nullterm(block:sub(137,148))) + header.chksum = octal_to_number(nullterm(block:sub(149,156))) + header.typeflag = get_typeflag(block:sub(157,157)) + header.linkname = nullterm(block:sub(158,257)) + header.magic = block:sub(258,263) + header.version = block:sub(264,265) + header.uname = nullterm(block:sub(266,297)) + header.gname = nullterm(block:sub(298,329)) + header.devmajor = octal_to_number(nullterm(block:sub(330,337))) + header.devminor = octal_to_number(nullterm(block:sub(338,345))) + header.prefix = block:sub(346,500) + if header.magic ~= "ustar " and header.magic ~= "ustar\0" then + return false, "Invalid header magic "..header.magic + end + if header.version ~= "00" and header.version ~= " \0" then + return false, "Unknown version "..header.version + end + if not checksum_header(block) == header.chksum then + return false, "Failed header checksum" + end + return header +end + +function tar.untar(filename, destdir) + assert(type(filename) == "string") + assert(type(destdir) == "string") + + local tar_handle = io.open(filename, "r") + if not tar_handle then return nil, "Error opening file "..filename end + + local long_name, long_link_name + while true do + local block + repeat + block = tar_handle:read(blocksize) + until (not block) or checksum_header(block) > 256 + if not block then break end + local header, err = read_header_block(block) + if not header then + util.printerr(err) + end + + local file_data = tar_handle:read(math.ceil(header.size / blocksize) * blocksize):sub(1,header.size) + + if header.typeflag == "long name" then + long_name = nullterm(file_data) + elseif header.typeflag == "long link name" then + long_link_name = nullterm(file_data) + else + if long_name then + header.name = long_name + long_name = nil + end + if long_link_name then + header.name = long_link_name + long_link_name = nil + end + end + local pathname = dir.path(destdir, header.name) + if header.typeflag == "directory" then + local ok, err = fs.make_dir(pathname) + if not ok then return nil, err end + elseif header.typeflag == "file" then + local dirname = dir.dir_name(pathname) + if dirname ~= "" then + local ok, err = fs.make_dir(dirname) + if not ok then return nil, err end + end + local file_handle = io.open(pathname, "wb") + file_handle:write(file_data) + file_handle:close() + fs.set_time(pathname, header.mtime) + if fs.chmod then + fs.chmod(pathname, header.mode) + end + end + --[[ + for k,v in pairs(header) do + util.printout("[\""..tostring(k).."\"] = "..(type(v)=="number" and v or "\""..v:gsub("%z", "\\0").."\"")) + end + util.printout() + --]] + end + tar_handle:close() + return true +end + +return tar diff --git a/Utils/luarocks/lua/luarocks/tools/zip.lua b/Utils/luarocks/lua/luarocks/tools/zip.lua new file mode 100644 index 000000000..e6d9e36ae --- /dev/null +++ b/Utils/luarocks/lua/luarocks/tools/zip.lua @@ -0,0 +1,264 @@ + +--- A Lua implementation of .zip file archiving (used for creating .rock files), +-- using only lzlib or lua-lzib. +local zip = {} + +local zlib = require("zlib") +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") + +-- zlib module can be provided by both lzlib and lua-lzib packages. +-- Create a compatibility layer. +local zlib_compress, zlib_crc32 +if zlib._VERSION:match "^lua%-zlib" then + function zlib_compress(data) + return (zlib.deflate()(data, "finish")) + end + + function zlib_crc32(data) + return zlib.crc32()(data) + end +elseif zlib._VERSION:match "^lzlib" then + function zlib_compress(data) + return zlib.compress(data) + end + + function zlib_crc32(data) + return zlib.crc32(zlib.crc32(), data) + end +else + error("unknown zlib library", 0) +end + +local function number_to_bytestring(number, nbytes) + local out = {} + for _ = 1, nbytes do + local byte = number % 256 + table.insert(out, string.char(byte)) + number = (number - byte) / 256 + end + return table.concat(out) +end + +--- Begin a new file to be stored inside the zipfile. +-- @param self handle of the zipfile being written. +-- @param filename filenome of the file to be added to the zipfile. +-- @return true if succeeded, nil in case of failure. +local function zipwriter_open_new_file_in_zip(self, filename) + if self.in_open_file then + self:close_file_in_zip() + return nil + end + local lfh = {} + self.local_file_header = lfh + lfh.last_mod_file_time = 0 -- TODO + lfh.last_mod_file_date = 0 -- TODO + lfh.file_name_length = #filename + lfh.extra_field_length = 0 + lfh.file_name = filename:gsub("\\", "/") + lfh.external_attr = 0 -- TODO properly store permissions + self.in_open_file = true + return true +end + +--- Write data to the file currently being stored in the zipfile. +-- @param self handle of the zipfile being written. +-- @param data string containing full contents of the file. +-- @return true if succeeded, nil in case of failure. +local function zipwriter_write_file_in_zip(self, data) + if not self.in_open_file then + return nil + end + local lfh = self.local_file_header + local compressed = zlib_compress(data):sub(3, -5) + lfh.crc32 = zlib_crc32(data) + lfh.compressed_size = #compressed + lfh.uncompressed_size = #data + self.data = compressed + return true +end + +--- Complete the writing of a file stored in the zipfile. +-- @param self handle of the zipfile being written. +-- @return true if succeeded, nil in case of failure. +local function zipwriter_close_file_in_zip(self) + local zh = self.ziphandle + + if not self.in_open_file then + return nil + end + + -- Local file header + local lfh = self.local_file_header + lfh.offset = zh:seek() + zh:write(number_to_bytestring(0x04034b50, 4)) -- signature + zh:write(number_to_bytestring(20, 2)) -- version needed to extract: 2.0 + zh:write(number_to_bytestring(0, 2)) -- general purpose bit flag + zh:write(number_to_bytestring(8, 2)) -- compression method: deflate + zh:write(number_to_bytestring(lfh.last_mod_file_time, 2)) + zh:write(number_to_bytestring(lfh.last_mod_file_date, 2)) + zh:write(number_to_bytestring(lfh.crc32, 4)) + zh:write(number_to_bytestring(lfh.compressed_size, 4)) + zh:write(number_to_bytestring(lfh.uncompressed_size, 4)) + zh:write(number_to_bytestring(lfh.file_name_length, 2)) + zh:write(number_to_bytestring(lfh.extra_field_length, 2)) + zh:write(lfh.file_name) + + -- File data + zh:write(self.data) + + -- Data descriptor + zh:write(number_to_bytestring(lfh.crc32, 4)) + zh:write(number_to_bytestring(lfh.compressed_size, 4)) + zh:write(number_to_bytestring(lfh.uncompressed_size, 4)) + + table.insert(self.files, lfh) + self.in_open_file = false + + return true +end + +-- @return boolean or (boolean, string): true on success, +-- false and an error message on failure. +local function zipwriter_add(self, file) + local fin + local ok, err = self:open_new_file_in_zip(file) + if not ok then + err = "error in opening "..file.." in zipfile" + else + fin = io.open(fs.absolute_name(file), "rb") + if not fin then + ok = false + err = "error opening "..file.." for reading" + end + end + if ok then + local data = fin:read("*a") + if not data then + err = "error reading "..file + ok = false + else + ok = self:write_file_in_zip(data) + if not ok then + err = "error in writing "..file.." in the zipfile" + end + end + end + if fin then + fin:close() + end + if ok then + ok = self:close_file_in_zip() + if not ok then + err = "error in writing "..file.." in the zipfile" + end + end + return ok == true, err +end + +--- Complete the writing of the zipfile. +-- @param self handle of the zipfile being written. +-- @return true if succeeded, nil in case of failure. +local function zipwriter_close(self) + local zh = self.ziphandle + + local central_directory_offset = zh:seek() + + local size_of_central_directory = 0 + -- Central directory structure + for _, lfh in ipairs(self.files) do + zh:write(number_to_bytestring(0x02014b50, 4)) -- signature + zh:write(number_to_bytestring(3, 2)) -- version made by: UNIX + zh:write(number_to_bytestring(20, 2)) -- version needed to extract: 2.0 + zh:write(number_to_bytestring(0, 2)) -- general purpose bit flag + zh:write(number_to_bytestring(8, 2)) -- compression method: deflate + zh:write(number_to_bytestring(lfh.last_mod_file_time, 2)) + zh:write(number_to_bytestring(lfh.last_mod_file_date, 2)) + zh:write(number_to_bytestring(lfh.crc32, 4)) + zh:write(number_to_bytestring(lfh.compressed_size, 4)) + zh:write(number_to_bytestring(lfh.uncompressed_size, 4)) + zh:write(number_to_bytestring(lfh.file_name_length, 2)) + zh:write(number_to_bytestring(lfh.extra_field_length, 2)) + zh:write(number_to_bytestring(0, 2)) -- file comment length + zh:write(number_to_bytestring(0, 2)) -- disk number start + zh:write(number_to_bytestring(0, 2)) -- internal file attributes + zh:write(number_to_bytestring(lfh.external_attr, 4)) -- external file attributes + zh:write(number_to_bytestring(lfh.offset, 4)) -- relative offset of local header + zh:write(lfh.file_name) + size_of_central_directory = size_of_central_directory + 46 + lfh.file_name_length + end + + -- End of central directory record + zh:write(number_to_bytestring(0x06054b50, 4)) -- signature + zh:write(number_to_bytestring(0, 2)) -- number of this disk + zh:write(number_to_bytestring(0, 2)) -- number of disk with start of central directory + zh:write(number_to_bytestring(#self.files, 2)) -- total number of entries in the central dir on this disk + zh:write(number_to_bytestring(#self.files, 2)) -- total number of entries in the central dir + zh:write(number_to_bytestring(size_of_central_directory, 4)) + zh:write(number_to_bytestring(central_directory_offset, 4)) + zh:write(number_to_bytestring(0, 2)) -- zip file comment length + zh:close() + + return true +end + +--- Return a zip handle open for writing. +-- @param name filename of the zipfile to be created. +-- @return a zip handle, or nil in case of error. +function zip.new_zipwriter(name) + + local zw = {} + + zw.ziphandle = io.open(fs.absolute_name(name), "wb") + if not zw.ziphandle then + return nil + end + zw.files = {} + zw.in_open_file = false + + zw.add = zipwriter_add + zw.close = zipwriter_close + zw.open_new_file_in_zip = zipwriter_open_new_file_in_zip + zw.write_file_in_zip = zipwriter_write_file_in_zip + zw.close_file_in_zip = zipwriter_close_file_in_zip + + return zw +end + +--- Compress files in a .zip archive. +-- @param zipfile string: pathname of .zip archive to be created. +-- @param ... Filenames to be stored in the archive are given as +-- additional arguments. +-- @return boolean or (boolean, string): true on success, +-- false and an error message on failure. +function zip.zip(zipfile, ...) + local zw = zip.new_zipwriter(zipfile) + if not zw then + return nil, "error opening "..zipfile + end + + local ok, err + for _, file in pairs({...}) do + if fs.is_dir(file) then + for _, entry in pairs(fs.find(file)) do + local fullname = dir.path(file, entry) + if fs.is_file(fullname) then + ok, err = zw:add(fullname) + if not ok then break end + end + end + else + ok, err = zw:add(file) + if not ok then break end + end + end + + ok = zw:close() + if not ok then + return false, "error closing "..zipfile + end + return ok, err +end + + +return zip diff --git a/Utils/luarocks/lua/luarocks/type_check.lua b/Utils/luarocks/lua/luarocks/type_check.lua new file mode 100644 index 000000000..63c59ca21 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/type_check.lua @@ -0,0 +1,344 @@ +--- Type-checking functions. +-- Functions and definitions for doing a basic lint check on files +-- loaded by LuaRocks. +local type_check = {} +package.loaded["luarocks.type_check"] = type_check + +local cfg = require("luarocks.cfg") +local deps = require("luarocks.deps") + +type_check.rockspec_format = "1.1" + +local string_1 = { _type = "string" } +local number_1 = { _type = "number" } +local mandatory_string_1 = { _type = "string", _mandatory = true } + +-- Syntax for type-checking tables: +-- +-- A type-checking table describes typing data for a value. +-- Any key starting with an underscore has a special meaning: +-- _type (string) is the Lua type of the value. Default is "table". +-- _version (string) is the minimum rockspec_version that supports this value. Default is "1.0". +-- _mandatory (boolean) indicates if the value is a mandatory key in its container table. Default is false. +-- For "string" types only: +-- _pattern (string) is the string-matching pattern, valid for string types only. Default is ".*". +-- For "table" types only: +-- _any (table) is the type-checking table for unspecified keys, recursively checked. +-- _more (boolean) indicates that the table accepts unspecified keys and does not type-check them. +-- Any other string keys that don't start with an underscore represent known keys and are type-checking tables, recursively checked. + +local rockspec_types = { + rockspec_format = string_1, + package = mandatory_string_1, + version = { _type = "string", _pattern = "[%w.]+-[%d]+", _mandatory = true }, + description = { + summary = string_1, + detailed = string_1, + homepage = string_1, + license = string_1, + maintainer = string_1, + }, + dependencies = { + platforms = {}, -- recursively defined below + _any = string_1, + }, + supported_platforms = { + _any = string_1, + }, + external_dependencies = { + platforms = {}, -- recursively defined below + _any = { + program = string_1, + header = string_1, + library = string_1, + } + }, + source = { + _mandatory = true, + platforms = {}, -- recursively defined below + url = mandatory_string_1, + md5 = string_1, + file = string_1, + dir = string_1, + tag = string_1, + branch = string_1, + module = string_1, + cvs_tag = string_1, + cvs_module = string_1, + }, + build = { + platforms = {}, -- recursively defined below + type = string_1, + install = { + lua = { + _more = true + }, + lib = { + _more = true + }, + conf = { + _more = true + }, + bin = { + _more = true + } + }, + copy_directories = { + _any = string_1, + }, + _more = true, + _mandatory = true + }, + hooks = { + platforms = {}, -- recursively defined below + post_install = string_1, + }, + deploy = { + _version = "1.1", + wrap_bin_scripts = { _type = "boolean", _version = "1.1" }, + } +} + +type_check.rockspec_order = {"rockspec_format", "package", "version", + { "source", { "url", "tag", "branch", "md5" } }, + { "description", {"summary", "detailed", "homepage", "license" } }, + "supported_platforms", "dependencies", "external_dependencies", + { "build", {"type", "modules", "copy_directories", "platforms"} }, + "hooks"} + +rockspec_types.build.platforms._any = rockspec_types.build +rockspec_types.dependencies.platforms._any = rockspec_types.dependencies +rockspec_types.external_dependencies.platforms._any = rockspec_types.external_dependencies +rockspec_types.source.platforms._any = rockspec_types.source +rockspec_types.hooks.platforms._any = rockspec_types.hooks + +local manifest_types = { + repository = { + _mandatory = true, + -- packages + _any = { + -- versions + _any = { + -- items + _any = { + arch = mandatory_string_1, + modules = { _any = string_1 }, + commands = { _any = string_1 }, + dependencies = { _any = string_1 }, + -- TODO: to be extended with more metadata. + } + } + } + }, + modules = { + _mandatory = true, + -- modules + _any = { + -- providers + _any = string_1 + } + }, + commands = { + _mandatory = true, + -- modules + _any = { + -- commands + _any = string_1 + } + }, + dependencies = { + -- each module + _any = { + -- each version + _any = { + -- each dependency + _any = { + name = string_1, + constraints = { + _any = { + no_upgrade = { _type = "boolean" }, + op = string_1, + version = { + string = string_1, + _any = number_1, + } + } + } + } + } + } + } +} + +local function check_version(version, typetbl, context) + local typetbl_version = typetbl._version or "1.0" + if deps.compare_versions(typetbl_version, version) then + if context == "" then + return nil, "Invalid rockspec_format version number in rockspec? Please fix rockspec accordingly." + else + return nil, context.." is not supported in rockspec format "..version.." (requires version "..typetbl_version.."), please fix the rockspec_format field accordingly." + end + end + return true +end + +local type_check_table + +--- Type check an object. +-- The object is compared against an archetypical value +-- matching the expected type -- the actual values don't matter, +-- only their types. Tables are type checked recursively. +-- @param version string: The version of the item. +-- @param item any: The object being checked. +-- @param typetbl any: The type-checking table for the object. +-- @param context string: A string indicating the "context" where the +-- error occurred (the full table path), for error messages. +-- @return boolean or (nil, string): true if type checking +-- succeeded, or nil and an error message if it failed. +-- @see type_check_table +local function type_check_item(version, item, typetbl, context) + assert(type(version) == "string") + + local ok, err = check_version(version, typetbl, context) + if not ok then + return nil, err + end + + local item_type = type(item) or "nil" + local expected_type = typetbl._type or "table" + + if expected_type == "number" then + if not tonumber(item) then + return nil, "Type mismatch on field "..context..": expected a number" + end + elseif expected_type == "string" then + if item_type ~= "string" then + return nil, "Type mismatch on field "..context..": expected a string, got "..item_type + end + if typetbl._pattern then + if not item:match("^"..typetbl._pattern.."$") then + return nil, "Type mismatch on field "..context..": invalid value "..item.." does not match '"..typetbl._pattern.."'" + end + end + elseif expected_type == "table" then + if item_type ~= expected_type then + return nil, "Type mismatch on field "..context..": expected a table" + else + return type_check_table(version, item, typetbl, context) + end + elseif item_type ~= expected_type then + return nil, "Type mismatch on field "..context..": expected "..expected_type + end + return true +end + +local function mkfield(context, field) + if context == "" then + return tostring(field) + elseif type(field) == "string" then + return context.."."..field + else + return context.."["..tostring(field).."]" + end +end + +--- Type check the contents of a table. +-- The table's contents are compared against a reference table, +-- which contains the recognized fields, with archetypical values +-- matching the expected types -- the actual values of items in the +-- reference table don't matter, only their types (ie, for field x +-- in tbl that is correctly typed, type(tbl.x) == type(types.x)). +-- If the reference table contains a field called MORE, then +-- unknown fields in the checked table are accepted. +-- If it contains a field called ANY, then its type will be +-- used to check any unknown fields. If a field is prefixed +-- with MUST_, it is mandatory; its absence from the table is +-- a type error. +-- Tables are type checked recursively. +-- @param version string: The version of tbl. +-- @param tbl table: The table to be type checked. +-- @param typetbl table: The type-checking table, containing +-- values for recognized fields in the checked table. +-- @param context string: A string indicating the "context" where the +-- error occurred (such as the name of the table the item is a part of), +-- to be used by error messages. +-- @return boolean or (nil, string): true if type checking +-- succeeded, or nil and an error message if it failed. +type_check_table = function(version, tbl, typetbl, context) + assert(type(version) == "string") + assert(type(tbl) == "table") + assert(type(typetbl) == "table") + + local ok, err = check_version(version, typetbl, context) + if not ok then + return nil, err + end + + for k, v in pairs(tbl) do + local t = typetbl[k] or typetbl._any + if t then + local ok, err = type_check_item(version, v, t, mkfield(context, k)) + if not ok then return nil, err end + elseif typetbl._more then + -- Accept unknown field + else + if not cfg.accept_unknown_fields then + return nil, "Unknown field "..k + end + end + end + for k, v in pairs(typetbl) do + if k:sub(1,1) ~= "_" and v._mandatory then + if not tbl[k] then + return nil, "Mandatory field "..mkfield(context, k).." is missing." + end + end + end + return true +end + +local function check_undeclared_globals(globals, typetbl) + local undeclared = {} + for glob, _ in pairs(globals) do + if not (typetbl[glob] or typetbl["MUST_"..glob]) then + table.insert(undeclared, glob) + end + end + if #undeclared == 1 then + return nil, "Unknown variable: "..undeclared[1] + elseif #undeclared > 1 then + return nil, "Unknown variables: "..table.concat(undeclared, ", ") + end + return true +end + +--- Type check a rockspec table. +-- Verify the correctness of elements from a +-- rockspec table, reporting on unknown fields and type +-- mismatches. +-- @return boolean or (nil, string): true if type checking +-- succeeded, or nil and an error message if it failed. +function type_check.type_check_rockspec(rockspec, globals) + assert(type(rockspec) == "table") + if not rockspec.rockspec_format then + rockspec.rockspec_format = "1.0" + end + local ok, err = check_undeclared_globals(globals, rockspec_types) + if not ok then return nil, err end + return type_check_table(rockspec.rockspec_format, rockspec, rockspec_types, "") +end + +--- Type check a manifest table. +-- Verify the correctness of elements from a +-- manifest table, reporting on unknown fields and type +-- mismatches. +-- @return boolean or (nil, string): true if type checking +-- succeeded, or nil and an error message if it failed. +function type_check.type_check_manifest(manifest, globals) + assert(type(manifest) == "table") + local ok, err = check_undeclared_globals(globals, manifest_types) + if not ok then return nil, err end + return type_check_table("1.0", manifest, manifest_types, "") +end + +return type_check diff --git a/Utils/luarocks/lua/luarocks/unpack.lua b/Utils/luarocks/lua/luarocks/unpack.lua new file mode 100644 index 000000000..0922f9b90 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/unpack.lua @@ -0,0 +1,166 @@ + +--- Module implementing the LuaRocks "unpack" command. +-- Unpack the contents of a rock. +local unpack = {} +package.loaded["luarocks.unpack"] = unpack + +local fetch = require("luarocks.fetch") +local fs = require("luarocks.fs") +local util = require("luarocks.util") +local build = require("luarocks.build") +local dir = require("luarocks.dir") +local cfg = require("luarocks.cfg") + +util.add_run_function(unpack) +unpack.help_summary = "Unpack the contents of a rock." +unpack.help_arguments = "[--force] {| []}" +unpack.help = [[ +Unpacks the contents of a rock in a newly created directory. +Argument may be a rock file, or the name of a rock in a rocks server. +In the latter case, the app version may be given as a second argument. + +--force Unpack files even if the output directory already exists. +]] + +--- Load a rockspec file to the given directory, fetches the source +-- files specified in the rockspec, and unpack them inside the directory. +-- @param rockspec_file string: The URL for a rockspec file. +-- @param dir_name string: The directory where to store and unpack files. +-- @return table or (nil, string): the loaded rockspec table or +-- nil and an error message. +local function unpack_rockspec(rockspec_file, dir_name) + assert(type(rockspec_file) == "string") + assert(type(dir_name) == "string") + + local rockspec, err = fetch.load_rockspec(rockspec_file) + if not rockspec then + return nil, "Failed loading rockspec "..rockspec_file..": "..err + end + local ok, err = fs.change_dir(dir_name) + if not ok then return nil, err end + local ok, sources_dir = fetch.fetch_sources(rockspec, true, ".") + if not ok then + return nil, sources_dir + end + ok, err = fs.change_dir(sources_dir) + if not ok then return nil, err end + ok, err = build.apply_patches(rockspec) + fs.pop_dir() + if not ok then return nil, err end + return rockspec +end + +--- Load a .rock file to the given directory and unpack it inside it. +-- @param rock_file string: The URL for a .rock file. +-- @param dir_name string: The directory where to unpack. +-- @param kind string: the kind of rock file, as in the second-level +-- extension in the rock filename (eg. "src", "all", "linux-x86") +-- @return table or (nil, string): the loaded rockspec table or +-- nil and an error message. +local function unpack_rock(rock_file, dir_name, kind) + assert(type(rock_file) == "string") + assert(type(dir_name) == "string") + + local ok, err, errcode = fetch.fetch_and_unpack_rock(rock_file, dir_name) + if not ok then + return nil, "Failed unzipping rock "..rock_file, errcode + end + ok, err = fs.change_dir(dir_name) + if not ok then return nil, err end + local rockspec_file = dir_name..".rockspec" + local rockspec, err = fetch.load_rockspec(rockspec_file) + if not rockspec then + return nil, "Failed loading rockspec "..rockspec_file..": "..err + end + if kind == "src" then + if rockspec.source.file then + local ok, err = fs.unpack_archive(rockspec.source.file) + if not ok then + return nil, err + end + ok, err = fs.change_dir(rockspec.source.dir) + if not ok then return nil, err end + ok, err = build.apply_patches(rockspec) + fs.pop_dir() + if not ok then return nil, err end + end + end + return rockspec +end + +--- Create a directory and perform the necessary actions so that +-- the sources for the rock and its rockspec are unpacked inside it, +-- laid out properly so that the 'make' command is able to build the module. +-- @param file string: A rockspec or .rock URL. +-- @return boolean or (nil, string): true if successful or nil followed +-- by an error message. +local function run_unpacker(file, force) + assert(type(file) == "string") + + local base_name = dir.base_name(file) + local dir_name, kind, extension = base_name:match("(.*)%.([^.]+)%.(rock)$") + if not extension then + dir_name, extension = base_name:match("(.*)%.(rockspec)$") + kind = "rockspec" + end + if not extension then + return nil, file.." does not seem to be a valid filename." + end + + local exists = fs.exists(dir_name) + if exists and not force then + return nil, "Directory "..dir_name.." already exists." + end + if not exists then + local ok, err = fs.make_dir(dir_name) + if not ok then return nil, err end + end + local rollback = util.schedule_function(fs.delete, fs.absolute_name(dir_name)) + + local rockspec, err + if extension == "rock" then + rockspec, err = unpack_rock(file, dir_name, kind) + elseif extension == "rockspec" then + rockspec, err = unpack_rockspec(file, dir_name) + end + if not rockspec then + return nil, err + end + if kind == "src" or kind == "rockspec" then + if rockspec.source.dir ~= "." then + local ok = fs.copy(rockspec.local_filename, rockspec.source.dir, cfg.perm_read) + if not ok then + return nil, "Failed copying unpacked rockspec into unpacked source directory." + end + end + util.printout() + util.printout("Done. You may now enter directory ") + util.printout(dir.path(dir_name, rockspec.source.dir)) + util.printout("and type 'luarocks make' to build.") + end + util.remove_scheduled_function(rollback) + return true +end + +--- Driver function for the "unpack" command. +-- @param name string: may be a rock filename, for unpacking a +-- rock file or the name of a rock to be fetched and unpacked. +-- @param version string or nil: if the name of a package is given, a +-- version may also be passed. +-- @return boolean or (nil, string): true if successful or nil followed +-- by an error message. +function unpack.command(flags, name, version) + assert(type(version) == "string" or not version) + if type(name) ~= "string" then + return nil, "Argument missing. "..util.see_help("unpack") + end + + if name:match(".*%.rock") or name:match(".*%.rockspec") then + return run_unpacker(name, flags["force"]) + else + local search = require("luarocks.search") + return search.act_on_src_or_rockspec(run_unpacker, name:lower(), version) + end +end + +return unpack diff --git a/Utils/luarocks/lua/luarocks/upload.lua b/Utils/luarocks/lua/luarocks/upload.lua new file mode 100644 index 000000000..7c0c416ce --- /dev/null +++ b/Utils/luarocks/lua/luarocks/upload.lua @@ -0,0 +1,95 @@ + +local upload = {} + +local util = require("luarocks.util") +local fetch = require("luarocks.fetch") +local pack = require("luarocks.pack") +local cfg = require("luarocks.cfg") +local Api = require("luarocks.upload.api") + +util.add_run_function(upload) +upload.help_summary = "Upload a rockspec to the public rocks repository." +upload.help_arguments = "[--skip-pack] [--api-key=] [--force] " +upload.help = [[ + Pack a source rock file (.src.rock extension), + upload rockspec and source rock to server. +--skip-pack Do not pack and send source rock. +--api-key= Give it an API key. It will be stored for subsequent uses. +--force Replace existing rockspec if the same revision of + a module already exists. This should be used only + in case of upload mistakes: when updating a rockspec, + increment the revision number instead. +]] + +function upload.command(flags, fname) + if not fname then + return nil, "Missing rockspec. "..util.see_help("upload") + end + + local api, err = Api.new(flags) + if not api then + return nil, err + end + if cfg.verbose then + api.debug = true + end + + local rockspec, err, errcode = fetch.load_rockspec(fname) + if err then + return nil, err, errcode + end + + util.printout("Sending " .. tostring(fname) .. " ...") + local res, err = api:method("check_rockspec", { + package = rockspec.package, + version = rockspec.version + }) + if not res then return nil, err end + + if not res.module then + util.printout("Will create new module (" .. tostring(rockspec.package) .. ")") + end + if res.version and not flags["force"] then + return nil, "Revision "..rockspec.version.." already exists on the server. "..util.see_help("upload") + end + + local rock_fname + if not flags["skip-pack"] and not rockspec.version:match("^scm") then + util.printout("Packing " .. tostring(rockspec.package)) + rock_fname, err = pack.pack_source_rock(fname) + if not rock_fname then + return nil, err + end + end + + local multipart = require("luarocks.upload.multipart") + + res, err = api:method("upload", nil, { + rockspec_file = multipart.new_file(fname) + }) + if not res then return nil, err end + + if res.is_new and #res.manifests == 0 then + util.printerr("Warning: module not added to root manifest due to name taken.") + end + + local module_url = res.module_url + + if rock_fname then + if (not res.version) or (not res.version.id) then + return nil, "Invalid response from server." + end + util.printout(("Sending " .. tostring(rock_fname) .. " ...")) + res, err = api:method("upload_rock/" .. ("%d"):format(res.version.id), nil, { + rock_file = multipart.new_file(rock_fname) + }) + if not res then return nil, err end + end + + util.printout() + util.printout("Done: " .. tostring(module_url)) + util.printout() + return true +end + +return upload diff --git a/Utils/luarocks/lua/luarocks/upload/api.lua b/Utils/luarocks/lua/luarocks/upload/api.lua new file mode 100644 index 000000000..ba657186a --- /dev/null +++ b/Utils/luarocks/lua/luarocks/upload/api.lua @@ -0,0 +1,284 @@ + +local api = {} + +local cfg = require("luarocks.cfg") +local fs = require("luarocks.fs") +local util = require("luarocks.util") +local persist = require("luarocks.persist") +local multipart = require("luarocks.upload.multipart") + +local Api = {} + +local function upload_config_file() + local conf = cfg.which_config() + if not conf.user.file then + return nil + end + return (conf.user.file:gsub("/[^/]+$", "/upload_config.lua")) +end + +function Api:load_config() + local upload_conf = upload_config_file() + if not upload_conf then return nil end + local cfg, err = persist.load_into_table(upload_conf) + return cfg +end + +function Api:save_config() + -- Test configuration before saving it. + local res, err = self:raw_method("status") + if not res then + return nil, err + end + if res.errors then + util.printerr("Server says: " .. tostring(res.errors[1])) + return + end + local upload_conf = upload_config_file() + if not upload_conf then return nil end + persist.save_from_table(upload_conf, self.config) + fs.chmod(upload_conf, "0600") +end + +function Api:check_version() + if not self._server_tool_version then + local tool_version = cfg.upload.tool_version + local res, err = self:request(tostring(self.config.server) .. "/api/tool_version", { + current = tool_version + }) + if not res then + return nil, err + end + if not res.version then + return nil, "failed to fetch tool version" + end + self._server_tool_version = res.version + if res.force_update then + return nil, "Your upload client is too out of date to continue, please upgrade LuaRocks." + end + if res.version ~= tool_version then + util.printerr("Warning: Your LuaRocks is out of date, consider upgrading.") + end + end + return true +end + +function Api:method(...) + local res, err = self:raw_method(...) + if not res then + return nil, err + end + if res.errors then + if res.errors[1] == "Invalid key" then + return nil, res.errors[1] .. " (use the --api-key flag to change)" + end + local msg = table.concat(res.errors, ", ") + return nil, "API Failed: " .. msg + end + return res +end + +function Api:raw_method(path, ...) + self:check_version() + local url = tostring(self.config.server) .. "/api/" .. tostring(cfg.upload.api_version) .. "/" .. tostring(self.config.key) .. "/" .. tostring(path) + return self:request(url, ...) +end + +local function encode_query_string(t, sep) + if sep == nil then + sep = "&" + end + local i = 0 + local buf = { } + for k, v in pairs(t) do + if type(k) == "number" and type(v) == "table" then + k, v = v[1], v[2] + end + buf[i + 1] = multipart.url_escape(k) + buf[i + 2] = "=" + buf[i + 3] = multipart.url_escape(v) + buf[i + 4] = sep + i = i + 4 + end + buf[i] = nil + return table.concat(buf) +end + +-- An ode to the multitude of JSON libraries out there... +local function require_json() + local list = { "cjson", "dkjson", "json" } + for _, lib in ipairs(list) do + local json_ok, json = pcall(require, lib) + if json_ok then + pcall(json.use_lpeg) -- optional feature in dkjson + return json_ok, json + end + end + local errmsg = "Failed loading " + for i, name in ipairs(list) do + if i == #list then + errmsg = errmsg .."and '"..name.."'. Use 'luarocks search ' to search for a library and 'luarocks install ' to install one." + else + errmsg = errmsg .."'"..name.."', " + end + end + return nil, errmsg +end + +local function redact_api_url(url) + url = tostring(url) + return (url:gsub(".*/api/[^/]+/[^/]+", "")) or "" +end + +local ltn12_ok, ltn12 = pcall(require, "ltn12") +if not ltn12_ok then -- If not using LuaSocket and/or LuaSec... + +function Api:request(url, params, post_params) + local vars = cfg.variables + local json_ok, json = require_json() + if not json_ok then return nil, "A JSON library is required for this command. "..json end + + if cfg.downloader == "wget" then + local curl_ok, err = fs.is_tool_available(vars.CURL, "curl") + if not curl_ok then + return nil, err + end + end + + if not self.config.key then + return nil, "Must have API key before performing any actions." + end + if params and next(params) then + url = url .. ("?" .. encode_query_string(params)) + end + local method = "GET" + local out + local tmpfile = fs.tmpname() + if post_params then + method = "POST" + local curl_cmd = fs.Q(vars.CURL).." -f -k -L --silent --user-agent \""..cfg.user_agent.." via curl\" " + for k,v in pairs(post_params) do + local var = v + if type(v) == "table" then + var = "@"..v.fname + end + curl_cmd = curl_cmd .. "--form \""..k.."="..var.."\" " + end + if cfg.connection_timeout and cfg.connection_timeout > 0 then + curl_cmd = curl_cmd .. "--connect-timeout "..tonumber(cfg.connection_timeout).." " + end + local ok = fs.execute_string(curl_cmd..fs.Q(url).." -o "..fs.Q(tmpfile)) + if not ok then + return nil, "API failure: " .. redact_api_url(url) + end + else + local ok, err = fs.download(url, tmpfile) + if not ok then + return nil, "API failure: " .. tostring(err) .. " - " .. redact_api_url(url) + end + end + + local tmpfd = io.open(tmpfile) + if not tmpfd then + os.remove(tmpfile) + return nil, "API failure reading temporary file - " .. redact_api_url(url) + end + out = tmpfd:read("*a") + tmpfd:close() + os.remove(tmpfile) + + if self.debug then + util.printout("[" .. tostring(method) .. " via curl] " .. redact_api_url(url) .. " ... ") + end + + return json.decode(out) +end + +else -- use LuaSocket and LuaSec + +local warned_luasec = false + +function Api:request(url, params, post_params) + local json_ok, json = require_json() + if not json_ok then return nil, "A JSON library is required for this command. "..json end + local server = tostring(self.config.server) + local http_ok, http + local via = "luasocket" + if server:match("^https://") then + http_ok, http = pcall(require, "ssl.https") + if http_ok then + via = "luasec" + else + if not warned_luasec then + util.printerr("LuaSec is not available; using plain HTTP. Install 'luasec' to enable HTTPS.") + warned_luasec = true + end + http_ok, http = pcall(require, "socket.http") + url = url:gsub("^https", "http") + via = "luasocket" + end + else + http_ok, http = pcall(require, "socket.http") + end + if not http_ok then + return nil, "Failed loading socket library!" + end + + if not self.config.key then + return nil, "Must have API key before performing any actions." + end + local body + local headers = {} + if params and next(params) then + url = url .. ("?" .. encode_query_string(params)) + end + if post_params then + local boundary + body, boundary = multipart.encode(post_params) + headers["Content-length"] = #body + headers["Content-type"] = "multipart/form-data; boundary=" .. tostring(boundary) + end + local method = post_params and "POST" or "GET" + if self.debug then + util.printout("[" .. tostring(method) .. " via "..via.."] " .. redact_api_url(url) .. " ... ") + end + local out = {} + local _, status = http.request({ + url = url, + headers = headers, + method = method, + sink = ltn12.sink.table(out), + source = body and ltn12.source.string(body) + }) + if self.debug then + util.printout(tostring(status)) + end + if status ~= 200 then + return nil, "API returned " .. tostring(status) .. " - " .. redact_api_url(url) + end + return json.decode(table.concat(out)) +end + +end + +function api.new(flags) + local self = {} + setmetatable(self, { __index = Api }) + self.config = self:load_config() or {} + self.config.server = flags["server"] or self.config.server or cfg.upload.server + self.config.version = self.config.version or cfg.upload.version + self.config.key = flags["api-key"] or self.config.key + self.debug = flags["debug"] + if not self.config.key then + return nil, "You need an API key to upload rocks.\n" .. + "Navigate to "..self.config.server.."/settings to get a key\n" .. + "and then pass it through the --api-key= flag." + end + if flags["api-key"] then + self:save_config() + end + return self +end + +return api + diff --git a/Utils/luarocks/lua/luarocks/upload/multipart.lua b/Utils/luarocks/lua/luarocks/upload/multipart.lua new file mode 100644 index 000000000..aad2e4398 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/upload/multipart.lua @@ -0,0 +1,111 @@ + +local multipart = {} + +local File = {} + +local unpack = unpack or table.unpack + +math.randomseed(os.time()) + +-- socket.url.escape(s) from LuaSocket 3.0rc1 +function multipart.url_escape(s) + return (string.gsub(s, "([^A-Za-z0-9_])", function(c) + return string.format("%%%02x", string.byte(c)) + end)) +end + +function File:mime() + if not self.mimetype then + local mimetypes_ok, mimetypes = pcall(require, "mimetypes") + if mimetypes_ok then + self.mimetype = mimetypes.guess(self.fname) + end + self.mimetype = self.mimetype or "application/octet-stream" + end + return self.mimetype +end + +function File:content() + local fd = io.open(self.fname, "rb") + if not fd then + return nil, "Failed to open file: "..self.fname + end + local data = fd:read("*a") + fd:close() + return data +end + +local function rand_string(len) + local shuffled = {} + for i = 1, len do + local r = math.random(97, 122) + if math.random() >= 0.5 then + r = r - 32 + end + shuffled[i] = r + end + return string.char(unpack(shuffled)) +end + +-- multipart encodes params +-- returns encoded string,boundary +-- params is an a table of tuple tables: +-- params = { +-- {key1, value2}, +-- {key2, value2}, +-- key3: value3 +-- } +function multipart.encode(params) + local tuples = { } + for i = 1, #params do + tuples[i] = params[i] + end + for k,v in pairs(params) do + if type(k) == "string" then + table.insert(tuples, {k, v}) + end + end + local chunks = {} + for _, tuple in ipairs(tuples) do + local k,v = unpack(tuple) + k = multipart.url_escape(k) + local buffer = { 'Content-Disposition: form-data; name="' .. k .. '"' } + local content + if type(v) == "table" and v.__class == File then + buffer[1] = buffer[1] .. ('; filename="' .. v.fname:gsub(".*/", "") .. '"') + table.insert(buffer, "Content-type: " .. v:mime()) + content = v:content() + else + content = v + end + table.insert(buffer, "") + table.insert(buffer, content) + table.insert(chunks, table.concat(buffer, "\r\n")) + end + local boundary + while not boundary do + boundary = "Boundary" .. rand_string(16) + for _, chunk in ipairs(chunks) do + if chunk:find(boundary) then + boundary = nil + break + end + end + end + local inner = "\r\n--" .. boundary .. "\r\n" + return table.concat({ "--", boundary, "\r\n", + table.concat(chunks, inner), + "\r\n", "--", boundary, "--", "\r\n" }), boundary +end + +function multipart.new_file(fname, mime) + local self = {} + setmetatable(self, { __index = File }) + self.__class = File + self.fname = fname + self.mimetype = mime + return self +end + +return multipart + diff --git a/Utils/luarocks/lua/luarocks/util.lua b/Utils/luarocks/lua/luarocks/util.lua new file mode 100644 index 000000000..c9fb7d637 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/util.lua @@ -0,0 +1,714 @@ + +--- Assorted utilities for managing tables, plus a scheduler for rollback functions. +-- Does not requires modules directly (only as locals +-- inside specific functions) to avoid interdependencies, +-- as this is used in the bootstrapping stage of luarocks.cfg. + +local util = {} + +local unpack = unpack or table.unpack + +local scheduled_functions = {} +local debug = require("debug") + +--- Schedule a function to be executed upon program termination. +-- This is useful for actions such as deleting temporary directories +-- or failure rollbacks. +-- @param f function: Function to be executed. +-- @param ... arguments to be passed to function. +-- @return table: A token representing the scheduled execution, +-- which can be used to remove the item later from the list. +function util.schedule_function(f, ...) + assert(type(f) == "function") + + local item = { fn = f, args = {...} } + table.insert(scheduled_functions, item) + return item +end + +--- Unschedule a function. +-- This is useful for cancelling a rollback of a completed operation. +-- @param item table: The token representing the scheduled function that was +-- returned from the schedule_function call. +function util.remove_scheduled_function(item) + for k, v in pairs(scheduled_functions) do + if v == item then + table.remove(scheduled_functions, k) + return + end + end +end + +--- Execute scheduled functions. +-- Some calls create temporary files and/or directories and register +-- corresponding cleanup functions. Calling this function will run +-- these function, erasing temporaries. +-- Functions are executed in the inverse order they were scheduled. +function util.run_scheduled_functions() + local fs = require("luarocks.fs") + fs.change_dir_to_root() + for i = #scheduled_functions, 1, -1 do + local item = scheduled_functions[i] + item.fn(unpack(item.args)) + end +end + +--- Produce a Lua pattern that matches precisely the given string +-- (this is suitable to be concatenating to other patterns, +-- so it does not include beginning- and end-of-string markers (^$) +-- @param s string: The input string +-- @return string: The equivalent pattern +function util.matchquote(s) + return (s:gsub("[?%-+*%[%].%%()$^]","%%%1")) +end + +--- List of supported arguments. +-- Arguments that take no parameters are marked with the boolean true. +-- Arguments that take a parameter are marked with a descriptive string. +-- Arguments that may take an empty string are described in quotes, +-- (as in the value for --detailed=""). +-- For all other string values, it means the parameter is mandatory. +local supported_flags = { + ["all"] = true, + ["api-key"] = "", + ["append"] = true, + ["arch"] = "", + ["bin"] = true, + ["binary"] = true, + ["branch"] = "", + ["debug"] = true, + ["deps"] = true, + ["deps-mode"] = "", + ["detailed"] = "\"\"", + ["force"] = true, + ["force-fast"] = true, + ["from"] = "", + ["help"] = true, + ["home"] = true, + ["homepage"] = "\"\"", + ["keep"] = true, + ["lib"] = "", + ["license"] = "\"\"", + ["list"] = true, + ["local"] = true, + ["local-tree"] = true, + ["lr-bin"] = true, + ["lr-cpath"] = true, + ["lr-path"] = true, + ["lua-version"] = "", + ["lua-ver"] = true, + ["lua-incdir"] = true, + ["lua-libdir"] = true, + ["modules"] = true, + ["mversion"] = true, + ["no-refresh"] = true, + ["nodeps"] = true, + ["old-versions"] = true, + ["only-deps"] = true, + ["only-from"] = "", + ["only-server"] = "", + ["only-sources"] = "", + ["only-sources-from"] = "", + ["outdated"] = true, + ["output"] = "", + ["pack-binary-rock"] = true, + ["porcelain"] = true, + ["quick"] = true, + ["rock-dir"] = true, + ["rock-tree"] = true, + ["rock-trees"] = true, + ["rockspec"] = true, + ["rockspec-format"] = "", + ["server"] = "", + ["skip-pack"] = true, + ["source"] = true, + ["summary"] = "\"\"", + ["system-config"] = true, + ["tag"] = "", + ["timeout"] = "", + ["to"] = "", + ["tree"] = "", + ["user-config"] = true, + ["verbose"] = true, + ["version"] = true, +} + +--- Extract flags from an arguments list. +-- Given string arguments, extract flag arguments into a flags set. +-- For example, given "foo", "--tux=beep", "--bla", "bar", "--baz", +-- it would return the following: +-- {["bla"] = true, ["tux"] = "beep", ["baz"] = true}, "foo", "bar". +function util.parse_flags(...) + local args = {...} + local flags = {} + local i = 1 + local out = {} + local ignore_flags = false + while i <= #args do + local flag = args[i]:match("^%-%-(.*)") + if flag == "--" then + ignore_flags = true + end + if flag and not ignore_flags then + local var,val = flag:match("([a-z_%-]*)=(.*)") + if val then + local vartype = supported_flags[var] + if type(vartype) == "string" then + if val == "" and vartype:sub(1,1) ~= '"' then + return { ERROR = "Invalid argument: parameter to flag --"..var.."="..vartype.." cannot be empty." } + end + flags[var] = val + else + if vartype then + return { ERROR = "Invalid argument: flag --"..var.." does not take an parameter." } + else + return { ERROR = "Invalid argument: unknown flag --"..var.."." } + end + end + else + local var = flag + local vartype = supported_flags[var] + if type(vartype) == "string" then + i = i + 1 + local val = args[i] + if not val then + return { ERROR = "Invalid argument: flag --"..var.."="..vartype.." expects a parameter." } + end + if val:match("^%-%-.*") then + return { ERROR = "Invalid argument: flag --"..var.."="..vartype.." expects a parameter (if you really want to pass "..val.." as an argument to --"..var..", use --"..var.."="..val..")." } + else + if val == "" and vartype:sub(1,1) ~= '"' then + return { ERROR = "Invalid argument: parameter to flag --"..var.."="..vartype.." cannot be empty." } + end + flags[var] = val + end + elseif vartype == true then + flags[var] = true + else + return { ERROR = "Invalid argument: unknown flag --"..var.."." } + end + end + else + table.insert(out, args[i]) + end + i = i + 1 + end + return flags, unpack(out) +end + +-- Adds legacy 'run' function to a command module. +-- @param command table: command module with 'command' function, +-- the added 'run' function calls it after parseing command-line arguments. +function util.add_run_function(command) + command.run = function(...) return command.command(util.parse_flags(...)) end +end + +--- Merges contents of src on top of dst's contents. +-- @param dst Destination table, which will receive src's contents. +-- @param src Table which provides new contents to dst. +-- @see platform_overrides +function util.deep_merge(dst, src) + for k, v in pairs(src) do + if type(v) == "table" then + if not dst[k] then + dst[k] = {} + end + if type(dst[k]) == "table" then + util.deep_merge(dst[k], v) + else + dst[k] = v + end + else + dst[k] = v + end + end +end + +--- Perform platform-specific overrides on a table. +-- Overrides values of table with the contents of the appropriate +-- subset of its "platforms" field. The "platforms" field should +-- be a table containing subtables keyed with strings representing +-- platform names. Names that match the contents of the global +-- cfg.platforms setting are used. For example, if +-- cfg.platforms= {"foo"}, then the fields of +-- tbl.platforms.foo will overwrite those of tbl with the same +-- names. For table values, the operation is performed recursively +-- (tbl.platforms.foo.x.y.z overrides tbl.x.y.z; other contents of +-- tbl.x are preserved). +-- @param tbl table or nil: Table which may contain a "platforms" field; +-- if it doesn't (or if nil is passed), this function does nothing. +function util.platform_overrides(tbl) + assert(type(tbl) == "table" or not tbl) + + local cfg = require("luarocks.cfg") + + if not tbl then return end + + if tbl.platforms then + for _, platform in ipairs(cfg.platforms) do + local platform_tbl = tbl.platforms[platform] + if platform_tbl then + util.deep_merge(tbl, platform_tbl) + end + end + end + tbl.platforms = nil +end + +local var_format_pattern = "%$%((%a[%a%d_]+)%)" + +--- Create a new shallow copy of a table: a new table with +-- the same keys and values. Keys point to the same objects as +-- the original table (ie, does not copy recursively). +-- @param tbl table: the input table +-- @return table: a new table with the same contents. +function util.make_shallow_copy(tbl) + local copy = {} + for k,v in pairs(tbl) do + copy[k] = v + end + return copy +end + +-- Check if a set of needed variables are referenced +-- somewhere in a list of definitions, warning the user +-- about any unused ones. Each key in needed_set should +-- appear as a $(XYZ) variable at least once as a +-- substring of some value of var_defs. +-- @param var_defs: a table with string keys and string +-- values, containing variable definitions. +-- @param needed_set: a set where keys are the names of +-- needed variables. +-- @param msg string: the warning message to display. +function util.warn_if_not_used(var_defs, needed_set, msg) + needed_set = util.make_shallow_copy(needed_set) + for _, val in pairs(var_defs) do + for used in val:gmatch(var_format_pattern) do + needed_set[used] = nil + end + end + for var, _ in pairs(needed_set) do + util.warning(msg:format(var)) + end +end + +-- Output any entries that might remain in $(XYZ) format, +-- warning the user that substitutions have failed. +-- @param line string: the input string +local function warn_failed_matches(line) + local any_failed = false + if line:match(var_format_pattern) then + for unmatched in line:gmatch(var_format_pattern) do + util.warning("unmatched variable " .. unmatched) + any_failed = true + end + end + return any_failed +end + +--- Perform make-style variable substitutions on string values of a table. +-- For every string value tbl.x which contains a substring of the format +-- "$(XYZ)" will have this substring replaced by vars["XYZ"], if that field +-- exists in vars. Only string values are processed; this function +-- does not scan subtables recursively. +-- @param tbl table: Table to have its string values modified. +-- @param vars table: Table containing string-string key-value pairs +-- representing variables to replace in the strings values of tbl. +function util.variable_substitutions(tbl, vars) + assert(type(tbl) == "table") + assert(type(vars) == "table") + + local updated = {} + for k, v in pairs(tbl) do + if type(v) == "string" then + updated[k] = v:gsub(var_format_pattern, vars) + if warn_failed_matches(updated[k]) then + updated[k] = updated[k]:gsub(var_format_pattern, "") + end + end + end + for k, v in pairs(updated) do + tbl[k] = v + end +end + +--- Return an array of keys of a table. +-- @param tbl table: The input table. +-- @return table: The array of keys. +function util.keys(tbl) + local ks = {} + for k,_ in pairs(tbl) do + table.insert(ks, k) + end + return ks +end + +local function default_sort(a, b) + local ta = type(a) + local tb = type(b) + if ta == "number" and tb == "number" then + return a < b + elseif ta == "number" then + return true + elseif tb == "number" then + return false + else + return tostring(a) < tostring(b) + end +end + +--- A table iterator generator that returns elements sorted by key, +-- to be used in "for" loops. +-- @param tbl table: The table to be iterated. +-- @param sort_function function or table or nil: An optional comparison function +-- to be used by table.sort when sorting keys, or an array listing an explicit order +-- for keys. If a value itself is an array, it is taken so that the first element +-- is a string representing the field name, and the second element is a priority table +-- for that key, which is returned by the iterator as the third value after the key +-- and the value. +-- @return function: the iterator function. +function util.sortedpairs(tbl, sort_function) + sort_function = sort_function or default_sort + local keys = util.keys(tbl) + local sub_orders = {} + + if type(sort_function) == "function" then + table.sort(keys, sort_function) + else + local order = sort_function + local ordered_keys = {} + local all_keys = keys + keys = {} + + for _, order_entry in ipairs(order) do + local key, sub_order + if type(order_entry) == "table" then + key = order_entry[1] + sub_order = order_entry[2] + else + key = order_entry + end + + if tbl[key] then + ordered_keys[key] = true + sub_orders[key] = sub_order + table.insert(keys, key) + end + end + + table.sort(all_keys, default_sort) + for _, key in ipairs(all_keys) do + if not ordered_keys[key] then + table.insert(keys, key) + end + end + end + + local i = 1 + return function() + local key = keys[i] + i = i + 1 + return key, tbl[key], sub_orders[key] + end +end + +function util.lua_versions() + local versions = { "5.1", "5.2", "5.3" } + local i = 0 + return function() + i = i + 1 + return versions[i] + end +end + +function util.starts_with(s, prefix) + return s:sub(1,#prefix) == prefix +end + +--- Print a line to standard output +function util.printout(...) + io.stdout:write(table.concat({...},"\t")) + io.stdout:write("\n") +end + +--- Print a line to standard error +function util.printerr(...) + io.stderr:write(table.concat({...},"\t")) + io.stderr:write("\n") +end + +--- Display a warning message. +-- @param msg string: the warning message +function util.warning(msg) + util.printerr("Warning: "..msg) +end + +function util.title(msg, porcelain, underline) + if porcelain then return end + util.printout() + util.printout(msg) + util.printout((underline or "-"):rep(#msg)) + util.printout() +end + +function util.this_program(default) + local i = 1 + local last, cur = default, default + while i do + local dbg = debug.getinfo(i,"S") + if not dbg then break end + last = cur + cur = dbg.source + i=i+1 + end + return last:sub(2) +end + +function util.deps_mode_help(program) + local cfg = require("luarocks.cfg") + return [[ +--deps-mode= How to handle dependencies. Four modes are supported: + * all - use all trees from the rocks_trees list + for finding dependencies + * one - use only the current tree (possibly set + with --tree) + * order - use trees based on order (use the current + tree and all trees below it on the rocks_trees list) + * none - ignore dependencies altogether. + The default mode may be set with the deps_mode entry + in the configuration file. + The current default is "]]..cfg.deps_mode..[[". + Type ']]..util.this_program(program or "luarocks")..[[' with no arguments to see + your list of rocks trees. +]] +end + +function util.see_help(command, program) + return "See '"..util.this_program(program or "luarocks")..' help'..(command and " "..command or "").."'." +end + +function util.announce_install(rockspec) + local cfg = require("luarocks.cfg") + local path = require("luarocks.path") + + local suffix = "" + if rockspec.description and rockspec.description.license then + suffix = " (license: "..rockspec.description.license..")" + end + + local root_dir = path.root_dir(cfg.rocks_dir) + util.printout(rockspec.name.." "..rockspec.version.." is now installed in "..root_dir..suffix) + util.printout() +end + +--- Collect rockspecs located in a subdirectory. +-- @param versions table: A table mapping rock names to newest rockspec versions. +-- @param paths table: A table mapping rock names to newest rockspec paths. +-- @param unnamed_paths table: An array of rockspec paths that don't contain rock +-- name and version in regular format. +-- @param subdir string: path to subdirectory. +local function collect_rockspecs(versions, paths, unnamed_paths, subdir) + local fs = require("luarocks.fs") + local dir = require("luarocks.dir") + local path = require("luarocks.path") + local deps = require("luarocks.deps") + + if fs.is_dir(subdir) then + for file in fs.dir(subdir) do + file = dir.path(subdir, file) + + if file:match("rockspec$") and fs.is_file(file) then + local rock, version = path.parse_name(file) + + if rock then + if not versions[rock] or deps.compare_versions(version, versions[rock]) then + versions[rock] = version + paths[rock] = file + end + else + table.insert(unnamed_paths, file) + end + end + end + end +end + +--- Get default rockspec name for commands that take optional rockspec name. +-- @return string or (nil, string): path to the rockspec or nil and error message. +function util.get_default_rockspec() + local versions, paths, unnamed_paths = {}, {}, {} + -- Look for rockspecs in some common locations. + collect_rockspecs(versions, paths, unnamed_paths, ".") + collect_rockspecs(versions, paths, unnamed_paths, "rockspec") + collect_rockspecs(versions, paths, unnamed_paths, "rockspecs") + + if #unnamed_paths > 0 then + -- There are rockspecs not following "name-version.rockspec" format. + -- More than one are ambiguous. + if #unnamed_paths > 1 then + return nil, "Please specify which rockspec file to use." + else + return unnamed_paths[1] + end + else + local rock = next(versions) + + if rock then + -- If there are rockspecs for multiple rocks it's ambiguous. + if next(versions, rock) then + return nil, "Please specify which rockspec file to use." + else + return paths[rock] + end + else + return nil, "Argument missing: please specify a rockspec to use on current directory." + end + end +end + +-- from http://lua-users.org/wiki/SplitJoin +-- by PhilippeLhoste +function util.split_string(str, delim, maxNb) + -- Eliminate bad cases... + if string.find(str, delim) == nil then + return { str } + end + if maxNb == nil or maxNb < 1 then + maxNb = 0 -- No limit + end + local result = {} + local pat = "(.-)" .. delim .. "()" + local nb = 0 + local lastPos + for part, pos in string.gmatch(str, pat) do + nb = nb + 1 + result[nb] = part + lastPos = pos + if nb == maxNb then break end + end + -- Handle the last field + if nb ~= maxNb then + result[nb + 1] = string.sub(str, lastPos) + end + return result +end + +--- Remove repeated entries from a path-style string. +-- Example: given ("a;b;c;a;b;d", ";"), returns "a;b;c;d". +-- @param list string: A path string (from $PATH or package.path) +-- @param sep string: The separator +function util.remove_path_dupes(list, sep) + assert(type(list) == "string") + assert(type(sep) == "string") + local parts = util.split_string(list, sep) + local final, entries = {}, {} + for _, part in ipairs(parts) do + part = part:gsub("//", "/") + if not entries[part] then + table.insert(final, part) + entries[part] = true + end + end + return table.concat(final, sep) +end + +--- +-- Formats tables with cycles recursively to any depth. +-- References to other tables are shown as values. +-- Self references are indicated. +-- The string returned is "Lua code", which can be procesed +-- (in the case in which indent is composed by spaces or "--"). +-- Userdata and function keys and values are shown as strings, +-- which logically are exactly not equivalent to the original code. +-- This routine can serve for pretty formating tables with +-- proper indentations, apart from printing them: +-- io.write(table.show(t, "t")) -- a typical use +-- Written by Julio Manuel Fernandez-Diaz, +-- Heavily based on "Saving tables with cycles", PIL2, p. 113. +-- @param t table: is the table. +-- @param name string: is the name of the table (optional) +-- @param indent string: is a first indentation (optional). +-- @return string: the pretty-printed table +function util.show_table(t, name, indent) + local cart -- a container + local autoref -- for self references + + local function isemptytable(t) return next(t) == nil end + + local function basicSerialize (o) + local so = tostring(o) + if type(o) == "function" then + local info = debug.getinfo(o, "S") + -- info.name is nil because o is not a calling level + if info.what == "C" then + return ("%q"):format(so .. ", C function") + else + -- the information is defined through lines + return ("%q"):format(so .. ", defined in (" .. info.linedefined .. "-" .. info.lastlinedefined .. ")" .. info.source) + end + elseif type(o) == "number" then + return so + else + return ("%q"):format(so) + end + end + + local function addtocart (value, name, indent, saved, field) + indent = indent or "" + saved = saved or {} + field = field or name + + cart = cart .. indent .. field + + if type(value) ~= "table" then + cart = cart .. " = " .. basicSerialize(value) .. ";\n" + else + if saved[value] then + cart = cart .. " = {}; -- " .. saved[value] .. " (self reference)\n" + autoref = autoref .. name .. " = " .. saved[value] .. ";\n" + else + saved[value] = name + --if tablecount(value) == 0 then + if isemptytable(value) then + cart = cart .. " = {};\n" + else + cart = cart .. " = {\n" + for k, v in pairs(value) do + k = basicSerialize(k) + local fname = ("%s[%s]"):format(name, k) + field = ("[%s]"):format(k) + -- three spaces between levels + addtocart(v, fname, indent .. " ", saved, field) + end + cart = cart .. indent .. "};\n" + end + end + end + end + + name = name or "__unnamed__" + if type(t) ~= "table" then + return name .. " = " .. basicSerialize(t) + end + cart, autoref = "", "" + addtocart(t, name, indent) + return cart .. autoref +end + +function util.array_contains(tbl, value) + for _, v in ipairs(tbl) do + if v == value then + return true + end + end + return false +end + +-- Quote Lua string, analogous to fs.Q. +-- @param s A string, such as "hello" +-- @return string: A quoted string, such as '"hello"' +function util.LQ(s) + return ("%q"):format(s) +end + +return util diff --git a/Utils/luarocks/lua/luarocks/validate.lua b/Utils/luarocks/lua/luarocks/validate.lua new file mode 100644 index 000000000..c4570aa4b --- /dev/null +++ b/Utils/luarocks/lua/luarocks/validate.lua @@ -0,0 +1,159 @@ + +--- Sandboxed test of build/install of all packages in a repository (unfinished and disabled). +local validate = {} +package.loaded["luarocks.validate"] = validate + +local fs = require("luarocks.fs") +local dir = require("luarocks.dir") +local path = require("luarocks.path") +local cfg = require("luarocks.cfg") +local build = require("luarocks.build") +local install = require("luarocks.install") +local util = require("luarocks.util") + +util.add_run_function(validate) +validate.help_summary = "Sandboxed test of build/install of all packages in a repository." + +validate.help = [[ +, if given, is a local repository pathname. +]] + +local function save_settings(repo) + local protocol, path = dir.split_url(repo) + table.insert(cfg.rocks_servers, 1, protocol.."://"..path) + return { + root_dir = cfg.root_dir, + rocks_dir = cfg.rocks_dir, + deploy_bin_dir = cfg.deploy_bin_dir, + deploy_lua_dir = cfg.deploy_lua_dir, + deploy_lib_dir = cfg.deploy_lib_dir, + } +end + +local function restore_settings(settings) + cfg.root_dir = settings.root_dir + cfg.rocks_dir = settings.rocks_dir + cfg.deploy_bin_dir = settings.deploy_bin_dir + cfg.deploy_lua_dir = settings.deploy_lua_dir + cfg.deploy_lib_dir = settings.deploy_lib_dir + cfg.variables.ROCKS_TREE = settings.rocks_dir + cfg.variables.SCRIPTS_DIR = settings.deploy_bin_dir + table.remove(cfg.rocks_servers, 1) +end + +local function prepare_sandbox(file) + local root_dir = fs.make_temp_dir(file):gsub("/+$", "") + cfg.root_dir = root_dir + cfg.rocks_dir = path.rocks_dir(root_dir) + cfg.deploy_bin_dir = path.deploy_bin_dir(root_dir) + cfg.variables.ROCKS_TREE = cfg.rocks_dir + cfg.variables.SCRIPTS_DIR = cfg.deploy_bin_dir + return root_dir +end + +local function validate_rockspec(file) + local ok, err, errcode = build.build_rockspec(file, true, "one") + if not ok then + util.printerr(err) + end + return ok, err, errcode +end + +local function validate_src_rock(file) + local ok, err, errcode = build.build_rock(file, false, "one") + if not ok then + util.printerr(err) + end + return ok, err, errcode +end + +local function validate_rock(file) + local ok, err, errcode = install.install_binary_rock(file, "one") + if not ok then + util.printerr(err) + end + return ok, err, errcode +end + +function validate.command(flags, repo) + repo = repo or cfg.rocks_dir + + util.printout("Verifying contents of "..repo) + + local results = { + ok = {} + } + local settings = save_settings(repo) + local sandbox + if flags["quick"] then + sandbox = prepare_sandbox("luarocks_validate") + end + if not fs.exists(repo) then + return nil, repo.." is not a local repository." + end + for file in fs.dir(repo) do for _=1,1 do + if file == "manifest" or file == "index.html" then + break -- continue for + end + local pathname = fs.absolute_name(dir.path(repo, file)) + if not flags["quick"] then + sandbox = prepare_sandbox(file) + end + local ok, err, errcode + util.printout() + util.printout("Verifying "..pathname) + if file:match("%.rockspec$") then + ok, err, errcode = validate_rockspec(pathname, "one") + elseif file:match("%.src%.rock$") then + ok, err, errcode = validate_src_rock(pathname) + elseif file:match("%.rock$") then + ok, err, errcode = validate_rock(pathname) + end + if ok then + table.insert(results.ok, {file=file} ) + else + if not errcode then + errcode = "misc" + end + if not results[errcode] then + results[errcode] = {} + end + table.insert(results[errcode], {file=file, err=err} ) + end + util.run_scheduled_functions() + if not flags["quick"] then + fs.delete(sandbox) + end + repeat until not fs.pop_dir() + end end + if flags["quick"] then + fs.delete(sandbox) + end + restore_settings(settings) + util.title("Results:") + util.printout("OK: "..tostring(#results.ok)) + for _, entry in ipairs(results.ok) do + util.printout(entry.file) + end + for errcode, errors in pairs(results) do + if errcode ~= "ok" then + util.printout() + util.printout(errcode.." errors: "..tostring(#errors)) + for _, entry in ipairs(errors) do + util.printout(entry.file, entry.err) + end + end + end + + util.title("Summary:") + local total = 0 + for errcode, errors in pairs(results) do + util.printout(errcode..": "..tostring(#errors)) + total = total + #errors + end + util.printout("Total: "..total) + return true +end + + +return validate diff --git a/Utils/luarocks/lua/luarocks/write_rockspec.lua b/Utils/luarocks/lua/luarocks/write_rockspec.lua new file mode 100644 index 000000000..33edeb1b4 --- /dev/null +++ b/Utils/luarocks/lua/luarocks/write_rockspec.lua @@ -0,0 +1,375 @@ + +local write_rockspec = {} +package.loaded["luarocks.write_rockspec"] = write_rockspec + +local cfg = require("luarocks.cfg") +local dir = require("luarocks.dir") +local fetch = require("luarocks.fetch") +local fs = require("luarocks.fs") +local path = require("luarocks.path") +local persist = require("luarocks.persist") +local type_check = require("luarocks.type_check") +local util = require("luarocks.util") + +util.add_run_function(write_rockspec) +write_rockspec.help_summary = "Write a template for a rockspec file." +write_rockspec.help_arguments = "[--output= ...] [] [] [|]" +write_rockspec.help = [[ +This command writes an initial version of a rockspec file, +based on a name, a version, and a location (an URL or a local path). +If only two arguments are given, the first one is considered the name and the +second one is the location. +If only one argument is given, it must be the location. +If no arguments are given, current directory is used as location. +LuaRocks will attempt to infer name and version if not given, +using 'scm' as default version. + +Note that the generated file is a _starting point_ for writing a +rockspec, and is not guaranteed to be complete or correct. + +--output= Write the rockspec with the given filename. + If not given, a file is written in the current + directory with a filename based on given name and version. +--license="" A license string, such as "MIT/X11" or "GNU GPL v3". +--summary="" A short one-line description summary. +--detailed="" A longer description string. +--homepage= Project homepage. +--lua-version= Supported Lua versions. Accepted values are "5.1", "5.2", + "5.3", "5.1,5.2", "5.2,5.3", or "5.1,5.2,5.3". +--rockspec-format= Rockspec format version, such as "1.0" or "1.1". +--tag= Tag to use. Will attempt to extract version number from it. +--lib=[,] A comma-separated list of libraries that C files need to + link to. +]] + +local function open_file(name) + return io.open(dir.path(fs.current_dir(), name), "r") +end + +local function get_url(rockspec) + local file, temp_dir, err_code, err_file, err_temp_dir = fetch.fetch_sources(rockspec, false) + if err_code == "source.dir" then + file, temp_dir = err_file, err_temp_dir + elseif not file then + util.warning("Could not fetch sources - "..temp_dir) + return false + end + util.printout("File successfully downloaded. Making checksum and checking base dir...") + if fetch.is_basic_protocol(rockspec.source.protocol) then + rockspec.source.md5 = fs.get_md5(file) + end + local inferred_dir, found_dir = fetch.find_base_dir(file, temp_dir, rockspec.source.url) + return true, found_dir or inferred_dir, temp_dir +end + +local function configure_lua_version(rockspec, luaver) + if luaver == "5.1" then + table.insert(rockspec.dependencies, "lua ~> 5.1") + elseif luaver == "5.2" then + table.insert(rockspec.dependencies, "lua ~> 5.2") + elseif luaver == "5.3" then + table.insert(rockspec.dependencies, "lua ~> 5.3") + elseif luaver == "5.1,5.2" then + table.insert(rockspec.dependencies, "lua >= 5.1, < 5.3") + elseif luaver == "5.2,5.3" then + table.insert(rockspec.dependencies, "lua >= 5.2, < 5.4") + elseif luaver == "5.1,5.2,5.3" then + table.insert(rockspec.dependencies, "lua >= 5.1, < 5.4") + else + util.warning("Please specify supported Lua version with --lua-version=. "..util.see_help("write_rockspec")) + end +end + +local function detect_description() + local fd = open_file("README.md") or open_file("README") + if not fd then return end + local data = fd:read("*a") + fd:close() + local paragraph = data:match("\n\n([^%[].-)\n\n") + if not paragraph then paragraph = data:match("\n\n(.*)") end + local summary, detailed + if paragraph then + detailed = paragraph + + if #paragraph < 80 then + summary = paragraph:gsub("\n", "") + else + summary = paragraph:gsub("\n", " "):match("([^.]*%.) ") + end + end + return summary, detailed +end + +local function detect_mit_license(data) + local strip_copyright = (data:gsub("Copyright [^\n]*\n", "")) + local sum = 0 + for i = 1, #strip_copyright do + local num = string.byte(strip_copyright:sub(i,i)) + if num > 32 and num <= 128 then + sum = sum + num + end + end + return sum == 78656 +end + +local simple_scm_protocols = { + git = true, ["git+http"] = true, ["git+https"] = true, + hg = true, ["hg+http"] = true, ["hg+https"] = true +} + +local function detect_url_from_command(program, args, directory) + local command = fs.Q(cfg.variables[program:upper()]).. " "..args + local pipe = io.popen(fs.command_at(directory, fs.quiet_stderr(command))) + if not pipe then return nil end + local url = pipe:read("*a"):match("^([^\r\n]+)") + pipe:close() + if not url then return nil end + if not util.starts_with(url, program.."://") then + url = program.."+"..url + end + + if simple_scm_protocols[dir.split_url(url)] then + return url + end +end + +local function detect_scm_url(directory) + return detect_url_from_command("git", "config --get remote.origin.url", directory) or + detect_url_from_command("hg", "paths default", directory) +end + +local function show_license(rockspec) + local fd = open_file("COPYING") or open_file("LICENSE") or open_file("MIT-LICENSE.txt") + if not fd then return nil end + local data = fd:read("*a") + fd:close() + local is_mit = detect_mit_license(data) + util.title("License for "..rockspec.package..":") + util.printout(data) + util.printout() + return is_mit +end + +local function get_cmod_name(file) + local fd = open_file(file) + if not fd then return nil end + local data = fd:read("*a") + fd:close() + return (data:match("int%s+luaopen_([a-zA-Z0-9_]+)")) +end + +local luamod_blacklist = { + test = true, + tests = true, +} + +local function fill_as_builtin(rockspec, libs) + rockspec.build.type = "builtin" + rockspec.build.modules = {} + local prefix = "" + + for _, parent in ipairs({"src", "lua"}) do + if fs.is_dir(parent) then + fs.change_dir(parent) + prefix = parent.."/" + break + end + end + + local incdirs, libdirs + if libs then + incdirs, libdirs = {}, {} + for _, lib in ipairs(libs) do + local upper = lib:upper() + incdirs[#incdirs+1] = "$("..upper.."_INCDIR)" + libdirs[#libdirs+1] = "$("..upper.."_LIBDIR)" + end + end + + for _, file in ipairs(fs.find()) do + local luamod = file:match("(.*)%.lua$") + if luamod and not luamod_blacklist[luamod] then + rockspec.build.modules[path.path_to_module(file)] = prefix..file + else + local cmod = file:match("(.*)%.c$") + if cmod then + local modname = get_cmod_name(file) or path.path_to_module(file:gsub("%.c$", ".lua")) + rockspec.build.modules[modname] = { + sources = prefix..file, + libraries = libs, + incdirs = incdirs, + libdirs = libdirs, + } + end + end + end + + for _, directory in ipairs({ "doc", "docs", "samples", "tests" }) do + if fs.is_dir(directory) then + if not rockspec.build.copy_directories then + rockspec.build.copy_directories = {} + end + table.insert(rockspec.build.copy_directories, directory) + end + end + + if prefix ~= "" then + fs.pop_dir() + end +end + +local function rockspec_cleanup(rockspec) + rockspec.source.file = nil + rockspec.source.protocol = nil + rockspec.variables = nil + rockspec.name = nil +end + +function write_rockspec.command(flags, name, version, url_or_dir) + if not name then + url_or_dir = "." + elseif not version then + url_or_dir = name + name = nil + elseif not url_or_dir then + url_or_dir = version + version = nil + end + + if flags["tag"] then + if not version then + version = flags["tag"]:gsub("^v", "") + end + end + + local protocol, pathname = dir.split_url(url_or_dir) + if protocol == "file" then + if pathname == "." then + name = name or dir.base_name(fs.current_dir()) + end + elseif fetch.is_basic_protocol(protocol) then + local filename = dir.base_name(url_or_dir) + local newname, newversion = filename:match("(.*)-([^-]+)") + if newname then + name = name or newname + version = version or newversion:gsub("%.[a-z]+$", ""):gsub("%.tar$", "") + end + else + name = name or dir.base_name(url_or_dir):gsub("%.[^.]+$", "") + end + + if not name then + return nil, "Could not infer rock name. "..util.see_help("write_rockspec") + end + version = version or "scm" + + local filename = flags["output"] or dir.path(fs.current_dir(), name:lower().."-"..version.."-1.rockspec") + + local rockspec = { + rockspec_format = flags["rockspec-format"], + package = name, + name = name:lower(), + version = version.."-1", + source = { + url = "*** please add URL for source tarball, zip or repository here ***", + tag = flags["tag"], + }, + description = { + summary = flags["summary"] or "*** please specify description summary ***", + detailed = flags["detailed"] or "*** please enter a detailed description ***", + homepage = flags["homepage"] or "*** please enter a project homepage ***", + license = flags["license"] or "*** please specify a license ***", + }, + dependencies = {}, + build = {}, + } + path.configure_paths(rockspec) + rockspec.source.protocol = protocol + + configure_lua_version(rockspec, flags["lua-version"]) + + local local_dir = url_or_dir + + if url_or_dir:match("://") then + rockspec.source.url = url_or_dir + rockspec.source.file = dir.base_name(url_or_dir) + rockspec.source.dir = "dummy" + if not fetch.is_basic_protocol(rockspec.source.protocol) then + if version ~= "scm" then + rockspec.source.tag = flags["tag"] or "v" .. version + end + end + rockspec.source.dir = nil + local ok, base_dir, temp_dir = get_url(rockspec) + if ok then + if base_dir ~= dir.base_name(url_or_dir) then + rockspec.source.dir = base_dir + end + end + if base_dir then + local_dir = dir.path(temp_dir, base_dir) + else + local_dir = nil + end + else + rockspec.source.url = detect_scm_url(local_dir) or rockspec.source.url + end + + if not local_dir then + local_dir = "." + end + + if not flags["homepage"] then + local url_protocol, url_path = dir.split_url(rockspec.source.url) + + if simple_scm_protocols[url_protocol] then + for _, domain in ipairs({"github.com", "bitbucket.org", "gitlab.com"}) do + if util.starts_with(url_path, domain) then + rockspec.description.homepage = "https://"..url_path:gsub("%.git$", "") + break + end + end + end + end + + local libs = nil + if flags["lib"] then + libs = {} + rockspec.external_dependencies = {} + for lib in flags["lib"]:gmatch("([^,]+)") do + table.insert(libs, lib) + rockspec.external_dependencies[lib:upper()] = { + library = lib + } + end + end + + local ok, err = fs.change_dir(local_dir) + if not ok then return nil, "Failed reaching files from project - error entering directory "..local_dir end + + if (not flags["summary"]) or (not flags["detailed"]) then + local summary, detailed = detect_description() + rockspec.description.summary = flags["summary"] or summary + rockspec.description.detailed = flags["detailed"] or detailed + end + + local is_mit = show_license(rockspec) + + if is_mit and not flags["license"] then + rockspec.description.license = "MIT" + end + + fill_as_builtin(rockspec, libs) + + rockspec_cleanup(rockspec) + + persist.save_from_table(filename, rockspec, type_check.rockspec_order) + + util.printout() + util.printout("Wrote template at "..filename.." -- you should now edit and finish it.") + util.printout() + + return true +end + +return write_rockspec diff --git a/Utils/luarocks/lua5.1.dll b/Utils/luarocks/lua5.1.dll new file mode 100644 index 0000000000000000000000000000000000000000..b87f3b661827524667ca4b24dce41aa694880471 GIT binary patch literal 167936 zcmeEve|!|>o&RihHkl+#c8~=YSS9GvMuQklw8RaXkg!<@B)bXOjUtI&Ef-U&2)hI| zY!ZjmOdeNhYp?Zc@7kW%vtE1cU0WLM53>m*{O||jokA%Vsnv;#8nr_BA^UxQo|)Zj zBKG=yUHhNWVPs3?N_ z)bu`o{x3~C`1y&Z2l@FwjPsNHTz|*sTdD4;J@G9UgjFVs@O5pcH~H+Ckg*`wB;jX< zAav<>wBq(JzA5fIC?z zA5bmcbo*_g+XNwVDeh9=%Z)Qm$-i>kU91-qZYLu08FkS)?XO%A1{QDHyy^3}$NP#t z^ET<6_E%2zZTiB7yHIfJOgz|#=lRANr{rI`AS_E>e|r8D1D|5xQw)5Hflo2;DF!~p zz^54a6a$}P;8P5Iih;ij13d$gnappE9TTHf8Ds7WX;WMOt#dNup`~Mo5{XC_9+)en zp{4KOS7_DJcjCEv3v_hDI$}Wj{B(}wF9x3%mEt}1%M`~t6YloVP2iBsI zw7&pVA7mXatNVQDh6Z+v%fW_D9YQxv)l$!q$Q8v08>#hb$vhanLssvUSb=&uYZcWy zL{=^-gR&AgsTETAx9irnG!GH{BJ;{@jZ0z`O{%|Xa&ym8Q>aa5-YU1Zd{cH%+qa$o z7PV#j1%cH`s%fM`BA~dDii4kOw!+c|^-wKL&n!H-2 zzVVJGRz7yJ++q&Z#g|gE{xJa2ogliM48XR<>8~wFzUH9XSBNZoyWbMZ^|4`1)JKtU zLS&HoOUK7|&H*1X+DoCdTmtFf9Xa(1m8UV+Hly%Tnt5SS*^?Lot?^pvxiX#zXZC*+ z-5+9N&#~D!Pil|9UyS#atx{$|6cq`eSazYMjiL(IED=DYV zp-Yt0V)!B^V7#NCSnZKcLFgF>XB7{$D7)k#UKhVgwX9zx>(hRUx;XryX*5s9#Ss26 zhs{%1r*gs()LN)M zeS8XOe6E}rpFeFQ;6n3`qWnmeOD6Z*QFJqk-$wsLE z`XABjFEr|R81>7jUp`7L$#^0kL5ox)8p;Qy@zaId)4ry+)w4GwE2m9ii?ZZ`Bu`8+d;!OeIFjR`ZAMdk z{#uRs3vnY)oxKzDSF0q@KpUeOp*&^O!sibSpJRv#X`M>dKSQryG72V(Ovpnvj1Iqj zO0P9`UOAoFenr9+^*I0}`ZdI#KW98gt8byzu!Kiwvw4WmILMDHP~2-A3vs4{?$Mc0 z4R|0gCCEG)Ii*}m<7LU`L~|%}bPh@p-KCeJ_mAk$ji*QFq(9eXo5zs1!A;o#?WPu; z6xM)kfM!`ls)ye2`8{;ks%Alal9(W_j9&U18rcSyz31&fFigcA07Sh*q9$6J*AbQN zj`~b}APCd;z2Q@kq>jQt%z3ovt8)7w;RBl1tTz~u8X5!I84&5m8=|VHzkZ!}Bmt(^ ze_*^0cNy#@@)<3WNJQ6| z9EIZyH{X)YFR(?^&HL0V*d3zsj;ZIQ+Q!BCN-6v*O0+a{6^CLRN~I*Po2-x-^iX`T z6dDvplw_9e>x1faV^EFfq+hAi@th(C>EmrYPiaxm#pp5WtJr9JWRMLe37wFQKa`)) ze?A1U*Gfuk%kLJHGl4I-sI82w4g$E&Dxui|PHg&vwdi~01W~fvdHHAv(9~o7k0<^$ELX`sZd1+V& zylGue>0MkQ178L$Q8!c*H9OH_dVh|+kN(t3QU6%I5<5mD@(_)mM>;k^CKsfSf1?*a zi9X&MO3?@KiGe06vFlV)z^SBwQ;Cd*#vs^;N;oOxvbr%^2Efr~N&2qKLIf=!BImmwifH z)|PRC6L~+vmmFCx15L6&5QOgG#DsE@WYDG=aL#}lUn8nsku^xLdSJe#fobUe^FYy7 zmZ5`LHwDb<3*dSZ{SmTX7~=$?+%qnKd=JLWFeHfJPb=?QLN&^}86j9Jvib-ocs_gv zJ@*`BlIoX2wH#kwCcqdGL*;BwJ=DRcZX#TZ7b<@VFAv=E@)ttxSj*%olcHb1`wTHt zZ7u;#ib7`Sy22Mi3vuKYC#W?xLSkKl$;Rr(lo+OqF)8A(cffbpiZOMiHJ(cas0bNV z+<4+pU28yfB@OvKGfm+c^?q&I3Qj_)+WY+WKCh+gxVh`K@thZXeU{V{gQQdNqGn=a zb_iA&LNVbt8m|F(>GKhG8c~O7z$Jv_k!zS^7M^@|0JO-q!C65qa|T=(10_m$rovI+gU)O9wGQM%5gOLq z?lhQS6#}Na38uRN)8whjduYhtbU|A#0-F_9Uz?!aPzfeYB0h)YY>n;=AW8WYS@)(I ziB$seB6pgQ=Ie8{jpiU-_#0%6NjkHhE$t8oFyd^H5+BIGI{)X+pFQ$t6b6mN-R99}pbNO5>m)iucv()?i+VKkBn@QH9t}ohlmS-mG z)%hQ61Z#k8mV+SV@hsZ|{lE=W^9L^zS7fFTvN2D& z+f%h=)OeZCyJSTXA5h>_YkjF3YtVP68dzi8P+mv^`{Jd7{CgZHaGb%Bh3?G8aVw6y zaS%?4%(YWjkkP|YLiDf8@aMIn6P!J9g#na$b&Q)KnV51Aa5V8SX>`*@Nn~`~h_U4I z+3-w(|F7YF!gSYNZ^~Py`d~nN6ygXTw|*kY!VyRX6MSsVLp_PGi&qhm+Jx5cbLULn zuQ@?YRjQN3K=5;aR%izGgZW^Lk!n*eL-EvIUw#>~IXT!ye|7(wRmC%uLC1BO>#QXQ=qi)cPdJHxhUT|&#>6(t9VPC7tMe*W zwFBxnM5z;3=U|1xlAX=2WF|_KhDYkUCzH5|90<)r zgB_i=op)!sU+!#=9S1x)(r-9Cml7;@%N@57EVr;NP8Rxyb8OXD!0jbvScZnb3=NL~ zng%vkox^Sx)tf|CPvQ$G(>-c_X>Es-WuL5o@V7(o`z)bpelX4v?d^IU`NK)T{mkod zd!5{>l7kT|6u(8bo!)EQ?`@mUyjJFyqN^4sVy{ilg_V(6uk1DZwcgoOiPXZ)Ewb06 z9ewAR4SMDA8@tY!!z1i)ES||;?EXUnBNuyXw)@r2pGI#sxj*RqVYF&-!aW!nimpMe z$7grHmPm98xi6}-d2P==3o*bvZ~#a0M?Cr96C@h_t+TokotQB;Gz`urqj5F@PARdM zwK(`LAsxOA^2qsFEdd=nmYs`&!Pqg0&h@clnRF)4;J#US!DGE}3qQg`wBS;9$-D(S zT2S>C>@8#w`U8crAUnfmquYvRik9@TJ&zU-77i{=AQLTe5$m+V&*5u*0<;y>7K7H= ztnL^+i@lcDeLQg^IK#dcH4mmDr(fkvA`lF%fW*1S8ok{mVDzKnH#+QWV@|)lpS4@VM0~m0dD7~=^SJ&g8_{x z=M$k#4gb{@WXlCi=4jc^F*JgCL^*Hjn9iDbV}H1D``4&3w6uqr*dgT)H+G$!2U&0k zBboSlq8lFZ5+N3!zEBvzpdAABtrj3DnV2;hm{6t(?S&s{S=*eh8&iko&hlf+nDimq8=f*`Xh2~)>K%yTYUdrmoaw!4{m4u1%@(yIbLz5m)6TJVVS96U&u#&4>%#ZkWlk%Jr)o) zv~I}1N-MahpOcGEOZb2V-0{iv#+|ouhto;&A3ug07EO?5{j8d-@jTD5Z!Li!B4pM*AbJ!#tsVsm&bkxBr3!pi=vm!21jzLDP8qH0A zeSZQ91y|&>o$IMa8DS~+RofP@-Ow|mkE1~hM=jj9JpLmnyG;-V?yEZDsFD-Pbd)p0 zLQcj={AAnoiv&@HG{J$ldo0jFK+1k7wO?FKO^K+YCF(Ubt2G56gVb<<|JmVQb3{d# z4~CQoL&{1$)P6>>AgFK3iGl{WvnnAmpxJ@%`APdFdyAmO*-loo*29a7Yn5FEX_ccH z__N+)Im+p2!Eiq8eCXxNtje${_C{WDNpDo_?S6yi_SHp1B+BW$@EufW3AkF+`Y-NKQDP?d^O1|YPaBj47Zy=G zQI=1eRtw5nS)-J@OgdRIL_4O1F9Fvd5v=G5y9kVyS^Hw6nUEE@fidNPEzqA}XGpSza2k_&pv_h)Jj?MNfdqf`_ z)cylH)JP`13{rqVnN%tdr7Ur{60OSKgii0dm^jzCM>@==l`hnG!J8zI?zOT`E|X%h zV|hVkPiFipY`A6A1~venY(1d58Alh6ui}WL9fxsEN0LIw%|$#tpB)OY57|rFJd%;i zg{U{7oX)j9un^M_Ug2A>667`$JH>{yx#U=eV`-Z-vYew7ZcKP)D({o>dkXQC*__fDvM5fZm-&!rP1}j@8#a@$mX`iy!&N=zUJTqD#}1rhIBo*+rXJI9uM~%JgEa`pfKJ@^a^imBlZd;h zCPmzs3(k3{jzQQ zGayhhONLZAHYRFe;eR)FVVo6(wl zfcSS5#o6p2WjtTq>}1RBuuZ0c_`q}V3rd@ntd+9>5SNIdwy4Wxbvbw9H>=B&)R}a= z8w3xB5<3mW=N0W53ZULV(k404AZ_ZdamOHSs$B`_pVispI*l+p=-4}jd~ZrC*!WQhYD;vgV*3Sh|D}*@7s{isY;ti&!ZWw z6fdRf)!p0(d2zT7vzJ2GX^ttiUT)jjkXGxE_6@z(IQ%2Y5 z{|u4>-&j*D$ldo95Tms{%@2)1#7l1WYjZXnfjPGCnZ0=ynp?PX3B;)PxVc9s%2kvM20Tx zsuIk7H&I{ZgsziDeF3Sy0i<*#5h>&bxi*HhA5+71#AcyJ5PRLj*{c*U$HTAE!=RPq zYe0$}mvRq4e)^StS@rSD@OTDMnDH*sO0wx)DVM4NgU+t^qcI_e^JoHVHd`y58cOP5 z!E4;V)n^3(vg1MY@o5~d;5dmR*;hJqVL|~_eUd##!U70hpd&bRDN#KUXv`qcRYYsM zq@7Xt_mg2Cb5yhqOzdlhAi5slf!%AGLPF&hnp&R-A+JaPod`PK0#Z$1oO7 z{dV3#WzaOqd{C#S*9ZL;IxX<$RuZ{vEPNdz&X7@X3ySx%J=|KG5niBp9EswCJ#Qo8 z71L(d``YFf4`_aP)xin59iSwvArD^lT!@8jAvch&iwCqLRXVynU|}9tbZde#7T(b3 z&&LR~R%eeMut)eR1G?PK&V3HHsIPnPksAfUkGK2bV1YS|=SiCzJU?l3e+v)6?upNH zi`WW_xSaw$P&+y3>C^=M67wg(J^&BBAL53Ym4WlnzS^&_?d)3eIYGuuD!>WcA4Gmi z%Y*MbK9?r}e4gmNQi@w4u1BQ z*Ag#ZC&))|ypH3295fZo_{*3KUK)JIDY^*w;GxWJUjXnNfP$}q75|ie?}@o$>lr-O0KeJh96!|Z7(c@ zB#$Olmpu0Y*gkTQ4XOdVwilfS!2$h2?bo=*Me|SwAj!dT5sr&-d>#k-Vls*N%P^ah zXhzankT7aVPtcmxIXH}vXg{Ex5hjlXvIo#f-3qlbgF5>~B(kWABmjM)Dfy>KU;03;?srM;C=IQa-XH<%&{e z%1If5!>aggK89E0r+atgdK$jj5D=$gY5aSi&OvEL*H7^FYOaJF?zoY-YrIt1m(Ztt ziuuDJflxXOgCywE$s$!R9<^NK-p?N;X(Brprfyy?MuAhtk3nJSl))1!l0DVWdVd}4 zP!P=edF@LeKT5{J<=+t{0^E5M;L5h0;6R5vBxQfX)a;6zafV__Tzhr0y8tV2je8%! zYIZ3dE{71FiIaVHD385>nq#EGlAd7r_1?_RMS7`}i<0%RH#6zXhJ)INn*jGQiBjhG(Q5#9?gcKE0TBmX%|L{AIhLk}C8dfw?P@Fg%0E9=R zL)XCX7g~US!nI(Y`!RLf>|}%k2k&57V*Fbaq+8+He27PWO;aL==7R=aLYMbjwaSSd$qsg{5Li(eept^&}?4Y}cJmWBLP zkSr7X;E5}n8NQYi_`6h>jXZ*gNY+SEaR-xQug%tt^W1&NBrxj?M^Y;(M8T)QTqH%b z&BWz??Z;eu67i(X%5VJB#EohEMs(sv9>38sal^)Md~xE2uI}DEabr3!u_AS&0VeWr z+iWoUg?t1c(1scyfAo9P)9z6@2g-fK-_^^}y*aoyns$%grE>o>K-foFak=_JDS)k;Tz75iFAP4=n3-n!6NEA7n1iM zE(Ixfi2MqBE+x1BOPn=J%8*HIc9B{fJ2pN2`A_kjI0(WGK@@+S7ne~Ss-!Cg{ zEB7Faw;;f-?uujz&EZSj%k1GyR_{>JwQS1JS|RiF@C>ksd-P=C6?Wt{icIYOSi&Iq zkkoT9L^-7tdl8HG79RxmkaAsxN3!ZGQ+?&V-X&a00Wb87l~<)OM86S#U6Q<^KQBxE zOy;Mr!CTAhk%a-asUYYc-r`_eMRp@x++CgU!I}%bc13ga?CpHLr5R8Zvibt|;FeNk z&K>Cg_a~pcf-s-KF>f9OSk|YABdg19WwD{2z1zrZZsh=uRNRUO=}FD3TBN`-4?~2P zFdhR77Xd{;$mQ;BgtDo5Pn;K?^i}WOP(J z3$u`V?;h&N#d3hGemjVH9nfk78qj}1+=?3c|kmfE(M!{ z)%6FFb>xmkSLKeSvfz>DzLKYaQ~EE*_b1mkKUH5oF~iyH9?Dxstt zDFB7cU#|M{pDMyzAnQ@Z?NKz=bzi1n>rrsk zhW~=v`X696jq$WZd+`x)kkY0i$UrI5Nc76YfAm47%G!A@4S>% zFCxqBREKOH(EcS4uHF_H^^_d}pO5y{^c$%z>-q{7rF6KQ#Yfy{A;qoKdbpB@f8lXZ zJv2vEk6raRRZo6v6%9hID_U7L;<1+D$B0L!d)jMy_`PMF+U$r{n#k;cZqg@QKV;j^ zGw5i2hV3^4%D~T*@ykh#@4dZ>)cEKsoS@ANYv;jl<2SqG$it$nlHJ;mU{0gyxJL&e zeghmrS!%!$zZQiY0NNh)z%%`v_6RcQ@G~Fih5|X@9s=ZHfF@DUSZx;LqKcdg0tmRk z;OKDmdI`9j0Z`^)M_aXKi#dEX*O0@5EaYWnwZGuMy)Xn2Wn(2r7k;N^9jpTx?;(x+9>^SJQRoOnXD0cVz<-0yeI&?L4gf!DN2bw)0@K z`?qU5OHanckmY2|6uJs=aBr#C)%h9bD`MV7?iWL1&%rR*WW-Kltg4T~kY$%(?FUhm z&f2-nubg&v%vMfc60sy~p+#5@zA*m51n#drt?Je}DmpPbZ}V#m}J&gy5a^ETSn2lM*K= zQ<@o+fLAR%2?!dtOTa*2Hqhh}Y!6xB*CTzA9J@%0CE3HouP}`rioKnQKydNN?mv=# zp`85;2+c(~MYibw;08(~VPHj#d(;-)jo*DdglyY+hP|M?W-ff*w*5tVZPaAj{uBKo z{DowUx9fOO*O`2HO&UN#Sh{e736|4?ohasp$6?z&`1KHy_64|3Xl)tbigt8UrU8Zw zq3KJ*7Xe=gSA}!nq*2}#-3L03BlXC2a?lhmLl+iNwS5XXcAh8?<+wMvO2Q(1=8o+H zHdRH%(drD|l8yJd>M4;1bXF*g>4NN6kmL|RTj>W&vYaheYg`{}^ zZFV*i(?rCZm1AaD0xk?6C~zk#w)3)hnt?}JuKwWLqqor1M1`Yk=>mOIhR!QzFS9*x z8%!44PGw*vcL8k2i3}o>t;dT8(O`xf{&ZXPCVC4H8&0N6Z9SLc@ec?cw(VtjI64Qv zG51T{n(g6fxONZQ9=7022pByFsBJszz3%r%`Eir&!59igR~2OF6l#n9Cw?otGx)m?emVK> zHe65%Ww)7Xe-MSbJ6t71VMGSD?YB_n<2K~6b7Cm6J-iZE=2IX%dGtnHA`u4W<+7S+ z2ni))w&)5}!GX|B2$6@8!1R=;-3gT&M6`Vo9>(n$4sz++i45EJIuv>W!&Xg&-{F}T(|PYVLby=x7vlj(6*76iM534A zH^BmS1nMs$K4E(>6Q}~?SVUezh!40gF$wq-*kSQvEewuZaQr=vZ8-iJ$6Gk&tbqR< z#}QmVfkVOd&v7_GwoNz$Q-(RuoROC&<|Y3unfxj%OUlm9$<4D)O9^XS@DOTf4qWC7 zi33uAeUO$HK~F?hB^J6-#$!smP0Azq?3Z&rGZ3`(JVL{=97&v{YuS2w@RL+fc8?ss zl%}Km4$?YTIMmfv#PKjXVQb+=tFCfFq&%O1aEG_%dl!@Pi5HxzDGXr|)V@Oz6Y}Xo zn?bO(eX(ulS9({`EdBaMoY-{*BCV-(NJpfw3 z#2>2=1HT~|UAj?9E^Q2FD)-oh&JI>_g6@Wx+;uOkj1A0xLK$_GZj!>EVHvar61Gzv zjYTyw(UJL$6g>D23O!g_OSTinVo!pi{FGuw?sUrWQO-C+Im(%fLl))Cf-v=7st4Nr z9O*$#kDpnaA!hZE8S>lU__jANXOtFZk{u#L>hbjmEGNkBmE13E&UME^PFhC$!ln-! z8e6{uTm&@YbILB6YfgX(`4(1xJuHua)=Lv@mlf>fAlkP!)cYD+JNP>f@pl~j9UVv1 zyvUoTK#!GQ_4zWc_h*DJ^0gl0Z#D6^tdQk?U#oaAHNISL+(;swKsV&O_q*7~OD^7p zX0tkfK)d{`wjy$Hd?20z{y}K|BFIK!&TD*A_pk{p*jAd$!A)HWvv@@@IQO zJp;i|7$F7oxY8+QhH~310quLdOK?gdAAAg}7JPiwg4bBJz-A)_8HqG?e31ZBEwMz z_7wFwUwA)N15y`qXNxwwBTr5eL-AL?cGh-C2~6yqWc^`nvUMb;)pbsVQ<5tFsr@ z73kLbC|T?KVx#k;YjRB8XQ=SDyjD5|HInOau@n!e)giTdBTs5H`bsAQUzCW?JR3pc zGudjZ>aAjdjllGvSf7~r1hjR^UaysVJ(%fDLTENQSe5}Y#1YuCCSWv>IDmiKOo^F~ zqx6*ePxvT@!@Dus__KiO+ZbKm-zNA*mX8CCg1Y)=TI)}VvM4Lei4=K2;twPmt*r59 zZ236utAUL?lbGM{UsRQP`Eya;W_ ze0M%pDljnl@F=S&a97yd%XY9y&yjJgZX9D9wMp-2Y~zVZH%{Q)ExU<#O*GvMmX@MF zgd!SfU_JTKmdt34sT*PPgpDR``y5ugh`odqU^v4>TEjHAf(A&A%dNZS6Dzo$a~lj8 z@fzfLo5$Jnuv69MMQX&US&44b)*vPAdo13eA*?L`*;}L4rln6l`D6}Eczb&dYc9g< zhXoTY>x??rniJ+DIPh=Ke53*VQuYI|{KP>30n}J~5?iD;aJ}QCHDL8Y;aSr?Rj8C5 zN`d$d=nh0vN3aaP5N)JUA$jYtQ-fF@wGKt?oob{gTJ@3!pIU)h3ya$|b^R1tF!JR+ zi?CTmHZ1+8FiD$-%rWgJ{34B*aLGJHONp=}Gl<9BpyNvM*d2&!4VedkPtsfgTz7;| znn+&jEu6#tK@VgnizaJTPHdRqudS3U=c(!$0769D_WuHXc122|Uq68>RtqBwf~8q% zWUa_SKU;XZa8!YV@gFyy{J*7edfeaQPP|W{>ZsL}ScxP?C`2~0?YNfTn z=!RzS>kt2pX4Qr%{5nZ5@Mn%860-u6$~_na@J@j3Ah3}KzOQhPIffJ+_&3;n$^9&7 zu_(;C@Y^RnD}kI=00j!?D_INAU@r~msCHV+dhcaK&th9Xxt1C<_YEk=T}wWvI!oQ? z>?^ms%)K59I1)KytZ>8hda~Hiut&5EdomMnzce}Ee)-;4u?Yz`blG{$@-@@~>?*t9 zS%ppDh}^?se47vw?f`{MGAr;e$3?JCE0GmI_nXJHKKNdmR}!eK*(ni z-Y!89OwiVRgGyPMO~KnTEwbagU|_kXSC2=U@Z#lQ%Hi*{nOZl1q#CrJAYrDjHtT6> z{-xu18w)fp^C7pxVh+d#|IwGdt#pL5OP9&E?f-zHtlkN?!W#w@fO`?(F3}F+8R`Il zWI#IM3L(Id&kDA;8Oel5=q=pSb1+h(#3VKt&y0Qxj|Hr+i{2}%_aUEroP3(+XlIX7 z^3X#wdBxc0Gt)Qt5^JqH^Ds2)%M^Bf*(j{~2GeOi7^wX&hY z>U?FJMETuPXnN~Lpbr70Q(7%@1~4`dobI75mtfD69cep|AiLJ@poL1W7x>Ya5ar#GU?V&rUBM#Qc86;%!u>aT_RU{+=_7N7y0 z?b^0d2+zU`D==o!7TG+6J#e;s2E-mmmW@<60%?UY@gbi2s`e$a!Xo*=ff*(q;GxY` zT;VLu4t5nshJb?{m0LyCp*AD^ZFLQVhIv2w0|f^(?ttsC_@L^u({eSwS;ppEEDRyl z)+=rL@T6yn31g!Mq|hv+q=;=uN`bFJ;;ax093AIqs|LQTgX>;PFU*e$AiYw6-G_cA z0VA#hU}!@dU>h+=q`m?uonwJ30V)C^lxH;jFpUz18v&zbwCK(+2T1I|LBB1xA1WTD zbMr_|a@8Mz{i1%GGXgxr8o*#%f=@Y0FxScm?MP_AlEdk!i5ni*pwW!bB7MIbdIp{m z^(TO)&}_U*>KiJ~(1D?{m>-^e^9W^W`XNW(qkF-SMSGY?BVdo-tEq4S-Ymmexe{R% zHG-JdpUD3T^oKsvNE`Od$Ew9E*lG1D)+VZV(E=SfM;Xt3vw^hd`r{E)+?S8lkFFtlJ!gX2%GZ5(^|K3Nj3*j*?8XirLPH_ zxT0OkClMAHLf3_w_PplcQW01U=eC&wS}Ek1vJ2uwUf=C0L61@k%wB-W3#6r#DYVbm zu93+Aq{7?+fNj{5XbiOua-mPP`s0his0EI5LU?E{XSvU7&p`Bo%Ro&B(m@S;b-4-$ z1Js1tbX`@~5+JO<{hu7RRJvob{}=_>6zUVl-MtYd|BmUsUUZM7L>>T1J6q(w?kXw}mO&Q21g!+H38) zS&)OI!{fM4JBCO&qMfiTk6_hWoz&ZssdZ596N~{ac-D7U(|8T7ZGi*0B{S`35{U5mT?&yh(MkpV^{8u^!gX0T%GGaof&nZ#|TMIPWz( z(())W2Vo#DY4Kuo>|5?o26RV21ac1*SaqGtmw1t@@}YZ`>M8^(5jS+g(x&Kgg|lyk zz3Vk|uh$awB6=tdmy0=AafvY`^~$Q6;5YOlOh+EbLr_bs9p3{H*dbd|n}+DKjDj;) z7}IMmrk4o1B@5k{Tx39em+~Dk$wrA7Cmv1Up01MmC~fBPK4`TtkWWfN@jwtK8Hb~u z1wuT`*t&5Y&@@a+wziy%lP%<&aKZ+~;6N2cS=g0+5~9|68Zr6u<|@9ZH_guXldHlX z-73SEwi3a68oh{2+M^i04I|BFVZ6mQT5f}}PaHs+93cReQL*q1zyzCxVXkgj}bvJ)G^iiHs&9kR8D9l+X}F5kAT5|qmoI$EFxe~ z1M2BX*dF>W+9^IlDmT0weXHh6=CkxBCM&%O+aV8VgFOz!E%N!fZAU$U{)Akn5{f_N zkzQEGvbep3cqHCFngx~Ef&D2`En_h#HcUaw@%dDs&-RH8=>1cMWMu=7U62|{udsC` z6hHbi-6>8Wu76odpIx0#>mJ0X1Ad=&7j#&1wu70U?fB!zCokwHm5&F^S%n~$0w<6( zu&qdM+YSslkcN=z5REJE5Ksv-&m$v!Ejd_GJ71Pq-=I$*>Jh3$jYm-9x+PR2y5dO3 zFE&50FG$Olj$5ML*%P>>y85bD z^j7gwsTNI`U`Vh|c9NG0uIydIOQnY0gkhhZhC<$A&0o+WYgxpqDN1T5a{xicRKqm0 zlU>y*X+F(680=U!8WkxlBoLdJXqD28rs+x)T`tqLG=pI#@eg@C;g7Hu??n>fPs9n1bgp?$_j-jL8lMCHWJ<@I=y$0f!J@3a}5!!RahcO2*MG-r)4;lPi z-Lo89Gao7KUwCvji9j*L&uT2POBUeJ4K|0hrRjCig208~X19m+@$9s-o z*At^gEH1S6Hf4p7r;ugnmzY}0sMvEvH=n~ihbK8UbXM+d#n!0NO|1wez+QvNn+a9d zy?;}7$cruX5H)^Bm%{a01)w1L+E-^sdIOr)1uvVW%4%k`ZY$Yr4?hUFRj*yGkktq1 znsSD)LkrYByKN^H*qcwiwEd;fXiL|7=4MFkNoyMj9*A+Qh6NZtJ2KSNO)^r_U=I52 z%|Lg)4`YK>m%ms<8V4V9rL$FNWOu>Pe-5n$cCflul(Ay{s_p)#aR>Hyu+_G+0uVIX z5x+ilaQk4iLJloN2`Kh{>}5rbAe+Yydy3ld2eqJHe|!@*4Z?jqm)YGoW3`3Eu2GBF zCQ;qUH!Xlo2oG($3}3%$Qfr-k6_zKm!q;Ql4paEEC~XycD=f;rl86}TMSNSEOP&xz zbL-);zw{!mHpQo5L@|`E@tgy_ehc--)^i=GQeS#**iXh*M${0Q;ph$fnB0DIn<^ywW(Zf%Et&{#Iw^3i6lRTht3M$;UezthcYOekF*Kof5q%_ zKo5b8#W*-GZ>nO=C8W(kZJSi6AXR7)FI2z_A*_NuTabaqD_W8&Q^v~_@iItWNpH=Y zDzu6hTEYuCP)ONTPX6If2Fztfwhm1z-l_rp6u>%3lSRHcNMluiYaT^VLw}a^S?l;9 z{|Z94JGWx9QMkC35l1{LTJ~$2#Mlc18Xc0-z&w*`T%;lvXh*FUdDupqwPaU#v;Yjg_UF$996irmd zGi?tLv(}TY6A1c1iv-z7U9}b%yCIqHQ=8*M{D)K;7*$)WCq39`qm62yn)F(>z!IS~ z#uU89dV1O+${eEC`t;YL9vOb1a0yjQCF@+UkJWY;T?buoBpBD#F4eQaxTZ2y`t?iz z^`|=oS;O%F4)9VLIF^5dYvKdRKiZE6JB2hM^7+M$5Z~CBriZ5l*|y(L6TYw7@`O2@ zg^UI#RGTNHkjUPRx4=q8QtE<}%Q8hML@=DN836mqF1*l|p=Ce7Cmxu#)KzDZP#(c2 zZcot9XjP7bQD{R}u{lI#5sHcGjaV-xtF!S_U83Gs1Te5W&30l&&1tbxf?3z!u=^Nx zl`T%VN1(7damXP%M_?XtFsDzW^_PVEM#=q(ZTois7+{rbJ=~v4@c!o>0@keE0*3&! z=v|`wRHy?%P%*p(+kP(P8E1oX+ZXE-ufRaaJauH=5zs{2mQzQ3knD>RuYf;NZtodnlDB$Rzr}TM`WZuntI?I?7c>sns{n=yy1O0xt?2Z(4{5L8t^|&H)!H$)( z`vv%C_c3dC*KL@n$XxNbI^LlAOK8_|St)y3h>A~RgExJqaYC{BG-s+-cci4_WqM&r zq^Nix1y8L*DU$>U%on593^u*5-omoGj-Mk@LTNo#cVtP&ZztAkg9#Zkxj`GyLrCNu zYYc`;ir?;vWC>gDj7A)YdefxON)`ROUKH#hOTji0BeGjVt=L}D7?B)o7k0N^rZ~Z? z`E2w~JH=a;Cpkxh=1W#mn?ieve9$bDhpf`2t(TCpH8zo*plUVj2ZqeVSFT zgLw*QT{9Ha-?qMqS#rnJ3&qx+rzJ*$R~LJ%md~D_sF(c zNpII<+rj8zWt!>FXaiV;Ltz3Rt@`a2DBIwg)JY46@{# z8%dTp0u5@VOOy4n0J9+Ja~7c^s6j^bC|c#qK)itOkp{U?B`9k46q!AX%vfeB_N+46pe_5crue111lf$vd$y%Sa6eL)rzV$TR3(dIQOTUu5TFZ(4THMg#A{cTb6MTQRSFw7=DUY;lCu zhnd7W;+eE9R(K)T(mSqBHTK!bjX9{X8Kq5>f{Y#r9cY-d)Si>!Z?P{q(8ZpGoc*nx zGyx5L6I+dm4a(p-Z4sal{gkh!mN-gXQ6&{V8DPeee~-85fZ{-h|$on*V`d^yd^3 zeg^J;fn@^pq}JT1F;3w~f)b&!gpWggm?Xc7u?J{7&jmFtp?zA|#H@vIu#Shn(Kx2E2kqdyC1w{p4@hdnb*sh9_L>ixxofHHd5R`-XY z%XdKe$%4vz0lobod9+F0x4SP0Hl`Ibdo!^%NMX+*CxsO{$ZtVl0fVcYIZy;4`;-mgOMZz(|T^6f5K8~y$8_ZhSWRem*8 z`J?e`DdP$bNBYTC`PG7&3k{6|3&_qSb>5LoHD6D5CbmUuNw^V8oZQ z>-uUfeL*;E#zEdW`vSq# z2U)PHtKALfJDIY+8_K8jkGKU_UCLk)UCI|%ipuNLI?0~pdcXb5t0CKtV= zb3pVKY=yP-Z4hlT#;rtL0s?o#nil|2T{jH{HOdr6qscOm)!3Dxxe9wlw0-1<+8IbXtUTm6`OxxSt^A1W+XUNb;syZtu0Rql|Yq6fa(BHu>Y!Yv!AckTG%MCV6V3Gb?C>=u*{|P{WI`$V0oSfb zYyc}?_XM~2Xyc~NO%R@~Ph3K|KC~_Y+ya1iV2 zwAFu)6g00Tzi)pR!itE?A<5|M%wBJ12h=(0gTMQ{37~B&3M6JeLW!Dnq{v}s<&dp) z7a-TpUQCclHx0EOpr0p_KbiRR4YM-jlp&{!gJ-+XJ5e26EFE*Y&tHPe&gs|}`DI{( zRhA(of0wv+Xlj!+Q=076+gNKfc~A1E(c~l_rjCE*#4QtE?@QVp0BLg=?QFOICxLOEjtJFay57}3i%pZ|C@ULzEdB;>XJ6I zPZKdZ)Mf0Cw;6+o&8?4r0W~0@tq3>{Ft{sU(QXXUE0kp|gr`kj%!oaUIqLkZ8mnA; z_BOEjNHGbh@)j(NTY~go+fG`fgpJzc*Rysg+D1Sb4tY4XQUPUhw&3m1jER6UB)JK( zV`Rf)JA%_Wstu{{*dp&r_x{l3Mq`xBLJid|!N;0xJ2R*uzZi#Ob%_@L7s`lGszp5z(G)pVj#&5Fh)CRKSI?~JxfToaTf-fN4gT!q~NfpYOz{df_-A< zgBC_ST)DvnXH8Jr4HY!MVM70exX6X{X%p+U@4b{rJe7};E8K6YLq2htnt>XjUei6Y zJ!^)8dW#>@eqW+n@$5>U`|F#wrMH_`!_!O_7Dr_G-@hAv|av7#WE6kv>@ znwxr`)_a<-W%~f!uU_q%Iw>-U=a8z5?8>qs93#>}X4$ai{ z3#i#koTjk3*N(Mwke{_>NKmmdleT##Enf*=MR(|xKD?TZZ~LIU-4qswMblzD9&4rP z-74@*<1V0}WzuZa{c%@*6993(eRv1MTscJIZwjigNzPO%Ps5P>aVn<;;GaO{el<6N zTvh-b-l4b`hZy$#yOun5{#H8xO}q^L1)Y+1$s)FlO9z`#-|9$vhWt@&0Wqm7ze7yW z>`PW?QQR$9iIVHrF1kQ3W=!dYnj0TtpWKg&G1AnJnHL!8cpokD&W$Tzm;XizO%07h zUqcnUns+TUljoyhJi5v<7t;VjPY#b!F_X4)1|PiKAhzuz`yFrSx&hf20Z?pVu(3Fy z)lt2F!+}svFI98HcM`Tbb3FJw#jE+SXN=0S($ygq9)gAm|3Xz~vsX^>|41VH7X7UmpXGLauzcILx7o(fg=)BQiWI z@X5i#K?HoFt85wC0I*BjG4uR0_-@yOChogmkbl@M$e+Xc`#1#JFH8T!)>(Y_tmNjWcftOwQcX9=b+xvTl5+9LvG>I45Iz!M*j|X{fU_* zP;~(pplSI43jMDw)6Tx>El;L)+x85-Wyk1o^rrZ2%6p>t0g1Gz^_ghL$^#P`)}J2( z=j3@rIw^gd?-Qgo#WOxKtGV0qCUxw~*pml<*dE@Ee}mfN-24~gxBIk5aXGcOe;y#@ zMWs({0w_NT(4>jYm1OR(C@2M6Y$X;5KK$7Wv{*5P<;9oqIp4aG^UyFxq?ODacEo-P_?){WAD~ zz6&7zYvTV;{QkdRWw6AxXzSNKf_y!W3LIV>bvObz*5SAv$4fYb?9`trI~)K1)&DZg zs8TelwcwnYos}&m4Gxm$*f|fzWT5!%pxP=Le5BL%Km*VZKH~cd=OZqhFpD0;P{xmN z@^L?xw0kDcQ5aaCFhSkB@hvP&PWN-4NX)0NBza2K{r^WB=~K~Y!|~_ZSPQMH03!M- zNK5x_qMtj&j@iCO+;WnHZYYC>i?8&JzDu&nor7o!i8`|~KFzlM2;CdU_Y)4%J<=|c zh?q5nq*c6-6CWfx{o~hR1@fOi^(AKRNU|T>_J6cY>FEXJ>>bol8cNgo1G-Cc)`{+N zIjbi@PsrIT30hKwM=!%wKT@E$mkV||ZIHVdJkhae9Ct=~wvyv&WbKdsnhKf|uY5hyn8lTkICG;yzKET3rq=Eit zutr}HAgtwIz;>8a2glx|JCh*zTXdK9pGsnXQezkB?%cmZchl?8yPJMz5(IyX?qWsa zU)Yy}RjmXzH^WetdsGD+f0K0W4~S%aqEW!c^1wBe%l|!H;ox`6r$LhrVo2U<6Mukkdyi|<>cW1 zkN;)RE&flAS)BCPl9@H>_mm&fl;0QlneB(;AHGyR%B7xs*pi461(4T=cy$4GUq+gS zT8m|zh>GMRx5MM0trcF;&2TIWNOu)-70QUm)B3na5r~(O33Hg)UL42fU~}EicOVjN z*OPWW_!XaAShHn~+p$O$p)rcqgS2B&;?xI}5gDyT*rVOcZnXXQ1Nd)k zKR%1)jf_~oTA2BA1a}Tu0+6i+WPWWSAj8H5lsG!MLF5>_efmeYl{4n{OOU1U*w-JFGYtrQ<`@brRS^+Vi4^B2zLk4>-8sL4Ko`-%_XL0+am+?GQmoJ zL^x~^v1`7ja)mHuJ>^lP{YnTS%FEJK;J1tH zCgVG06Y-rT7);8~evh32*v?-P>Yt`<4Y9WC7Od^MiJV&t;TPAp354qx#ay=S+sNwx zB`WGar^Lo-Q3(>e?0mhy3%fEDj`;Ao5hpspSNN)Cta3NDltIvJT-LvDq4xlj5bruW zK1;zo?9kC*q>!~QHMZtBCQ?YK^COx=a{P1At)@xEW=$&AWE4y8;IZ{7KJ|F|nDb*h zc&z+oLSKW-H?+aps6K2z6_ISe*`vgcD5q;}56lEcUIQJTUqK-9pv@HgZ?+7LY?6 zp|`PnP8x_zuBXD7I7O|0LPsF?wsSdW1;~rgtp*@9e#g_}dM9bUUwkc=y3D~F4)n*d z5dX{-rbJ9Jvz!>W*(=kjIN&S{K$Wm6XD+a_(5j~~R#=>f4i#iX@5{IV;q`nAjUzv> zfV~2^eu*?#mr30v*5k7NDY~wdcLig;sp8x zHNFSJ#`=~EWlP!NupEmCbZ!vWvuP5p)~hvA zS6P7&D)3P^y3h@FmWCf7f#0RzVKX^Ev*U{ithe{TqN zAs-RR5Cz7&`umghpGz;S|6qTkfRl^5loE6h`Zg_$+$9?Kd6)HklJ`m@ST{XNI|feC zujXI4ey(2;>I@AljLK1S3mVYl_`Gub!#A!j#U~7dVZ|3v^Zk731qL1%hA=efv zQ4NxA?W|#uTH{a~oN8r0D0L`W3FQsnUo)z1Rx7blwYyRbXS0vk2cz`_EVj>t-{Y*d z{8iq*kA0|Jk4s#PJl_7p1lN=s4{IG9Rh>q<Pg6an6bFy}PS+QKTf0-{OTSSXr#Lz;vq6E8X z^KYbE@s0G+{RFp!g=PNK!m^;n_KW33Ew*3m0bI@N)#XL&Y|q3Hp=9Mng6|q+*Ij|6 zN9518_)rz%O$Kg8zIbzauuir(eIDxbZPQsBph1$KpdfsSDe6oJB5*x)nTSgtu@%0wY7j>KM>b@cUs`MUhXC`#@Fk!dU&`#!%P zt)Ot@&~QaIGRXSrjmgqx@_qti+VhlB*j$9qUW_*e8#L}-<}ikxPzq!pZ6JX8>*Vvd zqK|qYV&5+vlYG4>_QMIXdy24G&-;a7UdTiW72!Lfp+bO|g{>7=?SRMRWaM^`A%6Xn znn=*sphmPudU$1k7E%3S(>)o*ClNn=9#7gBo}4#Dt_FUqUC{u@|Lz(yw1-LG@C(ZI z{F9+U?YD;$34Fs3AGqO_r86U3!;-PHENqelqK3w0)xHHj*wvXWgovnV)g>%G{#A&} z5K|h~e)Sl^1q!OY1{s}dtqUJ40QZZ6`@P&U`cUsweoOij1z0x~vBj_*qU%cN(_i3K zBj8m?ovkn7pO=Lh+Rr~P%P|?G53XP}HBF7>vfI6FZrb_>c|`2Tz|qDAZg$mw(B75oPrfyQ(k2TH~%xWHnlmTYCKn?*Z6V9j%c@I{6-2l7`%A zbCPEggDN^g`>!TpB7ORSs@B4}XlwYmG*C75MbMFElRdp@?&txWHfPoowfKeij zWvsD@nnJ2zK!b!NyeA2n!SV=gt(~S=5oQb)2*gP&!(lAF*Z!`(eR^+O?c4TR#YdG8 zB;Xru1%x2hYIh9USSS4KDnTH(}Ib~1u)pM>M&XYl{Nyq%I4&#$Ep~5C23W%>B~%wrJs&^TJF$>Uui`Z znVntdrY239)RVJu$PBfhbl--6rPNB1fve1C&FD;4SzXfqhD5o1jW zNw}aHYP^my(nUq0<82$I5b2zM2V&Gk2?@CLL8Yr3L$Xv0=+GgmEu6ThFBa5aLp7Z6 z;9ijAk~MJGB8~;)`~;COa1ih&XXYcS@)uY)7FyZA+tO5G2tGw`X7@zXm+>%=XAFOZc3N-Yvrhv zFVp3gY?rJTf60%zjbwW zqZ=1!$ofWihOGo)jxnjs8RYNcHOph{=@q!j0zi2z-f;uKeL+t>AiaJ2ey90@PLsz_34 zYA2NelFVUSrdA?n$=Tmf(umK96j|i8GSEFLRf&4iq1K|D$)q{Qe_Z{FB{Vh^>m-$c zLFzOL7zJBoTHGq;DycTwIKptjtvoz8SjL?qS^xq8wG@V5Pc>h6$4r}0Rq@~!^fxh> z^iq`I0m@WFf~r1Ln_{r0F7?dI=3r+Kh##(1^`wA65H(;O9L112XjH=;*1|KoglX7Y z8urB~5IeAhY4SD`ZWzlDQN9BdsfPQ9L|@-yOBwN$wO$07ce?&dR=3uI=ZpZx!`KBM zF+`I^Si`)?9A-TlUplT|GsAxTqFfBGY2}SGvWPyw(H*bDVEvE?)KjYSo7@ljKY>nn zyz4dwqee*-%d%qdRTjc)*3dOYwg0nG!$nlBxhxUsLy_VFB75*;LHBT38+OYEWKb|D zQI;=BuBOF?JtmIruHE87AE=gplv{$;Fx?VmD3yXbWJZ(rpH=n1vOyyAr()*VuePIw zu`v8NnIEs=M+x614SF4wmxd1CZ(QSVd(}03k*m7x)x5-$L#2Rj5puI^Vm1{Lz-i

4#&!I=jDkAu#Er<=nXyx^P;h4`J5pqZ=i#!WN%DJX;l_jZl8Ach^au0~j zy#k~WI>g=#MSwySa22U$*@0`lYh&)mI3{HSCw}l2gPY;h1ZK+W0LB1M>opLYR4rM_ z+EsBUlFbaUQ1IG%Ps?0>LZtWGJT0WFwL!l893p5SFiP%9(MP~$){N&AWWQp<14~(t zoOY78sc=Da1B+J!*?if<4}iQ6LaTtbYYNk3@%2%uxFli}#g{}NF1Git0Smv0E@#t| z;4pNecX4d7Hb=!S)oYhuU90k_maego<(tCmo^KrH6>WDR@9ku+sokGR)fULCuRLVp zUhg#Q90(?lkqmJZCJ0q#5yolpg7eQTgPobkukA3)Jlw1;06(N_k(fU z0gDCzAjtyZXWwMQR~iHAg5UNuPp&T3+pX&yG1%$J{-&wDN>T{+N_)N1-fr4+Kdsx_-aC9ZwHV8& zpf_@odn*MO>ziMZ5-^{(3S;4qa-**3GgoLVlMZfLIy^ML0Yx9}?_${DPI{N#9&mAF3HGGEkUbbLv7 zO9>hIvcX&AX?>T!2Jt0S{}1I$U6SD5VogWT^i0;&73MAneKOo_fpE774UvG7L(S+3 zq{u8HdnBcJlbX9lz`73gy-X8EBj%VTyvh-%TZBTPdR+~K@zCaZvp0t)ZhXc5 zslA)(C^;3LXw`bYMKs-xrYrRpUx(dDjs>MlJ@-7pq~)wm38RjvSNQtielf<#Ai7q) zVd}wQsHCu2$u|GgQ_V-`4v@5@W{}YmT*wD<#xH`4_(OCkcZ5yiGdk5`;VMkWxFfiN z-ySQV?PT@TDeHv|{=MrLUHm*#i~uI=XNt>Oa`FX}XuIF` z)?Q@(7^bqYxSmng)~R22n>d+9M~-2$FqqUxV;K^YT8L6~Hj+`*kYdR%Cbja-P6oRV z8^L22^HX}(_e&(hJPX}s29omx-Rejs9ZZspu&y9E53jn;_cG6#bsgyTxVm&-de(I+ z2S@@rV9P;KXL5QO%ODVr4rK#H^JI^8s_!xII`zQYbcfIlBt#PRhw9WF!jrcIuj2*o z$_gVqPNW7>^G;ddj7XK%KS`HEK{bRTq5ZUNQ`aDW@hYr{T__fYffCop6S$VXXikW< z?y%Z@>X%>R`$v?U9>}?dX|!HnG>~hB*%Z0!MN&Y7`>sny>BHUTws(bOmk%J!Z+38p z-!kVTsn4tB0TnhMs~iNpv&$BrE^^J(jxs*OkR3N&Eqj3c(KmnuX$?sSb0gc2vf>1iJz>| z!}K*2G+eCq{6%0U6@7#)q29#C3uii~A7}a`(?{aNvy?7#qoo*#J?y}EM(UxqjmY0< zvtgs^Q2x!x6^Ly}ck{@qN3_^8vyBdt!#jgA)sIK2i*cvkY3$K zF-d}h0v6_R@9WIER<@-2A^n zJ7YhiR{C@Ii(kC;5k3U9eg;8f5?wlm_mAqmM!srwV7?a>LDZ-^4mDHdVBN@2m_7S7 zL21nWL+R~lwPh{rN2J-8RW-_x{_|;d+d9S|^5b-Ohh1BX-tN+j4P#-YMHwrFGJZH? z%P3sK&=G|oXoYK3kk_xoH| zas4OX&GRq)&%NaQqjN8gfAB!RBQ^iv$^YMewh3$2|C#>Eh&Odj>oiX0g3f1y&R}uT zgBpune1HudGoXtw;yKjr_H{T2(zbP0`a2i9y4M;D{Mw>^>z^T7H*`3J*jtZx*L66A z)uz8zbT}l6BmMOXqY}gY##^XI;I4^2!q$(dEjuuee{S}Bl8m$A!Ur|ySah3Uk-Nh& zl9y3(1Uu*WL^2;Jft~*m5}5X_nljiq&q2OG8X+t=%-Y%0m$OIpm*c7%K>?e4h}s|# zbrpm-L0V*iuzAno^8}a8_5aR)c2^FAap(a# z`8QYo%5x1#Y(J>USmPI2^Gy%wHLv1>N?%&NYS)?P+qcQOwQG9NzD-uYU3+)hwb!U! z`={FV>7{mkqN!aUVQSZhoZ9u_ruJ>Jcq9~%3taKay@zJKR@Ji$cNnjf9SSrz*vTw--daH zyGM+KANjSs5j19EqI*pC$MyC#C49TSc}>Y~+sz|L3GpsMd7Ya67?_N_+dCn4Q=<2h zSajM*9*;F(A1{W_)QZC$^aot9^GOIL&LqmYzA|d~{9p)CvYP(?xB*CwG%C^zAAtv+pKq$2 zXAM+4Z+S#3mWhg>ec95%0mq4>ll6Y6N@4yNv%QUssiZjDG6Kv^^bYlW!zn1dBsf_?f{7z3^^(RqmW5I<+Z|Nzy5t|<| zUgUu*O)G!tDUz_vC@ws1Um3*wXG{@AY5hN9jH>;(1ZLmGDYu5njt9UWd$kZ6|+!mY4 z|BS%Lw9|ibw@Fk`8!JekYpxYOBSsTcKRv0JjI}SY$0hu{K!=*H6%ZDvhoJ=A)01Hb ze$tNNgviw(e_u#Es+2&JW{6MnHLvxG^n;UU^csnMnp09^dS=G%W0G@_I0#)s|9g;c z11A1v-XkP+#K;nV=S5Q@*-soe6GBAJYJTQO$|+ zBH?|Q0ZMnr&l1NO;HMh=i>jEPNOH&5>ZpXBRAZt)bUlwRl`s(;UQvns)usX!!;obx z^N|SyvNIpDQ_C|h^?R^=<61MiVNPb}=Yo>rwW3yqNHn<-hcZg zTBOJowp;=p^sOIoYmio!#)qloNfAU~DojBnLcGJQ$)_aL+`GAABC)sy6Swp4#gI(d zI8bqd_(r`27-fnywe$#v;|QKX;$TkmD&_N6%4qdSDy9>wJ|ZSIE!(` zY8IPz<2oXuDt0l$*t~2s7aA<_1a=% zwg9p`IXgc!JD?&wrdCN)O$67u$(Az+U(`%^VtQ+KSeSBwEPemJ&o=w^ntkW+Gx?;l z*rM*ePNqfJs1KX6g%%N)`YEWAW<^9( z1}pN2`}y`iP@*4iH`gDvg0kT_0o_D0!dS!=^f)APL;w<~1AGo*X`r+2%Z;xF(hHHH zk;MP-GYb*m5#w}*g>gqqj#s+*raAMn zkBmpm)Uqz*+anj-6LDX9Xm5W$&5Zr+Spxc<&&d?E#WaB|n5JJrD+3oI#FI{`u!#6{9DJY$evT@o#p zZdFUVOUg7@E(o7``J#W=Wsd2F8DRa6X1o05AFM8iNteG8N=27bb(f>g)a8nQ+@<3T zUH*MJBaF5W7x*({64J80|yy>P$EAu~~2OoV@&7o(4XWCu)u%iUQ-*W#3qPDh|>qQ-C!ra z5jJas1HN>^+HgAZN89J&7yFH`6oY!05gRUgZ~im zE&t;HRJ!rmzCOZOw}B?7@3Tc3>GP#CGm9TPO=t1D<)b^BKaoJ_<`bvkZI0R59Nk%X zV#5e8xY9w@i2Zqs-d~DkiF&HLA=pKY~w3_Vqg9t zdXJO?5koVLAWw=Uk(xW1_&@=;=NseE0PAYiYXDnItt*0l2d9LEK$zau4tv*Rq$%^X z!<_VCl?$JgeV3N_ANVDu2G@FrGeA)e?i`>ToP47Hqg#0Nf1(_eqt2O-FjhXk}Y0l z`g6?uXKxecTx{%TyZc14L=HdKzPVBaY&i>e4$f^KbV1HTQdf}(*pGeW7}{pW_FRYJ zDf6rFs&7BdJUB^mqA2!Ba4F0`F@mthQ<~+uc1}B8}fcVWNSk zq)9W{O@HTM^-F9=Xue1XRMA?18Y3t1Tqojn?hvWu)5&qa2N_A=+%f7opCsXAdwJvSwLO)Ca;1_X68$4bkA->M$$*1 z80s|xo=EHO67PY`<&&5X1f6%%D573vW3eZ48K}sup4K(8FqLlO#z5M1Q01yln+|?_ zgNAtG0}7JHKAU*2FYY8cbTwA5Rc_-+!+Cp~8hJ@yAEm>3`(h(f&aId@;H zJIU1N_{gpfP~ykv9@v?LNu9Yfq-?*;2oze7AFIb%C%xt-Zwz$T=uYLl%18Eh`qbVO zN_xhrVNMFD8$QtJk%4;4W|qM?%tDBn%+vakyxu7Gn-uFX({~2X0VqT| zV4~GP_!AM08WNF7#G`sczE=8^oXKHbjiRH=^k3)jvT!(@6=m&BqqhYGmkr#N67BY+{1-b#0{OT2P=CTkHLAOn5r?yL+{ zQEbMOm`AiEo+PcxiSAqeO)2t9DLlw;aZOm=a7gCkg;W#}e}LIXeWzZAR!KBUOQnuR z8B4_tA|Y|)6F9qYlXIyU7t`Ar`*hHZ-;%16;3s;u@Lf;qV=}D;PUA+9*<~K;TM!^{ z3OYwz6w@=~qA0CP)_LNhD)UL4&IwHv$4&Q{L=F%1>ET^s-KdMG>sW|0g?C9%SG?)J z6VNpql(qu8JeiJlJ!F%IlaX0l2H5=hYAJd>D9EBzV;%VGk3lJDLUxI})Al5>W!TlINAu@?ueB{l6SMvt1Y zOCvK!vGzysxm*Xvf+$4z#m6%co!CEQbb^>>gztR|tu=E!d?_n5WtlhblkE2fvd1sMuVTr7Ji{qL=u`V0Zw-G;Q*Y^S z&4JDEV#SxFX6Lfrbz+|PBZl69ElSJ!vIQi<{JTrIfsxC>;Sj=CK=~Eld|v=mYyt>; zhjWo3Uf3&U^P^bNm>b;JJAxy7BaLdeCUfpvQ_fqPU+LShv9EcLtqi6H(GW0GSgnOlb$WoW~%vpsClAy zTqAX#w=UT)9Gm*UR(3?}6A}k>9*5oJxA+kCjccKjv%#z} z{2@f4dm5Hik=)p&HL~J*+T(a5K1RZQByJSU`X;H6Ug=EiIWLJ!#0kY``nsKyj*(wN zhgTB_gs#{2`q<$;)rn`uOX$XnUzA}3Apjj{znCHZZlCsv+57)z%YMlOEJ&C-A&I%- znMw4X4IQSKQ73T4ef^6A+UM882bnf*J+AwZ$_b0x`TkoCcPcl_cjZK|0##E8$x$)d zn*w167Vm#20)era&lw$3um105kp`OKm9KTl@46y`d1DqlHFHD#9GM6KOoHm-W7PNB zw7*2EI_x-+ZiO$uJK66`FAZqzRgbKJ2I%w)ulKvj8>@Lp=cj4k`Z*@p0nGl&<>BwU z`3&%RiqC33AK>$5K5aUEVvfT(RHr!{LasxXDUVA06OL5iY1FGHV-pk56*l$%taXZ{U24@>Yxva%{!AEIgn z_Y=F8t4jF^ts*bE%%whsTCIMJ=C8`W&%2|d#pj9i^q;)A(d`d7+KrjziJe9Da{P>w zF=eE%$Z+@c`9XcEwwKDv^g+I}&3d5-LHp{R;ATB`E*FlUT77~|GAamLGG^!+q1c8l zo>NXDeR*tt2@hEha0JeJpoj;kQPfeP5_wJ+1nloDOqK!&Cd7hg|7; zp;GIZB@O86p6QyRgUW@XN`>7N3MC3c6pDyhTbzw$9db(BUnv{yrAIoc4L7Wj>Z{UO zKArU>c6v+SF>A0kiD9Zd=uVWCuhB2$Cr47LBe_zF^==C1?y7J~Ltu4sSy6J?%H*>0 zP0J=HmrYGBD@!hmCYKdopIml1SIMSjERHX^tRT6}pIjD8E(^i`E4;fZrr1>#TiaMr zm7HH?M5tRb*Qg97D?*zWOx`q~0t0x%rW%z%tlW5lN+(1Wq~{{bmf6q3q$&d;_3$Pd zYb@s2j&ZF9D`v?#?o`RmkSND7$1$q99t%rB>Wf#G8;wPreUVIBtTf?NwdBX37+P4e zY01wsU6Ra7gOnYx#sp?@qN03L2B6ycP693tvHLZ|1(cD#Kc>Mr1ko85PhN{P$?*cN zU1h!t^u%*NcRJVv93KO8$*4QI#+zKZQdhO57OpetPgSi+ZrUW9W0Q!Cj5>L3l!ekI zaw&hiXw#z6x)g3um(G=nxgD&k?7u~GQ&suNszB|7yXF0=P_k-abooKTHBq$l`kww-nprf2+6r0|NOfDRFSiN~Gr+_4;jk2R7Iv>S4VZU6YO_ z8)Kp$Ru+Vl2-UV|*~_p!qCbE zvj_pF-uXEd*(eo0$0Y_Jie@+r=O%zNfjl;Na18H+XIq~)@^4T2lg`_X9r11vh*83+ z(dQN)i}~KV-3A`zvjL4`4@kU+9L%ao3wxZ^b|oieP_iF2OYaXvtQ3iLdfyCFl_Zn< zZRJ;G4lY_uMMl+V9-)e8QT9$xvdIlK<+StWYly9PN2*g{Z_rUgB{;B{5=(hD_4x^$ zovd^1D!+*wSa3xE=ohWnKso24Br^L?u(%m%r=;M?q`r$`u%#fLsV$*thBvI4eB&mwO2ZZ+ku0v5SwlavZw~ z_fFbhx_9-T1n@F}Sro%|8Ki=+Pk6y_Zq-T3sH*)N@N>!yg)BygP9G`NXRZ>X9GG)FbbIwlzyH1=$nty%xTCq)zJ>QD4Na zAxqJSv;xI*C))kB8X@}jg5~;byLH(7D_ElJ%gPZBHqYj$iOVXQKF>{I?IDChS?r$5 z?IJ(SUP-(FyB%#*;Cu`MMU~x2 z&r3nwXYI$2*Bd+9j^sKjboL8fAE*c8B(c$nUPq)cMBusa&o*yo4uL(L`9bwvz{kWS zf|b^^l=;FDV;FHo6Q+}QLK+(QoBTqh&wf7`IUhaCd6@L*z zHbiiOgZsOU>Hg9k@yWE+IDwhlUSsBYhpzRS;0zdTg_Yj6-dsmzzWMTW@1%pJd7e9n z`ejXzByRB!kCS)Jxo!wCPNjLVXN*~7mXF^fG-3<33&3(xwZ~btSH}#iz2WCbHqx5&q|>n{{nJd_ zx~G%tZ3qQMyOulgAK=k;#J|{S`*2jKvQVK+{IJdqQv}=h^i7jQtgA+}DT<=G^q1A| zparfxC&%k((>C1lW+$p`vzefaecaB`NYgBzK~bqku1_RR>ifNHHL2}w{1IEJ-?%v+ zWO>neg1EeAO1m~()9oyMV?&|&liPT_@M)=e+h$M2ihCVhiK}cehZI2D<%Q%?HwR(T zPR6h$Xxbfi$McE4bDMt3O?I0UlF9UM!k5ai7B*0295|D|=`!PQkavmSeJemI+BeMd zv7?!nzgp7uwQJ_#boA0`>+|s!b%&F)fVFxs_g|Wgdm2fUlyB?!iE{%TL1tj z7a=VAlZ#yOH#UP5!dx4@n<|GS8+};@ot|G2^LrbEcR5`TSF>>iboUEmV@f?PY6w5qFA^Js>5ue;u>sCQ?=WDJpU$$$dX#GwN8q? zAwr>R3a*$NBqGh!2dG}kcp#f!rJcYW?GWxKu1~e zDQhIFCU$#m!sk;bqu_Hg*Ho@Du5zv_uDM(xu7zBSxR!7&=emw7%C&-PC07hvoEuy7 z7w}iIq&oWCUn97ckCpam?mBvSB#_wY3mGjz(RkDYSd%yd@8)@QUuU(L^VBumH0}tt z@IaxEBl!iXEnFk#U9`!{g$Z&^mK14l+}NY$4w15 z7de?F>`N{~V$R>RY)D6i-tcN8gQer5Ixt`Ik1%9Q3(Al`OMgZ2m?rCjk@u6E=cKD> z%bvbP%rK&r<_;_oZLHSym-)HY%^t?kW2&xNvu!K~i;Pv4EQcIN2|y9#0;sM>25La& zewKQqqQoL_@55w#H-2su*d~{abLsB5yZMw1&eJNHVvRYz(mCF3N7yJN)$6m*@EL1; zi4A^R%wy~;t@Sp(DY>R+__~LX(=8}1&U8_P^F8%j(emS7kv#D*mw>Sr!l78u=Op?p z-4(lN%F6th%P7m|Gv1qABTh8;gFn0dubvnCo6m}+2m!%d2-`g}J*Qh4i$Dh2mKo+FGRBFP5F(a>~s`^Uj z=SNn1gjF0NsvxIFTd5Atbait4;J{m*=Dz$|E<~_9$oBdOxfLql2zzzN=9Jm~_^?AY zrj)k!Y@;S02KL4_p=O=?bq~f4>yM{4&rS=iIth$OrxjXmy~eBkPgAP=oZ49FrA%>I zKJ??Sx|u9er|Gp+X~S?#`Z1fQMbucd>$$YIF%yDV;2A}tn)bQ}`tioXt!Nc~2e_0m8|RGD(;j%9lE zdOgtXujb`S>zc%;>>7Op^&$pqQqD>!=M<*J%!g>Q**#XM=D5zhEY%#TNoK8TuGcIu zOoURN-v4q!KdTfViDf`cw1d_Fj6M^-AupB;6TaO;Oty1w$_YJ#;0RR>SHtt%>em<; z5<4L@mU6;))BB6f)r%lxye*W>tG=ZNpo1A>=OJ^s9evGx+}qH2c|@(r{uqDN=qME0 z)oZ`Go}S#P{3(08YgJvpMY|-j9tD{!X6}by4 zBTt;PH{KMJYjD2M7r~T!Z60rYlEXkeQp^uLCwS;u0xL8k&r$hsH*S?!fdec zxVJsUYeY`|4vfX2=cO$7P|;{`Dw8mNt(cJ?SNHHdO&Glqz6?M8uoBRW(hVq%Q)MTH+@U=W<$)JiNxhjt}IG9 z&4yR=)+bLN+`obs16h;Ck~ICwx8j9$Y*%`YFBhFQ$GJ2Ezs^VA$;@#w_p%zmm6+ca z!8Y-Jimg}AklZ)s3_)wG-#g;o(!c3B`elx5m4ayiBew zXgV8f-?PSQ4yP5Puxst$?b4GX4ts8Y5uoyyW z9m%oXS6lBOI)(IkRdrYTo%jZ*JyAzmt?oRZc`kLS3D69g*%0m{sLBZozbLbk53bY{ z|NNdUmkLU)$8IEp$*-~SKizPw%*6lWUB81e;&IboyYA`#Me>1We!1QHqCn0rIo}Rm zN#9AVYLnj(2>L)7+TOgc6;~lvf#Z#RxbusS# zEC^xVru4C;_f@Oqczv~wMA(d+1xv0jX&MEhbU1GX05+NUu62J!J3ZE8W+ET2yrXyEgA_T%Z5D&HE6auW_aE+1C%BGlawQsnhUzoyd?xs$_xi zPFIwB|7g$VpLx&v1fTC=p5~tQ4%oBH7p3>?dI<(h;`8sfXIGJsWe`DmSww72`zQh~ zNTTMQ{?J46(4ZOognN1hIxpjNcH|n7bMewRaM751G9TyT0IG9L??^p^*BPlDDOW;x z*1P+Wo$nFCq?eG@BL=H+a#Mgk`AoMf^`oGy;nsfHsJFYtQt{TLzS85uftxl6zf^@X z+@(4_r_+`?!H{mt(rkuYQ5QQ}60D1NjX+JZ&NdKsJ5dx2((dU45%B^qP=a=_e z1b^6C1pEfc>G^D>zT_>zrqSBoP)+{n%y#Nn_t)0G4rVVMdv1S?e+S~z2cNXy?P-0( zBnRvSPsfyRR|&8OCj_M zceWr6F++{(j3*134-*h%vPeOVs;kRP!Id16talk#BYECLZr87*M--n&@P}wO1b^)4 ztARC_{Y6m61-Q{pF-d49iFBWIZWb5Dvmz~ewv2;vSp*_YkH!M9%))LaZX+uorRjy~ zpK_S-3Jx<|0kO=zt=Ht^3wbM~zKD-Yh zb9vQeG=kruG7!&W^d$Wqh>|NWJdFZ$qP3YDA37TI-7ItKW$O;2JYVFw&E>(fH&s@d{hVEGveBnbe|CyIOKa@Svo}R%@w~-ye|Y+{ zBjnk+Jj?T&7R=^Zi^0ZDfA*EXn`4Mir)dSbYae!k)?s0{P@hn0hD$cj zxViDq?ShO{^Uo+7|D0vtw1n~F3F8{gjWIasf@5v!R}%(7@_5%cMxpam$YL>Vmoc&Q z)A5mo?T#lMFO;^g?m>)Q>bZZS=l*jF-@*IEfo!th?V!4StRi#!(*CzE%iJE@|2DaC zX=G^O+p&?Y$Mj-t7=kmTI|uq8lCn>ra=gnBO_IP`otmj3mec1TQK0NrLN-P2SRLrCULdJ6Z3EV7Bt&wXIFogoOdo0m;K z)=n7H3R1>VJ|g*5B1{uaWj3-`R!nW^GY>mFldLFHZ3{I@9&2~TY6-hBs+~rTgnSUO z$2q{q3wN~j=CDAx9CMBQX4c^#>u^r#UvD1Gt>J|y+xl{hxevb24|_@v#Jsf+VY0Dd zxBRl%ZoO8xO!_2H9%Y79xv(O+3!4HMBCEBx3-2O!Bi z-Hzipp+m%DiTk;p5T(JnUj?WVobRqP3MIdlS7JzrWGXPe;*`p_i;1joaXgY+C=B(^ z+nLI@ua$Mvr%c-W*$>ieQuqoE&)(elVuSp{URGo*I-#*&EadS^u)^Ry`Q)){ z^6ccPfIG3`zYz_)!KPmB;kjNRrG1{(Z_8>@Db6?0HlAipyAxfxv2ls69PD}+6K8vk zJDMdJq}y$r#az2{L8g#&RU(Xdy4Sc@I?1ZvU{=Obm006<4zN+9SyJ_RCBl8ZcEZAa5qrkPloDp(<* z-XhCsOH-&jUrbHs_ct}2#Xk0Hb5pfC%N(0Th=%KG)W5!=SJhgkOBo@syNG4VA)_>H z>UG-A2pa6_3bA&i*GaTN9taXoFr-!&t7GNf(PEX4- z@)Bbq3<7)SOl|M1^C!PtV7lL^-^A+X%j(McLH|cA?`L!~vcB7;`HVU8dE7l>5%<)=D<|56d8^eZh$7ZXsA?yYk^U&t$ja@#lG1CU5agu>XI0HJ< z$6?ib5g8Kr2rNIeb}F_$uPYugf%Cx?Z~Pn?<-Jca!Um`EyqUq1IE6 zZ^r(1Y$gvMm7uoYm=BYI?g$8N%25(M|1Y;wTyp=o?Gq3>bSX#8V*spEQbPBiCOvM+ z!fciav)QiJJ#3|z9+05WeOm=?n387^AZ+xK0!d(J+~~sQMHC#Yo_LiQOc@9Kpw=@h zLO8j!KE_-T-LxRFwIn@?hH1fCmeQyzemAA=8_($r{<1gM?xj5B`KF`n+;o3q;ay(O z9c@Ni>vm7e&0?((p`BRsng|fTO0*-Qs;0v)Q08#g_uAvRi7B?&P-_*IwwrKmqy1l5 z*LV3$Gh}K^z&^f=^CY##o4Sd>>%P&8blpgy7PGc;N+@K{)>GS2+8&!gjqXc8dPlFL zClW4Hh5P%x5_?7vy`5n{?)g@m{B5+g13P_}PC-EvA;cj??)li&hO_m^SOD!#$;akU z&Xv_UabGBUBwu8kEmfNAXxyj{MV-XLhE=1!>D4!dhWR>&99n7<&`poOVPfA>%6vO@ zko!EF8VlSc|B>grZ3Hf~wbwR`h}01({;Vdi7^nLdQ$%YY*30izNdCco@*3kcU1~Uq zWxV0o^z?vB%mG*BTsc1{KH3~`tvXm~4p>J`hRqSzs>k(R3b;uur3`s=X2|w<*RrKr zT9RL!$U#Fm<*B}agg5DV#{B&q0>mBd4I?9U>b%T|DfBslb2aYFjo1i1#XFdyz+9$7 zvZSYG>V%4!8OdPEyDr{dV||wMY0}5UQ3^fi`dCzK#ePQ&1@Xj=dSV-b zUM=R$P*RYVBS5iS0ry#nwY|>RywvI*^#%eus6D;GlUjWwoM`W%CDm$@F2LP-BQ{6) zC&7RxoVIG&MG{R>89_=N?U}Bpq~JED!X; z5PW)Rr_2=o?`>Ml1Bl;F*w%WNs@Fpi^G56%j-pI=OOEuu!hNMXc-X&cG#D3Mp#_Cj zmJx0dNbGbudecnjE$TS9;XC5e_O6qlCozOnOik=6Deb-aibNlFgvSD`aw=j^ocy5C z3&+XBgmxq4dW)yOA;(YV=Rd%($FrMK~t%Oj_lX|I&|}u`qW4m5i;aJ zp?dJ~HBn8Zz#c2Hc%Z8#9ql%8XYb+0~_M;7-^JF}jOpEZ!!{vJ8aa7#kDJzqb}^X$5nZoBtz8-cH#-ymjg$#kHAi* z)`$`@HOw*jCUk$jL*rKowd;tTD-;O<*8*KYt@yg$Jvr1B*%jR_o8ld%%H%Dwahmh! z+>i6u`g`k^;dbwLxPHdpsUa$0vwzoj`OqIy# zVqsi?mY#;>OfAm*3|SucPuVluTJP5dt^)Sd=OuUrgf2)rsB<8^6m!-EqF%+txi+ z$jbr4k<62<8{|5pOikF;C7!Le?ve825=Qm1v^e&7yJXBy=5 z7SEfFP1-K@L_9BvZg1(~)yKLD`H^9*-~nUdw|z_(kvXdYq5yWetVhgKYgO5?2G#(MxuFSscG4_)Hke_7CBXvUG7ze3&96&e( z#=|b;bhZB0#*o71Bts$6s$L|GEzpet#;#S;*g{z#u^0{<)g8gzG)eqROYk}VU{w40 z(4$)5SC_uSo0YmDB5b-YmWF_UF-Bmp1Q_6#BAnML0YPEWPla}Rwn(L6W26)@^R)aO zlBwe(JS}hVClSCKo2X>wq1ew#(W%KtCzVGx&(9Pyo0HqMU7lPB{$%FPk=Bo#K8p%4 zVxHz#HHfSQ&lR8?2nh%Ig1{s@717*iy?Z1t2=RHc?Suo|NW5}>YiYWHC0sZ?6kg~ZvRXO zlPj15u2{`~RNH18NtG*pHm3^WBRd_3ICtgh9N+ax=>Q~Z$PF>whz>OK!<;ql>Ydx= z_`fs;+o1{O82&?iRx*aX>=^D4Nn7@hIff1L2*@+`e;p1){|Fq$r^hfPI|lE-F}x>W z`M)p*+o4J382(*45IB&jG`$vEdI!Lv@qc>^R|q~#?6e7YTNqs4>EPe!;S&-H|I4>E zr;D1qABZ03c*kdY(u#3RA2d{?743S0HG z+|HNI7JUy^*!kVy5pF;<6(2I=RExeNj7o&*UPo-2aOlrshu4j55K~9I4lsrpuAvR;IRS4g<{kF&ddFLPHu@1XnrZ6VvZ6SKl|^ z53nAKI&+xnfg{%Hb&iMXX_9(}U=lzW9_C=2TB5^O(6!^2Sqm^m+8mW_b2e@Ayft-1 zkUdwJlegL{r#*A(M)`1;;{Yp#lqG6A>JWbWjNs69E>CLh0l6IJKYY-O3FV9}$BY%b zN+Z8J92J8_Z3KK%zr(Vk*U8iR5Y=I$Eoc$Y(&K6>gVFoKsaN;`QOt&`7hl5VMLg?4 zt_%RW{#|}_a7z3jYR;bZd53aCR}kWtLGZ81@4`jj$?&<_wztL>9!4Ew7!kjkubCoo zrMjJcRFpo zk|wmO%PzOu|9R>wgJ+nsJ3+s(T7e+ab3Z(fRWSn>#lKU^7LWU6AcnW?jghIAt$HZ( z9i6M%t%W-+Ri5bjqIkvl<>O0MA0=9_hm2myfw)uSol{2QY5k7uYU$n8)-^J9$0ivK zo?%8%Wex@S8K=5lLcP@M)1H>_{uwDJGnB6EP%NPI8-|R5q4Xa{tqenq&#{pvo^#ZK z5R7aY)WNb8>7K5aRm%~q3VxiCMB%YDCd(^(x^wl3v+OHR#>A{VKt>)6mkdz4 zo)lp-E0T#c)-7&8VkMo9U7WnMmJM)YUYvB5-nBa3^jbtMHkzk(4oO{F53U<3I!d*R znuuv4aU*TBsc8#=@UZyX!BaM3L!WN!^=aA0MyDG)#UE*Ucp2|^Rs;@gKa|&5;XUxg zq4TQPYA+wzzZaX<%SSp7#E0?6+L2vO9z3>_p}Z$s3moV~R!(mYo#h`=(YdTx_DQm0 za@UL2V}g!i_i?1cl7c!Ey9}~r23w_R_Zsz$TTCvrg>`|Xu7QkYb~}lBh26+&#Ey_O zO7ojdJgFAx*J8`zH}YNHTITJj@C)$;4k0m5^6GMV^%`O;Eyj1Jyqj;nTgX&Gyf63U zeLv2BO}n|>eNprd$XB;7`iOjtz{V5eF@DBfB1zb)Ya=k?_xTIqMN(7AVyXqt z$>T!zm*Ztz5e(Tgenxf^+TATgy$1~Yv9er8%x^}$k0P$h40*qX6rKL$XA9_j5pzy- znRcc{OlP_08(&5>?o#4-TJH+0xap+n+9x-}b|8LZuN1cH9%E z?nf%Uk-K zw6$(W*JNQOGpW=yL|P?}AC{G6M-y*x{voR6w%A$NMc2Ek)sHZsGgm2mD~W(BoP~Sa zPC7XU=h#8e!Skh@nn1onV_02GV8f`S&mr#ng%0u3Gm_=WxenR4ix`6(z;!xy%Pah_ z>UlZh={#3X-dC`#{D}&mos=GlN}uXli5MkheHdgtRX(YQhh$_}Z^e8h<8o`mzEcAk zwjn~#Iae~N8{GC-KqUH0#K*+}f42JqSJ(OSP1y8~_j%N^Xntk{Hg2wET(@%lfNKZW z@R4@!BCfl*hI#DX6I|zFojTIwF0zwiN5ixA%PowQx@%N;UNaC+1)Po~-tp_8qRR*QA zZ14cHO~T0rHhL{!MbeB_XIs_Y)sxaktW*Mbw)Z7RN-q^o>G4D#H1(>|mm718_adP> zwe?k-?c%HKO%hn|_-o1Yw{7*N@2J{j=*Jwsw=*aMDb@CFqFV^zRFUF8eXh!1b%50>~3Nfs%F*ss0r=YY= z$|Z`=g|N4q3fqj`+kXDDpMC0hSKG-PFjAfG*g^D?wPvVOcztF7K9+&#jzPjqD_mfhZ?i7@kF^lz;`zr|US@4qFS=nxE z(J%01FI=-${o%AHFHAp)=^piF=(Zn`wU2Q~B}ZZFb)lMQvF_zg-le^*+(gHa&gkfM zy!X;k)-dV z)kczS(K`ut+-M}9|CFS_Vo3)4XYF?x27&L9*aVh7pQV3V-O9-sEhxnDL?GJWGrNU6=d}lFPwaBzxy|QXd2amNmV>dgHeYMM^0W5%Nb)HscI31i zjQ?3wf^mBi2l^lyml<;(brQpl5cEVSx)RXWsYl;EC0wI`MnlzgsvgTBe+tGDiXm|W znkMw0fJGnlc|tUvNNu!dKjrGwpZ`uv2+-SQ_U1ImpC%fLJ`bZ~A%uVQU(@GmvTI8D zLbZGsTDF`=K=8Lc=;a?fu>`ynl4Gx-cWGIK%}}q|DFP9{hgI^p;18qL5?Uq_$Q-pv zUIpAle?88Ej(dZFN+uJcMF^6KFTqFB?&nOCzx7~jL0wo~snJo?vFQT%kTpSvIl)ww zOtATcm=aQJj>OJu?vp=bqekN|I6;}M4eqNi3&r6R5 zosq007%xPtqwq#7SG8eMC3Re;EByzB#Wm=JK#AISNTnwuSlSo&MDLV7BWi*kFRPH| zY-T&OF6jr-jrfIJ75tSY*v|-C4-$5DNsmM~NFKV4nYKR!P@y^tNO^xV3E!_UAp#@| z+S23T@fKy;G`vWe-#iN5+46k+c;Pcik4%B1sQOc50JHlH z)PeyIo?V(>62+U@5gN|F`-_QXCqyF@tLANBGqsy62W!PwG^WJFuZp@B5a}Q1sLq>7 zq6kP&_VDS~bc5Gr8~id2cJ9ZfXf@|o#~Y-%_*`S!QGulp{1Toww_zHV9+Q!HXqooA zf0||}X~O^89+U8Y7Skdym7$%%qpVR$_!T4$ba?vpbT=k=hwvI4uN{#6Niz^Us{=49 z9iJfa?o@ve3PQZfQJ_UUoQs15v>aclr*IQ(%T5J`*E8kpguN=yoN#%+3D3xkBt7B5 zoHISqJ)oa(xSOyS3i5!V)4ov#g=FK=7(MHr#E!Sm&Jj_%3nxo6Z5d095x z-ozUcV)ll_t3eMlu~#HDlISS1>ImIj4CPBoc0HknG~*S<#-?w0i&o~lQqy~kSx4wl zosb-^l5P);FF8u|3w*;I5SUIfK6%VU10CfSAC_o4f(=>tQp2gRIt9>ZLK9ANoy_&o z3qzc5>gyirRZNqA8b{Dt;e2=731@1Z$8OYlYuL)?nfn6dBR)+6+Vn<#;Li*ZTY+of zaAX2ZNtI)+GiBGG#_Wqnkm468=iZ4cIu(7VErs(K?0A7J;8`H{bzeFUix@cuv+e5sEL zXN512ocIV|X%MQrl+blABlNWFKvooIb6??m5~+gX%fGD$J-0s~tNz0Amr#ejt;Za;GX5Wl#|HzJh=PS=Dn4 zGSXdZA(_k?)!mED4Y^3>E79WB&RS-CyKHPin2Ek%otnmQ*p`#T;7?C!lWWy#9YNT= zqPb5`!NpIGCYeB=HGw{B0{V9*fR~n(lT4u6nm|YCjtvjV1lH*ZG?9x&CP0<|9O9$! zx2KvGWh4qF(1b^OV7#6Xg6Mzg4a6APK~fDdAJj&&FMu=`OZ<)c$qPKeiXq&|dV*j( zW%(%Lh|N>z-0r@@_BEHw^p2o9PnqvpeeR?^`aBeF`PmvXQ0g4dO$obJ9py2S6U~QI zXkmp{;0yMO^mmhSTK_g54I=cVMedehfN!Hl34PV6!_HQlzTccwT#I2V9gV*F0_^}$pR%7RjWip6r`6Urc zMJ{f1CEoHfD&diA6q^nWo1iM6(d_elNsJLH$J;M{lUp$;iH4xx(KcI@gJQsADPUhD zPPTccK(jwXGU*AyRXSu&_z{Hq_{;SFA@pmhx8c&-zR|xJMclAh{(z%5ey&EVLGW?3 z%WnfD-outPMD91a3fsXxo+(hT-)l*}f^C{iW(mAo`5y)QWH_f2cumAK1@p8#A}TAI zgQvAd6i{Nupkf=RT&ioSOOZCJcpG)P4BUW0&9VlyjJR3O3A#w9*$~jl;jsS{^zAiz zC+z{>OHX)Os-=q=n((rw<> zXx@{m+Fm0Z3T^gR&q{l;?~inkFd4>aao`vjJC9G^>~y5vXrG+Z?!*Jt&fMd zd4*8F#>h40*f{x8$#OQ2EQR+Yq3gtF!u1-QVfA+ysq_L9Z6Bb);O94n)E0KsC6rrm z#VfJps21Q}JE%TjAvfwcMVYCv3^1DqL+ zR}mlfhe;UTs8i?eo+u%l-tIzUq`K|*1mAx`Se;t?gx<@;2?{4XicQ}=O#a2_j$=_0 z?(Z#pK@6iOhpo?>LXS6(v$p8w*NvaWmd5v`tVUJ)Ng$+-2+tr&ij{d{kL_ zy-Q3-ZqlJ$Y|3n=yqBIo2uXe&qPZcz3JH@&J1WI7Vbfs9w6F640uayv^6v|YIJM{% zmfeFXk7^l(dz*I%D40R%OO0b{X>Q!JDDvlX1Jvt*=Uv;bK1p|gd$4UbfX`-u9r3CU$yjS$3!X(=FS*erY>5{`ClLpcISjDi6Gh0td{j z2Qu*2*5cMT*R2!NsW+TT44ApE|IC*R7e~mm>S8@Q=4Ly?@ak$A-J_b8HsUF~fnIS_ z6#+7`;AY&6cKNMZj|eN{;(iAJw0LU{p z^o~1?n_*|9CTasuQW*5?hzv0iK(r9y#ar=Q(rzAHX{SCjr}p|ruaMu#aXxy9{Go)% z%iQMe2TB~2ijlxe6=Of5hffUHbYC%pZ}rpX^R(8QWee7^lR`DoKQPLO`W+~o*y+@5cW#fM^W}lD7#<+W+!ppEVaxYraaMnw1~N7rM3dTiNeB>P6BxAU4`{-D5)Ed z6sz5OEG>t5S}|FQrz=Y{esQ(l5JG+PqDqhT!F!+>685Nt1)&%_-F>5@0vFnZE))T# zEqnz?6i1I=F3rn|XnAyDu&Acr&nQoFtSr$xEdFO!aKNkMJgsv2Uk>C;iVc>hs5)x9 z2y;*0=#9F4jJeWZe0|i(ZA@VEOo}Cv?Uta-8awRK9lQ&l3rBnO_-BFX3_1EP-)L#2 zZpoCSD3!)?^+kL6iPj`zl1UA+t$p8WE%l=yV-l%xz?l2wJj1xSN`sV@E+S{z=;Z>Q zv^c57$cvP1r{D_?-ecWbl*|z7E3Qfd9r4q+9FH6^EH;X1gHZ#p)kU$2uvM}7U8Im#WFWvVtW}K zuF=iA>(iEhycOF^L5TY(H^E9lo`&IT@0h-*hr9jYFXwfHHZ-~l8{G}0h%CtQww-c{ zs^(ACSE-#pV$*|N5N7jSd99psEfEr+wqXDg_M`}Rrn18N@5lb*!vbj&w0;>@xr`0uUL*BSuHl(LT z;%kHoW^}us^nX}y$kHR~Q1qlEnvJ1{p;fk!DV9Fc$ zB5yQ}5%-Y2oB4~CGtoE9)4EaSSmEZ`)s|*q8q~eope`P&y?>JKFgD3UtIVUSmOb=* zZBzb}G?B3>{|)Pl01q{n#R#h%FS5AAI;BH}q+?`%E%;kgK*{65YnARNK{|l_>v9u) z!6po5OjyP|&m4oe_o%SjH+mu9zh4H8YOzGJ$JS!vC9keA1_t){`=AC$HY zR)FGgnMg~QUOP-Lgjk4u=6ox^bJ*2!O{Ve8&#V4o{+X)oDcy^yX7$a@C$*pFt3(x% zP#Z3D(h>h0zRaaqGXDaUcwQ7A@N4&~+y~`Zof&;Vjs#HyGguu~&s`y7k{T+76>c+7 zDI{Z^yxUw5u{P~e=Z@^}M@-LGcXh=VwT^Yv7E`U!|Kx-gzkFFT8y7Ay(Z~fYzejjLWp!7cBQJkrBAGOna(mCPEU%% z=~~Latqz!*Lohx!b~QIV=8X?C-QV>tevP!(dni&|ND%klmt~&$`0Yj~-ph@7qh1*{ z0Q@)ogWH-0{sj}mncB!`0neaszap<#wb&Ir+2Fe?qt5=WupocXcq~Ltj*y=y`ftI@< z&E9C#dgKP{5wymd=o$^0&34)Xla*|jze2vWh^Ai$R{{a zG69mgK?05LC=$I7yGj z{(=6&^mz3)`sdbsFVc>t8*2{gHD>`$X5D{Z^`BozKgSME6N#}{q_F3coki$)`u3`B z{!C2|l7C%)KQ=3Z#Ys;R|vyGL7C({V&e%?dPre-TBhTo8L

p7Wlu_l&S=khZAvp+oKXW${kve+V)pG6MIZfJx69A;i)R(V_3 zFs*7-xex=KaCq$mKSvUkY3P__H7#H1{U3>L9fLRTyCR$j{RjUfqmL{jTV>D;h@fGZ zn)!d-r1l}h`TKim0FM2**n8ain?9}tIV*fZ6p`4)5*d=mkX+rRAe~Mz@U0zsM2N=8 zQ6`Scwi4TGS^0&1j9X+KUU459v5~O!mw1`2-ARzN#+3eBF}>b{2Ae@UrgZ?f8(|QA4p+|_L(ApT<7QZ@Q>l<1A zDVBD@tSRgY)o+VDB*GDNVy|(Q7|wU8JHMmJl-GdGNtL~G-kA@)?2e|1`nV<4G0Y%{0TeD_1zWQMbZQ}7u^ zF(o4aMAQ+OG0K>PUUHD~pIokpdgU2Cy@=ZM zqB%Xxpu6lSls-_^$FTH<^J{I80~wX>(soNK2^+=gh5ukM*_1>`C!D7f#c_ixRoMf7 z)D%7L!HOzbW)eqoP%4NTD{~#+Uq5d9GHyul*#G8wdCduh)dPS0Us|sNZ=GqyGAa`b zIC#y{^eCW1Bv6Z7dPj_gRb)xgV69Gq`8v8spl-o6-!Q3Z>vpk7KmolH@?z}H+LpxZ z5ujzC@gj?*ZAxNgLEYB{R{8YHrcl$-OhwPuv?(JcG@P;!P6!q9&EuL()SDY?ur%;g zW_uoOO*I2o`~r{$zmr{$MFC`ys&HXa9ffoqK## z)wTF%l1Ug~bVeOCYSdJtMT0gPw7~%z%Tq<2WXKGtJX)J7x|65$`9b)QG5`>)!4$KIexQ%0r@>eB|Rs} zrem3+ttj8*$H5#sr#L#%WsHb2B0O-KRW@e2A3lF1xibgG1bKe$tPQg2?ZXn4vz7Ym z6tKTwE4AS_4h8(i^UjQNm-tFoz6!r{k>Piwfwe-+h2Mb_i0olwZ2i_nT$VpYSQQIK z&qpkXLK{~=G+69gf{Lt&GZkGqvF=RW$)DtC?>O^RKWe+62iG z?_lZ8O2lQ$TeAe^$c+1h{x2M-hU5_eS$Q)G&Neklh` zysy!{cn#XGGDJr#Y`4FT*Rg zy+Fwo0f+=|S^aSYQ(=MbmH_N37%N(!-DyL(?S#D^q;QmV7W+!y&y+{rUs7VdPtu{A_M$;l|(^-FaxAtD3lej!>nIwd${n^O-z%73V!)oc__xn@!o zOA)jb$HYy^t||`)cg(Vyp)?LgDz4M2QKl7f8XZRZmQ5{QIDOgj#SJTMKgHOZS;t5S zO6O^#41n8ScmJPwTo|v?-u<;38hP6@rspp6x!}0WP?wsCqNF2C^m00{LLJe`vX%U* zdL+8fV|*w z0wG*Hn9cx7MdV=HGki5mUGT<@d?x~SAnqkpf`g@s*Jpv(Pu;78{NO0_g&1uB$WV0R zIu@Q=esJu5Fr9q&7UvUe{qM($ijqgqcR7=Oef`mxVV135#Esl719F!p=kOw7AFR&< zZfgb+DsFHrX-2DEjMQ-;YfdztY}4ug3oXEj5=eKlzi7r@jB5*5kZS>#!AH1uVQ4N0 zsMJsu{t^q09I*eO|N1e&nLMEatK5}M;g0DjM}%0uBx-ZCOgtKRR)|?H`|Nqv zP*k1t8-ck|-t@|RoD|6EPszT}U9$Rh$qKghQGhI4Ls_Mx)+%9)|BGx%#$?>CGpzf|EhpTc`s4z=gb1GNKw^%@o&Hyw|Xald}_OU&CvzbeT z|Gd|5l#u_^HErD9#!$)RnbNNYC!#KWP|gs3i0T1}TVu`_C;1Urt|STu9c(I#>{Sb5 zBFRoF$5BNWM7f~MAr5KW*=IIcdoi1~0`0fL z!{J$aHd92TuuMX+c+%4B#dnF=IO$OQ;`T>g75$NU37VA63}}+Nd&`_|q{{gw)#RJ> zxUlpzNja?a8+{+Wc4RjF#@=*qDSBq(f9*_H1d)#df|&h%G`nb7I_piHgser|oP0%J zP13m?P!$|Ha2ZnMo}ZXzH^*c46_jOUI4jDZL) zMf0R^un~{hRlSN{_&uo^uje^kxa_}P#L9i*3x(6M4;=(wd=#4|fJv9f`vFyt0iMJ9 zcALo{uSBu9hd%t&Bp@(K!CEdY6g42)rwY$r5nRy9bXP^*v#n`riB+3xR@8n2)dFE4 zXwc%zq-l1@%HV|HLOj@0+Y>}nby>Y?IaE2J8?F*|gW^w*aw7|ced z9byJA`F@&2%AAj=e)gesn}Af#n@*rS4d%JoRf%)yg@lH$j=F;iN`3* zRo;47Ac&A$r8IRpyV7zXI(C(UR$Y_ZF24cM}YNF%Zr&MS2cq(poZpxD`{bb3I_ zf zV)g>K!+{8qJ;ETw0)NYpWUVF(wCN}$>vJW$noC;rGuS>zDR~DtG5aB>l=0!ncv%+5 z=a$8W03m?v!-ue3G=%1zi(=_{Xpe0W{i|g3Ja(Mkj&J+5+!2oo7{kd4R4eHFjX~;Z z{44eRqFn3QI>o6cdB-`0Rs8Z1Q^i!LijqO9c>C}iK)e!Feo3dJx+O}?G?W2wwKE_< zawHb*XG@G>qriQ&kaq_-#zZw{ugRBKlANX>{@D!%#8ZeALgpg)Ua32$0H|37Hy5)% zeOMYDNKSW$gLoDuiK7x=_Pagy?;sHj_`NJN$;(I_w{K9kGGqivIh2BS`oufDXgtqB zZrE{}HP6>EUu{D;Cpp^@=I5qC!G5}MN15kek$-R0{=lO!7jv_mX`itEl72@lr`~Za zr`lHE3LJ5<8^W~+=hq&{S9{m&R9L5nz*s~-x-8D>b|yu^6Pdtndt{S~D#js($PjE% zqy{7K!e4N#+>mRSk!mkElJnx+enJY)Zz$d<+EDb!hC=p0Ol|n^A8vBC0opXP7jPgX z^Si|xwZn?Q`_5mty_6VvqEwG(fraM5`gpLjGsM^i(!?CYHjPKAcvE#ECFMJ^-PruO>kJbpZZpun+sVnLl5 z`BA#O_*<(Z8$0KJT)5&7a|N(?NRb1daHhQOLlJ0nvia_{olkmqe`@CN% zfT{pcw8`$=q4QbxcCXPx=m{JKUzD#tHd>g>qeC;;Uu#1$6?StI52HPa`2aIfa zuzfAxnA4%g)^4OefA(=F;C}JCf?B?nE8gLnB6AjPIJor4_>jFWy-WbNJOY*F1m&}8>G}R z)H+rQy<|Y4S87gC)d;n;qWxH$r9rYJ2V^D_Z(GBBY!X)Mzh zxl2uA!HI?n9P3blBcKA;6;T0S-CJzZM`qYSS#QfBO|)~iY)7g^2a_q;Z2v_SSkR1a zJvMnOJ>caK8m28$wTXy_dKn`Zkoj;P6G zEX-0Z;`Lsf&JzCygCJ2?`W z^15;uHmD>l#u5(l-V*~7(n^~qIBk;j?1*N&l!SGSMDF(TXeX5e(Bl22f#<@{gy%*3 zf#=H#&rr1UdM_aPovyV4&-=E!^V`6am%o0f5T3GoTycxQGuhpFeW_X?pMGy49d_Lm zkadyC%C}$sOv?2~{+y~(IUAvLVEtKKnhO^fJ;+UWmoSQF(VN3Y%MSoX$G|xY)YDIdI>&owy9}by2UN{uyOvFoyAO1` znbQ}9rP`lNm(#Q-f2|{4_p&YVg$oLC_cP7`W3OlG2!w%;u!?ykxYGq@#SvLA3RD~C zSgM!P%cevPDre+gs1eP3bg*!d$lQ4gN z{J$9LiwSSV=HHL&G!DZS1w~JUsb!Xi%n)amnHEZjsI36?I~b@N5>_mYLZ2U{2<;>J zq?7b8mJ{U_bn*4H+r_8$>0-_p%IIIVAS5fYBdk9_fbApv80)Wy^Lm%*N5b9@pN8T0$uzD6d4u-E{YQp z@|P9mFHcRdPL^|0eYfi_x9t6?r@C%Qu7*(&gYv`vkIpLuV@izf%@tsrWGGW;dIKGL z^HE8x)|9NS;g(CA9$))SZ>a9A!qvJ=&)Z~GY?)uQ@|UKcA&MK12{cx)y7QQT-B?O2 z;hW#?5rGe*48J2Lbc#8;Uy;5KrFl9V3J?X3T#p~v_x&r>LI|XwaMpS<H@iOd)o}uzRHO)H+d0e?M)N9v%K^#zS#{&~%?lXfiJsnxYA5xW zu#Swj_bPuTX|MZ4;i2}#GK=&rukw@rZcyHkh-V7GA|yf$e@mZa>s2|3-EZlWrOya4 zeM3N2*Y#nyH#MvWhV4?N@*j4WqzKjM3(ZGCUIO>&kGcGihaUI|IhkI;`u#EiHgz2a zMbRXa#aJi?Z8U4K{IGAv9+f`1uojx??sq1@|GI#0t8U0&1)d=}O!$wvW{ zv3kgE6KnoyNeT7=eyvd}3gv-+N!Eh%v&T1+2P2><4~f*J?)mrc3AWut5^_($&VO~@ z-c;PRRiMh!KrD!wm>5f8)XV2+u6nL&u2D@^ECnY$mF)O>Bwivv#wO>@^f2`xmr>^Z z6g4rz_Kfdiw^F;kS-eUtkWD}>=N~eK#Uf!;3+_TFQwR&O%mq77yg;Ot?b+5*FuLqM zcpIu2Uq!=0(cF<`HygJqJ4Kn4#G>{!0(^_t0Wk(TkzLM9$ZTNdjFnj7j^ZFr`UK}R zxf-Qd;{>|d-wSX7wb-3xx0#>D!UQ%tgt$VJnfCxE5(_LiI;T%rw1bn)>3M) z5%W7G>8MfcenzZ)hDe-ORZnG9ln1WsvcG8=PFeKR7rJOMp*kh=@j=}U=cc5}|79<` z;3Pwqk8^n8Bk_+3Mai=XB3XV5f;=*lBWTv!VwDQJq=a+rzcEe)n$gwnt~P8>||`q392pJhD25lCLYRIYIM)#G|6IUK3AUvNhXpJtLhXICQXWB6X`@)3Def?Gd$@ zaPWKgQ3-^)l4G`i=PT%6)tK%c7HhVDsae5D9JA)b3nd3Glby8-Cdm;{;ft%DTAa6`}4TI-CBUkrp%sO3pceM$z zMJQ8OgalK3IT)5CM{C07E9Ft%si1H;{O>`vh;yYH<^kqXi_R<>3a?X)t3o8lA*}B$ zoQ2}qM*Z2<{FXv-T9>JUC{-pLM~3!XQ(4XnfJhP<4Cqu<6QgnOQx0vy9#RfX^v5&Pi)kGVU z4+5Bky^7iD+R=uUMvk`EuTTnkP#uxoIaELVe(erAOhq<)e<+d1u74IWs@2pP^ke{v z>n6;sU#>G2s1l25VtX?q7L|!OxNa;eFJGC>n*Fq>fQW_Bw`9L`jG~@MhA$yk=M?;Z^f}60 z=NV!-!9J2hF%m?GR?vDx%kbnAichUS(IM=d{4OL}c={G!a;v_%*u2R}H$*y@*P&j* z9#LPpCWi(-27L*TjBqQK5TexPHPHQRT>{)lsxATJ4P8-9g6lD|m0Met>cJ&i*NAilS_m2M% zAXU#Ubb;c?yIrv+9anm+1YA3Ac}&M4fJY?z6{NR*Q&CD45Tp{x;V8g%i{?fOUy#~5 z8Pk`4PUHIVXqz4JsB%4c5yOdU@Q2;KqDFylByl~^{<6w^1F54K_##~eE!-I+)Sq+5 z0WSJbuDC34HTb69sUkwbItC%HX)MB+_rZ-~?}_*`9N69(Y43KclyZ&vIQE!&5Z~)H zpm!RKqXXdmk2m}($ zhgl7M%NAldcA(XOw}7oskl8YS>beSkxWWYP?)kDP*cFqFdi64G+=8`~Se*4v@0~nH z0=VvQnUFuf2RQJZG84#(=Y2P4f!e z5alTiks~IFkIV!JC!hoj&`fCcXX&jEc}%=CWP+qd4)rBN*)7{{MJC&vu!wA$ci&Lj zdWGw!BR>t?r9Ud%g_#QN*=XvZgsvxXd#tt(rBFu!c9i}WH-X4WLhiO_M+FNoQ9y;Z zFhyA73{jlHd@kxwrvOltqd6R-+XEy@7)=)SXSNw0`t#GjxczxTi2yXdlXyZNFiD&lB03spW7$rqg%T98bmiTW8E&1^m)=-`&F?vV)~V=59cl$` z4ioYm_yA-+#hF+|pQbgx(N}$<#x8uSbQEFmO zF%aH)qU5jzt{Z|J1r+{HJ*!}Yi{M5Yl?N`V^!+rz-%?_)9^`#7J=$PKDBsh#{m9*> zr=M+dQQ*C~r6d{sF6JwYmvR+CpVV*jxBs=6G-)4-=(lS%s;BWw&o01CyiF7m@Dtc~ z41|?~o9L%QnE?aDIVMCeVJ8_s>mzHs{QyI&z$zGdgdQE`t;1#H`#zA2ppCxrZ;9%5X{wJ+Ab?pP;eOLUGh*%}eU1T?Ett11@-bFmg zRMh;&+Lb!LXeoQ~L$@W(q#B8w{EgYtmV$<)#bc2aNBh{nRf}Aw(w_4RGag7uWmh*+ z9Z10k8EKWsZcdWK#qK6kLzXS_9XBjBi|t|sw6&^q^De5(;&-yb{x|$CilB(;UxlmL zcVNz#AVeh+!P6)iI(yG8dx?z=uNK*SWEZAw1jt^cUN|{*I{3PrOGzOhofAs5SQ=Yl zk1sCz7Abm_y6IG0MAJ|Q(|-2aTp0rL&w#hAbngmK1nBB`h`Rt;EN-d<=#Pj;E%nD& zEsz}q_A~KfE-1akFR&j4?7uZ@U)YZl*pD=@A1Sb}vR{9|!2Ut?ITU&II}*T7i6$Vg zMPnuB!fRCNW}sEmCk^W`$y5GFcd+dn2I`geNXi205><|<8TPeG3GqBC-4K|k#Fto@ zL9mznK$^>9e2p0Tn1EP7vB0b6O$&>_m(y>P^B`G8)Yn#A9BpO1*%51XdJ)CO_+N?R zu;xhFQ4<*%jT79ks@D=i`_i37PFh4a|3#~E%kPD*0fFl^O<0?dS$-+QF#5zh#ibxD z3}!j9cM-;AhxkmvlUnB_Vf2NG?L04x7VpqiPA6LrNnQdOP}{bI-SqDQaZJ(z8w4mw zQUmxhq#NRoYX-0sMnQe^L>6w!F`z#yl=@i zQv6#8>b3h|0Yo9-m7(ir-P)DlLo1sH$eI%NT|d^!9LU0L90>0&K}^uEP`g!f*Gv?x zfTANc$S3BPEnag%xt9eY3gs97oH9)>#*w+a&n^8wXHZ0QHXw0Y+)co}w`*$a40vQR zU+ZL6u12|2tP}GJx`{#sT@jCBZ;tD3kydmet>6Suq7itkdPGDACYRB>xIM|#Aiin8 z1!I`7Y!^R87;&tFoA}x(+G~b17hc?FcDKKk8k%Dn3R+XrIc214=X|!5)nY=>jq#-B zu>M3Q8AImAzu0j=jTXd_BD&P|NC9pE!B1H z!@ubMu`9j19*I3#)N$h$M|@pX$Ser9Js{ZH8bG+lw5wJXqA4qK65pqID{~;&zEQqG z<2|X%HPLY-a)i-!>OEL^Z>sjnPecwF#)rmPAAaDkX=r}{9&74R(W?!dg$3F4r_LO}x zc}WO5EtD-0AggSRS|c>%f+(M{?%6|0W29I6JKvNp8SgtW+k$J1qHI%lD>DHgAs*A7 z1>5$>j65G#GrAhwZJ-nB4YvP*7Xlp_z+EV;WjXY4oa`7HxP7u_!fu+<5OL8l=A#NTlW_)08U#r`I_2HAk@mxCzCA*)eCG~pnMeSNtO zDo}6u)4!P(1a5!g5ct3-4Bh<-4w#yYQ~9l5PB8cxTfaBI_gA)l6n-y-g9~Cc4UA>! z%db%?ER&(qNFMw2U%IqU|G@>wrA7b8(tjf?I2fROR_BMTS8ipv7)$@j(6^}NySN!IRzRpa|+v>mp$ZwR7@7Pbp90pIjpbVT>lKJQDVQ^2YzKo zbQx5&`aXK~$Pbz8W`ehW=!o3JNni2IMv63hR_FLEd^LMzM-w^6KNL1EVV`80Cxw7B zdBnfQAby@TH|;a>f}F%DAW$DTK12S+86TkPw%rvPI&C+=^{4(p*j@=Qqg>DaD# zpUiTUSBA}k!Ih&G5%rN+G;Q+c266jbC%r2YXlW3aZm4ZUK>SJL1!OC#lfUS%lGK{%Rj4 zdS}aAd|0H_W1{_w4oB*#K^{YGjb*9fQS55(GRaOWy5NGOnnS2D>v~NudTMxmAHOZm*Ht_dB_>!pR$( zT~3m5n zNZjtEFB(8KB~_al2JrvBpaZz`GX}7M=F2(EW?&}EIz1V1`sC`Ds6P*pAAkCzZ1%{%-@019!)QVXU)*9}|9Q%E_Zwr~@@k}v%IfTh%`EbN9kKVxpZS62 zw~v|U^ystag~8{7{`{xpclz`1@;%p|pSmSFyxO4Ctf)O~T1fneKk99@-dA~dvo*m)0@rsmwukM2^H99ps{t3OBHe0y^JIoZko#lJKETi-YE_@B?y_Cf0ZIr(2Xec_iC_41g* zu_3Wd1?Fzb-;6JA`LZY4V<4o} zJigkgW@~<~xw_H&X>bmIiu`4J6WGz(^Q1UrlFF+CyvX~DPKxc=p0E@00=(M(98bmf z=Gm?O9osbwUdfIZQOAnBx?~&tb{<;FuP z98LY%5x)a&w>^|y>hXN^u{xyiTN`T}U&10Wtd$+~E2qx`pXhCUu8Pgxoc>z3*fJ{hh6tG#_88lSY8tkviFLoB8$ZIHf%q5Qu=P1$Nz=erDg{?~7s|gFzY?d^lXcRyzs8Wg+MTzGp0dMu9BZ@O}3=%MkGgZnsb|X%g z?j+ZeLAbUXD23t+olVky&Xh!d1rd!OX;+7@I&~!Txp;T#l9odC6)D;g${=MGby?B> zircG}=mt-08uB88C&H3kPv>(7M+&{XeeIyK565%Yc1wqs>iTG^be7T?>>Me0!dFND z-J#JM^t@7z^@u0v6hk>5=rH=!X9iI|Y)+g6vyjMYdPn(T4jEKdVfEY7G;>8lL@!|z z+bfqF`!>m~Dr#t^<@IMl3b8=|g{X74sT0kOqmyH61y-vSZ3&Kz0v)GCug?YnaeKxV zz=zu2PZlxioRLVo+{2)aP7()r+zR^l3nnP__-S1f|DR+}KT)AGso?ya@$MHO`l?^{ zRfF8@bw%DF$p6ae(}fP?J*>)D8T?+p`vc@>ZpYfH`}pP9$BN^NA_Y9p(%~Dn;&De# z{xXLM=wtSwN;@<_g!sA;Q6u>Z^=~{&8SLzckb>5SH7tH2x(vm!&$>d7H!2zVie+bg zq4h8zT0u{315pGlTGxR9u7dvgOc@ARK@p5TW9pF?;pwg))9lAr0Q-lezY+;N*#2`w zSw-^Ei`1@8)V5oOiXrHm=d-mEqj{ANq|~#$ksMv`f4Lm-V{#QGw(QL<4r-epUdlWm z&bmq`ll^P}cT}h&M5$R*yeBh-{jW)}nlc8a*s3W4PKsLxN%3E#K*e2B5CRK*R8Ci9 zVkFmSlX5dqD_ky#@w_$OzkK6dbk`(39;!6`-GiiW)WR!F^^~70{Qf}_S8L&wl9(v- z1tmW?NaBwc(~|F0k&LsdRb@H?;z{>IEZ>ulx*0^q80!epcDsiRq~0Z}9!#ka2r!D# zty)>$*44vV;PHGM>R}lYxqLN=I0(RA&SM?*NvI?=_W0IwmM!smQsY-%;FU8W+@uK2 z3@aY3m|A^Q=c?*@a3i^yJOnC;cHUAwf!}h9TpzV7VEL(a6x1_w8c8K~<`p=T~qv zP-R~WPsqv0aO?L?_73F_eau_hw!+JiRF!un$6Gz#HcYS=AnVsGlSoEGWCCKNZ2wDI zx+faCpHMU_o;%;4yO=(35SX9u?s_vp*HWtUPNL$~cV63P-}x1)RBw)jF+8=lAIqg$+_+_gRAg)Ks`0>E58Q ztS*4%3w_$Vg9MgCOodWY=8&XRle|povR~D)7sq$VuY|@(^%H~}nIP2<4%{)Hr}}9H z)vuVZz;&vZYMkn4=c#H{+Hd- zk9LqyD*?h(X~S1&L!KpbklKvFXxiYOH-Hf8mdtUgG@JuTkBPT_1gr6We3e0}r-DVJ z8ks=Z5wC}o5egr-2`M1z$k66+>)}O;;kxoW+%q-4hKXZ-J=jNY+@&xsec2~oO_6&~ zABT_XIsGWiNTFOUUbg7rxP2f$?VDgyWH*C$#Y^@L{Ah|w(ANOVvh@6kirh*mNI5`) zsQe5R1AcG-S0OIRM9)<=strsvifJzg6mef_kI&%64gtYadYnKaJPq zXes_9j@1+Pm+1l<;)MO`by8QQd`-_|4Mn3&oq>xoE6afB{S?+zo@#*X5AYB_Andty zfI9qbOh!@UP1sL^`cd)Py1-P0(@>VwkgUbQRiE-{T}WJ3zq*tv{Y~CA<*Bd{p^jSX z+rEx@u6y%@=)2_x+sn^lH{!B!uxgv^6|$2V#2YKQofuPFCB_t(u3@GsFz7L1rXKhY zLxsyF%+vx*FjP(Dp$FtCp@vL|sh2KO6h%j6V2G)CTQwoo5bx&zig~ghxk1hA+}Gd?OFO%9v|}V zcZ{oh(#ToQR&g`&J3Z^!E@DLUc*<6Zw);ChdD$-KF8cWL^d#boEoAH`nfPMvz{l-% zjwP2F_^&hYy{Nu){k&k{z@6LcY1gAi*Lu`5W&Fz-ngHAwKMMacg(owRBME8J|Y{5Ovw&W zA7J4v&?z<}bm^JOm5Lz}D@G2%pTlK%>(eYVk*88$lyEd(c6D4T?5(ygfyWE+7G9d} zh@bhY9YW4S+g}vPSlM-*B8|;-umbE75Xmd4V>&baGw8WCv5+=NT&KTAo1#T=old>V zfyee%g@>#Ji@&v3j?Sb7LV#S!x0pmrV+QVi^YVuOh4$QerPH1%raj5Pslp>Yd=02( zrl`>5+{7t16Cb>FMqd}!*41wRMCr))wx4)@_)mh`70oh)|O^-<}9rvze&>y)>U)_QKcNf zA6Ty%@8;)SuVBGX`5td@)h~fz454?my$80*vsUcG9aAM zkjV+_`n+dr{Ps25e-IAe-w~A2OsM}p)=i`;Djz^K)&x+Vh5S%Vx_zlr(;t_nMj7fl z#M%gxN>B*L!?KA+(;Q7s0n=jkjf$RPupel&A695>X5Gi#sIq5yV=pD~)#S`rFuuB?h&ag|2C#VAY z#Ow**R`gNXR@FYTts$zT3c{4e>?5u<2xH`6wfm$UCdK{qa$MYn2gh*q9)i-}=)IPV@ES5|BF~C@jXmNTi60t&cd{kgn zlmTR=g(BsrCM5k8D4X*sp(FdShIR{g~G&k%>4XO9VT|BZiS!vk=(XXy&_={rrGc z+i1TGUtxth4v}bO=V`REn9-kB-d@O9J_Fo+qkZ3gGLRHkj5KdE#y0k4d?n<~%s}cW zs2cIlq03gQoVBPG_@7y|_?{U85!=agtEZ;hoCAfC^uY?TE$Q^t(car?Ha*uLc}f;3 z*W&xssC~RNVz4d7Ag$JJelTY6ZW5%DhNG%So7aA-EY=rtE7pawwi3$ti9nY62F_%+A~EQflK&(tRI@+_@}97N&rgAlPoTq5PMFnvi4e#E zBS>}`k%~e3R$!rIG_nXYfPRq11NO4b90X33mENdpeTDsGeXbuuWN3b4M@$w8R(wRl zy5gTIjmE%+mg<;(K|7&AoLOJxG4>0l$;eGZ1ra-(cF&PY20^`IU>)&^j>-wv#LyUu zS%R{ivNOkG0|uRwvB=z(_iv#fQU@A&#H9xUr@k-mr#=S<_JRZV@6pE-s#FJvs@eY&TIMN9zb%utNTK<=1%n&E4)JQj~ z)JXef%rJDP!Ly2SP3Vt)V6PFR||LIGY#F1%RX{Rbl}$f^YlvPFe-+L+Y`Sg zy<%s+J1I34INm)$-R|b`H>dKwPdwUKJ|OL(f6?{|n^%0C;L5WaM4r`#K5f)~c)p}{ zMpY)ZfBJ#K6I zQ?K=x#l{y}WDjn4_e9qd zB^Wz2p>v*%7CdGEA#9zovRr<`0Jbh?Wl80=V&*r}{`4B!#TO7n_7^JyC#?`kSp|}^ z_P3<5!S?G|(=X&YqCFCcWVXd~$;AOSq?DOaXJm^6V)H~jv-@PS(7 z;e)<0DD@;0ux<+#!n%s;Lsi|&oX7=S2+4ja_+6YCdzu|!0EuY|hfS89I=2WC-&B8< zuFa#^n_hGLUx&o|x;qvqgoEpRhaexWItT$b%=8McbeMst1}Yj;Ubl7%of}vd^i+SQ z^4puN?E@O~in^zk#>lW#)0j7_2Q-E{swtf@(4KSNO3`8Ia{6PUiW#p%xpB6f0^|Og zcwpmSd`y%kybgVEp7PmBOw?~PLJs+0pmCN+|M_D_v1+IuZ~~KxPtK;WWSBTT5<(#q`Ojk{#bPSl z{vmt6O4;-YSHSL6qfst7LhK_G;Bq+Dlz!W5Kc#zp4*r+Esb{zm<;aJbu0XsQEQVY&okh}^3H3Z`BD=1dlB2#hy?ml$YLQ92}_6Fr2oOPw% zTlcc8E8Va?$BBs5tV+nI_K^d1a}vg~G=4z#Es|XqwTB>(T?0q0>Z+xZqM<=9sEOqk;i64EtYs=kOp+ngCU_bk-MKwE|iP z2t%b$1=n5Tl~YJ6!*iQYmg^lyAki0jv8-tF{uAf@pf5lDte1QD_p&qbX=Kx)8(7=v z;^G=v9dL1+4X&#!k^M1^adqsvyjtzy(wIo^q8-H5$s64+-z}1z{Q4-Xfzp3jHpJsB z9@gr%;A5?GhBvau>JcId)t57xDh@#f_bP*{#LTlfQ_6k<2ZBEX6@u$F141Hjvm;0y zk{k&bd2`cj#XVU=fL&$hExI@nzVk}!xz4#5$p5#TtEOfPEiYO!&cN%v%SBw}7d4Sl zFc1yLKz4E-MWuVt9c<-UUYQ!Bn`ql8`w?M)_yW#X87dxP!NBpVXz-wE`WjVM2ER8! z)(ONdB(0i>Kh5fzZPrVvsW}mfk8?T6t&kG`vDL6a|)KrQJX8ohXB8X9T2=Q?6ZdSo~USGV%%TedICmT;+hJ3#3(k83>&gRpx9sENTm8IGmCBE^ zX12Z{;iSkaITHTl3UV~rFV8aVlvj}8ctU-n2=9~b`gi6;y8rOtjcb8HaNV*{57uDg zM)59N-TwNM#6H3qhon?1{#Jh7lKXW9zi!R_ni0pDsiwM+=asqVXY*@y?pGbZs&l`N z=hq#%Ux)E)bne$sHW?oVZ`o+Q8`FXTeA#RPOkG#|hqLh~D&Hcnnr~;((y3e*aV5Ft zb1mcg9@iSK`?%I~y~O1i<}Dd!{z|#|h7BtlRz7Tqf7np7KH+}~J|0ETJ~Yr~iJiKh zrMC{3Z;C2}`H;!jkf^)x%43L2AztT9GL{ybw!>`y+bLK5qWq1J)ESB0YPWY zq`&TwN;7MF|FW-mtanr8%a(d&sL^PAT9Kmtn!6)Uww4MplOD}~ZGaWO+FJ`q!m_grC+f111-=E- zSDxT2I=X#7fID2L#v6 z^x6v%kFoB^Y#Q$Lc7bpH{q5OB$5Ka?fRU9U-swAx5EL~`7YGdC9Fl&=d+i@(6`q-o zf0}C_O4d)}L`cHT_0wmQXx6nQ<_5j=X`@$@&f5>)uMxtNhEjbu*|qv%cD;chau3^amn6L$JD*y7{eUzSQ4=-o(NYol|?lRyI8*n>vyQ>0QG4yeqZL(^}rY$gKtU$xYT% zHBl^Hk)w!5eOp^0Igg=?PiCwO*Ky@GWv$>%r+=zVs#zmVBHhE!d4()Xdb!~i(oZ@-{(x?^G>*mj7ZWKT)vE`;vfmz{NSN(t@-8rem{(ux{OiOdx1bupZyAC3OsLcl3Mo1nG1bXb-Kh`E#&Hl(mKC6Gh z`7009sZg3aQReNJoq79Q-ImB!A-5YdM|CE$P13aYXuV8>fRHx(2~!Xv|7L$GACWV- zVMw}bTe^S5HFZGuX#?H$+!*J>J1_L&``8<6vN;{2EG987n*nR*HQrs93Ou(2+j{s- zq7I<^(XI=4NEc27Y7nQ^3ZRQA1RDkWZl)ovarNV{6~vv;O~nsq24sFp>K=XJb5rNs z#E27(^U++6ob5w(S!7U~oHU6z%?v8oT@x0%Fe(u@9r&{X!+k?Bi6(2Wz0?eoQ$%im z;G_TV{KgwPg6o%0c|#elkNNH?`|E$+lCrW=pOqa+84<2#u7%{koy+6(mG}n!m6~t&IK?D2KRz1CB3uSazLn33{WXGPA;P4%9_seV#$-B~rC=B7FxQ*^33kKL)R zkD2PuV|S|SW2X8rDdc0OdRBwJGS#=pR44K)=hX0SHCw&1X<&~OY(HD**i7vjH>B>e zDyTeDm#YK;+uw^U30T_~&EPz8to5DZs2IoI=knq;I}m}|ryWwriNkfXACRR6tP>Bu zN)MatRm~0_Ixpt#4W~cN5-9|VSy3k}T8l|xE!rCzSmgshGgZ#=H?vRNcrX=;BLkJw z6jzx3bZ_fp*0jB$nnNjBPUtszXTz~-B=K1@ovoR%{m>S=ljidDaDYAoF&o}nu6_wr@)fQ zq|x&Uf_^@z+4p_#;#Z~M7mUebKO5z6RO3V^>m8hzGjzbXMD^|OWuG;vSW zGm>y>a-yzI%+IjjuTdUcT!x>5E~zU>#~%yKsBBdd>cqoSKYd8&JbY$pUh8O_h%#V; zAmP%@$;@_~a{;)Kg2}QYx7UoP1%0I{#h(bo^O}=Ha9A1757xCGvF2`-;d&mN2}3R6 ztV#KuZMhY~+Eha&k!{j;_*!*ShYp$Q#3^Px(Hgc4JN<4Udcy^gD6%zyYF=l5gqDIkuPeq(G6v^_Pr0nxQ?UES5=7;2B$#jW^~JXl%C(fT z{oYZLT>Bg@M4cEY7a+GDJxNBzJ(bEgfx+-4>y@w`6qQL(a5f{U7$~0vE0tp`$bN-v zj}&8CN}KGPzKXBM4=HvGYoWD0_}yPInU;+``uNny&KpHCF=oj8gY9q55===AP1wKX zo1jK;W%%e72c?I2GYf<3CLAqWBM3*1H*6i*d6VW2lDj6C`}8Ma*x#C?Z7?_!4&Hz@8z-}7 zwV}Ux{&v3lL!1=ooC1wSRJOoxT-T$A@>CWly)*pjOlf*gY4FCI>2{;a&14*oO;J`4p-Af>dalKvl@}l6{BpfD)(FyKyH*wl$lvdR)^c;}*`G zNxU?5R(GBayg0mHFhrY9+-JxgPqO?Tg!2Hc9LK z%ObN#9&SBIIBV7w3Q|v;y6RMc4&v3WGTmRw3tfbWmQ7HVBhvllZjjtnKtmSbBhOWM zh?a^6qz!bgs+L$poxU@11}brgIcD{j|ev8r4lJKA?skR?KewJj zZQ=-7_t&K;j+qFa<`jTt);VI@}X0A2FkYtEWg5yzJ4fzni zU!%k%XGn0$zZqh}!8ZdQ?Yuew<3DD|z`>sE^HNo!<4g8qG!5yGte30`hv=ffoKhGF zpn~mt7{!9cq%zl+8~9cLHbcV$vgi8m7rmkDxw^RC;PRBZf8Ns468C%Io#%h&pI3-f z!QZloN7l&zDDXZZF2_kgSY#y8bXDWn<*ls&C~vYxGZD*bW!{DZ;TP_m08 zP4>zu(l0-ve=j@hl-BCty0|Q%O@%MWzTb?dww+pArK!!@ zTeGKgvNzf@(Q`aCVg~Srmuy)>(}0n(;T+Bm;b`#OdEV1*h?->5z7YZ*+#rlYde=n2l>WGmUXBjl_#09O z*LAFY%@7T4>{72~#j&3_0YXec^Q0ii;|lKZU~M|+;axGQrcJ9Ub`QRCmG4rLUf$cL z_qm=#e8no?Tpsnb`L5*Vu@9H>FVpfFCLT3XkCczQUAO%AWn})&@*g?}A8LR*_-hup z13Vls3I4n|w>tV7m?MMF_lC@Jy81nm;!%Z~q=iuc-zM#G+Y!oKW&M`nj9T05@kpR{ z-6+i>1fOVx%-5NLc*ALD%PGJ|rnAoB)+3-%4VTS7gp^Z8Ymlz#jrM_HZRV>n`kR#g zl2df%a&QgsU?C5RK`PB!B+a7c=}q>-Mp^(ejYhaMA$Y@yjP9;C*fa+>G-QeDHCouH z%Qz5a7OY?vfQw8C=EAQCJSI!gk6%T$#kF>aH}o=B7vG=fn#=fm%01-+{=E6$C9HLx z@=|@^E%%j|mGiQQ#33(t_If6c(%4(g#6kH>L!Ukk@2H2Jj`v76o{74g3^*<)hvYN4 z8e?JNG35?PT{Af2<&gdr`XHReZswk|_GTaNgL4z-lrXf#kyI};elXRXj(D77rG;Tq zisg>sCy4|la!mZ1B)bkqPP2*}aeFI>E2hll$?d1|TP&CtdxRK^mYLKebRmG*I<(3- zmAUE|UciUz|kx=^((DUsj*CgSfdo@Ek0j<9*uwR5kte zL5A-=Lz;wNm{rx1fy%ZVE-jLhyW`1)+N9&YtcSwF(||D2qPz2n@-1@qcZpbX71@%v zO6To2sDS+xsGXKQRJv;pJnGFy(MQKJy~^x$G#o84P>d7uBg6^$P~y7wsvUtsoPCa+9K)%h$2=I=r6*6Q z#KXzTbHmI2r*y@XGL{H@5f?@v>zERF7;h$?6{xFU5VFphhqqJ&X!5PYOD~gm(B}>> zwi|-EoeL{8@^IWl@3N-?MnU8Wk-ga>7a)rjGFCtdD&}GAiF;bE-jttyTAAsOQC|MY*z?%w z#U4-V7YN!BBB2Q5Tg&W!fkF~4dZwpU)F@HKzF71q!q%0ZD2z-%v8gp^&m$S{m2bbe zoA9Rz`zU%v-8>ZuJ}p#vjN|WU-d7!g413AT_|Ej`8d$BeqXb#Dc)>9 z05eT*I|#F!)9Ib)4_)l=b}~Q$@8pBD6_CTlC%cZ}>&HOqE|$ZXiNymothJ95d{A2Q z7;6x7u5!#(e(2B3hvn$c7mDP92RqHl)1TI0EV-Vl684YA39?{FUqG+^@O{(#*{)h~ z!hYv3ShtpTe9IV6aE6BFvF>b%Hy3O>6l(OCEDA;R@VtC`jwx!-4Nm#__E=1~rsUn? zia25aYBB|hKY`A(30ugbFXrV(4-&yxUTzE#K5hOVy;u7+JPyM(52S-;$%$M$;E5-< zYeyHK2GlO}yJZIcdYQDDV%qN{-K+)ane<&E2M)y=qe)w#b5lgnAPhGnQ&Im4=i|<^n1kypP6s2OwPVsr zrXk^qQ-{NZ{pv!=E4!=V2{5A?JOKIk@p3_LTTaINMvjq7m3A)lCaWk^ah;MLLbWTJ ztmaAFeumW$`BCS&I~ikeJn|cGps~*y({ZMCt*_%cpLJaY{(a=-rjP{H{38UfuRz0q zT@i=N4naAF4p`e`>uXIHR>RY|T{w<$Lo(^mm~s^uxWBkin zDq5(IGmUUScnZ`}$weQ)B(jGH>@>EhqXeC>zxzE!A~DCUc|RUY*gyPeZ}uUX$LQ;I zoUii>ad+oDN(hX(K<0HRdJTi}6=#~V3=Sz@5jP$DE%b)=*tDE;vNJKv`^a8QPf%DP zQps`f+w!I>Rh8~9NeypCdVV!y%CqKJvK|N}>p;itYt{&lIh9mGKx8V)c&sz8P1$no-k}aw5$qtZlv_x{&#R!*Rx`WG_vfM zp_n#DQR2;dX(YDWI0iae(1XM_xDhZs!U%Po0A*{_)T>UBF0jDpxzRvtlYDYoZpC|Pd z3Au8R8**j1)quk(2~*e5H*O)^bFlqwwhi&*y*g%3eObU`4jN>q&VD5MJKi{9+;#&G zs=->(1(*xnS2X)7&CXd%ZXrw9+bu)#uF0n7MXJd^W4#j$TVW0 zBbY0krW81WnFff;Q`Pb)}Q7r+y* zO7=7FQ2;5aWmjlWydRDlf;5C`bcJj!<18>U$qdjrh2z6?2^Wn}w8I^tFeB7Nb+f2$ zkkJuK=AH0NueE4*3dw`nLIh$mtx4`T3oa! z&7^)cl+CIuB5^L{OlD#w z6>k#uRAp@UPtVf3Q|@MOLiId$c0RRF8WGiYL+xvHQkOjGf!02O4}@N0A1KsoYV|@{eL;S9fAO*w=WyzN4$PmoHn1V=k9p&V)o?{z#{vu7jSO(bBf>YC;5vk(vJB z_w>xttR=`}fJ$GpI1KtAp>mS`Lmb< z_KBY+oej}`pzJs+{>n)P2ntcyfnY(E4m)7xdl@xl#P5(j6-sA@Oh?QN7?Vp{Z9fh} znC{Ic?6_fs)DKC);ZhENMR>)DKdj6EZU4XBi%{lxN8A7Alcm?{O>0Ts)d`f|dM^ED zS*jxaW=V>()R5J-@>ZryMuKED_%me^^hDV1Lvn1E>k}d~tq6q<(xYrK+UXIrm4d5;bB+H_nX<1?+vb zMPbBSi$vI%RHAk%tinE>rK<$LK~xDwM&kLvINN4OpBQotizggz$D~|f99-CVu&7+$F3?8=qr77 zh@JIXr|))YCQV2EA=oaYQ=vmQAv406#?zT9`<6FJtlq=ZZ-&GfuJKlhhBuzt?QO%d z*+*2~JPS(^#?QEwPP4u0YCSCn0O@?qauQ?31-?5A9N)U|4J^Uu1`bbXGz-wQGBZ7Idu=hu8abEw=_lm*u*4X>z@GZ6;+G zbuCuZwW~mKP3d-RreJ+>*FHn0lJC`%w)P4ytFm|2ZvDajtZr4)EyhJLTml7!oTGw9s99@#nYYR3|%xww@Ii6YB+ftD(F;#6m!v-(Y}-H(lg_|-Vc z$4@|EiKV-;&!t8F(3P*gWIkeG?bAt_u*Lc zt|Y$|lN|nxaV2??!>P7jtgwLE4HtpSkJxAEdbAIxI?8DRAWe7qA-Te?1>12Vf)r9m zN7Sg!fbSP}_!RC>M-K2r*@l$7-@R+H3KEuqJ=qZr!jkqON*&9W_77*wxa*QwN$9TW ze6*I;bv4ZDPM_ehUty(7ws}iJb{F4zebu*n`2HZ@XTSi+F@V3h?k!BP4jglGh-#Lc znLR-6I7_k)m@ZWe1tmHTm`bt1_TN$SWp|1jF$=G)M>QZV?Lg`A@oBux99q}4>st(O zq$hP~(x#=^5fey&z&!f`71*l$RUsmXJENp;?`kQTl^WV|jJ=iVkQtk-0M(KKK6=aK zy(F|B;8lCqj2WpR6h53sNx!7>@nLuJZbrxHl6K78>dG0dXtifYOrgp#C(q$w>gc50 z?4QwD%18yXD8a_%gNWw5$d*Y*cc}}$Cxh+kg70+clIhOy!ag89%x+_JGum_!$PJ_6 zhe-=EsqEAfYbr`%ZuKqDJdDCx(t zTgjVV{5of<;u4=H_BPmU9?JY(<~));g{0f-ZLJ0_RS8Vx!aRdDirM#&UW2JL5 zNq^%LPw&J}m@-*=DDAN(zHWa?itgSr=`4@4-Dn^9afxPE(k8&{6G1xcQow$OY%>5G zgm3xok>t9osu2JkP${1yD&+I1uza2#lFxAgJ}+N2qF!$YjMCdte!Z3X^me>QZzq33 z-D_?ttL2w9(Q{X|-hFqCEl^P`zw6Sju;gpQ<4WQUVE!RM!fge@-SJ=Fk;5a*Yr3^z=0oW z?w2%4DVvjV-f_+`mfM!@WP{8PafgP>&TukR&#$YIDLDvzx+3(p88XgzV+>?jg-4_g z0zorZwD|2SC7+CiNuJ$CItS~w%^=gx&WSstofBV=lFvF_s8n{_jHq2pwvLIfWLsa) zZd2^ew(iVsgH=>~FCN!d?Bi)pHYMcR${4qw0*`D;%Tqn4)#ATACX?G zZ$Z#12a!scQ$5&?%zu~TN7C$+H1e^(H0}mm&WkT!KIZ(3Ql;3GTW60g-MG9yI*~Kg zzPc@!FJD+O+^cqKuG|CyiUeqE>E__C&qn4R{PnlXB`^hgxBiOn9F3Y1JCZ;I9V%}UQ=rSVqlCv~m;n5;=h`mj28?p1oHWu&W?bQ3?Qo7h*^ z7x}1l$c76kIWxTd{njB?&&Hjh;e8#aOM5=r)^WO2Fl+Y3Te`Ey&r#T2rk_duoU5Pn z^m8GfF1}`ue^8&T*Uv}wv#a2JdfXJ|xF>b8FnYWF>DT+w_j)fl%2&Om+kJOXdbjVz zvDMQrPw!lMdAfgT>IF?)m43bN#jY2z)aOtc&>elryqTMRjmTvIp32pyo z{d`(Kx9aEb^mDs@zM`Ky_49T8wDohhe)j3-2m0BspP%sAf*?+a+sz_3f?{1B9J#S~ z;_Jd0uq2!m^Lvh z1_SIL^XM)aIfxLA{O8|4A@ENK{1XEIgup)`@J|T*69WH)!2d50xc|%&&%<0#bG^d# zHrHORgBwabpM0gnvzzOAu60~L;cDYba!uoE;5wG;2reJjNb<m{z& zx!&XYgv&R!#1r5;l&gyCB(Bk1XK_v9x_~RrHH+(Vu6bP7aoxbRlIurYcW~Xu^&r;< zuFYIqxwdodk_Uet|?q+ah<_6itAXeKKk=j;CunsbgnsEEnF$CWn3${ZsGbjuKTzi z_E>bXGd1>Cz2nL2+1RH8ts|QE|ue>wI6sxZ5*0z zUGELuN<`2(o!*ed5cAyQ4T(j@+MW0pBU*3hU%jENH6@{)DePAY{-&Zdx|PG%3Ebzs zpMN)&-?i^~L!-GjWb)7Fz3C0jvAvlm4sG5&Ufx}HhM$-r&1O^>H6f3 z4ZY31?`3aD3_QAC@P@=Pq=EZZ?sG8sep=qs{wL)3Bi_)X+*gxtJ@=g(u)*Qp@US;@ zKliGKyrH}0{#d?EK7P-8z#IC6eplT~y>h4jHuu{9q+af!`>2=uocpO4cr5!lcYb&A zelz!mU+2q{KFPLEMg~EY2l1c>0f$Fo!qsw(rgPfg+L4)-qZRis}p&uQO-@|?Td&-;n~d^gt}Tx+=6hyX0_WIW`rf$LVDujYCk z+?Hn|$6CSfu4}!k&HKd-k45NWw(|1PF+N zP9`&xWMpp41rnu|DjqpKw2hTk+R`>vtXOHKEm~}mqQ#cBUT8}dTh!R1(ov0p6C1i`JV4N8F;gs{|@Cyshmt)8k?2>a%Es@f=AgzrB@xGMlz zgRmX>G_Lwa7w`Uh$P}bcws@+>Axtj>JrN2>S0X$#7kmf22bOrMP9aR&;4?}$fzJ^3 zHDf(d{%ou#gjJ|V654xef{x)}h+tKbeH0}Ox&s09dsaeykoC;$VTo&?$fjscDWihci2A-$q_F8_=^ zZ)9cp%i9$d9tgAP6Dq1E1I7WW0F{8#LPgaHzyRPd;2>ZxU^ieFU?*S)U^}26unn*k zum#Wu*aX-J*Z^1$=mDew-GFvL8=wWy1h4@jpcWti#sR7TG^X}7ZSAdV;@&E|Exw+A z+S}W^C+^+5_t>$vwyKVfjbqv3)_*a2PX&L2z4$d{XMf|_;Jch39CK;*fB$#X|Krbg z;yb`rKp$WefMn}>Ko5ZUvKtTqw2jBSAY27l0cZt~tf~hX01;3Nm<$jA;{oFUV*yow zO28S&x08V50Gg4>E%}fo;E$lzdFvFRF_rGk#Jak3LT%#|!E2hz3`rCXs!^B9bWImp zmo?5<5=#k_M^A3Z=ekpwtR*a|6Xr!T`D`d2OJu{{z0-x3I$>^|5Qz%2V_o@ZEEA2S zgsX&W>V(EQ$jctkH?Z-LNvKHmPsWO(PWP2uMNfX zQL2M)qi5k%GM7okg={X959jiksE|vggm^01g_pVW$#5=~N(!lr5ba54qS-8^s6sfE zNXMf+{P}Dyl*|daP)9r}q}E0=o$=H+KJ5-E5d|HQ5z0|NKq)0u zXX$@Ub+$&R4N;WWL~BFq3>Hzpph-BCizWdqjq#*12_ck;<+{;9EG(o5(X!`>79k?s zI^G}eAxrIiKpkMP4h;bllvii1>WJmWlc^jgDwXf*7821!D$|SdXeI;7$C82@=?*0$ zG@%Rx53e31H6wgzvJtRG%;eBgDoaxHn7@1?DkM|M8QFX`9Zg1}5lmzzmCwbJ#1Lip z_7Z7@P&kvyW`R&HN7 z=Y7IK8sG;wfV#Rm0AuUAV{z&`pUm+|2ODzU%ymaOKV+g{O2jhJbTkD1O=XCOb1aG4 z#4)kXK|ZCvF$ zZflvhw2igRUbLiT(IT$h5N%!3+{%hsOPbr3Em_D|Tf@AT#)g&_JjRM)Tl3O3w81E( z{1!CYf>`rn#;#t_${H6fY-~WfrFkJ+xTuXSTeyI=F1m&-Sk%Ot<}GInmbI{@%Vx2L zrY7LhGMn01*nCY}!z^lv<5wPE*1Eib_m4j3v@Dv%6LXr|N_7w~&o9+)S=7+9a9#_e zaMq$lybX%aM;{9oE$4l4F$F;z4ZD*{GEpcAVd66g223LaflwWB(H78TNdO7X`32wc@62DA}Lrl8pkR|y#!b;pUP*2LesS+ z3INx*(1Rtqj$|PE!FuN7Db+wHkbuctcChJuve*k6Omw73h!*5!p2))yfrQM)pwB`y za5Pey6vhfz@P$G6m59a12!+|@DqiU0cq)}9om3P*tQHai)gsZJDQ=uEzd}5li>84+ zuhSJxMl&JMsZ@sH72*X2P6MrRYB=#?$)U6>uJzT?Uh2OFL(bKp{#h!!kmd-HfFTik zcHY7e)?qM6q~;;llr-*Okc)8&A*J0k#52qjZBcxJTM<{}dxo8(8CB-=-!v>=ExZOhw zC=!iA92UwW7=at_24*B+J7P)b&ywh84vewtIj4x}LfkGmm%?TaE+C}OV>v3lMAIgbA-(O7h zC@wQ$5`mqRcjsUEHAV)^@?BSz(BoBKTGrZ@@Hg)Ue#u%MQLaSApR zXy)p(RGKR)dKB|sZV9yF%-V$^g9|O0e zfQrj4$YM@57a=>O9{7;nOu??A{0x{m6LnKAH!{}Ruy9_ZCFGODs9drYEIZ6G7hV`M zc@Pb)^Ek59CpW|puFHgoooGzCJS3@W%z>_G9A+wuaE>S2CTofW;xa$Rt5Si zbi+u_5YF*bC{kR56ffp=x~3oT>5x8==6!aBW64e|=%R3qq}(UMsW>6i70Psk$e0Ob zv7pft5F@5ckU&8^9l}DVz9^HzFsxQWsPH_|Fc-pu*<6a3=Tb#1u?C8X8kfgiI~2>L zu-J$_`FJ5n&qJFXA!rNe2{O_$p(MAlAnQt`gfJ!9?26nXClfBNZ4Oft&!G81));)2 zYtPbBBl|rW?SetJ7NaZjJ+FiIXq`jXlvG}s^T)ZmhD(j8~VHZ;wb`Dr@dGnH`^A zU7UvU48&A4lY~m-BSoEjD9Fd_7eM1=j^waY%X2W*37E#NPw48G66GywfAo3e*-{AK zAsGh`TMSM7uMI+anfagK3M^XvQ00gERr!d0EvW2z4{gVXhCqg~Yd0hlv5pBd_;gf>t%oIY`1jZbt z$n{~A8;N#-*Rlk>uW;1e1A`{!_5_6z>V^m*3aK)M9a+pD_!ou^8SS+3MSDl( z_z<7vlQC>#aGr26qB*8bDsCkvVsN!EV5}(W-PN;%%T$`*Xqa_F)=)YU>ZSfU0eZ2S zLwV~c6QABf7|X(3L7FI>g=nHOtQSuASkkpMFvmO%dhif@7Y&8GK~do4#z}Ty-^A6e zaLF(`sg5k%4O+PWa(+m`)wsRDw7}fDcCBl-k}*w++tqxqt}$NMq#%p6#_f%sP6xn8I44JuV>&^SZDR#kZJCc=GX~{@~nGO9gwQs8mp1qz87k z_-=L4S1RVGNkC=Dp62BkOK~5rSW*iguCNPRQ(avHq4NQCiu_b_Ju2jr*lrGC2Q4BL z8Uari_ecsI(PAt;w6aDBbpj3WW_2fdT!YV*?fn%|WH(HnIxSFFyRsU4gEcOp>NtIC zgmu{TahG6(Ge)tL&q6tWVBX@e0QeqefmcEh<|I-Jw4Yg|;>@#+&{deJRia3uip`iN zOrl7Up6>h#weJ2a8F}$g7n(i0d|fO;z9(5&(QvGEPC)yc9EW24l7CiR9j@U+a(ke$ zWZ+5Qh=XJiJTF>vQNGVW7GgZsQN|lsb;1H(Yc_PpLN1{gBbzbX3sW>v@T;mLq`LW@ zTg$vzmVkJ5mNZN##hn&77B}%0;No}*Rreu&9}{^wyB*+JnloNdU0WT z-3jN_yQL>#IpXz=_g=0yzp~_>*)QM8(~PwS_@LZM|L1>OaYq5~j(PATUdsBw=jmlc zDmYXKi|NFB?p*;B;Q~N0|EaU;HGACi(_%TkeucM3=|?Lns-6Z=`^ECZW##vd#LI1f z9mXJTV{w-aUlq#El;ypF`*dye^PeB^8NR1Dd{6N-o1KY9TVfq_GR@v(v$;*P0LR@> z1XyuvJaeMC7C58LbRf%EKc!nUsc=Ii0^c6edr3tL)_kD_Jn?a=v0#XTLhk(LB@3Hd zWQha=V>gV1QVDmXy{RKfP2LE@>1d^ESD!yJhD!jjm)RH|OLvFZhY*Xzx}d5qKrD=7 z`#2kmSQa8M%4*OCL@Bne$vV$a+d0~3Up_L+x2ZZ=H|24IbhR5x_p&g@A)8LJweAzx zI&0^7FvnShVq70E_HQHe*r3Y6hh9Uu_|MpO+JR4X1YO^{#}hjCA`NK>ZZ_s#8=O7QtW863$}S ztCgLokY!6o7X9M)Dmx1<@tI1PUcmmH%1-VqKUW#X4nK{9vD3(dhl&Q7Y+<#H;;5}74QWp;Cfd_fGdtxStrrB;7={4F}jn>HdF+8 ztk4*%Bsy__>_!g`R9qJfJw87oSg6v1wq1Wo8Hw{;&TkikYtnSLgWWnZmvXKAk08(W z2W~^28@mX3ZfTP6Nq1ycvq{M7aoLciD3`PFf~CtFmlz^v>GXeAiJ!D&s<-Qf8w>Jd*QgXDaoug+AEXp}{ioCn&? zescs4uJ~Mh5w)>k;j@y1^n#^3q244oRsJyJ18dhL1y{T$CgYmol?Rsx-QrU&YMih-FE) zU+Mu^U<*mPM^h~t|XD8{#Q z7E`Pf>zFN|SYb=0r5I;d^B8Tc%;z!MYPptTd{byeA;#Duit&w_g@qX8EXDXn(XvA9 z{l>;!#~<*oQhqkgp0 z{|?$ho&9J>Kzk=;0Q%d7em0;yJrQ*@l%c(uA5Var~OJU~6#N(1UYg6Gj*)l29D_4cFP{ph3WQuHSP7d$`kQS?cGFKX#W`Vhi2 zpbt=m{QbylMVlKC??;;(fYW}!u8*PK73dG`_Mz{-l_*F1hpt4wC>sc%E^rl)u0pyW z^>zWze&Ex73Ce)ON#NIqcppNB{sxe@3$OwG_0w2DE0G+`Am%8CdHXcz`Xvuud;rZ) z0R}LCcu~3$ys-q(4oCxT0pNFs*_Qzi0KN}+67W3WkAQao=g+BNmjk8(EI>1$4bTZl z12zCY1NbUn7hoUY7l0Q4e+0Y@7&RB~u>fiTUO)h_0I&iO2CM;m9PlZ?7C=AX0l*%> z6M&}yM*znGe+9e?7&#B`u>dXuTm_H;0YEFD9S{ff0zL(}8?YVl5MUqRXMh&~uL0f! zR9s!bE(DANR0Cu{BcKIv4Il(q1Gp9NIlw)DJ%EFN!+<{k{s!>OM>_xkFaux!ngELc zD*>H=4B+E{{{Y+#*bdkQcnt6i;CF!60DlLtmJ0SEz!iY$01Ge&unf=vSOd5Ta0lQ{ zz?T6#0FMA32Rs9K0q{q_X#jb(6>J2nWFy%*>|8bqr;DT6`S>-P3)qL)g{+EQgx|ur zn2lv0VVAH=!D=66m$A#S^ghO}U{^AMO<)t*BsQ5Yjilx~a zoReo+j^)`}?CAHfUUn0^nXP9ZXP;oV(4Gigpd||#(WYQmCbf>Avruw2UH(Y(TOLTY zK>J7HFhOWDvzR_B>252!g}C^}?RTESSqfdk%efE2a*oq^Ya!Jg#U4<^ZZf@PnTgz8?Ek+4ljYhN0_>IU)>zq zn&mOtIG}+Q5v6n|^yy$}Ie9?KvNL9)Cvt!yHf(uoWB_BIV@M)fOkoGPj3OB65PBe8 zP7UljrOWY3<7^5R2hMZd<}%UFVuX$&i|7-124^gvELB_A9mO^wkX#Tf_zpoggoTN<%o2-gCVID?=#&AJ<*2`x=d;gpKkaCh)|)V{$_vT)MDquFq2Q_f8f&TbGMXlV%|QMz136>(`W zOV<^7`^1erQqE>HO@;ef^Z-&r8sJw*r~p?E=oo^cgA+k~RJ_2&OOOteFNb^VZdGJ- zmZ3)vlre6Q(s8<_KcrKhd)8BQ8Lrqx+2E<_SvAW>L!~7N#5-GCjt%b83~~$-m2VhB#a6>|85n2#hXX*R2jn|Rbn`b^PBVZG!i9-Lwt~jkQmBC$QWcB zN)*@z(Q>vS0fGxk)OIdaJ~_G6P$tT8@30_LQMXKhAXP?VbX0I8-A2m@3{SOqmyegx zg{ESJd%cwC;l4G++{;vmk!TCjl^v?h6Z~|)l!~QFQJl1NmlALdiVqYwo{Q;0F5vCC zq=Gsh{tQ##e<20vo5a5J(I4U02;I;BLJ|xQd6)vj6d0z!Fa?GwFie4A3JgS7PwgExehkg@)PV(QMPbXryFuS3wGNK-aZ}mSr zvy|V5Sbuv3s~a)+)S++%yPg^=eCkFhh%LuSRuF%i`I*){oNwVoA17W5arU){*Ld;CaCv0^n&!AnZKdMwejglnJ(-tD6XX(>& zR{b`d8hT3jG@%yWIpKJw(NhfV^4A#(&j|>r%`VIHALpkY%%|H2%?R~eoD)j9)N*NC#1>~2_(z``aIT7* z6L>y_bIm;HmHPl13+R)m(#@&l*6zYH)OrHA5Eb7~PikM}^c&j#*;FiIMKsLdOxMLH zhBH)rUk-Yl1-yvIA}Ak>3*f3=j#U&`yV!K%6nH3&1kRHgjvaB=ERJo6(~J0nK6aod zfv17-awdA~#EJO68eH4L;j1%oS=;Ox#zX;o|9E+eu1Yx*d!yNj0sjS~ZF)O5 z(Gl+z&_FWlOvKl@Som_ID2}maBx3XpGpWwp3|yJALfJ&!TJJ;wFWAL8quJc@^4`ju znis)krC6@_g3$s#C8YQ_F99((8|TDyZ7P*%z!f#TEXTjy$eB2`P)x@I&cv2{sF0?^ zMrR_vT0oYNGn2ZD;0shTF@B}WkBazCrzE|;W6vxv;Pr5v0F=VLc#1H>lWtC~p)mMD z0WT~PWaucUh(1H{aP!>1F2)OrB&%EAh#Pl}OWFzpC{`_z!>AMMR8g1oI$e_{3NC8J zTK|$dXV=Sj;FX>E(cZSy>L^WoXV~bFJIs(b>NTQrM_K1YGisjb^Zwxv=5jLGGmB)v zQ=G$w{|r-Lm;%ET7^c851%@dwOo3qv{C`aWIQ&f*z*zA?=`->-1k=R z+$V35x60e(etEmRL!PUwQctLR^btnd7;nCAzHQ!O9kKq?8sTg6y#dc3-QOOF1iAz9Kst~M^aR!iHUu^XHU%~Z9>E=NIAUxgg1O$5)F!WxSIO;i zMBXGfDRY$;rBykqtX9w0exdzJtJSCLqORzx^^Cq>KcFAfpVHsb|4ZLwY&QCgEyh;k zq>(dw%=P95bECP*+-&xlTgUQqIV?$p0qqlb@6)a7@~i70N25U3pcJ)$eId`a8PE*l2CCHd}qx7Hg}u&FZ(d zTRW_s)-G$ewa40PUF7Tc-S2zO_jlh|Td^DLd3Lv*wsUrmz24qnZ?xw-IcJCS6X%fg zlJi$*tp7IuX9AxGRgMM*0>=W!1GG5<^02$a$Hg<=uSrYgoIFy!PW^^@v-V5vRqbQe zgT5zxFZt^2H=Msa;{&(|Ow-3ImD|j5)_6;>CR?@EbW60Z@!b-5Hb4_g*WtH{+r)lx zySPJq+8dYBQcmiT)=L|tjnWqRYQ5H&Zit3r7{=$!1Lj+%ZM9e{t+@4&^&{&U>t*X5 zOZF}EU2C6mI{ml%&kI}_m=;*mc7pN$YN2G*0k zwchDo(W`h3ukEe(HhJfITf9G)-jT8;F5M@ekUh%Bl;0|+l`-l*aL|XfY1%36U9C#L zT|cHD*H7pt^;7z3{fz!8<9Eiz=4Iw|Q!)MKVl!?&WIkFNbsn?2%R23wh8aB9xy`?g zz8R(;-w}vljQ4w9UHPVRrTPW+0&S!Aw6fqw+pE|<4QidCX6J|~X% zzAZW6tDrJTovMCU+pF!@4rm9pr?fu;o9m2G<`}ce9BYm<$D4vV*{n5RG>@5cLH|~( z&01ltvf8bP)s4AGTRE%8T5oNzHd^=jUiIy;AF}^qD~{pVPQBCQB>ZCnKMuT2wA+vO zDG=0vVn0@%QbuVj_51Z->6aPJ#;1*g#?97~*2O-{w*j2`XWu0Iqs~M;zrgvu^Hu*t zfjt3s2x}A1=cPNOFG`cJCSFutQ_fMpseeZ&`LWHo*BD%FTg`1|zq#GqVgA9au+HOH ze$V$u|Ca)6fZ^Uc$)=x(zm)Ek$13BL@rs~)Mfp$2r%H8{I!3)mdr8+IkMhQMjZd2% zj5=!FYCU1q*w@)_*()KPW(L|za^zEiZGnda?4(QMO40CM>;0AYZLcULq=%)SNfYHI z@)zZA;o5z#BB}wkMZH$-RC~aM(=}03G()qsnD%k)Iqe*MnjX--5z9!!a&}XObh_BLa!utKWeVxTC258~w(1 zV~4TR*k$ZC_85B&!~Blen7HAF&>@p0X~m zm)lzcTS1ln!1ln7z|O#~z;4Xo-oXCAfxyAQQ-MQ)!+|3u>2e})GH@zzI&dby1P|Lr z!w@UQQQ{bI>sWD|I9?RQ$zrW&dn4X^ynDR(wGC;SCs^Yv?>&9>@a*Z-<7Fur0u3XXo=7-3Gp+A+-Q&DCbc{5SLa<`Gk{W?>B_tlJ=! zMc+-n&-{^?xepYLA_sr+UCxq&MK zY9LS2sNTaWJ&av0&JiCH_hMC_<6Y+M_V!}t@ATg7{fhT7@6+B_yiL+|(rW2z(gEpp z>5Nn*Um@?5AA>CXjr=?L75PF%Qi94}o8}AoGQLmxKIQB4eZjZScih(ko%99! zzwCRVk@iCyo$sIGU+&-J-{SwC|A7D3{-gfi`;Yt8z#Q-vYxS_bn3F5T>0*=EDQ3l9 zajWDUvNErN^azNF!uJ{`BIF$NBOq$L**CB-<0#! zvFZwSi~41CxB3kD`8DKLs`8>@}e#%phB9|O0HHD(yIjBgl+jb`&Yv)z2zywXyv zpIdKR+k6i}{~h)D?VEu470x8*YG;M>P3KYPS?9z4@qWqwE&mVwFZf^gUl@`VvBe!XdV~u759k8#0$KWy^nZ*%H`f;k|AF$ z$K(yrgO6a9c$B2_x^e>2`a<1Fti_2^IGd0pmU|~BA?e+?+f~F#JV|*RpYU%?3uP@Uv2l<+w33OkK64| zr?b`huJfwn0o}d+dHyH;uLA$e19D(l;Io0h1>U8#yuqb?lh`BP0_>j@FZJ&B-XZzq zm*mmP<%*>=Dz_*bl}D9k^}Fh&S{<k>7<>_&NrOP{geE2{P+8J`mYSsz^3^eBW2dS=O~y*!raPUF+A@g}%#tH~2o``w6ti zWKeCkeUJTP`$hYo(6v`Ni<}_(zSnsI_Mhfo;lBy}Kku&$cmo}f-{`d8!%iXilK7yw zPkdHY^0&R0OPi%PrPI>+uqoEbo8>p<({h!vP`N{SSFzNT`dO^3d({WA zuHIG8)y81n=WEw#VQ9USwjJ{104$bYYroYl*5~SX=)Z+EHV+y-WONw`=)rr8?|_&0 z8$UJPH73EP{V1oS?Y@{V<;(jHfiF(_-uAuc8)=V+t(38E zvp;8l+5WnHzx}E`-uXP}`>?YQ-2HP%R^1=>|J6SpqYMP*1{MX@1-^{Y{u);Ao1~9+ zx%#w1JWre^UL)S-ecpS*yG^FnNPZFC!5(EKR^e`SK%J=FsNJV6#|m7l-vaCI zKlFF;irwX~VjWnO%Z!y6(euzZ3A4(YV|Dp1w_mqwoZmV3LoWO{!1jCC7CyIO@Z?6Z z%li}WWuWF(`2l&4{J8v6`DwXcS*rXDG`&=vp~|YIHmHl#>(#t^n|i1EHT7GN1IOVL zom5YiwEQSg`!((3#vcsJywJJ?oEf(gzMOB+_TL2l+iUN)57-B7(YYG*_-NpYKwsdm zH0Osrct?-1^TiK~Z+NFl&q-V1h0IspfV?DY;tZ_K@me)3+7_) zXZ{%4uIP^lzA3&IaNiGnzxDmocb~Hpl5wX0`~JW9YXX_TP-_7l4tTg9G)vq9kK-qh z=jVEL?{e>2?-Q_UY9w7+Cfz3eK>Cq%T>2i?>>p%ZS*+Zo+^bAfr>HULtO2zidjD72 zMfx~>ivEy(j-eTIj0|j=pBhgYFBq!1)x5;I#`+rkh!fTrtc=fqW6rm$Z3oh14d^in ztKkpuAFuIe{L=yp0{e&_Cq3*mg0Z3@-XMO|`+3;iKgBDRE2JH;K}O1#!%w?g{suVX zVQ846@QBh>TNI?PtP`Zx8T>ULOLZ)$IASLnKKgWDJAU(%m}|M50#uS<YrpjiUo&jaupI|(x7&BxJMG<&)CaM8UxUWE#F^%Zj^-?O zmOCAg-s_xCICnc=adv^zpKyNZyarGBUFTxI2p`z?H~6oHw;A={>i;a(_&b<^RN&sg z1A&KN#r_bM#X)#z&jnt@8u%0B6;ucBTc zUnW<}v*gdncggq5KbN1!T>c62<2`wjGELDGTbTv_d!f>%bST}>B01$&<*Q1as(}0J z)!E!yS)tybM${Xz3fHRZ)mznnS8WZ*;yZtua0j4D8cSBNBua{8zzV2`W}PdwNUhMX zE2LFYyA+YSrFg;b+$3$0w!*6Hmv&0Kq}|dUX+JEdgVIydA?dJm1a{_tbPQZ~0=oGW zB;FZ}p;8_tkCCh7vGO>1ye!C*9^0gBR{E4J%2s8Y(ywe+cEFCqK7nZH%t21|0gx(o7gkGdBYL7?ck6rfy`|ltLs-!RXLhb;kg}x=X1n5Y7JP&U?pM=i52v<4(tH-Nf@vn1Dt7(g!bu>J^UG_z%T`d aDKJcdVG0aWV3-2K6d0z!Fa?Gw!2TPsE5IE9 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/lua5.1.exe b/Utils/luarocks/lua5.1.exe new file mode 100644 index 0000000000000000000000000000000000000000..dc1c2c35cad8b237d692009417d3df049c69d659 GIT binary patch literal 45056 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 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/lua5.1.lib b/Utils/luarocks/lua5.1.lib new file mode 100644 index 0000000000000000000000000000000000000000..df98827653f9d59cc51c4c3dfd56d7dce7087457 GIT binary patch literal 26112 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 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/luac5.1.exe b/Utils/luarocks/luac5.1.exe new file mode 100644 index 0000000000000000000000000000000000000000..6f87524e2118c67296b0c108cc3410dbc738d6a1 GIT binary patch literal 208896 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

QTt-2zjJjBaedQj*-VAk{$>7ogj0v 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

9KQPaCO1m++ZjXYaI<61Y4jgj3wa- zu8_V=oMr^-X~;k zWhQ=M`~#czC)GJ>v=xQ;z=_@CKy-o5cuGETUR_%AimdFWCc4eIK<_aVNI=&?zGabM zYHFf8jtg`+d(%K4M0*?`_k)P1al|K6mU83O_}B-DEczTEdoK=m`6K$}&_m^%hKpu% z%h{{s=*Ip4$Ku$rIb0^!1;xFKjmMo4k>F=+ExMaNJYZUj;2q`&m!4*``_L~HI3M7C zMgAJQ59NouV%>-JA&g}8^bH*h|8q3_v5GPt==mEOL}MP#$zNmhM--d?FN^&c#UNc= z8w7b~*mK%j{tb5W6xCs;I>bhq(sAh~6tkW?@m~2H%^o$d`igrFiM!7%=_^W}j8&*0 z`Rj41gAJDe+>K8MY_Nq(qrt?oVB)fGRKgpEKrH+^k$Dl6*BVl`D-{Q#*DGgav>N|1I8Qm)G`558R9Frr3eMO0r zZBhjc+(6@y9=HUJ@N%PU5Rp%B7>USuQvFLlhlIH2ATTKWS124J6ke!tza-DD!A!CM z{nkTQBC)@8#Jm0TJ*Cein`&YSPr=ybwAIB+GGe8@8Xi4d8{+p9$Mh%qFas2%!Bai- z&i;Z90Z+vE2m_PzQ8&DhaRV?6c-OLApfmge&D?ZeVqR7M2qq$%5xLXB=l5FnN&BUx zK1ur*rM`z!u>JSC;8K#ty&NCHp-{hH{|>APpeZ^Mta7BFuV_A41@|?LZ?@nrRq7Ftu3pw$7*&XmOM%^yI5H2>P>=Jz2Yx5{^x1+CU)MT67tGz^D+DXVg zvr=m}CvtP?!?$nas<)lpf`L5@Q&U3pvQY$FJ_p3B1$bPUKItp|K@{)N&=q8Adr`iU z<&D5L&%}1P<^Yrft}459Y~Dm^c_r>K)URyDj?SljMK@q5O_)DM7Mi^Y^UD&XjIcLh z-Xtjv-(a%MA0s6d%*&FG<9~*@JE5;=4ss_g1`vA4d)785^wA{}ZC}#3S;HHb!Mh=Y z4Ei#5$z=G?+UdgPp7$`+-DjmFgf~xNw;jN=JieNz5XAngx2UM0Q*}O5*le*tALhtrFx+L(YK1I<7SM4!M+7(sEWTE4}+?0(by z@Ydu3f{{@>&4dBc1IDajFfv?n24GXgjc=akZf#6PvkID4mwZ!)wi*S_fQW3|*8jcfRh&iB8H=MpZdDueiG?Z{H6veX~ zcGHI|wP*YB9`-cRb+C2Y)v6{|`fnIVbxrtGOz0Zor;Gc@e@5C;vs8+Orde zmc%>4xq)W}@pu-jWa5!&;*l7`Bf05kRH^Z23+Nd`fGEL^&E+L} z_8=Y~aQXH_ARqtG&YP$N5qBa2{XOhMJMBma>_nBEvfWk z8hItq_Xe|d{(VF?y5t4f0*%y&IIv%j%r!rj%ZAFro+rGx;*57k{L?7%tia8j3QzD8 zo?h08F?k6(#3`sJT=#_5;bqAk2(`kLi0}0*p@>h~0r(kDF{$&V$dcO@v>JH@K>bMn z)8tQtulH24cRADy^mD9{zc8U;$8cv3mk-3~P zVDiJP2nb_Wfm&e54~q{zPt5r>L~8wDIB`$WmI1o83pVl{NU=y)aQ)`tFvTkuz9x-# z)$Q0g#_;SYDKWq6w+6E^Zpy`I-l6o*P(6*C?ojG>jM-SN)jb@%ZWW@*>=0|_JDlO^ zKCBoaeu`x~?`+T#FbsB7bGNAB4Xs{(BqEL}gclDS`4 zN!`dw(#&kRbvrwB=m(aUphL1Ce<;Rz_n=0$3yV`b7aQ6IJ`?(Y1_zb>1MXT+~KUWYGf{EYLX`Q z!BJjzHUh1Jw3RY5&ddHuG2uoJ^|{v+9qfj$(|PJ)jeN|6Gh&$c92wC_y33q~dDd{G zA|rE^$AHP(*?Ls2^~X{1Arx**c@iDz$GJ>1dQ*Xy@+b&hEH178U2;K*#NV!-y| z)cRm6elao^sL#nbHYWjMoH`~DKmjjXc@3|Ywlc)vc=p3o5DMZu=Z7TEap2={4@4>k zTap-p=(F_DBmP-1tY%fu_I9`=OnP*8cokfC-1_sfHdwOo!)00&EZJpLbAlK{V)9L)-C+?^)sEXZA)b ze^ou5*tdjmgdr8nk5*OQ4j)w`vmdm=y#l>P<~h9KGg2_V^>X_0)1yK#k$uMr0tcv& zk$DY-hW__yymxmwQ`qg6dnE{!s>%E!KjIEU)vpF+ep5T%(} zY$_t~;e`R*?D$n0c)?D#=rJ^;g+9rMa#?H+f@%srxKYV2=PC4g zM(m_z`^{bMDtzY-Uy6Voc^W{`cMS)A&evk0J`SXX@?(oJ3m^H!mK+_RtHci7TV2!~ z&Fa_EbKBhgo0rCRWPx@^ujce-Duzj-$KP|TZ?NLa3!@p@EFa`QONo z50C|3+dgi~dLs{UFYdE=ks2bz9Ir`BpS1$!POz`>0RGK zPe9b31aBwhHdA zaNgs7PZxoTaxn=feX%i)jY{tBpe`W9~5g#+G07{J=L^>S)Q z@p=WI^y+*_j8-0QpzzB4AH>5nVDyFgKZ=J#6uve;91nk&!c+3U9}g3==;`@Cq;Lx0 zHzRCpT8|T6$NcKH^?C|5vdlP!T?M~dybhLVeynWoZ5!|Da$%QQPD4KkUKS=E<97zp z-gC=rNRpO0^q5PJd3eyr+Pa9N-i3h0m1Jx>R$%1m;lc()_C6|st99{YQ+`IKXLxyZ zK`>zxd>;Wa@QDqiB@U)#A`M;?xWd0b0SD~69zmhxxFHs6dU%F(%lM?QK8Y%O{b5uV z!3k*OrCTv7x?yE4U_S>g*sUg<@eN7P-ske#@IAXTclFt=XqeJ!hXm2lQC2t*SG(Ib zCQ$~k1*9Q0jopWO@lDmgJc<$0x<11Gz+cu;Yb`6$+WsgFoh~}lPX{FjU`~GvoQQi| z#Kza~5=>m{e$zY&qg>1s8+QY9<>Gj;@xS>?ve@`Ie-XvT|KKlzl&)N~NvX=k(dID= z)&ZKBJl+I=&(T*DT-(;jvy8k>yfP4Ac{7QE2 zT|p;NG@L{$wPSTJHeQaPJ_*O!Kng9NNOYHBw{BYlR}&=_X|7c^>7PC1D1i;gn~2IJ zc5v@Q5}G3~RPq;qN)|aUm=JjAA>7cP8O03bJhT|bIzdgNM13NA>M3f0dDRGYViy2& zibZleq*~hQO;cE^RHCqCX-0|sK#caE{5!P_XCBT=cl+1|ggCqD)iGxI`%wA{AM;W= zF%c|sdBlvS>%}IQmaN~RMHD7V3y7?_B~mt<@HxyfP0aM)?IUjAMGt*E zACUMI1l~vOBZ}>!M~A1Ix(y#9`YDayE(|biq(Lm6K&;EtC8t2o-1|Mc-@co^@-dyr zL_081oDjm{fQzGvXKeCi+D#Cl$JM3l5HA;KH?3DoJ3E%HC)J2zt~EueT6#)L11n|G_a4fTojyOMm3FEL@-$b~Df+C;?A@RU-*{bTt{CiCD=5#e zKNJbC#I6ylx#9Oz^{^H0KJ2cbLt_AR?5cvj^?k0Y4f1ZRU!E%hS!0NJ*`BNaAL8Bx zKC0?m_@3NgfWQO^8Z=`eihaZimc1|vsH?JkWfP8C)G`<)6rCw+9 zX|FiHym9{`Ym&*_aG~KoDUe-PB4>xJ5q);Vr%5`s>sxw?G4}%!cF?aDwD8US=@?&5 zu^X>%$O~-0x!P_UDbA`ZV1a===mmyKh?()?pT9K*VEj`#?>9;D+~YRWA^tX7KXxU0 zX_gBqKHq`D-7^ulXvf!q)gf|kElmgH8-Wb0s|96JxgDJoRXCxUwA<#xpqEjl+%#L9 zRxXxGe7#zO;s~mdp0;1GXzI52?G$F*(~1{y{MblC>oyaG4;<07`~snVeLLaieWQeL zlJdl~<+XHyz;!xsi4%A+ftzmQBjP*4K^1f$aEFBTHl%Il8Ff4`+PZqX8oxUHO}&mb z-9LkUzZ4c6-t|7FkCr(0tZm5U@*QNAU$`92JZGE7;D}vDl)= z>u4($;_|4HQ@Icw3WSlb0F-3~8=2i15-%54?EJ*x(qIk`q%PSc5wQ%NU)a)%S@0e^ zn}+|7kf*lzI-Hk`!l_7ck$K#He1vO!sXr<_)C%kYt_8dU zRmy%^`uM&>M~!j~CUrtbZ97$q-crQp80ak*t61UjhIGrq- zP;LHhULdt9+z8tGXreZ%!zX*TR9DH03O2D5KD9nJu0`7|%i1}q^Nn6;UzPASv@E4A zn&G{oO65~$O#Qes z`m0Ht^!W&%c5a&}zhL*M^JQ79x6|#yzjx3eowb@8aJgYDEuIJ)Yqg+8 ze4WD=D{kv%8vd;0Qmdx|-d9_zw+u+|?Y;yxS4)EUvr?XF?h9YRt7L4qGtQyp5^HrA zUsFW(#;o1Q~ac~ z%EZIaTUP>4U!&q&uhrFoA(3YPtu3p16$4|8wuaKN5mXPX^Lt59{NN z2G76A++C@jlMgLk=!_rsFhwY)67!dO)R-*%{_-J%mi&;WBtP2wK4{HSe@)AO*sU36 zr8$X0|AAcXaAc1X-hE?Siv_z!g{{Lu6&8#M&>^}(tp0Z%MRq7 z9c!)GrQi2Un&4BsZ(2++lD~C98Ln}Er}ehBhw)_*9Pc)AffQu5U~&anuk@tI)O%0S z>Ei2*YZ!n_WB>$an65-iy_)kJID@lv)J%JFI1508l9<-HRJ?8E;h#T;VV}8}ef*k~ zr9SwZz}`R-nd;M40y?A17;vG3Nz-0I#ZNdl0IWFIr=QI|iF0APXA zO4JG3p?>}r$>%MHx;C$liYU0Tja-_NHeKBXE}v{tHcirEzOqMI28->+93)S@-Ix_L z2Cub^-~jkdZN9QH0-2G^3ol;0$e;QO$o&Am*F#Y~pEsND;LB9NAYdRQ6zd+LHUvnk z)UN-)4=JaN0h^^Wh7KnVo;SRQey=I2AbSu1K<-#2iFJ=t7r$7f{(Db25rL*28X z=cGfmW)yyat4Ivlfw61FD&BaWxT20ckYcw~712zQEAX_*CCAkdO|ZruC~Te}4x_Cx z{>~oP!uL549H=eNEO!yAF5s0FqD$B#G3N#tZ8XP+@#p zwp5!|w}{+T>i4WUu$S&R`I!=4w_kqjs5&OXUKz>pS^A-FWZYa5FH|KzwZ{RR`L6tI zSDf0x4zfZNm5HKxWO4zYnf+=mNY+|s*V@vUpE-vL8`l*6tr$eryuq65_r7e6m(6QH zO#dxAcvyU;U*-Ljb#KjG%*E9gyjTs>!E^F+!gKxM=2C3q&C`qepKLU{D1B>GOC|t0 zyR3b(3zKCz!Hd-kc5q$zOaAbeN^cK;X+ii)i^arn7EGDt`5Rjf$<>rZCvS7m$vQTN z5%zUiJ}{8&VPCtt3UYSF2GT}KCx*+mL`o+|mgHrCs=3;ZhRe2veY-rZcx7gdcOl7m zhkmQ)O>Bw;ubXWy2sWp<%(-pY>FDPZ=X>!`IY? zA4ugd-SV|_JEevTEMHetv_>k`?#BT$Le!4={IGBHiVInxyHw~uokiRVZP!K6HdXHg z8LL9eo`MCm2MqI5jzD{@%Z*Q%A2@hpk+U#7t+H1=TW6!^2*R-t{knU%mrnXy$ZX z%b_mDC^@I~oR#mY`@(E%vr#y@;vfU|V3$1VWDG^bsl26oFS#@onXSXJk|Xfzshop3oW7$q&vqnPQ1?X@jW_;jL_l2Gre`w!O%OpXJ4AZ9x^o`8O(dnlZ!67+v#>7l!! z(4*Bl6xcbuT3{A>pJEQPdoFryzD5`~mGMWisFV3LuCnwL#-EXCWi-`N?t0t?@l|b) zGV1Djin!#X+c^(gUJ!>P8gQRNajX$pOEU`M*Cc_Nu>ksKQ%-!vVl|3q=nD%3Ln&)a zOmjxZ2kG4~bh#JOuhL7YUhAv8`4Nd+ z0&7H9QyLAi<`k4hAL8BnszYVP424bB2o^8!w8uLQpVGh~-MY)MkvxP<^?8i}@OL}X=>6xxR;bet; zTWz4GkETRs%PF}*n%|tQudZ_SJ*h{ll~h-o859i=(A1N$>iQ~(PKWd+M)3n0CkK1q zY0(CYl-n1+47vhrqMdVQ9>RL6efk+#$WUn~z)Fqb^Z50&O=J$l%B(U1q>tSJ_;x2m z!Q>IKNbQCwtEqxUX{5Qd?R}iXUZeN_aE?sb@WvQ)aSkcduENZ?0DH1h4_@B0;O#Z< zv8~uEGAgScxL9oFyNn6g`KtoVO#cCiwU1#F`_GWV zZ6c}ADmts`_A}7xgU6U#OxntwSgCfv@2-yRtFkpLUM5Z-NpsVou1r@?5L>B!pwql- z4f(Zz$LepaD6ZN}F#BxlZ1n^Sm^|h<($AHs>FUA5lI?D?F?q48*^|}~1n|{gU$u)j zE+Rflg$#P(?56QRye5}8-kbYDWXbyv*`$)9BpyhzsOs zYzl6ezpkF*)K(kRRNs+a!TM5XQ(|limd-%%3g4%yI~ynxJVj803jH1%Riz$dw5!w` z;7@&q|1-%dG*I^k8nHPTs;&P==i>*!y*kyBuP}bQtXa#w8Cr2S%Nl!-F19VIH#5|A zw9E<$s@D1VBeV(#)ho`x^PvWrQ^f7IP`o5Y#xj=INAYrkWf)>-v6F5Sl2>~C?O3@8 z?EJj~%KHpKaHb_lcTl*5GWE7l*p17fLaDR9Pvt`Is>Ve-lq=#9*OfZOUjDFh)x(y6 z6n=Zn(px(hEqeS>X&@vyYo^fV3f~9Gg`-tNJGGw=X{jX9ExoX>rNgY3H%U08IeE}d zPg^U^hCSf1b81jvH$k<<6NEgM_A;`x=5hP+ku`H7)v-1w?JR$z7f`6Y9GHD7Srw$W zt1HxS7<>>R1&|jKT!qMu(EJHaAJhc9IizJoRDkn|4NJ)qEXX@Fw}b|vzB6oJ z-Pl&DdTHTbN}l(2KhI8x8zb8~jbX?3ZaTn{h~0tkaxYkTk(6PcEX0ZR*r_tquvjNE zner^q-$FkoOw##|6#5Pq3Uz-^5Uv_1QU%}Ab#FYrM~sL)E?pB7)E6zzcOQG>qFp0i36GR8N9i87k;>gt z^gFcHgz)!g_J%Wm*~vTqq+IyL`&ka=)NUPiHuixrlg9E z?b`+%V-h4A7S)303$3zjoD|Flsdbm2;&C*z8{LKMNgbtLUv^VUN!XYDxTI${ds=@+ z;c`lfrAEDfUgf2@CNC_`d@(tP0>3ZM-s)m+GG91t*;w%q4VLtmNegk%%(M5tr}b+D zG|#pzpdX|B`>%=2x!yg~m5zy}G3updtnw~s*SX!UJy2U?qy5U@m}iF>!@6BEK){?~ z-w_laYmO9S+`4rp1%jU(p;BrDq?EcuY~hd8Y)z9fDaV|kB+y)kx2;{?SCO`{U3S+V z^JTiyjmwH_ay_lUAuexOuIFLE7jBANG&}ldj0!!)`)ae#vEMGO$FS)zr}by66lwht zv`hlsL!|XE%wy*Q=rf%IJ78fYkpt{wV-{=+!LAaGOHAQ~w5Pn>OfN5w4Y3;{2^m-p zVL6cCfmAASafx{L5w(>Uk+q3d>zQ$j`A@8i>B-4PO^V6tn<)|QGA7GZ%KdjpAAc8+ z&+E(cw7yRd%YkyT;i-avV}|7sNow;-j~M%`X*2YAGT6l0U!Zj-Iro3pJyefMw;q+p?1Qu4v|7E4N}PmS=qyyLvw(ToZG137Om1S3 z;BL`>RJo4EE@p5zwwNeEWAozXA@v9N3IZ|+6ZqKg&pUb%+10n?wvU~g7)lDua+*I@ zI%FMYDH+3LEbjpzsYZ{7HJDlK%MqD_N*%N_vaCl$$;wU^zNV%^RdK9yQINJ*@xpeF zV{;Ey($Hym_if4Xa-rR&}^^1J^uIxcAX8`S6Ro+Yvo85{k}x*4-wqchln%_$h3KvOx-3|>ZZ}W8brmngH97Xy9jdo(PT$teldYSjw{B+N z*3C(5T@ZLz^Nf}_FvzM0ruN^q?$4jTZC_y22CaIod*hx+`t>O0l&h%_2$@}RSRr#E z8<(2s+-O-`gu>~S?lRTo>MdkiWQE5}C=E5atY#X|($1wb_6LU$gPp6s3&&5Ew$}8U z=Vb;b$b!ydL1PaEKM^mHAi>H%fGPas3`vdb`LQl8JMYKvQX%%=`fXVa-H~O7l2cy{ z&12Bi?|4q8K3`8gYjEJap9_i@>cZCa0LvuIyS5=%rEXhk^Qt#8q4aeyuR3>$NOdfb zMLL*Qoki3DUiBtZv!!ibwUj5k>aW>>Hm~{#C-6Z6H$BOR=2fq}(}C|Ds^{gul_n>6 z)knBts0OKbGBKl@Hj~fj$E%)9c=e{I2z^|BlDul24qkPL`1myWf>*s#3i;pURkzvg zOAuwPH=X8v2CrH=>F}!Ec9Z+_s-@Qsullcsy+r%*s%6yFn@%|EQkJG(7%;PiD#bFe zp_o$6T&y=kkxlI0wk=$*aIl|g=ZW@M7mq+%*j%H&QcZ)k-qSCU2LUj+j{w2FMuuii z^#b>Gta%mtCFIdlGaXV&09A`q(7>Nz#!wbnhVw!&1Ryhn?_C>vTf4k28n0cCtD* zWhPUV4o)RbRG4Y)2|0oePWhV09;HCrOC6ZzrFFZshT0>J;?r}HLDj_f>H;J$QvS*# z@s8%x^%AH)rOHUzBcbS3XLU7@{xiEwt#ILV?_q0DyL|n2wJJkKY#d1-pIg z2z4P{u~>qxG_s0)>sE}2`_|pKb~s7Q*d*UNN5ctond?Tc_?*@~TBoh5*mLy|uCyFd zhK=+-_qsEsdTa^~hKJnO&R!>NyO744CabuQ{_lU<3br&7eX1v7M|=^>5Ty2d7%) z6vip@O&Tl|aJwmOd=1cPl3>wkT24ftPScuXe-9Q)JNs!L<|o?OHyNVSw1#8JHMkkQ zd(PCScfUHQPjA@C>Kgj@>FL3#es;#f)(uY9>J(Pgzp&cDsg^paY@H?h3&!eB?VOW8#swQNM@}S6z!;gB|4w_oFtaGWIDfLW zFcXt&eV=pk3yzkg*LvE{Be`{NX6VyXpr%EU#kfmFY%{zdKQCN<(zq=$=Zh|D!Rl=6 zc;2=;%fbf(lALElF`IIckU^!=l*SuY-3X@;SA?f5Wxj@s&oNln(v3R35tX_T*XlOW zSfNg^&N`*xwA&TiMKcOoibXlVygW3s=dN)LF5`kad8!{$XQ)f0PO?Cs3j!&(U@VA; zP?wurQ`PPZ=?nCj;<`*@3?UO2RatLYyVR>rIGM7;{>;y4S^wd|PslsbJIVGO@LIgM zJk!&Xa=!Yckd*8{&w*W10<4;=*cqWc=y3H%Aa6U5|d{ZD;kVJx9AO>UCLhQ*OAa7aOrYH?om}Yv)#h>SS3n{ZuN@ z$vZ+u(`ejkGB(e#vD1$!`TinoSSQf1yI_4=M-Yg4djN8Jc0_|B{n0RuoRaY8f2=0t?@GGwus(5?0ZkHti*vP+-D(wNQ&5%gODQ~nDMwgG;$>3bvXOg z$`j1oMa5?BfMKpo^!~R{41NQ}K#%eFWQ;$P0uWzJ|4+ivc1AcW3cX^iev}OG3C*K2}~?62Ncg$yUZs^FhMq zNn~_}sVf=LYOuXO2q`GS{Td!ZU7^l&l;fx`b^%iLCpAzm7*(!_lR#P7DcSQ>BSNm4 zQ*E;tRAaZkrVs#$ijEV!<03JH(Q5<(Gpp3|^iM?RAxVD@DnuoW$Kn;KI4OqS^tklN zn{kL=(_{6js~AYDsdtkO-f1=zo0*S`5!Gyh8U^jo6#0cfwjfIts^sH)U?1Tj(z z)rYGREDsSx5$im~<`HE0Q)M}t=V5;K*^pi?n{0*{^d&$w;q<%11<|iC z6v8FtQ_V)lvG^MEaLWlgc>Rh1cO80`RHlwlGqX?kDq;(Di{IxW@&3Lk_1OE7*{P5j z)=ehQOv&d7UBJT+@88b5Es@vLD$F1-#7OS?@CfY7gjb}8uhOH)2zpw-NRc8v)2ntc zK_%5(uu)-QXw6PkT0E^ck%D+h@(K&sGg*!Y=lE$(^Whdjs`rXqe!fjGCg0MDApt3S-sxXpt z@37c>hdr$=q(IPG71Lh!I)Y};;Ly4Y*_~LK1u0wSBo6V$>=h$TM4~2845?vParp-t>?UH*DUB2BfI2x zY`gr9-!8w?w#o0zE&SH58{4BFBlqdY_|5u}@sxgC{G@(Nd4k7=hcou`uzapfd-OAX z(_WqtT+Vl;}W@P4+nX7MmxX5(p~M{8C|@wIBa|zQ3kR+E{un8 z+W}r}-RDhN-Gn(M&#TM975m- z0yF)A!ern-0a+yw12$8Wfd@1k>zD9se_&cNyvs?P;}1+v2L2a;m4R#cCcUoxF(+A` zKX7?6*_ysG^ZkKI$?$q7@kD=Max(B%CvdVqFeMo{*9k1}2d+p4Ue#CZRDa;gWcWBI zajrj5kPJ+B0*m~CImy6(z;KqH&hQ6($-wsr40Y)dDDem8Cc}3)iRbtO^OAu-cLGcO zfzo8)dM9v!KQKQT80st5?+@IV48PY&yx1SODH&Ml1TOIh79;~_If1wN17*p;$$iD% z;SVfKhG#p8@A3z3P6ozbvHM%+4-_Q>|LO!T_XmoTfo~D$3_`s>fT09uA-&)vHv9o^ zGVnZtQM!<_Z+WP$Ha7KpS?c$*Xcq=eU{W$DYs&Ju8ox4CTDMTf5fj{Ca-6~r@GgYR3W~p@j%vL8?Nqmkv zBG2jSZ~8M&{aHWr)$jCkqIyd|C#%==vp~J9pHtNf`kAYq(a$3FbN!s5e#|q}RT5uW zqQ0kt=BRJzXQ^7Np9|Di^wX~%($B@}e*Ijc0{VHI`n-PLp+2Xdcd1+SvrgTppUc$^ z`dP28)lWlRt)C6*a{X*n7xI)QJR4+aRJMdZD=SD1)335<)Tw3(m35*%)~~WIl+v%V z6x8qZtIWQ7Q@_fDt8V?eQC_#}SD91wOZ_U-sD8q0sB7|4ZN^z7sY9#sT+eGQjG2Xh ztJ_8zUxoVmL!8I9$W6NSa%>iYA{W7B;EK+wR9Bx8sg@cF!ua3^;a_YaPb}5?xTSj^ zZzyTN9dh&@wAgz18X*nW+?rSd#x#V}Gqm;!45YDA4k9t$jC=qKVJW5Qkdqez7`T%j((*m^wGOGjWAOBe0Ng{!a0Zc$Ap=qmTsWSEk@Z}1apNIsA=kaSv zrW2hsbKyKmx=PXsFtAY4gLp*GrEuT`6LXCJab0C#6xOSiz%NBR5w!6g(Knwb5qJ@S z!z7T4FH2vHcH$9)hq`8r@EtMGlNNc+YCPCr1Q`p(NR_O02agvto)tV^ylP}HT7bR0 zAnu%^v1@|Iy_n5C9BEEj>sd3(5~o<^N3lQR;(##`fEMHPGRz{RI8sJe2CWovzg`r` ziS(Uhic@(B$)vWmThp}YGD5!HA-f44mNTu2+A;ie9oKOm5&my;1sT|S|+*IL_+5}sUg-AE}~SV0cAC& zt4~%sNlu!h%hh=#k)<<6Cw((q*q`|DfMy(#+D*KDrx% zYGUBCcxg7rBQ8J>hzB-tZ`uL2 zLk0^%H&~s$tmne-3#7gjWCe3T?Nck|Thz@DsCyHy2h|<=RT~jU5nV0fGt`w|Oat(9 z)_NaBp~UTJt>Z;_?sw<_FxD#lvLAXPFJcWKM}*sZ)}*^jW{TiW<40oh9B`q}=y^UV zLrp5f^VM^C^KA7gsCh^oHBTw3`MWVO;`_&1w^$GLJli1F&0}EFJv-Aqd05Du=RMy1 z&ytd&C2K z{gE{yd|Zo5z_MMDhl9MYxqa1|&#hWRKzn4Z1cb}>tQpsQqx9DoDf>sb?BLqb*Z$Th z_B=bEF2Cu0Wz_|dM@yw+h#glPsO?U51!vuGL%8AqW;Hy|p5=X|S<$Civx=(YWHvjr z&^X?5Xdhzr)Bl6hY84(+D8OH(F6EQ%5VA%>NHA7HR=3jVCKIS$hO1qT1mPF4Q=qo-5jPL0&H8yzJ*l7j)kdD!P3X#+9eXwMV!M=N@t-%nSE!Ot)zOD zDBeu2%eoViw))-*yHMl2x=bAqb^^?c18x!62#ko0u;28#7JmTZuuy+#>+pzq1Yq)S z!kH9FrKKv&^|2deRqWg6r`LMd^xlD@)`*glP;d7AG0t((V+GcXU9`4i@|`!#$ao+l z*zs;`1YfiGNDFox_q^DFrz@1m_pTk@y4!q5bZZOS*ABlSczjl4M)3IOn%%+Zox$Vd z9!SG(z74`Q_UobOBC6k1F!+b9cUpFCU^S_=vKD#+4Px5Qnwu>Yxr;Mki)Ex{$%ahy z#~gCOTz5(AYR5f_x^0y+-earOWfXxB1x8>Nx^c^r8*a{l;nks1kL?Zhq{wQO?yu#v z-;K2B33E^eXFZ zb%MZ32*Kl*Gt}PR+l@CEOJ~T>mO4)x2U{sqy}Wq9K(xq}Jzi$--wlUo)n$fiZPQ_& zXFnzeZ*x(@MZ3JH(EWg!|F=!_wB|6WPTlp`BB&P0mumA$8Y%~O@zN}&*cd)i zjwEz=V)KfZW*S}^`t5+zrYiy|v0T!bQzhz3r>uO+qM&MX0yO{MsDIcEtu{PTFl7}l z%`tIcJa_?V=NY9heZ~sX>-y*|1E%v=kQ)0Y^7MId_NlY3Z*`j2*61{ESn=E}6O=AC z0q4vvvmn&Wio=$Lo{ZZQsmA%G6PG7C;cS2$8Sm3KK=?(w`3%y1_h_<2NTu0&QggG^ zQi7cCP;HK@M5+aioSSWAAW#?^ilWG9x`fKb{CCITK|2#VxvbT>?%JQaQjFpJ!l-<5 zDCB8YXD5|p_LW#dL0NqT?K+_g8uxy`f>?FwPF|7jSO2+)@k6iFI$Zd^eN=d3_Bv&j zqQ7JTMSLaR&Ipc}t_Tk`vXNlUstTN4SHh{LO2FS)tzzdRywq*nMC3eu>5brRsQQGh z7RyjeSYl%Ez7f6Sx}v4zbKCh?__yQ3@q{s==zNmDD#;h>VA5ewsAd@c*qZF_aHUTb-oyTf(t-Sc)| z^qO@_9Xw9QVdQ#RcHL3 zZWm^+U;e4{eW7%z#;12~lPI=(Vjhm8vi4`j7;2WbNivpW7P zrD1y?Z_y5QL?6QaE8E)zcH|_JZ-p+hj)Am91kCdrJ8q2rFXE6%K zQsC_rbBPAUVX6!J{w5vdLtPC2Xx+Yj`-8l&TZL&%^c^5av0ICq_F3a4 zgwvXT$yBy^n;BS-Q4ig%n469-s^molb?J~@Tv%ttG)h)i7>x$WsJYecvd*Tm^AbB{*PaPp(3 zbL$96!X+Q2e8e{2^>Bt18|p#^<sdV5q;zjizIF6CaQNh26m*1+a-&_wWZ}8WyR-w?#roTPj$d z@4jUbT=;CYg=0xtg4Hf9Ate2%Z7DAMoc3sE&6<(c(Ng61u~ZKi?yhZV$QhAho6&OQ ziReMPRXQVWmuKs&?D9&_*87GOzS(xP3b*$;D<=rK)GE#N9>0GWL!b7p_r(2~p&coq z_KDuN@BfP?ZuN;K=@Mym;8a~N%6+!w*2ftZmp^pKO<(k!UIpdtWdI7tHY;{p(V&w= z9HV0z)C@gfBH~lQjzvOhOamyV#Bj6HQ#UbQt0cceov#7Agw?Np7GAZ1*G`zdP%2Ui z-<-)b18?uJcJy%GG(bZKFwM`$6o7mo_4GGRBg%2?YzXc%93!*-#UxE zu>CG;Byp~m2h*hu$PX>bv~I~PUgS12^z!d4U-bMPAV9GZ&I^TPhHr9*XQzkn&8%4D zUs7FDeJiUvz83>D+os-hUc*cBL?j>d0E8 z)?bg%-oi{*kjn|%%{%i@&sf66Vmnd=yJ|W+)Sl&6^`v8FGh0gSw1N*~7d4N2T#{?_ zSoapkyc1^Xdd_LNBQw4#9-q`9UT&q3a?T&DgX&z1buOkjbUa(iYC6kFuA6n);FS8# z%>$zqpE7yso|=K4hwgboHkr2l`7-MRx>_c1EpBg&d~_u9RPmtn#eL}o)@WgD|>|n!iE{!!g zXotr}M|?dvFZsyLUP6nb+PF~SkxU^z5&2d!GJ^|0hN+X{nuE3B+nP^#9&0ZxW$*6R z#-8Etb6_U^>Ms5#XUgAM4D1Oca?)Ve3ywBGh{|-^$!w>piDVjU7k-SHWsX;u-ZoIE z=+aGz5scj?C;`%6xN*vSV5Iu=)`X-_?5h6NRMjp2gtlleeW+ILY)Zo(2n*IcPrahE zTqrXk|I{l#N)!%z=?uM6pJ$|*Kk3P$1|_m0 z|9(~IWWOActfmvuPtm8Jn`!L|evnr9e(-pzd426q-6=*f2vU`G-K1W8T2HRRcla-m zxv7S`fY~K3Zy+fT*;?Bl^n`jo1*^jJ*22s@L=kQ$W2iPADYvCoXOf*L8vliKnS-WM zt!BoB?jiCfOFL_i;jOvE$gWg3QH5Xqof@jE1-}y_&C*U3?{jWO@&3mw0mmxv0bq~! zuGKKy$-<*}zx3)e+7k&;g+6g3>6?p-45sX8NoL3Z22>MIkiHtvo4ASBNv!nEzzIh? zLdKQF6>byZJU{KKma}&PoZh)+$cYdvtN} zshca+rMi+%=Z05jkq9#Zkc|%-n3g!8E};*&Z&toyISnz{RU$oml@%a+(=DSkQfi7_ zDi?Y2C%nS^lXn4{0BMs>;5qIgsUB4O$lECiR!U+iTbujPhTWv>FH70&Y-%{Cr^GY; zP7Z)ez##37W$)2TewbK-v70!HkYkgC#yc=$tJKrrb<&C|wSOXY?vMDg1fW1HY*@=~ zmkj#COh`SDkFX23G=1=>cQBiJNqj-7mzA(l`n`#+U)mJ#)XyYLEeD?A~Q5(Q>pHexav^P z`S-RLr45Z`Y+H|y;iDz_t4v>|TF|eMl759u9aKpEXA}~|R^bAOwEZV>!3MiCj3QU8 zc~PYrLvFaWEMhb?;oD!yqGl08xd{_p%}@wsiaqOLgnjlJ885`1!t=0ZVdI zU-+O!{GWX>19CjZliGh70w+pFZP4Mi)}Ft zkyB^IR2dw(!vz4VRIBo3SmkPY@+;NmIqKZL;qcxq{+K3AnyAA5j4`a1+s2(zfBj9tELkQty24iSWYo z=J802lXLCIGOd_OI2kJo?aHG*S{-{(dkBad=Y@`+LaC&~Udz@S9iL>RrGG20RA7E* zRj20}?CSFJMQYW*ARzBxjmQ?cm|EACx!1U3XN&y&zaV1~20rso# zs+*n)HysK$?Fu)kaMRv!)3$Ka9`#@|q{*f(bBfvl9aKm(_HL|FJJ#!+7;Jh{8)$n% z-1W*bDBvc=aOvxwt!IPnd%1J=X|5{oszsJ~e%q(V$6zcxRHhK| zc{J?XhEY67ZCDTp`}RcdCJm*9RGx7i=s2FWp-(P1^N{mru&i58iYJv_o=AL%o&Q+PuIR_S zV=M07b{q)50`-En?27(g5-d}$=v%z#GR6-m0}a*Zbr~ui{gp02^)En0A0tqD(mNl| z5xsSw;l0a^v7z1vJZ)bgil(|4)aXjyYeUy9H%F%(lQ5{DjBoUIg6UsYw98(@rjEYL#cb-gdwA>R z7OS24W#0a--|zv@dQiVL@b;d5Tf*C3-a^aP3y1lZh`F!Zw?`;l>If@0`ZRI6qjzEN zf?!W;UMi`3%RLXjLn7n$keX#=F@>}Eb5H8_v;mg7LOb%heUC~hEHHXn0*w@p>xZ`q zdj>mAA`1~YL43DQ(Og$_2H_alI8=a3n+*hzColRztwmHRoeLA`*_uY>NWJO$%{{VD zeUBJZ*7({Zz70q?Y}o1RaK$$ZPdwsl7n+t|y$`*fvk8oH7}6)P^jeYq_8q2~K-ST# zDb|uw+uAA3n1Vsww%x`h(s`HL^AchX2MrIbWoK%lpVG9@vOTWoQC<@L#jfqm9KO*% zN@Q=n=i%jgzCOoqsCSuX-D^7hZqL{51wV%{MN^2PUzYJ>$|-8NGl8z4 zr}Z+LVWnB+DCM}LBI;p!*m!rFK9&GquGkC=qBWwdW_K ztvLh)((~^SUT1@PkuKxT0-fyk@j7V<~NC# z03)aE%~jcrET-6Am)x9R;D|#o?M(Jd(ZFoR(Jh z)S6KXV|yZPl5^6|xw__5c0OZg%z+R%)cQ@ZxWFiebb|=a&Xj_Z*yVcv_S*Xw%*$Et zv0*pY;>_I`Qc{8knvW;>4!+S#L7}E?E>D}>+YohuawchJqg#e^iYs}9|*P0WdOMST0p#RVG>Jupe!+-o&SSfp&bx|}?u zb5|QTJKB6BqDz=sjF%m7&Vs}_@CaU!-rmD7$svGe z(`L-fJi>{~fveV1NLo`X>&{iZsw*}oRJJc38_A#`+_z7mZw4sI)!cZF)Gd}z5=~v1 zsC~1`0214*-T)v7E!&J(2iG|FiBxrfi7H!faZv7!iq9RjZhiuOcldYFPRbboG_a$s zh`=ef>hZmxb1g3);Ts<%^IiKs9@CKf(U^u}{=UlJ4*p){FOBd+{2iT_SpwDLu=TD{ z99rdenZh*5Oc@fpnzJ(w#n_J+^|y}3<0xDKG2!v$cq#2Jy4)NcxSptoh^mIL4H)$s zcrgD4jOqiR1e_{tcR(oX1%an~+@#U~6)ygh7g2$vzw z*9(*qNL`wC3LKAPvguLJy0-|5Eb8I-Tk^n2&(;p0tDp^CSrzT~wh!|>+nTje;48#b z(m&_jf$d?82y+94dWU+xx{BNYTK=@`B%rlE?4w8h0IfSoL%{-Q;ejd5m^5jJF=5h9 zW3)bzW)eHB;!xDflao3{J0)QpuhBaQqitEyD*Gibx{w#o)}b20I=eQs3JA-C zD3)ZPyU{D95CN}r+|_oR4PHgZ=s1C`hUqtft>PMb64>fr`b}V~n0^!3>I3~Iu+=-f zg_gB5INKKWgRRzo%nFY_N2Kl`z}1tSFxVv5cl03OYA3+ePJpYO4sg|x*X>&`hZqY? zZrU>eSG~k@uG8Luz!g`S3`}11QC{RoE^z-l;OfBt0JwV62Cl~J{&&EY$ga|g)pl{ZZTX(u>3bmwU2V6atEO&xm4L3E7z|xqMX`Mg@4ttx z#BisEuKvYKA9PhcSD>p8^b7%A-K!@|Y^iDJYL5;Fx(djh4Rlo@&=p4Rfvz?a$I%@O zSL{C>vO1s^UTQ;DDm zxYAa&eH(4ys!Ib`D0}aX?jmCXxRUolz}12O2Dm!F^!(oguJ+r&RmXcw`(WT|RPscR0ofy;b zBmVx*-^7z+8m{86j=%ZDL2s(HDzXp~XhNTAp1XFYcovYY4;WGJX}wV1X0D+6+L`4p zL#!UAfua(*f}qeR;frM0jkmenGQbgfVfjH$IV zO_y;+?M(RI6NL<9Tv&^{nDNk#j2w#lvT+u_rjf~SgE55PC1$;pae-jBwKT@_N+%z%lYYf-q zh93(uhT)nSVKH?&RsAl&GAJ{!PZ_Q$f@+#~-9R2|9;)&{mPIvpi3f!{5`bmnD9u&f z8?IR(ifA>F1^)HX{bkv2$N@KFETIVeEZ@ACRs%uRl>m0&i5-5FD8b%0M2WI$JChY2ApepT0hDp;Rzt-8eU?5)NNyP8radhNun5G zPuqXVwN1Y~Z9nEMdNmP3zHESe$#s|)_RR_VW`x^HxmIqU`f`V6lu|I0mX8cJ(2AWVdO zjrjg(#D#n8zQkCa)0G&j!lR|d=5iSoR0& zim&pt{ueEXKO>a~E)S$c^GGNz0a`P*k-&o7L;pRI@yXT$>(7af;?wfY=}!=y6Ftrj z3N34JMGx~LoiH01)`1-;NOYi*quQSA{vGhNdVvE6*WciYJSJr`CDBKD=}wVVRNLK} zv7I(v?y~eyhSz1Z^BKLL6gX_@-?oNm4S^1^cCp|QvjvYp0s&&}4Mf?Kp;3uKJ~h2I z8+xrS*e2PQM#m9j&umt7Wb!>Pn!JH?M> z*lqG{Y4kar;x3mQzxU|lmqVE2mqVE2mqYkMeSqeMmKD&yiI8a*bo-{tNT{+8>Gy-= zck1MXjNZ#Y$-W$5{AjPp0-KycKi#TuRcOGmandFO~GKl%G0)&8oN^jY^x1Fs;4Phso}0RDGr3=F1z5o z*sZn45@AD~Fsp{$3z7GE*1{@b*c+aaK7~Rn!j({ETlY|`MkH<$L;^Bx zf%Jss=Zp~+H0|7;t?VP8Zu>q^M|~t*c3Kb25%waB{+NpF?GZhg&er&Vtua!zhG(nm zsBSn1M7A+?jW0jqTLNyfWT)@qByN)Lk7y(ExafP1x-@!{)$PlZ!Ho^A4eLldN!VB4 z?ej}S)RfK*-Z|&%CSTw*+0*)4Queh*HmXrz(~K{3M${o2*E?imy;P#vQueZ`uINZ! z9K@#HuY$#b*c_MhLdeGV>IGB5uSRTyV-V^EvH3fcO%NLt0cE&BZm!hGO&9T&z6D#~ z@AfUGjV@34C;Ya&s;T`tDk`Qt2X?FeWbAs~tsC`ZadALTl(kfNwBHFON0L1Sw^T(x z&wTgmc7e)1*T$TNQiL-hnk>D*Axke1va}xX=y>Udy`E_$yVhxREyDC+VMR#mJZ;bO zhToM?hdYe-m07*kqLb0VIT4RWb9Jim$f;+lr$OD(gZWv5WW zG3Q-uQ^FTR3C|H^tv+n}v5AePbNn3uFo<ihYIj#}@H%HX$>Ahho0478U(u%W zTLNj(QM}Y1>vUxqi}VU;JtfOriuu*RVlEg|46z)vb}{MN&$hMBzBf~>Md{Ju#2oF+ zGwP3amO#0Z9i5dpgWY0q>bp~C><>IF&~^QRzUwi$>I_@$yA;ikq%2YoL!Gi$c8r(ZeK&UH zX%)b$XUv+N3XC82Pha?^G-^CNiE)}IF($#2c$Le_WrNT%2akj+vS3W4hn8j0%m!D} zMTtF8;9UF8eG=YaU-zYC5B({@vuLnO(t8I6g)d837c(NyggD9o3gTrAur7w`7>Gc= z#h}+%F04{_yhXC8XnPgnnhnD$aWLjo@^S#2fG?syI z*fh15IC@1v&1P8oi);Lizl+Tc7u!Hk;&5~6kx9OK;imYR(G(N-m>a%zl8kFp9_OKK534OmPX{nqCikNOOzuYmn4HJ1ok1Q5 zL31qAFASC$c0Vi_p-v^vCOcVBrH-kS?vUnv6Dgx$g$s&oR$S@t(_&* zG&RX-;pkf&FI()~y$NDKHb>X;r|E!A4Cob33w|sn0yC*R3Q23~4K*!J5CaxyPD?$U zmIZ1KEr1xXz}0xJQ@t=-5^WxqXh4pp2jr-`is;0$9AUQLRLy3#EcUdm5^p_C1+c65 z9cq3_4{U|rb~lSTgpx*Z+Q!H;8pd9Da=tNfzH#w<N^B$S=eX=pK>`R5m3vwz={agYcqSA5gl!Lc@5vYJ0JPgknD!{`8&bilA+lR+3xIy z@%(M(??=P38({3DBlD~!9;Z@;mUXmwB5LYNnPd?fN7}t4OI+p(cdCoglnG?ktV_&=)&?UMBEO|#xCdeuIB|VH}lHXFR#|*%kWTh zjF#`y@_I|O8eKXpwClso?(lWtrKsAaBj1-gnobtB-&$fzy^5PHmvO0<&(#vLS;ja- zA5D@tb3~s<0$9TOOXtDjgFKVT zTl^U}zgl(*Nh#QHTePMDoVcE_*%dZ7hjBVNvl`6T+>7kg>d6Bbcxv?u-MIm5P?4S5 z0qNNE+kRpPX-jZ{5H?^<187#}w{veKU-Z zin%{*KDDOeLy!mHuGvCU4cBb*tb3WSwL2!~%~?DeFN3X^kFV#+re~6xH^qFc~RtkgQi}sUzz(foP<}+?u_}OL{cZ4oQio z@zPSJq8fIizpu5_;m%wK{uG|Li>)9}9jm-3QLegJXbQn7pevE=BU^=52TkZr5bpo(j6FLq>;Mc6@RZN~lXSwYu3^yUaxE`Pr zo_qq*L8bQqq8`!+n`I`Xf(cYaLu*8s>n;kC27g6>)qdp}mqJ-TiCUo?BiKxh`1WH5 z=vO2XNWwU~+qYQ?jg4G8@8lZaA=q&8NlIiaqCy_AhEg1sTATJ6SAdRte`8!KjdgJG z1IB1XxZc1po82}SIb^5wQk{d0AMmS>FB4?^AYnE#P8FWkB$x4Z9S$GvkWm@_Zr_$mN#zW%jfsj2*tNbb>5F#yb``Ag?e6w$1jCZ`qY&-bR`h@h>7Kgzo zIc@1J78A@a@guu{-QY-X%|g=2Dm$R1x2~SA(Tb81?{5UHIPgYq?0mg1ZGlYLm$9Mq zG0jpJv*@y#BrH<4OQkWtq_Y`}Dv49 z1T&)yMSeM^whoDxt@n$I_+M_Xx17zK!T8IL(*yCzMeoUnsB0rWV5kET1X~9z(sd!3x087M8cePcsZEad> z`x@VeBEPlHYTCDUZ*-2xZ|%7#0cs}Xx2`{Sn*7!tDuwUJm#rNt(s-iH zqQPCQ&4Ql7TU`R~)|~9G&C)3nFpf6MR{LFRv;2(r{@N_xm$=W;W@+wM$o>5asU1{E zAvF_sTBj6P5L zeL56==h-L|u9t)1OfdSXONf2wvtlp2n%LX=V*A74y4;d8$LUh@&m5=A6j)o@V{0p7 z5(70utWV^sr5D&b29A<}T3V+Qj_8ctz`Ybw>b-GI{8ewB+_2vW3Qp?-DZWoM@} zWl&OVv^6&u&M^LPuD~KwwKl|*X?3EFDQH!mthUQE>+~RK04igcio>~$gFH42$JL7n&l4NiSA{JD1n3yWhHPE zAHFwH%aImUdDE=m3xf)>S+2EcMDru8k;cmN*+xNW-9P zs@1)=BtL)E47_X3(xpA@lqLm*`W5uRpn~rHjDk|k+u{q;u^QVj${MmJ#~S5%Hf2_L zR4mi;Vkg4Un_gu|WKWvIYSEC49-_0P*NKbzC+;Tk%0y!0x3yMhw4Jn->hJ%syDJU+ zqkgx0`Zn+Vd%9EN2J{rCGeKi1L}+Ze1Tr`?k(oc|r_K`cv~dujid9^5xOu9y=qzi< z+6Ci}tZ^q>HOlkiobg9!*Y96(I$?{I&GyzDZrp>Ux;vH^nwx&AVWc&RkJ@lbXh>=d z=}SC8_*HwZ01aXcOxtp51S{Ju>#{`F<=0tmtjVT+=>7y%Iw7$pZFIkM89nOCmT`+g zjRwc>c}dnDDxIP@`X(Snb+u_MlRODa)gql)k8Dnwxqzlo?h%b&V$yuQ>1 zg_?b#82J@#Q~X!=h4st7tS>Z~a*-2ejTCpm*mp?}?M~sQ8F>VX5b__#-aGHji{1#2 zmCsJSB}2PX3U?Q0*zp}!M`u5=NGkT@|z;{QA1#5n_s95$fH6S2WXMhQ7{k*5(S z`bZPo!sbRzo%kD&(rl5HMz01L!N(~fL9JLXT{|WmJg{6u(+_;1wMXx#9<>#WRcv$<9Ek(A|qJmoYn?RB;JSNIPZC>$R#*Mi=s7lPZvj zwy|Yoq6d;HuINXqxDC>2f>g0FfF(&yta!8^u>yS#%I-(2cmndoy8g6^M{Qcgm+M)n z{b>~_ob_mhvnMcM(@-mLM^Fh4Yi@WV=P3Oj9cKo;(AkqHT8{rDFa6NlL|k%H|kEsi+2# zXXZ|)R6JxSKAlqWsHRjr+MiOfMkp2UJtn0?w-idn8lhCI>7!J9BqA(LkDiHA@eWaE zq*Ms?K+{S#YD&dMwG0>~v}~hLDz+pj6&KiK3a^kUE*_JBQxjy0Y4lD&*=-^uy=|zc zO{_f(fN8K~-JfppF}QewZgKPF*$rDJW;eXS--OHHM)G$jf9v`C25}%`YaIdUwe#FF z;LnTm+n@+Xf66A9vBGfA5GiO|Fgl1_^swL{v1srOEf&37(%)q)oNObC8*moYB*$vsAP5Yc5%5Xt4?L1dsaf`~xhPOcnsWs@t5T$$u@lPe+k zESbkk<{Zg9MlwS|ZIG4>5PH5zLYX^1=LTQ_G~71`UefC4Yt zrHzE{J@&3Z!pGk8zGBNgk3{ZySmEw#`^27)&eHY`9>l&uetdp2m&UF}`)5Z=yM4DPS!6BC$<9b?Z>i?nc zZQ!FS&i(OyOR^*z&LRs02qZ#KG+?9gC1F9r%Z8vXW{pXR7|>o#W5gQ6IRS48NxF$< zbKGisyw>t!-_u1#A_v3C#;A1WFy^keKuTK6B35>?Rwp_uk&m z=l9R&vpMI?JTvpm%rnnCGxN;zumikGFsS;|-9S%YBsV?=LKYie#DCJRehyC@-#v|o z^5^IApR}uQ_tm6AsVP#yI*X|~XGohDp zegR6$@xkc*||9|DY|H`D>uJE_YP7kz@Sa@KH-JWYKKIycglgw} zT!a{{DuB-m6Qwhcoc29AJD)5}HI zwRKPcPsy$+7ba=?-=vTWRg9|13<^5!Fc)5UkFRDuYNe`?Qzre-k|=jA^2tMDzXuKs zHu(zkg;~xH?lC%=t0SdvI+|lj-}QKLx)#zY!$R>a@)KS2a1dFw1P74=Q2M@`0Yd5f zQX6ESj|d-V(W4b7;5)mtoNKHHl~Fyo#*KIjUVt{U*Ifzu8a__o_5@q>S-v;wP+4D1 z22?3)$IR z1MxOp)w>{g1>jUo>)nVK4bBcI(R2ROw8~}m!Fg&<@I8EruAJ~yMozF3fl%fPw%|#N zlm|y*ewB`Saum$DhNU3$kwsT>{)eb&^h2^^6b-Q{tTazK3f|?~;?%Y$tPZ!;(q^GnR(y!>sZ#F2dd@@_n3@KNOT7;kKza-wu8~#>pe^Y3#S#v#O%Y_(_zp_zFrs}8O;55O3*N+J%Emeb;Z*nj z;U19J4QqSH4+leEZuoc?w8S<3g2wQ$y7wRHlg@Cr0RcLf`+!vj_eO69Dbdo1GzL&H zEql9_=ZPjGl)iJ+IxGdcY8{9(kV>aIK7=^m)xk;>qz(~9xTlEShJd~-4G`#iYsbQ> zMz`NJH(%O>E41ob3ulQ*IQ$%0=4`dheGo%JWpWL_!^(3w+a{JFxVf$f&Ihjp8Y9Ql zEHx`{WLEpp5L#9=gxSqj=YFyq!kS+@cjoy-cJ7QDJ;8S|?uoDM!&6(t@%d6M7?FA# znJwbT6%DqW@t-Z?UIHvr06&4*oGF0+2Xz1xz~?aq@J7U|>T+0cEGJS>Ckw5Mkxj4x zfe}@L^7kUOO0Q5I7*$b^q=b5eYdDUE3UvoGb)O*mQ~N{Akfvf63er8VmaHxh!_>af zBf-4d9bAEuhD)}3r02gx%}JQ% z8foW3y2%=OCUVoQ6c2j=cNv0>kZH4PDntFL>OQ!Zlg2ku7_3nUU{K$KCxOyRYLvyp z`r50qU6nMoRcfl=m0RA28mNAP{Z|tkzjwPy{Em14+w%qTsC;~eFt-DeG5nA38Q2}ARnuM1Q7OSh&d%h=Jf+L|& zc=~Dz7hQZ^)_fsR>u$8B;=(;KKKK&I1yv@3h*b8DhxQVUKc6n zL5cgHMy7xcFr}Cgo{d^bm!sPDNt$X*f2p?{`ON0sbc8tDonAVk|{P+BGMo`ye|=?uG^pv5M8$+OIPo% zgz9y;Zo_i*@^k|&gEifTx%!qtvbJRqQtD<%l6u2jAMP79KzSHyG9kt87xAgMdC|=? z#qOWr6TRmhKvSK)$b=c1DI1pHJ=D6Pxd@|_hqM;j@8dCEz=`EF^&)~Q-)M6u6t_vt zk*|j$MHX4RaqcHY3Lc6Sso6C=@=*6DD34)Hiv6@d!2@?lwM>J%91NK51AA+duwM~_ zHQ=$`yI37+rvdaz##h>D=_vtgTG7B2`n`?!&<@+px$IYbea`&Xcx& z`i)B4ZE6xyhlU2Wu3!OVm$PjPIOBzaMFWNvPW)`NZ86&qy!CAh8*N))Q|uPMpI{^> z3iH-1*S9TH)omV0q1cTmRdrj}9M^R$Zjo-(k#Mk`3y1XEc;s`hgA}*(NyEO$bq_Rk zK*+RQnn#-x^RPKF8G;sT(wk^za$)15X5r==#lp@0MmFN}pt?O%*V`Vyl22I4b1PSJ zjqjrieRgjvDQx3m$@R9_olxp7+`MJ4;-ZzEsU{BE+EY;=%^0C|D$~QJ^|5*i*|(ZD zKc2uhQ`-2CYaN^3!cWF8?>fh(A^c*mcWinbzn|Q|_CGYUkmU#IFpn%bl3B>9(sM@I zh=GX6%tG!^pra9VqMtzziBc_#oP|jFLulJfA+y3;?OX$Ks}W`)5#zmg&`?lef`!O6 z32mB%NG!sy`xTl>vkiF#dk@)$G`>V*sf27pK8|JZux&^$6`W7s(4 z1HU9%u#s`dRbFNsGPsy#Ikyc0}{3L*B3`oOXp^Z`28I0KAplM!;zJbSYjLQYt2|^<}6kHwn1} z>=4`KMYti5gsWs0*l|B9c4tlFElY0|24H9Y^XBnQ@k?{z&(M6UaL##Aus0=1tx(ac zm{kHdtzXEms%|H+4M=JjR%XdQ(sntNO-kE_ZI@4%;3^~>jRu#F#yeyM-_kTw-UFKp z&O_|=fVak>i0uN`91l0MOM%EtARyP;ljPJgRvJd3QX8b{n5@qa@rN;5{O(?<94bX{2%KH% z5EjFJP}!m-hN^L8i|#ONG=nQ~+k2Ver-;C1%T}yV+;(VW@Jq`Y`}jp=Fl^fd|1b9?^VCyl=ld}LC|68;wfDWrQ5@8ho6-8^gvzBAhC1zfcNgouXRiFPTkRlD?Rz>)&nIUYDU@)+{%6Ex{HWzK#zfwL?9`gm=At!A$(H&1 zFpjov1bXXK^t76~255s-?Uxo*3g$`BF-SIdM6$VKCTpU$P&;qIf1~rz_|$n>)c&3F z)kq24v3H$;{L~(&?`8SRq?rgo&#hRYC1G6#Q@CSwSy+EP1dc`ZNx_CpWG}5=64py= z$Yl|_>F9r>o6tRkKkFf2qV>>(BCv1fj6y179b|)(6tFZ8Aq96#u>K-&K#0p0Aezxo z>T1J40Lj^$`@mTLc!5UgI$xHmmGmbtdSa{{^1Db4UIx?Z?+P*SBO$*ncKFza=p(GE5JiV2D0HA zzf02v@jg4_ePup=#n9^DDukkJDS@zL{NO^c0AVyql!+)0TINDuI=&7J>ds$ z*Oa(u;A};sWm|r+eK6s&o1C)jqVRHRfwBD#1 z?_HEv!d$up|1_6~_Ja2-OV!o=N4+1Kd0YB{CY+2Ly+NbUCw2yUtmXhc?0D?)eq;^= zO?>RR-y-99748(lp@4M^V+{>bP$GQ$TZyORnxkofQMf9;g}-dU-9}+f{7HUBK(a4b zViKkzaKeJS%~&i3ED#stPYMS`D4exDF}>wLkGI9x*567(IiJ*Qf{!I+^BJZGBs$UG z3fa)WzgQ+Bg7V*o(00oIZ^-`*Z@?rs6^M7HSqn4&?tG8kty=_VQ_>RQ?xMN;u=>7Vo6H^I z2zi4iBa-Covs5M9k*Nqxs{cb36I@;UwzZu|Z+=N^7C%Y#PY7dbg9 zu<)MR8Jb@({o!A#tZCCll6%si^G#!{Ks=3aBJ`GWTgg+!YDneF7t=|hrggycC)xH&`*qhPK76l7l~ z>|VQW4Tg!hbP&?U^^khbEclqe9FosxG_uY>2eY{yk#Fbtr2+XBy^;BL1@EI`~lHwi&o>|lLapDx66HhKK@_xp7KgHy>cAa2d zyRI}iAM$R02VCJn?kg<_G1h%z_fSBYOaes|%w8ozw}^6(Rv|LCM|`Qs9$!{61~YazffqD9agI;@|+deFZ)dr<3ywBb%j{QBHWgD5wn0HrAXN72$fw>dUZ zeYHNhp!P{R^~tq}0t5j+u^jK^_&tGNbFO*zfukIac+J^N5>IN7!ETZqi2HZbjyuFb+_IR@tqRaHY4Ighwx3j)=P(1qhX?#907yoX@ zZxeo@G4xI2jdDkSgkYnOH-^KQ<4w!sBFdET>%s2`e%<(W;@5)T4*bwZ|A6sEg^3DP zIvKyY_${Omy-)wo#@q8nR4yBD`FI^;yuAoq&=&;!#H)Bef}a5&`WT5i-U#~JjW?FB zo>zz}ziGT_dEbsA?!@mN{MO^go=0r zi!4^*D#>zsD8m1qC6h^cS*3%tB^YGBF- zvk5Jd1uXciSRmg3w8FPBZcx!uw=t$;xyqkdTN?ZeBp&QDupJ0;fB>Nvs$;6WP^75| z!l5*FJ%|=fSkH`u{K);*k|uwFO+8U*jzyRa^DXy+C2hkO{#;~{ibXK3w`e!X`7Z4< z(z@h*tV@1%idF@otb{+#JnV|qp>i!2J4bNW!YErF-w-*EMU`vmuVUAGcH+z zEd!YBV5^k(X_az~2i>f>qku~L1!21l~0aE6{ zWgf>K$uHXccTR_lPi9~50}!{Z5~_YB#;5>!Du4+9rl$q6lb`^-(b< z!llyUe8|FYL2(uUTcYN66yh5IVgL{m6@U!<0U#Ctu~7m3O$CSpK-`%4klk#t(&~K3 z%J2dCmsq3bwo=Uv2KYlF#J}N+*3XlMRgfa2?2+MZ3?{z+8WBAwrY>S%P zYXC&`69JGI6@c_60f2jaCF7$4kct}sH~?^C;&U6r$L@T{PWY7Ak-#1`w=2}#CIDzc zQ~)x-g4CA);F72SpF#8oz(fE{91|bf?hq>-&W9YVeH;LGM9u9PHMdCsm=qOYlL{~y z0F$Ev&`ky4GX(%s#>D3uhEJ07p(KV+5`dGU<~B~vZ7Kkw4?qcw9K}roz_h42bf^H+ z0Wf_`e0~KWu`=2DP%>YI+>!yDJPH_|Eou-s1CcYLMc#$TnTVVjEpizmQxKUlDpDQe z!Yp&Ec~AOR&aXJ{BRKXpcbNBkl@#vLW1xQ}?Tw-bG2^xe_u)&-Kk4+GbXv%vEml=cZCKZzE(1CgI1^3!OM&m!_OM1D3ZQs+f5L8XZK zlG7vcXbwU_0_>y_C~%FmHHplE00>3}n6Cny0>G)L05%ms27o*!I-g0-1dg z6@XI#sC~~y1t8<0sL(k8oEsCJF4_~zKkxLMr-9}{kIU0^s79 z===siV*a4hGsr)v(()i+xiDI8JSbd`a=eQgYoYfWBjWC z-!T4F0Db&NN9PWPPQTOB&)5xkK_&5m(fC}g<~9I)qB8)y3NSVUI5QBz0HWiw2S8%} zMW^SY-aNz$Mx*m9H8bqcdWZpx2B=p7bT%*=;4T$FX9m&Hp-Wt}MNDjg%w`$Dej?aH z@N-7(A2~fA=?H%m6`wDl5{t(D7zjsa7Tqeq*v#S&DuB)`q9aUh)WrNxot{s1bVz6z zUHk8Rk0&Mcy%v!0>zxzqExj!tyJVY!-_E;x)vXSND3HnT9P06MdXj?Q~fsTT9kIz4A~ zbfOCme+C>{M;9DMqw}N+FgCN;paSU3B04&&7&?7UPaoq2U>udv1&28-H_zD2!lD9z zSyV=679Yb(4n_i)MI}iK(ec>{ATj?dr{^oZd7=vrPqEA@b-`hD^9U-y*v#T~6+mYe z(b4%1fXc-Dp)#juh-)CHho}MAMcoZ zIwHGaNC}Z2A=Bs_<7(QURw%}kd(Mgyd( z0Aq6y1-hN6kj_D(qjL;EVt&x+3F_!XUwZsW%}kd(Mx*m%6<}-*QmF#y93(nAH#2np z?)3a!M<@EyW44-^E_sYb$D{&`%|SkdLM~cI=OEG1c^yDv{ufTq7mRqoO)8_WJ^n?_ zO&2{z<5Q&qjLkwkDuB*HqT@4<;q#@_^QGQA(U%?;H8WlG7>&-yu(gBA=u3~$0Ie#3 zE^b6e=Vt&C^Dj6(7j$%@FFgb`v$2;Rx2phSbC66GK<6OQ(HXA-XO-W6F)rPtw&`P&#{?7J6mLR^!7!}}66#zSxMW(0#zf}RS zQ@P4a(hFU(h?HJvSA7H`RJU+MgmP|M2#HaVHzN`VtTM?z|F7~%Rr6V83|7*H1h(Aa zw2B>^2iGBhc9L;}TKV#B$EMHjb!<9!A5I~^j}tU}ug3R1_-=f_u_<^LPBiXuY0;;QMQoF%I8X;2ZnTbXGySvv#I^Kwg`(ORZ4JEIt%@>`*+7?WOMk_O(G1 zz?kaaML^CU0XaV$@-P~`XeT9tN$lzwl3@g}K?M#{cWK(4%}^G`QHGdjckUH#q2r6~ z@TL=?&B>Jc;M+4I(Cf0ALQ0-chuo_w+wBY~+bvNlaV@GBCo?!9fnKDw+=xp@&>>7} zphJ*UXPYoxT6b_rGY=SkE(29%&f78+elP+(5_U3DKkf%JT=Oyj34+stlq_ffm$ad8>A+^%k9K$*Pvwh|{cW^)&0g?#R=u`=*3-*yZdrOYg2jIM(_; z_PxV&Yw45=WnxIP0R?l@gQNuGwgrN5W!#w-*{W$yJyFKhBBXYOo&KfLzYO}9L;v#W z-(B>t(!Z+?&A5_0QV)usXxZYv`XK85j5v__Rr*)Zo}mY$D%j~kJxB6TIWZ7;&be})>8^p<1^?%^)K*qfk42*jzxR-hCV0rP#vqA}yqFbYPKr&?gL#&JU%uqpotSpT@DFjC(K^zg4K^gGH$2gKMdl zRPkF8R9lRo+I0weuq+4vzMqeO)pz0FmP$l?4`HVwH6smz@+cRP(@XXwkzQ_9^M~}$n5)ULC7H$%urn=AjVXex(;fj0lN=Q z&9#;|i8!~_i~yuAJSn2#T_^Kz^GLUZN|2}N!00)gq@Q~Us-_>BS*9XtLRCCZ9Us#8 z0AUpu6`+|Dx_FqZMNinaFZs_qwx!a!>1FXJo8$P)aZ)-PM~qNQTJTv_?1GOsnoOTA z=)hYW-r5)RKp_k|t_NToq=z5(8jw+{O#Mg2z#7sTB0fRqsqMJJvIdH3;b*&R9BedH zOkNGg4vChT$(wvu=(I(oxqL*L%OlcQqoz3r!^z?0oSPV4jvg&q#q4V1JZOLAjdmkh@1SD;GF-b( z;2tI0+|XN{!ae%$>@CU3J^CDbOUBzz*qhzRJx2D|{g$6Sp8`9Hd4r-MJpgQXJ%P{~ zm)JfBJhblNm^^RiU=Ap>z2cr{*7RS*&hbS5BkOUI{u%KD`s5nP<|s<{UNmuy*QuG$ z;2uw>P#2himXptIjm)g1{{k}O^vw3NPb+fSVuq@L{}IaInSRB;N~ySK4Q^xxp6SQU ztK@Wg6ZhTM^#B$1k=fiD7%-V#RvayL-rtpEc02CxT4;7B;lKa&sde>*o2Av$P*2xD zzLbyscib_KWs}@~JxZ~x6EBDfF9{#mb6=90EW&lRW{jTnO>1NZ@9As5i3YC1bW%Tb3!Sw;J`3+*G%yjLDh-TdZ$twM>l~tiFWDQ>fQ+|)01c3; zrcMK7Z_Qg{2Mzp)LjPejP+=&iKG#Tr(ShFo{^fCJo)M3Tn5ZygKjW2hy~hl<e^BZUsYqZmTX z0~3!)h9r%y2C%6eL0317AEqk~%bAGCX?i5+>avlMU&Amg-NbMWq6|8CLYs> z3%1cgTyGO`xw?T0nR#=)snJ(5qp!&@-<2=PQ&jrGOn#nWD|U#7WV^JZBaF-vx`zoZ z3EJKeZT)U3^SHG5Jc-hhxZ`c`7n&l4!N8{`g}*Ub`au`?|Ft)Q6G@eLHMc>_*IP3f zM`m#c{C8SSRR{gcjQLW|US!eR*ax$+1DahC+zCa!+G7_e*FFlprQGy(|MDawZ2SBP z8G$209V#?3zr-;q+M!5Fph9}Jbo`^q5eXk=31M$xIN|Gh!h@ZZP{*#Su|3vMS99Kg z8k5#kFWpB%UNGNlkS;;qCI!jD)p^yAA=e)lcficxpHkL7@+iBDyKtlZ#2be|7J!Fxmg&M9j^22LTYKR zvLQpdo|3Ut^YG?%^;)RyP9wSdJf#v2E8Ac+${-~Y;5M>*1he4=_VGME%pLyCNhaw` zJH@_;0RQGVqtwGbx9Xn<@ab=edkx>P5jG(Gz7y3r;@zDDPmT>_yQF*vqKXRqf2F5X zbpV)vME$wR5ZKTIR|vi6T=bA{p%78cxfX_>mrEH`BSSSr4c0@-m zQB&5{NbIiuNg7-0){1SI%fVz`#IaaOn>Wi)B%b9b7dKDFMTzlZcGDEan5$S3E}Yix z@L|e7n|UxB9=-|(VM#38DBe&#wIZIxue#QZrpdX=xW*Q7!j>5CSH_K>iE+LgRyEsk z?RoMlTsU^NSDlrwa$db*?kazg5i7VUYDzH$X+d30j+v{xLy8atVH@MFFv=$11WnrT z6u_*Xcc28Sg-6A++~aRxw&fZcX*wTR$vwUo6^GS0{P#*07z(2`wlt1wc%Ho^@s(aF znO~X5r+KAVuJNZBV7NYy3t(h{3?JTsDcs}h@e+KOX7Oq}Gu{8#9TYW`z&-Av1n}#4 z`=82#E@UZIC#eu*$i+Jp%RT;`5JYltHbI!%4RbI%DrUtRoJIk9c`=lP${R#c&s5kT zYl^Kvq;UOYxEFd2}~ zRNR9~VkfM^;%%9Df6G1QR=L_c@BsICHWl13gL0GZP(1`NAIOKOzFY&`78&yRJM&Cpg+@%QaS*yb>>BJC$#`gVaqg zO4mSSE(ww)Dl{XznFoE|f+BuNg^}(RR}n(s#Vz~>bRo=`tQXAyY&WE8J(^!oRAC}W zvctn5)#Zh}tXSTukM~dU`&Es?P_{;KyfD{8Wk&=fFLb`EPJ2zF_ z3#d3`$FgvQAo}_p59i>PlSgqaVIf2dAzuj7$x%A`8=N9ov+|O<}+CQ7^LqSn@LRM zmrUIx#EOZPc;eL0QC8o&9vabwJ@~MfEydeMc(dX8DW28>yhwP#9bQ90aT$aLzpE#| zK-u;(a`d^+Bl=XCuk>@}0NIr6I>4$M<6GFS|T+KEyx3>%BPv0zW`FueIDkeiS% zz0^LWINM72aUF*D-eb^|c7VS_5qiZVa0Q7HV4s2&p%k9agAvM0MIlLaJG?gaSMWWFUmhFY=f?35PATS1NX(woj|Zdv8%la*Nw5$ZymB`);jLHao?s3Fp))U)a}6nY^-3}D) z0q2`TfsJ)Eu3EwRIkFR2MOl`x(~4If4qgNt2;aNO3Xj>z7-2iK5w?Ry80KJ@9i)9m1i$D)?YC@qDlbu;8Ze zK)PX@*kIpQz=5Oq-95fi>{s`|!+V;RWfI9u$c}uN zYX?Q?l4V2^OVlKE1O-+G2jfjiP(48NV3mv_$H54WSVv12=SA8)s~O}T`2{r|_BZ*5 z7tZ0A08!PRannMrsb^+(Ey;EdR!_z}kOj%6dAwL?ZHmXf6zmv?z0I-MsBJRhGZ)|T zcVJuDd5FI+H?yVg#@T`?CpTXa&Xc(y;y%r>ez#Tn8FXFLR=YJ9mtr^8<6rf3G)hxa zdd(neFLvyrdK6QQ3pO^v0c zGNscTU1|4pz6K?zN#~V6PZp2r&`+7ieWjhgQtX1Agd;s)=@DOPPeq*cYq+%{PhV1^ zOg5-`{MhN1rk(=J1$$3at^J&ZaTj3jcfs4?Q^AO+!+I1PFa9Ai>UA|rI<=BAe$zMO z#pUn>ykGGxx(oZ9zD2j=e>o3cCjGP=W(mb!xFW@I&*rR|{H9-S1uPJ_6nhf?v=b%5 z+$z_w5`?A4z`)B>kSI!uqzyQ>%E^~XaE4P-@`9RB6|;(pq#{I?XBMT}P zW0WWv#pQ#@7sK~WanW3qs~n~+h3wL9A)ZE&p=tGE7`I|?Nnz8ITlKUZ7B8%M?r6+32@SPQnI1runw&`A@xb>+Y#w3d(*uMeHW0~rEjap{1xV+ ziX5?~N4Y`D*`^OBjZ`|mVx)rm*>yM07pxtwPAUYJE3Ur*eSBYw9pW0=1ZH~EVP`#K z^Q48@wG(pXGccDe>;^e5{a3VlTiuNdge)X7QX(|2(REUe0c2b*5@ytVN%2XD|L}Um zkBrPN?c~kJN)`Ls>X zCyMQX9+UXWbD)1YLHj7DA>p$5A7z{E{&fo5{qM()`?}nUILJ{r80%L=NH;b1^ltGO zj1WAd@41SH?>k6K19Q8%4QBV|Jf|qMLd6E<{Vj3nt!6Oa!lc?*KOcKRHko^|8BOyn z@b+RCE&|yZqmTvV*u*+In2^D~@wy(b&fYD{y`RU)i^D4(k$WST~y8u!(3j3J%|OtEoj2@1*~XRmk@fANO5%4-2Opq#HjOv7x(i zfKeY7)c3VecE%Wjd-#%i_B7miS&WiM>E)?A=p&m2Z?;{*o=ObMnsFyxMEAhU{9tAu zJn{}o&z)3DOH?iOyw}glg7F-tcfqb46+3Xmwaht*SesyTP9jFfH4tOTzK)m$*RTWc zW!cv~K_A;=e$F0=PvZd_Rx!_M&!5s$n1qlg@m54pPf^fq1+e$8y%!bTR)lxrECo_2 z7(PC3!UwlKaXB8|-DxOhA*Dh@p7zY8r!WN}Ie23kFQp)5qoY8EC6XBSRaAs;%AB}a zkz`=ANt%2Wt9QX|1u!RAQejyweFjN`g;m5*23RDPRK%~Ax)JQ%ohK$z5B`$c)Y&N( zC)Z4N9@sp~*d66X=7wmwOJb!sJ>mQ2<*F6bSMP$G0WgstHSrIFB{FoTI zFsKD3NS|WquEbEh&fdt#uk<_;wgG36Ba&gT$Us|8eq$lAE7Wo?%xv4}j<>q3W zQuMt}<&JBPZ64P&J{P-HvCV3VapoWr#`5)`l)o=;bGg zPqBlec@bBp6vHX`h z7mjO3$ZOA=(> zW^2=UOf)!5t7FY(Xf`y(X0~LxlHftl?6MI%x5CvndF+fyf8ShcEw6(}RZt{-_6Mq{ z4flOv0Y{zfuEZ${_1AyWjRGl@=ufj>XA&2GE2x#w6({FKa?HX5yz*^q~jvAXb6Sw(1Yz4+Kkp z)E~1u--(C(%;WeN{W;S3f19gca>01?~QxSVN6KG`+)Y8*E@ye$dY zE<28pKxp5m)U#x!{{vCsJo*ym&w`G>C{PY4n7s#D7kjwICr~)fTN-J(N{eV1F0~}I z$S{U5#8w{uwWj=nVkwnX!vUh1O68*juHh-{MTqW`v?2;NHd)(q%&-TJm^r|uF0(74 zlV{msCx>zbmczM;w_0-hk551D{kR9Vr3}5b=*hOrGY=*Ngi8U8Xfdw-Lri~$Tm;2H z(ML{1n-8I_WMq1EuGpTNU5KMv8*GBwWe%>dLmY4%+>s8a$5L;j)!E8D@@HTLO)RYB zu!R8Z9R~QAF1E~u@D<1Hau3dSov;6hN|c^nj@djW1Lg}`$`)lCs!irLQgVA>(9#r( zV;%10PD>zY!P3-GhI1qczUNU$&F|R9W>54yms6gLtcL2VVJe~7T6dugo{BEyf-@L0 z^5oB*E*tNl;A|nTu5AIVu8tcDG+AZyP!8GeGi;eaTfZ4a(#zm^82@Hi5p>zGbtRZ! z?iPLZ$7}W0tpt+f8$MU+UPfbX4$;f(L+P&51trrDY_io_oNZOH?Xl^(ay<2R|B;D@ z;HK!1IE04Zoc0%*H7J1O5)9~{pi&4bz6y)rig-Y+i-5u@AZ6U1YsA5E*pUuyH@d6n7D#`rLkOJ+x`I37p8(zK)UEAcAGg0_?d+-HxJWV&%Z`IY;0O*b zuCaj3YcA_QP9+I3P*mCs?*dT7gMN>+90`i452fG#BRJ~&7-_>CH3!lJn-0KemVeIL z0UY&?VUEh!0;H=DHwB9&J}SD8nD>QoQgcVX^vkSp2096hlNczmPPk^hhwV|=L(KCq zR#J2TryI=FpHha(bJUK^7%@wLM;5~(NU=IgbZfIje5g+6pz^!^-}O3WNtJ(B>(mi^ zia4DcI>^=Ui>|lxu(?6AKsR+J%u)LnW}v2BvMIfj7SNy_PqB0W3r>APm?^KOWNGc?`uq z%C_u==ab#odtd}iEPdc!ew}x~#oyr_C=)OlrLuh;ySAy5z*^H$+U6a&o1f_&Si-9y zCbmVKy2BOQXVb{p|?K5#q|9hjb}>$bjX<`XPk1fPE{1 zv;1iaPjvPQ8Tg!6{scb#%PbX>^QE;fF(w8}GY~}8wev3})_A}oM!vGVX&CmJ(Xc`Y z7IJTJCJ^Pe?-7sQ*JXFZBNq0v+5=LO-?Hrf7Pr5_YWw@^rvn3ax?ZsBsLu@(w5Zjaj*Bo zxWGkoV;9%(Fv9NdvYFjam(^z*>fqJ0YNGgszh?JKFZo@&UsBxdKG$<1^!^`?7Yk28 zAAA2!>fFpdv)`RP}}WLjrPnI=JXgEj6K0Vgl6_3r7$C>--WFzrB;}jEu0j_XA3=W0`C(}1rJh6SV~G0 z3!lsBUutDQQ?jcp!X??)2;-R->yuDd3;r5_e$u^u(O2_&hpUB*mWzciib9JS_C9>V zD_d6kZ=clTE8L2l;2ptN__Bz1;bm_7_1yML#M(jb5AS;KeZt_sc8asV%Hlk`A+Ezk z`&^hspTN%I>%NVHytzz?^SZX0ybru=Qrxe2;Sjra2X1+|UR2y*$1U(~^m=VmjHv}! z<4n-mPhuC0h0YftL_j4|IDg>Y-oU98vy$)?Mo!@K6!XD^cVmbf0G@Qm3kPcV;I;NP zJ+LNE?CysJZkz_bZf@;!^%{9-vhHBJXDq`91_B?Y95_Q6_69ypIdCfBUB&%6%d1y_ zrP&<@+|BU1dyQrFHNA$qjS~PzBA?L!d&G4Z6Pezcvx;z~_ujLpYM&xZ_ukuw0aOF^ zL-az23s5=o_%g-ym26d9aA2vp&Xz4wYBwa8iG^oDhCNW~$Du4xN(j)Qtj~2yPA(&d zkluSw8c5PL)PbYcDYf2vdvGKxk?4Lu<`$5ZTM7j2W%U=7#eXIG;(nM1@)3n&itANw z`vGwu2=37Ab2^b7@-Lk1b8QU~AGclMyrhj$hJ}##9KF;lL~)Y(3X&sT$Kc-?NVhO! z#W10{h|pY&&|Ig22N*=J-~hxCMrHBYuD2n~xVmA>_}-VH>I)%SBdeFg$m%w~aD-77 zD6bIR0+QRI(iC}>22qKXgZ|{n&i6r6$B3q0M@eYt*A2eajG!{Hea}I1-s1wvxL{Oz+1a&;&*f2q<^9vIAN*P6U;kDKs3awcxcJv>? zU^Nfu^n_6{pyj91lT7*P^pwZ)=@kxSySDxp#B?SL3_09DWG%OP?_*|g0np1KQqqGre)U5hk zNk*~odC~o9nJ=EdhTGL;bUU(Lj@rx1yt9bJpET69FEty7XOpF-_NACfmc|%@e}s@x zF{vcm?SM}#HHWs5yznadJV0pGxuD3<+=-A&I>jQxOCHYsUdAzwHvS zaChKLN%3{U&j(u7o}QYZrsvio)yYm_RVe+*cRK5Iay#LT^*TGR6I>x8_wiC_LHjlA)M% zGe*+Q&E}gIURN_-bhpUM>zvubxOQ{K&Cb%64QKIBbUnYpvaC!o44JPyQYV|aoqL;B zo7*un3b=3m?B|20dUMyA4uHn|QB8+)~?5rLEKx$U^W06p@d20E%?k=COOpa7_5}K+k#XW`oiPE zG9K4^>T9ei@C+neM;ka9&mM&mFq{I^f4C?GGr}U1FeCdq!i>-2evfl&H)M?#h-vi~ z>Sn_5{A|{j=n89*l+4x>q@St@WwsAkmtjGj+0xf$=Z!giZC2jw?X>i@S?Fo)Ys0Rg zx6|I&h6xq^efrzrM%6&CCUNgy4A>5sy{BlW0kaW5TQwKWPlh*w1b8-{m}sz}J8g;7 z?{Z9{!GfW=mpG8wz}o<9z^odZ&@P)2S}9u#Hi7|VHy8+;Ry!ZFqYfR?*Gl__e`Q6O z659G&Ed+(U`dUr&hRmVV7X9I6a=n(hpWGL?AQ(y{zGH#b9IQJ1^cd3Zw zsEDN+45X-RUN`#yCVSuoHFa`BU@(~YcpO4-iH160QzjS2hDo?Bdvwh z+Y4GNgV0bs|LvQZTGxB;KnwT#!v9SxqlKHHgU0&kn*UB8fjoh5R~uHI1%*XWE51D~ zt@sTh$z4Rxs(#wDM>nTA$QmjeV;~=O?CrtWQwfMhCQ(pdn@U17CS&XOP}bb`HnDRj zjkDSN_*ocJ7#F+)PmBuOq}?ZsPk2X;PdF?SJO;(=zwtKsxf@TZjZiS8rwP9O+6?wx zGy*|Yhk;5OE*7TFUY?fLe`xlxgd@&lT*J>X8YHqI0)fc4Jk5S|eVUyxht6=CJ@YsX zL6H6$8lGnFUMof|JuNhj@ig_d67GAAG-zY%_o}$>5d*W^`81|t$WK|MA>A%qlJK59 z9zbX!ptzSI{uXaXwGaa2k(?oqCn4VoH<6}<4}kMrUlNYd=AmJIs4N``5@X~V1bo4m zY+C(iDQ2sg`~971Nq|mjXn7bouZ5pUVsiVecp>cfS@1&W?=vwMlz1`X#R$ar5#nO! z8^l0nzr|k(lv2^s$#~}AX>+~>|0VmVgHeHfS_Sq|1^!BmV|JTY%Hfmex6}eS5$_Bd zwPDcUK&UQ?Fqp){vp1)u_8*-6Zo*-#{NluSgTF?&^f6W&`Dp%m(t}tPmrzaSQoS<| zs&%=8(N!b7c7XqA)!Cz0XOCW;J;t4cQe(SLMq(!_L*$bRypqByLxe(=i3JIPZAHT$ z6vXhSC*e;|6L6a6vqOQEo*8hJ*HW6Z23yk@33iNx;tVKDEg$kpR@W2z5`qh?zG{vJqZ@~a)@9&=7I(uJ2z}brSPUaeZ zgL=`4A@!`8NK~}WbbTAjw z!Cb1xT+ANeM*q`6{eL?a=sv{%-^apM8Ve_2>5Ilfl2nc=v9aJF7dV+M4P7*)tyZUj z{g?(it!4cIHm!A9=#2@KCVFEcr8X153mp?x!~?V6;V*^gn~I5G3Z6N5COF>_5)-v~ zpab(j`|Q2mAlwDl2iZhs!v_h~G!H=9r)hvuyy?Ff2%cx(TbRb}vZR%?dGL1pBlVqx zYqrQ?dL6UfHgICsU_yW>&1F0KfDK#qxHIYTG~beDBWWz*`26Q)C2u-@XPWKVK1j^= zXFupsgWgL{dlnyk5TE0Z&)*6l3L)uw+|kdEO7DO1-VuDI^07x{iYQ_CP(8YE9t-ht zP`1$e6zXL-#0n0gIru2}=&NlTEy{d!iy1PC22HGCS zip3jeO72LQRUw$C0R!Yq9c8|m*wD$zcG;j$Fq6P%$@@u5pk>HAFl*x*0HMpr`}j-x z;f1v$cD?}`B)}5{XAm#o=qB?ZTzz@J8s~Fat7E*a#n3Bg%|Jty`6et`l0)W+u&Fp$ z9fRZRs&4uRJN`4}C(C?OSFS7*u?ubl*wHr`f9BaqJPc{x_ zYho*m74b5yjM;e_mc*ngjiVTa>0QwI9$;gkfKy|H)-OBzW`|=|X*UCc45E5HWiI=0 z0%@0iiwL%eBl8p&i_oSsnzi#{Rc&S_Oy58qgUn;IHnms7!&Y`_QkgGBZ8SR?E$Cy7 zwuk9vutwVf5FkkHR%#Xd`N=qh=r)vf#G&yv>W$Zb#3v+WcEQ(^1DD{NW?`H2!Z|!_k3*tnfCwr|!C??|~ zSCrK+Rt(&uAEUo;9itFigD0A7rZSNupORhtj2zh4fO2rv;qcoI019FiVL+Iwq$7{I8v(|IE_u?n5X|LeMVS3h`I5qy4pdGk}!B;3@;BfVKkx!%q$x!$W{u8>CJ~(C4 zJ=i1i4*WCM;00FF`bUQpVBKN35?`U)8_(d&WqJKxI$oRnhBPKwl?`N0+XB_)h4k6 z=kdf4illXF7PNnMl?p7)djuOM2Du2W-6EynBh30t>Ra0Amv5lFFGFrKF;s9S>KtgA ziIIP%k&XO)Vh0#vK02W3&J41b2dXgnaG4FNW9kw0@K^z1u(5PK>Z+f;V=<&@cHaCa zQnc*#?qC$R1!g3A^UHA(i=k$fPQ#o8)=u&zVqGW7LOI-aOWquc))enluP@kVU?$BB z;DImU+i^8?Y!1?gL*31gIN|F-4Yzp30Wq0&2QRK;nd>M2LmQAN>X6dvB(G^z+x zFFsmxS4S(JoS9I~r$jHFqQ7PF1o}xwR${snkQ^zQI6tSi12%-d7jhPlHc$*OT6!Ajco>v$th z7INCSZQzdi(j3e;&{!3$bzyPZB=dzPYRBSkYS_dO*P)Arv>OKjmqhK4Y9nAi#-(Ug zbZh`jW*3B$CP>-=+-W2g@mC3YmfVd~Hg90adtuhboq$j!Z4N4zP+iu9?EWL-1(LCC zkg=;{>PWyQ3ltN`wI|SPtA@QlYj)va)iF#sPM5XH(lk^4Mbp%k%~P6ZUNM`d=u?EEy69G@hAM{TfNtg}BAW1nYi& zV*jy;ZK@__sHq@QLxg5?tRw$6=^C20NU9zXkBQx48`_WLYMjDCw;p13NUA;y8o7$ZyL8VN}L%Lq}E`bHBqhlQg* zK$V!=<|0FzqK^bHCQ=#dMsZ4(nN`|_oFQOQm#HEgpJtP;yhQCtJ;W;g6d@WIL@k1e z)nM4CReCrK00y4`@W})<6PV^e=F;jg01E@ytpm`fRk~pqpd9Fu7OqWtUW3s?tde~g ztisA*HtYG&r&T(GPaRc~$!*da9e_Tq(!ODUayGvb%ncfh9%7aLBMgjYFP4>E2h&0z zgN1?7EW^NpI2Wb^gmNv!DwPa_RirYQziBY+6W6I#fHHM@V3Px3tK(yn{#AvC*PL-> z;S+=oVU@lF1X1${0G16C uT#>z&6uu8v=o(*G`Nd=neHz^k?&7^-(L&K9+GFez1 zr%OM4IC6FT!xqLwvr5m0Y^gy@@&z;$wrt>bvBqKAya)f&YIoyC-wl{r;1OAl!Rv|@ zewUPA0Zo8sIo6t}xm4yInlHq9-AN`n7VqhT3W>ag%p&P~D&{cp;c|fO7~qN;eis*Q zGVom4qSXc#jv4SCjaY}QWgN%0^!G%LW zV|7*{K;>v?NfjY-NA);=?k~y~O*L%9wFvgYZEuI`PAS#f(gnTj4bysxQ#3X|CM$(zxnw2LRN1@Gtn;C7fhv8TfDkiA~OC1MT94Ypf4wBWoP&d)SP+b?&_90oH277`WObbIHuDlz|H5u0XK4Gg>sC`Fr zClFn#MBcX`U9fppUF^|1ZA2a>SiB@wbf!8&KV;KyAWtRWo1l8~Ls%B6qBD{*~lG|iVOO-M*}mGdGjF$h%htdO19YPDpV z0qUXdMg}Z`0+6J;IJ6rO+d&7NG(&I=bmc&Yfd&M&C2XF8;-U(p-|g@ekn}LTIl<$` zoQ-SzE+t{h`Zs(=`L*Fan8rNB&^FZl^t{MDLi;pSr7P4b1q<-ax=-J9RAnUWGKRYE zG+hrMLh`#$OE>*$Nb$Q)gC1ZP_q6f~O?tS848q8l3e`lQMqD@?#O`3HQb)#2(L(2G zK4j|W9?A(N3N~pz^nZ~N%%;Q0Wl}_9Y!P(o>go=mlYsg_QX|U6T7qrlobr&;+nboz;aSJ!`i3?W`^QlWUJ|)L{2kgQ`fD7Xplx5*+ z!Lovi_#>gCGbnD`UT(W>6`dL2rU1@8GURDEJuw^ktDE=M1@ErAFcraIOTkocpv&oY zY?#W}l54Q)a>3%iI`GqBvZN*CLOsylse3?RXs@ce(YPZr298~YnC*E zBQerZyN~Dz`(tjKP##_@KL z-jesUqYPWsxT1(&!j3C$MxT}vegO)0pB6n1Or3|=S_Q73%R;W7x3|cpJBSrf(hXM- zArjxTN4x~%1Oc%rX{swF_OZrfO;T25O z#saAq+7}d#y_rO@UL7Zv)!0@;k8xr>p$bfsg8zY+$hoF1_&mbMs*kp*c(t$88mO^? zElBy`j&snKhJ0xP&TyH$ehIX=Dojl-_`V7u#U1Jqt6 zG+m{|UpP=-* z_Y&_S=C1Er+Nqt;ZPaTMsJ*mS#G)~@V>vhMjtv$vRbkjouG3~Ao$#BGRVvX0eUi9Yg?Y979q)iiNR9}# z$PyA5g;V%%68441k#4?rQCP;pU+Z}rhJsDHnVJA1D--j+0r6GOg&|&H9LD_S>@dtX zvwL^{CzxM767!qBCFV~)8-{sUlm7&`hMK(on*XyV-vrVatI1(yF6<2IVH*zlvc4a& z8tBTc$O0 zxEL7A?d)11n=3L(VE^+b=b_pl3Pv7Dn=h$beBI_m8Fn%=U~iWt=cO{EvwaYv;@j;EnK(C)er8p;kD&5#v5WNQK3p#n1KXYW(nfW-;+ zELZqKLv|3mn~nR$s${DU6!^e$|Ux8MwTu9p*K;6c|}> zbwUntDI|zI4(0+lVz3h^O#G3?WN~&uM$>lJ)hP3QH3Rw*37_f0IAn-0WQIa3>?Oh+ z1c%8T*Nv7tX5n%KE=dT}2vTr_M2`3s$O{=EJIFTA+$IhbS11*VukeKQfCZzd^rZN6 z!pH}MZZ6VWZ+2rh0?H7UWzg1zNb-gE^9*@P*{>myc$x$A?p_FaB*2zQ{>m<=;Mm|K zF%c^zr~7o3XCv)~I9*Z|Bq=EydoB|ZER4@=ak@@cWp0dd3O&{HLK2G;5(_L>LuOe5 zA;4wlW3d;A`|Rq?qTu7e3&+^Kig2R%|0C~Rz@w_J#_vfo2?Ght00AQeh!_>Y3mDLZ z00waqum*yWga`rKN*ZHr5oQ2i2_#NpGaRS2t!=f%78PG@r7dl>Vrw-qnsBkmtq6)5 zl-iw6s-dPKC^G-w+ULw<5`vdLU*G@xeV>nH&e>;Q*IsMwwbx#IEwz;1X6%S-8oF1$ zF2Hwl*9Ke2EkJ6ObgY!JylWEN{n(tkseb zS~W@4R`if^25>_w?a@mT!J*WVDW4o{0^OEC<6upCl2}c z+T`*~J5D02Di7#gnMNS_zM$jtY|Lgy#FR5-olCmK6l*;@%f>7&QpuUJj=0ycWE~N6 zF#P9oS%TiWensAFF)K%ipkfR>!d|h=u+J=m618E>sbG#~7;P%_10kh0)?|yWkzMqK z*ft^TpNPG|OQ}FQ?mRc!(v8m-pZ&4*hTEm$~rcm=;8 zG{sKGWaBcW<6O44X44fhdT*=7m~HD_iU?oBOkS{~v6Zu8LKm|9mrcjD!rk8#Np1R6 z+sb~7&8H?dKI=kSDZ{z1?>as`do$j9u=>w(P_*3uh{qOd*L*33RgD0z5j~mpDjbdp=)giN6V%!AF$#V&%PHB|3K&6qLF;I zV31Bx0#tjK2CrXN|Z2E|lAmAPma*9GJ#D1r-h#5#utoMoq ztO#RCsA!I3mI4dsx7}zwaSQ1L6_MY#y}>-5F4t`p=!fhmkj8wDty14xW-uybhJVZZmco`*DIz zJ4>(zibT_Sb<*+=r*sh;AbmDd2Asg0o$r#Scuv7V%oX5A6?r*7lOR+#Bw&OSiwm{>GfF?z{ z%%D>=Xb#cG6e^KZL)YHm-oqL+ZvYxVNv>24nv@7=k}c4{lFnW$bHQ5ZIEgI1sCDyPvC7 zVL`e!nHQrroxj{Q%6fVn4_s>YdpG&L4`@GU9#RM~bdgG2c3Rxy9mmUqzVu~zxjc?J zmG7lwFsOBo)b(^4e+!MbeD99A?Tt(>Yj?#L2d34g%_h`MzqrN?v(saD>^WI=GS**t zUtRu_;_D>Fn_&c`@|abytP0NNs}j zeJ{C+RE9$=Rr~{V$Iw)MCGm~J(t_m;+UW!J`hNvfZm~QnUCJ5Mn2Iu)6hl&UpQ;# zNlhq}wiXlxY9+fl?9i}Oeeuj$a{(C)_tqHqrtBu?y=lDpD(e{j&ls&)kZy-dHtC0f zz^%K2V@P0J^u{guyF7*54}{#Cg11bI@z|%udPic3ma&iRH~@JuH`nLh9P7{DLLdDL z>Z~kTA@3HI$;_2yySJ2}HPp3il3sX5RSaBM;CF9PDc#>a=64!0G{Calo1LO5$7G5x zf@fd{(|&=xxi@CuY3xaETyAmJewQJI(R{1(o@J7OOX|$wg#3*G_fy##5m#PhEZ7=y zZ{09tX4OXnyttozpvg9nE61DbT=KWNaeGUqE1EyEix>6i;@DnYbl$z11*SET&Vp{XEHGet_F)40#D zMd75Uf1LOJ?9=NH1pAwcTQG=M1mDdO==!R&XLU=HEX*r1@XSyD>B|jN1~a z?0&i1PUfhp4EH94s3M>Z*Ys}jq*cT(;nzD*?OiHb69f!faDrg<-*_(xUSx8j9I0+& zRptmYM48&GGpCYSZQ;>B5jGl(o8W$6=^`T_tU2S)OVoY8KOL%mIfXZNyRPz^#R~an z9803c@pYZX8_pdR^`+TVk*-ae7H%x)BpThdj_i0B+;_!!YPPhIsVIaad%H zZK%3CQjv`57cwS}$0B1Ip}ri+U|Jb``7v`ad(6R1>p2)FgBhd;(^Q}ivu21ZWSN@; z1~WH&&* ziN4i~>PkGkx?RP1tU0Axm|FZKXE&F42dnQ!Y9wydYr*UEY5XZRT3vLij!tDaQ`S4w z>=%l_{sqcMnG)=`o6IR=$u;bH#SJh?RcR7!$yk7*3j9ef-y|?zDpS6jJ<}1nscs@t zsv1WBOxphGn8XtQC$oY_dsXnLS%GgS zKH-Cl3e=T=CK})HaU=&P7RrewH;X=2tT@;Rj!+9CwW(5Fzc2p?8^)Fh<{^)Rc}MUO zpdJBF^xUkJCQL0Y)HF!BB9(C4TgO+7U|XvCa8X415iC|8a&p6fF`VEkrmtnpZS|Ru zkddUZ4pXBTyRRi@39>au&!~Dj;cRl!>B%RC$HPKq-h|E^PYiJ$PosD2%watoUJjf(kcoj*#0(bs>2K0}}Z)CsxSr+h-!cCpT#Xc$c4O1bCOjq|eDp z7Rhj;SjixvzWvN-iLel-s*6pmsI?38-Blrh&geLKIW zz42-tr2VkGh$(PF86iJ{%W+289@g)Nh8;6O`!(NmDI4p3!-TP~YYon#bbUod$Xwc# zTDH|ip<(wyl1z$ToCfO3Plh~?76lfx-+(%;qhNk$*u9#Sc)ra!s5mecp8g!RpgS6y zF6SCLV7ZtC)$y|?C z-hh8XbBWQ*j>V~+zG+~>mA>hdvjI(^T#fdQ_9>gkB_S2OLklZ9f{wz9e+A_5N z?gzHSVM@hU)FRfM!i8acREu~7m4OY&&UVZ$c4@n4e^K^8Sr1nh8po~n8{nATdz2<* z#~7kNWrjQxt!{WnP1xme&G9(qoTUT4qy(&vI5gQ;9O=O8JaQ#j$CQllmvdAj$wFdJ zL~@eFVl-nd(2O{fnZz|nw?GA-R69}K%8#`V)12tmpN3I^(Q?0EoNUOXc|j2g_uDM1 z!U=Q0ag+7xVENqOvd$8R_sWU^Dv-&{vLMR)i1JOCi3Dv8j1i2~r6q3se{T);Vn6EIPMAD#E9?7|uvqYBv}*A+BgJ z#B-Mg4^O$=*TO&aI4bc~9e`oadOh@T%|VnA>)Q zC#>mOhn+)-CiIg6TYFzT_nV+tBf$Rl6d3{tRxZ<%OsY)Hu`Ax_bSH7cu&Obw?1VeX zmc!$&D$=Utfi>F^8ukkCzy-l@ldl%29XC=H^QeYO-E#OAU$rZTn{ZumUJ5zX2|6T^ zA_#iL(yvyMzgePx+SFY<`ZI$sGV4@bq&DK7proW~SB%y<1d>dZLzB5E8-wc>$J&j- zfg5AftHxFt{Xw+!s?* zZdGZgix>FAu<@9(@T;-}7@$d3*O~SveZRi&K#?MHYFF z$oHPOg3!T-r8KKncM1e9YUrK@CTvMjf|&L}ZK?1(4k(I>v4iyvhV-x}8^Sr4cS!5k zVuf%Wgq*6xgenO$=8=W^a7>HPFqhOHYi0rj!e=Y}F&D+5?wH^KZRB%I{cydA4JvD) z!+TLgC@WSgQA8q=WtI{|Dwbx%%tNd;wKj(6WG7I-6Y!&7?i?Px|H|Iwy{vAG+IT~c z<{x@cH?J#MBQxP{)5bkt=Q%q+X=PquT`0R!!kMo)PvVytsIGs{%62JxUVZSDD8XX1 zUG&PgQU9}3bf3b@3C-7yo@qsFVeFg~(RJkT4LI3GapEE_&Bb%P?+4QX+^P{hKRD)i z;&JTjZRMLcu5NU0_AY1b4j@i8BGqtaksRZ_W-iWfy{A@;j_%eEtE_HG44bUVQ!C$r z;&q3H){R!1<^#y>72_BBV_G@U6sNu+Zy7;oJc+7?Z>DV&_RnaAR?QB0`kj_0lEY0T z>yc+fHIa-xj@d*qW2OnHuN!RvlrB4KFJ+3N+cOQ&_4*s^Kc~!>$F$PCs)L5YcD=m&J+p=S0KSrlA7ZskCvW>b<1f3%w$jxSMAB` zoaO|pyXY5;GdatfDru>lZK7#hbJIk=s6WO>uf7rWoBZ#=yEcN~Db(@KPRL!LNN%@8lLdYhEP zPg>|T<52cn{?azBb-j=l)?HK4lCf{$i4W<>iYo)N%xG+@hpMlP1!G>yZiX~=b8vllW*s~6j|cSD+<_3LJu%^#QM zrvzq3nt%7aGn;<^VXJ5J#v%3@Z)Csaxl%^iLG#^hFna)2(%N*dM1K$(wvnmkgsxC+ z{R4{vAJpSKa6nfQgcOq}xKq9H6|oD05*4C}h!BD6`^VtHZCOhsN?aLxI?ElaEH`3{ z_`!dH*xqy=qg>$%6xc$lyW!a!hxNL7g5kiFma9Z?DE5xbnxc60%vV1}W?*5Q9scH- zA*Ua;Z+NaOR7dB5Tx`THC{PD^WW%=V93!D>TIO`Gv$(K8%|B0=qPX625~A2hpq{^I z!e}%S0@r571Ur!a>tr!){-NA17oCzN`lqU@eBl9H57Sdsq^j=M%n@mG#tY&OQtbHD z^PEbRlw>!HHLB+o;_AG388Czs$;SyMo<{_9Q_4T4enw-BWYxY|F46JoAG%3`s)KfHZ_tQuiYYFK2x zD0d|5nEPZ!E5NKB+s^4|@8|N8!Sg{LJy#9@3k<2m3T}}9 zJ+tA`Gse}-8K{iwy-W1CT;N4(i}yxIj%{{4%(vuy3~I-_?T)w@Li#Ge&t7Jdjb^^eDBN zQPc)lkT?f|LIxQ1oMxpby;pJ#H>O}p+?DoMwrh5oPYYpodBS9uc@chFUW@=nj- zl_t9^mFRDtUt&QPVV7oW!YwaGI(r4Jc_+(;jO zoqA>;ZaJe5#v%C08e!FNE4a1hi?Y_0YJuABnM@c&(dlCA;F*)%v_3AdJXECPSE&ES zYzx7Q%o9yr+@%<|h$`khG2Te^+6xMT2^JFu4FrVx@(nH#3)PILAqwHRQ+U9CXh~q% zu?Sanv3cvoRUhgj=NuN*Ml#ui}p2$du49?5>&jG)^bCox-njgH`m0`-1D@8+$Q`fblw z08RuF0vV#z2rd!>#oHB_JO+d;s~*Hay=i6DbLnSjn2l{pS@k-e!6VP`vg#RpWzAy> zRARAaYT`qs!&azX=a#$1vAz1bdrutO^3WMLHf1HXdegAn>?MO0sI6ziu=#jO$>>CE zlto*VU;SXI%gm`0u3ixm>2be!!|3wdC>Ak=*J;58{(Z_bOC*)90!%lql3b9|l^C;d zSbG#;i}YJLm>Ar~&JpMCX@VDbuVyMT%C8q06SF@A1fIeQmhc%242}vQ zJ3QB9w|iz}?8sag^RNtsbMWl=V=^Q8UEFZ!Qju|N|a0WgFL2N22tW! zjLcGEr5CH$d7?K!(vp_O_)UR=I9eQ=#<@G{QgX!m_=&yeZ=YX`)(YkZIyl9WP7RzD z-gXwN^N>|aWKl#bdrA!z$;Is`5kDL4t;>L+q<#VsnW@}GgTI7iYlqShPG(Gz$WfkD z_3Sm_`3y%?c*g8fF#b`=g1t}U!}8E*+5CWy+(~lar)Ed!pTF`o#GE+n`ygh6JLwbN znqxBic_efkjy_H;)yOLn$^wnND0vA+yWdMFOtc-EFiRT=6Wb44aqba~RF~2hE_R1S z*vl-~GzI^Xy^A=u_|E(gUB`&vLE}Ys_V%24USRBbpCBS$C-Ku9Il0*Wj-BWIFgS`} zBSRudj(Mhv;C)dM#MY&tajDkZdCYc`Dhg0Rg%-Ac1F+PMP(PnZA561ieQAkRS}dam zi>A6N3;&%tGsRSD#fK(gUIKib&&(cBXdJHA(FFWlR+ycDVW=@1V*p$AyRsLk4u-BK zNJ5LN`s0{-?j-p+q{P4WMHz2U{o>jd@4y^1Yim20rpH(*GU@}BEl)mK5&PuA)*tYW z|0!FMcAb6TvBw@WrW``+G?zQ+Mgy@Y$HcuTD&)P@?~Jh#3<1+xcgLOa*ZFp~ToYJZ z+fp$mqrPOq&Yb-%P057GqM}KmCY_lh_xn7@LKQt&w>3nIO6J z=fQy$G1-y>Ki#Ke#Dl!{R5crf@DJw5<<7nSe2!kaU?uxo&O;Z{Azi2(SP@queV?#B zqyEDu#o?4EX4b<87`3r|!ax~)_TkEb7L=ZB9f&kctcdSOsO|~w_JH?*u^j+DW&-Ci zV=wSAq4Ssp7+LuQsGRN^JNN&MZlwX0ix-?a@tRn5FMg=S$iTtgtGJ`)`}_1X(c8gR z!`r_9y%49el@50B9cvLYDq-Vo*xK6Z}~xs?K)qpy>?&a-#&f9 zBC`d^C+svq3rf&*?NHOv?x##u*{4mF!N zHaaq0h_U}PXDg0yO8!a4tF!NXi(A&_6vg#DMVP)aDKo?P7zOeFD*&%R!?CdSCWe?j zYL8%z?w<4BUoz$})>P-W@K*J|rOOYS{X9l*1F11wa%lYt-FsNxtCzLFn$}}MX_5P< zfOogx^LtVFe2^J7)&^RPSI;899Cd--y0|cUphmCd=>K2FK|gK6{=dONJD8OJl^j$F)(n*H{qN?WWc5FJ zTDz0u3^_|!dZIyA7Edv*nVR3QvakStOaHMncR8m3air*9G4+^3#p};fSSEV>t4NF9|kdNA6P-JfmjM z7SHi<&RTgy^JTkmB4!nHc@kxMMSs&&@f zNaEB+XHA)WT(G4znc{RHIAU7X`VmCDId>&y)K86X#50wI$Jz=krZ!f-b4ER-l&5=s zx>wtZJrf6_5-sNm!j^e2M1`4emh^N6Q>ghby5_`i&Ec<=$AW(x-#D#5g`D4#9an|D z6$^t<;JVY;o`*-Wx?e^A)^Cw)fj15Cx-@vRrHG^TZoc{QAK=`eq&0`?Z;c3p5>xYAWmPHhbS$yb?X^W>TJ2CfUysOLp$|E;mtSNR0{qWk^E=QUWaU4A_To^SduvwyCU0DvJ0&ZBvp0@| zxarcC^E>|lji+x70>67t^7y<&-t)bGb2hdsTbwmdkyJVG#G&UU)*dN*kvovkWd2K8 z`DFM$84UN9hRQ8*z9udN_QTt)_bF%19i-n@pA^?*94f2Mmc8bEE0T>51C`s@m4@>F zV9?jnZKOJ%DI8$r@0Nghfb4+ZeF#%f7$3Ky1Btn6GlX4IN44OE!E0 zotMA6wTV0#gbv&5JumOXEH3Pk>zu4FN$9;qLht3j;?Kw1%uB65CEt1Z4-f~f+5H3t zr!c7ph^-g5qn4O;8`mueTtDz76tw<)VKzqoCewf(=IUFQn2HX!?TwpE8^ zdn+f<`jUo!i4KsKAh#-fw{Idq+D2dHM%(&78m0H;V$$$HDE|q;xb@#QW2BYUqNYCK zK0;M6|jDvBViN^_-Y(=rMLZQ`y?T7sNMIY59k?^Yck?SMqv zJD{WO-g9E{KQy5R9P1*mv)43L&m-vZovOe@_f_n!61zBjV{ycK@LGH z@OmKUb8)^`W9f&{yi|-(uhJdS6{kcmjChHY6X>MkX1AJ~0~49(UvBp=cR26KWtfJ` zSZL=`iNrR2Od`6D2}~OjNFJHE*O=`vK9taEI}&&ME8DO(T-IhYUMHYy+ztt@w#z7O zkLx6w<7wX?H>C~@*A`5 zT-gnz4kjqsVG6&FB+;2mSh$76Zwcjyo+oBDl0=&=kaV^2ngo8EHj>bf1!nI8sRVm- zB);W$_}AF|3%Nu+Brth!_HhDKQ<)BFse9t9Y-8k})WAH60QYKGW|0VRgsk=0XHhnk zpQQJ+N%)>V#=?-%8N5)sx3}T%EeN7 z;ZC(!P)#%@8f)x)7au3a?zm2%>Yqp)IS7&g%NQiET<4^$mvF_dyt=fq*NHfWF3nk|j+Wsx#az@3_Cu%pf zr7l2#|Acncj$I0po}6fS$Ehj3dMigv^ftONRLUMGszXd*r_#v+^%6&WB_+X`&fo9t zy!MJwcF%~M4X&yCJu{ro>~Q{mU&B#H;?Au6ByZyE;3&dzW-Una49vlU45Bg%!!B<# zzw&*MG;@yS*D9#ry5}P@Ak$C6ReCU%^N=XN>X^ZBW{NrD^zEWDf897PZq

nHgmt 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�bZut|yHrnlObV=ro$LsHAU2($O=)Y5 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 z zJx)h$P&0Z|c7~{|R?VHsu&Y<1?hq>hiuIu^`4A)+fh_bN)DS3kKwWab1uDDB2pA!- zFII?`3fZs!K<{{ETP#ckl%b*b+1o~3X>aD{krWY!?TGC$Vo00hnjQ3>**rmDP0UWs zW94QJF{}XP^@1`yGGtJ1v}A`~!ex+ZBTpQjxTk>KA*#}| z%EhP>;n=c2a00R~v;7Pe?L;T{U}5(E#UvVmnD!5h5KRVq`sW-61<-O1`yz*~>~V^@ z=!jq7s3vwA~q>qTYwJXXd4*2cM_~|`vb-Tnn zJZi8J#ZNC&xI+^=aQS=3x*uJ>Hz3kN=)U6ER%yUu%0Nz}?22s%?xGsu)vgKIt;Y=r zv(WGCMNk~73Mi^Im%+_^V|j9jr(3{wmQnA(s1*lv7l|v_qy6}?u884Cav)mCKTPXS zaRccHAt)!~95{+KT_NIJW+WY*L`8qcqmzy3p?EintHjEE+>GZn>QQdz6_+pfGZE(! zqlK#4*uSF*pmyYBBTyACs9^M8;%2 zml^9Ju2Jy_Jd=P8+xy+@;&kE{F!om2Ox4YMFO@Ff``cojBo{h=v zkvun&Japeb-k2d#jk(d$zIJ3(gZfk37qEV4kT`;|;^;rVd^ncx%Qo&KK1u`4#ub1` ztVYlO`%xkLHC%79e@`;o7J|{0UHL>z8>8NsDs$0db1XovsEH8y7%Rmht~zDoB#Dc3 zg%h5EV!}VsHF?oz#&p2+Ld z?bLVB7!t1(MUcK8$$gRJq1D9L%`g@XL3xjoQ)z^*55>pf5Ue|mvi>woI6Wn@gqmm* zbc1MZfhD-PyvPbsX4C*1%g#6+u3esDvvAOf)urd4R@ZbN)arg_V?$HG;f0# zO>m_Ch26@xkS1QNIu!PixslgUb^Xiv*V*Tz(`q35?a>Y%Wl6V=ZmV zj@Dw3a$R-zgV?&hkycNHDx31jtH^)7qtYZ|zGz@Y!LoA6)-FB@iojYJwY&;4T_@^^ zn=y>&fwX4w^$Mtape?B+&3obCC8N~DD0Ua zGOnCFGkQixjVn(;$~e4$(v)Rm2&~-!5+xMbz^%p_OJiBZPJlU*Gm+SASrM`FwAiyh z;`&kWu~1CvRN&?iY^=a?6}@P5|9?LpnVECm>+?SE^FFutc{0T~3fcA4sBd~^Py$}!URcQXrRox}RJ9sIA;BN= zZ-Z#&5csntLalPl!l$F%1c44S9RQ>GlTG?0s%YOh`4sY5h5l5DSG)b=@M6p4*+W+lg{+tw;BWcEbo&89){5nW*+qEg zO?9$t@Cik<`Yl?%8)w3i^ro1`JSfkp5jJ2Nx4DJG_&_`d4*RAaYm)}soRh6=6u^<6 zV0-ClW`DVsHQ}2#)eslX!{7)R_Tr=`!G1eFiI-(Vv6~>#wP0#j{sqq(@(YNdrFi}o z;I6Y$H5}g1#}$turrifc+>@3(XUE_-9GAK0Y%0EoJ0x1@UC1F(_ncL7ob3DG@m8pT zukh7q;2^$-H_$}y`ZiE0pU-}*>jtF{cg<`U;7~t+6Ul-Gb>Wy4+h_7I^7VoHK~>$o zU%wo!d4eM96TP$< zu+fYq>W2=N}F z8un{^dRAFXH0!HLiWZK>QF!cRw>?U*4}@0J$sdT-oQ?0{i!q7b^;rz^HvT8ai{W}x zw4}*lt(g0?((%aYt-zalfLdU2N6)V*=%`VC!u4KlB-Bwpdxtv~?#1nS>=Uv zxB@rJP*{b5x;ZOpS%1$evq`zx=18q5_9ppe2CBE0B?ppb)h_J+lNwi(dhc>1n>*xumsW>T{bb97kKP1+|wj#5I7O00YYa*SYEnt~G>A`Y?=R@y8ii(hfpQW`t zvmE@)?dVmPgGnOfLMQjzWA^|hQA;3g8pI16GhoVW7!p6Jbf+R)Xh`r`(ZvUyd&Y2d zwmMJn)k66Ik%B~0-j}uXrXeXS+3)qvXbi@G@uocV#;7ssa?~*N5JqYGEah*06)|wG zQXrx4{`Vqbd4G%nOMfM8*FF+#exKs`!QxuJE<9nw3kjCu!4mLO^x4v4C=7FMW9QRe z(Pf1*h_J&;IsAn{fGH&Rk@^J(!nF;C0GoojYls$ctVx79T4*7Z@3h+@aFnLOK!Vq9?0SNJ^k z+&hs_c`nL;inf46L0EiZ!6mHd&z7U4z+Y`*csI_{-V1JQ)iorm}p3nh7V3>^yxobw6{E(LAnW zWhm^)9HlH~OYzN{sV!9D492GoFF^K0uq>^bG92!-0i-T;=(R3olkp8C6t;oU0M95i zS~CJp+GFup*l-1S#s(*5=r1rfKqy=t_N9RGnV=^&GQ#78t@W8ug75b>cmwr831hF& zzOUUB3G>5|Av7=;D?a^{bn{FyHZ zFnuaG8hB`WPSPd1eY_ZPQn*C78<*(%>zC->4!ziXy6ITja9x5K_t-{%h)Z1N?7 z9e$kS@#8ApBvkElm97(4=}tI;SLr%&l@335n6fc?ag}ag*j2i0+>y2*iKX&bXoMNt z!KX-1)T{M$rS2g12D=&LCUm84E6nXpCh}7D@5S4*T&WuXloghpHw%fW059`0t;YIZ zaNKk?1Ln12i|w#*DH+a6dCQ^eS*1Ptf@t@VAPD>9 z1;Mdt+rbvQvNEvo1_YZ8_vVP7N2p`fo`?E7xiFtaFCdNAncToj|=r*)jN!UNC%!d$3JQIoq+15nKbC>0pVVFaD34y9pis%YPv zDdhBN!S-{!87K_)VV3~SM`2!M+X;Xv1_0l6WnBhh+4WCj1F-M#RW-3i=&%8{s6zHs z0pQWR}dZ!RpraA1cOO+kE|Z7!%i@c%IWBOJ|o+?WDDwyGc6c45<-gL4+( zGoLaxeG9poY_~NMdDta?>`uFpZ;GsB`6TTUY*xy)3-^|HUC73X4K3clg4ifqT~lO4 zB6Cf-*`z$<^4bs6ZzX;U-*<`paqJco=Cyh^O|DRPc6m9E<-W`P!ojRaRrxf6L(>ow zq?No~loqdoh(w#pQcF-X+H+vR1JP>7>RS<9mF32zsQJBlJtKaL_; zI|MO8G$X^?s0lZzd z0g~``IRI}LrP*h1&SS4vVhe=3tsU{F-tAE-!^|^C4ggx&p1@1TUD6owA4Rh4PAT zcH`|$;w?Jm@89VAK1aM~H^7KbE-%f{yB%OT9}2Auxx7@t<%Oo32Sj#9Iq`lEiUbCy zaF>_${=0FA0f*ety330V1BZwOOnTaOSixPtq2MrRYyo9Kz3_*Ao$o#gV;!nSM#tHa*LUuypi{<)34f=|#1 za(QXtE-$#`AtMALZ}JI(=349x&})uR^HvgC*jOzhji_x0ymd4 zKsi4MW18!JZ~^(aV@JTH**4%?0P$4c)t{_Wr*Joyg8`)`aFA8Orp|#&ZZ67ta&xKT zZZ37g&E*L{?s)~g69Y;eEA(OL*l@J>K-#bi$)QD#eTKWayv(fmzy`dJe0pLYo*JZB zD1hqN-;o1|d_w;EFvdv-vE?QZ(DY6^U&5|PpT~~;-8d7((jE~|AxVD`+j>1bBGVSc zG>~h>x;X?`kQw$G9^)DN9r?7YUC5}E2W+&k$Mxs8FX(~N_6YNc--WCT1;Hst4)O^5 z;sj0~R*X`*_r@E%3o;&uS%n`%01co_pQlfSo*FiPc7NzuSp5e=PlF|wp8ibuNe2#7 zXMMd4xX%7a=#|kYXMLKx;LsmA)qTrIX6L8w%(`7G-F4 z&&l7yHxc{c13^*b*e%yV&rQl}uEPK9O{^tX;qS+{pb8(BggmyBZ)C2*KL8izsyQGN zu(*Jb!F%|dI5+m_xu7i2)!t^YcWs}@7*{@=Fq$ul3dk_s2PifuZ)f5+~{Gt#R+$nNHS z7~4VU)sL`y(IZimd#Gp9tJfdr{PY3L?z37vBW?=Xw|rb5Ig}AdZ;;QKDJRTS&fVM& zi-8uqc_%*H0~cx5&Fkn}lGXvCUJy?w`x}6TZ3GjBZkgEq10N~^b4wd%_JY${h#UQ$ zlb7O_S(9m@DLdO!j_Y^yLpEu#_*jN#YIFLoy(iU!?zHs1^YYlC^*_V+^v038g4JkR z7EPBDhQSiIZF8TlZxHVxqU#pel#p)PS?InbUp>igUI#R6cc(cVWS-c08Fi78ZL?dJ za_6!+?liZ>mwR+B27#$LU=d$BSnllvG?GIOXo6~))srQ7+}c;sPY z9;M&A`a;CNOH1S)SmMgEDT!c(*=4;@-D`uOm{4~y#FnK?HBxmgF^l6?=4(UA z^Rbk+o;zB|2CNdmK<6bKHMsCVfkH|H6#%cvjU8fP#VBG(4-olFX{qL5=aJB330+zk z#^TU3uD2SpQ@rRHve~VL?8TWx@su9VZPwj|?CBNw1+JVf%|9f*^GoxU_)eD%jZ5=O z=w07S^R+Y0m0$c^Gc)L#nFxqw)G-srgxl+uLiRj$*5IE*+~@Q$X5ln5oVi|#gp5l7 zKBKOrL4|8y8%)UI#joyD{OUf%(@N;5uOV<`V~ZJ=mPrF?IJ9>B)j02k!mQ&cUuvB9 z{%~8TLz=3}-z7udnv>PYOr*{T$;v*soIN4QU zjf@LxWJI4v$QkKOjZj2^tNM)oDt+{NM1i5F-I2Nd9c;5O0~u`{GLX4|2~braj!Hbu zw}AqSl#L-|-4DBYxN&elV#oj;0iZ?PO(U5{clmptQhyJY(uR|2j5Rl*W3|~EH~K?V zMMx{BS&qiKE~1MzFVhPB35y46j=_Pdz%{o)8AIpZNH!O3i=85tXs&1*daA2IVo0@Z zg<2bD4g`LcRJMF=7W}d26VhN_iN&14i)hS>Ew2hqJf1 zEvvXqhD(T5zB(|6!X!yNs*I#TEAa;y4X~Uon1#|G>xkn3W`g22Z2;oF)kMMhb#em5 zr$15?WH!Z$w=o&0g1rbIg~0@y26swnGcCh8cn*~X;z}bD2h=Xg`Q+9xob7-mTZ~UI z#yk9ce9&>oq-Wtv&?vXi$&qYmU_PX(pLugFbD3j0Er8NvJ4~)xR)hiu-Fo#c3}0M< z0=t1oI{k1jcMud~+5r91Qmbo9f=SsGcHPJ@>8=MBaIKV+TBd!@X!!H-IJnP^kONSH zS%bqDNMsemr+xkd$A-U7qX9U(duQ)b}}eMNd+bYVDSqCSF^bhdjA$xa1IiE3=KM7!bE?PY~mTw*`&!QW_`c4-lk6 zoQA{L*MB1Zpu{^-pxHP7=A%SP(QNNX+Sza}7Q~fwt47!z(yijkwoZ26%^V8V>a%D_ z=WZUuSEyFaGz@HQC$nW^&|;@Swd!QO{Bm!Jg)Vbgai0ULVW?KM3xsMFN-r@fu38Hj)oHe8j+c&VWE^ zEgy0QmY4$*xo-AxoT}is!EL0LmJ)FHVR?9!}|3i^g%D zQMQcmo1^ot!9{_5=D3zt84zPRc%XKP;6@Z$ppdoy2Jdt}?TGl!`Lq^%r%h(?Y0dP` z*ko~`qlX7KdM&JxKZiB)c%Mc*zt9MsU#~qAIjh$YjRru4Y@b!!DpgT@1$O@w?5R3) zz_M}xTaNGQ9yNgeBxDLA?Qw8#Y*QOh>4t^u{eLTawMZ|@g zI0sORjS6djNZYQ=X>zE|OUIQhPd-Wiw`!Q?)O8#ZB$*uxsh>eI-@ zzt9NC_chqRY$isiE5$Ma9kClS^oJ}JwMlJlVHZC`GhsvZH&6`I(|& z;6vzPQs|qmhtcn9M*or82-CyNILsm8b41n73{*l3)2|Xr7;~d(q0qp@HkxDvyfrP$ zR(GX0yVGKJL+5ex3#53tYN(<4&~-Z9pYgUz$%PdPkFTEY)7K&KKBRcDh7>PQE2$^l z5P$DR%uUj~WE^rpffX2IXkM&B^D?ea28I z%Fywud&J!XVT|isnhAX#0A_HGmd*S??Kocpz{g)_E)jAP+BOj|1*pRwMd|0L%H)OeK)7xvHOA7Tg;;_M@Ckkr8wnDkJ8jcd_?-?dJ26wK&(Tgg zI+$Z}sNFX{4eccA_~|E&jxQ8v%A=xymMXMY1A$Vn!Xbz*s7uv!iGmHoq{xk;6&M76 z!~@)g;xBm9WN*PM6Dxf};P)O@f^Xi`(n>rAf|O3J2CG93m2CerM7dHtT?3SqP)8s` zyd(KvYz%5_)iLgvEJ02Cb#9t;}CHnuAh_^piv!%2*%<#~$Y z+`kgzAm3!fFLERk2R9Mdc9meTkYRYODp2~%@$4N~nY|OC-x~*P!m*8FS;Z~H&~CdD zJz-fhWx`4zqM@~OXCrk8j%=V#Q4#HMP*Mwf7f8$+ltd6si3w>WkN$#B0PfB6f_U^f}y-QcZL! zvqA_8w9@=F0$E-W$KEB1z<+y($7!jmIgUyO2G7TxchT?UI7|_SnIWrhvyyKB0^fNT zS-c~?i-vpVBnRaf&K)(eZ9r`3E9jbV+fpZ5dN+BoT|YiM6qKZm~*m5wr(Q;w+jpT-x;6NMlj7RtI*-U4%2lYM;&o|895 z@ryu9Xja~QG}5o{&4V2Dq*>XBwZmR%6>R12030W~_NEY6GWd4^mJ9Jc94zP1yS`xI z(O7*>cIwxmM!x6YMI&G0dw3)J=-n9_0b4np#KQ8Hz+2B?KEB*1*ze!#4%Eh1)zuVh z-eNP)VD(J`AXDDLLwoPF8lkIZY+BapKKtm&W zs)JuAik^|Ssv}?zrLF4lKSy|nv{m;=RU%Q*-rVlW@)(m;bt#}-Sx&iw zTNGrZd|937wLdD7K~(`2G+(;&PT+YX^r;o041{RhB|AcX9u$9-UYQL z@<4RoA`kL(-zO&ldK+~b?fxkLTilfi@uMdw{UF*knkG!s;_#Cvnd;C-yADIa zP$~5UC9&-YP-a(c1}$@L2Q)o1Ybj%GE6(T|bD~IPBofxP`Vi?yMPwV!I7?MlnyP@n zLeVBi*$ew|#8FD7BW`ijmaIdo22>MKW3<+W_2R;4)7| z`*p;yDQYRf*BrC>w65Htt~9Ku-jxkqdAcTGcFJf`b3&*lyDC&?BkJgDh9ps9Nhk?z zhnA!_)s7N`YJFDi?DL-;nty0eFBvV><*|F{X z)ZSo6xq3&)#Dl#mW-e8|jSZqtyc5kC+w2iMrd>J9)4fa?oWfBTWrzc z_*P?I$5Fa8Nzg)L34Vi-)Y#wf*`I)C-V?~2b}bMhux>5>`t0j)-w9dM4uBR@4m1G5 z<&8r=(Ou|KMS@J^g`&1a=2@JJl!{g|9$ZY`>_|mB2K1cb$yZlkOZVn#Vsz2?q1qqC z>FDp|M8SaOjLK_E)J`Sdw<4+$w}ISgzG|AF+my#Xdz2Q#T8S*P);EhCjn&KWB2Bxy zwxB_CJ0?$1W>)Q!r`IM`BE!=Z$E3Z>%(eBJxpr&q-bs5_Tr_TLZ=JN^l(b=wx|=dO zHT^Sc-&e@!&3@_iOohNN*uHC~kI`u7t0=03Ii!0QY0an6Oy5J7|EPsqO@dv!Q*JU@SFpcnC?$~ge!hR0bWp*H1r+Kl&l+rLBGRG)WD z8J;?jVYVZRGR#s-E2*W&@Q3T{n*G;d3Nv{2Si)#1^~9-M$(x4fZ`IcvqiD}e$2Ush zM07usKm8V~*{o-9x&Tia(e?=X#Az&uJ0)=PM`^KVfl?bP2q+={u#v$Dd$D>aMoD0i z=iu)Wr0=49u3kh+C3&0YAi(px6&x~|lJ6mcfE_v5cSA7|iNsp?%m)}4^Ef*G84dUN;i z_|SClQ=w|I2JzWn%x5ohajMZ`Bj3bl4n8Hb+*$ukj5gtpK!SFWwBfju{aY_`4PKbp zjpCQocPcakU)e~WvZ+HJt52bTP?Qi>tBx4|(rw20kstPR^vzQ@iTtoq)i#Wj_BZ8- z-G*)9!8*#YtM2q7?9?8_W!Cyrl3e6%x`y&LA&z`YuU(^9jM`MaW6Dpaf@6%IVQWD5 z#P2NP%l*1IjOC$vLAvTGZIEWb6pk|KIu%xu!7D1)!o8|;Wz=2DRcaTpq*C?0aM05( zqT@gVjWuxlMOdqFB48UCXT)RTiJrNsm0jtBs6^G25%4dDioud;*A%+hRayR=34_Uf z#&gq>pS5KE6R~-o31)91u|V9=`~sra>JJ{mZ(JChZC=^W(Aqc5W2t|@5E}B;8^$0A z7CTH#bqfs$xqN`*&qRr{tW9lLz{QU{x%goQf(6BoM`@|5U&db&KZqOW;s?niBz~+z zU?D^|hp6baA8oR~C&UkgK7{xIE}hcUPOOTQKql@8N+6F}PnSU6zab<%yurT<;o-0N z9xgmQN$<`eJX9!TYby+%*Ap_pM&gh*#O1N`MFr&;3?u&M zNRUyER9*u)WIVo;b^&Q&8^DhK-sc{^x+x|CKz_4SD2xT^@0SHZcl>z)9_ znFJis;Ag-Wq5-Mu5Vn{nfV8;@cp^PK1aCb75@rG<%mg6J#NZM2h`S@mhX}6NABVQw zw=PnPaWX@g*@gnZhbVs?zGNUWu$c=pM-5@d%!L`G9N^Q05rpRGDc{3|8RUcBU^kO6 z(}SEjLYP4?Lr7^tq}T@DOk~G}8229Ad@X<^a`Tjt_#xVSM6}5_z>Pg3&^CmbN5h2~ zBn3NW2s5H9Lzv;ix(-dCTa2vMevAtNy%c_Z_urKU$k>rcskH)2FT_R2QlA zj8T7rt0A=7lo0I2Zhh1usiP2P%v_i;+okHS>9o)xBvlDv=BN;6`gHZ|H9-I^2z7NA zy5ho&nS>dt31P;l$!-tTxe#?on8BJsm=SOyVWx+K84jq?#;7A#?dM%k3FP8L-@}C(15^G%td0P{C=A=! zr`3G-kWdqd5Nduy&$&<&xKFBHgkRF;@?&QZYL?J3w!3<-R5giuC|@h)cOlg;Z^lNQ zk4bP*qRN72HAodp=;9UUCB!Z zki?sQ)E|qHsy@Y8LE;T5{`iA)h$;#3Ce8+At$q!g92y%j&K_dx?Jwi>^$VSc0bfVu zH6=={14jiHZD^V#+C*3N5p5{mY?^jEi8i;AXk&+HlOsf%Nqt3|v1bu&r~@I|K(0AA zT&{uWv+pYiKcWN|YMvsYW(wv(B(@xpj*s|{hUA(aL#|2Wat%lNOFD^P0VBcXngQrc z2R!AQ)#Vzqd=1GpS)KsI8ipb!-2EXmLYCSd5^EBXr8b)oPlz)e2&VfEAvcLLoIw_A zxfQ8osUGi-#F-w5Gd*0KNp!DVo<+D@`edq|c!6J$~_S^*g@ z%beo73@2yxE_?$hIA<2^ZuGSIeq3)-|y&h)p7w&cQKO>=#l88IfQDl5=?3Ks&1IFmdRWp5o&(8gB= z(o7FYGklF_gLURJ@!J8@7$^3(rgq1tH4})u%NRug!2O7WE>888hl&Dl`GX zPqmO#7MjQXNct+~v7+xhp4n*3gA&rVcmiCiVIVb>NjM!iOUObAX?N1rfWN3N*tAkY z+BQ8QZFeXkEf^GNamlAfo2`Q}hIbFv(m{fa8Ly=3Er1P&!(MSX%jfBZKSmB$X+x3& z!VQ&s5ao2rtfX=#^!FUvM@YyKUjAx(Z5#Zn}+E(uF5}R1}CO<=c4L+oPs0xZ6010_>EmS`EjJ7OtxM5(j$MNWv;5lUnI7bs$!`&^4U6P$}>DHRld~2668@H zhC}4Hc!i8oBKfK(*9v<-&spN%i^}~9tp4rzJYlEYe3U2$C9-+KizbjG{Pq(8!E3}? zB6|inQ%_s3r#aedhefsr{ws-FNzACiJIY%nqdt6Bcn{iA54%CW(ZiDD=`)d19OE0p z^X-0v!ni?eHPtE8`;}X@*;&OM%B0ncdjeZ1L2?K6t6fPC$M!1+Lm?iF(W?wtoy%>L z+93WQ8Ogr3Yw`3D8H_mWr0Rd+Y|Scemsc1I#IB1kx18=pWF|rS?fFCp^;I=hFDG0$4 zB(P4ZIsySbAE_u1u=(i(E}|F7mvb2%WCPNmnWchS!*ra424NkXfhJI#-Jus&zVqAA zgv&!F!Y+vBl-5Ccl!s|L0Dt*L`ym|MB$%JXe?utm#`jZEFx^pmBSl_xp;ycJL7YfJ zI1d>Md;G6sWk@(*C9W5Hy2r_Pabuw{9nJzv0%PIbz4lXn4~j|~=S1WB+f@qedS(Rg z;3mU8WHLld#Ww90yvtDfi+93kn1@HV%CqtJc6mDf-Ys8)zboZT{GG21(I)oVPipC8 zIZO*$4hMjJ($0b95k1@~{|TMzro&U*bV#E5P{6OU{3KKr%_OR?B~krFZaQ2mM0J=C zi+6HS{Ty1KDfuQj!8K(XK-3+@ZHQR5t3A8YJiT|}G?FKKdT)^jdwTDqEUbKmmIJSF z;%THuAuHmbYQn}k*A$XtOwiE2!^QTU$k84&C6dhk6doh}y!6Oz;5ntLlMrLjHgZM- zL&=obj+ESZCOv!)-g|m)Tb1SMCF#2tXI=>&(X3PjYJvR_JpJF}5A4EfF_3}8Z;}wO z@=^W*e91V3s0gMBlzQzbt{zS>P1EA(NxCu^Jc2&%1yy|9@b|~bFKmhs4La?#^?wb) z7L0nzcLF`;8bY8v!v$Lr?0qDeyS(NiVGOh8P0RO{Lo{E{qDWE@qWPN`qTUx$T5=e@ zVuE{$-6TI3G{LO91lS`?FhWibOe9kb%RLUAz(&|{Hs?~f3|qZa{RR<>p!oX&)e|f5 zJG71=@v9+}aeCbuM|K-zd$a@xqpDPlOrI&#tu)hdN5xDbIO!S)2fy<1cN0tmQ)Mh)Z1emHVGXdQp{k=%)j)&ujjn}MKTse2OwlAY z7YUw3?SBfMlO!LDF~16|);stH5ff?51|B?5&!I3;Ol&xYN5Cq=4qAyCgzi#xJie*Q zdQ2@~uXB0E%s2VutD>E3A)I>Du4+oX{3{gkIS?XWIf|>jC!FklMu$iW=(KR_WE1uQk16TePN)j1xAX)GSti`)P|g1YHjuD>;(R|qClvV{tb%(16b8m{ z;qbxS=$I_5!tiP62#(+Y&}VzHl4iTdwHk|1B~UxwK@jXGbFTEpO`*e$K-w1<6=YsmV^tdI;H@ z_`wr@1`3<5oKNz5 z0#vY&hM^NMw#?uPTH_Wt-4P*%xw8)*Ub1D@$Cq!zdw7MVa}yKcFDys89|B zZJt6o08=Qpd6IHLARE91C<^^R7XYcZ{Vduh)YJR!qanb_{T+SQG+Kp9R3{ z%LNbtJ`#4Jr2=S#i2W&M2nUCi@*@0QA|v!ogDD_YzlFzK&Mf$vQ!Sl?DL-#y zN*+?41T_XR^=&Yka$N(mX1WvL?Mb=@AB>^8uHj0-GT~5!k*ZuYD$ffxKq?1ZfD}51 zi!np22}X;9L)r+xfr&v~0|*6|(Z}j*_(@q1cl=iXzQ%$NKpUiJI0n)OAU6a@8>wq} z4bKS>RH*tX{NS*-jKd;b3|Zkr&i%Kb-nZcu6b}T0WeZ>`*2dj&B0(D~iq7Um|Ew3C ztaigF%oYIF!Py9OYw*c&+BvW4+6>GWsrPy%AC_9&WEv^$I8`D1bmmo)$-q;RN~v21NAy<){TpKgx=B0Z18s zzo!fM=g?2RW!OjSB1QbO*+=VCABi43M8Z}G+^av>iJu5#+u39aIF+H&#!j`7$2Ugi z@~^~VnUUtCLE4DB8lQVud`W|Ab=ep*E^@^B@BCW;4(ssF9FI-8`shq-$Do9>2kojp zMt`eG6cG{*Nj$oQlY-=+WH-xgH>{&1;jHs2h?xT!g$$$;IHhnoM}i0nx*1nBxh2V=3EGqU1amR{70-?9?y*l zM`-vEJEVIZ~1y}IXp~vddsoeb&dA@peaA$ ze*pgn;eRLolkC$ALnNc7M+g)bGS9VN3IIdqAzdgGZ$g1)`tN0)UR~z7-jI15L79ia z*P^@)_UE9?!`}(RRe(B$w>Jm5S;`ia6WN(COz!KdoojALuSem+)VjfJfc3K41zjUs_G$GX#^UC1FhNx zeKv?6q@@SAwDePy-(yHiuvS7^Y7di^VElr#g!7h9dIHp_m^4^p7%g{lqos+YB{K?; zv}Dd>UwX2W_tj#1ecaJfwNEH(o#DaGWUNU!elTP@^m}n$g=pz zxU^I&q$QduNlTb%&tWlB3`(CVq@{L9OVF-kq9iT#ndrC3wyKK*HZB%&ptdNH6NR*N z6f3SvOE7$rv_zIqAuSn`5z-RYN=Qq6x~d3uwFhXT&-yodS70n@4M|$!4Un{CG{B~Z zsy>OTTv`GeKw1)AleC13e|nSWiYBQ!9T9Z!eD>M@6g)eQ2Ejveklw-Dav$)}bE2VU z_C1ML02WD0-$D){oR_Mv#5YxW4^x9jQkb-K$>N~2^gfCRX{lXEOE(<)MQKSxz!VUE z!ahh#y^xlgAuScYNzzin?Sfg{8kCm6>F>mWkD(-TX{i&^l0IDZIGaKP4%~t~)iA8q z(H0_aQDa3<;WW`Fy=@syIw&+j-$6_!QKak0yc!`iy@fYiXu1rq0`) zeiEA0@&i)UDwGod;}+WTI^bLx=22PRiEpE+QIeoQGyQpBXLRf6!+6exs9|_ULey&G z!Cyl{l-ZRP2bV`Q)|-1m^zj@>61R@7^*_m}lK~!w0|y%kQH>Cy_9KkOy6Qv9NFha) z-J(lT>mbshwI(~cI>8zk6r$dDaUsfGT;$41Qu;Z(x$7MyMiGIBwuIj@!5&8^Bum|> z7OZzw?~~_A8cLG^20)JzcKCQBw@G#6E!xbq!#9Ex`gOMLCp}t^QWHU&iWrF3^#4WD~HUd-e0YAS@zL=Tj zA?~2h&JdX~iR&DYeR7mkbs5en)y}|WKAeIX#{S+oioe7-oB?4q*z~-jD zIDm1XQ?C(Ek%o&!noq;tAOk3KAL=p(clt=CkVu~(Fi6w4AGbDlh1l-#f9BojHqON$Lb^(RI@#(E3{%47Ng${)( zJme#eZxK{|IY9uM2tw2yFpffcGz_@fcrn8pc=;Rj@(wcMs@+TqP6@TdtOTO%K)xS1 z#Bl>|XiD$h6`Im*z!(E-J76poQwq1<9)<8nN9SRTme5Ff($h>&ar`Jh!<3JC~u2+3C0 zj8*P|ye4F;+f=X=aa^_{&Y0|B*7qT^YO{gAWg&jy% zSYkry%sWLw1LU!1gnYJ+J#aIZ&o*)Stevf(pZe%R{;MZ+6YSI61p7pU33e%T2JmxdoOaC7103sp?Ja-givdknH{?Ri)tv7K$5SNsblyowxy(!tRiPvuGyN zjx1HqAOq}ZZh$4%fGiAF_?$OQACpXk)3YPlzZIXWcU0o9pUA+8hHR0B$g?Bc{}LXc zY$}!IekdmzV1lj1FV9!Ko^N_QJEBG4X03u6SC)kuPSfrr!|QzA@CsXSqMX7FuSZGG z2K^1}u8E&&4pdB0CZS>q^|Jb#z!sp?ME-P)@ig(2#sxcs5=6}QN|1JG6B$~oTe#gd zI<%{5~(U^cf zOt8IPQ@WPFTN(B)ncl(lI;ymezgwukld1>v_LAs5tgk_QaAjR0RiDH`AWW_DnDL0( zIzAuv&GC6`vZC8sar+cSU@0AsM2us+E3MvAv-cuzsl{6=Os&NWFl?Tsk>cEG@v|y3 z5m!4K+UuWY;fW=^erD)xzge)F0jsm={qf-YoyI@(k(>|d%~4x6CfV6pPk<*YEpkyM z%Y$l1cp9T>QayE1lRlTnd;C%IdGsh6zlPSN)|Lcn=0_o04}MA>f3)&dNk-j*2421d zzTD)gkP4X$Q4%O-BV~#9=9?AUHXw{`Oe5J?w~E% zPFoV5ILPw295LGz~t>MNNO0u5^j6MKfxnksE^o09|=!_VAU; zB*bn){5d5V`+9Fdr1oU*Gko-7#G?`73?o*Om4hY4{#xK2!WYqqDTKzyge!;(q(}8k zMtI3&Uv4`ae?MLEMnY#Loh?J_;qDvDMC+NjPXpL=gy%eF@^E{n=C3EBeUoB3L5-Zdjn1 zT&xBmqHstthOHp}gE8#)ZipQAdk8TDV)tJUdjd~*bcSI^iD4H*6=n=O4}Jaeusu^~ z#Y{@9|C3ULXAVWnxi)+feFA%ktmX*K(2>tWGw>DgPGmp*fltGKCH4wOyQ>HO96+ql zqN1hdnvvQbwIErIR%fPQ0n#!@s=Kj`q9*5*Stj3DVK%4LMCBm*)pwxyM4}OUW{G(- zc|_#ry90&Jx%1fK28eCVo^4}nJG{7Pbq-U|eUoV%N;5aUBJ=}sqFK4tWl1$7Ss@K> zl)nTMvF%u8ceiEio8Ng1SI(Da`Eo2%K)g&V2C=ahpyD=!Y8c*R+PM=%b3h*ZbRqU% zLy_FC$@JN0*f@0-HMax!uf<@4lJ87^c4}Vm^!D&+@$n*yG&Ve4FeF7x!M z;1LzH5|B}%4auvpn#Lv{0Aj)^Ng;MQMx$LTwmChqHUeal4~!hjjxHTxe&*u z=Z7fmsJgWTBM)nX>htPG<@)H(PcTXK6ipLlfm3E6ED|CY$`-W@c@?`cn|tO&%w{P9 zZUEYt%?My?yPPx!Gr4X|YE6m0C-%Vb$VSf-jp}p_ z?p2HW6J4`}=$iF(x^@%j+HWh&b8m4tRT|4|ffjC6h0FV3fLUgSyH-fGme_N+(M-8&J z=fx0N1N+0z^!dNVXv^sgCep@k!7d=8R#dd;%yext_74%TFuL{{9-WP@&BVCE>DtUE zIHnL^7NTo65ncN&=$ij@x;9&M5JA_7eIvT_G`#b+;C%(6WG|nInkVX%L8!rhi zQ0z*0D(hkJluOue(Qx>*e=8b34WfR2kD$N`1c6YXW5!f&^~y0V?dO_uqiID9VheFs zkZ9MGh=&fx)Tu7`GjFVuV_mjp8Qvm$;B1nS@CVVT$d#VIE-y1SHdNJ*oDyOekqsGOx%sGDzG5$CB-b9pV42Wlc^GV_xS z2Qb}23@(wrw`!)bb=bZ58g?*9=$9?VGn@?b0C3x`RgNIX z8@+UrZ+gEV%X|4SRHbxDVJz=A;CpP1XJmPmt}IB2kbijR{AgIsCy4P1h8J0ih~f3) zYAXgCWOxCXim-#BX-34s@aaE|gJDsL;CDCvDReLxQq#3E##$Ua80H5Lh6VqtgCU4? z3K#eh({ebw6yplVxl14BI7eagu{vtAe3`Uy0L&_U?M~6!ZN=IR$jPBRXh)EiUFUnJ z0qi>8t0Pk%zLz|Z^z)*083L_=1-^v6;fUPGZ}@ocr*Gs(QJaL=e}%Eba-Yhws7x0} z^{pP{fp0jcp+;Uo}w zA~N=6L2#^>Q=QOQxUvSwNiH0ZF7IVIIe4Lbs~0SQ559#q?Z<_Rgq-la!D zYeWq#!9`d91u}WEOiDXva%m2Y#N%>uhY|axM~wJkl|vIF9wQKR;A|Q!IAWJKOQ7ZV z7%NE8L=7QG&qmrZB3r(~XgNgMo`svqe?{7E;-u}jMB3WUOxnQn21(odxY`;)+FqF! zByE4f*S@5!7SH|*(pEU+bkb%8xy z`;xX+2+@WpZ;-ZI@BaTz+HSzO!uR0~UXD4Zkv6_|r)cfAV(tD*(zY4&t^&Hd<>#}b zIeq!vZ)*gOHu^~~F7#eHhr0!Zwf&IwtdPb=vUT_w&dIC`)`aTCpqH6<0agZ08wZXE zjJJhtgX=^gTQZXtA{i7@s(KYwbUldwPgH%0g|oN1ti^fJsa+Hrm`>GhWgxo@-3uMk z7MhP%492%&3i?9TGjX!!P;GhZ99zTk@t`_0UDAe>D3>=SM>(bq6I}Bk;+m5{KiIBp z>S7dzGbfy^>uGWOaJ+vK#IIo|juLA=&eC~AA~FuuE*xX++zP9xNgh(0;Mp2=`3@Pk zwxZ5m@t+OEQF)tSC*L1=_5Jjb8XlnI6lcqMvZLLP<~thH%#-=f2#=@JGKOR zdsoGr^c)Lh?DlLmul~Xm6}4J!Q)l;}{n3|e^3ZyJGQL{zHCk(4VY_FY&$zV=n?q(v_&iS>+ZaoZf#eQ7(kU7cR929?-Euvr{^uA)wGp>4YMIf!%i< z-%wgT1P8vn-#YjMD!BnAmnE?(YHk$QnQ4DV09qpL=o;6r;Jkt4yz&gu?ZU`zi-X-> zOpUc=*{QLs!x}pXv6BzNg`{!V)#B6$(@yN%SqK7a(eCoSI0kEAQUgT73p?xiia?JE zy-Zb|JViWEe!%;vcQ|bKc-jLQTRrvWS2$>yn$v@VqpOa{=e`02h2IB0pm&Yd{^h$j zp!N6N+pAf8_x`NK`0njNCsw_W^J)iBANyoi%{iW?D7~X^wOB8Hnt5MpRE+3NMNz%K zFHqx(suS{solv`>w}JG@yKC~E101s~YH*1!jWeQ6!5@nnYV@}T5NIfc)!T8|k){t= zI6IqY^7-JLqkX7T(Gqs4fB zFvHA}(%DEIAO_$k^{}BV)JE0f?jC_)3I_pMT`tzk{9BaCRCjp3h=E?23i3iI9gl*_ zcQw+25;0#sv*ZOOiyAoSsF`K~zc>SasIHH>6%FhH{KiGX5BJOnKD-sc4?zs@qoy#L zS{3l*uMFVfGYCJ5y5-DQKMBnc&`eemF-NJo8ZWgAYvXA61XUVbI$(Bb+AEa0G2FXqS^@qG(mv;`K$mL4}gr&0RpOomXWm5 zdyba6`b)~mfp1CphR67ZG}gRTsP!-x>?|+lWu_%Lfl0vgSg_4~!L^f%({*|JKL{MY zS*F_PggW@?Z;g^(Gmp`ZK^%sj5znzPYUB8;#wh6p^O&XI!}(@gT8Vz-jyL>)5fPFy z-hq28gaafScmc?X1rBRSyyGixb;lonZBgwIX~TzV{pj6B@VDu)t(H_r)jq_BD>zWS zk1_?dsClVcEMR`_)Y@oiLp#D3?;5>(+WxQVzmKWC?#kAxPn0j!PqkEO!{t!i;#Kzk zHse*jVwqYw$)tRxnH!@`Q>iiB9L-Br8`8H@=-EZ18%i?%wSc_}f&NUxPbMapCP4Jg zn|lC*$02&hq{s-qcdXVAdOs~Y(yM)jJl*E3O!*_sH#FJ&|2SJ*9d1#R|KCm4n`}&U zbOV_=xDUZ*NYp~VOD0*^7%bqHJpfXd6Pv_JK3d*{sZ-%S08{NToqNWqC~b^(d82Z2 zP#VtX$AJ50&OlQuFs;hz>cTN8(ng!BI-u^C2TL0#N*i}WBOni)3Kd8KZ;j_xHz}>@ z*uRTP_IB~J3@}#fT`Dm`Sn(6HW_ik!O-^|j;4W<(LQ)7ZNi?2)6j?Lbq%fD~e3Lkh z_-~wn#SJ7S=fdF%_F}{r#u(wiX^U3kXv7+BLquT^>GdcF(ptS85%Zx2Q9BWP0gOMN zTRc}`pkB-@<$Ktolc1N+sN3s5{@S4JE+8xU#ETpQ%LkzmxP@hz%Z85|l~+Cs0fgY1kGfD@*i40L zmuwehWE))M(i_kM`c9UIk(i9u#z`B8V`=uKf2vqW8X0a;{>=wAfbQF#1AqgjAL4{v z&;SwUB=-4SjE+^00*eP>?+~ne2rn9=&V2%JtflAZ7_oBaAxeAX%4Lg= zAQNqG$eLK*pN&KT-C+K$=;0FdKzH?(PkD#`9*v7J+8zK1&7L-owksm$@x^_{JhDUc zm~XBaSZ2;jU1nu(h~k(|tLSVXRP}wP^T7GPJe_+`KU~DSNAxGAv&3962>nc4)}PHn zIek_-++Io2XSJWtO5(HHPO~bvn#u+OYSndRiRpB6z?d#=V zQ4Fxa;FTyx;Z82}bVVye;dfucBNyFilC4d#zrJ|*N{F=-7-TGchikm2KYf9ax*jc~ zgBPeh*YotyZ7NN^5JVv#qp+~)=nYR8SX<=0-7uPdt!^+?){iT#eClb_>VxNBe{(M{ zi|7X^>y3knO3huuPs%4qfd4?=-r(N?Ik7+haNF4cIQQ}h0M64P)95EnGiySC2@b#u z7e@fl1Pe=F04Dq*0Pn#hY_WM9fa~Bhjf^LQZ@@1Z*{A;_EN=~iC4J|xq%VNwIvtkO zG$8u|HR^hvUWUWe%GyVT!}MnU>&!5P(g1J0amb(<2G%L0bKqcog}}-aBYTeC;OXi` za$V^%+By9IWL){$PRTuOO=aiXVv~_9XxUIGv3QhAN+e|E34~5ek1|K$-q^v3L7t2% zvx6|;0H$N z6FZL@Al@3-9eXEkN4OBH7TMji@wpHFtDEroF+SJhvjv~H{cryipKG1!m1R?huEft) z(u3e4Y@W+oemL+k-P!*$8ieaMp27kOS4$`}zCEc1czAS+4iflI?cP@+3NfUJ|L?L1bBx8a1abh!a;?FOei zyEM9zq!d^ZEP3q1t96$`r48M2ACY)0JhVdOQmgc1!_b(@vzI^#WMOUlp%uU@C7wm$ z4HB0$1yv6?TNVmL`TCOo9iqIBdYr%sEMu=L#>o9MLWqLo#(VPE`vYm=;U3+LFl9iO zoxb8`-!uzgiEB>>L+ElN9}Af(L+G-}K$jL^2cZk01);}bLJxel;qzsDeu>W)L+EnE zXYWD>Erc##hocK2QP*kc@*>bBHw<0=XWgRv)A}QHA=C`@Md(7kGl4Fze{=?PDV%UN zbjiZoaCFI%4WOTnE`Pl8G<1oIK$oNABhclIy+L%@hc{v9f&f)G;4J)rgXw8K-s&q) zOU2g1ECdn({n;F`In2oSf{ScDp6k;B-Z*?ag*eLi=)y^Yj}yqYgO49)BHs=^+b0k` z@H!y#*gKqFM=CoG?LB_<77=5|85Z6@EEKWs!ui@lC)F4d9Z0&)QMxV7d;b`f&? zh;J~m*iYaSCJK8OKF#<%ITsAVjc`80q)0;P$s=th)@3B+U zn>9*@Nr$&u?{%iE*-|+-%G4Rya_2}K|Bm6e*HymW8;EJn!eC>!Jcoy>V|d2CsaZ43 z)O{8H<;B!kEDI#cmu z5mxN>y7ptZ0E3%B;(_^&y2Z62@F7OBf71YRBqGY|S{rUNT7l8!q;&nvRf5 z?lEi`_BBofuVcD0fGNQ;B%&eLl4E)aQv0wsNu@%~M3-<687Er?bR{0YsB=%zXb6oV zRM2@XTAB;cTo|u);XTIE#6^cK%?+0Ym!^r9M$I;pBBC9kqKK)r?FLiZdNFSaD^>65 ziZ4s3cwzO)z}?x8ulQqrVJR(7-dwg88Le=5);oNwDaPKKcPXk{XE$`9?pwX(U6A0^ z7PV>3B0x1z`Z&g)4zks?#`9%N%+~s@Xy5dhAJ(W{zMOZ|PuGBv`fh7aAiZhWez)me zTG4zw`V^1U^7fdn0RF zN9pgrm3T%-so)?joM^6jn~#p3<-~MTJ&lr98kLQj31_VtL_E6%VLx!o9y=A8<^vPiuc+a8pkmRQ&Xe#)DkWq@uZ2KJc8T7rWlbsJBzj$2-xJ8^-MS}JDVB&L zpf-e~UBGGYHDH*Cj5ygma>I|nueEq`8h%-Wq>k3J98t&#%jzzSz_R+g3@m$x&blB4 z`0f%cUNNTtpDROIZDcJ~)Y6i&Y~=&kZ^TQ`*+xI5g<$Q=iLJ$*8dem+)?WM@-Wf6q z=CP<7BVHvLufUC+8~N(^onnYFQz|Pa^=s5- z74al3YTO#N1s=({mSMOq+pf2zrSRt{seXtt5Bm^fRreOUC(p}gw+w-_*yN2Xw|eR( zdm6TR3fjTj;9Wpz&u35KwmS&F!;FfBF)f2WbWfg}Pct1asyRUX!sCM>Z=}MKJ+^TLR{t&kfKCtajXIS+15-{W>+wrn>8ZIL6 z>Mv3C$r05jhgW}qs+;xdNvJ*qSBD?^4Y(f-d}BHCu1dZ|#0#CZ8L8TaGH5E^mtyf2 z^k5Lw(thco(V>?1OTNMQ1)nYXKK480z2|4h`}z8w=S#yrbm@B@C(p-`ul^xkf%S;8 z_mIfXrMZuQ4kX`8)tgA3n1PE%74hYlAs*_g@z}HBMPEfx7>A9Tf5DwnQF9g5wD-9C z75S7s$N%atqu*c$k?L_BaI1(L0o*3`0{_7oznLNQ>LRXu6iZKwM6dMQ1bTfKP`COi z8I?LCMeO+8qn`SAAt!kD02!RpgR}5*sde>93!I3h2W`A)5cwQy+*Ud`K19r?qux2m z0}9%K8A+acs|OM6@PM`=LKVW@01Bjgn@%t6!;yL=P)J<&u=@e#Lake!t{ zS8Jc&0`7`JT>EKO#Pt!PLS6;c0@dl*B?ST zg48dd%yI?$1R3c0Srt21$6GD|vw^qjc#8vRMC7Z^TlgzFda#6afM5+t5y;#+?kckh zZyPz@DlLS!U44sQtK;rbU_EM9;G#3(E(PZ~N)RX1-E{n~S~7d#JaqS=uIQpGBA_KY zGEWUh<|{+U%$+RBY@}Nf&SNEL#66^l?@9HT*TRa${9sF12HkeQni0$Tu`DVyO8W$v zaY=mD1?~1V?pwjRNE>s11lN;*hzjK=+zE}2*h?E7(fDsM0j!-T-)H#$0T(kRE$4>9MifZs?CKlWT$XGTIv@ zR0989#bLpUvEC@}Tr(sOObusQiKlKNxBGgw;&Xs6Cz|_Hau=Z8a$FX?DOQYN^Wo(j zCe0SzED*WT|2X!b2W8HMx8%|m^1^_9d{5S@l(HT9YDu!~^RkOP-H8>Wq4t2HcetnP zoQiY6kKjAvS=cHP)i`{`*=k!gf*n6MqLYrBj7}yH*>YMvr=kk}4|(qcA7ynV{7*6& z7)aubG0~uj#FDhJ5Tzom6jFj3O|8@*A(_#D?7KB}X?0UG189LH9a4#7TDohuw%RV+ z)qQE#wsh-mL##NH1V~UZpkPK442b#+gBbouLPX~Mo_l8|69|a5zxVh1e17nmJomYO z&OP_sbI(2Z-22?K;_tm}{=P)-`lk_Klh=zFn|W~Mjo4h2Q1W)w?^g@Zn{(42vfSp` zcIrm=MXVzi4t&gN(+>Bi|NMoufK%_6dAOE0&9f>cyB6g-Q)4m)O#WdcCQD+N{2KM( zJ3jMw_L!&b%PhCEmkx9A#i3OG`fNdeMP}-!La>GYGf+t}4QZ(2~R@mm3=yup%`YZz*z_y{n2C zP$^3;uQ0?Chn+~cbD(PycG-w=Betca&U_#r0MF-}?8AO-!pO<)Yl~H{aSFdqdQHwH zy53yM9ebJbNlq6h!;F+1L~TD`y}bBAI9z)Ry7RKHqNF$7Y>J(#?+Fc^^&#m`(Aq|R zNXpD9Uy=69mFGX=;-Q&amwlz_<}b&f{L3g%zA*}v;{xS47q8n^%l(dFcV<)4mzzq$ z9LTq`2Z|ewH-920*)p-8We?wOSw~*2t6aHAH9GV?igK(0b3{52C`svl;MQ#IJF3l&(t7jaoFAd-6wQUcCty7xfr3)p8^=11+8f(OfhYi^Ey0h_Ll>?z~D z+)9ewbhPha)1zN{$kX^Ea*T|cMRGZD!Kcie<3{efWe++RgyW8e=V=;oN`cO{&)ibg z_!ZY4_J~uAk2q&c#>N{$`hQsa@zeQ@NfObBxs#XJ#Ls7d^Tj>^{QTGBx5@kg4%*$@sa@u8~vYXtR5jr^;@s z+Iq|QYvpg!wR(bAGYqGpnP18inc@dds+e0MQC6AdPu@+O$|831a;&&<6Q(RF&YUor z>0`!led;0G_^));qG4U-k9RA|p{qQknthUPQnpOTh* zRkh@+e76qzu}1jCgfriHMmwZw91$MbjyR1)yuO^-j@XvlhnT(Md;P<^6z(ia&)!2> z`lYk>P#)*7;P95)dVs}kx!sS-8`*OE5h-zdD6#67o>BeM^He{;e8a$Jha$G)_q7A@ z)n7fb`on0^k?L)6)ysJ_y?YbWGy2n{2V*A`jyNOz7koadXP~X2XWWjS@hW=8LrTwZ z#_1Vz;`EF;ae79=u%6)^S;=FuN*2hBHSfH7#+<)G&v;1b8FS+FjD(SxB*rk=#sJiM zhBx%+<2Q(wvF6f8AHP;qj9XERZ}Ei9E8g8QCWoW7{PoUZ`856>?^^>O{b}kg-Vc_1 zE3plg`n6luT)O3!1d^>kANZIHRpMj6>Yc;B%Gt3AI&$GzFw#lzegG6y5P~sS-Z|+q z8k)YD;B7@+Cq7|L;%jRz-ZCd){1&_@59=e3i9S;E5mP(%ZqY|(i9V8mK5{i8M(ZQ9 zL?4+I)kgv>P0rFs=FMa1%J!uw%M@pcC{C$w_$`|jmi2PFVea4+8P5`!7OpV+)p?Oi z-e5I%X<~v&pP8CBuY5ERAN~f-WbWX!6RZGt|GR){)NmsEZ%jJznot&pbd(UPD5WO; zp^MAGqyAFdHBH-Nyu&?YoSa>s#G=ua`aHMzaHlLce;c8xO~nUPM&tY2PlZnuA4+7l zLk&)FTb>u;OAJ9dEi;DeeS|HGdnU_mXs6gjkju7iVYz3p<#A6V*9@pLu3IpQM5gyo zh2-}{)_($$yI=WqNbX=u^&DtU97c0RJT2v8v&Q1p=z(maH5RYEl|v2FI%l|Zacte_ zUemaeJA|KWbU)qbew>?x8{JQ+i-jLU1O3ZIBL(MQ7DT4Y;EFL2Zh?JCV&j5m7s=7R z!W_;WRTYlo+)-8Gc&;<5Doo|NRrBu9zWMk_Ba3;r=VY?&k#Eyg;oPR{XJ#&MDtVQ! zOs&htE-^bN?+)$p&dv3X^EUnkvU$hZHgUP3Z>FCeV2d;KqQ{u*%9^}|i~YDxzhSfV z+pD49c(-pYUSpzLL%;IeyT;_*9{QIE(8iTdFI_)6z@#Nfq2GB1C%Z7A7r3rML43|L zc$4i%)glN7i&rIkd{52XYI|fc?@PvnelU6WlH}k+OfV79wjbWk%c!tztM4FbW}9vG zBFVDgS#>f3Ttbto3TK#>ea^G;xd}Bk@7(p_;^)5D7A{`DCLv@F<1a(#!^zPaj#-aF z1l#Ho;DNJkHP^d|H%Qy+dkF+@lDC!5!Te7*u6*2mT?q9x2F!IVbd{<$M^(%1NY7ET zs+L@9IMy4f^i3!o`ZtfSOF9rZwnydwcS%xE?$v6#?UXp#iS^aE;2p$LLb@b}F0rdF zu}KMQaGt2RbDv_1*%_3xDoe%&zs93+<+>0K0Cat>6CU5IRfSg5(*L5{^CO^_K12IM z|KnK+Cvm!0z&G6{{(W4}Q^|jNcX(Dl&0t;IXy@AwR-#KX9W#obTUx{IbCwm{6gj}D zIL?KXK+VwKVOy9Czm2yw`~W!@YNvjDI%O+rO!`hI=7zzh+h=supDg7>Q!R%RB9z!0 zvTU43RO8$yLN>{5d&Eh@V(Ev1>UxFZ^+I&p56i)Wi^%6bN2Mili`Q{=lFa>_oEtKn zJ;=P`C#H2GXJ^cPYGvX;x4C%3jJfOFW^-}ojJc1y&6A6>3Izq*kKbop6mAGn*JCFM zZt7$G?K!-7CI&uya6d=X%G81GO+{D9@xNzDnK3ur%|VB`?K9?*;h)LC=@|dYXU(21 zWuCsV4L*jkZT0tv|Bf%kyv5sHRX>ycwa<43litXafmX$SQ*F~M2pG0uHIRs*aIK9GVwvs#^zcvZ`E{&G<%=J8ed?`=Z9VI34H8()Qr5$amG;r<&Z|+^lR7VKMh9?}Dez zoeeu17d)|QLDTK2?VdJku#XS_S+T&h-0QjXz%%#t1a44#-Bh>iVlvh53x^X-^(Rf(3Ea~>D|d(8U-aC& zn>M}~#{c}iZ_-m7s0%~)t;Ksyb+?8tstOnHMRpXwDbi@Sxag{dGitK99D29#n0GGq zZ2_lbPCRVmfYtWU( zKNG*W&z)ZO6yEIQG^cI#52)31$ZGq2C0|LiF_Bj{kr63>+_u21+$wKUZk4C6w#qYD z+w`qmt9wCk#tM^ZZKS;Gx=&Nq5`5?TQd>%IdaiNQ!~QHsx8*2!TT@wXlJQGo?tGF; zUH4bj&&sV$bXg21afK#R|LmHAfYI&ew|{SEU?|WTIOZwbaI-X_VH0^;1X5FKHHS}w z&-1?Q1{#y%?Z`v2n3A#Py1&5JlhC}E`xXPCP;20DXp@mf&d?RVkv#6BSRJhQ1gD?F{hnD&8wr-+*9x{#B%upeWAY?t@Rg5&+#K`F)pFx z--wS5D?c^iNI@gO3@cEHE_b!FvAQ>MZH=;CZSx3p>JTEy^=;cRET#z^X@2}v; z2~D4!ew*3uj__j|*pH;&3*fK$vGff3g`a$@?^h3J$42xaa<*`m78yhzM`S-x5k$-c7_x~u4wzED>SzB-dWm|p$R>6KcTZb+IG1ciU8-z}C1Wy(E3xgog z=_z~;5t)F*8w^>v&(CCnc2EB5;rDt2ak5JQ{1yE24}3EFS?7Zc%0~EQ|H?D@rHL5L zFSm>M8Obw@n*LhXA|7ZVa{}+f7)N6K^DHHsQcYjXTHbOw8G^szUFWhIcR%l(NjHW5 zn`Ppq(>kNtlHIKfCsSC>{9O!_{#yBd+@{orTKAY_pu3w{+&u3&fOzHHs)1Raah)ApJ3MBZbm>VieNC4z78zF|?R?En+4HhGLBV z8nG?1_-#rp62!Z7uKrs06fM^Cw5+}|^fFiSf%)e~>RejdZy3@0G2lx_0yk=x4maSh z==o6QldPY~ZNDIIOO7I3sSxgGypPi3M|-F+9AT3+>9PB7Tgve&5RC9E&2Y!&YllTk;^QJcM^%2v}g zrOLLdm6wwnO`uq1YY!&!=5G#%$C@U!7MMOVn+l&dBRD;swBV@C*{N@`IBKg59JS5c zQ)MfA!?XWX{Xx@5QamkXLDwTvZ~3k&TYm0OySU~acmqdmjv8Dlud4{TNm3du1 zmg*$lv4v+FRUV?yfx|>>=4Gp=J%vYmTY-u>KY|#q0p?g@m2LBDW=(_#x=N34mEY6%r9R%5NJ#A}a?do870-cR-y=n&b%6)F?H;$PuFw6nl@f3?W06&5^Y$ zLT1S6Ji$-eF5#elI$Eo2A4oi?J3{<6Yr~qYz26MlLZLlEA!$`lGz-sms0DSmv{{~? zDNENIgbi5rLa%hFls|o{sy`h@%FifL;rzT(^>j*lfpkZe%}KhmpP!G)q|4|>$5GyC zlapR{90!5Thl$uu;6pH}+)7}F1ZY8JKfigGn~edkUe76A-X4 z!t;4+H8QD!AeEeoA_x=+m!GYXtUh%!eRzP1U!}ee;H=F)dd&&l9Xp_Js!6wnUT@u! z0Gy9Wpo6P@lykm8g%;^CO2F)8FO$$iLghXX+(U*=!jMzi;C!1zp>ZW#v4B{afm*LuG zl!e)oTa)>`$mE(sBe3p}$^oaEosw;bnCdW_9ZaYXh+g42XU`!h}yl^#^ve2y&CU5GSU(!up{%{?wab^E^*ek0Gy)!9p7u zu7cvpgkucBV+=w6L3{oF(?pYH%7S%I@Lixi_owUVI$PNeTRFH@AE89`NisOL0pmkT z4sHC;-+u9H)aWPTBqa~?e9dN0UH8<4<>Whf%(m!b^6gf$7Wt^k*~$+>GMeSZR`Is2 zQaU}jfC7l2>LUayKj0@doaVQcgw1XB2c;SHLs#FP!}vL*@UI?JEt1Y-h}8_FsCp~_}fJ4216{4@G__#2>OkQ1KmpKYcQy86Q^~E5KwPX$VVZ^YX}IRBCK;)L_QE*xsN0W>?Chx4?k$D<%6&fbXydPWO$9I zX#b|V>GB8gNYQGaWP?DJk_;Dafy5@$s@X!~y01KVm3q#0m8xg$vLc#WCr#hR0H-Dy z)72f|Vb6#otlgriT?tb-c0_^m^tUlQiQC$y5Q%HJJwvz6p4v_uZDn1yGJ1f49??Ih zJ}2FlmR+Qt@%l&pFDEP?p>BLiO=J_)5c&E^n#j~=1%rqtGL=f1f8sTftpGVw6Je%L zE6gD;&jPzDBbrEAMm5bCp1;zjXOgC+q)cfi`61SoCL-Dg)i_aX9ETvb(mp-}5t-AO znjJCq<0hLY6TwAZnJXwaZ;zL`y3C?!S5~-KR|tb2gd2%RI+ZsupLa|k`6I)}6yRV!;(grM62dIH|Cq6Q@qKCkWp z!PG1VVAQdg=23~};gG2k<)l*dw05W!uXfZdMCD+7<)?NjVUUlyl%LV3!+HHY6=a#Y zog~Rn6$07!3UbW0+jtj39V3j$R*Ht`7Y@`fhrg}hv{EJ#^;9FoE`dVGE= zog;%ZiU6uZ90u8f!TD4PkqP)O6(#X#MO8!i|c$XX*$vL4-+K zYGkBmNc(uVtl=3!6kVFWC|CLP3IsjWKB(Yr?lRZ!7mdTi3_jFH;6apg2Qsc)m}pRG z3COAJE+6tmq>w%1b%Gn;_|wAK5k+D0HmxcoZ$pu>J@zDRCffyR3TywOHHEcct2G5m zG6C8}ipkvgA>xlY#$MP>r6M^AD>Z@igNSLFYmP=IKG6@D^3|kx8r6V2Xr0vu7U-~O z0_|J7iGEOo6kzpQYb!a}gK=Lto44v_m* zDir}Ox`ND#lt8c4>cCmEzqFY=M{W6qKHVs3s8Rv|an|fl6$QHSdh!=ikzY;zqH6S| z$Q#-eg+E}8;bU<75-7zOQ))n^&_U)nnX{#Bhiv7W+dM<2m5XK4GL0c$}D6RWN`;PJ%W zyfr~I9{_@F$i(_f!XQ9rjY?vvkP3v%_G5&Z#O+MPY9j9=9)@we&l5zP8PWjY_AVe| z9|H4iN+NdG)K{w@Atq>V_&F+RZy+wT>lMz9rIE@R#EaTLpYk-47&t z5OQ}z?n=>sL>rP0r1h16SDFxGzr0O`(eT)>o6WUp6C%37^=Ih@KutZMsgSK}wP&>R zuIKjGY~`&neLy;}u0j+G1udt>O5rZh=I7{$XaU*zF9{hcP@B`HPgUWx!c6sK_U}I5{Qtfw`WjR41k>E^yW!<9h6Is3&CKo1+@R6PE8!VkfDM|>g6j3V3>wXK znuMpQFzCSH70l~`QiT`?WJ>Vy>jJ(^mCS^dOrv7ZaAXt#lr-X<-MoLuQ>1xbsg9TB z-EMwNO!W6Gx4zsMBI`bm96$);=LmkyXSvsdF*gOj&uw=b?5`09J=^zYj z=V^XB2!G7;4W6yk(a$7TKh%Gd$y9S$45nwu4hkJLGIe*tDrw(RRS~f0Zc59rY8bXjkwH-MymFoBY+M0_I@-ks}3AgFG(7*d@lUrpCiqd0mC)Ni?q^lKno?c~2mlsrH zQz$gCWm{#tgu5PXkL*m8@MgbR4_3e`Q{FGfe zB-955#6Xv)FTvblhF9{Zys}vJS_K4hph4KtLo?pzyf-v}SM1at<6+^`C=VYeoM8Zx zbmE1N6%PyFW)JFk;pbr}WAuTo1+5+9$vaDU}bd|!|Fq2&@XJSed^$pXISkfG+5p;QX4AR<Zxljl1WF`ckZ0j2nmbaMT1YYt?yg(t? zHm%T37){4DU4~YvdB@}~gfHX3_Q4uVE2N*<=~VS2P}^r=370IkQK{d$k;YOD?R!Y&m~o4!FkYmR2BiEwilN(<~= z(J7PXAPj^8EGC|z!OsaB{9Fya*WcV&S`-t3uVc7VVz9jvzNi_!j(GKQCuQL+XRY0eC?h&=H#XI?Yeqcdg)Aek>SHIp6zGx}D^6q%P8fHGjk zJa(6lIjAmMP^|^GWz%V7MhB31=Dn<*qR2YYq(p_VW71LY@9-1_Q%pTu1;j)FQFjm1 z*cI$(iVbm6eqQV6-=OUEs*;CbfrOfXc zIXWNIP4BF4wJ*(*(tV!&V4h!KC$Y)W2ZsLr7Bj1VnYV@V&eR(;3}y}caw~;>1Z0)G zpG*d8a5Cpl??0fBI7NJqju+xrGF#=_d7=Q>9hqQ-w60_e#`!v#u&6sFGb33H^^O9Q z#xRHQ^gaLzAPP$VJE++y>JBwH-X;U8jQu_<&}6X=I*t-MIYa_e#KGh#%9ewA9ovz% zEcb*79Q(khy{&fQFgYQ=8BnREx|JPdQ1)h@p8Ay#aZU2Jdk*Dz4)iy2j& z!6iK?dr-37<&fD^IxcTLd3hE*p`J=J6dF(8pyLbI>3H%w^497w{p2W!ga-+~%a833 zJ00tE&;?GJ4||EEbMISa$ z7cZo>M@Y*$Li9G~NVVaUYCkA#&!28mPto9b%gE8O*;Cb%;lgNP%k#&K^2uEVYiF5E z$udn*v(59bO4`Ymkg!KS+ZUBQopeTiUXd#AWSry|l&Y|>_^LrJL)$mozc0x@IK~Uh zR??dMpDfmy`v?O}u`wb`NG(cr2HMd-PVa+^Rkl5+CETyVuM@5rxP}7gU=9k({y>Hl z^4GVnVsfk>TEVG|Wpce1(4+&!pqch$fbZhPCy~9Xew&Fepwn{$Q*ymsI|e6%(LYY_ zQqbQzYGH52gbeBy2D%>b$Ld=nQHwrRL=mc`;r{PF{Rl&oH%2x>tuah0LP_Gx2x-P;((%b4E8gtC{t}M_tuK9p5H;6L@Nuhd%lCxzEh{5v6 zzM2oA^s0Sczea<^WA!KRc=q=R$9OSZO z(qy5XB_|SKy$;PKCQD)%Y@!VTKQg)uJ@#sL(V)$*5TBnqRgo<}d#!%v73t^nQuQo@ zo66}@M;`^+O?mzBGo{ve-An*>09`oZ6-F=_Z`fr^0Fr z7$VCRO z?o4z8_(Dsh)OD(c)(#rJ*)NzaEAyNTyS`n2^0bU@_i)ass?Pk3wYqMh9fQ8LOG>s% zNmq2#bdckWk)p?tDvOqcAV{Sr~<-x>|L0^zer zjbgP^t6Q)NSR-|8wV%5^Iz%soOLB%(e`ie9&+N7OnOCHr(@WL!T--7>thpuUqqDe0 zruy@9%O5`txAbXz6u0!N@JMbkfkBL0bh_pijsLm0CBv>T7ad1-3*tFPO%T5Ga1W5- zfeYZCD2+936)n%jJ-|E%_o&(;+!M)_xN94U~NTBn|S82OwO zQsI9bg!R#kMH1BXBfrXInq<(W6%?6Oq3I?1nNiBq+qF>?Yca&v(e24Q5Sj#Ro=14w zID58|&J3%x>}t#9%RPOy9$!M97-h{qvybRziKeF4?NzoRs(kRkSY-SGQtB21o}Nef zRB9}?6*1j0BIFe5E^7{D_firb89Wq`eK3F z5r%noRS8QZxwMqe%S@51c8Hvo+Mg^<*Tf%G;d2mvgT`@svwmjycwRW+`^Jq*c!?gJ z@Lhn1kmn`5iFW*Tgtr1=m$FpeO{4%O6tg2X6E&80Z8gew+Q&d1$IRE;FsrJj4x5zgllXrN6 zcD}w7g$HeS6E@3@1Whfq%$?{AsHPt=7;3sOmcL8cv{Y-c(9!-Dk#YuY^H#EzlTK-dsIJAS+`f+LfH&vv-q~`PRt_&nYX>E}m>y+S#wGl;MY< z)h0EpM?}e*6CDG+kSf7tw?wjLvCBe+-FI1#Rvtx{2rC1qHiCIhV)xP;g9TzgG`F^_ zD^e?o>Jcl6e9T@H2UO+j)RCv_C=(lo#IbUy*x9m}k}ULh%1V>TpXfB%9o23Gd_ZO;>?D5Fxf7{lOw=IQr0v zd}dr8)Oz;S)%)wnjH<%oLiV96+eFxDftUZpIzUs!^ghLZvR5sq&8oMFJflEGxTWqz z1(VqJAuxBS_L&q7AK;{blf&=)MSHC|f_<{O^Jc&m_G<<>NR_NT9hOYO*n}Pbu(}&7+8oG`mZo8@1e(F(K$}fKFj{j?;VI zgwNHvGu!I#(1k*sCJSsf@Me9hj13B?CDCgekLg7cT~)Iq9kCCr56}h=^E^hQm%_Yn zw0gJc%^|idC~Wim8c=FT6o#qD*6?%2Rt!5RvXQG`iFiO5AXOt?Z?^&D9?$P{%a zt)a_AHepv*NX5&jGiAhi#8d6pl1#yexJ5|rRbxi01-$#;WJ!x96KN&2P4@3go#bZ$ z!tM=<(*q2mntpIeOVz?sP7^9FS+uQ9Wfi5rLC%U3E3FfLiO^1t3zT7HT1v0JA zq4}!5+reKYULk!Qg~bH@6mi4->;6X|Y3uwa^sR8t8U3m_#Kq8v2_t3oi)iy8nr0Dx z&<0)(9!q$X%(m5D>Br%gDSX5*u8#B`diWe*EVc_Yeee=0YDIphCVFzK;sl}F zYPow}L1(WG6zG3NKgD1aXMGM244T}xM>#?*Nc(5oR$oK4qLK8!=)RV!;wjGJS5e#_ z878ko)<`ANhi7(BEc-C&Z4K)vL-(|rfekjQx%Ee+y5t?OiEXuPPYE>_kgGjvuba)9 zW|rVQjIQFdkh?3BZ11ci(;-wJEEBpP}l)Bsd@uFZDnp9{?JQcS6 zXjwEr z>gmfd!%*yA$_#-J8H9k$2JD6W?Pmjq|4DjsfMN6iWL`?o9b@gU=Ld$iSa^|FvM;q1 zra!iyd5($4F0Ek2AX`uE1Lk{(l^C(4wRujPY9}nBD+FJDD44Q*mpRI@rA;TO2uakD zk$$@Y{s0e|{CprK)1Eq1RMFY|L0FMOc**WZlDNi`A+kxUs}l2P^}d^#{N5er*HM*< zAN=P)I1Fc)>K?p=vh|(1J0B30t-nCVjvAbsUyqzzsz0bX8JRFmAIg$}-EgZc`S0Nm zihkko+t9w%Cm99J1kv}IbXK&G9dLSZ*h$|F-LXFp_4 zBeG4jBPrF~H7Ba}O>V6}xcF=FR^vhR3A8gGnUOBlrv)6kW`1Fvs@Ex|n z&#gXmbIXeuu~6C8@jzvhhhE0nJOOkCthYnBr~>`0&5OT&`SSWs=}gc5eluEn`w_FU z?#OD=`98n5(VtjRI^{?q`lS;+OP$G+@u0T2Xa&YZA;t!U$ST>-K#N?H0SURmlw3=RQGDN8($4KnsVVtRcwGQBE!t5>)- z&kgWGbi!4ar9@DRM=M@wvS_?(x~|u?q-A%jhMZN4KcN=LYUWmTnI62ZW%i3GI*)Px zhG;O+MKa^4c9|vk6A*!z3~fHcqIK(xTSssdD{?eDxXAXD0dg*#!)H%i9DQQE4-bFc=X6JWi)?zYU8yqed!eQnC3eJ9vLHf9vDprVbblS&MPDh!c6g?BeSt;| zs}su92$d{{z>OJ8C}uez;St$vt3`c^AsPojyP%GxD8n<$(ADoLMMHt>SItJz5G((% z>PkBw5rd7W!gA7_)*mJCqELRS2-U9>*B4cE>t@%aE5(GKRNruLv~SU&P+_EIK1Y>1 zO;SAH%1zm8`#qYBr#(yBA~ct_v?t`%!9s;~vr!qwMoa1T_DLQxBl$?cY|_b#+Q4FC zSc4GF<1)dA6&@M($Iz->CS+mHBnMg8B)biTrar!#{n4)oA{vmJ{vk{JnD@5s7@FM5 z=AGKO@%JTZArO%OhymH&{uD9*S-@N&`)OEm)HYb5w6uon-|P=61a_cUm*Yv`iPyZ zpX!H1qAs-$tFAT7PoXu`%K)h7<381qksa94_q!L*S5pTzd3(lvDm=X3U8>&oes_`1 z$3jf@yG-M{IG>{x*`g9Xv`WO?({{#Eo zQ>r)>Usd>VihCTaVX31oW;}a#wML+u35}mKd$}YC(?peNx@@$~Z&TYSo8N1qh0n41 z-B%%^POR$e8L9Bd&2K}+Ri?_5Ja5a~18HKL-_nB~z4^UfWzn18>j*bl)>8Q=Z+>@> zmv$F4tLO0McbASY^yzpect_p_9TxqsAQB!VEHIL{95rSXIR9>Y27cVBz2Xtnl{BFWN zu)cv`Nsi9pSX{~*DocJzwT@9)z%jq1D3V1|S=6h8fs}WyS*ygW9B-75bsdaNb+8aU zSDm(#Cz`v1)q(obL+q2R7VOQsT*gk)nx6m$M8P8HXkMeja;R0Tg!V#dJ!x=&eeHTx zR~ZKnod@}CSf}zgWsgiAGupJgi!^)AYDpmEy*drp%hz z%T*-|OD-0h{3EyIS z;zaG1{uImeTWqq^kFi1Dud2P^LBIaR(FVP~!)XskFZjuoY*w?+ z=J_F9B_H5jBzCTgT;{ze+x$jWU2`=b^PAlAN=~lR5Rv`uLiJe8agi)yvr=cH+vkOk zalhluxj7u_$RRdU<>i7{*Ja(QbwCMpMxW%!0$_LQ>PWPHMxrU3lnhoQD|H{efZALa zYs{_#M!MNo^Tm){s6yz$9Bx?Y4*0rL*HGmiY@E{mK~LZBB-UMHo* zB?UT1mR=MoEoGy{ZX-^;Qx9>*S0iBJ<31mkhYNOM*jz+BbqGG&;_=b-8XvHxP{}EA z$$@POr#L7b(QG*pyduTL(U5M8E+N=G70ruUOdEtYof5x#WZrGVI4+TtZ3@SiM&PLM zFuoB@P6-Sr2VPQ;)KUCZ`03lLId+9OIzWMYF|l)Wz>p@x%2Bj%Crj!#KVq@v}zeeR&wi&q>P5 z3ddJQ;HdC0%+chOz;JTl6@_CQlpbv88j8YaR<3S_(XQfSIKC{nY>4I^#!uLzDQ(Y(Vr zs`%rWBjWOIAI9-bN!hM&e02nl3J>G?XmUzmI63gD!Z8lYp~uPJ62_Pd*lLr3Oea{>+-l(V8UJ zw;d8mLS(w}Ya;hd$(3Q8B8lA`+>@ukN&!~C9IE6(v|(6stk3w4f@O`tA~M}59|6m1 z>QS()rqUQ5Z%J7>%pZ>jk?F?eBg#^Ltjr!M^AUn9z6_D+#=9a3<8c3k_HR1_hHC$R zp8=zr%Q`Qh{o;Pj(RxPv#VgJ*KD1xKI;;IRo`HvIf5C{dXSH7h`C08hiEJCLk1}y= zl8*B&*u>GMA|s3v#sI7%=g*^mFP(1UsMc@fkFCLjuI4wAJ$<&i=Es->S!c@)-jWSA z2n!o3SDFi%ZwP!hS1xqb$PL#bbl;dej@V+z> z0cB%I?ryBqH3s$xj)8sMJA`3rsynfJU!b!m^)E`t;gq5KfWXxlkvD5kLAxXka#xg; z{BG{`x)rXAxT$lz!c^i12U^jtOs?|Y6}htpT7hhGO^o4hA}xx4PwKM*5I|r$OB5cd zCeWE@x(Q3#p{&65x%C)W!hbQD#-U>ca&xg*Iq!C~-RU_bcx56BrtPHc7<9mJt!uo| z3uAfOr{2{DcL6KYo0OYON!LSq;wKh)u`Lm7aw(P@rKU7Sx+_Q9hBnc~%Q8LN5_(df z20^JQ5}K78%83<@G({Ee?T+OD7PDX!kpOBJ_>}(tg>T#bKg+itegfZq_-?Pg}uf0?wzqW zoiN93>0Qtt8jECD(2sQ7*0Zo*vfTV|dUd56T4okuCtiXT_UB{lLIYezUNRTw>?s;T`qm3a*E>yY{|vJ zE;_qV6xo#&#AQaL;6Hvs!L;DdC>Y6nqs|OsC)#pc7njdBethMru%P7(%F$jz=fuDs znzvEDN}IH!YG#+)Hc*@*H_5rPJS(~2`_f4#t7ZE1rFn=tassHBMu#l)29{7{h8s~X~pS{(qn@W z|BWMZaR>Uqj%ge(lAHrw)9@vrvx-L?(GfK(+M;>oonZ;91tRYkHw^VOi~-S<{sZ$L)D1Wo4(N-%(g<+5@qkQ91ln4|v#bnu4S z+g;LFoU*4lrM!aCVJx6lPkTC*M%=xjSO*TzFYjG=e8iwGAfI>TMcxHgCj@nFRHJ%p z)g*t_OusAHTYRYwx?RnRy9Qx`=M@i)Ygm}#o`6Hh3@`lEUp4cHdq%^;beuH{Z(V~k zA?iK{cP;rmZC<0=oEz+CV8flZ)!S5{-?rLMKnWfo1bi~sVg$Jiu^^zk4c8SiG^`Ab zKaf3en2aGUI<5-fW8gTECM|E~fYZH$rVtJw28pc0>JyPesj=YqFO3H0xUU`#W;N{W z4d70vH_-GjH?=mdJPsSW?}XBWq1&U`EDy)v%y9{vHwBM5?%cfrE$$|U#`FgGk4N2< zriT;o4WZ$TFADvSie8Ba^Fj8=4%(|4cDNVl`#X~w!mitTi}5p}Bp!q2FHnq(2%>lq zlcMN|*TGYx4P;227F>&puGUI!0h%nqu=|@0VfRS*m2vQgW#6+4)G#?W{ELI)Iulon zr;N8INT(c!-Ls{aM7G39h9#dj9-coe7^=|6#>)u96$oR@_EW#tFDAY5T9ElA(tR;k z;NluJjUDN{P!t zk%etb5<`hgk{k=$n#GaSLN3>;gZmnGdOO_NN@n5}0S>mBTo);y7kz6jWFTYUaL+=k z;xDiNVddM?)7R$_kdiM?e3)27$6hEcNNVt{xWqF!w)UdQV85JA$g!);OD1v-NFhgg#j;dZeZiQd6yo~e2UKcXaC*_KQ(cP=qI zUh8{pKM_fjy6`fZklfXHu_DJ@Xr59&ZKrsWym4HG-E%S(SL(JOr-7Vp^$?9|=(Ig{ zH*cPkV{Jd`AOg=!w$*ZC)N^v2>wn=($8{49oN$_SGR4;LC5i8QKiS`iL-yhnZ&A9} z+Gz6@B{klf6iio%Ay3En;Z#%O*x)IF+86Y6SYz>3UL32A4ayM#Pv3y2H24$#G+q{z zTbDe2?|3?ra5$O*Y~>F9-(XCJi??4082SfK-@X_=0aIXNsKOJx$Tj=xuE}3_<$N8F zQ^AYeH+%X{lPNSyLnEmAA@qW$??X>VdT2~6UZ_!>9(vl-_qL}aF$TET)H^XIa~;F( zxyrq6E1i;pE1B=lZ(3w+T)7@6zN~APm~rBRPwgu~mKd*`i)D$-(Kt?8%QPm2l4%{Z zBRqF~<2RGs9p4F$uV`A7)l~fK{8D4rA8_|)bxbZ!fpbcmZvILZu%`a$qc9HMo}D~U z>e=$$a$^ITn91)BeQo6|?>806lS}-4$Vp1fG(a8EronJxzP4<#z7JJ`%1OWElLj3XF4I?-?AAQ@z1tTf}d_knHp(;Nf>rkiL0Q*b!myM;nzBAeMyq37$z0)s4?D>B$N{7Pxk#` zbn$&^tzVoJZs9~gO)MSJOL`IMS3z97-&&0>&Bvi{3O2yG7?c|A-mfP$mL!E{c#Krn z7fM_iB`$M`d$Oc2Psf9<;(7edN1D)^(3=@bjlBjE0_bOoI&fxs!-J~H=J0d)1|MSPF;}i!|M-8XKOBRZ(N=0(=9FJx_2LL!L zp6!XDWY4=Fd$!{T&hzdmRi2{AHHu0R#F;8`ndjZNLl=48eb2K!332mo$g|z5bF&le z?H}0b*>CqBwhZi^7QS`TK=SUU>rDf@J?~nRcYFKg7E-REN!)Q*qLPw#CwI|62Xhq@ zL|LvwWNji2*7n<%SQky&lHBUuF=;nZD)0t-kDh%=$vYrYbveny0Id%TtJ+py zslvjqhz=E2Oq)_47Ou55TtU~B8WWXW6Deq0{XV1M&Ze7lzlD7MHqlE=ycF?b=LH;A z=gPd>v?90inP-ryo{j`m0()xJGwxL8sI8bM;Z74wpr#giH?gLyUul(k8D$$tbter} z=BA6a89Ug`fscCwn6YkFaNHRx3Oitc^;Y1i+;sx&5{YCHk;4)wr&mYr*$-l+rQx#N zsoL?at>I!C!$Qf@D@yv3*MUd9P^@u|T5r`}q5JaGSMZ}D;O0=-^GNf0HKIjT7f7=Q3G|KZCfbxi6P zOVV$NnaL{f*Fr4+_ zt7G6x+;?MfPG?W?@xa2tK=Gi0Y^v??g?_CgLU*=^jp3>V)~gnz%^3 zX1_bNVL^(^N+sQMQ$l0pSxhEMy2ncv3o)UK$;VrYyrqQ9RDy%@-lPu3Xi~^RU~lW! zdpa9BYmfJunr;m5ZS76k-Qer)Ts5XAX-i4ycyFL*34$PY;>z4%gRRQ0osn=vJ-`m;TRgkq@ObSVNElGA74YWnsqk0ObQe@K_ zGBrE+gZTwhOV8ZFn9Xd7T6Y_GkHWBJ>F@^+IUa#DXfTlJA=OfVx;jM`zh zfX^A|boTgIThHw8VF3n3?>+7w*Bb~nNM&+lgK<}UDshJU)ZT6ELb+4+?svb(PS||` zU(+qQGq-ei1`g8>O0KfMdH*TT{VFfx{77woZ@{zV^qcov8{MZQqIbcefFbb6(|v63 ze$2-UkGqoTCe@S2L+{R`IYQh6$i$wxhkD%DBw(KV#GI|I+1HQ5RKe`%bg~VpjTGn< zltH#$wHTuZP>a}dZ{uwO@OMK2)2g@_pFnZ4%a3%2GI#`4O=inh6WOaIX z7#Sd^hL(~-GX&MtlITcLaZbf7{XNBlpK4tGg~?;|artXf&N(ihUpt(r4CCXUkO+h7 z6|}Qh^O~Ql^eA7RErHIa(@qr??vx(G9trM<3Pk|NKS>S!oAPm07ciO)$k*ex z?hVEhN;Uw5q<7(o*zgZY0Su4*@f3?2%%e-PM=2Je*cpSlS^~RZ>X(I;hTvB>1B4Ak&&TL~iI-QLR?X_4c zLl{u^6yrnMK7%cr&hBlDWMrQjWJtRe`+B?CXcLin2=l%tPkB`}G6z2j|GNY+%Xyi+ z#4I++QbL4^#fMbPpU_6x=eTfxX10bk6bNyH(JJ6_;4)(|X!DeVwVVc3AI_}eKx~<% zP9+R+F88%> z@9Un{bOKg>NsahytyEhXc9lJf!7&aH%PHPg|CmC#WokuU;dSU{wHpM7QgGm~B*?|8 z>9wpSlG<9cs|k!DTef5)OJxL;$X^+;ya48iSxD+*NhTk zD_mENw#ATvJiCX_5Rhk~5>;|ZhVc|;U=*RySJaTsfG}GE(#Jma9NEY7 zu>snr?V0(Jd!lj6kB7qZ<=6yD<3xhu0#IFa4?^JVEwo)^ICBf_;V3S~&)_|^g?5ABnkTqk zgUFG6uHlWKqD2y|Mx5xso!l(l%8$Q!{15|7`P3_52JiaLSe?j4&8yrXWVe|d> z|4h;0-Lw0^#0yd9vM5Mt@U2X3f%0{eyJl`%@lYtag*m-eUTVjg{e`CS>hNRj8 zl_{(2ZDc8%bAm!vF1?{?IDu{9WdP9o$+_|S$qt2D3ZUX~4{a$lv-Vt>+mpJSZNf8B zV^GtAR|!cxZZu062ygak(ZXnu8YZlmmiV#fx{~}Xuw#^=K~Q3_3UOimRb7MFl@Et zP(Sm>W}k^zKd{?dJ`l;kr~V=|m=F|j&LyeKYGU(&1gxIcOqmiq2dy$I+%gXq#9$;E zVpIq+2%sW1QJ4VSxH1!zOzLuPHE;2KIo^EbLsh$a%5~b@@=cgC`G}KG;}mW;kU5qA ziLO|R)<}&JS1d)epQ`xiz`^Gp=XVO%yjG!Fu%0J*`RwGJPT@AFEb>)?)6W3ra|ii& zAjBsyc}1}#x!PnDzi@zV*Ea(R>6wn=Jj4|+ZmIVFs)snC7l_Ko5qw7^UqEONaiyvu zjw8Iw7cG3_$K}16G=02t!AqJ&NX8c!?@6x;P52@wYgdHk+X2Q0(%MT4L?X!7tLmO? zzVrA@PU4_5cl^kuN>S3qyNeU+R^+3p={|*wb{E&B!uff9>M7qCa?wYeLpdnvZ}}=o=aOn7+?1kQbGxca3pLf+_`XAIj^>bVv7#kco2sXF zNJq!Fj#3`~36abtJkOCy-6F81r5~{zyp35dDqH1Q_wYp)_r+D-UsjS(_iAF@d#C?2 zJCs!Q{On7r8h^Qn$iVO9@AHqzV)32EpMIB@CwpI5%wtPKHGfS{KHBtmJiGRFo$T^I z>d&>kVcX=Z-Ekx1WuR;iu>1*le5eXF{P9vh+gRR1c$V&kO&H*6jJ6{5{d|5Bx21S#?v#w&`a= zk7YIFXk$q?O6GBq%%QQ7+) z*cGWwbeRM9ThCaJh#%t~4m=0?0{sDFuV1!E)K}fyQy|m+w%RIqe+;L2$Fy<0m@^+^ zlxOI+9!n{*NO^5;V-GrS_)`OOZ=%F_4vkNh^T=#%jN#Qg-u84yvVUJP?@5g*xt#Cx zw2zms)=Z?zYFIvfh<>h+pd#8L?rY6~DY>0{-jWxUqx^e$- zCB2pv5CFQ#Zj^6a z?YnMdt;3G&?l`M+Hg7eHn$x8SP#wCNmuz{VQ>b=C2MM>y6+U#W+`ue82JLb~pm??Q z@y<<&mAClK3o0e=u?!7=U{jO=?+q? z7aUt!j)*GcVrn0bSHnbZvgMwU^Lp|d$)sn<-&xW1DQi{EBSr=bJW!UgR^fbYM)Pkk zUv7K!hwLQVJPY_+WxF0pdDa`2lBGinNW{Nu<5Y!G>=*U|0t3wHZEMYqEPS9Xxwd<*(=_S>j>= zb)`qL#V4wWNW-%06zS#0u4~#J&Jd*ur?-*ZNt@S^+SU?+5O6L(G5OdkP*FJ-fFXNXaPap$H_=*9i`w z_V#uM`;JTAM_&n0<5u5B(NFOXHEarQv%*2IFO*8}y67)8J2gxL;N7Xt<;Ir_!EB)#7Ws&vp5% zuT<)EfvdjG zNcOp|kdxxBn?ldW$4k`I(0UC)wANmW0YAnowcWgnQd@I_STXP&A1eoBJN+T^x3t^C0= z&-5;Qv`ICnNiAXLmudiy-gFVPC^f!$qtKi)tG&gK1}~=kaF<4UB|HC zbifbL-su35@$JXwbN=R{DsOl6^A-1%RrN37NvUxmr*Kld3$3=NyOSG>hZ+~2*mM7h zkQvi*r0n_Zmt2xG@_s7$td?0RwdhYuP>Q;lQKG{7ek$Ix7pr%DKUJyD#}qM&Kc=Z9 zHd##nIm-Q1_h}fYFlpzxpGpH4eS*tx#ZQw`nYd?F`(vW;C;MZ{(Li#Tw5FQ~3m`NX zu8tbT9}^Hir9UP$amyu%mwap3YF9g1OwyXPay_w92+~s5>PACU95lvEe8K-<&^3MC zB=SPbu(0tITrqx+>-&Znh4%(S-;^cWo`QbF(cZvFp*6?-E#rQj{qBIzkYmY#P9;$G z2KOF`m<+-zKCn zvlQ0;{>G$lZ>M0k0$-(l`ohIcgoky&q zqc}}co9l{10QQ$Be*lf;E}yjCdKsY-e+&sm3U$o!1smzHP}I7aM2+dw$XvBD@<$) zyicAp^qV>Eoq?!CNR$FgWTcPpbkA=K910~$5ng^zp5Oyg?W+(@AQO2Jd)R{s?lBP! zC{l}-6_W5i2|>;pyn{kiKv^Dwoa0Os65O^ZrXxTl1qTkE-3+rJ_lIZ!5g7=z zTvO;sx#y6}dz`noi+0OJ$^;I!OP`a~4lu#}G_+llx;EC)+$M$Sqyl!|KnhMl5 z(Rn>tt<#A9N7J`*O`Zj&Ih3J1YJ)H}DlSTe0ezbFbf)y<$0}j*}GIZh&P!ujUi-{vGqgp+q4m#o;bD(yN z<~*otn=oD4lm-bzoCo!7AKiJ-9%_}(`p)A#sG0g%7rccWj&mL)*r`jV~AaB=_-Jj zynb^|NFe`BoCitukn_Tv2VF)NUV!tU127>gG;WmC&VzIvpT&95)Q?otF^La54=Pe| z7vMZ-AJ~p`8bmMjMOJ#*rK;g_iGF1?j8%T5GoezdV*F2EtMg(lKg*dA_9&oo4Q!k< zp$#hgxt$5EBb`DR-PPt0CO4VvKaDdXN^jO{0kw(5D;BjgCPMAsCA&@`b77u^vRJ)w zDf!>jv(Uf8&cm0o+ZrBY;4w%wc9{6$uXaz>$i{gV>QmUC;eqBno`n{x{91MdKYvOY z)Ro;kjm0AVL%n2sb=|Xlum=)HJ2q*4{3+i*0RdZ#TPW zt+iIvy0bBX0Y$5Y0V63!VY1#G&my zFyT4qZKu}vg*L*AUu}gLhe!USr-eR1WIp-gd-W>Nik=oCnO$oGoAiISac}#yP(K$2 z59RwJc(6tk4_mU6WZWW(vU)07O{xm-T^`Am)kCB(jFfYj0rqacfZ5ft7M>Dy(12L! zZ~K@~6;@9~Y=1x^ryujB5uAN+dpIiZNR-g<9wt34)P|OjPDzgjwNgp?b{v`VCy3A= zrLNo=_(-vT2x56YDP-)%>D9)s+=uR- z_#GoMgIu^Br`pZQ<;J%Kk<_^cU>4 z>Gt3abCn;h*qoTRlLdI*%Y1!cDhCHd}Z)_dFX$8wE!id*;#slNM0ZQ=mjDyD_Bx){{qnlkQ?a!2TKUv zLV&9A|M&|;DGM+z=!p9$iU;mkdT9vVPFB9ZJro3o*q#(Ls4%LwhfxF2s|w!4q2Aax zfQ@4zjF(`?(bTOl?SoXl71K7jZo-5yL zLyutcBnOJJ%R!m}aqj)+9zME=3*YFYkcX*nc=hO3#pLtIzj_5J3c?J>o%ka&*Rrt= z{58LuE`2Ugx2>gR(>f@&qVGl|uY-f>i$ADT;-3XB8%_bzcd_^^kiMG&TW;UTBjNiG zDUx52_w0jE#S=?^`1wQqg_#XmikK5Im+7-X1${P%J718JTv{PyDlq z(_hJYmymKL{Tz5)K*pU0>r9e$ zRj{KJ|IeStB+RBZf?j*IIV~;xESg&NPq(M* z;fpUh^B^5#Z0^fzk6S^~!xy`_TYC877`IcKc8X&CdU!m1(I}<5-NP4`5PXY=FMwyX z0(kht7n^ylGNV-Rz=r4lyANNWR)6Z@3&fj9wMUbF2mAl{;S2O8tWIFmJp0cI!QII` z-@=IIMDElxQpz9QN_q=J^6xBvEJ&Y8IDT9JzTY*)yW}VMO7Fg874&w-v{=o)aK)Um zniVkPFW0H8=3tTZ{{+tV-LF-xg(i{9b>3nJ_*fEsz2Qa5OsWsNd?*sB8@XKP>+({- z>jCbiaCxcVwGLj;b*%V`t!O5+x*|-`g!Wa(fms+ zvF}9wWoR(;$PJ>(D}0=NVA@dT>z0GwR)w>Z?EJmmVJGe-D=g}3ga!M8es!W6tRgh^ zQ1ZS!>>FoyIsW(1o8g4gM2^b|g&J0(y)8MU?u=iIV&xgq95jNw0%xnoEmu?6@^I)` z%T=Gja!}9UQ9m0W_#r$Oe=WJWXX*pEXPR@AEm3Vb^9>a+5h+7YQ|!|ov2BUDuJGK` zlU@Sa6%#GT>r$ zHV^rS&CAm06LV_Fp6#S}L>!(d_TtJ)B3E|c%1YEW|Nf+{q&-p9>hDyM8~RGxgYjn0 z3w^rUyr5tR>XnA0&y|z}N>)(U>OXG2S`4U#RhpJWSMv8nNA_$xozQB@HkDMpMWz38@1wAw0^^V`9fU*EFqPM4<8^XZw_-(`54o2dx>CQyAFS&T1cN~ls+?}07mGP=FD?U(usq+PC|H|NWgwucaO zI-pf~5d75y4l-hHn;3&eUaH7drJn{`;h%U#KX|{E%I}A#l*l> zETXx6q4&|BG*>}y;vVJJT~JNs!?j0R&a0uwD)^&aINF<#94zL?TAF&^eE~V|vTDzX z&`qbprw33xYt=&2r2LrzDc``S3O22pE2WL#S|wUckyaDFX1HemY9Ecc#x(moeVU2P zHM>j!Gr2~TZ1B+dYTD-e(O%@|{F^JG{UszJWouo)e4f^-kx07ABi;WpMWWY3OMv{f zD0IX^HV!w~aU?48vd179wENB9WB)b1xkbhrB9X*?CvYQjb~Ya-GiJ#5!r;}Q4FO+o z8ibLBg2~uV!}A98pV9VfZ^Xep_D5RLhs)^Ce?;i9ACO8+8sVzY5-yE!QzGteF{x{{ zp(s!-1i%qSni*8x+ zNR*0~{0TIWRPr(Ci?Nh@<2N8wwB>*gKKqD;hA+f)R|PHRs)`;eqU5S9;PaKcDnn5f zM2w^scPW;p?}5>_?z+t8Ng}8&O(34TE|KLwXE4U+3|dUA+5|))`5S>au{C z6AqfBp#AlVwgXb-@l;U2>NhS~A!cDGx}D}4n$Mso9EEVAB+iiI`rs>CEH$i(bYBE} z9oH+SUDkF`iQg?+sqb*H1$vA97p+Y0z^eGhmaBoW^BxiG><_&#+?RH;pTZOR%b>6!swkMV8;{-&I4Ba;gffit&A_}8 zIxA*Z?F^Nz`4#*uNop_KI7>@sTb#P~=_81U$MEQHHFnX=a#0~>S}yvCnpAN_syHZB z>}a{@tE{2VW}!rmuNI{6G)`@stFrl6y>0Qnj`mU@X_h0ct@-PSeiACbBJO~OB?cqc+WJkXquQl%@ksr5o&4nt_ZX=`&Z;a zGo+8TERE-gXv%6*M>dUOFPx^VAsMeNDb(_tcSU>4Z~hhK6OJltNFN=NSj#dU2Pu3; z=!7pTcPh6&)a6R3xh3L}_Aq!JJ{2z@WTSO-$%E`9aH0mQm6Ge5R zs7f@Au*HSC}ap55U9$O2$9BR%1FfT7s zjq1hi+%5UU!2YyHIN8Y$k$DPY5NxE~6D*)*cax>L^DLX$xAyU3AXBdXlvnkk!X{3s zBp9~$8sJx3rlKC=c$)~Crm|Vd)5^80#`!v)B46%hi&a^@xX`HXdtaZc&i#lCn{~bN zJjH=B)@mg&KF$)$MJ8sYic?d?ajD{vRO--Thg8#@gkdEgFR|RZfnty5Rz7M5b1NS> zy}6Z-oe*y2!zYkiX#}CFq1KhVU?bAuBH8C?k+G=L3ozFLmIHPGwg4u>pLqp%`*`~V z1O)i{`uPX=2l)8RU_TnnB6}Bo~cHCvPdPypRf|Xkt zHJHyz&yZODd89jbu#XqwU31M{KP)@GVsgJd6ZTY2 z#Z!QtuA&EXvN^}wR`UKa(zcR{=p1ZY$$L>>NewghrYm^|>ttKGfx?4qQa6MG*M6T` zn*B^l><5)^?DLuGl@1y^O_pX~lZrgJ8fOHemFM^Sbi${V(=p48q?{k*4Tg}8=p7I8 z?0>R7$g_9Y9^~1du|2q#va7c}$g@9gdyr>;(Doo71$DHM@57Lf7rH|%pM%#4&7tP0 zfK=Qr5gkAuAgQYmJ7drgQi;kE|to*0q?+3HxeR!0xrLW*H1D z<8)2eTDu00st+iHiIw+xt*N2c^5P_ak_$8~S}{PJX=xfDcC|DO14rF7M#L6ik{Dpw z_2h(omErqpC<`y=c8h(n_;ZvMSVbrJ;vR`2lqqn;&ZnhJy;^FhV$QX))4GMq=yX7H zDNGcDFyVQ-uM{Ym>6*2+81AYMs6Th7Rgsc1G_E9oPff7kI_RzSc*0w%vDz_D5jnouQF1&g=}0fZ?|@ zbU+WY?YN{3{n&(K%13r9x9$dmY&oNBS7&KbD_57JthQRhQR^F5J8G4cm&oS-VGHic z*X%b1%O!Qt6&e0`0bX>$9sfozW*Q~w;Fil$JE|spa1XO70G3c#BusJ(?XRIMP)!DL zAg1YfG04(11v-eEv?gef;FYm7>B)By`7SmENlB0^*w|W%;B&xQyA7s=6W*u#ggD(+ zLrrewe_Qxp$>%;MwY}u0+h)G#l*hQT0@<)WeWw?)*PcK zwi;?K=!B<-2?Nq>SglD7d76#WeU^RaPbkOU5Szd4*n12V>33X8E^8$}ZW>fuONeIJ zc)LTvwgUp_fEj7C>=r4h_g=e@w#|% z5Po)~qAT3+wS0ov_Z{E7r;z*)@~`!Kg?+F_)p`ebwK5u@P*{vAi&aQuO&C zA9U*T0mN_kOJ4@scqP$0pz_{UOKNEP9c@=bvQ7 z9li-gpR3+wgh!kmB5? z)=o8$kOQGatzLNQ1SHaKxLiXyc!^4n%wpfz$9a z?pj#Um(y?`)x7$jyhhq}u<`n6*E?S00bAq%2YtS4t9Cgp`t{6VBd`0Vq{-`G<4Kd( zyUA4oDSM$@Aw;M>Pc=(k@0vsb)4R)bY%pp8B4U+Zia0N zx4i@5lKvg4qAR2(4FNG)NZosl(C(_`y%${{b+CL;g}+{6FUjI9cB$R5p zh_23Ft-h9x+>7>d6qD0AVZs(#kCgW=fuLHNlUue>5oXoaL?eBg{i_Sea&K_$YT|_O zh7;$7d}^x^N3!FvQsSjn)9PpAb$3p-&4&u6^WbbDsGW#&=3UD5{GG1(=diWBZJ14O zmlq2huOwf}x3&jL2A#3C8CI;( zHm%YAwnp2$MtgOQ_Szcl?`yQz*JxYB4lSc&p;y?xzHf6&w$pFh;~hKWP%~uvi^yWa zA>~>TZKbT1p12BAu5E(1vf6>aw&QpqXvlHt1Z|qK`UCh`e(+OPzW@u|t0cGhmuaHb z@jn)w$bzS&8n(f5I)L;pYM54-Re+(e zj|NNvV2_Ng&di-y?C|Eu=wmpiwcGzrM=`iKXTuYJ9cH*byQiZEQ`@3p5a7>8!Ge}Rj8Y*7`LoY{kMNqp?3Dk-?Ucf z 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

B@@q>_;oHV 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 M;QR{wUtNL!0$u3lAOHXW literal 0 HcmV?d00001 diff --git a/Utils/luarocks/rclauncher.c b/Utils/luarocks/rclauncher.c new file mode 100644 index 000000000..77459f464 --- /dev/null +++ b/Utils/luarocks/rclauncher.c @@ -0,0 +1,139 @@ + +/* +** Simple Lua interpreter. +** This program is used to run a Lua file embedded as a resource. +** It creates a Lua state, opens all its standard libraries, and run +** the Lua file in a protected environment just to redirect the error +** messages to stdout and stderr. +** +** $Id: rclauncher.c,v 1.1 2008/06/30 14:29:59 carregal Exp $ +*/ + +#include +#include + +#include "lua.h" +#include "lauxlib.h" +#include "lualib.h" +#include +#include +#include + +/* +** Report error message. +** Assumes that the error message is on top of the stack. +*/ +static int report (lua_State *L) { + fprintf (stderr, "lua: fatal error: `%s'\n", lua_tostring (L, -1)); + fflush (stderr); + printf ("Content-type: text/plain\n\nConfiguration fatal error: see error log!\n"); + printf ("%s", lua_tostring(L, -1)); + return 1; +} + +static int runlua (lua_State *L, const char *lua_string, int argc, char *argv[]) { + int err_func; + int err; + + lua_getglobal(L, "debug"); + lua_pushliteral(L, "traceback"); + lua_gettable(L, -2); + err_func = lua_gettop (L); + err = luaL_loadstring (L, lua_string); + if(!err) { + int i; + // fill global arg table + lua_getglobal(L, "arg"); + for(i = 1; i < argc; i++) + { + lua_pushstring(L, argv[i]); + lua_rawseti(L, -2, i); + } + lua_pop(L, 1); + // fill parameters (in vararg '...') + for(i = 1; i < argc; i++) + lua_pushstring(L, argv[i]); + return lua_pcall (L, argc - 1, LUA_MULTRET, err_func); + } else return err; +} + +static DWORD GetModulePath( HINSTANCE hInst, LPTSTR pszBuffer, DWORD dwSize ) +// +// Return the size of the path in bytes. +{ + DWORD dwLength = GetModuleFileName( hInst, pszBuffer, dwSize ); + if( dwLength ) + { + while( dwLength && pszBuffer[ dwLength ] != '.' ) + { + dwLength--; + } + + if( dwLength ) + pszBuffer[ dwLength ] = '\000'; + } + return dwLength; +} + + +/* +** MAIN +*/ +int main (int argc, char *argv[]) { + char name[ MAX_PATH ]; + DWORD dwLength; + int size; + luaL_Buffer b; + int i; +#ifdef UNICODE + TCHAR lua_wstring[4098]; +#endif + char lua_string[4098]; + lua_State *L = luaL_newstate(); + (void)argc; /* avoid "unused parameter" warning */ + luaL_openlibs(L); + lua_newtable(L); // create arg table + lua_pushstring(L, argv[0]); // add interpreter to arg table + lua_rawseti(L, -2, -1); + dwLength = GetModulePath( NULL, name, MAX_PATH ); + if(dwLength) { /* Optional bootstrap */ + strcat(name, ".lua"); + lua_pushstring(L, name); // add lua script to arg table + lua_rawseti(L, -2, 0); + lua_setglobal(L,"arg"); // set global arg table + if(!luaL_loadfile (L, name)) { + if(lua_pcall (L, 0, LUA_MULTRET, 0)) { + report (L); + lua_close (L); + return EXIT_FAILURE; + } + } + } + else + { + lua_pushstring(L, argv[0]); // no lua script, so add interpreter again, now as lua script + lua_rawseti(L, -2, 0); + lua_setglobal(L,"arg"); // set global arg table + } + + luaL_buffinit(L, &b); + for(i = 1; ; i++) { +#ifdef UNICODE + size = LoadString(GetModuleHandle(NULL), i, lua_wstring, + sizeof(lua_string)/sizeof(TCHAR)); + if(size > 0) wcstombs(lua_string, lua_wstring, size + 1); +#else + size = LoadString(GetModuleHandle(NULL), i, lua_string, + sizeof(lua_string)/sizeof(char)); +#endif + if(size) luaL_addlstring(&b, lua_string, size); else break; + } + luaL_pushresult(&b); + if (runlua (L, lua_tostring(L, -1), argc, argv)) { + report (L); + lua_close (L); + return EXIT_FAILURE; + } + lua_close (L); + return EXIT_SUCCESS; +} diff --git a/Utils/luarocks/systree/bin/luadocumentor.bat b/Utils/luarocks/systree/bin/luadocumentor.bat new file mode 100644 index 000000000..e16f6f7e9 --- /dev/null +++ b/Utils/luarocks/systree/bin/luadocumentor.bat @@ -0,0 +1,3 @@ +@echo off +"C:\Users\Hugues\Documents\GitHub\MOOSE\Utils\luarocks\lua5.1" -e "package.path=\"C:\\Users\\Hugues\\AppData\\Roaming/luarocks/share/lua/5.1/?.lua;C:\\Users\\Hugues\\AppData\\Roaming/luarocks/share/lua/5.1/?/init.lua;C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\\systree/share/lua/5.1/?.lua;C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\\systree/share/lua/5.1/?/init.lua;C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks/lua/?.lua;\"..package.path; package.cpath=\"C:\\Users\\Hugues\\AppData\\Roaming/luarocks/lib/lua/5.1/?.dll;C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\\systree/lib/lua/5.1/?.dll;\"..package.cpath" -e "local k,l,_=pcall(require,\"luarocks.loader\") _=k and l.add_context(\"luadocumentor\",\"0.1.5-1\")" "C:\Users\Hugues\Documents\GitHub\MOOSE\Utils\luarocks\systree\lib\luarocks\rocks\luadocumentor\0.1.5-1\bin\luadocumentor" %* +exit /b %ERRORLEVEL% diff --git a/Utils/luarocks/systree/lib/lua/5.1/checks.dll b/Utils/luarocks/systree/lib/lua/5.1/checks.dll new file mode 100644 index 0000000000000000000000000000000000000000..9959cdc01432fc34ff020ea8132a767dc7d891f5 GIT binary patch literal 24746 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 I#e3oZ0cV4al>h($ literal 0 HcmV?d00001 diff --git a/Utils/luarocks/systree/lib/lua/5.1/lfs.dll b/Utils/luarocks/systree/lib/lua/5.1/lfs.dll new file mode 100644 index 0000000000000000000000000000000000000000..9249ec0eb8da1d1d1166e98074183874a65c18ee GIT binary patch literal 33815 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 +-- - initial API and implementation and initial documentation +-------------------------------------------------------------------------------- + +-- Check interpreter version +if _VERSION ~= "Lua 5.1" then + print("Luadocumentor is only compatible with Lua 5.1") + return +end + +-- +-- Defining help message. +-- + +-- This message is compliant to 'lapp', which will match options and arguments +-- from command line. +local help = [[luadocumentor v0.1.4: tool for Lua Documentation Language + -f, --format (default doc) Define output format : + * doc: Will produce HTML documentation from specified file(s) or directories. + * api: Will produce API file(s) from specified file(s) or directories. + -d, --dir (default docs) Define an output directory. If the given directory doesn't exist, it will be created. + -h, --help Display the help. + -n, --noheuristic Do not use code analysis, use only comments to generate documentation. + -s, --style (default !) The path of your own css file, if you don't want to use the default one. (usefull only for the doc format) + [directories|files] Define the paths or the directories of inputs files. Only Lua or C files containing a @module tag will be considered. +]] +local docgenerator = require 'docgenerator' +local lddextractor = require 'lddextractor' +local lapp = require 'pl.lapp' +local args = lapp( help ) + +if not args or #args < 1 then + print('No directory provided') + return +elseif args.help then + -- Just print help + print( help ) + return +end + +-- +-- define css file name +-- +local cssfilename = "stylesheet.css" + +-- +-- Parse files from given folders +-- + +-- Check if all folders exist +local fs = require 'fs.lfs' +local allpresent, missing = fs.checkdirectory(args) + +-- Some of given directories are absent +if missing then + -- List missing directories + print 'Unable to open' + for _, file in ipairs( missing ) do + print('\t'.. file) + end + return +end + +-- Get files from given directories +local filestoparse, error = fs.filelist( args ) +if not filestoparse then + print ( error ) + return +end + +-- +-- Generate documentation only files +-- +if args.format == 'api' then + for _, filename in ipairs( filestoparse ) do + + -- Loading file content + print('Dealing with "'..filename..'".') + local file, error = io.open(filename, 'r') + if not file then + print ('Unable to open "'..filename.."'.\n"..error) + else + local code = file:read('*all') + file:close() + + -- + -- Creating comment file + -- + local commentfile, error = lddextractor.generatecommentfile(filename, code) + + -- Getting module name + -- Optimize me + local module, moduleerror = lddextractor.generateapimodule(filename, code) + if not commentfile then + print('Unable to create documentation file for "'..filename..'"\n'..error) + elseif not module or not module.name then + local error = moduleerror and '\n'..moduleerror or '' + print('Unable to compute module name for "'..filename..'".'..error) + else + -- + -- Flush documentation file on disk + -- + local path = args.dir..fs.separator..module.name..'.lua' + local status, err = fs.fill(path, commentfile) + if not status then + print(err) + end + end + end + end + print('Done') + return +end + +-- Deal only supported output types +if args.format ~= 'doc' then + print ('"'..args.format..'" format is not handled.') + return +end +-- Generate html form files +local parsedfiles, unparsed = docgenerator.generatedocforfiles(filestoparse, cssfilename,args.noheuristic) + +-- Show warnings on unparsed files +if #unparsed > 0 then + for _, faultyfile in ipairs( unparsed ) do + print( faultyfile ) + end +end +-- This loop is just for counting parsed files +-- TODO: Find a more elegant way to do it +local parsedfilescount = 0 +for _, p in pairs(parsedfiles) do + parsedfilescount = parsedfilescount + 1 +end +print (parsedfilescount .. ' file(s) parsed.') + +-- Create html files +local generated = 0 +for _, apifile in pairs ( parsedfiles ) do + local status, err = fs.fill(args.dir..fs.separator..apifile.name..'.html', apifile.body) + if status then + generated = generated + 1 + else + print( 'Unable to create '..apifile.name..'.html on disk.') + end +end +print (generated .. ' file(s) generated.') + +-- Copying css +local csscontent +if args.style == '!' then + csscontent = require 'defaultcss' +else + local css, error = io.open(args.style, 'r') + if not css then + print('Unable to open "'..args.style .. '".\n'..error) + return + end + csscontent = css:read("*all") + css:close() +end + +local status, error = fs.fill(args.dir..fs.separator..cssfilename, csscontent) +if not status then + print(error) + return +end +print('Adding css') +print('Done') diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/LICENSE b/Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/LICENSE similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/LICENSE rename to Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/LICENSE diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/README.md b/Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/README.md similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/README.md rename to Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/doc/README.md diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luadocumentor/0.1.5-1/luadocumentor-0.1.5-1.rockspec b/Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/luadocumentor-0.1.5-1.rockspec similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luadocumentor/0.1.5-1/luadocumentor-0.1.5-1.rockspec rename to Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/luadocumentor-0.1.5-1.rockspec diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luadocumentor/0.1.5-1/rock_manifest b/Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/rock_manifest similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luadocumentor/0.1.5-1/rock_manifest rename to Utils/luarocks/systree/lib/luarocks/rocks/luadocumentor/0.1.5-1/rock_manifest diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/doc.css b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/doc.css similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/doc.css rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/doc.css diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/examples.html b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/examples.html similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/examples.html rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/examples.html diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/index.html b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/index.html similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/index.html rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/index.html diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/license.html b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/license.html similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/license.html rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/license.html diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/luafilesystem.png b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/luafilesystem.png similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/luafilesystem.png rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/luafilesystem.png diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/manual.html b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/manual.html similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/manual.html rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/doc/us/manual.html diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/luafilesystem-1.6.3-2.rockspec b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/luafilesystem-1.6.3-2.rockspec similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/luafilesystem-1.6.3-2.rockspec rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/luafilesystem-1.6.3-2.rockspec diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/rock_manifest b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/rock_manifest similarity index 91% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/rock_manifest rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/rock_manifest index b0f7b6332..1b646b631 100644 --- a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/rock_manifest +++ b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/rock_manifest @@ -10,7 +10,7 @@ rock_manifest = { } }, lib = { - ["lfs.dll"] = "165694685cffa6014be4ca8cbb7d920b" + ["lfs.dll"] = "bb5e7f0d82350913063363393fafb3e3" }, ["luafilesystem-1.6.3-2.rockspec"] = "eb0ef7c190516892eb8357af799eea5f", tests = { diff --git a/Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/tests/test.lua b/Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/tests/test.lua similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/luafilesystem/1.6.3-2/tests/test.lua rename to Utils/luarocks/systree/lib/luarocks/rocks/luafilesystem/1.6.3-2/tests/test.lua diff --git a/Utils/lua/5.1/lib/luarocks/rocks/manifest b/Utils/luarocks/systree/lib/luarocks/rocks/manifest similarity index 99% rename from Utils/lua/5.1/lib/luarocks/rocks/manifest rename to Utils/luarocks/systree/lib/luarocks/rocks/manifest index 3b022bd4f..b3bae3c19 100644 --- a/Utils/lua/5.1/lib/luarocks/rocks/manifest +++ b/Utils/luarocks/systree/lib/luarocks/rocks/manifest @@ -31,7 +31,8 @@ dependencies = { } }, name = "lua" - }, { + }, + { constraints = { { op = "~>", @@ -41,7 +42,8 @@ dependencies = { } }, name = "luafilesystem" - }, { + }, + { constraints = { { op = "~>", @@ -51,7 +53,8 @@ dependencies = { } }, name = "markdown" - }, { + }, + { constraints = { { op = "~>", @@ -61,7 +64,8 @@ dependencies = { } }, name = "metalua-compiler" - }, { + }, + { constraints = { { op = "~>", @@ -116,7 +120,8 @@ dependencies = { } }, name = "lua" - }, { + }, + { constraints = { { op = "~>", @@ -126,7 +131,8 @@ dependencies = { } }, name = "luafilesystem" - }, { + }, + { constraints = { { op = ">=", diff --git a/Utils/lua/5.1/lib/luarocks/rocks/markdown/0.32-2/markdown-0.32-2.rockspec b/Utils/luarocks/systree/lib/luarocks/rocks/markdown/0.32-2/markdown-0.32-2.rockspec similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/markdown/0.32-2/markdown-0.32-2.rockspec rename to Utils/luarocks/systree/lib/luarocks/rocks/markdown/0.32-2/markdown-0.32-2.rockspec diff --git a/Utils/lua/5.1/lib/luarocks/rocks/markdown/0.32-2/rock_manifest b/Utils/luarocks/systree/lib/luarocks/rocks/markdown/0.32-2/rock_manifest similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/markdown/0.32-2/rock_manifest rename to Utils/luarocks/systree/lib/luarocks/rocks/markdown/0.32-2/rock_manifest diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-compiler.md b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-compiler.md similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-compiler.md rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-compiler.md diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-parser.md b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-parser.md similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-parser.md rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README-parser.md diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README.md b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README.md similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README.md rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/doc/README.md diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/metalua-compiler-0.7.3-1.rockspec b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/metalua-compiler-0.7.3-1.rockspec similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/metalua-compiler-0.7.3-1.rockspec rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/metalua-compiler-0.7.3-1.rockspec diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/rock_manifest b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/rock_manifest similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-compiler/0.7.3-1/rock_manifest rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-compiler/0.7.3-1/rock_manifest diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-compiler.md b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-compiler.md similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-compiler.md rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-compiler.md diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-parser.md b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-parser.md similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-parser.md rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README-parser.md diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README.md b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README.md similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README.md rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/doc/README.md diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/metalua-parser-0.7.3-2.rockspec b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/metalua-parser-0.7.3-2.rockspec similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/metalua-parser-0.7.3-2.rockspec rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/metalua-parser-0.7.3-2.rockspec diff --git a/Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/rock_manifest b/Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/rock_manifest similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/metalua-parser/0.7.3-2/rock_manifest rename to Utils/luarocks/systree/lib/luarocks/rocks/metalua-parser/0.7.3-2/rock_manifest diff --git a/Utils/lua/5.1/lib/luarocks/rocks/penlight/0.9.8-1/penlight-0.9.8-1.rockspec b/Utils/luarocks/systree/lib/luarocks/rocks/penlight/0.9.8-1/penlight-0.9.8-1.rockspec similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/penlight/0.9.8-1/penlight-0.9.8-1.rockspec rename to Utils/luarocks/systree/lib/luarocks/rocks/penlight/0.9.8-1/penlight-0.9.8-1.rockspec diff --git a/Utils/lua/5.1/lib/luarocks/rocks/penlight/0.9.8-1/rock_manifest b/Utils/luarocks/systree/lib/luarocks/rocks/penlight/0.9.8-1/rock_manifest similarity index 100% rename from Utils/lua/5.1/lib/luarocks/rocks/penlight/0.9.8-1/rock_manifest rename to Utils/luarocks/systree/lib/luarocks/rocks/penlight/0.9.8-1/rock_manifest diff --git a/Utils/lua/5.1/share/lua/5.1/defaultcss.lua b/Utils/luarocks/systree/share/lua/5.1/defaultcss.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/defaultcss.lua rename to Utils/luarocks/systree/share/lua/5.1/defaultcss.lua diff --git a/Utils/lua/5.1/share/lua/5.1/docgenerator.lua b/Utils/luarocks/systree/share/lua/5.1/docgenerator.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/docgenerator.lua rename to Utils/luarocks/systree/share/lua/5.1/docgenerator.lua diff --git a/Utils/lua/5.1/share/lua/5.1/extractors.lua b/Utils/luarocks/systree/share/lua/5.1/extractors.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/extractors.lua rename to Utils/luarocks/systree/share/lua/5.1/extractors.lua diff --git a/Utils/lua/5.1/share/lua/5.1/fs/lfs.lua b/Utils/luarocks/systree/share/lua/5.1/fs/lfs.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/fs/lfs.lua rename to Utils/luarocks/systree/share/lua/5.1/fs/lfs.lua diff --git a/Utils/lua/5.1/share/lua/5.1/lddextractor.lua b/Utils/luarocks/systree/share/lua/5.1/lddextractor.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/lddextractor.lua rename to Utils/luarocks/systree/share/lua/5.1/lddextractor.lua diff --git a/Utils/lua/5.1/share/lua/5.1/markdown.lua b/Utils/luarocks/systree/share/lua/5.1/markdown.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/markdown.lua rename to Utils/luarocks/systree/share/lua/5.1/markdown.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/ast_to_src.mlua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/ast_to_src.mlua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/ast_to_src.mlua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/ast_to_src.mlua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode/compile.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode/compile.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode/compile.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode/compile.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode/lcode.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode/lcode.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode/lcode.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode/lcode.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode/ldump.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode/ldump.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode/ldump.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode/ldump.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode/lopcodes.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode/lopcodes.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/bytecode/lopcodes.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/bytecode/lopcodes.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/globals.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/globals.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/globals.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/globals.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/annot/generator.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/annot/generator.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/annot/generator.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/annot/generator.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/annot/grammar.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/annot/grammar.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/annot/grammar.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/annot/grammar.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/expr.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/expr.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/expr.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/expr.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/ext.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/ext.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/ext.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/ext.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/lexer.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/lexer.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/lexer.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/lexer.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/meta.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/meta.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/meta.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/meta.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/misc.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/misc.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/misc.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/misc.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/stat.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/stat.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/stat.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/stat.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/table.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/table.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/compiler/parser/table.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/compiler/parser/table.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/extension/comprehension.mlua b/Utils/luarocks/systree/share/lua/5.1/metalua/extension/comprehension.mlua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/extension/comprehension.mlua rename to Utils/luarocks/systree/share/lua/5.1/metalua/extension/comprehension.mlua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/extension/match.mlua b/Utils/luarocks/systree/share/lua/5.1/metalua/extension/match.mlua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/extension/match.mlua rename to Utils/luarocks/systree/share/lua/5.1/metalua/extension/match.mlua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/grammar/generator.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/grammar/generator.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/grammar/generator.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/grammar/generator.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/grammar/lexer.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/grammar/lexer.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/grammar/lexer.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/grammar/lexer.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/loader.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/loader.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/loader.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/loader.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/pprint.lua b/Utils/luarocks/systree/share/lua/5.1/metalua/pprint.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/pprint.lua rename to Utils/luarocks/systree/share/lua/5.1/metalua/pprint.lua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/repl.mlua b/Utils/luarocks/systree/share/lua/5.1/metalua/repl.mlua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/repl.mlua rename to Utils/luarocks/systree/share/lua/5.1/metalua/repl.mlua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/treequery.mlua b/Utils/luarocks/systree/share/lua/5.1/metalua/treequery.mlua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/treequery.mlua rename to Utils/luarocks/systree/share/lua/5.1/metalua/treequery.mlua diff --git a/Utils/lua/5.1/share/lua/5.1/metalua/treequery/walk.mlua b/Utils/luarocks/systree/share/lua/5.1/metalua/treequery/walk.mlua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/metalua/treequery/walk.mlua rename to Utils/luarocks/systree/share/lua/5.1/metalua/treequery/walk.mlua diff --git a/Utils/lua/5.1/share/lua/5.1/models/apimodel.lua b/Utils/luarocks/systree/share/lua/5.1/models/apimodel.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/models/apimodel.lua rename to Utils/luarocks/systree/share/lua/5.1/models/apimodel.lua diff --git a/Utils/lua/5.1/share/lua/5.1/models/apimodelbuilder.lua b/Utils/luarocks/systree/share/lua/5.1/models/apimodelbuilder.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/models/apimodelbuilder.lua rename to Utils/luarocks/systree/share/lua/5.1/models/apimodelbuilder.lua diff --git a/Utils/lua/5.1/share/lua/5.1/models/internalmodel.lua b/Utils/luarocks/systree/share/lua/5.1/models/internalmodel.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/models/internalmodel.lua rename to Utils/luarocks/systree/share/lua/5.1/models/internalmodel.lua diff --git a/Utils/lua/5.1/share/lua/5.1/models/internalmodelbuilder.mlua b/Utils/luarocks/systree/share/lua/5.1/models/internalmodelbuilder.mlua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/models/internalmodelbuilder.mlua rename to Utils/luarocks/systree/share/lua/5.1/models/internalmodelbuilder.mlua diff --git a/Utils/lua/5.1/share/lua/5.1/models/ldparser.lua b/Utils/luarocks/systree/share/lua/5.1/models/ldparser.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/models/ldparser.lua rename to Utils/luarocks/systree/share/lua/5.1/models/ldparser.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/Date.lua b/Utils/luarocks/systree/share/lua/5.1/pl/Date.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/Date.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/Date.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/List.lua b/Utils/luarocks/systree/share/lua/5.1/pl/List.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/List.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/List.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/Map.lua b/Utils/luarocks/systree/share/lua/5.1/pl/Map.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/Map.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/Map.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/MultiMap.lua b/Utils/luarocks/systree/share/lua/5.1/pl/MultiMap.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/MultiMap.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/MultiMap.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/OrderedMap.lua b/Utils/luarocks/systree/share/lua/5.1/pl/OrderedMap.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/OrderedMap.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/OrderedMap.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/Set.lua b/Utils/luarocks/systree/share/lua/5.1/pl/Set.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/Set.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/Set.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/app.lua b/Utils/luarocks/systree/share/lua/5.1/pl/app.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/app.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/app.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/array2d.lua b/Utils/luarocks/systree/share/lua/5.1/pl/array2d.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/array2d.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/array2d.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/class.lua b/Utils/luarocks/systree/share/lua/5.1/pl/class.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/class.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/class.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/comprehension.lua b/Utils/luarocks/systree/share/lua/5.1/pl/comprehension.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/comprehension.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/comprehension.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/config.lua b/Utils/luarocks/systree/share/lua/5.1/pl/config.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/config.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/config.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/data.lua b/Utils/luarocks/systree/share/lua/5.1/pl/data.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/data.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/data.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/dir.lua b/Utils/luarocks/systree/share/lua/5.1/pl/dir.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/dir.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/dir.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/file.lua b/Utils/luarocks/systree/share/lua/5.1/pl/file.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/file.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/file.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/func.lua b/Utils/luarocks/systree/share/lua/5.1/pl/func.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/func.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/func.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/init.lua b/Utils/luarocks/systree/share/lua/5.1/pl/init.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/init.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/init.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/input.lua b/Utils/luarocks/systree/share/lua/5.1/pl/input.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/input.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/input.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/lapp.lua b/Utils/luarocks/systree/share/lua/5.1/pl/lapp.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/lapp.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/lapp.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/lexer.lua b/Utils/luarocks/systree/share/lua/5.1/pl/lexer.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/lexer.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/lexer.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/luabalanced.lua b/Utils/luarocks/systree/share/lua/5.1/pl/luabalanced.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/luabalanced.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/luabalanced.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/operator.lua b/Utils/luarocks/systree/share/lua/5.1/pl/operator.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/operator.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/operator.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/path.lua b/Utils/luarocks/systree/share/lua/5.1/pl/path.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/path.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/path.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/permute.lua b/Utils/luarocks/systree/share/lua/5.1/pl/permute.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/permute.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/permute.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/platf/luajava.lua b/Utils/luarocks/systree/share/lua/5.1/pl/platf/luajava.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/platf/luajava.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/platf/luajava.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/pretty.lua b/Utils/luarocks/systree/share/lua/5.1/pl/pretty.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/pretty.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/pretty.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/seq.lua b/Utils/luarocks/systree/share/lua/5.1/pl/seq.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/seq.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/seq.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/sip.lua b/Utils/luarocks/systree/share/lua/5.1/pl/sip.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/sip.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/sip.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/strict.lua b/Utils/luarocks/systree/share/lua/5.1/pl/strict.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/strict.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/strict.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/stringio.lua b/Utils/luarocks/systree/share/lua/5.1/pl/stringio.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/stringio.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/stringio.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/stringx.lua b/Utils/luarocks/systree/share/lua/5.1/pl/stringx.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/stringx.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/stringx.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/tablex.lua b/Utils/luarocks/systree/share/lua/5.1/pl/tablex.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/tablex.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/tablex.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/template.lua b/Utils/luarocks/systree/share/lua/5.1/pl/template.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/template.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/template.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/test.lua b/Utils/luarocks/systree/share/lua/5.1/pl/test.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/test.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/test.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/text.lua b/Utils/luarocks/systree/share/lua/5.1/pl/text.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/text.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/text.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/utils.lua b/Utils/luarocks/systree/share/lua/5.1/pl/utils.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/utils.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/utils.lua diff --git a/Utils/lua/5.1/share/lua/5.1/pl/xml.lua b/Utils/luarocks/systree/share/lua/5.1/pl/xml.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/pl/xml.lua rename to Utils/luarocks/systree/share/lua/5.1/pl/xml.lua diff --git a/Utils/lua/5.1/share/lua/5.1/template/file.lua b/Utils/luarocks/systree/share/lua/5.1/template/file.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/template/file.lua rename to Utils/luarocks/systree/share/lua/5.1/template/file.lua diff --git a/Utils/lua/5.1/share/lua/5.1/template/index.lua b/Utils/luarocks/systree/share/lua/5.1/template/index.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/template/index.lua rename to Utils/luarocks/systree/share/lua/5.1/template/index.lua diff --git a/Utils/lua/5.1/share/lua/5.1/template/index/recordtypedef.lua b/Utils/luarocks/systree/share/lua/5.1/template/index/recordtypedef.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/template/index/recordtypedef.lua rename to Utils/luarocks/systree/share/lua/5.1/template/index/recordtypedef.lua diff --git a/Utils/lua/5.1/share/lua/5.1/template/item.lua b/Utils/luarocks/systree/share/lua/5.1/template/item.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/template/item.lua rename to Utils/luarocks/systree/share/lua/5.1/template/item.lua diff --git a/Utils/lua/5.1/share/lua/5.1/template/page.lua b/Utils/luarocks/systree/share/lua/5.1/template/page.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/template/page.lua rename to Utils/luarocks/systree/share/lua/5.1/template/page.lua diff --git a/Utils/lua/5.1/share/lua/5.1/template/recordtypedef.lua b/Utils/luarocks/systree/share/lua/5.1/template/recordtypedef.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/template/recordtypedef.lua rename to Utils/luarocks/systree/share/lua/5.1/template/recordtypedef.lua diff --git a/Utils/lua/5.1/share/lua/5.1/template/usage.lua b/Utils/luarocks/systree/share/lua/5.1/template/usage.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/template/usage.lua rename to Utils/luarocks/systree/share/lua/5.1/template/usage.lua diff --git a/Utils/lua/5.1/share/lua/5.1/template/utils.lua b/Utils/luarocks/systree/share/lua/5.1/template/utils.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/template/utils.lua rename to Utils/luarocks/systree/share/lua/5.1/template/utils.lua diff --git a/Utils/lua/5.1/share/lua/5.1/templateengine.lua b/Utils/luarocks/systree/share/lua/5.1/templateengine.lua similarity index 100% rename from Utils/lua/5.1/share/lua/5.1/templateengine.lua rename to Utils/luarocks/systree/share/lua/5.1/templateengine.lua diff --git a/Utils/luarocks/tools/7z.dll b/Utils/luarocks/tools/7z.dll new file mode 100644 index 0000000000000000000000000000000000000000..c0ff7fbe62a5c923f123467b20cfbd819a29c3f7 GIT binary patch literal 858624 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

UrUn@hHi&_lN|K;(#;X`s4 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

EOFC@}Y*U~XKCWcW5=&eqW1KKUY#5fcei>ID@ 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

bgHL*qGYAkS|j^1}rO#@@ILe4GAIcBtDH- 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 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/cp.exe b/Utils/luarocks/tools/cp.exe new file mode 100644 index 0000000000000000000000000000000000000000..0ef4fe85e4cab23fb7a6c745f871b078167dc7a1 GIT binary patch literal 130048 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

-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 I|BL?of6(-4-~a#s literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/find.exe b/Utils/luarocks/tools/find.exe new file mode 100644 index 0000000000000000000000000000000000000000..85192fbf44aa14d832446a1cb4a72617db812f5d GIT binary patch literal 160256 zcmeFa3wRVo);Hc01{fe=1_+qdAgxX`tVu{TXaWQW5+K~8fS`a7NJ8=&l5En$MFE48 zD821yRJ<;_@Z!1`-Cfq@1w@2EFp+g#5pO77STCUuA2r7cbc1 znDXKUGfT^A)T-*rCDnyX)y0Js6_uL0s93G`SEywbYToo2>e9-h;f2@vl)v_PMm1=$E3X zGA|3T4E|XU`O*-h)G=a9jPeV&jQYRvo2C`7(9lppKHz2h>}#YG5&~6G7N!*yYK3@B zci?9s^5DNRjX&-Ge2UVTwy36tF$)Lar>bK*Ccc8ucL)t(cnT+c_dZO2yi)=C>aN?+To-vq3^m$01l&;5m&5=>*joQHI^a7@z zhjg_#qsL zN_g>zVN#x~$rv`itfFX^R#sj!tfsWEx_DT5<>JEfVxz z)m)-jGHXe(rY`nZS2L-oth#uyR$0AL@mCbDs6x27NCoq*E`+2jE-G7Gs1++^70U|C z%Zl17WNndJ?bJwq*;rMfR$8Mj_19>uX>oB;G3rGKuvJzlsZ*5H0wp!|%=npEib563 z%Bm|XL`RktR+kknDlb+$^<9NvrZlecS5;M3qYEjjhN6`f%eN*L@FOcQTxDT#ws<7tFSSTk+I~dv3+=;G+nmYEi@MSux7yMrJyc zT6?ua*}Na&=I+nq7msJciAKqpG0+>3zEyc6X(N6Ii+cT!aA1OJFzNPdUOl`^?r zMRIfZT`X_RckNNreCYJ6c+EJzhx1P#eh@F&@3o9OET-eQWAgE#NSyz+KL6WwV`{9C_`BVIMLYV-`g>nI?ygSsa>Z`WyPJ4_EzGUwus09NfeDjd90Dj(dA`vN1o_$PBo5_eEchu?@1d_pW4j z{e9ZT9Ya6#`EQ308na@9<6Pvo;D6@%*;WlMckofvrXTOJo(Dud?z#o&h%xmT>M$~Y ztY>=7N5LNI8}%l4-5?~Pnc%ErAQ|v|r|$H&y;9fcA8m*zBe9|Wh`W9(x(Eo51H!g} zUeJfGd1FaM>j!i2#(k1;2xKBi zBj|VO0|lixz2WjTnQODLC~LBqk`A)mi0VOO>pZ9kNH9-8RPG>Q zixeYHq#tmvJH{RZsC4AFDrg(X!AIfx$2b_Pk6}Ef9veB;rB6M)dW;wv!@YYDa*H7b zmd%sH#Sot#>E3(}fD!v3`~4D-gh2`K1eNIH4ri}Etfg&Y2S5~Yn>aCo#b3_7VF45g z06Hc%x__@gV16qF_$h$m9uOJJW^+Ek0peYT2PtAO z3FMN897-q^C@=@lz-09ZCBR+(-FJc~bf_TFt{}m#0HWW#m=(Mvv!_Jbvq7?Rl5S2u zh@7L4ljOYs$~H*wd?QX!&X`hN4EtujnTs-Gl+geFy{%17i6AD3H7gDe2lA7H{tGP@^7KZq5Xqk61P{p}4+(7t<2@-0J2;BT@YT zy0q;?TierIH|cR?w4rZfxrP*R=d|_ERGwF>iL(ESc&?S5iG%w8)Sfcg9H9h}@NQ9%lu49@gUH-=|{-oca8gHyZ(#^6zW zo8nD0Qhf+vZlDR|PiB52Cy#LhDd7?49SBK?r^+;-Hy#~LAUOIeDEU*MJ(JS|$@dKc zmHroJ_}q*bmXP2N7vO`%8y%+e?E63(*CDrl{N$e3(N7e}LuV98eD4C=_w5bt@-`wW z!g1Z(J~K!66yU@%FF?z4}lpQS@mt&Wo8S4fSfZ= z!j+6ZIDt@9qnHQQJCq%)aWgq$=rJ-6bdi~lO4vZZV0JG(!!Zp%Zi!#Hekw0sR$N}A zmX<9kEv}{!g?d;CXu4))jaIxA3B}cg)r(74o<>a^-=4L+va(7oD%OMsJ5s2iYH6X= z>}m>^Vonqp@&f*U z9{h$GE0->+EH7KEmX}rBC}F0Fsjym8D@y>D=#+()h^F3-m67W5VsvsDI#FI-Tv)VH zT~=08Mh%{LY%c&7V08<+cqLc@`z826#$RV&n{gaGArV7p?DA&f;oi31n}uhv&btvK z=iYvY*N0bqt9aFOT0!0JZEvlc=^cg{OVdq>o_ZXS&E3DmFXxK0x%*clI1hx5=`5%X zguV)tmT?IDAqk?9Mb`dVIi@IUzfpXOqKz|hsJdq7kjbnbka1}3euAYR6w_4bGpUrn z!3_cuqfRtV?g5H(QDvH?gb&o_2q@fjZ-8I8x68a4ha^OfOsnF;L_aEv@#n#Swoy(V7xU2V-z=)4aoicX&4f^pX!qpndW2-F^bK@1#ziwrlDG6gBXS_4w3MH?hfC|%|~m&S0+ zTo@@behUcE`c_dXGNCFDd7{}JEGv`@4r}BHdXp2ucv99z(8xVgylv-%zCyRqycpN5 z5~Ha^r4dI|>IXBv%6Pt)>8^VU`I@^EWscC}2nQO~%^cvpN1Xu6X^@!K-OwkVYFi~Ensle(1(1r z5Fkm(!a+p;uj_#+!XxVb zOxFFEj&=8A-LH$fPcb`1B4&@dX4=GQ6Go`{h1Eq;2raJk!z=_Tv>Zm4C2C1!HN@Zu z2oyvuEnKN$!=q4L_xYSEs4!7{6Azv`~ZfsGJrUe{}_IFqIX^ zTv2pMjhb3fSzcUNqE=REFb1K(xWejk$a)p#A%8h6G;B!-wvvd3TUN2S+z)wei?y<1 z3U^p_YDz2pLHGQD57wGGYl zE^LdVz(S#!kgM~Cz7ov5v~~?lBNYyJ{ZVpmAwtAbh3FUzzR?-UbyuL7O$Sj8OwaDR z<&e<`RQC$Bf}_mFTSlWLSR38z1Jo^A>a)10r>3 zv2FmYopk$~b#T+I-UfC}>N>l;$1s9~?iQ{ap-gc=DS!}`92qEWiX&J(mKU^n>rW>8 z6l_t99qLnFiTX>33Y%YeB`hR3BOP2A4GI*S-+;c??kC9$t!onnMt$R&LadUcxN?|A zeyg$Kq*3steuvjYIm35M-{t*;HPm^J^0D6gA>-$PevW{CKqnM#X=oI5P^8Ct%?lY` zg$V;%8ia7zFb4X7En_&BP@BY>YrU*}pjdKk6%B+RF|#bt#R_kOq&}=pI@(MwM=wId z$&w|a(W3hJDT})sqZW7N-YO$Uv{a78U7UbLtRI2qWOPO`2A^edw+f3p3P)-Y)JMSz zIBYvyR3<=d=9-J52%vp&*I{jX)9u#cP7+lHD9XLQG4xYRf3eC6-95#9K|;241BV)1Pyw9@=`&s z&*O1rO8cKHDr^Y7MUo)EQcx9U32WT@fm5F{7)#l~v1qQ9y%vs5AKpJet|FNhkct%Am+ZHS9;8s|hw46yl!dX&r& zC7Xed+)x_JuSafe~8exdk8k|R4xX0cX}_u!|ab7SU&(Qw3gWVMD2=xia*Zq zmBI?~g&1$xT%z_Hje%rDA|Y_Xp~d2-x_jV6jMhVD%V-RU#ghV>VX?p`iIR>;l$eg* z`a|HO@!*;&I7osv1o2)>!vv&J^;MA)AK0H5x)+p!@Hh~^^8Kb;oa@~r-09b$4hunrAkQ2 z>vb@Ozdnd&fdL?LVCQDV`qjMjENveSx7d|6VvNI2cib-wJ%Pxm^$y2_JB$;^;x8lk z13K6%HWU3#PjkCLw660(5PZOA;Y z&P{7tC_!Ra7E67&xA`^Jnb3!|4D+uDkw672odVob9(5q^@U79-9bt$MKiFaXfU*=c z7*F7U>IBkO?TY@2e?aYu0g85cZH}-6_nAZ8HtFx z%F1Y7$Ee9FqNdxq#*17YV{$xV7ev>XA~MrDS!rkffykV0OwL5?Ezz0V&ST95h`!s- z{E3K~hXo8`H_BKcIL$*y3C_p@37gvy@tmFGPLU&@ zIcn@2GxCw+FmsT5mm@l`KOv)WZc}7U6dg#aNvg4I>P2diznZI<;uXblHFyi(h>2_B$Fk zBLH*}eO3r8h9~w%<$l2wr;w`Ud~Eer@v+{k@o|TD1s-7CSy<1nVoaU4fiaqQ6qZV* z48n5WjK>sjCf5SMK6OreHoNN|f(mV{_89(naFS8bY_c+rWxUj@)m?WNgzQPQ#0qz_ zklampuQ|rS#g7jKsa9~k64bmt%BhqM)bZSP1Chq}CkKFZnyG~?f(#Dq@~%T>Xz?FH z1;{vr_dDc!f4oQDZk^cv1|2^IZ#F+R{4Qb5GFDTm%>=aR8Lb(A>U9i@IRPzHchqPD z+QT8>CbWM*a%X7Q{6s?gIMN91cl~W>w_;@oO!+SJLH=3h7*6XuymhD^m@UEsDD~?5 zjMXl|exLN#B5uc1C_=C>CW-ZbMV17A_Z@UUz&N-fUFLkEl#O+--zT6V1ehi#S3%$c zlDdQ#;AicAj=W`lmGUmp8=3{BEm9`YYvwnIUF>Fe{aB=g-)8wdloyB!KSShyglf>8 z#?IZ@Wp{_517db(ss~y?R{as#lPB$-CQ?5D0ma+hu{ywR+0dW~jFno9HA*; zQNm#k^??qqqXXQvY+oNE1#P1rwV*fb#-ks9M27Hdlvm~p=R`@!t=@%%lRBX7Qzp1* z^UY{43x%RthX}V@FRF`a1>sH|tot1uZ=&>%wV(Wv&}{HF;(=j4%(q?M=lQnFdysEi zz5DSnFC$;DQQv@cknCNW1Atc`esK7~E4oi!wRQzUwm5mu2*3QvS6YtHjdSB#tK7!fZw*GLRTjgUwX z4CDReOa`t_27dQE9fWgr4|E z^JQc(5(3}GXla3O;{^)bb!{M_-I$w7#Qx{53v+3=8M*a@(0d45iq>v097TKA)Y%Y% zu*SU%7V|a&4q9<`PQk4;h-*>)r1fmNKiIdpgxG{4;@&*a$gm zueB?#qvNIGnrdbu#1ZER3gxwfx_8BjXr&b+ehtwOwKNJFhXx|)lsO$8QMRO_vbq?qb2nC0F0W7;q`cgK9ve9YSQx{4HWGFXh7M^%FH~;}ziGY>>l`cul|~f?oj7S2H0)v>1=BHffi1oUfhn?XQry{ur|> z9-gCP!*S8%(_r)^zR~vq{UZ2wAt>_>2B`j{oH- z67m71LAfk+qB_J!FuF-#R0BqV&zkt~-4ct$Uq)LL1_i;`n0t4az+8gB+{E29GK+!(n^)$rB&KWh3gUVgN+fTq_DgO zKEv=9E~zXpuUxK_RAJGgS&wwcYkF04}e94~0@@{rZ3@F`Tt9!2=5 zm1lEQ{LdM0<@pW6SIhic5%$fH;inPypib7)i10ClDO{QnF1XgGKo3)1Lii}c{P#M- z4YOtVFyj$s*>@2>hA{Jgh_Gjl42KXdK$v+xL%7z8{~F;&gxS`&3|}wv$6SRvt#B`d z56+eG{Se-Govh~v2sh4?VHIJ|d>QsKj}`tQ!VN_-ewY%Wwh0 zo)Q_p7U5%7crLN@9{>Tb*>`a6=A`io1gpXSFe}=FR`3b{u=FgXTzD0No zXpi|FK9ofshFu6BwDP+VR;y+FK<2UfcrL;Ph>t;j6=7eE3=c(k%S0JYLs-#d_;Q3* zE1ZRJffXKw@Ifm)2H`5d%s-xamdWrmD~zU;*$6MRV3>#SLFD1T5`=C1--vLPg*TCi zpJ@Gn6CXC95#0Hf8_qR2GEr7iX1QF!93;22anwMgml;kaRHWKb_Hm4)niTAy!^KPN ze#8B&8g6Mgy--yN=PekP3d_}G)D$_bP+Wr@@%Dxm6=PE#rX!qZz%G4pc{!h2X=P1u zR3_PenKl%g>jl_rk0h>)G;7sU312ZlY5`Z121{bZ{v?hzs1UH}wIfsY_uxVSglt+5 zEJ2@7f&(m8FUI|Rr{o{O7=uNf z*mco!7z+P7IM)%HDip)57qc8sYEY3rxWNa1(sC#l12uwiNb3{WA1_ulb8l#(z5?ZB zCx7&TTW*D-ebEI_U7TJcj&Fp59Bebo0u-0&M9VO88wPj^W_LqAjikp$v{kW1?=^oc@;G;Ltxfo)@|iROh>ULa7@}a8Psj zN%PM?h7saQYHZusQ+d9@?(Z@7cfpP9Z`IlQ+sOW2u3G)&o8A0omKFVtN8{#IXt8sD z4eVb>^_QjDUlz3c%W%j3UW>*=-9{V>blu-gJ=kBS%l>}G9bWbqr-L*_1i&LiC*{iV`d*6#c?2EBgSV>8LF6yHItEemwR_Nw4)6}8`}9TV_{B% zS>=D*+_3PG@=EmT#I|wL3mB=0QNl+tZ4qX2_*K;TA!I>EpDRQ%l@rJ8Uk3Co0s0X6 z_ef5|uNbl0#ms7-Y1~I(IrH68l(`&bXj4)`-4U{JoGK1d36u81q{Ww<&TH1rUg0O# zviTv5Vxqi)@fig~rGVl1FiM%gJp8*cPFc??zyO9Q9nMeZ7|we!LJ1j%kS|3)h%rh> z&Pw?BzKVDmY7l26f(Uq9KW ze4oD;knbP;`|WAUY&%W-KU#lu{(RK=>{;sFf0p#<`WWsu1$7erTwlc-&3S{`fKXW6 zy;uz;U`)gzP$TnR9n0|>p=D$oqFH4j3{xPSg8v3(e^i1ofVEnfg!R%yJwE}1#ht1| zy;Rlbc-wjk|IlYaR=)7VczBfXy<(p}e8;oYEW-7us}S0Oq-etpNZh-p3~Gy}Rf|r+ zp<>O;NpK~= zNs~ef3VTq8+5J3l%W+EZ+L#t!ENeC9D|(g=3k9U2c`g!j<%Vn%(dGC8l7vO;2wtZ}>#lcB2HjDtCO86_w9s>Ub^YB8<8l~VK zRONGZN2*2h&AtIjv#-D9odV|u@C)W&QONx2Mv(d_Go zzfM)#`*D!x=zTh76&>s|;oSm%7Kn(xM*NSVe0qcsr-!}}-uiLif=nw2%QgD%L~fV4 z1B|M!aot`xxnq9;NGzSC&9(ZQ(O7pt+Xax6yM1uj2PYWJv$FcWz3)4R;wNV4D{Gs0 zgw~7!xIlBfK1T(2)8E`18nP}w5zlXi==okDwA*?JyEBj;4=m6z8X@90{9t>3fUgC_ zR{6rqA565)U+c0?w*>ka{1mU=DEFA4hinIsBMGBm2{@8W3T3r~|O%8u}N zZ`+Ws{~U}TFtqsxZ^#P$z1BA0f|S4;)M-5W=lU0WPYi)b;2wB^)gUHYq2soR zrO?GKz!+^nN+LR@gwiM^@j{vmU4R$r%YgV_n_qLpF5Fq>*Fvz9GtRI7zCrZ0I)IgOcA`{D32L3O^A1_CGNn?*HZ=oDZA{ z1IZ}Ge2{ZNe_ekgYCa5Y#*Dyx0J%Yz|3~IS!M$=mG|c_)rViR_H#Lx8-WpXEy%={mjWbt zM}#8W3~m3zi2aJ^15=A^V-=2ez&4LdI&j%X(MYvQ+KXTSM;`7pz>x_n>Oy!mEkYi~ zvwV4>MjICj7s|UcQWsY)ttu}o#QBku;zIa46h{s!xBEZZ=AL*9zIOCsKNg+w%(j($ zn`0r8>`5$J=fXiD{9HsokFLYgH;`Km03ScP-dZaY0jXk>L_f~`Z#YJ>W}c)$UKgy< zV7xrzz@0;vc>snY$O&peq7-)(BJD+&$3Y*IAKkgU-d>*VaeS)o2Rwhiu8S!<3_AzI zYP2F8KvC>)rC(E)TVe+M7Xm`1&;r3Fg4{CekJElZ+XV!BA0z%wh&MQ}A?Xxjg?=23 z*P`(~8v&)c01yC)3C4h@V}Z|;M#}v>n(bFN@gku>qYup_=;JLh->rE(l&|sq9O1`K z?s*dBMIlk3w^cw5zer5(APQ2vX609w?Z>Gf3;*71_!8@$a=AxO6`|u9?0e>5Am6a% zi*1Ra{w6Fj?4y=JYYcsvusLZY-VIe|2woGwGtv!hofErvN%{-9I@Ve?eRqwAlTWk% zJJ@OL{l2U3MW=^bw+uxb!U{rtopPi|{%V$OPm&Zw*z%IS@xPc!p6nd)O z^#`o=jT6x>$>xE!2KG;z1=+|^hRAM>x#iF&a?VWQJ>i z*dw^;Y%cc#3LXSBD`tXj?8QpY@IKPry7}Nguo>Nn4w(-e6N9l&`#WfPrSY~Ulnwe9@Zg%geNFI~Ks;H(6muyv*jDS4HeF?bD3mZ(<<`OQ# z;`ULBxbUD5{shQ9;qITHq&9~&j^5tT+iOv6^BcSkD&K7E_^q}Ys53i-zUg#=+ zO4Np1huyUHA*zX>!BVACg_DJvYCA@#Q^s98ZpsWqlt~AP_6Ttj*E%X|;UG2D@2;u{cHtR8f|@*yx0muH@1@gJU@uktPGj%slA=!IDAOZF9Y1l(IK1$* z0b}W!qE53xkv=L`9^t9NJi;jj$fF|)9>UK=oq1gW>VdZja|quKb=sJzV)}f zD&0}=%VPqFEUJQ6PadM-o6b56^fH~`la^LjrunM?>*6ygFuaeX506qJX{SHONWl&8~ca1%&AviGKJECkcdoQV3%R!RvGD87#;ajE3z;;^2ai=U{Q3W-^#f-I&z_mJlG*}vW$c( zrkKMJ?qttHf4bC9V1K2-QQBWS>L*o{(XUSFLO&^~tW?J1&ytm0J!%Ro$~4|`Rg9sB zO_0mbk_y~3u(&jNDDE#SDZr(yAq0pp?TTOaxhzgi08(diN6wWW2Qf3jMK* zQ4^!Ors2$^dV@?q`>6iUL@}z3L|$m(=|`2e+&mJF$M$)Jf6IJ*?9MZfY@JL$`^X-d&_1&6{L_!@nda*`qOpJ5 zd~N+8YQ7#L$t|1kedlWz^Xs4Dhk3y>V3%nxrKFYsIYFuL*E@uvuh(9$!^ zm_69c0v~J)KNPVCNqMXM1ho~Swhs1Du9#2P|3T8l#3RZ-ke zegEb`+-!8#{m}xT*f`Vv==*tsCjZ6#oBzyy-?pRw;Qof#1g1npm;deieH(#F?)PoU z6&U+>?)MGOg$8%#{l2dCxii?Clnt0%PQc3js4i5O@QWSf7xuHpfa@zh6vO^@3`Kx1 zmZG4m{jC4+ejP!d2>Z`BWgCk@SUC@{@B^Ry^spYUQyz#{vPbF%Bd%8mkz^u zEA(&|os4l)#BuK6NOL?ERKmT5mi)jzm1@ZJp3;#2YUlPF+5Q*{VyZ)w6Ycv_QU0|5 zKK<(uMu8absDJJHvTOb8F~pxn|4O3%)z-GBjr!M(e#E>Ioji;4N#wN6k6SP?Z-%PmEf6NlQ~7nQz1!y_k(_)(sH;7e*$Yx5E*SXdmS2C6 zyidw6UK-T--I8Y!`PQBuHJ`R%?6`er&!-IZMeM70oKM^zKS=(&cZ3A7)BL2qOg9Ts zISn(g*I)(Ao1(b?ZRyQ&|J#G)$R3e&(;~hfe9fWc``@8YAY6uH0_LJXYro|$!uQ*| z0w5kQ$M0tR{R)5Pa-Z@$>&bBR-;Pf4d!pW(5q?Hl2tvhK+^@6YtKY`{YY9@C3~-c0 zD7Z)HYOG<%<;ecS|ND%h!UM478O4W3<1oJ3YeB?V_Y zw5#3QV)QrgNdhzb)8!X&w428d08tI51FhicAdC2Q3;IJD5Qn3&6Yd=PDfYD!z~Q<5 zFOEUeSK*>VxZ>m4hT2;kN$xt_^Q!3IQmx8$ZyQi|NIMTi`67nYz55Sh9>4YqIgJ0$ z4M;YI=fhjVz3ot7G%k{XoDs%BDzIb-b6;gnty^yRRphNbk>;*@4@s!+kf`r-kg?OO z7xihEyLXS&4-Yj#(6JW10$_qmLl(dc-smt_z6^hKtgQ6Eg#HdsRrhXQXYmOt6MN$$ zWlb*kwi%APL;fj9JBBoAaCGnP6J=%*-DkbfjLZR7f;F-+I6vqoZ0rpEOR&;G9SUO> zu6OSSfG0#Qw7>Ubm;UC^P_OUMgV^AWy!@0`ZinWAnvFQ(gvbkIJG4YLY9nNlMBO_` z3mpgiM%)HuH8R}Wo!17AI>R3r!$m}2L|l!C&~9Yv3bL_;D_9v5T8IYS+h#k03mofS zt_`Kve$#XLl^Mq~4uD?9xOeZ%4SW+5)Q%mzr4QO%cQ7S=RL^A}>&GUq>lx|hr@;x1 zP=mnczJNI|(0Z=>_UC~g@Pw>Y!0hq9`2D)m-(z@x5`SBx;@^l0ch1lE_d2D2Y`uSK zJuhADQ<{7B3@su{=;;bwk7q}s1${+`w&Eq+x)_J^3C%rYL&HRo-s0Ya=ALn(A>zGP z=o~yj1?el>so?Uir~spA#tp~qcQYKJ$KdeV+_O*U2vBnKYK1OOU0L578m9AuN|o5W zp^>%_8^Scg-@KZe(~(avsmtNxD>s<1PmV2e_0ov^x(>%Cxo6GYU%HW@D05?1k(PXZ z=8EQhu_?!khiwNev3ZT<699{LK|`zfUx;&)8gA4n!zL|!gmFn1s=&4og!6P6#FK9mJ!Vn8Q6qhx(K_L;#x4#fA$C6mm6-x z61Rog&tg{Nuo@UKbDauLNpzGjIWEJdlU3}(vz9KAn>W3PGeNJDalz(Zdke1e_Dx=sW4H6n6#z!-{){+S0sj-c zN!AOkC33m~vr)`q@LuyL8CbjE}hX-r^J1ckAp#i!YH$Ek2bG%G{y*Ch_VCDEEOTUSyw)KheZDY+{}_D|l@iIH))K zl~q_3pr>vAe(2>q-7h6)=u7aG;I$4&)p`1$aM+mgh_L8i|3_%6VE^oa52MJtnc~?f zo&qA!3f54MD7loBLUy2E`>zsrNPAc92;W2K^v~Ffp?meo`7OB~jv$c2hk4=!AOyr= zT$itpiESAp`nC6in3gdrThXCB{QM($^0U8n z2UV~?BR`Lg24~hQMoeHIZjXE@H~ZUFUxd0z-q;WsCejm|i5{X>+)@&Hh1gi8)ZXM! z-1WENrM}Hww+2s=LGy$JN2moaGI=&ap&j@^Eir2_CAy27Hq8a-n(h?Nro^5(1dw*J z|FC_gp(MdDPmU2Q^-(AH^h8DS8o6e8E53mY9>koPxJCo=@RP)JbM6!fIC6DNPbIVn zA;Hj-BF87>`3353blid#VDwunF8i|X`AW)YM5q?0@cW=bVf+R@jO#M{T$hdux82+J zhCkMiqxy3k=Hq_=jSzkuFBYF*02>)wz`2PVa;5?xjbT_LRj+l`>12qD*TS4A%Np-rvM4%5d)> zcBB-eI>Gp_MBLm{A@-x(+Xo4l+i+o)yr9tN;of#Ia3WV*iJw~*1Wt@`*U!M7F%H_~ zvHXlIOJUw4;ETr{TYnT#UeHJIS(mYfw=6*gbea|Dnz1YvjO>B6`w4{5X$5z-{Rd9W zbk~2`Gpc%D_zB#)CYqX^AO5M)0|yD0?}Q?w)Z@Ad^ERK-=XRg+6s%zX@6V@PVd3I- zJb!|}kGjCkh3ndJRS*@n@#pUpx4qN5ozH$A)P2gw_?z`(pHhTB##i8ZEB=0qKU|+K z;>O{58~%>tulF4?Zi@9}nK=kQg1;xD;u!xYv=5yz)>zYi%l0amL9gY7O=j=s!OeaS z<|MLAYtI7SY24uCJo^}j{3z;%;TZ~$k6HZQBCOzg??w|nZ_x6~bv4B8a&{vX!FV9ZE@5Y^d5vPqpuy&`1 z!3+c!?(EOt#R&R##xr;xg6hse40;gs>`Y*=`_6Omp!g2mi1S+Jy_+HO8h0MtI!5t# z-?^oE46eT?Ylj!GDg=F^w+*|S{{9djs>SQ{K4Sf1KCmAr+i<^ht{D`e(OQZbKnQq| zTw9J8SG^rCn_iO)`SlxSO9U{X_fJUgi1YdK8eVW;y2a`yWRaHs)C2UjL*`0QVn6~G z#!sasrk+Buq@@_^n!{Q}(ayp5Fb@Dx2*zUWu%DqTNxn8OpJPm(7yihQ6l;vh4=saW z5tl87G5`khk+euXf%gE~V8%(1jGI*Idrv~9Kq~Ha*ZrN;bb}LmTbOC`oO%NL=!Sv?5; z1EiSiGG@evG5{u^O5hp%)3bvvu}gN)GxP{mXF2^1SM*(@S{w(OGb!{9z8N4j2WvvH zPej*LAVVk-bRCJ7lzB~HSwQpKd%>~}pt!h^LXUIaid$cP-ab!~cwx3zED~_lQeL=6Fs{O zju3)U>R(4%=og%nH|%pL(`HRku&%_xE4Z@qxR!84gu5?Rzez>>k_}da%L{Rj5Eg^- z<2?!#wOf>kawEQ1*b30)xz6vE;!SRNX2;=s^eRmYao zH;v$|;#1^-eZnSgiU^gT4Z)|z;0vLc#qTOg?dmDGirGI1--@Dz9HQy2vFsu~#DXlA z0&K(`f^-XV`GTc}`F9K}008aDS;cphSciKW6l1y*d0a+66eY67JV?m{>uGJ%aq~() zL~^Bo%BX_NP5`kXfai19{od-6F%w6J0nBArAbTdhH;ZjusC(jW$u(G4ex2v_Ds9~q zeeuGJX>ZqxD zjO9+_d{TC#k6blcOMxF<^@7h1-_UxOvyR7!IJ; ze34mekk#%0ZiE`nkw>O}$YnkWgoOSM0yb|&MRuE=zRM}919_QiP#sDVhvrl0829f+ z892uc-Cs?@&xIJ=OV{OjFTnTIkSWmW({h5=0KSX{u*68^dK7UgWf{R*iHxXpBTU5R zJ0j0chW*#k-ir*9E97~72zStL^u78%#0eb-=P&CU@gfu*JYAbm#fnRSJfURG`YY&h ziq}_vU_~5me>})rXvBIUzgbBQ|Mly)0xv6HzZpK*fTC*B_)C*Y5b(}a#KI(ceSrNF z!0rLY#nmCt?qZ*?h#HLi&fe$=#oh!U6_P+dj43QP-I3@+B4}A`T{dGx!tb+xKpu|3 zV}$dwjIsDSheON2PqoS~TlB~{gu^~f##l9b@2W2XjibaqAHt#VMtniznKkUmSo-%S}Ps(!tl=oFMF~Q<*r}j68 z{Y^f#zumdfY4`Z!@CR}f*zd!#->>P|d;J`VZ_A(%*egW7a+>q@uoy}(<> z@sTz8?qDr~!OBsAmPCvH8k6&k_}{Ti49XyXESgUyS3pj3Bf)I|4$U&;NYcbc*9cj% z-0K`KXOPRh>W470)#R`G6?ngxZ!>VSF79A1He@kcFufcfF223rwxPNn#227u)!Ge|rQ! zDS%Pn$HGe{o;+m8Z(qjanT4mvn2~41K1ECj{6I4>hYURfeny=RKN!~(q6n-V9m@(< zCPK*uIi-WJGJ!bHSV4hcMC8)uTNnhv6~a$|E$}N$(p@OpzLsoUonVMBcmoNz!M+j5 z6EM^CMvf+#BVZKbX|Wu zyZ7>cLj&e%(MbuQ9MOmKw{en!hywd#$=E6XDZb({gE7t?$^?te&L>-kEQ`_H@X^JE z&Xga{za#AZ)QkoP4;%bzHFs<2l^8C5qzm4hIg=RF7W zlY_@$l`IX_QAi3^;`$4%CC{s%dT}rSsmY)_ClLjG`^^Q+;P1}*9YBnEcq{O1eOB8Z zKj7E#vS8m%AdX7Dtm1Oedm<={w?}ML|==V51+l*aXtuCN;mXF30OVm;=1#9qO& zmli!iJt0%#njgxO4u-P@xjPsF-rItE(S8U+7}b1#Z|Ee}XCMHjtvY@C+lWE{)u|qX zA{ByVQXy#92M!@4)fTX`e^y^|UvOG|01J%JJlOJrQdxQz45y>AwEWDVvH_RxT6XhxIPzE5olgp_4e&a*K87(w+(Bw;9TZu6 z{S(pGE<;gke7>K)cB(#GIpj>^gEh59KGq<;X%7;FX$OsMb|T2pzz#lC0->?xqQBf4 z7qiq%1{uhK`elQ7My==0w!YE^p^xn=A|bxuk9L|R?z?wd%pd_Ec3R>}HL){4;6hg{ zJUi-Rlz$iju2nk7Kit~VS^i-!UMR=$7Jp8qqLc_l$)9F8+}kH53X^E|^Y}oh<&Ejy zJ~q+lcfr2wec`__T<^eljKlAn$9@f4nx$`IdXK@YB@CkPpNaUx3RZ~5g#}_iGE0gK zLR%W+%!d_YjB`bQ=uXY>Gasu)YNFx?N@wrP-=I|ZqiB1Gdt3J{All~c3JklBCh7y` zjyq^Arll9dY(9*8eB0-n9KXo6`Xy>d+1(9bT!$^tq zze20P0ZNz`qWu5md?qi*LRT}5{6ypWbfY>`e-Rf8L4V)-_aSH#T9u#-B0{_d2G%5q<@WvMgh{*O;JYYu@jV;}VQniMI0R{~@*j zjpZI=s@GTzKXiQBh*ufLGqGsiZ@)T0o95o$ogaTHfobYu`+HSfZpOQ} zJH%#D_Q7_Q)4jbh{1;BobGnQ5yYt{?A368ec$jIwls3;n9n*R~=2OD&TlTbnVSPi4 zcfGzz{C@hX%oeS$3jL18kbo+kQ9@o3GDzJKbnj&YWBWWUkDSLFsa~; zCbVVB$g9;gM?_TkbzwidT3!7@l>H2Z2mOUUzg@4NBIixkk=t$XK1jCE^LDWp$xrKI zFLGllHVC*F0iUAI6aehE5-vlzc{fDWuj2i)7ch3Ep+wfkm+egAs<{WKl@xlc_W*?s|r zxND?PrJo}%S+K7PlJ1@`-@%J>3GS4!zDH^EASx=v1x^SH0Ud- z7OIyFy+p04Tv{xz7~&T*ig5P{Erm73@I0-+^@5%FNmunpKGmUBR>JwTVkPVC61s+l z%E~HSN|FkX&Siz=XsaDhDjCNGo!e{I7sUAlY=6KqX>@b%!Cnz4vaZ|#GA?ihPIPzQ z4u>c>7~l8cFW{H61wX!D;yWeytHNI`{tn^~oWt{TD1$bCk{d^$M6m^iRMbH=%Vl2E z3lg>)D6M<;ir8Du!Iv1hLIKMM7Zs)j!Cxqagw%l`Wcv`q&Hh)cR!(2}S1t(RCo!M( zW_*iW?-st#UY`_{LWT|?K!gZ#&HM(N4f^=1P$j7jHKzmqP##`5{|)39xsh4qeu250 z1>ijbD_q^RpQ1d&kIT5F=YQZPS9f>aYv_LVO|cjw@0uHpu`YZa z-Fv$HUWZDaetCTXujM7G;$YqIUk9# zpULm%afewGrsZVhq*+_&clEqZMP&?Bfgy_4!x)6CDq`t^EO%33UmIJlfBiJJN1+;l zw%x&-%kdp+y~*&EV+r|L;AU4ht-l~>@Jv!)pBPNAL8wq)d6Xhjwdm_=NtC#FAj2W8e&)vob4 zw8;c@2tG%*0Z!IJ)5BmV!*ont$>irjpxStmmO$`HFc5-XF+ZVueh2`l3k?Y!17#xD z`6!7@$r-%OS}ZuYtxi-5ltNB}zi9jr0To*nlU|rm^-(zQB=f20K?Llsu%aDrIVFJ9le~2KwGB@}XZR*++jT`YCxAp`tsnK%qjyoo_;dtK! zBY*vOC@#7)qa2X1yS&2h9DQ=RyPls$MT8o99|1NCxRZ?;7)xZhv0Q)0UH`nyk{sHD zKtm9Wgx}*tzJ%=DSa;nlCPRBB62NrK^Ux{1DKr|<#w335H6e74D7aPZS7CjC_FOrj@WEkw-n$&U)c4dBtIMtuLZrJ z90cIh`*m1foJIcdq`}g{>KhkOp}hcNLdqX5FI6KKTqQ=Eil6FI(6DwnFtFt}_FM+# zoFYT|cEcuDBMM9RUXD*L=h^uY`D4te(m|g0VMwr(`wDLQbcA0d(F70!`>cCgZvSwU zJ@@;zn z6Mv+)GssF1iTvgV&Pd>#L_hqAqkRte^2=07Nj^bIExsy7VuM3$8`w?k#~Ra!W6k=Q z((nWA0Cfs=#;<)(B#)xtS~K}gdR&eM86{S&=#PLGyuxevKp>dh)TtS`b&%kCkWRND zM&{on`rhbYU;}n3s`(G}-LC$R{}bKspETI*FR?Q`feh{K8v}_VdnR_Aqb*|vW?N#! zmlMXyFDHzZUrrc{BmH9s@asrKerOPgSN7L#2B$)z@P99&4{kXV<-OX5YF+~4>7;+s zKCuqbpbQ{a@Quic4biqPSVmF}?-1?crn{*7MN{)}wP@-T{uJQnG}n!u(mrhyDu(+K zuuIVLMiMKg{sT|>XkxUiw}E{=PV4V}BCL#CkY)*dc^w@L8PdgzEH|*%r(@gckj%?o znHMA6i7>6#%(TnWE=zAuOuC{*RgyCKQ==wbUhYRAHH)v}XOWtOQ&RaOlBOz2BCIA| z$DE3qIvRO?h)^mYB1*OXu?AK|eoK4I+E3smqu_HFhw%t*@WQS_zr3S-Jn4NK4~k%; zZ*Z$uXCb=M66(~fwh;w&s) zF>+$Xc=UOz-8&-f*0Wvq5ADL~k}Vnq)Jla0_hY7VgFymH3OM;tdq(MZ*!!@sDb^YE zQL|LPdr>f|Pzwv;+w`n`vdZ?xy(tTgJbj^iq6&4hd~Q`PUXK7B@Ka{+Ac7f(c5oPQ z+-4meKLA34)f0eDgn5|UCE^OwjX9ab4mGZQV9{b!+OhMHg`J)RWtV_I(Bh-Ybl-!* z&#J{;2d5yLB7*hGQ~leXQ4oWVU8%;^zU+gyxPw7n*`NJ~XCFmvYuwNN3J(Z+%btY6 zj)kF27|8TYuURfC_VS6$EuXolTfsOUD<{sGhU%Q{vLb!l{opHzCs+*OX zxo9i=Hs;5xZ0!!&S~*(7Xug3_gof6nZ3dcM)EdyXP1?v##drr{28S_!^#J;W?Rkr) zxR`*sL#*|#x*yJe+*PrOCD(`hunJLW0&97Q69_M7oo<|DUp$98$W;ljE9AQ*nMaY z2iaa?)B6$L`{|JB7^4eb0$yF_6YTSq1fun!&{bGfA)BigQ78wNr7RS_K)69K<`R~< z5qa$)&R3c3HKv0Vhql4t*iM=w4p)mL%<51{R8qklBY$4#T{sHQOG>}IQkl0%nOC9A z)0BDD%Dj2XybG0isxq&{Hu&rTQ1W}2Pykg!^WtREfLt7YFN|6rz%mwSg&MvdFf(vh z7=;3@z1(#y&cIy_BH+^IvltI#Ur_ta{N-2R>;=xqPt>PLUzEP<`nBPt6dUmW3I<+$ zWz$~!>;R&}A6oJl{XV_}%ZhD0crToAuVeCa$SizNF%iU|TR1$4yt1VH-lcgSb3YJh z?d`6w0_B~iSR0CkUpY-;%+pBRCTk6}!tR5gTP_Z?#<}YUpT5fOEL9t5y-*t(Xr1S- z|6CGcS3tXvHFVACtLnpauEtISU|**9XZrEe62aVckFrM<(C&#&+$58=z-B{#= zap1X*dV;;*44+=KmW;vVXbR0p_}6-^7+WfO_>Qk~&P09=Jsb6rM}2S(W+yZq(r!j$ z{SkK^4qGZ_BH?2`Rx21wNB<^fCv-Dmya0>C=OHsutaeRoT5t`>ydPfl*4ivZdmUmS zhy}cP{oQB?Qw<;_21^~NfSW~*un;mYGCvvuR0)FZgSFxdt>7aA?iI!Ot%^KoW4GfO z534nf-U`dLD_E|?poBQ(aJ#Gp&OzgQbCTVD3*d)gX#XxDTC$(@DXj<&!js{_*3)Y} zFSVYRStWOR&I{LHCgot+_ z-2D75Y-#79CLNc(VC5HdhnskqL>gZ4R4WQxfcyfw!8Pm>S?~=WSAdgmr7VcNEH%1}Bki zWnpsBT@rh)kvmev+}5A7*tPVJ1g7(is#txLu!NbvmYPR18t`dkonA~0*n5V4I}~#f z%_r9%aNqeX<2cjagVyADhqKdMe5XS}9v_ZwT#3@@B0n7GV1~Uj$ow#;5uka{Pi6-} zk8GGuo%ybz=$+#$$4j+W!J2g=*lP1QfdcP145kM_j6!*iT^6549D9qpMxl5fI#@dN zMc^m}{VzwQ{1jb2TA}}X5#kmCU&NIb*gu83Sm;-%!@cbs$k_)$2Ff0L>4o~ideKgl zjlbeEMG>D23|=oh{T_WBi(xh&`ZZ=^kQsiA!BkrItFI!rsMb=leiSQeHazem_>F?PxK9K{1{$hT(>$c$qgOg(5i$Qxw zPIoR_QvX+XJ=H*CwkLa#yKV!63t}-r&Ntlk2cWgiPJo4_pD_U+|I&uF>(A)@+l^;J z$=qWYOHJ_2w%PG)CR;QkzS5V*;Q7XM4=&Yt9=o)4v54q^4}3Zr7a&{&jq85du*mi{oV- zg6YJML0r852)Jm{Z}8}Ef;y6^h8p8z9ebJO4Q2tl9Me2NrfSRv@Y+B$Il(iuDf<;I zu^k_<1otp1JbFbuEJmassWstj#q4 zTHm+^KDn_?JJ9wm;jd`#v+c8<7R+@)?jrZ^W$vq5a$S5+Rq((^b6ax7qPrzmC;~0H z@wNMXN=vR#7+P|LfCsXLO-1Z?$%b}D_%msjd&LysbnLj=DVrS|sZmZk*{TjXGh#Cv z7G5-Hj<7_sisp3qSX(VpzEXLjxun2jU0ngY@YV79)gI|D34ic2^5?Wp^x4UO1uO>l zow@6u02sz#A7*~-NX0*TQvpJlI2jp-^noILe8)y0#_!qj-*`lghv>A{Zr_FI{Dhol zBr1Fw^seY}EU!Z);`h`yvx)4(S~@C^Ylafioe}!s@OGO$VTTiWpR@Do!&yB1PIEUa zZ|FxD>P_j06n13f9eOM3WrV0aqj57!h}}FL+QNCLDSSABBWch1BfGoRdlV0}Yio%r zUU4+fUH3I8$Gxpb9XQY12#y-&u6qJcvyF3?VhM8#I^h9#9f(s1U6y35j>*sqEh3j! zFzqJ&IefwOTOP=B-VZ0-Go5x>b7B8cZix{|A)D^0gtM< z9{+cf1p-EIlpv^4fRwh9MMD4~zt5Suce4qIZGX@I_xyR-+_`h-<;*!} z&YU@OW@d!7KmVIp=GlW8|0{<=G1Y+lj|k=Eza1OnU9eBIa^t??WQ&!b?3Fp=bI@vIEq(CPNkZh1H*9*Baux<~7^4) z4DAPVAVKehzDqZ$TZjoPk!gXEDf|_#vkn=N&kzi-YQaeVcXK@|W$5xT;y^HwW+Mx(h!FlI#*{d1&}J0;ve+jGTzWRZY^ z>KPlC?%;8L%b6I?o&fkXtfvPejs}}HQqR|WXX^UL5B~=MQ z;)eiNHp;9rPZjuv`#+l7>0-fGV4p>^44|=^H0>Yw`nJevyy zeRwMB^#TezAgQr%0lDz|ix9%Wgjema9>52W-IHjv8}m#10YVEJq%n3a1_wExE>bCh zyS#*M5F3Q1qj67&qz-WQJiI7DU1_~_YHG2B1_S?6SFg`XcOai?<_Lo!}AFSR_l=rOy zEhJvW!W{or4b#$kSdSB%9`ZP=YI=Ua-{hq%eYJ_Y@0`jR{kfk-W(o3}ar=ylnSE!- zy&|svSl=NxPrsgvikUMEAAa@4rK2tyuI$Y+roagc?obsOk!Pt~BBD2DNAJk8;+>mK zQ7!YL<2hhM?(xozc9gC9TXBSYzjI^Y91_dgZf^9-?C2QO3O4d*x?h!po;lfFFSPbq z2`M{N@3sCG+UV(Zh`WWyWcB)rWB9Jj4xDX$q%w4V*X#w-M8(aGUW(^kwlyik8k-pn zWJK@G_mUulJM(UfjswAz&h-hm&^IG;SYbOkZ?zgTE_m?|3 zfobV##9)rd=il)P7)tvp+$HU$`*Y%A&H7OD_4?E|3EbaEe+@NH=T_f$1-6liP52*l z_s&AwJwZakP-Sn(CpvtO;JypZ{=t3cm}dv~^)=53?k@+olH)G`!6)YPpAL~$zhuDG|>zn zXTIUsy7z-#Uo{SA@ppW={>$IVKa#H~<@;{x8pZoWepfj0i+OhCXEmQ8Q|6>TVk{l&>%4jvnzUUC z9)n}OUaL9u@kNQxW`*Yaz|J3FN@?&w58u-491=NSWEoSwbiz1Gu^xCT@w@~;bmD)U zL^GU3b>76A!Vl0A-$WvzrxCtP1^VKkNWkvRAM!r{Z`z8eVm}n@UXfw{iEl!ZH2Vf8 zV-yRjQehnC*;!oPj@@Ko#WCx$=lpq9yjiI_fh6g>{HJ zEeG?$8*Wbztv&%EXC50`-MLksbY5pH<$q~fuNB5}Z>YJiIet4kC2N(!G!k*iXqkz%n*fjfb?sfJdMwx{!4j0d&vNg}W2#oFyClqI52 zijQhj!$n3!Tmu*EsBHmdeu8b~J%59J4J4&8IZZ%k%~e&%{LBD z&9X-OtolTK%8)p5!la9)jJx9M;S+xP(-EAvtmiA`$Y^HZqKz8k=8h|3n%N@$7vo3#iSr^(neW?M4pKHNxK=qh&tHRg1jU0y5SU z;%mzDE|jgL{Amcqdxe?@8w(%rpd?ZAh7yX;-;9&#rlbE}{09qJ?a~E*B+rkP8Q*w# znLn22|K@uT_!~artlqbBL6Z@w=I`Lw^QyqPChibyZ8Al>49(RXg1=IE-jGqC&m~9X z4x~!q8Yhowgg(tMJ8+Pf*+J!Buu^DityYs329%*ru}c%5Dt&nGTS6Z54|u!dD8oQA zgk5a&VQZrnl4JkNMmra16t$QzsMD9>RkfGdVsf$ta>|J{^+tF&`4Ta=DFMbh7p%^~ zp&TSVo*3bx;DMn=_!GoW@W9zdcng8>hk-IH5&Fbyc9I5k=5)->>JqJdjSJBo`U4(g zD2yra09r=;Z;a=#lx*7nW_+(biM8^5iTYl+CV#(f92?buH{+tv_WtMrzWA@ngd&fH z7l;%PQ;qP~puq)v4dLJcCds1-P*0IAC(zm28QO7xvWkq_ad|_72g)gLfDt}cpx2z2ECU_p zRm$KyBf%sVH?eidDP+p%i=@o{yqHFDmEZtG1fqS{21?k)0Z1}W6(FFH|%KKChtl3}J^WjL;R-D7@NrR5EI$jtcBb#)xY#iHyiO1RzJ2 z!;u`H&FJf^-<1~n)Jt3R&LoDwK2DSDW=6o^ffDn$;DK{EgZDr$Ba%n;ipNhO0LOjm z4Wx%YIUug9LmhgoBo_r|IgG}RHjtGm2o;`_F?JPaUkT2P@S~(1RamDG|F(TEZw_$4 zGtmBnKt808Sqj6O-5kz0cfs{$-0m!`X>wYr`YP-w0E3V8QHk|V&-~8z6RBC#Tq?D{ z(h>KK-R9FcVm#B@qm9V%q_YJe)xMt-P;3g&*)H8h;yQg;#v8TAOZxDMbST}2BX5H| zdjy%aJdjS=A#|XFIbXlKR0;o%bV?>T!vC^%Jo}SWp6xi-(>RT+xm zvgg5YpIJ@qSnge6xp$J4=Bo^o^DZ3J-H7DyBEyf@{v3KZoi{uc{!<8$_33{b0o^*e z2ne4{KKm_7RPyohYm_C>2zNzAYD=ugNdtJu<(iF%Gh~~xtkn?!tp0S;j>Wyu+If#2 ztBP4;)GU@{)qFL*BOT23HEQ3Eo+{lvG?-y?Dk)NNx7KuUXG9A4#7NvvILT2vbXN<& z+*~y9D_5HBMc{<>HYOvyk7M+XJVL)gvSd~C>8q(qMrd3R5KlD?G~+CqfyJ$CcN|CsbMd!0ZDit)KrpgqV|atpN%B>DM8eSQ{S@>h!QlR> zW>=sHY)}x`Cz43d?>ZI_GA}N^&^)`iUtsIVk-CuD(?pZm#<6ddA}(cd7)VNN$)`Qpek#SX#^9~g9m!d-D^x(c8^E%a(XO|31 zycZ?Ii&O1RQi$MVYhzhY|-fG!B8|-#;cXiV782pHRQHMvbRlR|Cy-btFRpMlwRw# zuOg&nuY*l@6H{gt^J=M(u~}_-v~$^h@RkkN1+F z@8GeE(iiNzmE2Nj`yDt=e9=zkzDH`g{6h`%)so_#c6=sxSSInWl3hwNP<)|%*0(N- zlNvz=QOWtE+_vI_)3U5RO1=)azQ(DF#pHg{gGUDU4>b#d`_DGd3hqD0JUzI-#5^^) zzn9s=wI>Gm=Lg=7jrCq7Ds6++6rAtv6WA#RY*6)k;NrTZryZefjsxfE#l6fSuKcYU zfE?&On(mH$`YR2WACCLAV zt%9i4a+OZmNNaDBKRUhwRoHxCgvE297+w2RCVIup0Mg{i1YkcyYcbZAZ{%5Ggm=o5 zk#mPU^Np~~iHfT^+TZN3*m^(l3|6>i3~(htkrPS`4IS{#?PPtOzb|%)cftO_J+VLz z^QlVb4VJmLAA%|E?d#Y?S$N3bXElhr7$2~gk($A|Ixkl*sw!hn&)8jFYk%UGm=m38 z)5TQHsnUTE7HVDTuA!lWKUis_RJ!tJr_yh5{@5R@@+pNI3*c)_y3&edrQ9+MZe_dO zd!iiN)sk;So+E@Ap+wD%dm0PhW4Oagm%XEex$&|8D)D^$Bfll2e4F2orTb65XMKv@ zj-OFm0m+N=NdP!v$W5?06v#M^aM3>uy>CaBjO|4epZGo>_LTV>^~ButjVG6 z9YXs$1b+QjZ{nfWcMOK4|EpIi4~2C~-{Lq6U3e0MzZ47#_CTF%5ggds0-3lg1S-VI zgdIgcHpwSA1p0Uv4f&nXQ}AY4-I~uup?SH}{-G}FXt#?x={9S2xs=_^D42=>Svpru zx8LN8P*_hM0x#3X7g`&Wc#^6c6CuoC%b(xIH4)@%k%jRZvN3jLJV?)%F>E&B2~kzy8RibR9=VrDz8d ziCUF!T3~zP85zLjt#tsiuGa%t1M`kp$^fRu<4c!SV93CWF#Z6G2Vx9d#5=aZpgf+* zTP%;)^TIrsiA>-+2^2)ROJeC3BaF;zzdnRcHQuog8j)dLkj=xlDQn*(ZSDKlXC|~BLmUfyI zYVL1N<8MFnBKn81^tjNfG&M6R&l^80vZkh7u)bL@d?>r0pXXHu0%rS@><@L#t_4NDO{+;X@I;6O^$atU#hi>2rd_{RjzaVJG+LVRzV-WbBQXui$TTLjqd%S17w=0p8Z%nv zCOhF);6Wk5#UyF`E7!4%9^!#UU1ho?tbcKY1)0l4!cHJ(IYpwb{F-!Hl{X@H5)OTt zCbHBBnGAgTLtqM&#Z)Kzyh}*pfu@qC@?(1fiA1_$tfOd*b&T+cwtt@C zjCD)x9P%mtFf5e(KhKn@SzY3{LZye*%O>Tb4bjpeEdtutPH=B)0)6 z_Bl~t(+D?0FF3J*oyn-*IZ;Mr2_X<9_Bf$S?CLZb`46|p$Y&Ng@0mr;__a@9qRu-r7KyBRek-f{ZU z9(xh-(8Dp*Ju3jsM#N#L`vZo$KQWFwJzg;NvWRPb2aQ0TJC^dp;qjQGXO<1s?r(U=7f8M^M}dm)W;aiW*aNeD~S5(SiQTcn5*?Hgp~y%Z_kJk9*4N?+Fs4|{IHJrxvn z4nF)OpM_sU@w`s6INqvwE>mg|r-{cX1VaqLR**9l$h5~3a2hAuNC0H2>TS~kZ!2)@ zrhP69gUne#a-lhZzx@IqQknv(Bj-jL;bkOK@rhZXyV8_#4BL*X{RNU~2x*F>{RL@N z))OHQ=CW#)mt5vrdp2Q|uL8Vx8q19g&2;Z!v$bL*_vZOE6;jlub*qg0$MZ&QYZ)F3f>lRFMLvSPO4V zn*9R(lM-iQYh)KSM%t5=6i_(%`&D{Wv!zul)XS#CN_lx%zu3=y2ig^)9DTUGeJRwC zhJ|TqS5#DP77Afwn#A9s<^}vcn+t|Qn3>MuZ;5#Ze|wod+wlXD`GHqsW7D+3X)$gi zX?+5AY*Lyam*Ww|;Pe~U;53EmIKT>i?q!xGjZQ_pPcu(d_*C#fO!GONZdzcMJ%v(| z8K(vQX^&F8-+Wb|QAa11yJ&xRY6{w0b@!U2eXXs%25+ho*J#s&c~BW6XkN{@yx!;` zePCOUG~x3!MY>1Ve;H%;c?ew`*E*y%|3?vXV9^sr90_DlPfTdHceSb^4Qk6(br3S>mC03A#fHF&!K z4^z;wC~rCVEjO$`fGyGiZ@GZ?iU#km3cUDVpdbFaz$6)BV+ET0M(aBPZ2dtLfQOBg^h@5r+CP2Q{&>@hcFT?lVPxoJy+sDfsyEA`W;51f#2db@sp+!PuAX} z|CW*PD}Fzg?mziHggOKKgzI{XPA>EGa^~qK1{zUhFr>hQ+PC}uuTc!;;JffcNIhvG zNk=oFVk6oPi-3U1WW>th4SjYXvWv!wjcB)MAiZH(ea#5w4Qi3neKGcP!O<5`E~Q2m zQbubo%5`i+eV;S(T}y`;iBMsIo6<7kU+q>#p4%iRTYg+4(Qc{Q$!}gI z8QNKiLOVq|2+zfz(M9y5BTKum6wyk%P*_Ns+xb;Sd_1g3izX;15!v@5#tS#7YwYMR zq;d^Kzr=|0K;-8!}6s@uTW)>$~p)73*iwb)} z6KE6T#yO{xe61~Q;h+@p6Yg|e*_zkIrFo@`hteOw;nS3&Y5W3XLt8Y6YN!xkKg2gh z>CZZZ4s{5;NK>C{ZByb2sXY+{A8(4iNcBt(SP08}2vK%Kdr{?O3?3|aC%Mps3uSMc za3TJ{4FBRW;EQ)oLTCsSP(tQov7gD^WbuM2hgplHNUTH@CwxG9*)FGx6Zeu=v9IX{ z*D;cT+dk1Qs*yrteB1t@uEG+ik7O+x0ZQcCk*r1ee47=zI}J{G8EtO_0?B@dfIIq3 zMfz#|xtBRAdcIn6ZmMFWWAy3m%y&qlu&3mC&!oaVE$~_5`DFHKflY}&knO5KgN{qQ z<_O_pWHN=%&mn?ZQwxL`BwglrNMpD@-)$&p1OKytTxV$piBdzEM?cCJeNnN56Q%0T{ zjui~_e`PFuhmzQ^SF@7mf`fnWgxpy87~$CDzG@&{2X4ra3*Z?5(}$Mk@}5aGC3GFx zAM1T zcKVN;P9x}K`aFOKaAsM5i#?K;#S7Os;xAbjYQFmJaiQkYJGPGuU}yuJA`{0wcKNzR^u%t6TBB#)kp&Y|D7_W;w@Mym9V0R^Y)%le0r$))Wphm zOJnL4WQieOd@Ox6mw4;&%=Ul!X5`590f?Nw@G1{9CZ$!8AX`Zs1#->UJkK zyvRa0gmBuc_kQ%CEg3*4ZSloMdX-N=xv_+^j0d9$p0uV{y?FEHngfFe^35D>3|5tF zFna`tRGV@Nq^#kpU5m=sII)X)Lb}KN3}4|LL4S4PL;c>!`--4HKk=GNAB8V=-jiJ& zaveRMHs%=NXQdzA;kEpQYxctP9uI7>q#mEWV`SFteRH~ZRWkY;qEDl8i6)VEw|p5O8Cbc`>|w1Qc1ANp za(=yP*T#>zLv44)>Y7f4Yy3Os{=qS)8ntI97A(W>(UbV9UHwx#mU`y!tCDA@QqTK6 zOFbW-R_gio)KbsxlS)04dX#!P^ZQHpQqOFDm+@PBY^moGp5yqf?^f!0uWPBNm|yMj zrJeys@Xev(m|T>sVnyw3ny^pU(e9>}^I zc*qes@`@$@pFD^y7yp~+O&L)?FH^ubXXo{ZaszvH-s}?ZSBRnO2v#7#t|37QnIu<{ z^Bka_K6Uz2{DX;f=CF2MUcrtG#0Z1)YEiG3s9FnK-a!5LSkI^)4E}=$0V5PbtYVs=I(-K_e`(OQd zP97sd8R@~?Psk-jRIa3EsRPO8r&bvu*!kQK8c2}yuUf1nDhMnB5-3oQNAlj0Hw_@) zBsE1TsGm{aSZq$qVyt+&@2;Ji2u6`_@Z&L1H1ZD%i}cc4}nq zaNk*yQkU-6m@@9~Dsc{Mk0|uWVvmQ405tB(Q+U~??@&EEV&?h$#XizfmysE|0=#98XNsR)RY&6f#L_9PgFf6S`ek)DSRmR+m%-?2Hh$b>j2k$t#3DbEZ=NY`Gbc-4!Po3xlKyH6K5xW2pJqz|h4)JV`Kuq8IVW zSRO$7mwM|z%ZL?sjFlPb>Ca5`W7B+0{u)QH`F=ffja$vOhNg-|a)6jpSmHnJUUeLRVLeSU3U4$XEATnx) z)8!?M%J&>EL63ov6vJ%a817Tv_|>r zKS{H<!_1PT!O0+k94OhVbbDibep1_Xtn9wT{UNZr>MNlUBpg@lJ;0u}ED6a#ilv z^MX>y64e3y)%3YreAcC$+mOL=mr@Wti?q_Go&KD^n{#^7T%fvZ{p^DMI_fb=q`NERP&jLej`f-I+%9{|U`>{JGl4)l zasF=0_mm5{Bdo?}VAJaF*Mel;nS)tvA?3VNQQ37|{yNE|+dd+CygiXI0(z?!>Du#G z#C+Won*ky6(PbP|L82$+tAigW z%ZS1KD?d}HT%;wP7C#)dfdDekq~_HC&5n8pge3}+{P(Q*f|bwkMcIKIB#`R6gf2{X ziu_G>1zki9eu=-2Hji_G&azLCuH%p$(nOCh@vksK-_t!TuW%T;teix{q^R$hRz~YD zjP|KIWGQ-ehVYxgS8G%Tx9%dEekp4FbCi)-v`m_+%!uHkL|Fb1Gg(}&B27H)2V`3N zNM4W@&~r^O68wp2qezUTST`bP5M`@nih4<3hMeFO9iz5SNkr__voZQn0KLxikISnv z%L!G%Tynk+sr=0U(}$x@&Zg5=4fNrk-N5Yf;=tbkX#f_zUx>hhlZBPb$uouHO%~oR zB*I@Tn0Zf+5;V^#bHBD{N*rhQAk0i7d>4g?FmbrTzmY1c%x#GUWHY%Sq{{58fRK@g z!`TD?qc)=ifU5?sHzGq73>)ov6sp&s5GG`!v5G*46=HH9>mXe>R*(P0(k!*br zzzyfs@wuravm|gjRb7Y95`IQLP`Pe61#Z_Mi;0H6>5fp+>GXfIOTLFN=~+SxF0ixC+|$G2Y- zDm~-0W<(2zR%(uugCW+Xe)v^N`=ic$mfquZQU-3^!twhRem82*Q@kGaz3fn2>y>PP*L*U0HN0Pusc!9jrjZqBT#v74uS*f8|(K!{JFK{TN zF*#JSq!1p)l9;wg2|q7oa7>pLJE$Q>cm*psFcdB7K8hX)4?pCzD3vMa>B@y8bemoi z%4x0`FJeHuVMw!>t-H(?DUob?bU_ilxeaf~#$g(*c!MtepuDDF#XK)b-?iq+?O5K3 zTql&>F4Rcj)9opI`d$j3CVoL#nwv{o?5l)nHMWtN_5^ul{LvhHr*4;OD9wTiHM2~R z&WpYvU9@(D$8BNwDggn>%EY6s5GhB9Y(j{%m98R0Y}qlG3ie-9`0fb`6FnXQnNHEj z(WK~Y(4yC#CIAz!2_eq8DV$)=NaX@`jzns=h{%H75#e=(9@fBM=E78=XHP;f&YOYGN?3(d%NfaQArHZand(rW+>eFPgZMJ=;NL=X*%deoIpQY7* zlHvU*vg@v#i$nFeq}F&T#oCD>OI}H552J87IZSnI(l$TOWlbe^EGF#2Y*nBKvm-X(wP8SMGM`$I8+L3 z3^d8SLC4kiA!2VtqpLTklI?G|BZjYLoJZy-)Ah`Ag%s4s8!HPt%BE(EDGVR)RI}Oic-{i z`pDD*U&0D{#!eXu<7VEJVeTZ}d`MtXZMeKMG)d@OOOxXQOcKDx9z zLklTIt3`?mhxeHV`b>f9Gw1w3pIMGfiREZ2pzz;yVH+xF*j*}Au-J67Bxvn3cZ*2+ z|0fkNh*$+Lx~SA$0_i!$MW=L%HY9S%v#RVN!Sm5cpDWZw zvc@hGyL!c(EQEc~?ik$Xo!24Mn4b7NHnJmgkcv5-gG0Ioe0c4>CyI&ptHCDHQx5}1 zI7rtMH*3zoI7ci8&*mus{ z9ZLOn^*@c;J;WGzTg3`v2ds=`z~MMhe0ks zThhS2f%TuK`3{?#r+rbo*-R#DZ)b|bZ zbfb2B8cYcq+#yxQYDZ?}vkl>F22_S?hHe>DW$^aC>&S6yEiyE9lr7p2%c=BlHWn^o z^*Uvg9p`T&F*Iwq5`$%%_+UxUDlsl5J7`E5*^fHPKCe5X5~2T(Mp>t?=n+;VhC4)C zMX!oZOZN$iY251p$ zmoj#S&2PxnI)|FctG#030yV#?vf`d5I{aMM=Dl>4s z$6dgFm{@I(2C{dkG&rye-i0q|*)lSx1isP6DNMcRQnCU}NIgQC z$jP-I#_xn~QWdbGM&bQwG?pHD zRYix%WWFNaJMouUoD=)lP(b%GXX2MbSz?G(q3u*j9r5%%kyZX(6rW?+ zd!9)Ah02`i(ZAx(^hi(8{HwJ6$QBO{ROo6L2>&e_F)`|U%HLp~=&*{_fMMIr%Q3g8 zqY_o?BWYx^PlFYxZ#G z`l(32lZ4ysw+WMZHgg%2>WVoV816&}3tWY}@JT(xgD>?8WclzkXUY<4?rJQ2l);vD z3?np61&(E@hyW}knZ1d~E_5~t-o79>*f1hOP^5ZCBXSEN3iAQc>_Hz8=T6L1Bh*dCjt~0UHB7d8)@YgVPtmq)+Di?|?&eI~_k>Xl~bthK%l*C6%f>x1# zCE4k;sUknAs(+CG4Z2ZoZ=I#4Fk#Zi@YPtm%h$pf2`OZDp^r2S`9k z+=o1NZ+VeXZ89BOGY`F$O-^_`{5AAxdgvfBAu0q>U3Yzx@0aOjKryNBK_wu}=@h2f z7ACjQo`p-{Mx?`?%)nn0ehp^6;4^A3^#t>NvDcLo67Nnf5l~ai6U3B}CY_ZYeS>`) zLnQI#iMSM&_%)rLm8D-L79)7YAEzRw5oh80h!~E4E&UU7j`bFBM>Cg(wtwH*wlbH} z9(xFQ*7kT&hY<4kxS(Wl(1kXGy{ub^oY&XA2@L_{I-_>5QJW)HExIZy84BZmw6dDX zd1s=Tom#U6%}@D$lofid&FFwiH|r2IIYC350nZd%K*O^N``+9lTt5afrwR_0B zHYtj_Vy8(LXGrACT>HV#-EbFsiiDFR*y#eH82Gf=-Cqy50%2!KrGWtmWmwT#5v{HE z?#-8rf~pvOO?$^SQfj!UUWR@0iPq!&GJh+bBS_GmCyA=_uBrb#&0=W&Uk*XnSYgfG)!b?)*Q9hS=$CW|@zrhidA z`!HnP=4uHe)Ma60l7tcLvRpPw!jMoKRqare^qN2q1`PDc0xFcoSx z%>M9XMojK#sn*_)IE>>zg2O`>0PNx4SNX0Sgq!0yr7z~p1G--iWBD*|>=Ic23iVq5 zafY{{>Tkj7t_P1Z3z%jw0$zDYIwqxyMeyxdW>=`~i;MYI75}uCO4&b{jW1%?gOW~t zFL%F-TSE`;W=pO$>JjuCfv1N3P{q31mnEUKHnAXfNg7MpO7F9W!S`+2FW8a`UUEUR z_|*2X)>CYjf6JT#z5m4T;)GaffXrb=xj-EYP+9)Xm77)Rp_SQ!mWEiV7ffdv%S-6< z_y~fG6|u4|=@OZE*I8Ie`orabX??c~y9$g)woZ*S^|fLya$B z>@jMyU#zJQ?MM&pPd9rP)`i!Yf}>2!Q2uP(Pb`g;2GVHQs3Gcm(ON6%KmNWmEA%fW z-j?K)-sF2RJ+OK){+RDTp3K-7XEZz+vS!LqxToq9*nyYCA5?-$u?=P#%f*}U$~47+ zoWlXmxgVLmzV`?st#!uoDSSUcOx#;yndc^!Gsa~45)Zrnf#OcdYy|McCo?P31UT8| zsmcCDe<_uPUNpCX1AT)6oyP~hD6C^)zCkrG@!gS}MpNP@1!l~cIcJV%yxgR2&bYzj zo|aNM^ZG!=^vaYA)03ZO+*(mFUENJO?1LBTmOQ*&>v%$<5wN=zS#DesdK zQ$D}7-dnl*=N2>f)>*mb^ULo{##c_i<@%Yq96jT?c;?Nwa?Ab9svD*U=5S9?GRf@9 znKNcyC*U2S%@ZqU0#Tq+l_8}cAr`GPX@o^`4#XR z&2J{ZDt`C#dz{~k{Ob5^;$6M;^HH8-0M|dDaDEU%o*JTT1~g_n`6H?JC%Eg2*dtDq>| z!3jCR(5G)McvniO$B`Yejei;jwVdD%Z`}@GaQjyo>uV;+NjgOqKGF}Lp+-y}9ij+f zrSE6V$&2UWMi6Sw;+{i49jsIIR=JHOli5>pc(527Pe$a1nhym&kIu`I(r%=*Rim;5 zsKmy_uSs(fb;0X%?zU%>(rH-SM?W033}W4<3_t8cS@pcv|@OV za;Ci83dM!&oM{rBl*QY`=-6!DCPydr;B88DY>xHK`Y$1bwVUYjx*Z+z5Lo4eKJFO& zVS=pMpTH(kzSU?B;TF4#3OD$7;-`uR3=`at!mm;0t*_@j zB53h_5cNH1m3`nF=HFTQxrM|3-Mt~=?)rGo(8_A%yM+9wh{Pu-Z`Z_%c9BcXAiHY@ zyUwbQtWkZ${9DZT6r%eErL8&x_M4LY@pV7PD^_+Y94n!QNx+juC(Iy@>ygCKe^^f5 zzRa|mVL3!+TPInU_z3jikZN(e4_=$IZj;weMp01N&IoKM$SS?kp9%9p$JI4SEAIqReZiOu$!XZR1zy+G8d*yXZ(m|?N%ciJ=RaH^E{ zSi2!`CXy(N>csU|X$?v}B&+1vc{+PcHpN3c(2Lk#Aj*j1igcV3u6DLE4$o4D(nEHA zQxTtvf-`dVMu%rR*Ao$Qf^%UJxz*kR$^+{7GK9Z-zoxuDDeo&ZKIHvjdH+?#t@9X{ z1G8uIw{^e6rEiG*LaSKtMFoeKFc}N-fc&EPinVu<#6FT2=D|Fl_ItSg$h(Pf4PlOY z)c!)e2YDx>$wQvA)zg<3WSSd)544hGBBjXM^&?_vdtH@XxZ#ytQexVN})KHK2{nFucITQATR3&`!@ag{8CTX^Zvj8eRM(FI=&dl zo{K@Hp2sdM^<Vgm0I3^TgHEq?`+_&ouJ_k5BR@_|39f)(yqL^)U$&h zTqT_b?hv*ZiEG?(O>_^U@J=2rRvyh|NQZ*x!01F@{=pIc_l$e~Na_XqF$Q?vFob); z5&q(aAORy8zg zj8UlY96E>^m_A*t{h1$NjteUU$%*^?DZnT}qc)30i&#avm#rNITv`U^r9zjV#woE^ z9lg^Nz0}9?j|W(M@UJ)SSxVkEIR6*L$BL2+dPw2CGKE1MM!!L!8wU)9{rJ3`b~t~8 za=>{}zFa(P3eNdeIgBZ{kXAbk+sdS^c-Nfn!p^FGbdZ33NPHL$;C;66A|U`}HhR)Z z8j~zl01NBz!71#d|j&Ln8&+IQog7uvT~4o5#~TOBxVY}?kT5LgdwbVe*!&r^=H zRdqX670pkVDT$zyHX3cR|l&DH^1cDEa~dNo6cSz|cVRvq<_$DT;VhgNVF zFP!7_TWdeoQ#n%f5Cq^@-*6L8M^>eoql(MTp>B^vY?(p#h1rnVEjVbt5xJ3C?K)wD zm(B!MPjC?W{iQ?(@9@q~Y+H+KeeN-wK8hF8$L$KUpU}z&eEhU1EiW4vqshvqn z$k1EqA|ro89c@@}I&SGlm61ng!EaB3EV{!%7F_pEq8#MpJwG5Paj>TYX*u~wUJxk6 z#wiVT<)m;KB2Of@>PuL<>Gf4GR02tv8EQxmtx6YNPkL?qrImDF>2gTL!Zm0+s>mj@ zw<|Rf&ekCcGV>clU#2Ss5({U%fPAjjBC^C09Yd`5DAp7Kc@Rv&_uxwG0&Q@0KCAo4 zMt3~XBJ#$=x~mqEoc*efb@0Vk_h`q$yYPV#5!u>ZkJwcaNkG6%vpxGdB+*?JNl8}~ zkm;&&X$%&wg7j6c#wl_T70iA>{BE?u>8y>Xj;eI)q!@KdF9$n*k;4au`!^c*JV=T* z$mruZ@*p*1nI~{7nT!`>1sQT16fI^oiEq)H+VO!ZBkBBku|t)4PasdV&2cC8D51Ur`nylc<}D^ujW?HE5ZhO*Z>1Na=Q? zTczu(mYse(nffmNO>(lV#QWrU98{@ikEiE=n@^2FRK*$VaO`0 z=p5lo5j@C5)COebIlfqt#aJ$`5C!5OQ*mBa{(5Yv0^+#yxWrscPn0ip#%@b<;D{AG zfSuhkpU#Mm#@ETXM^qw>Y)8p?OnlCDPh=(6QF5+2Y}_Wh@T1t^2c8IZwCY3O9pO>@ z3Ti0`dJJf#M{?k16AO)L+k0ENQWqsdw2XKc`||g*o(`-FCkugSZlkv&MpRZAYfdU{ z^m^px^8!5Rq@^-uz^m>gN6nHLSgM!^Ir`IP@t@H{K4@q04R)4^pdJb<(0WoPLJyL7 z{h##IN0ZOK2yxwp(gkpdCXc=o;BZ-K9Z)LL%Yy1uee!$(#X)tF<;SO>+QCFSeR6d+ z_|}Xg`lJ!wh4boBhU;put$RT=*@8fU=uFB0UB3%7n2ZjQUb?Ro39#N+s5%9tXiSp{ zyQwrLYa@(jI+8K}Kq%o;auj_cp7SP6a&^eS87`tcX$&Ok!dZ*7?j-g*D>Ki26BLXF zD#h};xu9S1Y*7%lj&gEP@ww58bA8rk?>4+7=oGQ)Q(Kfn+aCIgBpu&tZ_M{wKA9L$ zxgb|}?`U}%N8+Z*e14qwU2V`q*R3`dzR!v7Q8Nu!307~tU-#Kkb9`$1)d06IR4+2{ zNLtoiWdAS3_VHcYiS3_I&QZvgs%5zXtCeh;{w~-RkZq8fxwxZ^*0Pi|>%?jUi-t9_ z>cC?7+1L(ijgu+lO})kE=bw*OdYD9Ai0e989>{>%Ycq-Cac}a5RSUX&Cep=k) zj@A?PAf`v+*2&6{LT5A{Ts6E#V-DMMz3Cu=K> zP=F?Dyxw}qSU&kw8GGej)`P#$6I}Iq`RsoFZ#aLFD0=S+l936gh*bJ^LH^sJL`T(= zMYH+oYtGQ`;6)@WqTw=MKH6=lE?t!JzfeLOi8h0it6V((=%lZ81ZgtbNwiZaN8wQv zu2!Yo9m`W^$v@aN9P+zLxm^YiNk_Ow#&}v&O`EH&tszY1mF}E7E{h8Tl)|-5x%cUr%6G4ZL9^ZwLJ#q{AoW5UTM6ThDnvWGgkWY&9 z7=rTOa;+7je*JZsa#gyyBLkk~c`Q?Y~T{2g!r8rll zFe!Qs`RBlGUc{2GH+G{aNdgt_=F+LKYRe{Q1!pb(%{iUq9|Eu#-{71p7=;_B&}k8M>R1h@Lknuq3&j!=yW(`2OB^-{ z6*s8=ViI~Qm&wAtLIAB;EukD#*a#BxNXEKUHTLzqAP|dK7A@85D4U}Ri@1s1=Jmgi zD50Fbr_YGK_gVgqbU&mGRK;6&_sIynDO z2abaz+Cfut7rGoD?`TJQaCWt$HLiBljcJJ%HoFlv{TvbFhz&2d0BW5KN9e7r>N{_8 z#};oc{;TOk9J1Ll`Ms|`$S63JK!2j0;(W>CrW)Zp5&1`o{|03$8Q;aJaH`3rr`oKg zyq0voMainOaRk`seiPrt9U0jd7`1v42J}p^dES${8zMd>vVv9EUckp>p8l4DKuna7BDc_`|Am-6bC`hdR_y6V85KSX9fJ zREPqW{TsaFWf`$CoF|DqiEXmo=RnP(VtI9|FfR-qXkqD7+d&S!9joF#HttvseCq%! zLsxM0F&V+p9ZE!+^&_)FnEjCqQ9566;Isf<*+zMG1Rp@v1zGNaphYosa2a31`ZyL!S%f{I{dihhZr=0s2hnlq>YPP>>)S zQd3Ctx{yXng*49}dfSNnS#YD*R~_JlZ^8773sb94)g>? z1}_v)YH4sNXL{d(lF}CC-6-}jl(XDP{YI@Z$`KcCzu4vQzwAP@oe2Q??y;U4jZz0G zgK+;u6uD^UGDbZ)V}IJA2GyRLa8b!&Xb;5fd)WFQSUyk_E|vstfj^GrWH0FC6D$uB zEPqFH>De;Q2Zu}xy#D>0XZOW5@ey?@mbF!G3H8LDQEz*m5ZCIp5{; zCDA)48cTOuMR}MEeDM+K;v9q@AB!(hR8b}CzE&REio%dLM~;6I@lCp$(2XzSaD5(^ zd(3IkzUp?&J3U_W4%)9>j;QE4uap|-nY=yIyhuJn9ks5sSba86Yg4J+rqc3mnx{rB zXc5DoabK~p)B-W3_EmmL7lRYu?V*p;5-&TROXm`Cmv}Bk982RH=wadkWuFIq6<>ag zY*L5*;O}y`ml0+a1-50)J8(KTYM)Vkb(BmXU4e&@l;J<7g{n-XoT(|uQRv1U63e(g z!PZ$Ed-7T3w60V=^e%3Cs6!QoH$;=RK7t1J!_Z9o(~9`I7l0k+>uW@M0bFd}A&!-k z6}QSR!MhJJrX3@(w;mk)jE?OXy!+r(^CD?pc(;@;qErJ(S5ZC_9RacFJLq?W`s_5yfGV_$$@yMt{b{4|CQH9HxToSkTnRkIU4)uKzHFm$ik z4A&N@0U?DyxnNNS;(qoWz~I{B=o?1(O6+mLv0k5j2?5!aD1Ff$CPv9NhJ7P^rUD`( zHpR=H4oSsk(op;?N8p5-FEtj1l7<~irGws0P)j9HiKGy|vnc-kZ7KU!RuE83RX!uwPBF}TFb z72-W6n;f*&M^?W6XS=Y8RuCP1iSs}&a42Ng@Y&7o$-sm$j|ix&=9;4Gr?@>FHk-O{ z8(ryW%T(Ilrj28B)UtpW3VN~p+-5d4l5&o+K$B|kT#^@r%fzsEIi1bx%%-H{NiS;b zlxZJJVQz~AA(5|S)P7yrgPDazZbV~pzbotW-}!FeiGJh8mPoE!KNh@c6*ZVZ{b*nd z{cK|)UI?;ypXqdN3Rdn6oob(3M5`P#o z0JDG&+zZt-Rv|uPR83F&7u4ns9x_bZ%MrFNS`~ZsfI2RFA>cH7>4m?;*sDLK9d)wq z%=<5G^{Ns3&kEdcppG+H_Zs2P|Ebvv45Uuh^*WOYPFhz%+}8gPd!1}QOJQwVG*T#a z7>?8=_OKRBBlCaJVRr9tN7Zgli&|IElr`D4g8nBR<`ny%A0~}aEE(0KgW4^~kT#8+ zE`EhO{w4-Eq;h>r`mhBv}@7*pwQtG8S-&2 z!3rW4h(jaQ3isj0n8zr>>B!LV-}YNN533DQ!eK}JN~TcGQ7mdlB3`R8=HIrcon-sk zH~A3|>JstC`reD1A>z>-hMc}Pt+nr!)AvR;x8u~CC`X9+1BSBHzUSKOe~5_3*ymDM z8@604ByrdhRZ~loeWkKEcUa%szUfC=r0sipu)0$5rnJc9F5NcLoN8Ke> zR%u$SeMa~-1{P&p&_=P=S+28|cw}ptYd;9?91z^!dEQUh5Inl&Zja~g-tKIL>D%b~ zoju3&lARPl5i1JD$^+||G>&$l2-G-}3taI^m>i*^%M}@A2$0c{rYboXp^R<5qwhY& zrD>Kl>uCUXGM1au+)tidkC|KsCmoAOqCjJ}5HrVoBYXk+wjCE->7@gtW&9qQf#PaS z3eNmi3im_xoXrxusk7~QpQLT{bMrwQ2+_@nmHDTmqO+Gp&--zIb{1P|aWBihpshLJ zP9t)O&;e~l)`5FsD*|U_f-~cO4{zY8Ox!_P>U8-C(3GAd0@d~H`=OQ9OWvb!EzXXn z;j~{_{TH+OHsZ81%!9=b!7cfEfA_@(=M`Xde{PC z0ZOEcr2k;dc~jUVbPLG|#E8QmpZ$D4rhlCKm%2Pqk>5cdL(&JeiJzts9hIq}v^1Tx& zF_=;hgP+YM|_gvAEJd{bh+)4Xf3GqP#RsQC@KS%kd*0iMXonz3SB z<;H-!I+Cj>e`|D<94&rUr0K5SQG@Nj#mBHPL7L*uxcQQ&?fyZL!6HSPM&+MU=X(Njjox_m?S$5EKECzwn4jlU z4J8fmZq$f#_Mb97b`(g>x%4jCekT5j6&4q%;ao)RvYD)$o*@SdO`-E;5kHxD+0m#w z>sxG0G#m+GS?Eid~>3fU$MWpFfo-O7l;Iq^C;r3RdM~<~W;Gyh;Nd0>R zKY^eIOQlY{EUhr^6OF^D?J`VS$LXWIjZb_EAnK$T4z9^Q#{QIo1T_5Hr5#hM{Qx}0 z+9av+*Rg9`HVT3`QyK!QRugr6EV~bfk{Xc~GTT?GO6n3jNx&IZzOIRPX?}dtO5~Z- z3?p)uq|6~Dum+8YT<9D5P{C^4FK25khkPFUtAhxzt$VlH%Lt_MXE|bTHtR^aUjFpN zN754=kr54KS%2qHeary#HW`rOhZ67u;}P3nsewMdjaV3^Or$N((LCg-dK^#H->f3e zpTc>R^Hp+!Ycqm74%J+m!)?#S@T=%=c&Ibm-lKwbqtw{~=bd4OLXzh-{rGxe{6u%t=-oiVG_BfslNBR}_Do|5j66Bpt=%I_~ud}R zFSN4U;Tm=%dmDX)f}>pVXeqXTB1l+1vPpxDFE5`IXPI5rU&lC1U5SSkm#Ooag%*hi<@PlN zTu%qMw`phOdAM2X_J+Rl*+XfKvHWTpV922gnIpV#8X1ZnQmuaA=j!zL00(huF!3Z>j;pJkBM0 zLaoFKWfEUVijBcnbqa-VH`V9%QYls4XE>VPe-4M{~XLa6`=M8>xD5IffnjHC1 zBHZQ$N1V77we{WD(>QIiT}pcr<;9PSGo-co$Ntm84Ioo)*veQ2ZlqyZd%yN?syx-& zVm!CrVyWvavN5K}F4c_C%FG6ox^Lqf`aqE;@=H$1WHBxt{9L8%?512y(mnD2A*nO$ zaMnxV233!e*KFG*sT?69H(cfI-Q(X~Il#i)`Hk_M9LMa7k5zSB^~@>|@YZUQsV%im zdAN0d9v_ujzU*n1!xx}zh2R7V5c=gf$j=4lY>~xR{EL!Vd7-#| zDa|37kIorCTNflcN^4ap~U3rdo zjb#|mZKhU|_~KXV>as|gMG476SHRd8@oTBVYU1LycPOF++U(uKuw5T`LtUDjsMTyu zlR2o%%lSVYgSUGJnIpq>)>`u(W%cjq;LZmx(1|`$8yf4EbAlSr!;dE zGMD9Zure<1l-T5xys%*WAE^9rkJTtWL*`xa9bk{a;S>*AwC}urv6~n-&xgdj*}Sjz znT8IeC2G~`V&YNN0DCGZX(PQBFLvaQ+t*M;1nco`*GWI*q>nDBQq(B@Hokj1^ca{K z_#%EHsT_WxgInDebJTNiw6SN@7Vk z-c1M><&ZG3g_{lU2iLtlfxjp2DQx1VoA5kvY2S1hLMuJ}=T5KeUm3Wi|IOy~YdzBg z=B=~lcz$;MEw@(AL{pl3p=Zv`*AnB%U(HViG42yZR^|yEN^UL{Z|`9|;?pLnmgI^g z;#ec}f0?$VoR^>k1wzNXNfGQVth6K`d#;f2cl#KRIE1eO)_ilK6gW=!C_NhRf$6y1 zR%3Be<;58c8Sz4S;{cIYI*~OvwujFeE;2ZWHxJchf4}Dm^8^XJc{wGiRC}HXs3cU0 zo;kLM44d3Mbtuo9QC~AwjwA66lH6ShVN0Ve;QkeqS}{;PE??4v1N)nI&`UT!ivlV+$A+fMy*E`+Gso8AocJ0qygIctKeS3@fcRG*8#vz106w4(#`Nj_0N;xckf{6#)k132F5AJIP1 zDLED=Sxl6)5I#D_C-^UwSCTiC^za3;g^&A79;Ch~nSs@b*P>M!B4c_u2@@YKUfi!= zfBk>f&u+OcVE(LPPT!(_=k_~yK;Jo)Gx}eDOQ7Os*Y=lR)f}_ZytSg=4EH!AeIC(( z+~Ny!^{1<^ojzw~?wMz{dFAVQKaqjbJ+G*+P91Jh08+37jOM}qA2v9N>!>&xg%0K! z3rAr`z@$*dyI3X)c;)OwYY(Q(uEeGAuUJVWDtfH46Zn~_Byh|Sx@8C{;1@s51>?uE z8zvo-i=LP@k(PR@>OQTCm;SmcJ+wN_y1=^Cm-v&Q zVE}Cc2q{>wF<%v6go^~o?s5)asJRTJVYQdQ{mm*c%m{BLU@T7y#fOEO&!2Zc)4h*x zW3D!*)N=z*`7L+C3+J`QN&GLX^!wGfx5mF~wuU9mEqAnim$-ihNRPk@L!@5*E#3>AL7mhKC0^4{}UJ>f#3uQ z7&XX%V+|T1(a?ef4NpNHMnQQrT2N4^2$-AzDoWxcHK#*r+G3x!SFhf-wzOJH5mAv4 zOhBteP(i7PwdxrL6(5C&X#U^dKIbG89@XA^|NlQ9Cg+^}Tx;#M)?Rz>wf8=^sdFnO zn#P)DfRKW1QuOnd^3_O!KH~SHxhX@C5Tr5zT#rK!8u(@BzDWPXp^yM9jEGl_jC4@O zS@szzFJh_dxT0)(Y!FTR6F~e43G7{l91rqZ-`tnXCa}t!V&#(qTKddFvG*z$3kW{n z$UbmJ{MBGvr#SDNFv!sxa;#F2>qJIO4PTIh>3LqDf?^?uySQ@#atO9oa_A#o3m-ua zK|)a~6S(w%9D=_+ITS*?YQ*F7;T;|+IO!bAA;uuc^HG*98w#KXvU1g zXN^lSq%1M0yOJZ!eJVH?zW|;(iCVXv8r(UoniLZW7`JpVl%I%G%hb}&91>excGhtk zo=Odx^`xB>e@K(K%7z4)@C>H8XG#Jn@7WJwn|>k}(?HhS3lJEqqGdIYsEq zF0N=ax}Y6KH$87K$|JtO$Ebi5xdh}GjB>%Kz+jYj0*pqtVl+Cw6B`QDa#SbS46$FN zgBK{elr|^ya03y!Y9H>qK3*F=lD{#2kL<8}BYOee~E9dGX zzT>drT)_zEZqviP_6*M5%U5y>uQDOTtHu+yvjlky3EG<4ZAzCWCdRwj(>;^;7y^9f zIe_r`SWoTmLsx|9l_N{fV$wZQ8XUT%>~xo7&6vqkRrwp!w#8F~5feh#nwoBjfQYG7 z&FWQ*l!YF4>}~nm?UPa*>QaKx!-*7!#@F$@*_@@5_#=p{Gl&?Cw3$~I2NPHod6EFX zT~TnY?Yh#$v_p&Y-JFM?HSPL{N?a9L!^7p_d(As_t#)I6!^5+Ep-uwaTR3^ne_KzkRzZgm~5XFWR+)!xCKWTt!0BLPvhE=;u?RBf&m* zYq9cZrM!A8xZ?pxgyjpc1=BAeVBXSUwAum$*fIjV_ynk`YJ=(q@X|*-L#VPGNcMR& z_&h{;Su%P6N$`RbBKBK#@e<50>EhpqOO7!|P72-m1RfVdw}kHe6Hj&ZDk?S!v!pij z()f)8n(_P-4%D&N7;7Zn1Gj`|^ZZbCDlZkcb{H9|{^Fk)AR-{LFGDo0a|dFl#NW}w zGiz5S8=m$l_GQ6%glH$YU1RWP)m+j6@W@1vh3< zaxpck6MAHk85tko;dG>6&Hv;dByi_jV%^Qu!i?Yqdqz-`^f98mz#gHsr;W6G zMA>3e9Q~}THKF#ZmgwQzmz>LusN5!J1|Xa=dZwyMC7aFo|49RX`EUI7hnkXtjIo?W z-|ke=)WqK!M;Bx;u3_dBBmai;IB1sJc`7#xuy5jg%^}fin12J5K7vmre*}f?hWJ8^ zqog^Rz=TPcOf4QWa|Sz)&Kj6E@p}H|^Oq6%w=`^$DW!iG6@f9|-oN`g6uIA;PpI54 zsl#~K#RFuPDTA-5o{VfHly<078ux%~VBbC>zzx;3s`UOrSFwdz?f!{Ux*82e zxL03Kx?M)=MLydI4Bb-?qpjqP(&o{Add`Yb>iFoJPG!9r2DzI!oL(Rw<0M&)Xa-)FhY*cD&N|5h4O4Ern(dG_IyTr`NsOx09 zLkf&ysAI@Meqc+5s`^AXpdwQ37dfH2DpElR)fz%!Q_DVeJt67w-K~V4o`DT0B`-`M-hC3ANd zM)G$%pNU92^S4r?64{O1{PVTsk_S`5?gf#eSGT^Ve7AP6y12r=+x{r!S^J9~d#<{| zgX3VR<_LU|JRb`bsrd(Cl;BEgwspRz%xs<~%QVx>Tq^S^i=|Hnyg~C>ngKb8AxfWW zr6dM?>|w>dVK-AY^8$YX%s|L~l)o_!<6+Ic=1IM~F_rIX=+KR0Nvt!ytVPzTBwXCs zIXss6!Nu+9O)sFs{&MIE7Ps*8#iBe7SDIxhkKV|QNOWSMwLh!?{+bNj$V~mzVO`)S zX6=O@gAMlG0h-%01M|m#kM77=+!z>H1P?6s^^0(A?4o%fE9nk!=u;r9kU}*(&TIt) zEmIKBJSq#6%|V!Jc**wOPwCqD6Yc;_U)(s6S9*8+A-6;e>}CP@oB?Vs9UE;) zRA{VJINZ^mTTry(vq-+H(@&sNT-z1B*NqHxUf<=TgBTbjHWt6?OmW$!U3(Z#dv@1W z;q~gqUC+My-0O)q_P+kwFH5@^G?(vreV5YsJiX^bm(#85lX-iF%iDc71KGdg?Q@{) zSLf{yp^W$$T!KIFxLJ2AiknBvRBM3E=FtT6#^P}0GY1E06QTn;c9ov$1=3m_Axp*b zb6fI4)jB!P$4AiYKJO7q-?P=aHW{ZYK~xe81Yu`Pg8@8zGrWyAscNt*CLm_xfC0+kTg!j2F77?R7G*&}cd23go}%p^PKeuc5Zj z2P~?(qh9u7SCKAsmrZPGcXkC89?t%gA$S_osG^1u=V2;|n8B^PDHcIyZE2P#o zz-|VpFl+5 zYi74eT63`kj4j|4Jw*vFHXh_2KXh|zDZewmhy@oF3}LOtE^@e%ylXI$I$)>iz2Hil z9!%pycSpBt8rX6B{rWHZ=D!zxD<$RC9`8rL2yjd2r-3CsDQfv8QEn@``?m;|xx)<# zE$@_g-={Ee8d>rw9oH$8WGjrmn^IdaDEbBN8Gj`xzK1_zQ|6+iWKZ3C=*8Ok9pjS; zwwu$K7yl(g3nNfR8%^m5g5<#|5e=C zrqlTMDqRy@1Bru9SCy!)qQQP8^dM)BEX6dVgU>xFTo36be3Rlr4{l2FOr(^J zlsz5RGsPkAa#T|}GjL<;)S5|S@pn!^}zd1QK780wY;o`S6r z$#0>m_@2(|R9@qg_%nAGYz(Dke&?FILBClqu)}EQQSZ)?3%^l1(Lz^ch?%3t^v5xl6v?lhuf(QoE zGt?NByzyw%Csvl*2Ug#TL?Y8fF(%9auW)mtwih;=tBwdoP(cW0wY z8Q6I6AwBZa2?J9EmexXB!*NTzj}jBB>!P0q%WICCph*d0MD66o`D7D)&(`&t??<0@ zSsw`MoAWCl=Y{p1cn*SW*8894rA5ouCDLucqWi;^ArH=C$^Z%7n_)pKIe@6cNcmVo z;Eng3VUR#~XfZtQT6l+jXeozoG>;kjMOg>?kl1y=7qv`8rF_T*=jv~;m(s|ATh8fJ zr`g-=0XvA%&6CTCh0BA9-^yohmsxU}JLZNUmJF7TzDA{X`2j*BnU3GdP{6Ky2(Q zvMoEmsf)yfn*>Y(_r{X67h>=cOC}faY}amTR!YfuB!=6e%Ufaq%tPoXKLSd=mwoCq z$Y$Rj=JK|RcwWV)X-gi$NiN&!I4ZHf@`Va=RNU4w(&`j_A)L6o@&(!S9OW{{PGrsgeGqYZb-gzA*fb z?$3zzxes>)_#%w!%_+&_ouL<4lVjiH^4{`)N}O&VV+2H&VU6PVxxkIPg>jeIQ92SuAe)o$uI;1Q}%@m zNg~$g5qVGSwoa~7{B6M@A?tcK?gK%2!^mVP#|uh4jvAbn*LWKh1lYc@!3Mh5Vwa`b zWvO?#NSR-O-dB%K#$?5=W9faaaB}IbGCg|h^R#q4%={C)2w*VMmpEc+7uw=-6|;aeR_|FB?4cv(hugvY%iqR8msQ#Y=-JEr~6a^7US^bf_sk z@i-n+##1WY_1fqS&dhdN^-el(9OOm`k5Yp3Ie%=FS>h$fmHq$c{uYM8%?=!h7Z&kg z^CIJAk==<8cYjD#7v5bLi>Z;mN&Tlf_r6Ka6@P*LY6U4>wZPv%konoJ#<>C?-vpQV zMf!Sf71Ny0v5<~+t2mn$qX8nZE^?+ALy^u)B#h(k z?ukT%?cTn(41j21Tuv~>p$!Kl^sci6fc=mH(FHw~gN{U<|3o=P^i9+Y{yb&l%onx( zJd-q3RmWU+EJSCS8QL%+#kfU`CCIo%TxMQyizrYcoR~rzI(x1WzrZ!($PY#Y>P}xZ zBJh1)^gGvk&%UQEOyM)U?^sg!+@yR;vo$HsFYiA|^Ttu>{5b#l(ho-j-r?te>-kmc zPfoA*dKUG&EBvH(f4)F=R zL1(jKYMdAn&wIsO99a5J{obyL$FN%%7H)v?P$TOkYll9L^%%OX?3AVyeVJ^N)1HZb z(PBI0e@m=nA{4WrMnpL#0sFIpj{f;sg7x zmm6+BD)$L!oL~^>XLi)o+8cG4z?6;gtvmoXOPHHQr}%nJNolp|kGvqhneK|y1AHl= zYK{Mhk2>70a4C#`mv`q8_EBn0sXIx+LMtw>R(Cxq&YRQ#lcevvi%IVy^}be+Wq2pK z(J9-=ti_=~{KsUeJ8JbvK8&^4v+)Bg*^;t#=_vetvvf3zhqGmEQis#p^SCby@L?^T zy&zCFZ|(x`?|HKqES-HzS>U?B+_LLtFPr zBK*$f=l>J*BBiJ#8IS~tBl`!=4$KO)w{QIYZDw@}gtAB{1up#;;7&YVbM?wDhI0dQ zojr%)>a5O7uY{PhS|aznM7?MH#QpWUe?;H_-@|y0@qV=QR2E3H%DRZ$jUD@|4gshF zReIiXa;O#sGCjfI7>~Zc(SK+h9IBen8(qe^0c$jBHJ5=)Avz_uwr~LBhf&xy)9LHNA;@MH6S-}RmW%2(LC z-qVj)`2XbRm*YPt-s|G=KPmIy$*X#2^HUzZCqMt4a{jw%mr0B&n znC0({@lLud%Cq&5J34uzF~oZO?PO2HaaNNX<4 z6qsoU%px5b!IOsiut~z_l~C1>=%D#JlRd4&c%`ZcdtAkaCXIEA zi7YRrS^Wl6QyR^i=fcXBq^#;?mGy-06-TpfjCZc6&#OuQhC$QM+S^UQiFHa-@n)B{ zG!<`ksc6V+*B>GcLpO!KV-AmO69tciHQ6Co6o5opzf&MSQLNbAxP%PFC1l!J!aLrL zP`6kZsYD&SSq|kHfjsJ~&V*DeNeYEam|H3Uw&@sB>9tnm!U1uKMal<^7B!z~{IFlT zPh_;4tc#+}^k|v>)cIz#xnJn6A5c2{yx>0!KmQ!vs^2Gk9{p6< z|BIjM9Xa%H=uSV2Y!$iv{c00{Efd&(4RPLjSAla)lWYJ%MW+wB6_ z|L*Qv+XY&#-IGpcUw=!rX2rLtWQ>-I<$Yki(^%$c75*-?X>nu9*>Ht1l6dCbfqfL; zjnfr~pPLfbbv4X@R1oU!O&YFO7_FR8rS(Gf%09!(;iEk5BpXQ4o&7_mq~bff!ufrm5V-|%YU<8c3a|p_p9n@eZ_C31&_L~*xmmX z)Qq*0u^Rcw1562(bL}$*ah!Cp$;ZdK+TFBIWkN7^X)05Yu}jnK3F)y*GwcZ&u}d@U z37N4=v+N03u}ib<3EAxDvL}R{rv+CYt(0nZkp-jdB3r+=jM=D1>b!0biU+akQ)7V! zqYu}a=nq@xGa-GD`n8cc)$ZC*=Vot<*LFfCst*^y;(|xnLW^dc!ME9oTH|%&T|24aJj7(&RZcc45-S(sZ5PaKx_@euB=}%Q| z5#_QI$C~6gm>{t{f-_@1folknaxl&SR;{DBoiK3oZJK8YE^W+~{*i2k8aaj@|Q{WAZx&n;c)c&19P z0IaGF+o+52pb_N)Vt+rZ!jG5U!`(SGIsKL18ShM+d2Vp4Bb%Yh5k`fXEDdIS{5yb^ zcx8ZMCOFN4)QYn;D_so!4G_a)5TA?{?G732iLMFc3d1|D~&f)GMcV?UaOdZ z;tY)1Boy1*!^h(5IxrpqgABE)hcD}jP`Z74GEb_uG;LU7jy%XwoBq%6_3*^TSd1e= zjha;+Q-}x+DNgfTD_a|pCiXdX5mrVrrr2j@dbcRnYd^ve>m!kf4R-W*xbzUkX2-f8 z(08wZ#W!17V|_kxW9Z5-O5wz;*x(}yf*P^m&3a=BujWNYEu@cd3>j&1F@(h7Ikknq z}it0Vp6xUU=s8gp2%g9)|}eLOVRxkW8IS_Io3;n zdl(xH(p|WLNoK5~X=khKA1lfZ(j= zjPv9vx@*39%Z#f7*L-u~N>K5Ic z$tH5sUs3e0lEDbOV4Tai;hLjBC>97uZfgVK>vkU{{}K>PwlQrWTxxHNQ-}y_qV`n? zI=h#OO04uzeMzAk9}tT1523D4Q`g?eHm7%GiV*Nv9*tOtf!WgxIKO*8*kkXC;bJM+ zYO*v8ZDcRmL77jAls|#|s)Nor8jf`5q~M7&ir9i!@R#8K5`)m50dwR`xfD&NxMZ8* z5?HSwR`?Tf=jl|(*doh*&3XglHM7MUMBzHYDSQNNo@vJ^QKx#PhaUbsMK`<-N!dB{ zJ@%&831ns&Y2nO7boNcx&cC62QF&Pycbf8><}S44A9MYpQXZ}DF~^BI#y-vliX2@l zCc`qzS_nnAuJ##?4>1+sgjtP5M>)fS?s#33x&*UKP8!2OQxVjw2R zf4bTxLfc5qTWszyO%keFK_+lbb$4J;O7IU<9j!028BafQpFuW@1lcWGk7A1)JR`@( zFwd-5VO@2L{aN|X-Q2a87sb9EoP<66?clN=u^C0&``R+1$hSM8zBtpI<>-aQzef$G z`oY?Dq3YME`o?t_MANsDcC`L6!?504)XcpEVkPa zrwQ`{$TUQ#5UtKMgK+I_)TeV3We}IEj}x>rIcaO>g8win^OQ0+MpH^vmAq0|4#>$s z51S}@4u;sso*GDg-m)dqv+TbD%B-Q=IVYh?Mvwqf)5Z*?iOUg{HE4rEO~0fL@dsx~ z($IOznnI6HS$RBJ+x;`=1jsrmzq_riX9g$WoHR4IEGss@2&Z{9cFWYr9HXz}bto|j z99VXxe&+$|NbIc>9BO0lh!L<6Z$lyBd@*T!T`8%GFQSm6>`h~k1%Xh042A+wBi4g4 z=zt^n@6~}u*wzeLR>}uMccXPqZ$SmT4t26)>5*7rO?6B8?);5cyK0T?C-8PG_@~7C zUNv%Sa8D%xp3pCjS%^|RG9)zA{$ME2uM9!okD*ue*z=Q=UOsguy$7?hIUj!HruS97 zdA6Jt{^3a6Ergl=wVai6)OV!aw>ie;%7r&BT(opyxa^iPYwk@+N4x~g`8ybPX493% z84xSFDJ*bLzBdrKfA5_-l_gZgNHNf|4Wl_%tYNS+dEk(s8i@4$X`Gf$2b5uV`K4}= zwU-vf*vbVP%m^-v#4asrOzGM(5_4JgdHH_(b9$SD<)v;XtO9+Or~`t;4x6>ZS0FTM ztgjfs-GL>7Wju;5Xed&Gvy?Qpt`{MR*A#aSZys9R@2hkx6E_3sr&Jivr>hiePvnEc zZqAx>VOUS!-i-AMM=`tHiJXG!?a*ZiOjBrO4INxT9~`Q>fPRA$E_t_2h>w$@-76fE z-AcPXhIY(6^pn={HjueCda&S6tteazB(C&9W}WX=Br>~F7!;`W;OG&!rF`0P2z*Yg zw5YMOA+Xs+=c(!O0HevcUjqkylHu%RG7q5Q#Pc41+jQacs0eEJH`E^PYhFX`rXnSH zj1r9;x&+@Tf)|2`EBmothT!xOz;Dw})F}B8iRzNT{i4`Vc1D$|0kGw4&Ph21Up8^s zHH5`~EyaLg`zV3td?Vx|Gf6J^)Z9qW>0$6mZ)hhUl0RA3>c_A`@SE?0=${HYy+FrY zg@X*nue^xDW&b$4*?83y&@s2h1wsOvT;Re*R@q!DP`We_P74IWXU)<7dg0sBCyVYxjm)$R*1 zP5+dS%LVUhteK>CDup>8Dn8an#nu*R7Ad=SK_q*_)g+N*J@;cbm9n^%t8t!ze)O3Q z*4g;l)tiYocf6*v#8_2+h<>alWdvXLo{=~ZIrcZCV!^(;-0k8F3~nuySNudbEqc`&lv#3^_@HI-ao8v=abqwownl5q2ESDG?E%AzKzeWwZ zG_#gdaM2amDn@s`PMalGSKOMCXAS3Ywi@$xIux(g+%R9fE#|E;rDSA$z6t7(U;akL ztsT!Vf3-0sZ3H*F$FFe13(B7&Jg@w*#*}d49Uo&c+6_NqHzCxB{}TXB6(dxIHU_m- z_>}ua_@8()6|Ocx$5wcc8(vWUxT)|@$5eRm9!%tjcwO?VWTc}szc>l{(sHHfUr1`v=3ePb?$5zy0-J*)OdO{ zz138DtKwKs6j0dRavOSKWvEF+fo(s8_?tN4JGyza2D%L({wKuO-r)>pC9pQL z8o-S_cV5L4v)$eV+JNwNKx zKk-sqKmh@H2`c2)ak99TZv1|`O204gWbSWjr+-!d`PAQs`ZJR1kH3gC`E|$Js&ebz z)fV8^-K4s;e(%;jx_#Zf+`1$7rlZDRF8;@@zu&)K{|3a$t$#BXZ*96ua5~C+pg*{W z|DF18mJoZi{|flK>m7*GI9hHh>t`D9aDj=26Eo$ckrSJ#d4Sy5OmR$JY-T2p0{c00 z{AQ@?Eu_FcD1M*r$w#p#ALIW2%Exq=V=By1+)h3K9a%`0k1*(DBNsVft_dQkDoxTC z^PP@Nna#mR;EU+yarI8$Z%RDYxUJRu?slB|E{*4k2m2HL@5#q~-)mRv&2Fv#Z{#D= zzV3fQ05JZ)DIYF>N=kKFxzS&A828q;qrpus9LR}h-@Ei5dOZE`ujRwbf3%v|2)D*N>oWLYdpe~G~aac z&92$+1Bg(iIs=Ju#}VW+{@1n{J+w_5c=#>{R|aB#h>_mRU80N3ct(~!RB#Gdu%yy6 zhwifaRV-`CwZ2BE>eAGbbC7(-eD63a@qE6)NUK7?%SpPOxiIs+io?S#r{Zuf$5y_X zJRUkH;5D>=o}?N7`~{81kY_KC>i1$-2f34+t}%9HAbJ?*oI$*!7iw2VD)go)<}2Y# zD5}v=C&B%>KE}&I{wPl&=g>MB`Ki*(R*gFv0Bw1w~k)@1$F8hoNG&Ia$ z469AVVT!AKGjM>ziQ?%s6Hc~2Z4ZAeC0ZY>t!w$>i!Tms>$j=$?-l&B;)ga>R0IO$ zo$L2yaP;x@99f#d!KTqyI}Z4?Wc zNh51c%dFT4IN?tVJu;OglNlyoCXH0{Il(cyP=>5IG`icTxHpk(95OP{(i<_TU1QEA zb*=z-ipms`t2aXXS%4E-rO9knl@7cu5+c7kNx?vauvspY>lUJt6FZFrTEQ|51Y5RD z$)px`LzWpxn9}3`8zUDFx)R-GPU$tDNPv@q&)Vr&4vnUE1G&mD4AfU;)k~vs=h%=dJGYygW+rR}2Z^V9Z z*8|c4EgV~56rA(;UDUL(lhn!g#2BC>Ir>kbxHKR=N8?BX6fvV_c@CpKeJ7Er09a&{)+D2!x>hY$o{|?`Q zqGktf_dC?gss#>Po6qMsDw>Rpr=hKhrq6V~ScNTN?&ySD8EGnV`{0jakUcbOd0k`pw#^ z$RnhX_z-23igKt!RF!`~Sw#1T)!g4Fn2G&}s^j!V3e$XBI)x3PAhVFy@(Np7$*KjO zZsO4uCVS91d#qRi4TDqCxs>DdHUZX2&edb6pt)P|xSSh&0psPhBiSB}qWu}68>Zf3! zIfN}k;$7mo&&+K1neIJX{!$fr0n+eP?Rw_u34_YvNcM3!^zdQk6u%ZD>d?D(BhOqg7>yPv;+rcl z_?pOb2v4&DLs|%o-vM6gQ-pMS7yYSe1{q$RK1q!V{1%`rp{tr#4XPY(BYrg zq{gmEweQf>=4j5Thg85Mhc=B@&2rG3TPeY-V?>61xdyxwy@cbE6AnvGm}OtC5wPJH zsw^}KIf?-_;+(96E==~=uzgiTm2UN#e;#L3lEhOd?NTE0?$DX2P0y$YJ zsT{6a6F!-oFwdSMqN-XY)G}IY!XGN(DpO+ZN+U1!NKL^{ZyG6w^cMS3dgOrpO0;oe z=&_Q>RiVdlaJFX_*52z%(5+g%5{sIn#ML3@M@^Ha&Qz0f0GeP0(P&eN*rg}2S`kDo zC`K8Tu=1I;{FUr|bSL{~n01xzaJ858iCVKettr7(Lb&jj%^k?>x?ZAp<>QvBc7*YnVg!qe#MGEtBffn2Cn1Wy)v3VI05 zEAAgh<$7lGkN|1L!YF7_nRlb4c{g^Muc&*Q8su^TH=Jrdg3zrCih5j%b-MHQb119H zxfu5YDe211B7hM($TZbu?t3E-5{S6|Mi2LvPg|$$Oo!8rEZ!cV8B6SZ^31Y(CLWi( zBFP*%BQ79|QXwQNKzvVxibOKh`MS5Gtwb$|_iv%`G!ClVuLG0t4bA02MM58k(L8;v zF$d;z;G%jH1hGhQtMPB)0RbSOu@q#kC{4{VMo@QrJpvuJu!7I`$ z%PpjGv+8busP15C0dS(RY;@bp_!ktJg>~x*Q_W5A?q@R|Aui+?Hjk|2p zn82tD2L+~#8#8fYVAN%krWB7Eg`wPf9!|QGGcpi(;E`oiagyHF>FtvdygkXA?7eLm zC4WMfKCqbpRCU*NZxdv`h>k0Im7=$pXzL8;73JQ@*ZMl9;@7EcyVn~2iZEpPKv`zD zWhsAt-SW;zx==3+u=JcTJE)0**W41Ma(L&=RbvBMh zOU@2oKYRXyxpT|{cNyyh@V|RLLyL}GRZ}g%GwVGo3kMQAL34-dq7A{Zv7Rhk9b`?u zE3M-B0gkOr|1+`?u+fuQw7F4ui6@;oST;6egeGSnZNQt; z|2EY8A7WFVGM3M1C~60vxP<)s6C2=(^aC$405PYlaux|I_TrOX+uh}Hbw(6%F%*W{ z2tmO4A;oloT|A zC+mI?!-&hBe7a+4cSQG&v)F|626|Uk#1SQd_VW>*ereSxMu&J>!Bqyhc)IGq>ZEQa z&pFi;+ks-K-BV2eLVZYGyh7_B;%4jA7Bc=O!`+<#ab@8GHWaa8B)BP&3&Jg_{*@3-F+KVW+J-$lo7+%1i zObVupy^Fg!nmVepY#NoSs+&foyN`@ifaCrbF+jWr37kGu(-hEXB(4KOoX^jsh(@O~ z!FHaxOvV+v*1t*ZDZnzwskZy`DDg&l587IjiE6?4<%HEG2h`E#p1vGTx4@ZVr$Kf0 zgDrm((WhEC;X1^3-Wy$zjS{8ZaF>4Q^fC5ek!9MzZ~y3i04p#Q~CL6^nMLLpH`w* zDc}EYy-M$_SR(F}z_<2KMi)pC`~4Li$hwLj{Unh1r!xzNi#B&&FDq$9(B78#yEBO( z`tOg|1z`Qe_I2X?#B=M^r6x9uNwdY1JU1gldX{+KYj~R5P!hjbC#gyNNHwoWm@Bg@ z5;g0>3am6IlbiW_E-sMcz&cE>KwLK`t;6HEC0?R8T~2Pi2G;4$;kd4KUDu*?7nwI+ z;|07qcb5xaq&N_lFS3NLb-p?$CX>1Z_p+AIlJWM3huDqXall{gXYmZqM0h-Uuv|K- z=A^NgmLELW(6M|p;uo|J*YE3K3^H_u@Uss`|9&L;ZpV}zDX-vmc=-7FnWnc7U^ALC zZS7C-+Q+an>$+JGHL>1R33P(@XWT9;z$(D$i#Igfb}Ni>NDrVLWXz~;DT@Qk>GtXW zQvW8$ylgXHj&@WsCrDF2pzQ0_M0PKgnfL?uJ6*TvreOo;E}J`S;I*@@VFRzbX->eO z!x}gm3x;{Dv2@ZSEUR?>wdK~_GEHQ)(ZjX>ms2RJeH9NXeDGCx>r7OfrrQ{|Vc+Ho zzCRLfXGWZ5Xk?}$?PoA(>&T)(=|4=Ek~7zAJff{Dk33!stc(@%>_gS>nejq40RjB% z)T487u}`4qOl$)NpxwUI zfR?{iUC%xBvKs7RaK;eYMuua74j*HWA`a}t71=kY+qY?>*Er%v+hy!f)K>Y4_Kn#@ z7u&amgolDlj6<7tAMi7T??*yqM4!INX>FPt-WercH@x|uU%MPscH zbnh#?a#}uz1y=4C51e?Ml&`tJ zC*3%8djY!PJkqHnQ~GoYRjGzy6-Hj1ZgZmhvuqCJXtAzu-~Te=%FD1)E)gJV$|n(F zvoKTswmzSSt>H3AYkKvIyicYQ1Uw0jAnmY1NA8=oo0Hn!ln2-=DUXU-boi{rD4X)y z#4f>{c)byf1Mw^xB}pG%X%wWHr2QMvGY&eS$7*v^5GN6Zs&4D(j&|MYjK{kRM@>$S zk&R$TmE%Im)x^ymI9CVujW%}-RrTN{?Mio!9LP>Ksl?`M$j78!0j>CmUbmMIVCjm9 z6{_a?bx0ek`Zl$aCZjbCx6l(*cf{V)G{$WR7}7xV@qgv-&esJE6%+>LmZ!ZI)2jKE zscDDU*l~OM!3MGP0=A#n9vZBZ#Bz=MaNsX&+OZRAmuo7RzrGR5b9tJuAN@ZI3-EFKws&5xkMA zex`C?pyHyJ?awNA@A=~|QlwwSHB@9&N1y9?*0Y*Fu3x=9X^71N6q7)HUO%PN`vw>< zyCQ#UZNbm$-{B<8`VabE*6)ygyXIb|=4=+9kcQ%;Ycqe2EEef3>KE(deaH8Ev058%M%$A{hiWotLMbmMYU@L* zUre)i*as@#Z6UP&v$V8kt8=tICAuSEUtPjLhfyLksgtI2;v}!qa+FhKUtL_ENCO^s zI#k0Sz^#}AxP+;V1qF?#`8qSz47vrT5tWu1Tw2ZHs3UXMuQij@#(f!}^N7l!gn}r_ zBn3l0H%j*rI5daQd#?fW>@IpXL-#FJ-jnzOKo8XyL>u_f8AbExmj}As^2M5 z^KA018bTS`8bFpe%*=RU3KuAow?|@AC!rtR9*DoCDZm1)1xwV>`a$QXXiIfh?!7kg z-!jVxHWP(SEwjkH8~M_-jNhm{Wz@8FPPEdsrWn@xxD9}80P9W3x&j`*h;lt)kDt%G ztM%7QyyI`D;oixpW{4=1$?*-w_HPIe+2o(p#q9 zvY5}}5mU#FnLhQX{yS=po?Waa{Jbwn(`7w#I!`9kq|I~TD}}vzBYeX(IBcaWO^@A* z=R;a^sOogI7Wfp}^fq_XQJ7&{kn`mgPU=``X6)7s`@^(P%QZ7vn13*zqZh1`bnrmc z?wVJ*eHA^GzY!&(lfcJh*jHxKV2ks2>t@Hr)Q#*cW+aK@s6M#YKzArk;~gryD~Kew z3pqbyfpmSSY8Y`xyamLkFMV@FfK4Q;n2fH+Y=QipE1%PB7R6dzJ25;DODOG(*fp84 zg&Euxv?c%ZG$&MDB_Zi<*dKrm+Lsp7;a)~@&aW34Jnd%$!E{1Ip8qs~nx)dgw2LuY zG&`(Lt7V(mN4;C9s+Y=D)T{YiK#sn7A?*vapf1Z5LnK#I!%Ssh2RUi8Oeo?5ax;#mD0=PG%Lf)Y0p^K zLd`s&(UzYaGKOi$T!7C(_PDd0y;!tF82O7x{#aZ3tC5>X%Cn(|chwg5B&lVWO{auH z`?eArCVzcCl-XR8ztI&y?ng(WDMafnc}9jQUFEz?NkEzMeCXlVY75UztZ_cN2{sUO zu->F|KH@qXuZ~28lCoO$Pz-*V`yWU5JR02E=Eh;%IgW8v4ukJ#NG#qM=dG0)N#(m( zbO7UVz%yE8<$8+P;tcydwX!`}d=O8gPDUE9u)g8Sn`dKjJpC05-9|SHu#3D#|2;sf zaW~QI+T_0&ShZ5`Lo2E zpmB#d_i92OFwj6{T@4f)Y!VMvSo~@NLJuBF<%FdAcT#_v(%56CeK>zN768)-_O`TL z)~WW3`5Wuw8TLo{&)T2n*W0hyf2HqeX$g$+1-kqx`+$8oK2R!*_Fs;rjLb^mi@%S+ zd(cE{Ay(6<)J~Ml^oh=>i@$(Ut5aHWLCWh^YH01G0G_Em+mu79ePw$5SET!2f->KWezLcD*3#2pF1xGY?rq8(14?6SO+?GZd8j+XlT(d3 zV%E`Vyi|>Zogbq)-DUAr^%SmUv3>}Z^DrGZED@nzRnPo6f7{<*Z|r?0L!nD1I>M(( znrLEV?0<_AkGlNMc_iQ(0W&R0rSqQ6Gl&>!MJ|KzFi+Fnf5_ZDO(~Jf_Czl1iClzc zl?dkO35HTE*{oBA9VTh)H#mK z#;q7hQg>lCv&u}zQE9)6iFdy{>qPFHS!*5GVcr;Z1wy4UYNM+3Mfx?VFbOUWBJ9YQ zo9HPFxC)45Rm+F`0sPGkh)MxfLdg@bPhqX>KzweUuF6U9f6|AFO>XSsIyU<1M>&NY}>!6F*UvsF9J42(Pb?d?>?fo~uIUkwl zHmB*9{pRdu0%=a_GnDh`~Mj4Jxx3AK$a-71dBBNFARay4fOu{Cbk1%h=<}DJc#v>`v zG*(N#Mvt!U#S=lcdYEUe^vHi(k6wlV9Z!$mFdNX&#qQkJk(PpK_ksPgN=^GG>^mJgk2R zqJ7?e)dhYwAlsg{Bkcvhdi%rngW;cEbu<9uP6WXBfVDQWLipFF|DgWO4)zQ6@AsYD z?*+STBGr#GH?#QwjQ*+sWE}&5v9x_$T8p9SySo6?7W}}cz&x!*9<&c=KB zOElJb-K@?x(iD`LvD%MR)IJ%xkH?YPRYqZOP7F$-c8v){j^$iyqqida)VZ5g^iWl- zqfrM^Da>>&)8om=avmI3^q{_0Mk@4hbr8#cztI;r8R@Y)Qo{qUgVj7VwZzp<3Sfk- zXl8Nsb*}+{^492UbwrB-cprSO3sr9udb)!yv$4UcN?>< zxdi&rS`mA4wl|}O%$L9)vk1*g`AXXzj{+(;wW|_HNj?p1O7$$GEyI?0I2`GRn>nv# zMwMUZl&Dzm)*104U5=>)XP|>suJiWQt`5eeyKn|T9gd%c3FR!5HfVH~Dku;4K%#&C zj*Nw@#74jD^@j;)O5EqJ$0fdSpZ;HsU#6Pzi#&ugwbu>;d<_jDXd9h$y@BOVZL?QG zGlcCiz0sf}r@q!rM1I+NQoh-%tqwj*jbLgygTcpn?xxZ+*Z~|U=XBd{_G?4xtq}~E zlkewf>MZ=tfsn1`hc;|8N`FdABaA_Ex1@{mlw!SF~^#XR{%^s)bdvT6p6>%?aE|$pW#&|>308hMVH}s5|a4a@bB|j z4;xU>4;1@Ly;gr$86V`2eQ@{-CUUMK^}1s6a3K(?dR-xUU2*d82TjN|!tvL~LL~yq+I0yul=$`CbuP-&3iyHzIzaipiqsL)G;pi2q$vdCC5NsZuv^^eiGU z-`csCOzD*f$+U4{hizneB|sVmkIf+bc!IvXl!$RfVpVrU0EH z!CGxsUbR-+foJ0w1)ov1J5=={p!)V<#b>1ZF(p@gM#Arzmx1ni;Y!*_Qj%Dw5pDH? zpT?Rp@E|6z6M^OLH+I&jQ~TIFXpG7Ly?lVIIYYCfa?}k~Jw;iy_eLg?(tg#iKh_bC zzJI;Ht)T-u+je&x@Epcm#(;QbeJ4s7`sy85p{}V}<)yr?N}Uh}fn7-dL(N#++%;CU zwdT1{^(i!C5;4sbc|pY4OULcOT)9~UH%7DySmGAoTtk6Pf&Ku_Ji~71GV^KF!3Umw z9a=j!g>wYXtJ-aaMU&G-sNOYK2gWiX3bm6cwNFhDm*5r-vi`~j=jRFshN^!Aw@^q2 zHYYzp_+zw}IjTPKd(&T=l9Jl)8j`D?Q`BD7#eB7&PjlNRRP}W)-3NkaU;J!7u}EFs zn3hs;c#xG=ahMX`h6g>;)QmBPJaiZnZRA{l87Wi_79)TyRP_o(5KsL{&yt!3_sk{n z$bV9VKo+VFV1`Pkq6mwOi!jGTZ#rszlL0}{e%5Tcw?fDd&7MBe^xWm2*f^bqiKtVD{jR(p|zduk7$NWpT5vPqpkc*d32cuNI3nWT2tU_ zFiHNwM3d7|W@JPDL8mL>c2?rgt@E>3bZT;AINk(5$`TqR-ol#cL(@}z$J*&B#)dPl zyKYW@e!JEGSLx3?D*x+Lru^vfuay5i^h9#~zi7*!9Q>WO;I?9ozVhv1@L_q=o7GpN zKY-eVsj=Yobq`;fD0O#OT%z$-VT2jhRSnM1Ch>uG{(+vF^ObF!!Pvvh@#Ft|?G{s~R*Yxhzq#kWH4e&gU8xz{k24l~2zgT#ETt zFT9V+-T8i9ndR=G6{E66mYEnf{4*hZ>al=$YS+09^AE~vF2T8bqIq||(X6&kJPVr% z9v2Q-?m8>U9B3omAt3amCa2oK#m0UbYofMiLZizkdj{_?afqQ7DZlBZ{D_p9?59$p z+YFUF3W;`C0f@^bPE03)Hae>WTAqD4@j|OtE#X|m$E|2F8>oto-Q#y>(F$J4}D%Pi1>%6Y>-z_vT1J3}zI*;y z?8>11Dcc$9-_$9~nas8B%KtE}-paWo`bBiVp?iO5o=VC%@s5-IDQ&>*_r!-^74qwKCsT&S}QPoy!B4i3}h({YU>^~@r{Xu<8 zUwebatCR8;obeq&$i>8P@b{MU>NBNNb}6)N7-e-0tu0Qe+FtWw`5F?L>x%5b!qfS1 zJm!pU?Fen?BuL{kcn@D#!uFSvR{K)?FA>(r6$X_I0Px<9TssUtwmOU4?k)PJ5P-y zgMq05gG4yu4tz2dE;d4I!TQUho0ppn!S|0l7R%e=zcwr{R-3e9Iopi`OOaGaI+Io1 zro?|p#^ghk_~%G8-6&eaqkHN1%d$J)c3!a!IWaKY56G{5ut zCFDD1kuyo9oVB2Qp!W;#41@#i?b9i9OP9?&7cH1F*DCQ| zOUN>({5tEh#loj7;C;&dDll#Q1RwHCJW{Cg+Ozpivq z*`n*M@U;00=PX)U7QSF$et7A8Yn}owIKM2cT}3DUcWnMi^A{|byKv$B@|%2Wh_Yk& z73T-Smrc3i{N(u#Gx*Fy$1=sDy*&VRXjv!)m*3i^Z2sVuhibhSNQbi{GM?@*kKq(848bfGixNSd!0p08u@Zjqu_@ak9 z+S@`^a~Ls4n}ay9c`tW;i_uT4yMV9W8mhjWuP>`{^3=vrnH-F|5e=wOdUqfVt?hJL z#mGP*1lt4ng&nQ4q`nS#i0>Nf3i>M12tsV(J3a;F867U*I$7a^owCT^!8%FGr89zk zn z!wx_1pwMHc&fjz>KkfSAfuN-o>)>>yTd%io>+KP}E!Eqv^cK_Gy$3s;YG5@P{zE~w zB7e`DnZ4p8N1HKFqdJPf_(-Zz2~Xu=6#GUJgB;|pa4wXRYhq8UwsM841Fl7?*|h-L zQk%eY)T8j!%yqj7)dLhG?bd}Na43g1T`Tb>Rqac<;MTPU9Zdh3tDgO1`V_6oVdqox z5pp_V6Qnh{@m_F;E(E8w2Fry+skJpjiKtkz!?9TXFB_I|42=ywOvCBwZvY9 z{1;P*q3XW?Noym{MWU>s@_YL;!C%I3=jVyV^YR);^$x_VzCwoS#qk+mA=#9<6f5Q2 zG%726ex7Q{z910qPgYl)tG9=$chXyY8Gw_gN(9mHjia&x@xPNJI$ZpEL8$ufublmY zfr9}cD?bpwpFBr4gdzFk;+N3cUL$$OrT)J{j}0#3wPsp}>+NsEPbMAqu+cx!PZ8=r ziero-;?wHtYJzzk6-yc0Zv;5s7_8S{!QBLTwK2@qEjeH;f*Y$Sa_|qi* zGHizqG4kI_`m1(*K9+xFi>4fxv{IFyRe5*_8hU9rxAOQW9&_I9)yy$Sfy7&FHMgIi zL_F_bEDgitgJ6zb zKpRv5*7|$-w0r5*`4llnv&diQQFR878Q$>wP}_WQ{301lPx`ER>0q(`(9!DdmT#&{ z{P6KpRBCrMMdBToqNG_$mu1c7&(etBRh6H%{tN?vl7=4Zo(Z%mZoWUDZ_4+#>Y6^% zHQmsRudY9z9Era?Uf5R0GwbLp0uPw_9&auCo^?4&>3C&aV1=Z@8DakA|aO61Et~;r%WQn6$09e|6eTZPU?9S94% z?QD0i6D5?`wb{7%IbhBRXn#JyD2Cy!^C$9$^v2!{=rj^%aBOwg=^d#Qoy$I-9H)VH zbEl@)L06rxc+6N@{kw+84bIm{%t&b%yD64FL)r4@R4;1$I6oZ@gD+s7WK6)h9fqZs zjo6o@IvIKj;+GkLX#+ae1p+riB{bd*>FUU*bR>$1XUD}svipPDlc3BFr zr>1-;(%qvvEXo?IshBjCwVj-9S$|Q>P!`^lICJEraIrIGo#vNChhIBRH#nuHysz=d zc$H<~%5q*;)}T-vrOeh4gJb9}tq!#UGA{)Jrlx!=+sZ}pAvu<75A#uN- z7t_J7_>jzsZD8*r;nEK);`s{+8clIpNAHM-B-%qT?{KwT*koaeYisgO1 z(_mj{Kc0+k_IJ_385a+Q2c`x(DqByNy_#61qoBqB=c4Ct)%5Mh)PGT1{VXu7BSB&R zP}My=+3njqc|109JSU2lf6Dax$eIow2+yT#wNCQD@ZvcRxqsux6k~lpPJaWt6lqlL zkhO)yz9KHhx14vXj?>j=wax2I>tkp9+5EXgUZ z{G;gR)NeK*Urr}*N;vR^<`dvC$)8!jBodV*Utj;$uw0Gx2-C5=sgCYq<%8=wHOFnH z_}X!oW>~=*2FXwv%(Y$|>#TjCy;SY{NSx_Pty7yigKbOGSox1g{I%!P%!WG;{oOG7 zqu&stCw4jy@!}o%vJ-fxg?e)CMV6-gCJH@0xgrpe%v#(ju>JAqFZC|46f8Y1NJ-U{EjSK za)vs^iIJUF_AW~+1jbF~1Lj2ic|=mwj?{KbK!Lg|ER=76;T;#e`Xq)Z7INX38#bxAO$E zYm%|uV8X0n&dWf~^fk$zK%ig=bNbIo6q{)#(hOrc|FPFV_#2aWz4#^Zy7M!>ngYEj zDX|}WjT$S|3KVrfOkL;PViFj@pELYI_YcK14$Ko1&Pb{;`MjZg)z;u#sM=c38_I1f z%s+34veE%GtX@3-J-n>ob<>T|vs3~GMn^GR6C4cCYo61?r;LHVQ z`Wqnjj5C`sJLf4w#)sP4(`>tn4KJ#s$7!*ft?sc)G^=W4(LQ+O>0%SM8UIg#2P+qUtCFyvvU6wjv%ONi1@F4vcaNg3c-1_$V z@mP3!#ipfF#ei-3+rL`*r?xNOr>y&2UqloFr z_ochJ(xVL>qWe-44=5&eRCHf3@dJOn=jvbSba{-Wh9Ojp2__jB_KTd@5#8Idp1*%T zGJxKPv5pj+duV|fY&}nUv+G`CPzGGMyzrviowax8v>mwll5fY}v}f#rx{msFJDu%X z#P0aOjd>e?{yXq2At=U$ncq&`k#Hm4P5X>vFinJ=h~1hV-ITE-*W^vz@m3lnWQFCL zbQWTwxK{?tSDKW5eeb4yZV#l7F%Bp#;1hj6H8wIBI}QDl_>_x`TQfsVHQn%B>p*Q331OMcn zF*5KCep~n$#q)B0-{N-@zuWlHJ~S^dMjJaP+ZVCZqWi*jN;Dn@1KQ1`yvz>n;D**cnUs& zEl3(|?3CC63q|8FAfyc@o`$<%CcH4CjU5xegSp`|s==Wn@#E;eY*>)0$0n*TPQ6}o2fbKSYa0d;KM#{Dq!8zo5g9dgvEx6;Iv_rH|w&6CS-lwJaW$bw0 zE$%HgtWbe{K{O$Tf_wQYuT~+TlI@ovZiN-G;yB~DfrQzq6as@qw1sc|OrZkTsx)0{;w_i!FSUL_ zh3BinPpI%f;(K&=Z&OO`nn(q(If-0qfwQQo^$hrFe=s{Id&whJZxegYh$Y*n8sHJgDxV;3@Fn303PL zcpvgJT0^grs;i-Ya+?=Xb@I=Zitl7U6Z(!8U!Uqkb@9h}OV(Gjuf1;0-0N?cH~-r= zF1TsoqQy6J^iKJbrOR%)b;QU~qsNTBWZd{mCrq3)`Lg26ub49R%B!YLpD{Bp|NILI z27mnS6Z?*Z~#~5YS9VAVQ0%s8MN)U{Ndr za*+-X2_Q`(2@)VmfIue%OQ1-2UFUxPKJz&Fg}QFny7#WTu4mRiXMcNtd+&e$`*B|T z?DGwMn$j~GQB|Eny$)*Is?{Lj!jnh&aOHb=rl~Jm2<4tf2f9ZY` zR4Vu!>%)x4ZFTbT-g>*4aF#k{xNg}$5W}+<@k<2eGT?KM)Ug)`&lY&$xT$wWQZ98C zc>9JdUqi-&!*EoqeC5uQxr#=yh08s5sfkv%;z>$3of4s$Rb6mP?{P{3qb?mUR6S%r zAl{FlOlZoy|9nhYqn94$wW5Ivt&A==ag-~DmXwTk1>)fi|C^aiNbN#{|_@ELqvF`DzM z!QU!8??W$Im_(U_hjUESMj!cZQ5VP1702_Yr1bu4s4& z@oT8unCKMHUVU$bGzr>^?y1pIej&JJB;VIJL3#gcRgb#xBw}|(Vv63`2F?!7!;P1n zhxgs;x$jPkzWbfia6bgmeYbwqC3JNxLg&GfVJ+%R7`}+k>N4n5KH$x$lGSu2=MK7>> zz%9q=r3Xa*zJ5!;cw|z_w=g2LXV{dch=q8@bc69)!p9%cA4!Ie>y94KBj5LW-OP}s z2T5zW&?Z>Dt>XOk5RR*E!ce)#f0RVGxF@p*RBF_uB1vBh` zy|Zt28(9nm2;O0okKqn@k|fP>s=hjyAirPFu{WaVcTK;CT*&Z?O>oHW&wlmtz%s+z zeZ^)m$~Lt!>t6KGUS)=N&V-7muSIC97_MM=*3Ug{H}?<5|AK{|WOxSS8yTL$@JxoM zGCZB(X$+rY`JZ4oiSf0wPAyrszRd9EyRb*b*n=8|BW2YK;ieXVuexZaUTE{u>Qck& z7r=jZ*A&69mf=T3SKm$3bk{HcI#l!@RMLJ3OYd(-E-$>jyVUUFGD`2=HWwJKW%xY9 z7a2w?mYZAI#r0730sRNF{4cTi53%re47X+2z;Jtp!x+{vEML=vj(&ZwF?}9k_Upvr zcV)OE!<^5TQRRkr=L`4b zlg;1W-|xfA`y$H>f2>EEKi%4({=F_BG)4)|wS>UcWtgo_-6y9@M}0pHDSs;bG&F(sg^g>0SSh_7)koMZ>U;VLiib z8E(h$Lkt@jZqKk_cq9YX@V^b?=QDn57T$tkEyJML zs`mF+7JnbZpE2xaxIOEC4>4SPFjU`uL7CyzYiR#j)*I2RJU$rEZ}o@kwr$_tO}}FU z$`|!;%TbK~x#gQ1BmS+M{v!+e$H2cV;{Ew~7JoUz{aAWO_dL3D-lXpOxA!2w=#Q|g|hG!%ziI0+>G%BORohBKg8NkOBPNKOKEeGlt`sJ_ne6OBnu?;r$FBWcWD4CxP#%&UfhA znl`um7jZ?2neB$oEipp)%0g9e`*B|u z-i6`MSo`eG!V6jdaWecVi(kUbRT zVC{r5!;Tz;Cwx&={HH-{)VL$#%a#39_Ia3v_hk4Xh9m!R=Ph;r4QJukHRbAHA(+Pp z6%(Cmf}H-L(x;(Mx2bJvOAQ~=_%N^4Gda;iC$v^!x&uI)TmFl7{^B+6$>y|ivZ5@c?6|PV6TiyEQkiP`a50^4r+-ALT^HZqbUnuo^ zgte#QStsA^99L%e-955b+wG!XZ=+hjWlX={u=cCnbN97tSG(bQ3Gs3KUdh7EakZNF zdIjzGA`7S4U9`F7zla;kZ~^1Hhwu5r<}<A#**_H7Er z_vc~XX7NwE=f8RVk)%??W*kT@n!Z04ZJVCIHe;A3lhWpv|2RG=`v9IZziInv$-<+4 z-ZY#+taGYtZeIL<3+vIZ)bOW^uzyVMD75D$=S!nm{C&|= zGM~1W8uFvSpVR7&rd@ygr4HToFHHi*@y5mM-9^bKkY5{y3xfTDo$60s_hUbiG zb9S}re9OJ|h3WP;aQrY*{Y-c)|HZ}=Q>T_0ita$4vHC1MJKi>9Si|r`3~L!SFziz= zp#KXYuNeuK6X85>J(P-{$I-tzZs3=*OBvC&CfP%Z&mF0`US%$ z7>;E6w`12+T^Rlm!(AEHG5iq2k1(uZxDCT?8P+n~li?7C!x(PPa1VxCFx;MDJ;RSO z+=}7H7;eq*!wef3?#OU=hC4AF&TvbHyD{9E;SLNpV>pyyvA5~<&+pm!kvAd=b8m}^ zl;)0Qo+Ab@Je1+cCfN9~$ic&z+w||eXzS#f5<;IW57jIaBHHI~y*xWGjmhY|c;-S7 z76Iel`db}LxaF$HZR!x`mDvZpdRIs3Gcjc4*pPR~i8=3e^%wBHX~}oazV}x2EP4gb zYwt^ssU4kh_g^24yZ>j({=@5Upz00 zb|oweLE??|yOjBz{`6fP^_1;#M{k*v@4XE2qf8@YrtSTirUx@sWq3}NVVTU(c{AGe z9P&GZ{63L4k*7G%!CIqem4B;#X&vngT8V+QudnO74{m3T^O!5t6&>QOK@5~%PO0wY znjKaWTSL|6N(^Puqj_B|f4xr`l3Vy}=}S4dZ*c$cW~CXh3+dc|?)A;+{~RSO0> z4?9mc-gK4};nnZNT36x~=aL#%Y>mrU3*)qGtiq=d8c!D->?P+uU{+>Z`5xxrBbeiM zjXu7BJ-!~{imj$Z>h}ygy`aTlZ~cePo4QZ-7c}&A##T8x4y(v*i4X8Os;#dos~WGR z`9HB$ABRJmzW97crLzG`d{$)(s`OD%OqB{DnYsxm&mK)vLsxPZcnQNgq&54 zjd)&MQem!cyfo}|u3^||-HNAhmw!ZTweER(6gRo+c!$uw+fmD>|0I1XJ2V+U7^)y-=AUcG**&*or&envknW49Pcx- zv3zBs2WIVB5-XE%#g@Z9E@PD|vD#_$I1{h9Vryyge&cLUf$@rHoDC0;%Xp>WV3gnf zZ4~>H)em8Ak+HJzCX#8qS^w6s*_8{rIboJ1)v&G0SnZ7UIE`28wNbsH`xTJ5M%Va>gDUb|-iEusilaD`P!0 z(YYfsAudwrAA7LtNhb_(r{X-4@U+_RG*(qyt)pd?5j-sR;DV#B#DjgWbw@Ud2kSra zS0XK!gr*K!pbmeju0uIK^l{F z57pApHNO5(?duOU)E{bPf2fxIp{9cRLp6*>{h=n*bEK7TGeTkT&73M0X@g8H1m)>5Zs8GFs>@jM*RqDoD zgT^~lHr}dXvB#+K9;3!v?Myu88|fAM<5dAnEz3_1%x69IcRJ#9Ig=TB>Ie>NU!FT# z^Tq<*msMX@$L7&Mxts%7jHd&I3tP z&JO5Ra1b-s^G1Ai`O7*=>PM$)1|L_``tIvmK^0p64%JT}1P_p7J(_)niu&_a%|nop zqP91pOOxZhHzJhb4h-uV4rjOr!(j}EG{MSzRXv^xq=>h;Aq5qG4tTB|{54bwdK3$Pm8o`=t*H zwTBkC5%(MUC|8*uIsoh#FzIV7IAg%)M>Oz>$83gn_*NZ03Eh%*y?)i%GXNKOCE^iu zE2=(x@<8?k)qZX9BSJL_>A`W$3E5G|(GLHGV46c?YeY1HgnIkKJe@B6;(*^FlT;AM>Vm{5XO zBzsv~=XM=|$r!fw@_i9`3y{oF*Atn;{xp54SN+#WG6oez^D&}PYkKS4CmY05mBowmR;6Cda#Gu9vU zy)4#Kw=-%QUI@|cJXC)|<@apCC4AlCQ2iR$!}6uFCv`hVPAd3Yh;C;|T`c9P)brk> zsAjvvSHGmK=Mpjx)UUmbqG{c`R6bvv;}mD0TF(y=2YTvcyuBLeS(k?hQq{UFiu#n) zVzh4OfSCmsq3x&jWh%eP1s9?1r}e9RCBTXn3A07PIjFm@E*$Zxd#t#DX;4agkJF5t zWe**hr(012Kg@rQ)}q>A-S%~5L|RPl@kFAx!RYG;g2Rd#2b;s!iyP>VK|D# z-^0Q~S$H(VvlzdM;Yh}>Vc}^kybHq_j6Z;dhcWyd!wC!@X6c2na5oFrv+(UKd=?9D zVBtj!A7gkVi$9NrS2JAB@OunbGCZB7pU=W`7{0;qJ%$BKFOT8H4CgT1hv8c+{dp|h z!@@hT@LeqYAj5MQKaYinv+ye{Jf4Ny86L`TFNR|nE@bI%WOy;d%Nb5$>DgI$8pE{= zZ(=xur8kF#uV?tm+NSq|(iq;r@Oum&W4N5*9ER63oWXDc!&MC5V%WoQCBvH-KFqM4 z;aLpNVK|B5#SGUnyqw{U49{b@h~YwpUu3wN;e3W07%pb`1BUY$zQM4Y;e!nSmf`0Z zu3>mP!_yhw!|*PKM=~7E@KA=Mnqbj^&YObw|1}I3GyE3A4#RgD zzQ=I>8y5=m@H}-Z%|{yaP|AxpudnU?aE0NWc6h$CaLeZnrw(*`uJh-H-|ZE1UVi!V zH@xtBgwK1XOuzD+#+7*7uwu5D6WV<3TsM1O#GfDW`Gp4<{~*JkGJJ^P zmhAZxe;(C>g=-jY#c=e+mp-_F`D}k|kNI9FUrvc0as6(?1w8L9#Phq+Gj8QG{F~l0 zn(E69+*hV_`5Y#2_9P6fk*E`_COLI%J}J{pLB``&gL?Pmt}33wFs|7F`) zq#UoPyjNb=itx2su}kF__J&qO!LMB9cMN_B@GE>N8229hLVl|iAE^Agyr~rf;CEQ% zH>X%DV&E5s`2H;qeucjaV!ywCzaC-RA%|6*8n_z>uhR-W#J}}|dnhCx@*E@svKUeX zDTcfUaYM=>HIQ47u$Q%>2P6tI9g+sILkc15A=@FxAT^L1kkIwuLk2+NA!!ghWI1F5 zWD{gN5w^)c@R5fF=RQU2(kgP5%K|K7sL%Y2C0J7LK+}q18ffI0_g>bgp7p5L#9LK zK;}X0kbKCCkoAy_kPjexAcrB9kQ&Gp$Sp_++OHnc1JVZ)1&M|vKxRSaKr$eCkmZmf z$Oedi+XVL>NV&@Ihqf2A&kt?yf3EFy7I+8Ul4Z|G#($dKoM%tV&NNxFgh&-V17UN` zb_zlRej?zf=4Oj;1ir{%w3)5+H3l3!muaS&=Z?$Bwwa$bFGRf82v5#2X933MjS;^m zJjG$QE}UV?aG1$Uv=L*h<~Y1)Iwr?r8#8Iz1jKt>$VB3?$Tt?8z^zy@4olhD%`q0M zITbIWE=0T-pP!5hPKJmvXPE6uQouIg1(sCvglykp-SB%&#O7J-Sfx7^>wE)m6LBcN z%u9SE-EkHy3E)ps?3I3#U#RZfeXE13b$gWjV=T7$M4y&p zN`-OyNI$D(fti*EA0vhkmdV=fR!fS*ZnmLRLOkvFpOBTFZOxR+?TuX+Fok%=A3hCB z`GG&&kL9Z4SX@kEM@EMKD;Y?29Qh@fZ1z~IHQOr0c!{&;T2f6JF{IKosE{>RDv(HF ziCES=Lz>c8vqDS``YXyH-Jg>mnR8598rBvhlZs5gA8@?cltX^MBEM<#vaR-@QZGus zg*L2tKqVC~1@UwXT9b`zLoUSML}BFqNp_Z5Wfw|&D}~K4TWQ^P!tbjvHLz_GXJxUEW>8Ere@|?#)zLN?i}h9%|&wRyv*!0;0AC_@@jOxC$J5eb}`lAP+WCTE)Rs6Qts=Oiba zvldvaRBNLZoDS7x{3KwT*`935$w~I7nJtn{HVid19xX)K%;?FK*RNG&UZyJZD!6k^ z3TM4YHe0P(*~EVbZi@Oxk({0;OD}LSo1AXRNO7bi{7=%2p(JareV*m%D2lTaei=3; z{HU~La<(m9sV)jHm42zYWZyd2H#-Fry2#Exi~LNJjE1WyoD4VFe6A)r$8WIZ8Y-?* z`XabECow_tXgF?QHsAnn`zEWokvYu3F4*0<6rxT~~?q^Kc^v^L9J`kDi_ zwOU&sk#$;|E!C7oMHVk>sVkXeKI^4h(d!lIre1)0kZwiC*U636MC0fidH{C$}v}rt=5swo5y0CbvD?L510- zRr1`fwP$B!=gKkSBe)$oInuoY?p$BMZta3V1-rGmsVKNCYYDl1`i6;d*~$@iLKfD4 zz}Gi~h=-ps%aVmpbzn^!d8iTF#pDc(qCqdZZu5!njN(c8p(g0q0sd+k6EkB>(gb|S zDJCHS!J-es|1Zh2_z5iay3z<_Fks z1P*Bt^gx+JI3yaP5lX~-^(Qxz+qO!p&ww?EiRh3>b z|BzS2@A8U>&A1g#vIg^t7k!M=v2{XB#KCV!lBm1@ehK(nz+Vl%4g8tl8X*(F9|itk z@FT$Q3O>@^whjDM;Lis?9{dP!#kUZew+y}jA6HRAB#8^)mw>+o{MF#wz@G`eQFz4! z@JE3^82kwEyMo^U{(0~#!9N84F7P*lzZv{B;4cC{1^kKN4*}l`z88Ei_+Ie6;CsRU z7QbrzKE`hyem4A)B)m-wgg{@YjI92z;DF(r4L{hS2j5@V(%B z!S{mi1>XyOP+iriu8&b&>rh>E1(uW~L<9Ke!LJ1W5cs>m-wgf(nvb{uehK(nz+Vl% z4g8tlKcM*_-Ab_y{8ix32R|PC2=E_dpi1ur@Jqno0{&|7VQKG76zu*6s`NI1e;)iw z@DG8%3w#*o0S2nXW1?*ktnURr+A{{zjDDPt{(^j|D9vuH)QAwTJ z_s0Jo{m4G*^uFW%o^Wy1d-b0rpqTtY1XPgJU)g;(YgPDtlAzE)eCbf9a8(KRrw??s zX)v0D#n3G$%Ao*o9SC z1nzktH4E<4nvrsrNEg`%9W6PLA_{kjhC!mB18Ec^9zuHKz{$k9oeBJf(8dI0rbNYf zAS2GYMv7ed8-&!egaf){Be%J@r-b_yn%9v=0`g2ntSlVgmAKQzJowoVI|tlsu&pxX zaG!5Fuo=H_aI&GN9XXh!-w60Egr5WZRH;?C^iPv9m2##a)GlLNun(84G~7ccy~3e? zwjg#o(xLo_;ec*wh(Y0Y=tenH3RbX5OVS}2;xGAlFtQ}e1e=EA%*BCoo(!a!3e>dJ zBV^er-TPbX3B<{UH5SU+p%OmQ0L7JMjwDzgbONK;Bli9s!f&P0cbFjd|&B-^ISGYUEm zkrIjj!DvrU%C^)GcSbd`%_&yRLLM2a*5ucU%9oFr)Mm^mKe4Cs&l%C~}GYC26L1>E-tr0f~ zajES(P~Ucy^{^11uU3Qk(>-3QtEO>yjXkKohKshoxE8TMTFxxSB3~Li(x6Y0^h-r; zP|H{Vq4tjxWo%Z_7jdV_wv>t(R7!PRfA68uhx*%0sr!?NP4%LTA-Ms+L9jN}pcQ2{ zqo$O4GNZ<*=h@{bgUd0r0}WE5A8piQ?9gC1deIXP>~VZ-c_Pp|X#AkE+7R1cA3?uh rkEFa}=no?|wGDr521i#RddZPlX+<;wW=Puw`)R9?S{l0lTeklMp)0Lr literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/libeay32.dll b/Utils/luarocks/tools/libeay32.dll new file mode 100644 index 0000000000000000000000000000000000000000..8d31f86685a7b44b9c98b9521dd8bdbb13808e0f GIT binary patch literal 1177600 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�tsU=x-qHliaf1x&M_SaXSo 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 wVJXHW9=ldeDRIx$L1I<1Uv8l)rP2jy0c>S$k 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�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

>!q+cyh} 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

JMmR; z=eY;-F@*Iheh@~8xH}0`sYG^3mm8VZ){+N9NH_M%Ir#rP;di7Q!y9b}{&$3*Dsr$2 zbD<%9!G|#?o*vTUC#|6m;orB^)gn`Ok)|$;d*EkyGjf6KD$f$mdg=h;>XPzAUigql zrwd-+hoA7k?W2t(-y`IWoAxh2Khz%}4CKx)aeoCq!DNeA30K~3!KQhhj)d1@leKt5*9M&%xtWL;CD2IvI&3P9^?d> z_8}LJ7vS?_lwH#3p$xk|p)Mw_F5(!GIz#GBH-5eVKS)o6@*l<@75P)i?(U=?|X zI~Vy8x|F^I;f2;vHjp3fcIpc1rN9};U=w%@@0>5=2W2N5#qSS@|Ht$P0;H9=MB$5v zc>5^N3UQD0G2bF70>nnsh{dgGZ0RKkDZY@pHk4 zFnQ!6T|VOKz76>f!GnIpwFza6GVh_x__0@orZass$vfg4Vtuw7w+gBnp?`xKkayq# zJ`kyeXCec+B6sojRNAHgsVACew1W~}C?_5V*Dz#z1o>heOACh;{uG#&wc@o4vYNHn`hfVJ~PEi64xb-z)W_jzueZ-bd&rl=YVVjxIMr`3& zZWYX&zz@_0?8By6gz$aYaejo+2M-aanE!`(@iQLhXS_Z%i0_$2e6yWK89KGOqVgVP zyvrwZU*ma~Gt_}vMB8*Peb6i55$5s)`L^;u06$8v{qGUy9(!C9aZTm)_e_kyQE7<>+z-t1702mQbqU^Z9+R)US-RS*GD(DD{& zK_(aq3PA~&2QC9Qfi>W9umkJ``@s*O<*g3o7|lESZ4TvFFaV4J(?K=36x<9R23x>R@F{3^yF=*;P6c_O z7}SBwz%5`c*aWtNH^E2XdysMmXBB`I?kEeL?kU=R2PvcYUt^ljSIuHUoz;5s<_yx3DiL8K5pclvi<3TB? z0hfYhU^UnXUI4qnC*UX0`YwlZH0TEUgOOk|C8WIGdTPnhjJ3=3-UlQm=6|%o4`u&FnAKY4EBHz!2$3S zXtfI20vVt`I0ICI3&E}60T2Rjfe*n~;8)OkwL>`p^a7`YJTMu|09D{Zums!;g5Wu@ z6YK^1!5^UQ8p<~414e<#UyTJi>T1%p98I2%-e`QQ?8Ew~jt1h#_rKom5)pYTC%FbYftRp1J+0;~p)g3Vw% z*bP1aQSci$>;YsEbO!^$STGID1s8!E!9Cz{5C)%vUqRak2^aJQ!@-$g7FYt z5I%w-U;-!y=YYk)50-;f;1RF|yaB!hzk;R@;~pFjx`BaU7?=P`!G+)ka5s1iJP%$6 zAAlc0>qi{Qk)S6S3dVxTpaj%`i@=rOI&eF<2doFrgWcdG@ICkgw0e{}7IXob;8ZXg z6oHwb4qO7R0?WZ&;8CyzybN}Mz2Fn@6==E+`3EZK2Ap6p7!A$@v%x%Y5m*YAgS$Zx zYyrE#``{b!Cup~xItZKsa==-j8u-9f;7;%;coJ*{d%(xwTktzL_A!Uj1Dpo(fESz# zt_5qsGvFWKTktz*y@B|HZXg?+1uB6LTnFw2Pl1=gN8mfqa-%~z4mg1eOaXJi#oz|8 z8f*q{g3mz86VUPr>QOKNj0GC-gZsftU_WTG2{{7&Kpyad zDsVoy4y*)^f)~JE@Fn;Yw0#o4ffM9{37{NY0qzH3@HJ@i6tV#Z0}t?l6<`zC1HJ=? zZKmD@J;7-pADj(p!1-VaxD~7gA@Bw`02)6{*#uocACL|5!4xn9%mbH#8^LO@0Xz$K zfe*nqpjn9g0-eDCkPnJM9k>iE2X}${!Bb!d*ah~1UqOd0$Ojk%^1%e)1q;FDU>Ud_ ztN|OqHt;U^8Z>=|atP8uUoaX>19QPe;2Ll{xDRXq&w^LMJ77Qf8Z>^Ewhr_Kd0;A- z3l@UQ!FAvc@EF(%c7u1p0q_H8^c-g`f#X0X7!2~k*0kty2r9q@;3{x8cnCZNwu8OkThL@HX#iOu2NZ&0pn(g(Qg9o10Bi+& zz*nHf3%CP4KtC`HOaLBG0WJo&fCs>{;2+=%@FzIpMamC29TWl&s08PNE5My#9e4?R z2z~~s+bGw-1;&G!U@^ECJPqCkzktKG6EDygj0Gj&d~gG}A3O{8f^R^FmuLsT05A-U z15-d1xCq<~g5Y`Z7Wf{t-$8i+{XssM0_Ff8xDnh3Hi4aBKllN(eVIH48DJ{ENCU_MBfwNp10fhnN&|1kE}fl*v-g6G)ZP8N&Kcib-rx7fmCU)%eO%_)oP|T-6u27hgh${-cptujf1&(k z(hl1|CF}v6a5$U~x5Cq~1b&A>uMifDg=x?Yhr^k0BRman!58ow40@G*4Msx~^upnA z8e9jDz#{k%z6awq-c>LJ#={=a1&6{Ja1A^Ri{UHy2Xe1d7BCp9U{C0QBjG&YUVr5o z_z3=jRo-Ci0pp<=4uuQg4p;v8^ z4e!G*V7$Y81-5~4&XXg&#rx zgtCWCVSAVeGoTBOgtOpkxE&sXMesI!4S$2Xl=cBzKqWLl7aRkZ!ENv`EP|!*50oz> zoiH56Km)YF0dOK*4EMmx@Hu2YC2wF0*a2#w83y18I2A628{j^87T$u-;5W#9MjT-) z*byef-p~by!D(Y*9tz#(uvoDEmNZSW902aDko z_!+Wa&`-mbup`vKKF|Y)!YOb8Tno3teegKE49nn8aKFS4*bGL%7?=q4uqVufxo{Mm z3Kzrma5p>z&%%4~CHxJUuc+6s25bo1z;;jvv)~Xo4K9Z};VD=QpTVE7!q>c;VI=GT zlVMM2gB~~tj)e>1W_T1{fhF)QXy4GM!A7t>Oo0}d3k%_FxDM`zMeqT93(B|j|FA9$ zhOsaW+F^e<7S4t1;eL1?UV}H`Blr@20qr}+m9PS=0h>StjDTIB8g_>!m=7nwrEnwM z56{Az@G<-dW#2PKh0S0XjDg)?PnZX%!VT~+yaG$%A6V@N`W6@i4bTSr!|8Ap+z-#f zVps}4fc_(S2b;r4sDkM*3+BNQa2i|$SHZ3DI6M!F;bZs){(#I+I1@?kI zI1w&|2jMmN0ao~#J`QT32?k&xoC#OLeXs~Vgzw>B@O~kWVSA{9W;hT|f$QN(SO&_k z^b@cS41r3hgAOSAFhGB;1PHWz6UO?R9yHEYzD(& zG}J>A^unQV8e9r@z@zXYyboW&?_jF<0Tr+->Xn}*^6u255 zhj-uyaIHbgdQbtCup6|&0yq&afji-GcoV*ae_@b4NZAm!hlwx~j)2qP8n_3Zf%o7i z&>YeU>%$PJg1w;~`rvrD93Frd;UoAO{(==<@&~qu2`~d@!2&oHu7dx;OYjN&31uF6 z0Gq&0Fd6oQIdCML3)jQ_@H~6~-+@*>NLd56hOsam_Jf1q0=O4mgYTehg+a=iunmlb zY0w7q;3T*l?u8fOGx!%)8$|k{3igC{I0(*y>);7^1AYKw#X(9rtP6u-XQ+jJ-~c!Z zPKS%&R(JwFguh_LmB=&L8b(14G($fugtOsxcoY`F$M8FptxTJM5l{n-&Hh>XO11)d>oCKG_9q<$^1ASHM91Mjq&;a{FJM_b0a2%WqSHSJ? zG%SV>;YTo6qkQ4NFcc<01GGRtEQHhGGPnsIhUeiWco#l{A3$53xWh&;0%~Aim;;By zX>d8*0Z+i|@G*Q1zd&{k`ZlP5(XczT!CW{PPJ|2L9(V=51!qn23P!${0BCM!LTz-ggVH>Y*+w? z!ijJ$TnG2SL-0Jj3CrMX_yfw;rXIsaunmlYaj+XS!W=jpPK1l$D!3CC!AI~Hto&c% z1CwE2m?ac}|L2#>(?@G<-a?z+@1*beGoCiKEla1Pu6 zkHSmv5&RC;dgKudfpO3X2f?{;7d!*+!S_(MKK{dwFazeoDR4bJ2_J#60p$y0VI~{} z*TEwA9#-9uz6|z)gWy7V9KHm1qe04+Fd2H_B)A>kfIncJjqw*+VIf=vi{K})H=$34 z;ZO}tus<9R7r<@s3@m})V9=(6l+9r@G(amH0H?#{a2LD)OW_Cj8*-b`=3pBb4U?e> z`d}fP4Clg)a4#%^ci>a_3I2uh&8d&D9ZZHMm#qc$h4W`aQ1&o0`VLvzsPKGPtK6oCMz%P&)LfwPSU=)mp-C-sSz>#nUTni7u zyYM@#T7etb5vIW$I1Vm=o8f8r7=D55Q1TnLf=Z}|HW+}z;S{(W?tmxZUHAd?VS|(v zU_%%Nl`sYNh52v_+z5}uTd)*<0Co5vWhK}W#=>4O2M&P~;X=3t7Qq+rHw+p<{GbZ* zFb9r=OW+=O1wMpt!5B%KgB_qAT3`Sc!ufCmJOD4lx8RPVj>68+0G)6QoDVm{)9^9; z3M+0)JYWJ$gHAXYPJqkcR(JxIz@MpRfxw!#p?+u7yY8 zUHA#yF@uy%p%V6h0XPY+g-76R_!U+jiymwbyFnuy0B6D#a33s&uRyIDq^u5G!45D5 z^3V^*!bNa9JPnKC8~6*%anuIH^Z~A49X@D z2N(?Fp#fT;AC7=?;cB=SUV@L|C-@sys^*;uLtsZ32h(5xj)ODc26zCTgJq!X%6kU3 zh3PN=3*iE|79NC`;S2a1yotPXVJOr<3+xZa!Ikg`ya8XqPhd=<3}8#x1?pih=z>Gx z0=O66fFEJy$-FCJ9JIo*a24DN55Y_DK70>)4f?PdY!5ZC5A?%va6ViK_rXi>DJWA& z1FQpsVF#EDv*AEE18#uFVKICQ|H7)Z)C(8`bm1S4TA z>;`$*4-SB1;7qs-?t-UaF?<8s?zA1)7`B6Y*bnxH6X7Db0Um%?U@80q_H@F8Enz#D z1g$U^j)P0#7I+-qhaVs_gZ>SM!gy$aSuh`thV$V@cnscz&*3+)_n_UvW-t<}U^=wJ z{%|r}4!6Q%@ER{ng|FZrSZQzG6R;iBz+SK)%!8xhG`I}zf@k1OSO(vLx)1JQGuQ#9Lnj;z zXTS|`A3Oygz%StCX|qrT^{_9@g`?mcxC@?wSKveV7XE=j`_h-d5Euh9pbHLxGvFGy z10I7n;4}CE{sFgPiUc7PhlLpK}> zC&GDfHQWx*!V>ruyk^3M9iSfegZXeWTn=}@{ykgH2(3m05~2lhTGr~coE)$ zFW@g&aW-WLl~4<!U6un3mGH}EI8-SmyH zHB`b>Xoh)k6r2f{!5#1fybjCYN8pk>#f3FsGuRP!hgonioCKG_?eGM=0iVMkkex%^ zVH4N^c7rzPfd#M-PJ(mbVz?0=f>+^7_zjF+!iP0sBNzfZ!9>^{nxO*@grnh9xDc*| zyWuH#1>T1*;AhbK=+j^`7z&jz0cv4SXogPM9}a^P;S4w*u7;c8E_f1NgvIa?dulXsG%I_o(v+SAKtl)ue) zW9yh37(3ci%`38xWOp!^WH&TS^CRozY?bpx_Dsyn}ql|^d z(Z*M~r>(VZT`~BQX$A9Ai{r4_N^>W(Olh?1xIxHN=9!b71!hjMl-Z80?BHIO-QN5l zJILA1{55-G_ABeNY|h!zwk$_E*nZsnIJ>#&Dr=gaQfHMbtC`EPyPNEDDTm|^%B`sE zRsLM|+w9fZV{;c}SK?x>GAn29Rjlo$_FxMXaGTdgX##eRlWkdFHw1ZrQ2X24$-9v_4JQU74=T;HH~B zl-J!omA#aGl)TcYG%Gumf9bU-n;74Ct;&yPn=(_GrL-&iDYN--Y>o1@bI0Y5&vhuz z>&LkBz1Q>;JlkEQo9?T6oqMnMg8s1CsXS_S8C}XF=Be(_?g#FDZkxNOyOQU6>$;A2 zw|A+#kvrC#?v8a|b>DIKcaL`)jBcgd=uzgdN6>D}G-et58NEuMGN8;;KG)|e>lqj4 z<|_-7{gnfh1C`J8gOpC=VC4{HseY((m~yysgmRF#wtJGhrKhn!DLJUhDHkgh z-Ur4d?3!Jse5&7Q-(_5`Jf>ZtJg!}-T%}yCT;*KDjRV&z*ErWX_qZSEOZ4~j_w{%6 z5A}ESEA2&@tF7lV6O8f3JY&AGz}Vl&mw#)1VP2;!aIWWv4{lWUcMfn4at?6@oI{;1 z=O)F;y4m?ok2BZlb=&Re0DKA?~Gmk4hW}o?%^@Q@IV(K~F z)*byt^J&x7J-u9CL4Vp9q~GJLsIR22tgoW4s;{Q6uCJl5ssBe`OJ7_6ufC4HuD+gr zl(W#;M9-T|=BD~)`sVr;dSmt}&hF-Qo61|t66=YSI_oX-9rIT274ubdvALu5wz;meroFW?$KBpr)$MdM-n;Hv-kRP9-ofr@x7(fO z?e0C|-r-*CZR(xpo#rj{c6E1m7kImQt9l2z7q~OMbG<{Yr`dzI}}Si2b+S=l0ldTNAy#?AyF4_DJg`Ycpp9+p}legRBa-&TDr(YaO@3+RWR~ zn(4Uq0rp&XwEckHWxbv|%y}Spr2V9IORnA?W8Ij0B6o9caqbB3IPbpPJ-K@CG3z0F zNv_d)Gk16HncQ~nWbgUhmAR~Qzol9KTASE8`-@fFayR9Ub0%7^uKSN2}WJ)Fz9eb#pNTe*94FXwL0 z-Q>OHKAL+j_nO^ebvrlP^X<#+2Xix=7jw7enylw6J}P!v>{(Widyn_A{Y7r1`$6t6 z>q=*o@g6(mKbRjVOOy|lkCczuH{R5GLjOcrsw`7JRX$TbSH4i*&3(zY$6qO5D<7IC zdqcf-?aOlCDBmjIDYKmKm6bAQ=@*zkDi69VI>#G7DL*T}D8DMdDPLxebPjipaK3hb z=SRB!Q2yk4v74N~m2Hi6Y~9_({zuuke4Fxrm3*$E{7G+c`NR5ldm}%u>}RTT^w_P%~jV#~1+$bMXZkOxje|amb ztEh9zHp^_0*(kGd<}tI~Tfx2F+s$27{a&BtKB=#!Ze?uZZEdWsPBBl)j&i@xcDcuR zqrGe0HPkiL|ESxUw`Lc(p1GE~w)$Un9d%uGJ#_hsPP>Z8t<>Q?I3>Ne_& z&S3Rk=W=I=TA>bAFLH*d!_^V$NOhEYytl2oow~icgSw--le)9Ii(083l^d;&QU9mc z7-Q8cb(}h0ouEFXSF0ZzyQ&k_N$U5`56-vFcg{F#4d zr`D?t>JR!w=Da4gS#422 z(OcCvb*4H?ZCCeGXRDL59crg~lCi4&XYRM$D)w}HN5^tju%=p1*xy=)bEUO3_mRDq zwS}{}wYxpS+1sAr4A^@+Us~Vg*0*o4Hn-dC3#`0d>x{AQv3GE6`%LR|%d)HNU9F5` zSks+R&NtRu_7!$*d8hq{b(W>tXWNHZL!Ddgv+NdUW9J3?0qZbpv3;z)y?whi#9GDq zJ-4+z#Jp}dr9s@=X_^pQ@3BpUhn*+{;eL6dDvQzSvPa9{ol;I%#XQ& zOqbfN_Na5zUbRo{R|nL&>O6J6xQU-#`aRi&>VetY+@sZF)MM4-)Z^7n%oEfp?qS~l+*6Db)j!I< zFMBq7l6tawlfJHbih5P{8t+u~H1%}#4E0QPn0c1Eowtv-x_7E^w)$IHCfjfRS$1gl z9Q9oF4t;C$JoT4sw|BmJf%>d@p?Z;ev3hg%67>)_@1EnHW?ZU%TV`Yj%%94}nwP1U zt2gV{WUo*MnKRuh)vMHJ%!{nD%=xyF@iO1pPUaiqJ7eX{SDBIaikaiB6*42N6TP2| zpN(6*AC1-Aqup-n5o`6#jh2=9+gLU8i}8oChxK0WXltDPr}3AO%j{)dVtsG?V62w; z)!_1rOpSGbb+7f0v4L}&^{4Yq*NAMLBv^_^?fYt{MIb?Wu%Ce97& zjp}E)o79`tThxcFTh-gt)t%ebZHznAN3A>6yVPT?yVXned(=w%UUjxP$GBX-LLY1l zF|O5njmz}w^egp?^!JQ+jcfF)^)|E5xKC{~?^j#Req+FxYh16lo4Y#?s8@T38WqMR z`UT!$#>M)6=CJH6b6<1A%-#0-nN>2+Ti+U+WL_~QTQ3{0WNxxw%Dj=;&U!6V?(X8f z?RI#3xUPGt_qp?h^O^Id^NI77Gu=4Hd{KQ#eco)$y==a$_870Ib8{D(huW{Iuc_Bs zGmJ&%>*^coV)Y~aP4zAHZS@`XUG+WneRXAHC1a4Wim{^cfx1MUVSlLJVtu6k;=HWC zq)*D;uYat5qPBV?vxbo|Mr8Lema5Ct?(8$h9}Y!on8xo;&Un_a4BK#wUme%@RQ*i- zT>V1*QvFK(TGfr=+1K1})Nj@A)TgZP)gRQ~oFCPn)SuN~)F1U<)jQo!-L1XP-74=8 z?<{wUcZYY0cfNOy_rBZU{pAk!_VE7W{-*w}{-pn*Hk-GU?_k9_U@?p6d>EE!Xzma7TJ4d8>FQxVO49ybZm7-LKpo-4X8I z-mmW3-jVK9?<{X$uhN^~PIIqucXH44F7qyO?{(+91MYdQ;XUN`dRMr!y~Es%-QnJB z_i%47Z!53SUE==ZUgurrmU~OxGVcZVWjF7w;eO~I>R#xc?!M@5<2JebxLNli?-}<7 zce1;p_nEu1`(JlI?u{^jzRdc<`p}-_G~1up1J-5s zk$F;1(qw$tEDviG$Qv462nvY)cw&TQ|znd!=QX5Tm7uxDmRTc;am7-t&Y zW##s>)>+2c#yQ68#<|9MMrYZVxr6NUjSGyfvRU4zxeJYpjEjxlvP%r7>{7#VKF==6 ze2}@!xZJqH_$c#i=Htvl>%+{{@~<<7Hm&?zE2HgReu{axaguqed98VbQKp?~o@O3r zUT|ze)5>X&Ka*w(5khAa|h;j)h24E<|b*U#Jt?R#+;s= zmc8G-%G@?LO{>f9t~KQ@HZL+SHLoxmvQx6twVmu4+8){!&YoIrb}wyjZ67VK?W;9v zp3|f?Yb{!<)~3zWW@+tOe|9%(KW!W9o7`;ezjlY#soj#j#l74+-#j_@v;K?ztNxq* zyFSr)%>JsCvVUhk$?j-o%`$TZ`xtYs=GgPJG2UG7e(y0moUg56o{(Lj?XSJ=oS8d7)6DhFY3702iMfNc zgSA7nmfYF;Ir^bmtJR#FQhu0rxORkgq;{0HP`fbuQTAx<80}c?IPG}t%Ipc+iP}lp z$=WH}soH7U>Dn3Enc8dC`tJF;+p}kB59()YORb~5Z{2oxb9bRT&pp;%#~bF3_kMEE z(Z0<+W1p+l*hiZK+4HpXwF|ThwTrZiwM(>1wNtIjw9B@#v#Xh&zS)UML5*3K|5 zGp{zUGtV;jC_lkG-8|bo(Y!{xS-VBMRl7~QUAsej$2!eE0)vnt4$BpEla)^H#Bbuy3)K*t^mPfVGsN+X zhqRgY!`dU-quLYNo<@IeUhaV0!t7Jp7~^T}cH>GTV?U!kt39X9H=oxQX)kCmYAVYhG=0}` z`x@h2?LF6!}XIE!;Ygz6b`$X$Gdt>V#Yn0t-ZDa1AStm0$V`efL zH!~>npUhgB540uPhuTNl$J!^_Qf-;`srH%nx%P!N*F4zVAoEMvk7YlU{aW^t@p9(% z%*W2BPR2YYcS7zAG&{WQzWP_n7yv_do9u z?@{j|?>_HIVTS-A#&-I}&i48ane8$==&rfcxXE}fqm=Ea@08gkW0aX?JLx;?yXckr1KIbow`I4@ zjMmrpPH|6m*K!YV$9WICir4S$X@6}8qfgOm_1*Nt%tOun%>&Fs%!ADJGXIwSQ}%b+cV#ac zFJ@lNEOVARk7gI+PxUrSGlpqv!Q~_1(%F^(MVpZ_!)zHhrc(OK;cr(`V})dZ)gn`=;@h z@tX0N@rpjeTVyzjyncdyqCU6mB>iN4Vc98qf7z+}Q-+qwdM_BS8vpSoRgbQ! zoH4Xw>z0lVrE<)es`~o;*sA(5b=9>E)l+KnZN06nrR44XrKDZ0^OVY}`g~J+zI|qE zzO}2lcR>%Dh?<+4)8@9OAr+&FM1_JPjowfr-_+6FJlprXzqin@mex4v*5;2L4u>XT0UTKn^X*ZJA43nE$IWh5Kun%CRd6B%Peea(=3WzCGd$UpHs zy1F4>-%wXwGd|zg*EJ;H+1fv=$i^>(0`-|hrKyBBB}83~ovrzv-uABIKxK&)_}n$n zNo1OfqCw(I$(E;^h~4DcAdQKXM6xKtktB}Plqr*{Dr=(Ls;ZefxvH+Rp=xYUF-6Q1 zLh{6qVL}#qpAbdxwFSlNOd4+87L4WJPuT%iV?br!U+_L zLW#07bdjhGHB%=|N+ewxLl31P@@>lKU8}}4Em)lfNlQdLoPDzpiGFO)|C zL>7sxjb%m7^CcYiFX#z!xxQ+*sZ}*&s-nya;wR&pZ)|Dt3nL|M?r3f73hPqJCaOMx zG|KG2+|tZ zuaF>A8r#%{aidZ`CJNWjK_Q51LBoh4f#W!5V_8^zVo8)w4TW8MVSg^o2~S0LANeN? zu~)*B$Z+X0%0X!&Wiwm5T6-Hi+V^j5>2L20YDL40+Nwmwm&T~tg{C~O@O*c3e`|lT zLyv4r+r+UGLBz2MOhf!kmY#@mS$+`0wkU|HHPzFq>gp>e6=i;*O_*hc@+f|V7Gza2 znNu6a6qZaR>g>sjtjq_m|4<$mS}2Jk5qK5{9taYp7rKeEEFma}*|<@~$*2AX!Z^@K z6oosjy1u$p_nDT5KBT3QC-i6e?)H{^XLrj$M^K^UfP~U)Ywv3B7i00D%WGyV+wTuo zO4znkv@>q&_UnW&gxx_4Bjvszd!ydXugUmM_tw?sJBnm;hlT>GP1Am@&4KIoik3JC zVF-gDnw@#V^qqyKgl=G8;2;q(-%Z$sOA|d>+Dp;J$w`fP8HXxFBM~YpQPxV00tadB zbb3S_ixSmEXD6hIFwz0^G=_sm8D3xe%&vs)Kv#kN+}7UqHfA3p37t)TBgr>+_Y{gK zmQd!GK)#P&$9E^ZOx5C^#@@cjj>mkEp%z?(<#;$%ADA&q8AV-s&@!{Pu`}P*-IZ@+tk;om?d|RE^=(8e5n+htLXOAJ^lOp4 zoi2dscY!&j?yHE-&DX-SS&i*o($to3YV2zrF)TC;w6(SR!MEj`+k0k3hR&8irHfuX z-yh~yTfS?61s>sX8#&O?-q^%@LK<62rmC$a-#4p!phIMOSSq|pTJmxfCLM}SGZicD>O2?~q0_MniY!B4Mv?BpHOG|(0~ zN#wL>NWNUu^Z047|2WXu)Y>bXK+-IlP=BkRH!NJyo_t&R=)3Ic_JfzhBR}Mx{@yr$ zdItJtNk?@1eojW=_a!r=PrlAY%KK9J&?k#sG&1Q+Up~kN9>PrM6X_0YquSh;tY%`M zCcQ4KZlc|X^)IS!QW&=#VNBLOVUBw#Vd`)0$x{zI8vRbHuPc!mq6qTg1X9L92;yEs z+KZ8xA3UutY58CZaeu72%+mYx1Kf zRo9Fa>yK1R-hxE1SSBWmDKUjhr^|>zlvhIE4>%zZ%`?cw0%`v&QA6_WRMLb^dvP3m zQDGEl2Pub%;!1cYi>+ip13mOJ)bpDBn1<GXAXF#MY{AUc(VYAh~xF(;j(zB#?6bYu?8{31*8DDeVG z4E59WS+_gdQzDL-w;MrEKT8Wm_v9Tgc(#Q{?Y$8OC|9fMo!G>a2Hgm(6_eU?oMWv zUHvn=J6pxztR_FRS;i%r=81WLY)5HH&|YalgY#YObWc(*KV;hq=}CdOqGDJ{@$eC) z#6w4w)E-_jB+&MICf-9tmkuaQBl#O-Mp%mN;(gRF7e&y;6s0D74$=`B+Zy|LSBgPs ztk0Ox7Y53+d%JnT&lZESntVs!toAmk?mx*miuFAavW%jr_d#_D9%*OoObBr;1VNbu zj}@{!5_TocqBkc_LD2+GrDl{Hp)jlsp}DV}X_hQeA(6c=^THr5acYERGDWd59eZCV zEekpv;f3gH(iJR}60i22-frI8Vc>KQiAR~ILb-2%LARe(Jf=emi=GA*6nz*r;f9t$ z6PDFfcolk@hiDCMRBBktwoj?(XbiHcaOy_t2#Ry^N?m2}v)#fVA4bqrEA9 ziiWu?POyX^X1!t@8k?BGN`oJBp+qMj&24^ z(ns+WXOc99nG_^Nv;(P{NLt#rz@j)9-$G23=zwM=eL*HB=?Q=P7~_PI3f=k95won6 z;y_odDwhWH9lXYU9TACW|3=P?W4XT+Jf?0^erz@EsCG)ccvUDAHMl@eR?)f{wGFHy zF?8~)r*95sS7NDwS7K0JzEw*T^+_f*Hj7#m_N`-LaVO4MqD)Abh7^iK`U>6h&hPDB zkZ)N)zBJEf+7fy(&{G(lAa-(c-`vsI*B9z0<0zgB9ZH$-o>6Gvy+}rw6VV(tX&FQ) z*kk@bRa$~Hgj3;C-iXluPfvmt;peD`T|rqSM0q)q=w#uGw~A=YDMu7_u&$Gkvx!kE zb~09e+l~G3GfJ+85QnybF4<*7nJprcP+6`$YlJ1k6ss)$N?=K+v2{UB5#b8U<;6+Z zmGn_$NKy3?z6lGFlDN__92MU9dpvQ@3Z*cY(-qw}1^E%F2rtA^Yfu2fOQsmJqb!UB zVxh87NsLbdnTTLPH4x(*5uL~{R*=Mg6E6zC1jUMx6y!rmK|>6T!K*!R)!Uj*7v^r} zrJ_$rdM+C9a$Ak;z5HgpyjGJ`SzfD2>WGvURU)BKkSht%avF!wDA5RnSOn6_h?!C< zRksRMimF&>U#h+fJK^tg>U-L{puUHe%ZronwJO(4Pv%el28vKR1z$B6|#E-TgY(>)GC#cOo=_p*#EzG0+%3-B2 ziyY~rlW38yx{_xwg>`XkkfahA7PZjsDReFtgYt2)iOC161!71m)aB}4MGtR3F+1ps zWuZt)MCA!x1kZl27Q{J}(YcEP>5hZ;TPdzjWpSJ*IG9$>jMFv^!W4x;srKpvUptf{rXwU<~V)M7Es*S9GeMM?d* z*NBbr%Muv|;a<|ya4<^sjH(9T6A66_LA=5)sjayyDUiEB z359N2b6;P|&D>5JVeG}c_O79Hp$J%i<>U$7N^F|T;;OI;HbUeKRgO8OP>hqrgFp3? zPh!R)9>f@}u;~S2v3nKy;g3igTX=~V$)jwY!h4=6n(&t;SJrpLlV6(tc40!ZWU;Ze zMto8Mq{_{=7m*56%EVg)5|&m+$N1L%X>?y=%w9Ey4kGL(r6JiJNYGa^i9m!!B2uv=l_@HgK)(91+cY;>i43FV2%ic02-W!I7Nyrp$!Dg%Tr<13nQN{ybdzp<;k zvz@alGM)w2-STvU-0>C7Jm1#cTM#di4a^2b4-n+P2uiHNmGpI1BdKFiG3*^!W=|BI zUpp9Z#=iM&Gw@op9u5(gO0=*F^C+2jNqHjgmKz1p%H*dA>4FsEQr;)!3GZWZx@d$v zc#|g!UWj}C@4OZ&VU^?fS1_j+qXsfw3W8cKo`X6q9>W?fo})2D!kJ&kd%OKs;A>Iq zdF{^?d-sK!jCVWQn+wG91rgPazz;D&2;PE03`NDjzo1+2SLOn%_O3q86fDm+r~|^| zk~KhBlqgVNObrgRC>qNIp^7|Bm9=mogyPknN{W>@yr#DQFKqO-Z1?t`9|O-<38$9@RK#x_=!3w8Wf82eUIDdCaWb}dMof2Jc2 zi+;3G96gtZm1WKMy+=;xB->}K+}Svr6(1S1gwQ{r<@YeYW3kg0anZ6vjwK zP;3!KE_{jDlP?hAIu?mK@c%12g<{E^N@nMBl@i%0bixfBy6ANI6?(Q@#R3nRHy7nT zYm6mw8mXVJqJA_Dw0HEk2PM>}RE@2!t*mR95zp9C5++|Mvn-RE@zpg|ep`qhMLTU{ zTp>@hSNURI53GL%hF~usGIp|2-N(SJwRxal9&HTu#Hc;-%*SJ~AL48&=I|VFpcZVS zgeLj2^+JG%32Q0k_vT|HDgoewEKGI)>TRS;Am$eL|;OeHIsH( ztV$8YaTRG}TEeHRNufw}xEzB#uIEhQuB zANWtC$^SN?M5g!_sq{xf?>L_jiMNk`#x&urUlU4ZR$F^7dtpgkd7e2Ti0i7TDB`?H zNsrhaO8Fx<EQu2*4}>P-#p`r#GU6Oy>*u{M{-x@ZY)0X0 z-uF%(nhCs;(HJ&z_^9UQ#?U({Yiy-w@%4Q(r=>g6Dq*MLSK_F2qg!+@9F{=JvY=;(?3U-@ zay={ZNbE<2L5f#(oS)JZ=ZP>Tb1yKb6_R-+6cSk^jH#Rvf`a%Pq3QN5PghkLH zCsPpi(dm>#(sYDFabe05^3o0pQyMxbNO34GkWIPHy`MVDt%nANnu<} z32Cxe)8dlq$wE!2C(1M-O;zTEyr8HPHU%Xe&b;dC0CPOYw@wJO3@}XSUQ1jHG-B{pB#PrI#|)zT ziVshO>he=5KkgjM>TTpyZfF&}!~=iB-7kMUj1cwWsLQG*59|5*eln$0e#Rh=T_uH_ z3@noQ2kF>YPAJNgV@0a+h*7cBKN3(R7duvkfyoVqVj-*Ag+ftROG?EmY_W0)ng50_ z)+IBGh0|(_gHw(}<(1+uwf zQCi%EQQ*0l5S6x(L+`XNUE)QY7Rj^Icv2`AxxTyz3cKZpD{Prt$d6DHfysqQs-4{T zOompvIEr#o=9suEiZ6r`-tsL+aq>$?t|0X?BBCLPm?gcGNiPn`U&R!;=YKsXBOxEh zv5v^}EwYkkxyu%bs>L^Ov4$|F6{h+hW(k$C>?X9dj`k;KkvR^;w~u`EjcNB{_Ly=I z3BpiuC1gooLUVyi(&u0eLPSbFCc=o#k$WkMLx_xNg@pfA^1hfj<-R!%#5YGi`o^^T zD4{a9(TD_LsDUi$OJT|bm4wfe$NFDj(Upn2azrsDMB#_sNwHj|PN-oHV-UKe#}xCl zSSdJjmlU;!6(?{c7V=^TqN>I%B~XzcPo<;Uz5cnL)#ZGga`@$6E zTJ7knpdqA0jU6-nMNQ%;RFZwCc&m@9sAW?^CP6%4LRMhRH}!VU7CUgl53z+oXEKC^ zaxO$D7KNAal(u0YvK%-4d@vll>GSuV!vN)1E0L}ENF!a;*iK2j2v?339m#@<8x$#X)jAZXdKlDS1W znY2h{WMt9YJs@_YLccrP$w!VAm&%6lZ6ph{PwtvV8}6|W)aP_MeL*svQc{>sDU{Qz zFfLJjmH|dJx}H<-ag7$HsQT7(nkTm6AP9Gj#AfPXc;$dduQ2-4Fd6wqc9FzgjGVJe zo4Hr9NKoNd_{dFLQ(C~u%#<5WC&uP&E7E}ob1INPkPO5ZB?3W^3Iua9kc#0WQh`Ww zGLTS^2qX~2fe1k|5Md4jY2x~ZAg9EmI7uo~h#_>sW2oKCsCRheATUL4d~@i`H$^TJ z-8Fq{E)G^bJudN@JLCX$Yg)*-{~+(b?kHkNyHk*o1+K=P=CPWrX7q?}k7Uxd_a{$)qXV6oSR%u@!>6 zU-!h5ta{=hsBGdf{Cr^Y*kNc7i?oM@+Qae<%)9&K=`*1axgC!F@JN4ns6RZVKRncz z`NYy<`mU@ZDe*3niA2@NRmt6}Yd9P1KL=Y0p(*^vHLw&$PEYzKS)%cyzmVaZ#XG|P zur=QrXbVyJZELI)^rgN)ti1->av4^9TpQcO0n3LSzu>7c0H8axox|4dJXW zvgI5yJDRbAZ{`xC-hNJPr|_jO_7G8|BA%r$V!d46aaUKx6G@X# zB{D}wxhQk|_kgUBxRC?rWJ2p}NApQqvbKvZ#+Su@hmwTv^|kQ;Fz`JPC7nr~l&e$| z5n&-ny1suYci>U_>5?N+~jOh+pqwFQrAHj|pL1P5QXvmw3yob)>(c zK;Dd*mV}jDEX@0N2Mta|oAS%|&2470(XX4eRW*DW&LuXS6cPzen8gxUBoHHRaY&I3 zpKgY4vpQK_6_=rh4ocW}b*D7sNSrIyLKniaeP(2AZyZ|D%#R5Xvsl(gc@E4JwJV61 zKUEBl;|Ev!M3!CMGETx%7Fg=!JjL$>Bctd^B7vgSzgs+tT3Qr^9*bopBYBfJ z&LKK7|3)bh2CEhEOfSYZv0fruf2l#848{C!ZN6-7>l z6W#rSb&jqWFuljpHLrx^n9D z0*OppZDn;`p}cNVfrOE5ED_5^QRZV{x3n<-rL=S!0;{4J2l7%rEw40%6YNTqsBcp; zjQ>~33a1678;TMo9Ep}!%2J`AQc2lzV!NCY7fys#aj6G3CDWKLeW6)g10rdOS`gbM zYeFOqYeU?(`5j2A9t5JIN)XADF^`0a;`e1G%09A4XJsfZ_V@oNa^F#0-m%#)?1Z_X zo|UwbOI4z6By3C6kia&s9)X}#f{H7KuUu3sB5`pBMD@YfNmYh~C|whh7C|*gh*EXH zuU=yMTT`{W>>GSdYE0Uc?kXZB(XE%vUQy)=y8M)*qUs_XEVs%8mZfspw<^v#A^(3? zAE8uOg+f`f8bz|@rd9YdDz+`CPLccNRw=1bSgoXRd5KK2JhRk_$QRqY~iy6Ppxe)S^{hg9S%*_f-Z9LLg&7{2+k(Us$am6)WUz+MjTe0{MK z8n40xZX#jqE)u2OPOK7df5HrdpInKkenMKv096coLmgpcKcamuU)+Z>kqjC2IK)8Y zueAgb3uVPxiD-!tHWR%XaXE|l3C_T+5X(tp!ra!|&b*{U{)R=NZpv<;t3BzD*iK1! z!>ppQLnJ9mqX?|8v8^?!CCm)q{CpQNY2t@@=F3q`v5bj!q{^6zlYN21-~?E{FA)bh z4GHYYR1RZDsTM<3aoCM9Yn0hSmP}pfwcH~KyoqyI{+Lo2s#wjBG`N#a{7O@J+AJyW zkw1(?f=OfOfC!6NB=b2GC9*eBkUWZe&O-On&&GlNS*eVa(w>p>fOimsKt#OKQt{JF zp-K}UAj*5a0z3kWu_; zaengnaYLlWaCsCmY)`&P)V-)V36Yq}<>j%3`U#bxyPl?2K7(LaOk~3FJjR4+ZiVzW z<>Tz=8-4~9n9xs;Bql!3^Ilq(y^(Zoj#XFLpoR!y6 zCf$Uh$WbUrxe`C<#F3U%XedVFr0YnS^kEvSu;C8{`q8hd31kVkfh2ZVU0*+yL;vFQ z5Ef~xD<_3#_Iy8ztrNLXY#D`AY!wH|RdLm|{!};NSwb55l8}{j9v1sZS(;VBewH6| zQNBnbzXEgYj}+7u#Um+BI}UV9`;d+b^`N*sgwL@>%I{bl`!0H0(aG^`R$nLA^|R6= z>-b22wME)+`CvjOnp}Gu+k|Op(CPZ_8W&C& zV<8N_+=;bp`t_Tm)%VW^~S;AVnLT(uhx+hLwrNlB0 zg+dtvaW(&pcr#62)$f~yo7gs1-fb#B6&~%r`6`htaui8ohsD1D=sQlyBM(y2geQ|L zYirpt^9S29e)&KYBt9*R{R_3EUv*Qa&+rc#$)w2Rmi5(BY63r&Yc0H6u4U|VkTAbA zq<$cY+y`diM1JYW@^mXd#wDM{ph7;#^-=#ZJmMndtuq4!9@vm$5!F{}oh!OYsUq%7 z^go@JM$tayS7E{3c2X$U*@dF-gr6ts2%h}k=}7p@j}`XvsY^OIF1BlBI4k{<*M0?0 zK~TZPE@@#h{9s>1D)^IaKQd$F(cWl4TPMuocyCG)HW6XVao?0(*kFVm$A1f4iUve` zQ|iVH6GSKb#B*d<&DzRXaSXUFdnlDOfiFQ|_;s|lF;s|r1j$mYZ7}jkW zE%E-39{jDcDPtNqMC{-599VJFsEBWH$%1$c-t6(?a@_iQL5mahhl!nFi2M`u5yI>r z^Oa9=&mfIKr@*uLaKQf;J46;a70(H6zAX^id~@RuE(3$?hl1x+P(m|yF1|-Vi+{0m zVF;az=U7{OvVb=KVr^jvwZ(HPFd>MY$BrTwY4u2VviO~O=GkofiLWc`rCDxYiG9wb zSu~E3fuLWUfAn?zH%DOUzeW9?P?V{>_t(E4K+d7%+g@CNBQ7{9l*_)ZP)L`?M=0Wy zMM;~MuF~@0M}SJY5#NrK@{pg=E7a#cI=aUaQeNha77H!dEawBa($Nj86J;#t^iL2s|9)&bbutMF5Gr1tEplRzNm*Cia>?zYSum z%IoodXg!@kk^(0c)bs;re_x(MDSPgAwpxa+u@*e{eb1v3s_EliLqwaoAoGFfAU#&JIQCc?M1Vg z(_HFFy0!RGPGj+-WLtcZS%gKPdBi99@!3q~NFBhH^ElWH(FuS#86r&nvn(*p1Ybo8 zmNU_TYP?Sm<3%-suy&n^;RcrepJkyL`e%9ARQ*{d`i4#e&dvU_4h4jD*FDDZhInWG zPn!8>Ezk)n|3XKa*fAA<+FwS|`HQ!^=nu=WYeb;Oe~Ji{;h!J^&$6q_e`}AaE@3I9ZI*O z%1Q_Gkj1(g*=g)UsK^ruOpXVB=2aR-5!qSUs;APKTjOhMiN1zqIWS$e2{w9eLPJ%!o&h9k9vO3K{S)Go7ad!xo(?_-( zXbejsj>E?#=#vd`5eBVoYNXn;pa{mM4>5#Ac``c_J0~ZrU~1k71F|d)yvArh#z`VB z9904sUlnd03qZl14N^g;rj*ZQXO(0@fob$Pp#aKz$pcjZO2{*a+{RKjnA;LTb6O%`PD=!gTOvwRHT!k=-?totv0>umAG(cGY$I-`I zY0px?dUJ68DcD2-ia~3xKnTw%Kvw-kc`6H$wY(u4nB4=)NFqyizUCSj$AAb*NoEdR z2Z_eB+n_WH0ZZhe7?VU2Qqa0T_c;K)R%u`48@+5O&B$8RV z8Czg21lh5Z6S-+8Cz9xq7^D#)Q`&!28ElE{9Uq=41~R!ICo6-7Z+SLbBz)g(mk;U1 z@2rPld)c7GD5E}MeMHXAv&ypvcv~FEom~%m#QfMSB<%GT3U9WhfbCr$n3+w3``r z<5?zh&OlL#5RfW`%_;`k6{kueABf+|XY(9#2eLXx0D6%wN(8!XDnk&Q5a$W;f~rgR zmG)|?Yye2%CKXG->FwjF?gTt~|1#%cVrwMp3MoAsd~(84bCq0Ebc7{CI?YNFc?beZ z*volQ^YnlYt_|D+DL83e&A~(4eVmybJ8=q!OvEWJWAb$5%8%(z1PW#0;AjI@TXPSi znT;PtdpZWiD;UFQ8PfBgeim=OG(5TY;wRx+#E@u3Vi3*lu9~E0%{58zWRqFDhb5z? z1`iu{48CrMNsHx`aWN3@P)@9>Phdy0Q%#cjSU^AuKX@o%u zSd2mmAmLEFXju=EtCn~a4mSachMa(<@geI$PSqsJAfN<35jNp0djv~SrrbyA`AL;Z zPfkQdSsfu6&1yACNqN4Il(H1-WRmeSXx8L13Yk?e!I*-VJDSv^^l0c2IUt)a6h29p ziR7s0YrpZFrdJA)0qjiu_<3S)v4L^Y3%_7i7E+o5!I`&$<>qMem`Ml^ ztzu(Mfg57Zmw?mM1!_;SUN)o67f5jGWIfGQ0((!O97c6VLnUQ2i?&CgaJnKuG+}`X z8ywHe2AKj;zlW9<^U2G3g0a=bjN~i zn)56R4nsLPR--;97dN%830gvRrb$T*3CRdSh-suIE73MR%Wj)s0U=3jldz_gV8?)w zU`Ht<F`tN0OB7MwGA0k+@kRVeEk4$YbIT*a zE>#jIj7%y=U<~hNvLq}$>_C%d9__LWeSWhZ%#Xi;mRl#cem7TR@coLaI()66xpF~t zWAl$Ne}Nsj+2?hb0DL+C@wb?W?Al{dHlCMe)}yYez79rXGy@xPw06;a0V@#2R9_Qp z-MA|DpxMPCL?S;^c83_exiz5&fibtaGL_BE9hG5I+gypz2Anl%REC@2n|Tn-Lvz(N z;+2$U;V}bE%}eOIz{%ZN4KbFBS4v=8tl*|r{`E3$5YC!2l6@&^Cs7B1YHDjIhe9lG zHhb?7dB~Q@cup3$O>aBW7Edi{7G_|oq};8SSSUQii+stx@rPMx-t3eUu$k#5a6%?2 z8!?I>?8Y16$rSbAAfg4yEQ~h9!cmlorX&=DVqk)V#=r!U#K4@cp})y?srxA`9*sB5 z;-#TfxV`8;n(*LNJbus%78oQiv7d9F@^8B`q)0uasR=(lk^3~!5&r5QZ;wzVvAwA24Q3;$QhzJq0%kFYaR4#>< zIVEF4kozd61*vEJqjM>=%@slzq`r#mwkhihgEPF#2FJn%Gp!_y-#i^pEBn$8dBONh zB?17r1Ch-imyhuk(?p6f$w1NBh5Q_VIR{CWP3)COO~*~dMdOJiXq?IxxRP>sB!e@l zIDr2hz;sKSBXmI0 zoFaU(Dww{UN0E`KxhF7`OpjVjR~g%|athL;=1Yc3PO8xqL!`<8z-vV z8tH2ZSR}C~U};G;e2^foAt;he36Nvo*$96@hu0ZEYG9P9VI%`51>$sS)?Vrvfs@vk;2{HJ zf|*nfX*g9f@i4)^a!O8X0)?7TO|O_H+a)PJv8RJ#49Xg0eaE1>C&HS^9BlS%DH0wmBX&Na2Rv2X&u zkeq__ufj3$!HQAI*%l*!7#fo4J*x`9V~Y>Z$I@9n2(#^?bYdq?SD300ni`PIVwr$YZHWv) zGTCIDDcNEgnxf~4M|`6kAASR2Tx~-`%{bB0(Gi@;2ZG9?D{xpRe^OgRN(>#;5vM69 zKEX1sVsb;%lxE=J`(0TjQtxBtJOejuww-3$4qho!vYN)rp!nQQv$Z7O6HT|wKkb9T z?4lrj!YBO>YBS~2ubO6Mzz26AS|sO_<`2#BaH;G;G~a&?m7C9;JrNU{n@F6(I-{z5 zGJA_N-9vD+aSad!v%5Hz*0}j;`LhAz*{({}akVwweBG{_0j~k}HG^dVo|5G=U0L%8 z%upL^FixiPY-ZHfS2kpqqo?7+W}nSy9vX%rrn^DpIk$5Jt%U^uRu?+&H>(H>>>)F# zjFQ>?3quBLo2hnYY69`j6#Sdxig79x7w=g=63}|YO_S76j-!LviJ~Bx@B|@U&C?}A zM-3?%QCL<|9K*su-zZb?RwboNhZhzXq1*VcLL7$tb9M3c3p1ml{veKSnib0fOHnb>( z7)^RJgO{Yt^yRuBg^y<;_KIhniBPf%eow@=Vp45&1s&B>1N{!4!DgB00i+;M$2w>n z3`EPDop(HrTf%ra${|sSFPz2+in^Uy2bwG35xq3=dX61`QiF zxTG*qE`dW)rr?uNrN@^Pm*L&dxRKyNcBO+#3X4ld#Mw#ciu6{RqUqVUj$fgJq-uu+jmgMW7nYnOj;ilEV=&R9p%>;P7D>J%>eScv5vZni|As z*od)-VW7b9!G-vy!5BW-aRsc-ILVyd9F{uWkyV_8u!Dzlp^*GTAbSbo81Rz-5ICQ+ zlF5349HdNyW#BRi@0n%2fu-;Xcf4mFKFc~fl8OQpe?2n*q$eFYB0$uK6fo#Te9kbh zC+sASFbw(5ki&HqMy66%6SX4SU zeG`g9!jCEOR8?aG4#KKpUu>m1*ir7$CxBQU24Z`M@3$z;KTMOzL!X|Bll;poaT;?@ z-u@JTz9o_b1RnrNgQEFkE%R@Aq;t@RIg$|OOiVWxe=;M^2z2M4$4G+0?>lfm1v`QtC_oFw z?t+8#qH@u}d1(kyL^>2N1?2~;B|tf6%_W}2C&(p$G>wqM;@&U-Ki(}18Xe4*fG0PbU`stA}< zTL?%Mjev1UB3NOANmhnRLk18IIsppGvzPZ+>EOjbb|1f1!;)l_iEenvepZriNoJFx zBRE))ej*Fbil-%D&%^lfEC@R|KF$QHlgNORd*eqCGa{PAYXl@5VFU=q$I?+8ZCpzP zO7uM9cdQVL!ejBGaVZLAOQd4tVkJUu7$&m1iO1<~5+K>lAp9e4Ae19mg>Xd1Pg280 z9i*bvPpFVpynz8rC#>6&h;wIh!G>;zP(_pVFteuU&46W5Z7#PW8geta(ROo{=#m(LXg`%vy&MTelxDLM?ErRWeWQgm1%OVQ!5SkVd6fu_WIm96No zEGd?f17XA@7Yb?+0z+mI0z&Q(JWq0mEKpntQ)YsvfucjHSkd9B;m0KOngA3lIsqVJ zp{zqGorVZnb}k~09G2{Or1nJPk0D`!q@u%W$W?R*oYZSrOG&^;28lJBtRz!ds1lwd zRCH1hk`c23>2i^x6J-k(og{#`PL!tI$Ud|jg91e-$`X7KnPrHy8OC?RFYcxvaYcuU zN4c4z!yu8O!%|5_hX7fMP6P@Rom4tdbYd7&bfRRS=tSvI(MbZBqLToGicSi|6rB_V z`cx{-6rBVlR&*j@LeYs~k)o3TMT!oCMT!okVnruNaYctGVnv6gxuO%_az!VRjuf2) zEL3z7pl~CRw2jl+f*rxs8#V{*E>v{Fa# zc>=vB3lQi%X=tqX#PH;RncfpVO6WJGbRa`AWA?MeG$kJGsz`EHliBgw^Dc|fvt%o2 zjVYR==CrJ6KQbYNA7yJCTj>;YfzqR zSyVdIvgkgcWl@r(d^RK|?z7jbvyz-8@yC&t6&A%OO2)+bBP}a>%pgq5ib14h#VKf6 z$plwlQjieISQpp}uAD=&bfi+nwM3vq&zY7L)tb<qKBkHF=a3X zNp&;OvJx2>wU6r{Eh~CTT2_=u)x(yOeGVwZ4rFY|aicW@8^=8k(UVx+2#TkC71eSh zuQZa^r#GX0OwSfx(g4hNWmP%z+=pIW4oErX87S#5=YYU1%@S$vF9!v#U6vq6Sm2{) z?#c)lG|Pbq#%G7D2OqLxhkn*f3gRIIx~rwH%!fA!(3?mJ=HSC`aCi^yD1?fBDCP-) z*?7S%m10{kgs`*LvvMV1QQjteTBWgS3acu7500vh>Ss4$cIc`sdIq1(WFayXGa26F zT+Rtmf^|N80!2J}Kx1G5XjHToW)TR&5lYpuPr$IU{FZXp!DrfpkShdFM)&k4MF0<` zCrlv@shoV5K{`cP% z>>WR>%fTc7n>jYetxTfNoj_XWZ^Ke~?>ndC~;97y} z9$XLMdK%ZuxZc9`F|HlBe#TXB0ouZ~53X*w`ruM=`M3t*8iDHsToZ8B;W{1HJY4f} zU5jfuuDfvEk83@yXK`)C75;k<_d9XzaUtr)75+1EKOEOdxax47jcY!xYjG{ZwF=h* zxSqxJ2Ch$V?ZEXTu2#Us4!FAD>W1quTq-UX*8p5)xK73u{`(K!{0DFTUA#G8D8@(R zC*pXrs`?W8`pC%Irh0^M{Vi`qF0@b(HULgR#VjwVn=Tj(c$ck z)#Gcb@MH?UASLw3c~V>?2t5O6aZ#Z#0KKTeD+L5E4ep2W(?x_C!oaFVUKRc}2$xg3 zxN16Lxr)l`8ic=5nrB9T_RSl~;=97qc|u`jWnp9O6g)dbD57)u1|d)j(fz9g1fvCy z?qT=rsc;{=A5dN2&^Q2Z0ifKY3^Ek4yd1Dq7yvnEaP@e0-1ytnKD96uFCHNG{&`3j z@z+#`^ON#QD}@6R(6UJ^kW@G@2ZoG-OHgX444<$NN+>lLXYZ8M*F)|TYA8+BVpxcS zYY>FF1R2>_84OFfh0?r6Y6M}Ke)EMG8i*PIV%5H`l8J6s(J*%Pbo*#AFCW;^3UXtO!c@xKr|g9 z6$POc?q~sM?I}7MhfQEj=nij82#9{I!AEE&3qn7EN7@b(n4B(56@n03p_edjTxAW8 zA+4H;clbo4ri`bTneZt!no?%@q+Lc5WVtmn@7@csOs|^oFT$uuW~8AP9TsmyajG^1yt^+tq^5C!aMb9GO2M7=xHU zft|A`2ul70jG;j=^C!?5i-MIuA*ja29i3C?u-^v3&xiDn7~%~5Vjha}C$J%xtyD|`Zp>tN z_y&V8i|(e>A}aD!x+4)4s-27=IoeSsZqg$-H%kq(V`uL^^!u)*p z211P>EX;2R3S5=nfLItDpeJ0N53w5WuL{C7?2g)B#O|Q@2-mSY>dEzV7qojL-Pd4( zgr#&hm2{+K{0>={(_K9cWF_4-)}rOx_+3+tusWX&TUe8i2emVRXAk6052smpA%8|i z0}2VkPn1Or6;3+GMrqHDG|s_kB$@W&KrXL zRX(w*e=T-J7vZ>(g++wtHT@}46=xEB5|J~D_GY$3G3&0)aOJ@7jQza8*k-kQX0T`3e4Oc&0c>)^6zuAfM41hm>{PBmd2$n5SZ(-4*MZ%^{n}kjHU9@PE z@CV&*`a_t2=MyGu5)_3ldNu*SN?1kK?`{vC49M*(Lhxff`UpaPj~=sy9zA+=6L!O2 zh=g>@{w$-v`S{Z#0`};YmF_V<`FsE+mM`nE1V7z`@k>y7yKX{3k8VhzC2EX@9;Dl_ z^vO}0vY-P(o8URb66%n!EKIk$htkVXH>;2CdZ0)TwAT&!kQ?d8@Mkt}4|m<#;m;9h zk=28o`2^%?-1T9_PY%<4W>b0z^$7WU&`RY~4}x^JAU!)uw_(q_Md|!*l)qPy?$M^l z5&1oqj1T&=3=Q_kr$4Kr{vAR6!~F89(X}>lnr{0E7;{iRhQ`;cAJ2~kTe3&LHupRU z`ri*-qkntu;J^PX{?gv;)~y4>a@rwz*as?lHd+`djKkj&VFd0t3u zM+EN`1q+voK2VRQ3x}h%BIKC@+E9-Cv(TGzq#z37-#|c`gyUGfiXa1tU11VhYD8`u z{2m;i<(LuW=qog!wkGtY0(DU9^~h5t^hLfZl=E4=bw}Q@Po4nZ2g@}TWq5mKsJ#lU z3`6}@D1mRGAy+q)tHu8sVKPcIBHe($<>+ez?wgRW61nSfUyiF1kaFbhhAUbB5r9;q zAJms_!g$ozh}NiX-ev_LR1>vO&F-o8T8tsilijcM2&jFkAuug3UkU3j1Pi12O@ zdY|1xDi6~*`c2Ph%yCWW8K4o2#7Jna#^Y}d^3K3LpYOO-Ip()<7xO{6s)U*N+rVa| zFp-z{AfBW2OwzoRV`S8NfAphRIFhZ%Ec7F}dep}l7qUmoTO}OrhL+1w1C{0T%`q{% z1g&2K{x=~f^?`a&gOW53KI=4N*=t1eN%PI?=c`QELo-9|aZICnYcLLaPWAT7deWD{ zC$gE!ZXp{Bjzm4X{@)D}?f;Jd-Pq2r1GaH2rJdakvPT6Z`)+~+N?}1tKN9<1#D5d8 zUG2}|sG(Lk1@lI;O4wP5*`z%f*Bq`GtwTL153L#H9Kr5rWjO^KkM#|AV7#N6g7u@F zMEgI9SK+Q3AMCSwwtx6ufG=whggXB4_TcdWuczXY|tL1{!c`m%~PAOC8EELps=(G|7?z8DwUoU zYJvJhW24!lQ4(eo?( zZa!%48_)vn=W51(>el+iujW)gd7M^WDiYn#|!qgl=E741Tr8KMA0 zLx@+64|sg@^3HIKC#I({Uk_&@jS<=Ws0?LeX^B?qFznc*)HVYnoq^R$bH9+s9R>P- zC`zepeaiy*h$I-A6&mBAIb1f~CY27Ua&F%A=qPVYp*XGKQVq#=#4TdpP8d)4U(eu# z;e_XWO^AXMRSwg9hm&+eG9kx&S_P_Y0-N6{xFfvS6*h&tA>8>h$v%yvw30fT$3K%+2-A42q5MkJh9m}(H@H+l)PYk2 zJ{y0|ng9Pst^TXDstk7CQs^6`a}2|-D}&Zr2-&g(5Dv!|+wo*HQpJE41KwX4i@#Ko za%EFdp8se(D?*-b!pZoL?{edg>N}KC$UU31Y#7p1W(b}P z#xIBR-i=@-%NTSdldZ@aP=tJ=P?qioGH8FKsSiU@8~su}LvWP^wUq%*)FT|rztS4@ zYyip(K^-H|=AfW2g_xI8)3@EDT0o| z?{MU!xu99%>p>$M$wpa-J8Hj}?JXKFA0y2q*-3`7(T-$&8;pA65&pB)3TM5H^|c6n zpt?q&JwBK8oJP@~^^E3|#yyy&;*s%HrT$XS2@hzNsh`ckitvPRi&`o~U6gku#!n@w zehwiVDG9KFW@IeO$NS6sNwak<=8o6IOLjxeg(y`BjGz^uee&PK6^`GuUNkmZ1wPvx zD@FoNx;?FF8SV+wx}oi1_+QN0=RKyrj$pg02zMjlwIS@J6{kM(x<=u?gpHEMKyyPg z!^`ttaNOdhIhqnV-$kt=X;sziE*kh!VH=(!ZA)Uny-zIk9I8WnC91!c0mbd zn`)r-CYr!$6tzz@fN0hT^o({=37Z4LB}&me4MZ;bjYmuLhL4j|5*xeWD{~Z<*kBuah5V@Qg z%23V8{uSW%vmnEfwQeHrNur_B6{sgyFPMQGNg0ys1SJegCB~u_vTjbq{b7(ANb>53 zy23WX8v6o97Tn&Ey#8O;RhsWp8Tv_5%pj)cP`guEpBiEFne;F8X&4*RuI-@zo&_!2 zwzexfRuS75+>WKejul$82#0Cr|7&wh82_)@wn%ph*Me)AeMH(Bock{Y=OH(joq}f#<7il1|)=B!tRIEAQ8QHl)J(~BN z^m4w-!jW*TygBK6R~9aAe<;U#bNwaOTEo%NEdM(-W_tp-hQ-It?Rr!j_kJX`B|cx= z{*h}@B??X+11iyozoh?CiX=dl@nw>WIESvmGn$b}0q-XMPUUGGD?n@Lp5}vkLwrBf z2~S~qd$RTr!^7OkISHTrnO!SwWvN74q5hZD;CD6V5QnIBZlU6O@r2eX zw8n4@Cm%`$)|JC)mo-;EUr%oLrTUW^dA#ye2gm+!{W&GzSjPLv=bhX8OC!De&nRPT z`QfdSXD`ivX;jUPm^dx1KoeVo5Zj6O(ApEdrPa#a83dLZ33nS)u{W+x!3H?}@FcwEJ@XJwykyX-RUg)6ODnB=gXZ5?z^D22rDTsMM6-`)StspAD8Dzn&NeH9hzt{ z$`G)y8i^U;*1%jFJ=wa* zszx@EVX*9R3)jDIkq@no|B8K_xFFfk{$q`gZGL5#ljf}PWNjsjAGdAtzp;JvKQ{N! zKl2}(JK3!XKgI%+{$q15iDuz{gUvmZCy1+)eS>%p@xM?f+qKq~w2pB7HRi>2kOamv zNr5;YSx$)~mNOnpamo~ZMv_Rkz%~;`PlS4B9J`U^$+6ZQYSdx08<%lHTLjmz$<{%m zAloaqLd224v8EI9;!sWs>!2QS>nQa+tdVr6YF1x7Lo`;Br_wRWydIL(NY2>xEN0L9 zp{PIR|DjwJ>IehDn?|9&;feVr-&=C+`Z6yyy~J?@;=IGS@M83Y?64&1kPVARt59Gz zm8S8Lr-9wa=Xb${8Ho@NjJm?C=P8h?rFq>Ss6Y;ZWkcwhh~)CljUt>p zMv}gOzNE)TZA}omv$m>$9fY4nXfLfD3&Ki_Fph#97R*R!xpX0A{#iT~k9nUU9F%IO z4E>{+Ic~$N$4ug-R{YD3xxb6q@6v5@SoUb{V&(e_?a|IK)Siqy4`(lop~;<#zUT|> zPWmU}-Ge+}7HI&Xzbl?a0kw0S;4?t;PV1Y_pS@1mYwQdAqResZKehSqM5s~zV)_Hm zBU$3Y(b38i{h@!o*xM3(mdQR!lqQMmZ3{l+FCnqq{}=ysp#3QbZNTiv%FaudF{T&n~qq?MC}{`+oZ+`y+d&{ST*=+uq&RJ2~%c zuh^^f=6cJ$4c-=Sr`Oq6{bT(~f3CmW--wZa;}>LlWr{PEnK_v&GHWthGCMPHp$d0k zydA|}VzF2$&J~x6Ys4+$PO-BjNySp7G*?;<4A>&=lse0*d~C4l8|Cf6s+TF#l)1`s zWux+;lBaf7RkciQR2Q&0*rM)KJ8P0wtW|1rwdL9dZHu;3>#VE#v3jLGS6{Ag)VJ&3 z=y^s*qq`v)`&y@3v+Nh`Pwn~6wa!mYXSdip!+Xc?pP8O{JA-Xb?;{GAiHpV4rE{eb z@>OzyA}Z6BGn7k|`_TUW>QMDj^?P-kHcRu2Vxz*SHkKPZ%pc4S);`wJz^_m29!{}y zqH~qA#(Cap?Y47Ox5jO7XSrv(54qpEKe&Cp%Q1sbd%I!wj`4^47x>%!clj~%Uh~D5`eCc@k0XbjUN2yXyS6)|awNABwAy43h>f7{9`g6u8r`$Q)dDwZ| z`PJzHOn=_pivI2Gjq@gXk9jY7-*^Z4gZ)YV4F3}UD*t=GYo>o@N@iYWV`g*awG3_S zBhXH@w7=X|9|#QlhrW;TqS3=V*Ia?wSY*9o9b=c<)9ur3VLl&Eq4E(K(euch9-=dcq{meP$R=c;W_^$uFztvxs z`Go3Q#p|mS3*@%)9`a-IR=KOvT^Xv3S5C#;ex&TH{-mk;F#T#{qxrKr!IJHHw%|;3 zYMl$516;?ga6fVP^Iz5!MUfBZAOLJWjku+#9?1D(Ozikq=V}m6MbW%ERiB z+7SIJ{bv19?7dTrbB&vg$BlMoPje>bsSW7TSgX#OYjvv68DTT$37<+w$kp+J=21XxdZGJ8m1V zzjvN@6mY9`re9`BMtDzvtws>GOS{W$l)ouE6iw}~o~CY7cWM{wpXy_bGmI;Y@fH!M z{gJOgS_ev5ZkM~gycfJKnG4v9dU=ppaPEirwrEOEVdXc=7b?f9*I`F=(MD>wYQJjT z^+)vgb=OeM6U=GY5ARstTEE$nI|cZEIk5i{Z$0YU25ho2Lo!cfgbsQ1F0gQ(bfu!G zZ>YOzQ?QRe)_&9eqKnwYwb;c=^|ku7=8tBcwbg28544Bco9%7(2lfq4fm`H$;a=%j>k&`UZWTd6oH;`L5a4>TQ)+ znYcxa9Ma ztIUVZfp#rs1Y@nsBX%gfD0Y`Bq#4qE(pS3-Ih&uy-p}r?ILfj5v1Y9~))kiI5&IW5NZ-gUmF|WO z>=y0zj_k~GoBYpw9Lyq|fakA(@BAipguKyT9xIs+jDzT-K^J1096ob#LqoL8Oq+9# zSSL;wFBI<(?-!pC%cb+Bt#qPuI$8Hh!LZ$z) zUqjUMy*y&S!X;Q^N&Y~-M475yseY?=)%s~~XeWRRoM=2^2xd=E>))+k?K7MM-JWhM zZ+CB+{}#>njyy&)4i*jR8R-!DWVNT}VJ}o08;n`z=VqQ=XP*qNfp@Cex=fRv*5(*n zjFIN&nV)H0I^?tR9mSraB@PnDiBrWsYK?k|c8B(W{;OVRK4iA^OMIbQKBGC$itQvF z-1al=2>p6zuguYziy<%ZXMMDT&3@(xa|-s{-|)?Yr>wnvp^`pCJ-y%YSkJLAv!LI+IEI@vPDIJ0~@D1g$v zApf0XboFr*3`-9Y%hY14uOlqUXYVr?LNY3sr^$2VFO^~H&FXhpyD8>ubB=wdz1=>} zdB(XDGR4PU0kyFzA3A~{94h`5wXT$g$Un&KwVsd@x0<(ElQOlLU%&E9X0>6Xfh8AsZd* zp2*~*`R-!(cK06lMfU^uGxr;J4{txOw5+s}EgVU%A&dg|&Q z>>uHe^{f0w|1|#^$e{Q75BRV7AAoB8j_hvY~DrDLTNrBkJIr1{cf zX&t!8i_*K&k5W5%FZn>(ko(C)NH5 z<4t3Uf2)6&zt&&xzX1yLjsGL4YmbbQ@gOsghMsU|W?g1|=DEzfnJ>W?TL_hTcw-*@ z)I?W2S{wsPa+-L7c(r&lG=}HIm&NzQuh7r-(m~RZ=w~Tt=qaG0XG#}?l0FNG`c3Fl zo#aD7+e~?YJXvl6?>h$)&t~}@@Q#1Td!m266iexc{#8KAJ_}Or4azFz5oMF|hVqM& zukNYtqxMoYNZco>RqCngYV|So8TB>wBek{GS^JCDTRUDW*J`yhpm{9TZqx49o`eMc zh4v3EPv28NK<}&f(}(IO=%;{xUJE{chyH;6HstYN^n9a(p&0{>k;d^xtuY^ zjPJoII+(Hw)b{Qohs~-H=P0Q2+*iYp=;)QCElstGu}sDAAhocAGFN& znOP)x0*6}&i}BM6y7ejImEs%XPvVKvG~mD$k|xiV4_EG2K89p4T^$X{|4yxg-VHL< z4f;L$n|iS^#+YKvz`SoY_A*7&HAkBD*u9sTYt66C{?<0gF#AHHthUdzZ^hg`2#M<_ z`*3G4_VT&TmCnu1Q_gPg1<;J2ao=+1c~5yic&+^W%t4t2*lp-kzZOCp;O|Z13h{CA zY3!&^#5}39q)KH{qqG1z-$rSIypZjb{UA?NDsz-8lr_p0Wv6n4YN-R&YIU8Or*+i2 zYnoP~jRKxc)6Uhd)Rt;%wT;>@T3h{4-O!65^EW}}zZSFnl76jmpgGX2geLnNc*HR4 zL~E*bHF(8#>vL;|)y2Njz6oRb-ag3DfhASWna(n21LF!U-F;l$ErHfw2Px@#cdh%B z`yu4j!#vX~_f7}?+{m=vkD>SG`7QlD{cgVPm->J8C;IFBPq3F;XAa1?nPZ{zUy)e^ z?d37jD4}e$5I(_AckJL3#R{=jJXc%@OUV7=W^pTK|ypC?1(4rE#M6w*Zz%hzN2)U9zirSf+Gq!Asx|`Dr32{6QF5d9Tiy2{NA1AQ`xUZKJIuupZ=`pecOonw*MkS$>AegN z^ttydbnZ63=3BsmA^!3HG|b2{Q1~^#hbMg@Q;_MH=?>c7KQjz+%r)2*t1=H|KFfTY z5$akX&Jt3S*cNuN6T~L)o{PoL#BarXsV%G`C&2!*1lZ78-c#-=_W?#!$@j<`<%y7VAD53(k5NacXF>8`u0F0ltL~wV)fzyPgzmA8`m!GU4L`%hYq1;d!G3s5{1AFtOR1M+N+qxh%>tiSTg&^( zvV4p@LLLu3Hd|f-9d51sGPvx4;9;e(a`aV;)#KIk)xW7FkUrKq9Xw%k3nrI-52>fn z9_x(q7D4;$z}H}|m) zu#SZF@Dgi1EE?;a_OK3CyNf{gesYh6{#M~%>A&E=>Q4pb!+>_QVEXJZ=?+*l+sO(v zwnt=LS*fl7cbIFuZgd7`n`N#ye>XMj7VCE4?0cY1KihqsF`!6`p$)X~j`T)(OTCqT z@64^4mor~by|DQX!r#`S4@*d?^e{BS-Q;KF&*eVKVC5NQsJaN8xfC?=1FeVY*`uA^ z-EEMQHYTic+sPi+p@7M`oq>5|kDDVdfCX}+SR$9f()cSVPZwB<)~YY6duyen^L8s> z>r@CX_^8qrxORp*U%g7bNBs+IV2ich`qBD{dWAk4ysj&>tRdj&bo@(iiKiU}=0^-`B9sMUYh9 zF)sk!Y2h3TnmgB74sG`%Xt1p^T~PbH%pJtNhx0mDh<5_}-(mc*jnp18=M3p|X^yl; zUI)C{UFo3gt+=pL3;=(er(6VG|402Qa~&x9I%g|%+3nC^hWIb~-%vkKE?~MtTk#m+ z#j(CnSHN`q-oTSRlv9*Xl|Je;wVierEG!>t?eqinZTd>%8)K!t$rEN5usvI<^wx^> z{#H-uJB#gU49gdItNmw4ub5xJ_Wyp6G=(KR|1x!gHo-c?Sp=zNtMhl~7pISVoBIZA zWXQj&fZ6Weglts{>c36;OzHs()>`>mr48uLEcI@+40gbt`dj)c<5Q!nX_()c`&x%X zw=PAEpE?#KjBRdjZJYM!X`dmS%i_5sw<(dm18yX;2T&9 zi&mj=fwA4_jeY!#+1t7RGC*%|#cg(PXO{DX(-!j81@05D#FTg!fTJHm0Dg&$u*es{a;U;W&bW?R#yZ zzEXcyztkLRso+ABA=w=X$?g=$8%v$foeu6m_g=_#-M!De-C?&~1fBsaA9Sk%W`AxA zDgS!ded?su@Oz9^>LAB$Reo0XP;UZtdro~J*Weu_BKp%M8`o`*LoAx=_ zckkIh+MOKB83D`8Oz8c~An$C#ymxUAb%%q`-w18|Dfeyn7k5u@wRayZ&YyZ6VS%fJ zEq(*_xkF3lH>!lJb`ADtXGw(Jd5AO_Huy)R-m(R4ZyxB<$FhihIRdh4wK5eF%qHa) zNUZ(giTMy3&|bQ!kAfFsj=lnZmja^;?7jtNIr{p5btP;zmUFc8SLbTyBS&{90vESK z>;1v~-R%f$-{iH0Eb)^+J98c6$RDXs-C7E7;b%{=M%1zY76L0jg-vD@teMZq-^+U` zM*vf10S{kS-cdeKB-Kz|aKlUCExHdoqZcfiQ^DIeXivdv*9CjOr#?Vm1Y7x!`tN!R z<5=L(3C0TJF5_Nk1iiuW&o?iH=C$4YyZHq)dfzItCRppBb#<{1gkCVso&n4L)AkGY zD_Hqb(76@PU6|)QmwX;$fNK?yr?$awWI{qH@)mekLzesrKBGFwj^y#^mnq3q!!w3K zi7lDz*i}@;`Oss25`Py@ma3!+q&K9S9qa{+u8rCiGGd`RO1)Nn z1d_`X?KQ0!)a)lv;6BC;#sjcIeQz8Azu-M)1$;hBt@~h?eb4&N+6{eo?NN4(eX4zy zeUZJuzQ$f*-v!O_OZx}Av$G%UMn^iPQv{o7qcaDb<925~thcX1V&38W42$y~ZWp(Q zdjxca;~+iG06v}XUgIuvSGw!qA^aBHyS>-N8x3iw$velp(7V=K2^soP?|JOC550eQ zKf`v>#qaKmelfgfV}W%|&`NLdAA{{8AHKtV;63aE{^&zu8kcFxEQI8EXJ#uTM_6sZ zi&_d>@Y7K|NR-7A$k`Lc2Jsizpvt6bsX=-{`U2L>Lu65YOCA92bv%4m7XvG9hX1N3 zbk=#0^=?*QR{st=U~8>|cC*$B8tWm@S^MiF^{L>cD}fC|jWSTr51<)#H4g+wyUV;E z_P*n={x4YXTmOLGt=Rox;eGFW%@ZmV(Xof)vN?e6aF9^*dhTHa7txEs7H zynEqM>IzHW6#q>4X77T0{IdTWtRHPM$7F5*FKj6+hwjix>@5xh|DPpZD&7Q%@FmE^ zoun@Cijqv|OGWS+pD2|}6R{JgOXo?KU>Dp7O>!0N9S=*-ORvC^y$^hd{je*>$*0Jt z$>++KLC(ENz7zKT4NTu?rSwpGDVdF$^nq{W zIJF$M%4O=4@U(7+hX0$|QtJa^9_qsAssv~P`HjaFs{b3fR{`gYFgCW1#I! zv*+74z#{k{cIM0WXVBPNJDoshMmQDD6z3M_QD?LB4*U@983q?Y_c;~VyAVF!hrk(r zaSOao@DE()uYx6QFIfKNOnv5@%vG5;px^O5+CuD%RZ^hM)`+Ky=R=oW3LWo7U|<1c zm!qT#_@|b_g8rQR9^1D)A-$Xg*`rQrg8XusawRM&cPaNmmfWaphL!a#zaauK~*crgvzd=uVADT)_y`6qA zeBCB|HC6CMkkw_e{<8i(yo;TUZt!*&8l}MJD%hE>GVTEt4(I+*Q-jr`lG&7RGaocx zf-mP=Xe;|zhgu4_XoGb=e3SP=dfNu9?(WLi?;G5gvB$f68g!mX-Zc1fZvqGTz-!1{ zm{|>J@y*N*=yxs2{Q$eteweAjVil~5OT=54mh(8UdMhlhe+N(fQT#*PQ`#HY-AB@( z@l27Lq-&*{r8Ur#p8`I=0ePvN+!Z#)B6$q-o;vwV`F#0uSQ&4TSHZixQGNk3(06ic zW@oe@jh>*)gca{PWf^AoIps^(Qua{~fW4|jJpmT0N$OPW|BKbj!GCXnEb%tv=&#kE zfYBs9QftyVNji?7tyAoV&6?~do zAc1@ddtOUpPot~R(>T&FFyF@*ql_lwblAX&f44ICh9&PzSe9Ni^R0cY?%*U%)>+Vg z9)L&hBP-u-XZN!E0*8m#}`vEqwgB;cI!7J?$WaTAgfI34v zQ+pL!)(-6Y?y&TYhW2wRVo?@jMjq8)gXg&l_RQJF{qTH!XZ!{lN;~{mb3EcxPKU>% zEo7E$);jxHSZ6vxH`orDNq{Bh0{2>Xx%-Iwj{66!Fe71qSpW&`L2olGe?NPB!PZ>@ zThkPO7P!TQuy^uTX&ezU~?j-jN#N_08d%~xxLC@TZxjM_g+P~S~A6&FQ zY*Qa(zRCPf<6qK}*?U`w`-*+URpKM!CRkiLNC$wo43?h5UiuOisY}$`Vbgs^eI0g` zR%~AkL3GJzU zk_$4oWFE}CPyJujQs|8JbHMelh1R|alG35lY;eLA@Jnoyy2`p-0(-+Oc_pN#59D=9 zg?gsCKx>cKm%-@gM&o(oRcHt;;f>u7HufXokv$spZ>o8Yc?o#VbLK1NC*V1)txn)M z3T*A8*-o8nEr5q`IkPf;jNQ5yc>iF#!fvt`+RMRhwu00AVt2$om7NmU87IO& z2S7Q=*Yg|vibuO+-Kp+O#8ExqZiYQzZ|@*@cPzwvRCzVtRo+^x+>72e?{|1Y+e0TR zgQcJrxPAlH@lN1(3+&=Tcu6M1S9c|F`f+%3*qW{ft;N*rCUy|_77r1Rg14j}d^#iH zm#c*5wFy4!i^a>qrEUfN{fD?4d|B^Hzep-(>V5fJSowE{3~-BbJEVa1;7Fao|0ly@ zeioyYS3p`?s;+X78aJ%Es1wkmxv=f6MfB0fpx7-#{WQ*~b-q>q62WdizlDtwZcqIb)ful{9t0KSEsryC`pR6^R)4zZn_bKdOldKuQ>g%n$touQ)yV!?9-WXz^1pnSVL?FFs|HJ+R_K5u;1K#fp zgaw^qJr=@-KHR$m^jL+@qB?UL?8G;+NI1kdz1I?7Ucnjgpf{f~xnX};Jsn7ME2Jku ze;=3s4z5PAOFFcfsp{#F?-yW%_an;ZV~wO$MMwM-ypDH4f7y!N_?<2w!s{=_!Pt=& zqaw!{6#pejoGj zo81PUg%ZeHr$Bo+0}(@uo!cOBeGQrGAm|Kag&O9b;x2)&{!LiiDUxs>ubVdj)c!Q@ zd~X$K{kQO=j0T;*%)b$Kfkz-G>+la&Wllvz-47XIM@!)j%v~v?+wUTdE)R0o{_v|z zhAey+_}6CXbLkuD2gD9`MfBhR$ij_~gBK!Z=yf|-Blgl zy_eMwAmz5udTKW8DAR%IOW^nb0|J}pvV)ihPFm-tIk2cH9lc3Yr zgD+kQKiGYsKijYlznWdFgDeNJQI*zY*j=vxJ$=}E*ZSCMWA6!%pJ^YD$g*=FCoH#b zvmde_Lp;z{`|tJ__P5ade}@lnH)l_$htu1!ok7khXFRl$+0I4IW6o{otm$;f__TgzfoEf zB-5KAnckh+w{`!pms{RHr@hfmL z3A6`n!z59RLgd|IbB(#x{0P$i_n4oKm>m!HjbXsIORQDa=6s1=-Vs`Y2mXE*ylS_D*FEJv=f3J5 zf+&XR;BlXVyY=!1fV-6=ZlTsc1Cfk+TPkhnBx+}P&UF#e6DsGtivYw+H}Y{mm_j< z31s}A_0Gls$n@il39#;804#eS((MW65ZG46zz*~wc1CB|G!BM^-}686ha+yM6_d60 z24(6GTh3hRa>ROX0q<=I`B7$6>1=Sqjqu@o2PxbI6;07wVa22@Q<=6*X5Ea!DmO~kRZG_MCX2?7* zLkjNjrkZ>zJO#L+X1zh4*$R{kh@Rzrb2(X0#>SeSSf^lt(fh46QV&r z7QYm~g)gGNTq+ydCE6>{I^Wm7(CI=BJEhnM!$#$NXx(xis4UOguS={IC2ppJKDmdK1%Ol9AWJ4 z><#<-dc-Tsh@hPXJETz8ioHcq1l!C8oc*FI&wiJAATXRLZ?cSD?K-M_;Ee;#&5SHIrB$ZwO;Gt)BnQykpv zRxIx6QE@vYgd%B^bRhWHm5>UCz@l}#(iU92H#q57c;LE1PF(AskP+s$Vm`9NfW_s; zRP6o*;QL=0W6T-QAg%+4dCV+_4}6ZZz*&m8kPWccZAYAQp5GDsaW!;c^P2Gx@z0g+e11;8<9(roqdz0D4tDq|jgG?y3aa@icfZI>LLgTJMf% zb+UiYMO@X@=1S;4&!DBR&BI{{I>)*Z()fCC#2>6*t;6ho@c7S%9rkD7Uw3CMV!FRX zq;j!460ubi;oH6(-iBvjU2fxz@m9gAJQTX&Qi@?)-%6N^{*W(lDxytqz`FL4T-eqw zLBH05wvG>`F18Asw8T(jIJ3ZWf z?oH6v^8J1NuV`I&@O?2Ck%OnHv$O{xr4G`o_3J^Aw&~N@8g2v^%7fmeLgr~S7nsY< zjhL$f%u*}+a75Xh1_`E}bCl!2U$_Bp4tx)-sV#U(ncIYD@E5U56ht7PExeEP1^%9i zc(g|(AA0zi@(r+XK7yF858#tLQ0b}ou((wyXJQ9ZJOz0Jen<3ZPt|9U0%xl4K&Ja0 zGF?w-2q(dMaV8>y-eF#V1EJ3r87JYrhBIL)d&l_QXaW1Lk7%q>uuYzAUTj_uJp2gp z7VTjrI|R5`4W0Kq$jNs@I_?1r18PeA(p0QmU3)5#s|mQw^WJg{95 zQ$d~=*Y6KGYBnUPDFo$dU8$Zpcc+=Dw|*1kdmr>fV|I&-8iP<*?FpMU0RPd+a)R%3jvH7(baVB>G>i ztL(QBAzA~jy~XJd8mA$`>JD$Df3bf-W)tGVS_==M`3l(AZUt?WVVS%Q_VUiC^ur*!>`S%|9`g%Z@IvEeVY$KuR6oR zQ3i>DVy-r3KBPGlThl8JLII=&71o_bL^ZC)p860}w3k%KqOY!ih4CfqsRD4~VtJB0 z74a1FV8yvveiXF(UD(P0kh?2~u=$+;@4+3=Lw8q?Qb(#wU=^ta|N9>CSKTnTrQo{H z>+6gcz@-i|A3@yJd+-;vwFX&dSSzdz(3b|n`&keF(D@kWE3g9;y31jmd&TdL_g$ue z4hj8QvsmeRcz&J}zY`A!FF8@JkbeWW-wMzA+xkGG+WgMKn^@lK-cV5KO1z737yKdL z!EeCJ&Jb6M#juvT@?T;5xJCI)S*tyd_^?vMxHZ8N*B1QpGsFT|;E!RM-hwG37Yql$}7O7A7GQ-1Kxm)S_-Sx$?E&+7fkOy34XLDc+l5F zGkQ(iu6+f4+XBxV4*TdtXhmnj3h)7Rp`YRL8waaDSpwfQK4LcKp@=G}LUj5~=AH0h zZbXy-SzG=v+hH$x)tFY(#|07shbd#BVo$GCNx?dOntyxUXO7Tiy*IKzJto>JD)>?pHR3KWvt#LK1dK=(d++pOyt8}>O!L~OMn%@G* z1^1gT18;ssB>KnpJa}q9b@%srAX4ObXj7{qy=ow^FV12gKcXJJSykIu5~{w8K0P6LZ>_ccsazH$#C;d$oOwVpKK3p z(t{;q3jBcA!)x+9Wc=Uk!{7rPgUIFMp#NNr$mFLHz5S#68?1Flf`^_6P5lz@e(zz# z#C_>?@elC-hWYpb^Kn?_$jq3`iJ9{=mq3bPeP7a=$?t>2A>vHvNEGk!I^Lg|1Z)2_ z()H5Qu=D?j=xalE@m|O2@(M_Wugh=a9i8@y2^#mb@;s!&-|#-fk?I)ee~Z;y;1{_U z*!Vp>QvavD^N(-5uG0M%sgia&GXW|V=(-WAX0+)YQZW2s}!tw-{+(=lg=;$ z&f;EQ-r=8l`GaZt{eI3l&-0w;`Q$*C-Srk%58J3XxHL_7%D@C8xB*7#Lpk)mWfbVI zqdFhsInHyd=K;^P_#f^h39{>Na2_h#H^@mn%I~p3o_XpZ-GS%LE)ol$ZceM?=-18l zj=#g_{%)A+CA)pr2;F$Ji9fpp~ZI^3AG7wna}x;lG&FzNN4i%&eyb_f$QO2IBLI0*5zF&=(qWQ z>^}~cep$zeZ}c z6}n70>o|g9o?S&Vl~1k_&qSZ*qo!a!OK`O29hmVRHsDL}9w(cJ51{9L-#zB}U*3m# z^WOFc+xyw@{l3GGma6_HGSLA(at_*j#`P!HNnnF3Tkmd-(nWvS_6(b` zqe1SMlY%`GzsL{Z7AKW`$X1Jb%I*m%JxZ+XwAKU}X$T#63ItAok3+* zbuZD?oSt5k?Gew{@iQENW7NssX@Cxp_1b*zfgOB>X>~XAO16IGxqMaoqj<&+fm0pb zu^G2#wBu?za2D=fwfS|cQ+R|8;C*Bx|7-Iv%lVgpMfLhBbG;%Mw|O!c_gwQ*Ja=D5 zD=|nflAQJW`BUBlAr$4%fu4has+I9JJpeQyq46`Yg<1I*K#ryZ=zG< zI$>jW4;!;z`;D+gy`HzWywCX&I^BPIF2i+z>osOkPWY7b1N5CCw2dsfL3QgUw9G$| z()nSV$9)m|ji)?Yy#In;f1mgD{I*5kThIqj#c98pOvW#D29?kFd2Eb6$|QZh^DToVm&q%b(eUWBkD8`_LI4q1(K{eG2~kOFXxGF7o<(C-Oc% zMuzz|PU#?y<;C_l!_xavBG20VG3L*;n;(SVSyaRLkr{$-o{y(^(&1q{_kPt`e$>*) zHsM#!fUAQ_8EJj6bsZXFvh8H*@JVK|mua!&iQtZz#XCFYYxWy?&NC%=mG|?$aeoRf ziCe5_QP1J+<}J-1ZEbEdY}NYzIUYn*?X&v6$o9%G%m3Yxq$lox$(|46Hv-lA@10Bc zi=)sRq4Iw|iPYO8^4+T8YW4d4y>~NCoo%QqW8QxSH@}utR|i^p8*Jiwwn>7OA3

  • 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 U1$mD->a{cRFYf>6ui^>(U%jI#IsgCw literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/libiconv2.dll b/Utils/luarocks/tools/libiconv2.dll new file mode 100644 index 0000000000000000000000000000000000000000..544dd92f56d05f4caf06bfac3194431ddd1bc97f GIT binary patch literal 1008128 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 %Maf8ueY#MnXRn#b( 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 z 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

    B6w?~z-z`>VeL4<8O4(jNNi(Aw(PtFg!R$(# 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 |xs8;(LllTcHT5hx5a4OLb; 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 z%0A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

    `vu%HaL>c7hkFg~ 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

    reErpL-g>=@$?D@9Vz;wdZvd9akB9 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%0AJJ8c}V?dk_|0)I;`tb1W9xNBZ6k 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%0AZX@H~s&}(w@*fJBoJ_r~Hz3ms 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

    Uc(Z+j-_}5%kU<|T);(C;1Vw53a;W$ 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 G?f(E&I;9){ literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/md5sum.exe b/Utils/luarocks/tools/md5sum.exe new file mode 100644 index 0000000000000000000000000000000000000000..4ae9f74ff7fdba277bc648250060d1bee67f66bb GIT binary patch literal 41984 zcmeIb3w%`7x$wOw3_5|q2{mZ6Q71YmXuynwHi3Yn1mq?}2^Te7LJ}aykffOz0R*zf})rL$NB!x+IuFG5!ANd zcfRlaz3;%zUYBP*_w}sH-m~V~8`o?7G)=Q}B@&vpnY(;^>hG8TX{Gv%3!Xkhdouf_ zg3Y$+FBMcStM|K`Tbh=(R4;eeR5vy@1>B44+%3UIcYUL~eC90o@}}Clk%I;e@K~rT zCTiMrTYqidzb?5tN$r5<${J|PD$&+alE)>?J_l$`hHpkuHHnbWNxSaG_HHN(mp+jF+h}@z@wp;?3X0}h(?>$-ltkC-&7-$^~>G^kRTIhXy z>_6_%G|IG%KFt`ih`*6*d%7m}2u6LnCr7XJI3u$^;pXTn_t@L^M9@0Q56`^AX0^c;wlO}o<^;3&VHRl>=yzwNNDJe*z0R438-d@-#lZGFoZ%t>wsN*>{|}_?ucCpknnIyf(eam&%RzSu@NcxwKBS^Ie&d~Q7!4t;(9<;p8u8Hu1 z1yv2?7W@1T)YoGRT!;?-Xcbz7EPEt&{w~3%`?u0mY@Te|LDTMo>$j@1UbHZ-#eQj_ z9o*LL3g1d|8c9X>V`*3vnQ{=s3RPpFQzdT~u{-4d;P zP>MH6)Qq{@91m~zUOu6zrEYehzQKRFe_3@)-Q^8UHPsDuS`EcPDb^O(1Xd&+!?IUp z%PRMxp?>#>5u%Gr+)J8T7(-j?7*9zquMVJ@kpr|@HBEtl``Y@3hPoDQc0)^j%`$g+ zOI>p_+0i3MjV#ixnK9elO9=+N{@`+LdF^Pq^Y-sI>#r1*VW(maoBL~c_ z4=i&xHn|0Hp+K)#R@bO_s&!zUUV znpV^|E_DZ1G`X9a#V6naCkguNmINCRqhXb)Q~FZOnKS>^ zHZ@*?7J>m3?yhcJ6<9{oLa_w>6n8>b{$*&!?GM(})cO4)QU<*EbFQLv#_X2R7<;<}b38%;}0L9975NQ7R}{gfLZW}t~lH63X{wNj6Jh4h!C z0SiG|Lp-Uj34j+*t*;>}h%>Be#+4UcY6cC{zYE=q+$ujn{A@UFQC?&9a&e*-cU?7M zLpmXyYtod8StGn9MI*f0fa~j;n_8I32bU^d%7*&K13`8~Dx&z7HU>vFwJg=HpESYk z9d(6Q8zJF5t;1>%Y^laQ>so~9P`?%lT&&F$*KBI6OO-FjwkXQqTvt=Sq#o_6SP=A! zL{`TesSWkxAe$r*i;`2FTku*vEWH;jud8mPIUU`9%3h#VRcTd?+R&maR$7=N&-UV1 z&TFESh-4xB%C4p9M@{~$4)b?lnC)%X-J}p*q8^b(9`XaL?#4RzTA*#U4%t|wJ_!giq zJ(@`L`akV*L=TW5>1<~>pEH{nC&Q>K z`~*l;^7e_Lp2b0jF#LqA`=?ALHY$di;lUU!6EovHVLR06Q}ZW_%0(iCIZciI1=+{R zXdH}&#^r4EX*PJ0g`)75+a+Sc_ABPydC`di+@7Woh$lM?42jXyt_lkZLaTc)1#ZWP&GC5_JOtAHqw&mXwI}i|IO`` zGF3E2ix`k{>H+3~0p@`-U>uAGQW!1vUEwa;Kdl;8qE)*mc999%KBSkpnzVMfWwI&| zAFWczHlCG&7^fh*-1=%0;twXofnJC~3L@&3S*hUocN4;Wb`pohP+-*4=j6e>#mo;( zFb_qhCeW{atN?&x6_xR4KTjl{zK)Xa7oQfb#EUTxZWQWS5g5y#@17Ov3AozM01V4( zaT^KIZ>YW1)zt7ITwgTYR}dPVBP9Ye^VGlsTRc9m5<^ zZ@ap;N6KEh2xYde>C*IZMYM`Icep9g2l>dj!Xxp?@P1d@3CfH?ZVVb(Wh?#6b@v?< zOx@hR7%%C+dEh#XoXB3N17$wxmgj)<2`_6Z8zQ^fkM%6mIEE68R zUK#ji(Q~J%cUnn5Oiub~DqK2ZqiGAS))W;1+CTL4~n0WerXvgn5q2}=IeZU17 zI8r#@Y6fyXkgemyG@7d|s~>tDrwrt3i)XRk67`iHc7=aWhI`~MnAMo?oNAPX(lzPY zbnTAF?B`TpV9lnNdDOCKCUS(^gBK9MOjN$o!#@+0uE>utl?28SJ;Q z3K^C5P`0TN<3?KD zs9LR;LKD?hv~nk|a<{J8fv5O-p{IJL=umeAdMEN$K9 znW^9AX-llkO;f}G6cMk(4&WE{_u(tH2P*Mv%-Ty+ESWs8ewW&V%7#i;No}vpNlM#k zbE}{MaBW(%3ot^3)NmBtnc(rS>pHcdb8xe36ykVSdYr>y0SA=1Hjy;r)Y<<0n6 zCTCS&;QO0`@M5 zh1pL@|Csx%m`-L*`9_1M=!9!im8V$$@W?M*ZSPav*v@ zCMrE;ZSBFiV^tsz43tnls)bM<$k{9%F0?)WrUeVtHdpL2%Jl{nl^xLweVS2(Nr907 zZ;$=>X0{+UN!E%F-uCWj>@%WupEfcMs5UYV)YHbIyh|uQCF4SuwH`9&+glZfn;&U2Xk=iGPbf zeU|;H%-pN4pD|^|HS7RP`Brhz&3eU5q*g-7We5wR`daslnU!ufC2E!>?eVqSXEa}L z$$P5yvZiKnU@n_$)bc9%uz|e-Cf=65zeamjb+S53Z{9oq9qJz=I};fTRw2z^MpAZj z(aI7k*jUTjWQ@6_uWM;(YEjuqSFxrlmnBZ4>~6@$0}CuwsOn`oGjrNW7x{usX?)BV zm(3^RLg5QEHDQIuRT&Iwh}E}$tbJb|B^Xb7Hgdy{eB9(-Zrw|)dzp1FvhKxlKOxa>Mk)AXKfCKc=L zs+%|>(>?Pdm7XfbK^5j=|D>EZ>bgfZgpEqiyw))nxx#OeXAS=^o6r*l^mp??J?Ow50PNevx;x@%LvaC_jYjQu-f(4)xV+O#uNYIBA604v?C z6;jd-e}WV;Zp@>6fIun2a`z3l@lJ-)zMG%cfP zNsxId&{dwIVAi8H*QWNh+r@cQAQYXr@g5`K@ey##FAI1i3@)PRn+-%>=DLX?0Tf9p z*I4Z-0kDh+n8(CdR!2GLMlD`Jn4E*gs+SPLTC4!KQLw`gSPziI4=jvAT3W%TB5g%d zh!jDj7%#}pBosScFrOiq8GVN)N3Z14$D14|bBqT(8$q4UoOqE%BGz69nq8PejYi!s z#V%-ok1b{!1cNnmNEikO_GGK?(aPH%-)c@!u1}Fq31ap}A&O?4-CZ(}wlO9o=QP!+ zCdgb#t(pNH0it(?hG(@%lb2*Jqvl0Sf!{-Gh0Km-jji$&1_t16CE{*nNq=y){RD7T zc?sO!nxaEyEg9@DPV7Jj_E-q?-S<$VQ`7w#tk8pUZxElB{z)&$U(_DAyEg4|ZT+6_ zOqL1H1@AJUDsQj}SX6;k<}V7p?MlJ8+7@D$3Bp9n!|_?9lM9Zp&76mAOtF0?tU^ru z5qheA6coEs45UnE`U!P(F6rKiYHVW-sK(Mv;JPk^#0Jwh5I$_iupO?pKOIXXV(-*r zy}Qj?=J4?-vbu*cjLlYiKl$GMo#mcyijx<)HrdMDu5b;Jp)A`KzDWXyxe4M5UrEN? ze!yoQ1E*Dk5>yv+h0jbuz?004Z2u{tA_%MmlfCeN0xCIA|I20cvezQT!_|aJ`mKcf z&D7JiasbICc=#g47l5QJ6wMkgosC@`>Io{LSU*>|4dB)?$M8V*(I~qooKjwcdGiRRDaa{ zr_6$1yEe(f{Mhi|FS@@c1iL?iF9~eLu1(Hf`&dlr%Rk%}R zq;DAGWIdq|Q(8I>j?0AUf!=mVy4u7w2{1*S_E8f0b4R5rFLkxad`g<>f0_WrGPLE> zW36SEU+UVBW!u}j8dK`FKrvoktati{qtW7-0`F~yxyxKzceU+yg+C%fgpO4O&R%!M zgh>M0@b?`KZ{d;8R}r=(5c}_GdDCxLIAP}X*H4^K*>`?3do$jcP(g1x-D?@WVs-2IF~)qmYr{6z zrWd9Zyv}ep8CPD!Zp=LraJwct>9LwIUtK0lwzWfE9NxWZ3UTy~i&{4dh2};22}JCo;iSI@_&J)Lh{WK$dO`A~FOdULv`L6jASabvc`ehB?gn$v*EVU;H!TCbzJb!8R;d><5y zcjd^b8Q12L^huJtT14o7AXOqZM%~P}zgadeaCX}M*)^_Br&DY%8yEZpNVU*Fx(4I? zw*C4(S2&;X%bF0Y=QA?*(T@**kwI6@>K|Eb&d9%ax~3&$AnMF9&S-mHe<9ExZn}4Z ztBe;EoWwPs1X(9==(JpB@$FdGxK@i?Wkb2GS0cP@MQz8p(`h2G`KUb`B zJ(O${b3xcl-2fc51kh%ExS%s8JKCOS#w=~Ga>mz4m~M9REXN!Fj-*$6CbuO5*DJeK z-g%<+R@;cc66Oz!@C@r&15OsfmD=|X+Q(`w%Huj|=HZ}JSt_Vd>g7;S->;8qQbqrn}y3KBL zwS9^lWAVl{Lny0_tjfa8jN*_UbjJ6Ih?R)AJ9xP$C!8_kMcBSfXv<8)&FDa-E1_9+r+fzCRRgu!Ugc7Hro)8+Nr2B-r zq^rxbm{=FByZ^(S@4vW)8a$urs${$ zt-I-zp13_(fc?e&1PWbx;>QSG43A?g=_qDAY+(>ZS^q4`S|zon9N#1sCqrLgz!O)x zwsyo9_9PNdjOqTQZ)cJ4UWqhjWIi{kEeQwkoGW5Hp&vEQvi?#>K#F9*g_x6f4f>=gRsxa9n)`S3=Ct#5}q%&?X35$}pM zfBhMEBT<9_DYPnF++7Q+Ic~RqAHDjfoy+Xt$K^4V;-iOZ%Ai zs6-}ZYo@4C#GH^#?6ZHzR8OXFni@GTMBBAS?p>{8Mg&gNJG$T2k1`X`0-yBmKQpO} zZ~jzbH09g650~x>{Fn)5_x)WH^N>!$%(6-G1wfc&C?@i0`pez%)l!q;4D3rmejC>CH66F_IME2~+7m-(6pM#-h3=%xLdJJz2s#0m~aiKC#rH4T) zw7rlQk*)pwQ}6?KdCJ;JzDiPj^`Q%#n*VdpQR1^FD|a2gTzlm2;K$mZLEd6<$>;e9_>6q{A>tg1)2Qd|!~c_hucGkha|n+e zYmW;6s|9+VOd&qS6OT@E<^;C2?TdfeEX3PvsCWmA zD8PN8&PAc)r{8kHXI=8xCvY}$l|*KpFxD*6KMZx&>TBHkp-`9SguW{p&pNs->&U+a zoUY%V5$eoZqPs#}6xjlIyEdJ*?(FV1ok#x68}$DQz0)50%ayhdm4VoKi4kkGcoB14 z8MO32h7Pn-We@ETeJgt_U5i?;&JP{95=}>P&k^+qhS1yXfJLeXs8{u3&tDI&RXBy{ zL&l4>?>CsipjB>RPgrhSJnQ6kx4IFb^2zBtcw!(4993#V@0>8cZTq8fo0C{3Q@H>o~a*1ZLR|WTOTSsXJ6=DL}Rm#i?c7$NayxEN$eW$)_sOlRB9MSh2(YNxlqxw#>T6M>bG*lS6qaFQeA!+Z& z1>3wITMcY`fRKGZ?{ft)GIy)VdUVJ6ku76Y`v=VS$DrcfYulD=_5w;2N|7h85HN2{ z|G1z>!B8PHdE2&V*ZCIzwtbNYvIGoEC~lJM>cYIYyWoho8xbDh`3VivfR#v{=j&3Z z8Xg8drG%b>y_6RV^F4|)0a18VJ5wX)dk_D_0d2H?V>LMdG&fS{5H{;DT994+jEiGKB)mq z@Tz1>QMe_z{+{}o2L|pW(`pk3Sb5cxREaf$G-Un1+QeV4LFanwqJLM#!EJn8V zFNj%b1th(RymSJ{IJiMZj0zbmCvsXjs91$^OHq*?Xm%}}N}Q11)pb5-MH&TFBsij= zo}5gG4!qG_QKn*cfqKE}@R9HU<<@`Ix51Do$Qu`oAJMp2)ow*RydV^2yzi! zl?dHkQQ}IZF+6`xQl`WTKS1c<7HNy^0=!1{@aRoN|-6D`2E z)PdXrk()vwy2b>G@1!-sFCD`hQxL*2)`W^U22>84RFoxCIZ*^uqz)<;h};worT8=| zl7|WcC|g?=@ueGy{H6)k^`YtD7UXP zwXg|#aT(AZpb6@;jBDjYevnHJP)UfiUP*}Rc6Bh4 zoYIgf0}7MyDlP)AZ-9aJmdUJ~$PBNNgIB9iZhuFQ6{aC49s;?&COOM=R_*|Wkdqwb ztU|e+!jKugS0sUgI0qD7p&bHQwv-&9UT&ba>g4v7CRHviW5-Stp=CcSC(3|j$${4@ zl-pNXvv>Rxeqmd@1S-EbsVIY{a-svMNF7ux5V`d#=9KnMhSrqbPY5yz^UAuCP|9Hp zAu0aDQ1YDMP7Ni=PU?M5&7l}Ggjq$qCyDGpG9kjtfMk0CJln}w5!V`*QZZd-8x}!t z%=;YJ?oI~mPm;JqMDOdE*&5;6$%D5CP+>F`b@h*lwcxYR2veXwEUiT-Wh6<6SSjAN z2$VTHX0TMj)eJ)VNBTDJUrqKDD{+~sh&JAr_Ro<}29bmas7h4FYsZ_yp3RgcF-FNt zl{F=gMw9Wh;N$GW1wGl@Y`fq~tPO->SVjzG5J|LCkuu=6UE5fcJV}viB%y*vN)e9? ze`Cux@73erFOYUpIM9@);IKtR%niJfL12`jBq56Mn#dnj$Rk@y1zpNie>K^*=vYsSFAzntwUE5SUL15bzdD5$R-r#wJYIJ@KT+#j(F0m9g zgzGY^frg6fUTc9tRA6aiBS|#+_nA%nz+ziz*|Zh}L=#_Pwg;%rG@F~3)SGe_fu_J)g0%(mf0-+#3Q`D)`H4LRbrWK1DSuoY+>aMAWb=~vY#kiP#bw1DIB7SB=3U5_{={DguSce4W0R>Ub7&;tVp05hHFCgpv@cQ+=yDx;d4Io=n^D+|2H)?ssU#IkUBUnJ(5BRn(WEn@@+n^wn|?lbo=-xX#iyF-?p z%AP{J6<(P&AeWkS@Wxr+8HZv-mUpRHi|`};#WI_;U9B)Iv*sGS`(d%cv_Q4D6rMKG zQ1nw14P~?E5NRcIuDwdlRcdbGMm3gnk-M`LE^{uVzd*4V$)W^7XeRR#FqcQ`kc} zRU8kTjxog&m0p&K3^v%?InFa#TUAVuL?`R@^sb9CIqTC zyFt>1ra47m*|L$oD;5#v(4Xo#{KX3Voi0eN<|vLAr+Z!hZnYVKP4IaWjX1JQzHv3$ zn$|?`q$exp?l!kIF@U9c=Gx->I6R9MVaQ})6deZ5l+kdW*Swd@eV3UoQ{Gz+IGmZG z$MjySCv20=4275u$+i@%fN>cZ<#|jcnB?x0I~XNhqA<$#fF&zSUdxusFOuVRng*>U zkaTT%DM=nTSAenDE03N{b%0zwg;vOAbAYWV!D`V^J5iSAmnp$bL!xt#m6>j4sT)tL z0D8Z;*#_`L<(vg;Rgc_K`l>p}!2`Jerl7k5Vjd{RNKG9CrHy(>!|dv{%Jm#5raS3Bgvch}WUdEDJ~b&fpe?z%dUn4xuD zoon9m<)*$*F=rN!&79!pHCP_^zGywtJeX%aBi@t#jF{)IdY&=Eo(5<>7nUcwnSk@` z#tfd4rcizfq{Eou{8Gs5J@TyiMSY&rSRl`_-ZY=@M&EKoyB+dW`eprftEii2(%En7 z%{ezMkYnb|_b;40H+AzQ&|@sjH|FNr_Lc6_=gMQQYw}LyO3+0iIZ z%XaBA)HA`zLOG+uq33&I-3NK=#HGjdm(k?A>Oor^kKs(z0#387B7_TPi?q-B}Ki$ z{NWYMC{phO9imR&2YQwJ7v2YYghECjc|8fPlXz|GV(WdNe2HGX z91$ryKUN1}V}4G=d3mUdUfEB-Az$7M;)^Y_bE5C|i@tXrFZO&#f{vUlBQLMS7W1}} z5#-${xKMAwj54mZ>(lIVR_82vokqXSd5RZah>}|TO5TnzUwFBg)Min{DPMRwN^Sf< zcm-m8@_o5J@4MuE?e|^sd9i|l(h&=YwNvlA4x`TH(a^1jO=eNDc+@8bS{>3tW`cgFiJdFp+a zypz4}lF!`69((=rFTC%foZZ~BWHQx`t1vm*&Moxz31<0xx1Z7BIVm2~@9G@mpX^49 z!?@9@lQvtG?(`3^KoVEy@_mFVS7;Dl-C2*KEA+$0U?`V+_lBZ&I>qFI7&AcLM78aV zY$;j!^M85`ho2tpI$e+14jF^J>~{jl%LRNj6Oae;=KQuR7VU7dH9y#P+#BPy3p~pk z1BmJ;i}p9WJ;vZ@=U{y=eUxvIdZj&Y0rXJ)$gmGzekMxwj0e+=5t8inJwtA3FtH;kq9UEp|f3NqV1)nkaW*L%1hix(8Vc5F$5c>ABX&fXWVSg~~HE3fy(n*-i=ezgDHG`z|`dRG7I z1%0uWfVFPUBiq4Bp!xK(o!R)e@=5e?;qXtQU8fOY4pEMOQ|ziQf(WnYaI{sSkb?0}i}f_<1JwVPMalVEb7nb|=^$9PF5p ziM~=yO#CI_|K0A_F3rTB5B~qL=gw}H$`#PCeQN6>Io-B{ zzmsj9{4KY2sDbB>b$nrlxuxu!QY_!naj^Q&VNXr=C@GTHFJ()VnmlHd>m@0xeQS>s z(*dA1`-s*6$aWn7!zgW)qG${Q&6k(Yg@TJo|@ zD`Ti$s@L1~?>O`un7_%$t7hNH??-;seuA}wz}!>z6V$eX+DNe8hli#eJ{*j=Ir8>t zh26N$p;tJJ>zwR;bXfB{Cz}rDdVE2iF(*f@$LHj*9-oxUjP}`;;9k-H*%Bea99m|y zk?EuIhyO`UoA`Fq4=!P!$9Vyp0g*CqD5_?(tn3%$f{fX%OlSA#3*C`9<{TKFbY3Z5 z&$oDt@hqizIemd$X9>&(#kCG&j+1ZNB^RU_-*5SUY<-$skGc^`q*CitC6BC2`}2(( z)}_NRom;I--PXF)bBY;$Wct{AbALidA9wOyorv>%V_{CDxYW|ef_!6Pt}(Y)9}C=( zh31Raq7Swf)c2KSYk}{@&9&>Z?Zyg+eEn>plW%W+)xykLp@rTT|CXfE!MmIOF;x6VCD4%Je}oEN&MG}g%3znmfNAI?z+1GKp<^??9~YAs$xmLrM# zpjH|6izJ*sutbphEu>@JesXd&ufHkSQez%|TmvU^$Z$;)M<}Z!w9V6);eqxuW)6TI zPA(3t8mo>9tCN$x<Me`uey55^eL4$$N^uIrc}>!c+3iJZew&q|urjC^M- zPj(%oqdng2laA@+>kP3I1+vV{cHLDBV8Zj`Kl^=}GvLz(b3MlO4A=8qf8=_L>jSR8 za`g}LCBc~&61wc3t>9a4jTh!&1S*d4y>^Jj&IO3@I*s!f7T8xVFvfSDJ|J-#%PzYy zq-Z0Y5E|ydh0$ogw(SGG(Y|t+aYm=jgpo5c4}ji6%iey-Jn$!e5lsXM035ub#r)*E zUrH~jmXaS*zw$diEndT>1L=DuJ=aXPOM04_J|O8U&9u9P^e8jENYa;>>5Y>9rkOq< zX_p0$&f@(@%LYG|$rB}4QHX*?=dmBUH7))Fwlnmja>69*xd`9Orb^C58YZToOo5WN zlXi# zODz0yM4CE2l)56}bJf#=x3EKffAkdm*)Y*p@fY3k_4%{#eJ%c8f6C%d6baLIeMsx0 zKCNQ~gF&6U_tZsB2IYUocrRyydaMHorWQt8+|hXdbuSuI-K__0W0@`#dt4jJJr~8w z&sTeQ-*1ph?s!mGpxcht?Vi{#2csRC84jtC z4pF7HxE-$nF8(Y!ZaZ6!bm99zq3s?XWB}qc&J$pa<#;m*$QWJ)VE4Z8{@}fw8g-Et z{6qJh-lH5C7+!&Y#&70NA9q^cfDT%!8#F&ZjbQy9QQfejdX-gGBv`MV?5 zy^sIwT;bF9a=ppb&GiA-CtSz5k{>Zv7FRzmJC{rhPUE^zyF^>W6F>FE;y&@N%orla zC?>sMsqg_AEMW#cT|_DB=13&sX}i53TE+wLYz#^uRlO z+7RnvE?UXgUGw~>Grg+l?02Ei5C#RIU@w|Z3!x%~-VeZD#cA|!I5?W8fnB6k z^#s=`+nfs5DauRGU-G)qO7DaxDf=ySl67*I@_*z?$0h0fHKrW@2+qHyt{T6MJ948lsa!FfCmMX2eI75!|90zb3|&ds0$FP--B ziUXLGz?59?H9)liPUTP%#m~C@!OGQl#2@9LkH@R~_V*P1&UJgb|F6dvcYpYJKzg(- z_zs;gN5TfI*Mh7H;pQQ_94RSZf3J}7M2$uAJ!7_=qZ~L9+Fqtsua7r&KlS)6-48y# zr2EH@w{-uzLK#rEELYp%rj1#r|{VJdqy!U5T*Bda#? zCuOh}zFpyRuuHNZ=VMYDnVrQkAM8K>4>Dk!*SdPN?MheM9b`H6a&(q!Ycv!q2=$!j zx=YUakHEJDER8dGboHPr@hf>2+U~PU4fh{zpc*zA?*G&y^YK5eq9%IIE9( zT%ov#DxRwR(RO8gF9mA+!rqr^uJBNzEB2KaulNxU^T^yiq48)>9)eM0pG%d_$agaX z8V|+3&mf!h6<7ENd>5MBMI8MzR?bQRQzUnoxS@gxtWuT17R;J7n3z&U-XfD%-f=30 zJO7#Zz0@ILd;GN4Xwf?7x0RU5re~P|?eTsB)B4uwy)dl@PjBrg>N6hF8%npi?)(&2 z$48T0!Sb+m`7X07z==ft{#tyxxZ)sno@goOiOwA=a>oZ!YNExFs^kQtV$`BECU?fF zi%`|wfTH252#*-xZJu<9NWe43JpF;a)z#`-yy{E%m1l|?^{&8p_0ucY&@|NZxhwoR z=#<|EM!SAH-7_YodUg?7&yqI5{z6V3nS1a_U_Cb1opLByyp2DMrHh^hndWbo{uwF0 zlwUA7BNV$S)KlQP>pm**=dxDi&o?t>$hDnp=3UDEJ1(Ki=CkXL8K^j(%^w-om4vR) z1!OTzek(`yg}*@tYkBYvPsBcw16b(8|0Rx%s$0uSwBTFu56P;w@jpuiCrgXVF3ZJr z0go@FaNWLmp#&xs8`>grddx*;zA6zIBIf1nq+2L%`@q%K$i4d&6(nxAY2EL(eGnXI zwhVtr6&0Kj6&M8v9P26vR1M2;vMNvBI{QG_HirOa=&ns!{A9*n#4_hSP8wUicD#hv zy!dm1nMq6Q>ho~Db7fO3+4*IiSYDUuKKHPKvp01*PU9 zZJZ==v>>GdYn4h;-xjzIKPuvUD^6TX^+04ON^<4eG+$enKRzV^1hGbNw<3mvs};xT zI5P?^j8{Qi^mAJ9S5M2lt@}YU7k*Z9@msNA#(bXrCMM7F)Xx#y_zjtz!=~&x#db5X zL+~8EgX0jV7z6Zy##Hrud#Xd9<}ju@^=VFHYK}fF$C#R{Ps=r?=IPV&jH&thw0zbB z`ZRZJCJ6N+tmNQl7oj4%T~Dun489&su8+~UtkxZdX0DeutLl$Z=OMs>9s06C?9c~v ztT&tY*7M_=pm55e;W>J~2P(O;Mp*Yk`+JPpyQ6PswY5hAS$0mRI*Z{ubkL^n+!G5O zuz5T79Q5wf&oXF4gV1(|xlQ}{2H|galE2XVh3H4{%7F^Qc+h@rY$eMRqln^M<4pJ} zp)z?`PcfzDAPnE|uFO-yK|TC>w=4uvK9hl>0_j76c?NtUd#m=GV9BZSm%eBu<2*i)R#1Nm(<)Jr(i zQs+E~Pg!qJ>1q2QFf;ZmK{*WZa(TyXwc=am^0EMz<8XXxVxe{~IFAZsu@!=9SWMov zK=xt0^9Cx!QB#erN}`9XX^oOEJ_*OO;}tZBDqDf*5L@uhw@8 z-hDE7OZM0~>G1sCm;AnvoOrYLef8M<5%r+_1TU$`LFPF}9)?-zUO9-Eiw+i{YY{+B zy!K(vVbsaCcsWWf1jY?aGh)h1hJs--aMP);zyg)1NQRjzU;@;wq;54QO0>cOFD!<+ z(Xxo=5_e0|d`8a$i*@AK@@Q6Kn_m(Fe7&^d9K@7TP)1olO-p+UvHpwlnGg6)`RJ~e zd`OBMrhM`&LF8+& zBKDmRe^K5oo_0{4K!O~xsU>d!dFhaS>={5_8VXj4ALcKex^?9<#&x9pfecfNtZB2-!Fg1NgM)gzAgtN^;#1=F~H4B9O|4gm*Q}G`tvqxzc{vCjy0BOCZ@_`0=@15nJtnp?eE*@(^lM~cTQT% z{3LOK>#jSc>b&U`uRUJQUw#mS5@lBryXzQfL&Mk1)9Xp z5U%CSB8kjp9#m37FBV0}j;5T*$mDmj(p{dK`T4q!F>JEEgN^FAweGST0P>wBCbYqL8jRcorgm1kk zZ8UgP4GQr>)Qe|Ge2)3~V=8Z)s95hX22GZGi9XpLm!)CMhVZcyS#0#BeVDI!cO$#} zHi2Wa3>|d)oX{==NtcKmrg`Eo0e))0gTK!7_~o%Jq{+>ZR4TZ(kf5B}Kon?0Dr9y1h1 zJ*tke%+;R*EKf!=3m?Akz0)k0B2P^1$oXMSc#yMt&(v{eFnf4(z|lq1eC)=cwdBEMSrS z68+~(rx2toO{9I9A0-G_FQw>v1a!FqWge_J5cP@%q;u_&>1R3zAB%YMyuebvya=AF z7kgsaKt|@-1l{>*;s9nBQNCv)%1s(ViSutDOYYCB?j_^=YV@+2Inhxt=NK-i4+~sr zTK~IP`ni_NY|ra1*Kb~jDj@dQPeG0LWaLq^30fyL_I~VY#V^PE{vH%QGM^n`!5Ixc zqYldK-efxU@;ZKvdKJIFyR14WzsMw8?v}xxrH$x|9^<`d9N?|Neq=ADqSyA3-w71mES5&&o^h}*c4bwb_j~H#V(kbo*Dq z;_|dd1loFe9zbBB_CPs{1!4&hsoX34=$QAxI#1lIiGz+n@JmGPqj%v1t zw)q4;3$_#e-O^xxaH?4ynd;-XUwKq^gMFpPnCg?~U{^C-3O%dc3v8da9SydGw&%)| z0DK39(S5X7GaPj95x=+?+!#tu`*xUzt%~Ljphr1w6@dN%YHWUolJ0#{cTDM6iPh&P z=wS492*$lc9&x@0$Z(MV(AqI>xm(|-$j3YgLNJt>W^vnY^iqO;$^v<%qjxfFxx&&P z^z+(f2va3VnUwC1V%3!H-c-87ZRM*k7W??D`W;LA`jiM)!-;vEHfom1j!)DaQb%js zh1CZEuoTSU{wGoJrACX7pS%zSt3z``Q6Hf#Ru40>82=@F5D!#XPgip`c)MS+;+qUG zn<+rs7b>x?H3@aSHMt=NB z&Y4DOMaE!tti9y;29?n-)MH!mEn!d{(Si9N0E}m^vpD_K)_os>7MVli z*`==r&W$YioF6SZt@ZZL2L*<7p2oRiN>1FgLeJ>`5lQIW|>kl z)gHOp{xeAuXXD)mIS*37>+?@MnDaxrMo%Iz99?w;&qjhp|LoIZ#%iVv^G^sG8AcPi zKNi4g!K2;(X$;CG>1}U&KJenxQi{K^BD}*6^3S?AEBmGJ8$;F$+1im{ zI#dxoGfDKUUZQCP-%2C+2Srdn>NBdKw;y`Xs1Sag{ubIAC*PQ8$ypnhdnj8QA@}b1 z@F;2hfc|^KVfgHc14{oJ`shC~bW29QJtO~QM!tAkdi+le-JDT>AS3@sMm{H_eNjf< znUSBKk?+aC_en;6dq#e8M*H%N{NW6Edq(}RjJ%eSeeOAi6DR}Y zxm@{NvL#l;RmL@$tCDLGR|D5dt}xent_Qe&#q}gtJJ;{I_HzB1EBX1~N#3)yhWf?z zje&-R{H+bttqjyQEw8R;fmfqlkg8i+$LqT*11QLoDr-y?UY;sTZ{MW-i#Bm(eW0SH zsiw{^+c1C1npGE=-MEaGUK{FaC$6liQ@>L-slI`Cp{T!1TUhU}4g^+_&eE1IZV5E4 zs3Cocws0ZDge`u9&aV}bU%q%@O|WI*@@n2uFC*W)aA95JE%hx;a6aD5FInDHTSs%P zg1o;ju&}zhd0}7`FIMqcr7f(fgF8vzuPx+lw8kb$Kcp?>w~7}BmyrG~=?1@B8i zVkSevV~vSrfo)+^qlILtZDF%jtc7ht&ZIsht9o%$OF+xdszx~`y@IS7`B6O)O}jM9 zEFF=xq^6AY*h%;rOF9_vYvZ$cTe`YdyHf77 zye4ajdbdv6P0K=KXhhPBvg-XSEaqCWmZxa1%wkudrdiaj-70Cgmh^YCQlzwXS&*=p zy(bF*>t(d{S^oN^jl96d=l(2zprvM+m{9wXN-uAg^p7QNzUQa?RMHIy!skIrH`XYi zC$j=g{Jx;F|I=Bw^a|MyVA^GQ>8O#lye`KlmpZwoO}u`_#Ob51NR|(yY`OoInwEfB zQbzvTS#u^-e5+_=`Sj^p1^NFKu5=kR>of0Pmt1Wo`>A*Oh7mT;pkN+%=IPox?o!_i zXH(<6?YL*MQf6*CYZ~Xa|As0{&s(?*-lu z{9NE?YYA-%@Z*5@0zVY^bAUe#{M*340(>X%n}L4__=kYM5BOVwUkv#q6Tl~c|D1ns@b4-9{eXXd{#7XW!@%={6!*LWd?)amffwu#0ev6Pw*tKw=&3+o z0se!)cLDz}@b?1m2YxQ_vw@!i{5asfzz+rf9N@wG*ki!o1N_avPX>PIDYV0U{vhyO zz&{N9y}|KEAYf^ z|5V_wko5xa3E&gJCxA}?pMW3C^#k!-FKgM=bd+Ix88cI*4WsnEnd7>n=@yQHg)P$ zZT$H0+7(w^p&o~xa4#u?h-;|cBO8#mIATj?**m97MRb>pwFB1=A5ulx-k z)$&W=zoOpcD6ufAjW5(rNW4 zK_RuN_9~H%LEcJ~4`pToPSZXxt!WBIRg+5e0kGN#g0y5W0;!PZN`KrB30Qiys#HEF z<&qN`$q!j+qZ*Mi0n+M$16*2}^d*yQtB^^JAf&ig6oIx-DPRGz_)p~(qbWwL`XuTk zd@}!qdj|a9Td(LNfaN-pu!`g^T*#*ncC)A#tZ%J=rnNcLtE_Y+syK=0|GT@)t=w*N z*F|PHHs&$Kuro)Sr7h&|MD2P~Q?!}d4DwU>JBhS>p0OWdw6QUV>#wcniBa-?C3S8t zJD1F>(m(lXjx3LUr(XdZ?&z| zmQm)Xbu+L{K({E&ZmV<&`8xi&foX!z02HcK*;vX}Q5NK0qquUb@>lyfn)0oA&m zyIVokYL_d%-012t9!a!dopZT1W@rO(+Y77NCVo;i0!CDfu-(G%BcSbn0g2 z5@gQP0L~h6eWf0&WEZ?A*Vg5zY(dcQ=0m6|EN8w?%qQSScG_yQiw*N_+@k)m?ffZS#cZ!6` z{wX=Lr=_b}ia)+Rj4% z;w|-x+pD1~@uU`hlD$Hriu9woN~TfRMs#e(h83x@k?2LN(E_eI>}1A_I_xbyDxjhV zdwtr)(44FOiOkXy0&p;f-f{UUds1f1F#DF+M0{WP6|0pCLL#o%F{$<5s3?0@5*SU3 UOXO+*GQEFg+y5*8|G)nH-&4B{U;qFB literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/mkdir.exe b/Utils/luarocks/tools/mkdir.exe new file mode 100644 index 0000000000000000000000000000000000000000..83e57d97a13bc1393cfea0d0c48470fdee43e0e6 GIT binary patch literal 32768 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 D*J?Bb literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/mv.exe b/Utils/luarocks/tools/mv.exe new file mode 100644 index 0000000000000000000000000000000000000000..9fb65bb974830cb0e132ea190557429e305bc375 GIT binary patch literal 138752 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 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/rmdir.exe b/Utils/luarocks/tools/rmdir.exe new file mode 100644 index 0000000000000000000000000000000000000000..6a85c3c4b4ea7ad79523995cbca71f8c0bf7613d GIT binary patch literal 25088 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 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/tools/uname.exe b/Utils/luarocks/tools/uname.exe new file mode 100644 index 0000000000000000000000000000000000000000..3e2f4cf8fe3f971b7faad66f7893fa239faec503 GIT binary patch literal 33792 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%0DC_{*(o{YkH8Tn{ zAaRc$bxT+}9_gm-@}Z-$5f@;|xR49FE9p2KJ>Kc|)re(XnafML$G?rbrfAqYXm_cW7b+dvqplR|92J_8X{Eu+D)H`E(SKL# z-YN*9yA<8w^l%^ZIqu}`v3<|}u07)DzCE;WY2Rmmk7JeJdRu(j^w@`Nzu)Xl>aQ8o z{ai1b?yIupOr7Yf^P?ivaec!+= za&I>czlt~0w2D${s6Q{ z|LRm>U+3wZO1|f3>^?wBR0WyH-V?N!X$9!7qGyi1yb0R9CEC0^i?*zk(6_?4`o5rV z)h!3;)Jy{JpLNM7HZ%BDcj+>9;M6R0Sb_|&vc$J?Wwfr+iilwgEWHKdgn&yXvlhsP|Gg0D%PHH@MZ#ivL<$d3}F@<%gN z#FZWCEDK2MUF)~)X2wO8C^Sg n)JM7F`#e^wNu<&%oSt>+A{VWYt|$xcUz(3MdjAygzbk(Ot_$Dc literal 0 HcmV?d00001 diff --git a/Utils/luarocks/wlua5.1.exe b/Utils/luarocks/wlua5.1.exe new file mode 100644 index 0000000000000000000000000000000000000000..7be8c3a7126f771dafd07175fdc0455d5a5eb586 GIT binary patch literal 35840 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 QMpYjOQyrXNg##q;-?yrmY5)KL literal 0 HcmV?d00001 diff --git a/docs/Documentation/AI_Balancer.html b/docs/Documentation/AI_Balancer.html index 2b5f48f01..3c6b3b617 100644 --- a/docs/Documentation/AI_Balancer.html +++ b/docs/Documentation/AI_Balancer.html @@ -31,6 +31,21 @@

  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/AI_Cap.html b/docs/Documentation/AI_Cap.html index 0657d3fa0..4cd6c823c 100644 --- a/docs/Documentation/AI_Cap.html +++ b/docs/Documentation/AI_Cap.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/AI_Cas.html b/docs/Documentation/AI_Cas.html index 10992a925..c5c606a8e 100644 --- a/docs/Documentation/AI_Cas.html +++ b/docs/Documentation/AI_Cas.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/AI_Patrol.html b/docs/Documentation/AI_Patrol.html index f4e911447..5cbf8109a 100644 --- a/docs/Documentation/AI_Patrol.html +++ b/docs/Documentation/AI_Patrol.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -913,6 +931,9 @@ Use the method AIPATROLZONE.M + +

    This table contains the targets detected during patrol.

    +
    diff --git a/docs/Documentation/Account.html b/docs/Documentation/Account.html index ad23ec3ca..c9fd86895 100644 --- a/docs/Documentation/Account.html +++ b/docs/Documentation/Account.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Airbase.html b/docs/Documentation/Airbase.html index 328b41564..ce20dd22e 100644 --- a/docs/Documentation/Airbase.html +++ b/docs/Documentation/Airbase.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/AirbasePolice.html b/docs/Documentation/AirbasePolice.html index 93fdd0ae2..6e4b86893 100644 --- a/docs/Documentation/AirbasePolice.html +++ b/docs/Documentation/AirbasePolice.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Assign.html b/docs/Documentation/Assign.html index e352ed51e..d11d2d43f 100644 --- a/docs/Documentation/Assign.html +++ b/docs/Documentation/Assign.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Base.html b/docs/Documentation/Base.html index 6a32f5c84..cd81ced60 100644 --- a/docs/Documentation/Base.html +++ b/docs/Documentation/Base.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Cargo.html b/docs/Documentation/Cargo.html index d0b6aea75..4486dc17a 100644 --- a/docs/Documentation/Cargo.html +++ b/docs/Documentation/Cargo.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -2426,6 +2444,7 @@ The UNIT carrying the package.

    + AI_CARGO_UNIT.CargoCarrier diff --git a/docs/Documentation/CleanUp.html b/docs/Documentation/CleanUp.html index 60829d2bc..842a832d7 100644 --- a/docs/Documentation/CleanUp.html +++ b/docs/Documentation/CleanUp.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Client.html b/docs/Documentation/Client.html index 565f34b9b..f01a6e752 100644 --- a/docs/Documentation/Client.html +++ b/docs/Documentation/Client.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/CommandCenter.html b/docs/Documentation/CommandCenter.html index 3384b0fa4..c008099e9 100644 --- a/docs/Documentation/CommandCenter.html +++ b/docs/Documentation/CommandCenter.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Controllable.html b/docs/Documentation/Controllable.html index 22bfaf97f..c48168362 100644 --- a/docs/Documentation/Controllable.html +++ b/docs/Documentation/Controllable.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/DCSAirbase.html b/docs/Documentation/DCSAirbase.html index d47a0d2d4..3a636bd34 100644 --- a/docs/Documentation/DCSAirbase.html +++ b/docs/Documentation/DCSAirbase.html @@ -18,6 +18,9 @@

    Type coalition

    -

    Field(s)

    -
    -
    - - #coalition.side - -coalition.side - -
    -
    - - - -
    -
    - -

    Type coalition.side

    -

    Field(s)

    -
    -
    - - -coalition.side.BLUE - -
    -
    - - - -
    -
    -
    -
    - - -coalition.side.NEUTRAL - -
    -
    - - - -
    -
    -
    -
    - - -coalition.side.RED - -
    -
    - - - -
    -
    - +

    Type country.id

    diff --git a/docs/Documentation/DCSCommand.html b/docs/Documentation/DCSCommand.html index 50c815ce8..6e0e838f4 100644 --- a/docs/Documentation/DCSCommand.html +++ b/docs/Documentation/DCSCommand.html @@ -18,6 +18,9 @@ diff --git a/docs/Documentation/Detection.html b/docs/Documentation/Detection.html index 64ac45ee0..837979858 100644 --- a/docs/Documentation/Detection.html +++ b/docs/Documentation/Detection.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -2112,6 +2130,7 @@ self

    + #number DETECTION_BASE.DetectedItemCount @@ -2125,6 +2144,7 @@ self

    + #number DETECTION_BASE.DetectedItemMax @@ -2238,7 +2258,7 @@ self

    - + #number DETECTION_BASE.DetectionInterval diff --git a/docs/Documentation/DetectionManager.html b/docs/Documentation/DetectionManager.html index e31707159..ac9dbd961 100644 --- a/docs/Documentation/DetectionManager.html +++ b/docs/Documentation/DetectionManager.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Escort.html b/docs/Documentation/Escort.html index d2890d3e0..1f0a069e8 100644 --- a/docs/Documentation/Escort.html +++ b/docs/Documentation/Escort.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Event.html b/docs/Documentation/Event.html index da27fb360..8a94e12ab 100644 --- a/docs/Documentation/Event.html +++ b/docs/Documentation/Event.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Fsm.html b/docs/Documentation/Fsm.html index 5286a9c1e..1b595793d 100644 --- a/docs/Documentation/Fsm.html +++ b/docs/Documentation/Fsm.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -1562,7 +1580,7 @@ A string defining the start state.

    - + #string FSM._StartState @@ -1861,7 +1879,6 @@ A string defining the start state.

    - FSM.current diff --git a/docs/Documentation/Group.html b/docs/Documentation/Group.html index c3933dd8c..edc5b0e62 100644 --- a/docs/Documentation/Group.html +++ b/docs/Documentation/Group.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -1528,7 +1546,7 @@ The zone to test.

    Return value

    #boolean: -Returns true if the Group is completely within the Zone#ZONE_BASE

    +Returns true if the Group is not within the Zone#ZONE_BASE

    @@ -1555,7 +1573,7 @@ The zone to test.

    Return value

    #boolean: -Returns true if the Group is completely within the Zone#ZONE_BASE

    +Returns true if the Group is partially within the Zone#ZONE_BASE

    diff --git a/docs/Documentation/Identifiable.html b/docs/Documentation/Identifiable.html index 26302176c..517054986 100644 --- a/docs/Documentation/Identifiable.html +++ b/docs/Documentation/Identifiable.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/MOVEMENT.html b/docs/Documentation/MOVEMENT.html index 2ec03bdbd..0ae0b53f6 100644 --- a/docs/Documentation/MOVEMENT.html +++ b/docs/Documentation/MOVEMENT.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -191,6 +209,7 @@ on defined intervals (currently every minute).

    + #number MOVEMENT.AliveUnits @@ -199,6 +218,9 @@ on defined intervals (currently every minute).

    + +

    Contains the counter how many units are currently alive

    +
    diff --git a/docs/Documentation/Menu.html b/docs/Documentation/Menu.html index 898011d4b..eedc00986 100644 --- a/docs/Documentation/Menu.html +++ b/docs/Documentation/Menu.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Message.html b/docs/Documentation/Message.html index db044781f..1776bfb3e 100644 --- a/docs/Documentation/Message.html +++ b/docs/Documentation/Message.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/MissileTrainer.html b/docs/Documentation/MissileTrainer.html index 028f28dff..7876a3d73 100644 --- a/docs/Documentation/MissileTrainer.html +++ b/docs/Documentation/MissileTrainer.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Mission.html b/docs/Documentation/Mission.html index bb21a844f..9ca58b756 100644 --- a/docs/Documentation/Mission.html +++ b/docs/Documentation/Mission.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Object.html b/docs/Documentation/Object.html index cb8608218..917e8c507 100644 --- a/docs/Documentation/Object.html +++ b/docs/Documentation/Object.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Point.html b/docs/Documentation/Point.html index 2f03970b6..06c09a4b3 100644 --- a/docs/Documentation/Point.html +++ b/docs/Documentation/Point.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -1347,6 +1365,7 @@ The new calculated POINT_VEC2.

    + POINT_VEC2.z diff --git a/docs/Documentation/Positionable.html b/docs/Documentation/Positionable.html index 94f700b92..d01c213f7 100644 --- a/docs/Documentation/Positionable.html +++ b/docs/Documentation/Positionable.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Process_JTAC.html b/docs/Documentation/Process_JTAC.html index 92c909e8f..bdf36fb2d 100644 --- a/docs/Documentation/Process_JTAC.html +++ b/docs/Documentation/Process_JTAC.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Process_Pickup.html b/docs/Documentation/Process_Pickup.html index a031bed16..db549cb39 100644 --- a/docs/Documentation/Process_Pickup.html +++ b/docs/Documentation/Process_Pickup.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Radio.html b/docs/Documentation/Radio.html index 3b47dc1f1..0b93eff9d 100644 --- a/docs/Documentation/Radio.html +++ b/docs/Documentation/Radio.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -77,7 +95,7 @@ -

    --- bitmap

    +

    Banner Image


    @@ -110,7 +128,7 @@ If a FC3 airacraft is used, it will hear every communication, whatever t
    -

    Authors: Hugues "Grey_Echo" Bousquet

    +

    Author: Hugues "Grey_Echo" Bousquet

    Global(s)

    @@ -274,9 +292,9 @@ If a FC3 airacraft is used, it will hear every communication, whatever t

    Methods to set relevant parameters for both a Unit#UNIT or a Group#GROUP or any other Positionable#POSITIONABLE

    @@ -295,7 +313,7 @@ If a FC3 airacraft is used, it will hear every communication, whatever t
  • RADIO.NewUnitTransmission() : Shortcut to set all the relevant parameters in one method call
  • -

    Additional Methods to set relevant parameters if the transmiter is any other Wrapper.Positionable#POSITIONABLE

    +

    Additional Methods to set relevant parameters if the transmiter is any other Positionable#POSITIONABLE

    diff --git a/docs/Documentation/Scenery.html b/docs/Documentation/Scenery.html index 84704e530..826738fc2 100644 --- a/docs/Documentation/Scenery.html +++ b/docs/Documentation/Scenery.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/ScheduleDispatcher.html b/docs/Documentation/ScheduleDispatcher.html index 887ea6292..336e02a52 100644 --- a/docs/Documentation/ScheduleDispatcher.html +++ b/docs/Documentation/ScheduleDispatcher.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Scheduler.html b/docs/Documentation/Scheduler.html index b8e42d2bb..0cc29944b 100644 --- a/docs/Documentation/Scheduler.html +++ b/docs/Documentation/Scheduler.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Scoring.html b/docs/Documentation/Scoring.html index 0d635d4ef..31f85f366 100644 --- a/docs/Documentation/Scoring.html +++ b/docs/Documentation/Scoring.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Sead.html b/docs/Documentation/Sead.html index 12a877b80..882f19124 100644 --- a/docs/Documentation/Sead.html +++ b/docs/Documentation/Sead.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Set.html b/docs/Documentation/Set.html index 4c542f663..b7146af3d 100644 --- a/docs/Documentation/Set.html +++ b/docs/Documentation/Set.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Smoke.html b/docs/Documentation/Smoke.html index f91a5703f..e277e59c6 100644 --- a/docs/Documentation/Smoke.html +++ b/docs/Documentation/Smoke.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Spawn.html b/docs/Documentation/Spawn.html index 4a25605f0..31aaa95d3 100644 --- a/docs/Documentation/Spawn.html +++ b/docs/Documentation/Spawn.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -2705,7 +2723,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
    - #boolean + SPAWN.SpawnUnControlled diff --git a/docs/Documentation/Static.html b/docs/Documentation/Static.html index ff176e054..301a96091 100644 --- a/docs/Documentation/Static.html +++ b/docs/Documentation/Static.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/StaticObject.html b/docs/Documentation/StaticObject.html index dcecd0cf0..9ad29fa58 100644 --- a/docs/Documentation/StaticObject.html +++ b/docs/Documentation/StaticObject.html @@ -18,6 +18,9 @@

    Module Task

    -

    This module contains the TASK class.

    +

    Tasking -- This module contains the TASK class.

    -

    1) #TASK class, extends Base#BASE

    -

    1.1) The #TASK class implements the methods for task orchestration within MOOSE.

    -

    The class provides a couple of methods to:

    +
    - - -

    1.2) Set and enquire task status (beyond the task state machine processing).

    -

    A task needs to implement as a minimum the following task states:

    - -
      -
    • Success: Expresses the successful execution and finalization of the task.
    • -
    • Failed: Expresses the failure of a task.
    • -
    • Planned: Expresses that the task is created, but not yet in execution and is not assigned yet.
    • -
    • Assigned: Expresses that the task is assigned to a Group of players, and that the task is in execution mode.
    • -
    - -

    A task may also implement the following task states:

    - -
      -
    • Rejected: Expresses that the task is rejected by a player, who was requested to accept the task.
    • -
    • Cancelled: Expresses that the task is cancelled by HQ or through a logical situation where a cancellation of the task is required.
    • -
    - -

    A task can implement more statusses than the ones outlined above. Please consult the documentation of the specific tasks to understand the different status modelled.

    - -

    The status of tasks can be set by the methods State followed by the task status. An example is StateAssigned(). -The status of tasks can be enquired by the methods IsState followed by the task status name. An example is if IsStateAssigned() then.

    - -

    1.3) Add scoring when reaching a certain task status:

    -

    Upon reaching a certain task status in a task, additional scoring can be given. If the Mission has a scoring system attached, the scores will be added to the mission scoring. -Use the method TASK.AddScore() to add scores when a status is reached.

    - -

    1.4) Task briefing:

    -

    A task briefing can be given that is shown to the player when he is assigned to the task.


    @@ -132,7 +108,9 @@ Use the method TASK.AddScore() to add scores whe TASK +

    TASK class, extends Base#BASE

    +

    The TASK class implements the methods for task orchestration within MOOSE.

    @@ -166,12 +144,6 @@ Use the method TASK.AddScore() to add scores whe TASK:Cancel()

    FSM Cancel synchronous event function for TASK.

    - - - - TASK.ClassName - - @@ -358,12 +330,6 @@ Use the method TASK.AddScore() to add scores whe TASK:JoinUnit(PlayerUnit, PlayerGroup)

    Add a PlayerUnit to join the Task.

    - - - - TASK.Menu - - @@ -418,24 +384,6 @@ Use the method TASK.AddScore() to add scores whe TASK:OnAfterPlayerDead(PlayerUnit, PlayerName)

    FSM PlayerDead event handler prototype for TASK.

    - - - - TASK.Players - - - - - - TASK.ProcessClasses - - - - - - TASK.Processes - - @@ -478,12 +426,6 @@ Use the method TASK.AddScore() to add scores whe TASK:ReportSummary()

    Create a summary report of the Task.

    - - - - TASK.Scores - - @@ -769,6 +711,57 @@ Use the method TASK.AddScore() to add scores whe
    +

    TASK class, extends Base#BASE

    + +

    The TASK class implements the methods for task orchestration within MOOSE.

    + + + +

    The class provides a couple of methods to:

    + + + +

    1.2) Set and enquire task status (beyond the task state machine processing).

    + +

    A task needs to implement as a minimum the following task states:

    + +
      +
    • Success: Expresses the successful execution and finalization of the task.
    • +
    • Failed: Expresses the failure of a task.
    • +
    • Planned: Expresses that the task is created, but not yet in execution and is not assigned yet.
    • +
    • Assigned: Expresses that the task is assigned to a Group of players, and that the task is in execution mode.
    • +
    + +

    A task may also implement the following task states:

    + +
      +
    • Rejected: Expresses that the task is rejected by a player, who was requested to accept the task.
    • +
    • Cancelled: Expresses that the task is cancelled by HQ or through a logical situation where a cancellation of the task is required.
    • +
    + +

    A task can implement more statusses than the ones outlined above. Please consult the documentation of the specific tasks to understand the different status modelled.

    + +

    The status of tasks can be set by the methods State followed by the task status. An example is StateAssigned(). +The status of tasks can be enquired by the methods IsState followed by the task status name. An example is if IsStateAssigned() then.

    + +

    1.3) Add scoring when reaching a certain task status:

    + +

    Upon reaching a certain task status in a task, additional scoring can be given. If the Mission has a scoring system attached, the scores will be added to the mission scoring. +Use the method TASK.AddScore() to add scores when a status is reached.

    + +

    1.4) Task briefing:

    + +

    A task briefing can be given that is shown to the player when he is assigned to the task.

    @@ -776,10 +769,7 @@ Use the method TASK.AddScore() to add scores whe

    Type Task

    Type TASK

    - -

    The TASK class

    - -

    Field(s)

    +

    Field(s)

    @@ -893,20 +883,6 @@ self

    Use this event to Cancel the Task.

    - -
    -
    -
    - - #string - -TASK.ClassName - -
    -
    - - -
    @@ -1498,20 +1474,6 @@ The GROUP of the player joining the Mission.

    #boolean: true if Unit is part of the Task.

    - -
    -
    -
    - - - -TASK.Menu - -
    -
    - - -
    @@ -1742,47 +1704,6 @@ The name of the Player.

    - -
    -
    -
    - - -TASK.Players - -
    -
    - - - -
    -
    -
    -
    - - - -TASK.ProcessClasses - -
    -
    - - - -
    -
    -
    -
    - - - -TASK.Processes - -
    -
    - - -
    @@ -1955,20 +1876,6 @@ self

    #string:

    - -
    -
    -
    - - - -TASK.Scores - -
    -
    - - -
    diff --git a/docs/Documentation/Task_A2G.html b/docs/Documentation/Task_A2G.html index 46c91e395..d72d37dcb 100644 --- a/docs/Documentation/Task_A2G.html +++ b/docs/Documentation/Task_A2G.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -326,7 +344,7 @@ The TASK_A2G is implemented using a Stat - TASK_SEAD:New(Mission, SetGroup, TaskName, UnitSetTargets, TargetDistance, TargetZone, TargetSetUnit) + TASK_SEAD:New(Mission, SetGroup, TaskName, TargetSetUnit)

    Instantiates a new TASK_SEAD.

    @@ -1068,7 +1086,7 @@ self

    -TASK_SEAD:New(Mission, SetGroup, TaskName, UnitSetTargets, TargetDistance, TargetZone, TargetSetUnit) +TASK_SEAD:New(Mission, SetGroup, TaskName, TargetSetUnit)
    @@ -1096,25 +1114,7 @@ The name of the Task.

  • -

    Set#SET_UNIT UnitSetTargets :

    - -
  • -
  • - -

    #number TargetDistance : -The distance to Target when the Player is considered to have "arrived" at the engagement range.

    - -
  • -
  • - -

    Core.Zone#ZONE_BASE TargetZone : -The target zone, if known. -If the TargetZone parameter is specified, the player will be routed to the center of the zone where all the targets are assumed to be.

    - -
  • -
  • - -

    TargetSetUnit :

    +

    Set#SET_UNIT TargetSetUnit :

  • diff --git a/docs/Documentation/Task_A2G_Dispatcher.html b/docs/Documentation/Task_A2G_Dispatcher.html index d3f800748..d4db3bea2 100644 --- a/docs/Documentation/Task_A2G_Dispatcher.html +++ b/docs/Documentation/Task_A2G_Dispatcher.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Task_PICKUP.html b/docs/Documentation/Task_PICKUP.html index fe83f60db..d3af6452f 100644 --- a/docs/Documentation/Task_PICKUP.html +++ b/docs/Documentation/Task_PICKUP.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Unit.html b/docs/Documentation/Unit.html index 097aa6cf3..382677d42 100644 --- a/docs/Documentation/Unit.html +++ b/docs/Documentation/Unit.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Utils.html b/docs/Documentation/Utils.html index 59585ad25..ff7d656a3 100644 --- a/docs/Documentation/Utils.html +++ b/docs/Documentation/Utils.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • diff --git a/docs/Documentation/Zone.html b/docs/Documentation/Zone.html index 86c4fee62..10ad3ea38 100644 --- a/docs/Documentation/Zone.html +++ b/docs/Documentation/Zone.html @@ -31,6 +31,21 @@
  • Client
  • CommandCenter
  • Controllable
  • +
  • DCSAirbase
  • +
  • DCSCoalitionObject
  • +
  • DCSCommand
  • +
  • DCSController
  • +
  • DCSGroup
  • +
  • DCSObject
  • +
  • DCSTask
  • +
  • DCSTypes
  • +
  • DCSUnit
  • +
  • DCSVec3
  • +
  • DCSWorld
  • +
  • DCSZone
  • +
  • DCScountry
  • +
  • DCStimer
  • +
  • DCStrigger
  • Database
  • Detection
  • DetectionManager
  • @@ -60,6 +75,7 @@
  • Smoke
  • Spawn
  • Static
  • +
  • StaticObject
  • Task
  • Task_A2G
  • Task_A2G_Dispatcher
  • @@ -67,6 +83,8 @@
  • Unit
  • Utils
  • Zone
  • +
  • env
  • +
  • land
  • routines
  • @@ -162,9 +180,7 @@ ZONE_BASE -

    1) ZONE_BASE class, extends Base#BASE

    -

    This class is an abstract BASE class for derived classes, and is not meant to be instantiated.

    @@ -194,9 +210,7 @@ ZONE_RADIUS -

    2) Zone#ZONE_RADIUS class, extends Zone#ZONE_BASE

    -

    The ZONE_RADIUS class defined by a zone name, a location and a radius.

    @@ -224,6 +238,12 @@ ZONE_BASE:BoundZone()

    Bound the zone boundaries with a tires.

    + + + + ZONE_BASE.ClassName + + @@ -472,6 +492,12 @@ ZONE_RADIUS:BoundZone(Points, UnBound, CountryID)

    Bounds the zone with tires.

    + + + + ZONE_RADIUS.ClassName + + @@ -639,54 +665,7 @@
    -

    1) ZONE_BASE class, extends Base#BASE

    -

    This class is an abstract BASE class for derived classes, and is not meant to be instantiated.

    - - - -

    1.1) Each zone has a name:

    - - - -

    1.2) Each zone implements two polymorphic functions defined in Zone#ZONE_BASE:

    - - - -

    1.3) A zone has a probability factor that can be set to randomize a selection between zones:

    - -
      -
    • ZONE_BASE.SetRandomizeProbability(): Set the randomization probability of a zone to be selected, taking a value between 0 and 1 ( 0 = 0%, 1 = 100% )
    • -
    • ZONE_BASE.GetRandomizeProbability(): Get the randomization probability of a zone to be selected, passing a value between 0 and 1 ( 0 = 0%, 1 = 100% )
    • -
    • ZONE_BASE.GetZoneMaybe(): Get the zone taking into account the randomization probability. nil is returned if this zone is not a candidate.
    • -
    - -

    1.4) A zone manages Vectors:

    - - - -

    1.5) A zone has a bounding square:

    - - - -

    1.6) A zone can be marked:

    - - - -
    @@ -778,45 +757,6 @@ This class is an abstract BASE class for derived classes, and is not meant to be
    -

    2) Zone#ZONE_RADIUS class, extends Zone#ZONE_BASE

    - -

    The ZONE_RADIUS class defined by a zone name, a location and a radius.

    - - -

    This class implements the inherited functions from Core.Zone#ZONE_BASE taking into account the own zone format and properties.

    - -

    2.1) Zone#ZONE_RADIUS constructor

    - - - -

    2.2) Manage the radius of the zone

    - - - -

    2.3) Manage the location of the zone

    - - - -

    2.4) Zone point randomization

    - -

    Various functions exist to find random points within the zone.

    - - - -
    @@ -877,7 +817,55 @@ The name of the zone as defined within the mission editor.

    Type ZONE_BASE

    -

    The ZONE_BASE class

    +

    1) ZONE_BASE class, extends Base#BASE

    + +

    This class is an abstract BASE class for derived classes, and is not meant to be instantiated.

    + + + +

    1.1) Each zone has a name:

    + + + +

    1.2) Each zone implements two polymorphic functions defined in Zone#ZONE_BASE:

    + + + +

    1.3) A zone has a probability factor that can be set to randomize a selection between zones:

    + +
      +
    • ZONE_BASE.SetRandomizeProbability(): Set the randomization probability of a zone to be selected, taking a value between 0 and 1 ( 0 = 0%, 1 = 100% )
    • +
    • ZONE_BASE.GetRandomizeProbability(): Get the randomization probability of a zone to be selected, passing a value between 0 and 1 ( 0 = 0%, 1 = 100% )
    • +
    • ZONE_BASE.GetZoneMaybe(): Get the zone taking into account the randomization probability. nil is returned if this zone is not a candidate.
    • +
    + +

    1.4) A zone manages Vectors:

    + + + +

    1.5) A zone has a bounding square:

    + + + +

    1.6) A zone can be marked:

    + + + +
    +

    Field(s)

    @@ -891,6 +879,20 @@ The name of the zone as defined within the mission editor.

    Bound the zone boundaries with a tires.

    + +
    +
    +
    + + #string + +ZONE_BASE.ClassName + +
    +
    + + +
    @@ -1711,6 +1713,46 @@ self

    Type ZONE_RADIUS

    +

    2) Zone#ZONE_RADIUS class, extends Zone#ZONE_BASE

    + +

    The ZONE_RADIUS class defined by a zone name, a location and a radius.

    + + +

    This class implements the inherited functions from Core.Zone#ZONE_BASE taking into account the own zone format and properties.

    + +

    2.1) Zone#ZONE_RADIUS constructor

    + + + +

    2.2) Manage the radius of the zone

    + + + +

    2.3) Manage the location of the zone

    + + + +

    2.4) Zone point randomization

    + +

    Various functions exist to find random points within the zone.

    + + + +
    +

    The ZONE_RADIUS class, defined by a zone name, a location and a radius.

    Field(s)

    @@ -1750,6 +1792,20 @@ If true the tyres will be destroyed.

    #ZONE_RADIUS: self

    + +
    +
    +
    + + #string + +ZONE_RADIUS.ClassName + +
    +
    + + +
    diff --git a/docs/Documentation/env.html b/docs/Documentation/env.html index 985b449dc..cc0bb80d7 100644 --- a/docs/Documentation/env.html +++ b/docs/Documentation/env.html @@ -18,6 +18,9 @@ @@ -195,6 +213,96 @@ CLIENTS in a SET_CLIENT collection, which are not occupied by human players.

    Controllable

    This module contains the CONTROLLABLE class.

    + + + + DCSAirbase + + + + + + DCSCoalitionObject + + + + + + DCSCommand + + + + + + DCSController + + + + + + DCSGroup + + + + + + DCSObject + + + + + + DCSTask + + + + + + DCSTypes + + + + + + DCSUnit + + + + + + DCSVec3 + + + + + + DCSWorld + + + + + + DCSZone + + + + + + DCScountry + + + + + + DCStimer + + + + + + DCStrigger + + @@ -387,12 +495,18 @@ and creates a CSV file logging the scoring events and results for use at team or Static

    This module contains the STATIC class.

    + + + + StaticObject + + Task -

    This module contains the TASK class.

    +

    Tasking -- This module contains the TASK class.

    @@ -430,6 +544,18 @@ which are excellent tools to be reused in an OO environment!.

    Zone

    Core - ZONE classes define zones within your mission of various forms, with various capabilities.

    + + + + env + + + + + + land + + diff --git a/docs/Documentation/land.html b/docs/Documentation/land.html index 4861ee69b..060915f8d 100644 --- a/docs/Documentation/land.html +++ b/docs/Documentation/land.html @@ -18,6 +18,9 @@ diff --git a/docs/Documentation/stylesheet.css b/docs/Documentation/stylesheet.css index 1b82635b5..206209132 100644 --- a/docs/Documentation/stylesheet.css +++ b/docs/Documentation/stylesheet.css @@ -1,131 +1,887 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +@import url('https://fonts.googleapis.com/css?family=Architects+Daughter'); + html { - color: #000; - background: #FFF; + font-family: sans-serif; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ } -body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td { - margin: 0; - padding: 0; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -fieldset,img { - border: 0; -} -address,caption,cite,code,dfn,em,strong,th,var,optgroup { - font-style: inherit; - font-weight: inherit; -} -del,ins { - text-decoration: none; -} -li { - list-style: bullet; - margin-left: 20px; -} -caption,th { - text-align: left; -} -h1,h2,h3,h4,h5,h6 { - font-size: 100%; - font-weight: bold; -} -q:before,q:after { - content: ''; -} -abbr,acronym { - border: 0; - font-variant: normal; -} -sup { - vertical-align: baseline; -} -sub { - vertical-align: baseline; -} -legend { - color: #000; -} -input,button,textarea,select,optgroup,option { - font-family: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; -} -input,button,textarea,select {*font-size:100%; -} -/* END RESET */ + +/** + * Remove default margin. + */ body { - margin-left: 1em; - margin-right: 1em; - font-family: arial, helvetica, geneva, sans-serif; - background-color: #ffffff; margin: 0px; + margin: 0; } -code, tt { font-family: monospace; } +/* HTML5 display definitions + ========================================================================== */ -body, p, td, th { font-size: .95em; line-height: 1.2em;} +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ -p, ul { margin: 10px 0 0 10px;} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} -strong { font-weight: bold;} +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ -em { font-style: italic;} +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ h1 { - font-size: 1.5em; - margin: 25px 0 20px 0; + margin: 0.67em 0; + font-size: 2em; } -h2, h3, h4 { margin: 15px 0 10px 0; } -h2 { font-size: 1.25em; } -h3 { font-size: 1.15em; } -h4 { font-size: 1.06em; } -a:link { font-weight: bold; color: #004080; text-decoration: none; } -a:visited { font-weight: bold; color: #006699; text-decoration: none; } -a:link:hover { text-decoration: underline; } +/** + * Address styling not present in IE 8/9. + */ + +mark { + color: #000; + background: #ff0; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; + max-width:100%; + height:auto; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ hr { - color:#cccccc; - background: #00007f; - height: 1px; + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; } -blockquote { margin-left: 3em; } +/** + * Contain overflow in all browsers. + */ -ul { list-style-type: disc; } - -p.name { - font-family: "Andale Mono", monospace; - padding-top: 1em; +pre { + overflow: auto; } -p:first-child { - margin-top: 0px; +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } -pre.example { - background-color: rgb(245, 245, 245); - border: 1px solid silver; - padding: 10px; - margin: 10px 0 10px 0; - font-family: "Andale Mono", monospace; - font-size: .85em; +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + margin: 0; /* 3 */ + font: inherit; /* 2 */ + color: inherit; /* 1 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-box-sizing: content-box; /* 2 */ + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; /* 1 */ +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + padding: 0.35em 0.625em 0.75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + padding: 0; /* 2 */ + border: 0; /* 1 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-spacing: 0; + border-collapse: collapse; +} + +td, +th { + padding: 0; +} + +/* LAYOUT STYLES */ +body { + font-family: 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 15px; + font-weight: 400; + line-height: 1.5; + color: #666; + background: #fafafa url(../../images/body-bg.jpg) 0 0 repeat; + margin-left: 1em; + margin-right: 1em; + margin: 0px; +} + +p { + margin-top: 0; +} + + +a { + color: #2879d0; +} +a:hover { + color: #2268b2; +} + +header { + padding-top: 40px; + padding-bottom: 40px; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x; + border-bottom: solid 1px #275da1; +} + +h1 { + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 32px; + font-weight: normal; + line-height: 1.5; +} + +h2 { + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 26px; + font-weight: normal; + line-height: 1.3; +} + +h3 { + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 22px; + font-weight: normal; + line-height: 1.1; +} + +.inner { + position: relative; + width: 940px; + margin: 0 auto; +} + +#content-wrapper { + padding-top: 30px; + border-top: solid 1px #fff; +} + +#main-content { + float: left; + width: 690px; +} + +#main-content img { + max-width: 100%; + height: auto; +} + +aside#sidebar { + float: right; + width: 200px; + min-height: 504px; + padding-left: 20px; + font-size: 12px; + line-height: 1.3; + background: transparent url(../../images/sidebar-bg.jpg) 0 0 no-repeat; +} + +aside#sidebar p.repo-owner, +aside#sidebar p.repo-owner a { + font-weight: bold; +} + +#downloads { + margin-bottom: 40px; +} + +a.button { + width: 134px; + height: 58px; + padding-top: 22px; + padding-left: 68px; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 23px; + line-height: 1.2; + color: #fff; +} +a.button small { + display: block; + font-size: 11px; +} +header a.button { + position: absolute; + top: 0; + right: 0; + background: transparent url(../images/github-button.png) 0 0 no-repeat; +} +aside a.button { + display: block; + width: 138px; + padding-left: 64px; + margin-bottom: 20px; + font-size: 21px; + background: transparent url(../images/download-button.png) 0 0 no-repeat; +} + +code, pre { + margin-bottom: 30px; + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; + font-size: 13px; + color: #222; +} + +code { + padding: 0 3px; + background-color: #f2f8fc; + border: solid 1px #dbe7f3; } pre { - background-color: rgb(245, 245, 245); - border: 1px solid silver; - padding: 10px; - margin: 10px 0 10px 0; - font-family: "Andale Mono", monospace; + padding: 20px; + overflow: auto; + text-shadow: none; + background: #fff; + border: solid 1px #f2f2f2; +} +pre code { + padding: 0; + color: #2879d0; + background-color: #fff; + border: none; +} + +ul, ol, dl { + margin-bottom: 20px; } -table.index { border: 1px #00007f; } -table.index td { text-align: left; vertical-align: top; } +/* COMMON STYLES */ + +hr { + height: 0; + margin-top: 1em; + margin-bottom: 1em; + border: 0; + border-top: solid 1px #ddd; +} + +table { + width: 100%; + border: 1px solid #ebebeb; +} + +th { + font-weight: 500; +} + +td { + font-weight: 300; + text-align: center; + border: 1px solid #ebebeb; +} + +form { + padding: 20px; + background: #f2f2f2; + +} + + +/* GENERAL ELEMENT TYPE STYLES */ + +#main-content h1 { + margin-top: 0; + margin-bottom: 0; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 2.8em; + font-weight: normal; + color: #474747; + text-indent: 6px; + letter-spacing: -1px; +} + +#main-content h1:before { + padding-right: 0.3em; + margin-left: -0.9em; + color: #9ddcff; + content: "/"; +} + +#main-content h2 { + margin-bottom: 8px; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 22px; + font-weight: bold; + color: #474747; + text-indent: 4px; +} +#main-content h2:before { + padding-right: 0.3em; + margin-left: -1.5em; + content: "//"; + color: #9ddcff; +} + +#main-content h3 { + margin-top: 24px; + margin-bottom: 8px; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 18px; + font-weight: bold; + color: #474747; + text-indent: 3px; +} + +#main-content h3:before { + padding-right: 0.3em; + margin-left: -2em; + content: "///"; + color: #9ddcff; +} + +#main-content h4 { + margin-bottom: 8px; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 15px; + font-weight: bold; + color: #474747; + text-indent: 3px; +} + +h4:before { + padding-right: 0.3em; + margin-left: -2.8em; + content: "////"; + color: #9ddcff; +} + +#main-content h5 { + margin-bottom: 8px; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 14px; + color: #474747; + text-indent: 3px; +} +h5:before { + padding-right: 0.3em; + margin-left: -3.2em; + content: "/////"; + color: #9ddcff; +} + +#main-content h6 { + margin-bottom: 8px; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: .8em; + color: #474747; + text-indent: 3px; +} +h6:before { + padding-right: 0.3em; + margin-left: -3.7em; + content: "//////"; + color: #9ddcff; +} + +p { + margin-bottom: 20px; +} + +a { + text-decoration: none; +} + +p a { + font-weight: 400; +} + +blockquote { + padding: 0 0 0 30px; + margin-bottom: 20px; + font-size: 1.6em; + border-left: 10px solid #e9e9e9; +} + +ul { + list-style-position: inside; + list-style: disc; + padding-left: 20px; +} + +ol { + list-style-position: inside; + list-style: decimal; + padding-left: 3px; +} + +footer { + padding-top: 20px; + padding-bottom: 30px; + margin-top: 40px; + font-size: 13px; + color: #aaa; + background: transparent url('../../images/hr.png') 0 0 no-repeat; +} + +footer a { + color: #666; +} +footer a:hover { + color: #444; +} + +/* MISC */ +.clearfix:after { + display: block; + height: 0; + clear: both; + visibility: hidden; + content: '.'; +} + +.clearfix {display: inline-block;} +* html .clearfix {height: 1%;} +.clearfix {display: block;} + +/* #Media Queries +================================================== */ + +/* Smaller than standard 960 (devices and browsers) */ +@media only screen and (max-width: 959px) { } + +/* Tablet Portrait size to standard 960 (devices and browsers) */ +@media only screen and (min-width: 768px) and (max-width: 959px) { + .inner { + width: 740px; + } + header h1, header h2 { + width: 340px; + } + header h1 { + font-size: 60px; + } + header h2 { + font-size: 30px; + } + #main-content { + width: 490px; + } + #main-content h1:before, + #main-content h2:before, + #main-content h3:before, + #main-content h4:before, + #main-content h5:before, + #main-content h6:before { + padding-right: 0; + margin-left: 0; + content: none; + } +} + +/* All Mobile Sizes (devices and browser) */ +@media only screen and (max-width: 767px) { + .inner { + width: 93%; + } + header { + padding: 20px 0; + } + header .inner { + position: relative; + } + header h1, header h2 { + width: 100%; + } + header h1 { + font-size: 48px; + } + header h2 { + font-size: 24px; + } + header a.button { + position: relative; + display: inline-block; + width: auto; + height: auto; + padding: 5px 10px; + margin-top: 15px; + font-size: 13px; + line-height: 1; + color: #2879d0; + text-align: center; + background-color: #9ddcff; + background-image: none; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + } + header a.button small { + display: inline; + font-size: 13px; + } + #main-content, + aside#sidebar { + float: none; + width: 100% ! important; + } + aside#sidebar { + min-height: 0; + padding: 20px 0; + margin-top: 20px; + background-image: none; + border-top: solid 1px #ddd; + } + aside#sidebar a.button { + display: none; + } + #main-content h1:before, + #main-content h2:before, + #main-content h3:before, + #main-content h4:before, + #main-content h5:before, + #main-content h6:before { + padding-right: 0; + margin-left: 0; + content: none; + } +} + +/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */ +@media only screen and (min-width: 480px) and (max-width: 767px) { } + +/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */ +@media only screen and (max-width: 479px) { } + #container { margin-left: 1em; @@ -144,7 +900,8 @@ table.index td { text-align: left; vertical-align: top; } } #main { - background-color: #f0f0f0; + color: #666; + background: #fafafa url(../../images/body-bg.jpg) 0 0 repeat; border-left: 2px solid #cccccc; } @@ -152,20 +909,28 @@ table.index td { text-align: left; vertical-align: top; } float: left; width: 18em; vertical-align: top; - background-color: #f0f0f0; overflow: scroll; position: fixed; height:100%; + background: #2e7bcf url(../../images/header-bg.jpg) 0 0 repeat-x; + color: #fff; } #navigation h2 { - background-color:#e7e7e7; - font-size:1.1em; - color:#000000; + font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif; + background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x; + border-bottom: solid 1px #275da1; + width: 540px; + margin-top: 0; + margin-bottom: 0.2em; + font-size: 36px; + font-weight: normal; + line-height: 1; + color: #fff; + letter-spacing: -1px; text-align: left; padding:0.2em; border-top:1px solid #dddddd; - border-bottom:1px solid #dddddd; } #navigation ul @@ -173,16 +938,24 @@ table.index td { text-align: left; vertical-align: top; } font-size:1em; list-style-type: none; margin: 1px 1px 10px 1px; + color: #fff; } #navigation li { text-indent: -1em; display: block; margin: 3px 0px 0px 22px; + color: #fff; } +#navigation ul li a { + color: #fff; +} + + #navigation li li a { margin: 0px 3px 0px -1em; + color: #fff; } #content { @@ -193,6 +966,27 @@ table.index td { text-align: left; vertical-align: top; } background-color: #ffffff; } + +#content h2 a { + color: #000; + border-bottom: 1px solid #000; +} + +#content h2 a code { +font-size: 22px; +font-weight: 400; +background-color: transparent; +color: #2879d0; +border: none; +} + +#content h1 code { +font-size: 26px; +font-weight: 400; +background-color: transparent; +border: none; +} + #about { clear: both; padding: 5px; @@ -200,70 +994,45 @@ table.index td { text-align: left; vertical-align: top; } background-color: #ffffff; } -@media print { - body { - font: 12pt "Times New Roman", "TimeNR", Times, serif; - } - a { font-weight: bold; color: #004080; text-decoration: underline; } - - #main { - background-color: #ffffff; - border-left: 0px; - } - - #container { - margin-left: 2%; - margin-right: 2%; - background-color: #ffffff; - } - - #content { - padding: 1em; - background-color: #ffffff; - } - - #navigation { - display: none; - } - pre.example { - font-family: "Andale Mono", monospace; - font-size: 10pt; - page-break-inside: avoid; - } -} - -table.module_list { - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.module_list td { - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.module_list td.name { background-color: #f0f0f0; } -table.module_list td.summary { width: 100%; } - - table.function_list { border-width: 1px; border-style: solid; border-color: #cccccc; border-collapse: collapse; } + table.function_list td { border-width: 1px; padding: 3px; border-style: solid; border-color: #cccccc; + word-wrap:break-word; } -table.function_list td.name { background-color: #f0f0f0; } -table.function_list td.summary { width: 100%; } -dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;} -dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;} -dl.table h3, dl.function h3 {font-size: .95em;} +table.function_list td.name { font-weight: 400; width:50%; white-space: normal; text-align:left;} +table.function_list td.summary { width: 50%; } + +dl.table dt, dl.function { + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; +} + +dl.table dt, dl.function dt { + border-top: 1px solid #000; + padding-top: 0.5em; + padding-bottom: 0.5em; + border-bottom: 1px solid #ccc; +} + +dl.table dd, dl.function dd { + padding-bottom: 0.5em; + margin: 20px 0 0 20px; +} + +dl.table dd, dl.function dd p { + font-weight : normal; +} + +dl.table h3, dl.function h3 {font-size: 1.5em;} diff --git a/docs/Presentations/RADIO/Dia1.JPG b/docs/Presentations/RADIO/Dia1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..d245e97494610940f3649dc84a1e3918dd4f8520 GIT binary patch literal 179061 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

    xKIuP$n0DE`evTJ$+GNowmt!}(nFgqBTS9h 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

    ~_S9bO2StA;5|6tsL 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 pwSw@-jdkW2 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 2>&1 +IF "%ERRORLEVEL%"=="0" GOTO EXITLR + +REM Do we have PowerShell available? +PowerShell /? >NUL 2>&1 +IF NOT "%ERRORLEVEL%"=="0" GOTO EXITLR + +:GETTEMPNAME +SET TMPFILE=%TEMP%\LuaRocks-Elevator-%RANDOM%.bat +IF EXIST "%TMPFILE%" GOTO :GETTEMPNAME + +ECHO @ECHO OFF > "%TMPFILE%" +ECHO CHDIR /D %CD% >> "%TMPFILE%" +ECHO ECHO %0 %* >> "%TMPFILE%" +ECHO ECHO. >> "%TMPFILE%" +ECHO CALL %0 %* >> "%TMPFILE%" +ECHO ECHO. >> "%TMPFILE%" +ECHO ECHO Press any key to close this window... >> "%TMPFILE%" +ECHO PAUSE ^> NUL >> "%TMPFILE%" +ECHO DEL "%TMPFILE%" >> "%TMPFILE%" + +ECHO Now retrying as a privileged user... +PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('%TMPFILE%', '', '', 'runas') + +:EXITLR +exit /b %EXITCODE% diff --git a/Utils/luarocks/luarocks-admin.lua b/Utils/luarocks/luarocks-admin.lua new file mode 100644 index 000000000..2890d1f19 --- /dev/null +++ b/Utils/luarocks/luarocks-admin.lua @@ -0,0 +1,19 @@ +#!/usr/bin/env lua + +-- this should be loaded first. +local cfg = require("luarocks.cfg") + +local loader = require("luarocks.loader") +local command_line = require("luarocks.command_line") + +program_description = "LuaRocks repository administration interface" + +commands = { + help = "luarocks.help", + make_manifest = "luarocks.make_manifest", + add = "luarocks.add", + remove = "luarocks.admin_remove", + refresh_cache = "luarocks.refresh_cache", +} + +command_line.run_command(...) diff --git a/Utils/luarocks/luarocks.bat b/Utils/luarocks/luarocks.bat new file mode 100644 index 000000000..373068966 --- /dev/null +++ b/Utils/luarocks/luarocks.bat @@ -0,0 +1,43 @@ +@ECHO OFF +SETLOCAL ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS + +SET "LUA_PATH=C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\lua\?.lua;C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\lua\?\init.lua;%LUA_PATH%" +IF NOT "%LUA_PATH_5_2%"=="" ( + SET "LUA_PATH_5_2=C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\lua\?.lua;C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\lua\?\init.lua;%LUA_PATH_5_2%" +) +IF NOT "%LUA_PATH_5_3%"=="" ( + SET "LUA_PATH_5_3=C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\lua\?.lua;C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\lua\?\init.lua;%LUA_PATH_5_3%" +) +SET "PATH=C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks;%PATH%" +"C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\lua5.1" "C:/Users/Hugues/Documents/GitHub/MOOSE/Utils/luarocks\luarocks.lua" %* +SET EXITCODE=%ERRORLEVEL% +IF NOT "%EXITCODE%"=="2" GOTO EXITLR + +REM Permission denied error, try and auto elevate... +REM already an admin? (checking to prevent loops) +NET SESSION >NUL 2>&1 +IF "%ERRORLEVEL%"=="0" GOTO EXITLR + +REM Do we have PowerShell available? +PowerShell /? >NUL 2>&1 +IF NOT "%ERRORLEVEL%"=="0" GOTO EXITLR + +:GETTEMPNAME +SET TMPFILE=%TEMP%\LuaRocks-Elevator-%RANDOM%.bat +IF EXIST "%TMPFILE%" GOTO :GETTEMPNAME + +ECHO @ECHO OFF > "%TMPFILE%" +ECHO CHDIR /D %CD% >> "%TMPFILE%" +ECHO ECHO %0 %* >> "%TMPFILE%" +ECHO ECHO. >> "%TMPFILE%" +ECHO CALL %0 %* >> "%TMPFILE%" +ECHO ECHO. >> "%TMPFILE%" +ECHO ECHO Press any key to close this window... >> "%TMPFILE%" +ECHO PAUSE ^> NUL >> "%TMPFILE%" +ECHO DEL "%TMPFILE%" >> "%TMPFILE%" + +ECHO Now retrying as a privileged user... +PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('%TMPFILE%', '', '', 'runas') + +:EXITLR +exit /b %EXITCODE% diff --git a/Utils/luarocks/luarocks.lua b/Utils/luarocks/luarocks.lua new file mode 100644 index 000000000..be6c2b811 --- /dev/null +++ b/Utils/luarocks/luarocks.lua @@ -0,0 +1,33 @@ +#!/usr/bin/env lua + +-- this should be loaded first. +local cfg = require("luarocks.cfg") + +local loader = require("luarocks.loader") +local command_line = require("luarocks.command_line") + +program_description = "LuaRocks main command-line interface" + +commands = { + help = "luarocks.help", + pack = "luarocks.pack", + unpack = "luarocks.unpack", + build = "luarocks.build", + install = "luarocks.install", + search = "luarocks.search", + list = "luarocks.list", + remove = "luarocks.remove", + make = "luarocks.make", + download = "luarocks.download", + path = "luarocks.path_cmd", + show = "luarocks.show", + new_version = "luarocks.new_version", + lint = "luarocks.lint", + write_rockspec = "luarocks.write_rockspec", + purge = "luarocks.purge", + doc = "luarocks.doc", + upload = "luarocks.upload", + config = "luarocks.config_cmd", +} + +command_line.run_command(...) diff --git a/Utils/luarocks/luarocksw.bat b/Utils/luarocks/luarocksw.bat new file mode 100644 index 000000000..8ac029209 --- /dev/null +++ b/Utils/luarocks/luarocksw.bat @@ -0,0 +1,49 @@ +@echo off +setlocal +SET MYPATH=%~dp0 + +IF NOT [%1]==[] GOTO LETSGO +ECHO Same as 'luarocks' command, except this +ECHO command will pause after completion, allowing for +ECHO examination of output. +ECHO. +ECHO For LuaRocks help use: +ECHO LUAROCKS HELP +ECHO. +ECHO OPTIONS specific for LUAROCKSW: +ECHO REMOVEALL is a command specific to this batch file +ECHO the option takes a FULL ROCKSPEC filename and then +ECHO it will strip path, version and extension info from +ECHO it before executing the LUAROCKS REMOVE command +ECHO Example: +ECHO luarocksw remove "c:\somedir\modulename-1.0-1.rockspec" +ECHO will execute: +ECHO luarocks remove "c:\somedir\modulename-1.0-1.rockspec" +ECHO and will only remove the specific version 1.0 from the +ECHO system. +ECHO luarocksw removeall "c:\somedir\modulename-1.0-1.rockspec" +ECHO will execute: +ECHO luarocks remove modulename +ECHO and will remove all versions of this package +ECHO. +GOTO END + +:LETSGO +REM if REMOVEALL command then info must be stripped from the parameter +if [%1]==[removeall] goto REMOVEALL + +REM execute LuaRocks and wait for results +echo executing: luarocks %* +call "%MYPATH%luarocks" %* +pause +goto END + +:REMOVEALL +for /f "delims=-" %%a in ("%~n2") do ( + echo executing: luarocks remove %%a + "%MYPATH%luarocks" remove "%%a" + pause + goto END +) + +:END \ No newline at end of file diff --git a/Utils/luarocks/msvcm80.dll b/Utils/luarocks/msvcm80.dll new file mode 100644 index 0000000000000000000000000000000000000000..c751385bde3d0d6d43b546e7b25c153cfa52ae7a GIT binary patch literal 479232 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 wRj>zQT&+Jb6+mr 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 literal 0 HcmV?d00001 diff --git a/Utils/luarocks/msvcp80.dll b/Utils/luarocks/msvcp80.dll new file mode 100644 index 0000000000000000000000000000000000000000..f0b52ebf127ea7dd6a75e4bfc4ca8358336587bd GIT binary patch literal 548864 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